From 9138b8de2ca95d5bd1bcfae5e5840bb672f4a276 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Tue, 16 May 2023 16:14:46 +0800 Subject: [PATCH 001/433] feat: Update Types --- .changeset/dull-dodos-prove.md | 5 + package.json | 6 +- packages/chain-sdk/package.json | 2 +- pnpm-lock.yaml | 361 +++++++++++++++++++++++--------- 4 files changed, 276 insertions(+), 98 deletions(-) create mode 100644 .changeset/dull-dodos-prove.md diff --git a/.changeset/dull-dodos-prove.md b/.changeset/dull-dodos-prove.md new file mode 100644 index 00000000..b9222460 --- /dev/null +++ b/.changeset/dull-dodos-prove.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +Update Types diff --git a/package.json b/package.json index 2160bafc..bcce8a8d 100644 --- a/package.json +++ b/package.json @@ -28,11 +28,11 @@ "@rollup/plugin-typescript": "^8.5.0", "@types/chai": "^4.3.5", "@types/mocha": "^9.1.1", - "@types/node": "^18.16.7", + "@types/node": "^18.16.10", "@types/react": "^18.2.6", "@types/react-dom": "^18.2.4", - "@typescript-eslint/eslint-plugin": "^5.59.5", - "@typescript-eslint/parser": "^5.59.5", + "@typescript-eslint/eslint-plugin": "^5.59.6", + "@typescript-eslint/parser": "^5.59.6", "chai": "^4.3.7", "conventional-changelog-cmyr-config": "^2.1.0", "eslint": "^8.40.0", diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 428d1a79..dc71ab2b 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -53,7 +53,7 @@ ] }, "dependencies": { - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.7", + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.8", "@bnb-chain/greenfiled-file-handle": "workspace:*", "@cosmjs/proto-signing": "^0.29.5", "@cosmjs/stargate": "^0.29.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dc1b4675..daf58ed7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,11 +18,11 @@ importers: '@rollup/plugin-typescript': ^8.5.0 '@types/chai': ^4.3.5 '@types/mocha': ^9.1.1 - '@types/node': ^18.16.7 + '@types/node': ^18.16.10 '@types/react': ^18.2.6 '@types/react-dom': ^18.2.4 - '@typescript-eslint/eslint-plugin': ^5.59.5 - '@typescript-eslint/parser': ^5.59.5 + '@typescript-eslint/eslint-plugin': ^5.59.6 + '@typescript-eslint/parser': ^5.59.6 chai: ^4.3.7 conventional-changelog-cmyr-config: ^2.1.0 eslint: ^8.40.0 @@ -45,18 +45,18 @@ importers: '@rollup/plugin-json': 4.1.0_rollup@2.79.1 '@rollup/plugin-node-resolve': 13.3.0_rollup@2.79.1 '@rollup/plugin-strip': 3.0.2_rollup@2.79.1 - '@rollup/plugin-typescript': 8.5.0_zptcx3kz3uwp66hzhyyt545weq + '@rollup/plugin-typescript': 8.5.0_vxwo7vqlqcs7hwrek7gmfkalae '@types/chai': 4.3.5 '@types/mocha': 9.1.1 - '@types/node': 18.16.7 + '@types/node': 18.16.10 '@types/react': 18.2.6 '@types/react-dom': 18.2.4 - '@typescript-eslint/eslint-plugin': 5.59.5_jdo46vuzdvtqioigt7za7mzwma - '@typescript-eslint/parser': 5.59.5_jgkqkwom7vrxl4kyi454n2sy2i + '@typescript-eslint/eslint-plugin': 5.59.6_hrzo544y7ygaq2nap7kmpxcgnm + '@typescript-eslint/parser': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq chai: 4.3.7 conventional-changelog-cmyr-config: 2.1.0 eslint: 8.40.0 - eslint-config-react-app: 7.0.1_gyzglfzpridjovtqq5usnm7b5q + eslint-config-react-app: 7.0.1_thperb4fnr5oocbjjbdebseave eslint-plugin-prettier: 4.2.1_aq37wtubambsjkbuajxtwljxa4 husky: 8.0.3 lint-staged: 13.2.2 @@ -127,7 +127,7 @@ importers: packages/chain-sdk: specifiers: - '@bnb-chain/greenfield-cosmos-types': 0.4.0-alpha.7 + '@bnb-chain/greenfield-cosmos-types': 0.4.0-alpha.8 '@bnb-chain/greenfiled-file-handle': workspace:* '@cosmjs/proto-signing': ^0.29.5 '@cosmjs/stargate': ^0.29.5 @@ -146,7 +146,7 @@ importers: tslib: ^2.5.0 typescript: ^4.9.5 dependencies: - '@bnb-chain/greenfield-cosmos-types': 0.4.0-alpha.7 + '@bnb-chain/greenfield-cosmos-types': 0.4.0-alpha.8 '@bnb-chain/greenfiled-file-handle': link:../file-handle '@cosmjs/proto-signing': 0.29.5 '@cosmjs/stargate': 0.29.5 @@ -162,7 +162,7 @@ importers: rollup-plugin-node-builtins: 2.1.2 rollup-plugin-polyfill-node: 0.10.2_rollup@2.79.1 rollup-plugin-terser: 7.0.2_rollup@2.79.1 - ts-node: 10.9.1_dfji5vargqbhwd5qh6ylai2p3e + ts-node: 10.9.1_wh5cciuul2ivno4sebepep4pie tslib: 2.5.0 typescript: 4.9.5 @@ -1525,8 +1525,8 @@ packages: protobufjs: 6.11.3 dev: false - /@bnb-chain/greenfield-cosmos-types/0.4.0-alpha.7: - resolution: {integrity: sha512-Ms6ujNb3l+b7Y/yazFoKfs+9SfEh+rBkp5aPd1fNzWeB3bORGKvL30+J0m7CihQfBXEtAqgtdEI7dWDIosZPLA==} + /@bnb-chain/greenfield-cosmos-types/0.4.0-alpha.8: + resolution: {integrity: sha512-baOO2qSKMuzIn6Wj/D3lb9GIHCdVpebczjzgJx5QDuCJuhOTEyNRFeZ4afTn+nnJpb42BIS2jsjBr9XnJ7sc1Q==} dependencies: long: 4.0.0 protobufjs: 6.11.3 @@ -1868,16 +1868,16 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.16.7 + '@types/node': 18.16.10 chalk: 4.1.2 cosmiconfig: 8.1.3 - cosmiconfig-typescript-loader: 4.3.0_v6g6rr3k774hgpjz5c5oulgx5q + cosmiconfig-typescript-loader: 4.3.0_ibxj7nciepaflowmfgd2falzpm lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1_dfji5vargqbhwd5qh6ylai2p3e - typescript: 4.9.5 + ts-node: 10.9.1_u5ax4hcaao6h6ctrp2v254guiq + typescript: 5.0.4 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -3095,7 +3095,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-typescript/8.5.0_zptcx3kz3uwp66hzhyyt545weq: + /@rollup/plugin-typescript/8.5.0_vxwo7vqlqcs7hwrek7gmfkalae: resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} engines: {node: '>=8.0.0'} peerDependencies: @@ -3109,7 +3109,7 @@ packages: '@rollup/pluginutils': 3.1.0_rollup@2.79.1 resolve: 1.22.2 rollup: 2.79.1 - typescript: 4.9.5 + typescript: 5.0.4 dev: true /@rollup/plugin-wasm/6.1.2_rollup@2.79.1: @@ -3476,9 +3476,16 @@ packages: /@types/node/12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + /@types/node/18.16.10: + resolution: {integrity: sha512-sMo3EngB6QkMBlB9rBe1lFdKSLqljyWPPWv6/FzSxh/IDlyVWSzE9RiF4eAuerQHybrWdqBgAGb03PM89qOasA==} + dev: true + /@types/node/18.16.7: resolution: {integrity: sha512-MFg7ua/bRtnA1hYE3pVyWxGd/r7aMqjNOdHvlSsXV3n8iaeGKkOaPzpJh6/ovf4bEXWcojkeMJpTsq3mzXW4IQ==} + /@types/node/20.1.5: + resolution: {integrity: sha512-IvGD1CD/nego63ySR7vrAKEX3AJTcmrAN2kn+/sDNLi1Ff5kBzDeEdqWDplK+0HAEoLYej137Sk0cUU8OLOlMg==} + /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -3511,7 +3518,7 @@ packages: /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.16.7 + '@types/node': 18.16.10 dev: true /@types/scheduler/0.16.3: @@ -3541,8 +3548,8 @@ packages: '@types/node': 18.16.7 dev: false - /@typescript-eslint/eslint-plugin/5.59.5_jdo46vuzdvtqioigt7za7mzwma: - resolution: {integrity: sha512-feA9xbVRWJZor+AnLNAr7A8JRWeZqHUf4T9tlP+TN04b05pFVhO5eN7/O93Y/1OUlLMHKbnJisgDURs/qvtqdg==} + /@typescript-eslint/eslint-plugin/5.59.6_hrzo544y7ygaq2nap7kmpxcgnm: + resolution: {integrity: sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -3553,29 +3560,29 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.59.5_jgkqkwom7vrxl4kyi454n2sy2i - '@typescript-eslint/scope-manager': 5.59.5 - '@typescript-eslint/type-utils': 5.59.5_jgkqkwom7vrxl4kyi454n2sy2i - '@typescript-eslint/utils': 5.59.5_jgkqkwom7vrxl4kyi454n2sy2i + '@typescript-eslint/parser': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq + '@typescript-eslint/scope-manager': 5.59.6 + '@typescript-eslint/type-utils': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq + '@typescript-eslint/utils': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq debug: 4.3.4 eslint: 8.40.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 - semver: 7.5.0 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 + semver: 7.5.1 + tsutils: 3.21.0_typescript@5.0.4 + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.59.5_jgkqkwom7vrxl4kyi454n2sy2i: - resolution: {integrity: sha512-ArcSSBifznsKNA/p4h2w3Olt/T8AZf3bNglxD8OnuTsSDJbRpjPPmI8qpr6ijyvk1J/T3GMJHwRIluS/Kuz9kA==} + /@typescript-eslint/experimental-utils/5.59.6_3qfatcekpgbllh6uk5ivyhkbxq: + resolution: {integrity: sha512-UIVfEaaHggOuhgqdpFlFQ7IN9UFMCiBR/N7uPBUyUlwNdJzYfAu9m4wbOj0b59oI/HSPW1N63Q7lsvfwTQY13w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.5_jgkqkwom7vrxl4kyi454n2sy2i + '@typescript-eslint/utils': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq eslint: 8.40.0 transitivePeerDependencies: - supports-color @@ -3600,6 +3607,27 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: false + + /@typescript-eslint/parser/5.59.6_3qfatcekpgbllh6uk5ivyhkbxq: + resolution: {integrity: sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.59.6 + '@typescript-eslint/types': 5.59.6 + '@typescript-eslint/typescript-estree': 5.59.6_typescript@5.0.4 + debug: 4.3.4 + eslint: 8.40.0 + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true /@typescript-eslint/scope-manager/5.59.5: resolution: {integrity: sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==} @@ -3607,9 +3635,18 @@ packages: dependencies: '@typescript-eslint/types': 5.59.5 '@typescript-eslint/visitor-keys': 5.59.5 + dev: false + + /@typescript-eslint/scope-manager/5.59.6: + resolution: {integrity: sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.6 + '@typescript-eslint/visitor-keys': 5.59.6 + dev: true - /@typescript-eslint/type-utils/5.59.5_jgkqkwom7vrxl4kyi454n2sy2i: - resolution: {integrity: sha512-4eyhS7oGym67/pSxA2mmNq7X164oqDYNnZCUayBwJZIRVvKpBCMBzFnFxjeoDeShjtO6RQBHBuwybuX3POnDqg==} + /@typescript-eslint/type-utils/5.59.6_3qfatcekpgbllh6uk5ivyhkbxq: + resolution: {integrity: sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -3618,12 +3655,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.5_typescript@4.9.5 - '@typescript-eslint/utils': 5.59.5_jgkqkwom7vrxl4kyi454n2sy2i + '@typescript-eslint/typescript-estree': 5.59.6_typescript@5.0.4 + '@typescript-eslint/utils': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq debug: 4.3.4 eslint: 8.40.0 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 + tsutils: 3.21.0_typescript@5.0.4 + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true @@ -3631,6 +3668,12 @@ packages: /@typescript-eslint/types/5.59.5: resolution: {integrity: sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /@typescript-eslint/types/5.59.6: + resolution: {integrity: sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true /@typescript-eslint/typescript-estree/5.59.5_typescript@4.9.5: resolution: {integrity: sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==} @@ -3651,9 +3694,31 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: false - /@typescript-eslint/utils/5.59.5_jgkqkwom7vrxl4kyi454n2sy2i: - resolution: {integrity: sha512-sCEHOiw+RbyTii9c3/qN74hYDPNORb8yWCoPLmB7BIflhplJ65u2PBpdRla12e3SSTJ2erRkPjz7ngLHhUegxA==} + /@typescript-eslint/typescript-estree/5.59.6_typescript@5.0.4: + resolution: {integrity: sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.6 + '@typescript-eslint/visitor-keys': 5.59.6 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.1 + tsutils: 3.21.0_typescript@5.0.4 + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils/5.59.6_3qfatcekpgbllh6uk5ivyhkbxq: + resolution: {integrity: sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3661,12 +3726,12 @@ packages: '@eslint-community/eslint-utils': 4.4.0_eslint@8.40.0 '@types/json-schema': 7.0.11 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.59.5 - '@typescript-eslint/types': 5.59.5 - '@typescript-eslint/typescript-estree': 5.59.5_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.59.6 + '@typescript-eslint/types': 5.59.6 + '@typescript-eslint/typescript-estree': 5.59.6_typescript@5.0.4 eslint: 8.40.0 eslint-scope: 5.1.1 - semver: 7.5.0 + semver: 7.5.1 transitivePeerDependencies: - supports-color - typescript @@ -3678,6 +3743,15 @@ packages: dependencies: '@typescript-eslint/types': 5.59.5 eslint-visitor-keys: 3.4.1 + dev: false + + /@typescript-eslint/visitor-keys/5.59.6: + resolution: {integrity: sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.6 + eslint-visitor-keys: 3.4.1 + dev: true /@wagmi/chains/0.2.9_typescript@4.9.5: resolution: {integrity: sha512-z0Nv7Cto+t/47NtC8td7khMSWX0zKVCnm8gkgrRs9PHvN+4W7XZfUVQYfhIfkbelT/ONN9V1OA+ho122gmRr3Q==} @@ -4396,7 +4470,7 @@ packages: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 is-string: 1.0.7 /array-union/2.1.0: @@ -4428,7 +4502,7 @@ packages: define-properties: 1.2.0 es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 /arrify/1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} @@ -4474,8 +4548,8 @@ packages: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} - /axe-core/4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + /axe-core/4.7.1: + resolution: {integrity: sha512-sCXXUhA+cljomZ3ZAwb8i1p3oOlkABzPy08ZDAoGcYuvtBPlQ1Ytde129ArXyHWDhfeewq7rlx9F+cUx2SSlkg==} engines: {node: '>=4'} /axios/0.21.4: @@ -4744,8 +4818,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001486 - electron-to-chromium: 1.4.389 + caniuse-lite: 1.0.30001487 + electron-to-chromium: 1.4.396 node-releases: 2.0.10 update-browserslist-db: 1.0.11_browserslist@4.21.5 @@ -4832,7 +4906,7 @@ packages: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 /callsites/3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -4857,6 +4931,10 @@ packages: /caniuse-lite/1.0.30001486: resolution: {integrity: sha512-uv7/gXuHi10Whlj0pp5q/tsK/32J2QSqVRKQhs2j8VsDCjgyruAh/eEXHF822VqO9yT6iZKw3nRwZRSPBE9OQg==} + dev: false + + /caniuse-lite/1.0.30001487: + resolution: {integrity: sha512-83564Z3yWGqXsh2vaH/mhXfEM0wX+NlBCm1jYHOb97TrTWJEmPTccZgeLTPBUUb0PNVo+oomb7wkimZBIERClA==} /case/1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} @@ -5129,7 +5207,7 @@ packages: vary: 1.1.2 dev: false - /cosmiconfig-typescript-loader/4.3.0_v6g6rr3k774hgpjz5c5oulgx5q: + /cosmiconfig-typescript-loader/4.3.0_ibxj7nciepaflowmfgd2falzpm: resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -5138,10 +5216,10 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.16.7 + '@types/node': 18.16.10 cosmiconfig: 8.1.3 - ts-node: 10.9.1_dfji5vargqbhwd5qh6ylai2p3e - typescript: 4.9.5 + ts-node: 10.9.1_u5ax4hcaao6h6ctrp2v254guiq + typescript: 5.0.4 dev: true /cosmiconfig/7.1.0: @@ -5371,7 +5449,7 @@ packages: array-buffer-byte-length: 1.0.0 call-bind: 1.0.2 es-get-iterator: 1.1.3 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 is-arguments: 1.1.1 is-array-buffer: 3.0.2 is-date-object: 1.0.5 @@ -5532,8 +5610,8 @@ packages: - utf-8-validate dev: false - /electron-to-chromium/1.4.389: - resolution: {integrity: sha512-WDgWUOK8ROR7sDFyYmxCUOoDc50lPgYAHAHwnnD1iN3SKO/mpqftb9iIPiEkMKmqYdkrR0j3N/O+YB/U7lSxwg==} + /electron-to-chromium/1.4.396: + resolution: {integrity: sha512-pqKTdqp/c5vsrc0xUPYXTDBo9ixZuGY8es4ZOjjd6HD6bFYbu5QA09VoW3fkY4LF1T0zYk86lN6bZnNlBuOpdQ==} /elliptic/6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -5604,7 +5682,7 @@ packages: es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 function.prototype.name: 1.1.5 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 @@ -5637,7 +5715,7 @@ packages: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 has-symbols: 1.0.3 is-arguments: 1.1.1 is-map: 2.0.2 @@ -5650,7 +5728,7 @@ packages: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 has: 1.0.3 has-tostringtag: 1.0.0 @@ -5714,7 +5792,7 @@ packages: - supports-color dev: false - /eslint-config-react-app/7.0.1_gyzglfzpridjovtqq5usnm7b5q: + /eslint-config-react-app/7.0.1_thperb4fnr5oocbjjbdebseave: resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5727,19 +5805,19 @@ packages: '@babel/core': 7.21.8 '@babel/eslint-parser': 7.21.8_r3wtitw7f7lufgjigaj6hnnlnu '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/eslint-plugin': 5.59.5_jdo46vuzdvtqioigt7za7mzwma - '@typescript-eslint/parser': 5.59.5_jgkqkwom7vrxl4kyi454n2sy2i + '@typescript-eslint/eslint-plugin': 5.59.6_hrzo544y7ygaq2nap7kmpxcgnm + '@typescript-eslint/parser': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.40.0 eslint-plugin-flowtype: 8.0.3_voctbk3tr2epnkfodigb2qrmya - eslint-plugin-import: 2.27.5_6idlwav6izv3puhthw25gigili - eslint-plugin-jest: 25.7.0_zquo2a6tpnxfq3otz2w6wid2lm + eslint-plugin-import: 2.27.5_y6na5yzocvsvyzyspqtlmdb3ey + eslint-plugin-jest: 25.7.0_t4ps2ot6t7yo55wf2oi7vxmjni eslint-plugin-jsx-a11y: 6.7.1_eslint@8.40.0 eslint-plugin-react: 7.32.2_eslint@8.40.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.40.0 - eslint-plugin-testing-library: 5.11.0_jgkqkwom7vrxl4kyi454n2sy2i - typescript: 4.9.5 + eslint-plugin-testing-library: 5.11.0_3qfatcekpgbllh6uk5ivyhkbxq + typescript: 5.0.4 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -5778,7 +5856,7 @@ packages: - supports-color dev: false - /eslint-module-utils/2.8.0_kfpfpgtw4jkzwgh7btxglzw7sm: + /eslint-module-utils/2.8.0_ibsop4hig3z5mprxrgh42lm5je: resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -5799,7 +5877,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.5_jgkqkwom7vrxl4kyi454n2sy2i + '@typescript-eslint/parser': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq debug: 3.2.7 eslint: 8.40.0 eslint-import-resolver-node: 0.3.7 @@ -5850,7 +5928,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.27.5_6idlwav6izv3puhthw25gigili: + /eslint-plugin-import/2.27.5_eslint@8.40.0: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5860,7 +5938,6 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.5_jgkqkwom7vrxl4kyi454n2sy2i array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -5868,7 +5945,7 @@ packages: doctrine: 2.1.0 eslint: 8.40.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0_kfpfpgtw4jkzwgh7btxglzw7sm + eslint-module-utils: 2.8.0_psn6fw4moe3x2es443hwiatkh4 has: 1.0.3 is-core-module: 2.12.0 is-glob: 4.0.3 @@ -5881,9 +5958,9 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true + dev: false - /eslint-plugin-import/2.27.5_eslint@8.40.0: + /eslint-plugin-import/2.27.5_y6na5yzocvsvyzyspqtlmdb3ey: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -5893,6 +5970,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: + '@typescript-eslint/parser': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -5900,7 +5978,7 @@ packages: doctrine: 2.1.0 eslint: 8.40.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0_psn6fw4moe3x2es443hwiatkh4 + eslint-module-utils: 2.8.0_ibsop4hig3z5mprxrgh42lm5je has: 1.0.3 is-core-module: 2.12.0 is-glob: 4.0.3 @@ -5913,9 +5991,9 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: false + dev: true - /eslint-plugin-jest/25.7.0_zquo2a6tpnxfq3otz2w6wid2lm: + /eslint-plugin-jest/25.7.0_t4ps2ot6t7yo55wf2oi7vxmjni: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -5928,8 +6006,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.5_jdo46vuzdvtqioigt7za7mzwma - '@typescript-eslint/experimental-utils': 5.59.5_jgkqkwom7vrxl4kyi454n2sy2i + '@typescript-eslint/eslint-plugin': 5.59.6_hrzo544y7ygaq2nap7kmpxcgnm + '@typescript-eslint/experimental-utils': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq eslint: 8.40.0 transitivePeerDependencies: - supports-color @@ -5947,7 +6025,7 @@ packages: array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 ast-types-flow: 0.0.7 - axe-core: 4.7.0 + axe-core: 4.7.1 axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 @@ -6007,13 +6085,13 @@ packages: semver: 6.3.0 string.prototype.matchall: 4.0.8 - /eslint-plugin-testing-library/5.11.0_jgkqkwom7vrxl4kyi454n2sy2i: + /eslint-plugin-testing-library/5.11.0_3qfatcekpgbllh6uk5ivyhkbxq: resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.5_jgkqkwom7vrxl4kyi454n2sy2i + '@typescript-eslint/utils': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq eslint: 8.40.0 transitivePeerDependencies: - supports-color @@ -6555,6 +6633,14 @@ packages: has: 1.0.3 has-symbols: 1.0.3 + /get-intrinsic/1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-proto: 1.0.1 + has-symbols: 1.0.3 + /get-stream/6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -6565,7 +6651,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 /get-tsconfig/4.5.0: resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} @@ -6686,7 +6772,7 @@ packages: /gopd/1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 /graceful-fs/4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -6857,7 +6943,7 @@ packages: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 has: 1.0.3 side-channel: 1.0.4 @@ -6877,7 +6963,7 @@ packages: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 is-typed-array: 1.1.10 /is-arrayish/0.2.1: @@ -7109,7 +7195,7 @@ packages: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 /is-windows/1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} @@ -7180,7 +7266,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.16.7 + '@types/node': 20.1.5 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -7953,7 +8039,7 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.12.0 - semver: 7.5.0 + semver: 7.5.1 validate-npm-package-license: 3.0.4 dev: true @@ -8389,7 +8475,7 @@ packages: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 18.16.7 + '@types/node': 20.1.5 long: 4.0.0 dev: false @@ -8878,7 +8964,7 @@ packages: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 is-regex: 1.1.4 /safe-resolve/1.0.0: @@ -8935,6 +9021,14 @@ packages: dependencies: lru-cache: 6.0.0 + /semver/7.5.1: + resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + /serialize-javascript/4.0.0: resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} dependencies: @@ -9011,7 +9105,7 @@ packages: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 object-inspect: 1.12.3 /signal-exit/3.0.7: @@ -9215,7 +9309,7 @@ packages: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 has-symbols: 1.0.3 internal-slot: 1.0.5 regexp.prototype.flags: 1.5.0 @@ -9481,6 +9575,68 @@ packages: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + /ts-node/10.9.1_u5ax4hcaao6h6ctrp2v254guiq: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 18.16.10 + acorn: 8.8.2 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.0.4 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /ts-node/10.9.1_wh5cciuul2ivno4sebepep4pie: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 20.1.5 + acorn: 8.8.2 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + /tsconfig-paths/3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: @@ -9503,6 +9659,17 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 + dev: false + + /tsutils/3.21.0_typescript@5.0.4: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.0.4 + dev: true /tty-table/4.2.1: resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} @@ -9591,6 +9758,12 @@ packages: engines: {node: '>=4.2.0'} hasBin: true + /typescript/5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} + engines: {node: '>=12.20'} + hasBin: true + dev: true + /uint8arrays/3.1.0: resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} dependencies: From fd29182207120e76d6cfbe1a44735e0212d46407 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 16 May 2023 08:16:59 +0000 Subject: [PATCH 002/433] chore: [ci] release (alpha) --- .changeset/pre.json | 2 +- examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 4 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 8fff2d4e..c1aaa08c 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -8,11 +8,11 @@ "@demo/nodejs": "0.0.1" }, "changesets": [ + "dull-dodos-prove", "eleven-mayflies-fry", "great-walls-hide", "large-crabs-cheat", "light-islands-smile", - "thirty-islands-jam", "thirty-yaks-appear", "yellow-lobsters-divide" ] diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index d80a760f..daf79122 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.2-alpha.5 + +### Patch Changes + +- Updated dependencies + [[`9138b8d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/9138b8de2ca95d5bd1bcfae5e5840bb672f4a276)]: + - @bnb-chain/greenfield-chain-sdk@0.1.0-alpha.5 + ## 0.0.2 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index c6406c15..de42ef68 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.2-alpha.4", + "version": "0.0.2-alpha.5", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 8b2ff01f..5d7c7e53 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.3-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`9138b8d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/9138b8de2ca95d5bd1bcfae5e5840bb672f4a276)]: + - @bnb-chain/greenfield-chain-sdk@0.1.0-alpha.5 + ## 0.0.2 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 30cb1fe7..42f20d06 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.2", + "version": "0.0.3-alpha.0", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 601dd205..66b55136 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-chain-sdk +## 0.1.0-alpha.5 + +### Patch Changes + +- [#40](https://github.com/bnb-chain/greenfield-js-sdk/pull/40) + [`9138b8d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/9138b8de2ca95d5bd1bcfae5e5840bb672f4a276) + Thanks [@rrr523](https://github.com/rrr523)! - Update Types + ## 0.1.0-alpha.4 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index dc71ab2b..5f05efac 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.1.0-alpha.4", + "version": "0.1.0-alpha.5", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 2b1aed294ae1bdc10eb7ac7cfc3de7effc73a3eb Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Mon, 22 May 2023 20:45:01 +0800 Subject: [PATCH 003/433] Feat/query status (#42) * fix: Return types * feat: Feegrant * fix: Pubkey typeUrl * feat: Upgrade Cosmos SDK * refactor: Simply broadcast and simulate tx * feat: Support Tx by PrivateKey * feat: Replace local message with types npm * test: Test Framework * chore: Upgrade Example wagmi version, Replace ethersjs with viem * feat: Support EIP712 callback use external provider * feat: Support dynamic provider * test: Support jest test * test: Account Query * feat: Change Tx API * feat: Type Complete * chore: Complate Example in New API * fix: Rollup bundle Support Nodejs * feat: Resolute Module (IoC) * docs: Update README --- .changeset/beige-tables-carry.md | 5 + .changeset/early-parents-divide.md | 5 + .changeset/ninety-meals-impress.md | 5 + .changeset/rude-tips-rush.md | 5 + README.md | 4 + examples/nextjs/package.json | 3 +- .../components/bucket/create/index.arv.tsx | 231 -- .../src/components/bucket/create/index.tsx | 75 +- .../src/components/bucket/delete/index.tsx | 63 +- .../nextjs/src/components/deposit/index.tsx | 79 +- .../components/object/cancel-create/index.tsx | 143 - .../components/object/create/index.arv.tsx | 303 -- .../src/components/object/create/index.tsx | 34 +- .../src/components/object/del/index.tsx | 64 +- .../nextjs/src/components/object/index.tsx | 1 - .../src/components/transfer/index.arv.tsx | 167 -- .../nextjs/src/components/transfer/index.tsx | 96 +- .../src/components/walletInfo/index.tsx | 6 +- .../src/components/withdraw/index.arv.tsx | 183 -- .../nextjs/src/components/withdraw/index.tsx | 81 +- examples/nextjs/src/config/index.ts | 19 +- examples/nextjs/src/constants/abi.ts | 2 +- examples/nextjs/src/pages/_app.tsx | 21 +- examples/nextjs/tsconfig.json | 24 +- examples/nodejs/index.js | 2 +- examples/nodejs/package.json | 2 +- package.json | 2 +- packages/chain-sdk/README.md | 103 +- packages/chain-sdk/config/tsconfig.json | 3 + packages/chain-sdk/jest.config.mjs | 23 + packages/chain-sdk/package.json | 21 +- packages/chain-sdk/rollup.config.js | 9 +- packages/chain-sdk/src/api/account.spec.ts | 59 + packages/chain-sdk/src/api/account.ts | 154 +- packages/chain-sdk/src/api/basic.ts | 212 +- packages/chain-sdk/src/api/bucket.ts | 271 +- packages/chain-sdk/src/api/challenge.ts | 103 +- packages/chain-sdk/src/api/crosschain.ts | 213 +- packages/chain-sdk/src/api/distribution.ts | 22 +- packages/chain-sdk/src/api/feegrant.ts | 68 + packages/chain-sdk/src/api/group.ts | 174 +- .../src/api/{object.ts => objectt.ts} | 193 +- packages/chain-sdk/src/api/payment.ts | 127 +- packages/chain-sdk/src/api/queryclient.ts | 153 + packages/chain-sdk/src/api/sp.ts | 61 +- packages/chain-sdk/src/client.ts | 36 +- packages/chain-sdk/src/config.spec.ts | 9 + packages/chain-sdk/src/constants/index.ts | 1 + packages/chain-sdk/src/keymanage/index.ts | 72 + .../src/messages/bank/MsgMultiSend.ts | 9 + .../src/messages/bank/{send.ts => MsgSend.ts} | 0 .../src/messages/cosmos/oracle/MsgClaim.ts | 40 + .../messages/feegrant/MsgGrantAllowance.ts | 31 + .../messages/feegrant/MsgRevokeAllowance.ts | 39 + .../greenfield/bridge/MsgTransferOut.ts | 22 + .../messages/greenfield/bridge/transferOut.ts | 39 - .../messages/greenfield/chanenge/MsgAttest.ts | 64 + .../messages/greenfield/chanenge/MsgSubmit.ts | 32 + .../payment/MsgCreatePaymentAccount.ts | 14 + .../messages/greenfield/payment/MsgDeposit.ts | 58 + .../greenfield/payment/MsgDisableRefund.ts | 78 + .../greenfield/payment/MsgWithdraw.ts | 70 + .../greenfield/sp/MsgUpdateSpStoragePrice.ts | 130 + ...eateObject.ts => MsgCancelCreateObject.ts} | 4 +- .../{createBucket.ts => MsgCreateBucket.ts} | 4 +- .../greenfield/storage/MsgCreateGroup.ts | 212 ++ .../{createObject.ts => MsgCreateObject.ts} | 4 +- .../{deleteBucket.ts => MsgDeleteBucket.ts} | 4 +- .../greenfield/storage/MsgDeleteGroup.ts | 220 ++ .../{deleteObject.ts => MsgDeleteObject.ts} | 4 +- .../greenfield/storage/MsgDeletePolicy.ts | 341 +++ .../greenfield/storage/MsgLeaveGroup.ts | 252 ++ .../greenfield/storage/MsgMirrorBucket.ts | 357 +++ .../greenfield/storage/MsgMirrorGroup.ts | 381 +++ .../greenfield/storage/MsgMirrorObject.ts | 349 +++ .../greenfield/storage/MsgPutPolicy.ts | 329 +++ .../greenfield/storage/MsgUpdateBucketInfo.ts | 278 ++ .../storage/MsgUpdateGroupMember.ts | 240 ++ packages/chain-sdk/src/sign/index.ts | 2 +- packages/chain-sdk/src/sign/pubKey.ts | 7 +- packages/chain-sdk/src/sign/signTx.ts | 12 +- packages/chain-sdk/src/tx/baseTx.ts | 2 +- .../chain-sdk/src/tx/bucket/create/index.ts | 204 -- packages/chain-sdk/src/tx/bucket/del/index.ts | 146 - packages/chain-sdk/src/tx/bucket/index.ts | 2 - packages/chain-sdk/src/tx/index.ts | 5 - .../src/tx/object/cancel-create/index.ts | 143 - .../chain-sdk/src/tx/object/create/index.ts | 215 -- packages/chain-sdk/src/tx/object/del/index.ts | 152 - packages/chain-sdk/src/tx/object/index.ts | 3 - packages/chain-sdk/src/tx/transfer/index.ts | 172 -- .../chain-sdk/src/tx/transferOut/index.ts | 179 -- packages/chain-sdk/src/types/tx.ts | 33 +- packages/chain-sdk/src/utils/units.ts | 2 +- packages/chain-sdk/test/index.test.ts | 15 - packages/file-handle/jest.config.mjs | 23 + packages/file-handle/package.json | 11 +- pnpm-lock.yaml | 2603 ++++++++++++----- 98 files changed, 6714 insertions(+), 4534 deletions(-) create mode 100644 .changeset/beige-tables-carry.md create mode 100644 .changeset/early-parents-divide.md create mode 100644 .changeset/ninety-meals-impress.md create mode 100644 .changeset/rude-tips-rush.md delete mode 100644 examples/nextjs/src/components/bucket/create/index.arv.tsx delete mode 100644 examples/nextjs/src/components/object/cancel-create/index.tsx delete mode 100644 examples/nextjs/src/components/object/create/index.arv.tsx delete mode 100644 examples/nextjs/src/components/transfer/index.arv.tsx delete mode 100644 examples/nextjs/src/components/withdraw/index.arv.tsx create mode 100644 packages/chain-sdk/jest.config.mjs create mode 100644 packages/chain-sdk/src/api/account.spec.ts create mode 100644 packages/chain-sdk/src/api/feegrant.ts rename packages/chain-sdk/src/api/{object.ts => objectt.ts} (76%) create mode 100644 packages/chain-sdk/src/api/queryclient.ts create mode 100644 packages/chain-sdk/src/config.spec.ts create mode 100644 packages/chain-sdk/src/keymanage/index.ts create mode 100644 packages/chain-sdk/src/messages/bank/MsgMultiSend.ts rename packages/chain-sdk/src/messages/bank/{send.ts => MsgSend.ts} (100%) create mode 100644 packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts create mode 100644 packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts create mode 100644 packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts delete mode 100644 packages/chain-sdk/src/messages/greenfield/bridge/transferOut.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/sp/MsgUpdateSpStoragePrice.ts rename packages/chain-sdk/src/messages/greenfield/storage/{cancelCreateObject.ts => MsgCancelCreateObject.ts} (82%) rename packages/chain-sdk/src/messages/greenfield/storage/{createBucket.ts => MsgCreateBucket.ts} (92%) create mode 100644 packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts rename packages/chain-sdk/src/messages/greenfield/storage/{createObject.ts => MsgCreateObject.ts} (95%) rename packages/chain-sdk/src/messages/greenfield/storage/{deleteBucket.ts => MsgDeleteBucket.ts} (80%) create mode 100644 packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts rename packages/chain-sdk/src/messages/greenfield/storage/{deleteObject.ts => MsgDeleteObject.ts} (84%) create mode 100644 packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts delete mode 100644 packages/chain-sdk/src/tx/bucket/create/index.ts delete mode 100644 packages/chain-sdk/src/tx/bucket/del/index.ts delete mode 100644 packages/chain-sdk/src/tx/bucket/index.ts delete mode 100644 packages/chain-sdk/src/tx/object/cancel-create/index.ts delete mode 100644 packages/chain-sdk/src/tx/object/create/index.ts delete mode 100644 packages/chain-sdk/src/tx/object/del/index.ts delete mode 100644 packages/chain-sdk/src/tx/object/index.ts delete mode 100644 packages/chain-sdk/src/tx/transfer/index.ts delete mode 100644 packages/chain-sdk/src/tx/transferOut/index.ts delete mode 100644 packages/chain-sdk/test/index.test.ts create mode 100644 packages/file-handle/jest.config.mjs diff --git a/.changeset/beige-tables-carry.md b/.changeset/beige-tables-carry.md new file mode 100644 index 00000000..fc917eaa --- /dev/null +++ b/.changeset/beige-tables-carry.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +feat: feegrant diff --git a/.changeset/early-parents-divide.md b/.changeset/early-parents-divide.md new file mode 100644 index 00000000..3f757d0b --- /dev/null +++ b/.changeset/early-parents-divide.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +feat: Change Tx API diff --git a/.changeset/ninety-meals-impress.md b/.changeset/ninety-meals-impress.md new file mode 100644 index 00000000..aa57a202 --- /dev/null +++ b/.changeset/ninety-meals-impress.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +feat: Support dynamic provider diff --git a/.changeset/rude-tips-rush.md b/.changeset/rude-tips-rush.md new file mode 100644 index 00000000..0e129ff6 --- /dev/null +++ b/.changeset/rude-tips-rush.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +Upgrade Cosmos SDK diff --git a/README.md b/README.md index eb1b9d45..a9492e9d 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,9 @@ You can find some package documentation below: | [@bnb-chain/greenfield-chain-sdk](./packages/chain-sdk/README.md) | A client library for Greenfield Chain | | [@bnb-chain/greenfiled-file-handle](./packages/file-handle/README.md) | WASM module that handle file, such as `checksums` | +## Document +[Document](./packages/chain-sdk/README.md) + ## Examples Support use in browser and node.js @@ -21,6 +24,7 @@ Support use in browser and node.js 1. Modern browsers (Chromium, Firefox, Safari) 2. Browser extensions (Chromium, Firefox) +3. Nodejs ## Contribution diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index de42ef68..9a6994be 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -33,7 +33,8 @@ "react": "18.2.0", "react-dom": "18.2.0", "typescript": "^4.7.4", - "wagmi": "^0.11.5" + "viem": "^0.3.31", + "wagmi": "^1.0.5" }, "devDependencies": { "cross-env": "^7.0.3", diff --git a/examples/nextjs/src/components/bucket/create/index.arv.tsx b/examples/nextjs/src/components/bucket/create/index.arv.tsx deleted file mode 100644 index 9ddad908..00000000 --- a/examples/nextjs/src/components/bucket/create/index.arv.tsx +++ /dev/null @@ -1,231 +0,0 @@ -import { client } from '@/client'; -import { GRPC_URL } from '@/config'; -import { decodeFromHex } from '@/utils/encoding'; -import { getGasFeeBySimulate } from '@/utils/simulate'; -import { - CreateBucketTx, - ISignature712, - makeCosmsPubKey, - recoverPk, - ZERO_PUBKEY, -} from '@bnb-chain/greenfield-chain-sdk'; -import { useState } from 'react'; -import { useAccount, useNetwork } from 'wagmi'; - -interface IApprovalCreateBucket { - bucket_name: string; - creator: string; - visibility: string; - primary_sp_address: string; - primary_sp_approval: { - expired_height: string; - sig: string; - }; - charged_read_quota: number; - redundancy_type: string; -} - -export const CreateBucket = () => { - const { address } = useAccount(); - const { chain } = useNetwork(); - const createBucketTx = new CreateBucketTx(GRPC_URL!, String(chain?.id)!); - const [signInfo, setSignInfo] = useState({ - messageHash: Uint8Array.from([]), - signature: '', - }); - const [gasLimit, setGasLimit] = useState(0); - const [textarea, setTextArea] = useState(''); - const [xGnfdSignedMsg, setXGnfdSignedMsg] = useState(null); - const [gasPrice, setGasPrice] = useState(''); - - return ( - <> -

Create Bucket

- - - -
- -
{'=>'}
-
- -
-
- -
- -
- - - ); -}; diff --git a/examples/nextjs/src/components/bucket/create/index.tsx b/examples/nextjs/src/components/bucket/create/index.tsx index 4e1d3d8b..66f2b5b4 100644 --- a/examples/nextjs/src/components/bucket/create/index.tsx +++ b/examples/nextjs/src/components/bucket/create/index.tsx @@ -1,5 +1,4 @@ import { client, selectSp } from '@/client'; -import { ISimulateGasFee } from '@bnb-chain/greenfield-chain-sdk'; import { useState } from 'react'; import { useAccount } from 'wagmi'; @@ -10,7 +9,6 @@ export const CreateBucket = () => { }>({ bucketName: '', }); - const [simulateInfo, setSimulateInfo] = useState(null); return ( <> @@ -29,65 +27,36 @@ export const CreateBucket = () => { if (!address) return; const spInfo = await selectSp(); - const res = await client.bucket.createBucket( - { - bucketName: createBucketInfo.bucketName, - creator: address, - visibility: 'VISIBILITY_TYPE_PUBLIC_READ', - chargedReadQuota: '0', - spInfo, - }, - { - simulate: true, - denom: 'BNB', - gasLimit: 210000, - gasPrice: '5000000000', - payer: address, - granter: '', - }, - ); - setSimulateInfo(res); - console.log('res', res); - }} - > - simulate - -
- gasFee: {simulateInfo?.gasFee} -
- +
); }; diff --git a/examples/nextjs/src/components/bucket/delete/index.tsx b/examples/nextjs/src/components/bucket/delete/index.tsx index b15989fc..bde7f84d 100644 --- a/examples/nextjs/src/components/bucket/delete/index.tsx +++ b/examples/nextjs/src/components/bucket/delete/index.tsx @@ -1,12 +1,10 @@ import { client } from '@/client'; -import { ISimulateGasFee } from '@bnb-chain/greenfield-chain-sdk'; import { useState } from 'react'; import { useAccount } from 'wagmi'; export const DeleteBucket = () => { const { address } = useAccount(); const [bucketName, setBucketName] = useState(''); - const [simulateInfo, setSimulateInfo] = useState(null); return ( <> @@ -20,51 +18,30 @@ export const DeleteBucket = () => { />
- -
- gasFee {simulateInfo?.gasFee}
); diff --git a/examples/nextjs/src/components/deposit/index.tsx b/examples/nextjs/src/components/deposit/index.tsx index 007a1ad8..3bf38fc6 100644 --- a/examples/nextjs/src/components/deposit/index.tsx +++ b/examples/nextjs/src/components/deposit/index.tsx @@ -1,21 +1,14 @@ import { CROSS_CHAIN_CONTRACT_ADDRESS, TOKEN_HUB_CONTRACT_ADDRESS } from '@/config'; import { CROSS_CHAIN_ABI, TOKENHUB_ABI } from '@/constants/abi'; -import { ethers } from 'ethers'; import { useState } from 'react'; -import { useAccount, useProvider, useSigner } from 'wagmi'; +import { formatEther, parseEther } from 'viem'; +import { useAccount, usePublicClient, useWalletClient } from 'wagmi'; export const Deposit = () => { const { address, connector, isConnected } = useAccount(); - const provider = useProvider(); - const { data: signer } = useSigner(); + const publicClient = usePublicClient(); + const { data: walletClient } = useWalletClient(); const [depositAmount, setDepositAmount] = useState(0); - const tokenHubContract = new ethers.Contract(TOKEN_HUB_CONTRACT_ADDRESS, TOKENHUB_ABI, signer!); - - const crossChainContract = new ethers.Contract( - CROSS_CHAIN_CONTRACT_ADDRESS, - CROSS_CHAIN_ABI, - signer!, - ); return (
@@ -29,30 +22,37 @@ export const Deposit = () => {
- {/* {isLoading &&
Check Wallet
} - {isSuccess &&
Transaction: {JSON.stringify(data)}
} */}
); }; diff --git a/examples/nextjs/src/components/object/cancel-create/index.tsx b/examples/nextjs/src/components/object/cancel-create/index.tsx deleted file mode 100644 index 3a314b16..00000000 --- a/examples/nextjs/src/components/object/cancel-create/index.tsx +++ /dev/null @@ -1,143 +0,0 @@ -import { useState } from 'react'; -import { - CancelCreateObjectTx, - getAccount, - ISignature712, - ZERO_PUBKEY, - makeCosmsPubKey, - recoverPk, -} from '@bnb-chain/greenfield-chain-sdk'; -import { GRPC_URL } from '@/config'; -import { useAccount, useNetwork } from 'wagmi'; - -export const CancelCreateObject = () => { - const { address } = useAccount(); - const { chain } = useNetwork(); - const [gasLimit, setGasLimit] = useState(0); - const [bucketName, setBucketName] = useState(''); - const [objectName, setObjectName] = useState(''); - const [signInfo, setSignInfo] = useState({ - messageHash: Uint8Array.from([]), - signature: '', - }); - - const cancelCteObjTx = new CancelCreateObjectTx(GRPC_URL, String(chain?.id)!); - - const [gasPrice, setGasPrice] = useState(''); - - return ( - <> -

Cancel Create Object

-
- bucket name: - { - setBucketName(e.target.value); - }} - /> -
- object name: - { - setObjectName(e.target.value); - }} - /> -
- -
- -
- -
- - ); -}; diff --git a/examples/nextjs/src/components/object/create/index.arv.tsx b/examples/nextjs/src/components/object/create/index.arv.tsx deleted file mode 100644 index 677b63e2..00000000 --- a/examples/nextjs/src/components/object/create/index.arv.tsx +++ /dev/null @@ -1,303 +0,0 @@ -import { client } from '@/client'; -import { GRPC_URL } from '@/config'; -import { decodeFromHex } from '@/utils/encoding'; -import { getGasFeeBySimulate } from '@/utils/simulate'; -import { - CreateObjectTx, - ISignature712, - ISpInfo, - makeCosmsPubKey, - recoverPk, - ZERO_PUBKEY, -} from '@bnb-chain/greenfield-chain-sdk'; -import { ChangeEvent, useState } from 'react'; -import { useAccount, useNetwork } from 'wagmi'; - -interface IApprovalCreateObject { - bucket_name: string; - content_type: string; - creator: string; - expect_checksums: string[]; - visibility: number; - object_name: string; - payload_size: string; - primary_sp_approval: { - expired_height: string; - sig: string; - }; - expect_secondary_sp_addresses: string[]; - redundancy_type: number; -} - -const selectSp = async () => { - const sps = await client.sp.getStorageProviders(); - const finalSps = (sps ?? []).filter((v: any) => v?.description?.moniker !== 'QATest'); - const selectIndex = 0; - const secondarySpAddresses = [ - ...finalSps.slice(0, selectIndex), - ...finalSps.slice(selectIndex + 1), - ].map((item) => item.operatorAddress); - const selectSpInfo = { - endpoint: finalSps[selectIndex].endpoint, - primarySpAddress: finalSps[selectIndex]?.operatorAddress, - sealAddress: finalSps[selectIndex].sealAddress, - secondarySpAddresses, - }; - return selectSpInfo; -}; - -export const CreateObject = () => { - const { address } = useAccount(); - const { chain } = useNetwork(); - const createObjectTx = new CreateObjectTx(GRPC_URL!, String(chain?.id)!); - const [signInfo, setSignInfo] = useState({ - messageHash: Uint8Array.from([]), - signature: '', - }); - const [gasLimit, setGasLimit] = useState(0); - const [textarea, setTextArea] = useState(''); - const [gasPrice, setGasPrice] = useState(''); - const [file, setFile] = useState(); - const [xGnfdSignedMsg, setXGnfdSignedMsg] = useState(null); - const [spInfo, setSpInfo] = useState(null); - - return ( -
-

Create Object

- - ) => { - if (e.target.files) { - setFile(e.target.files[0]); - } - }} - /> - - - - - - - -
- -
{'=>'}
-
- -
-
- - -
- -
- -
- ); -}; diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index 508eaf8c..38d64f45 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -49,24 +49,22 @@ export const CreateObject = () => { } const spInfo = await selectSp(); - const res = await client.object.createObject( - { - bucketName: createObjectInfo.bucketName, - objectName: createObjectInfo.objectName, - spInfo, - file, - creator: address, - expectSecondarySpAddresses: [], - }, - { - simulate: false, - denom: 'BNB', - gasLimit: 210000, - gasPrice: '5000000000', - payer: address, - granter: '', - }, - ); + const createObjectTx = await client.object.createObject({ + bucketName: createObjectInfo.bucketName, + objectName: createObjectInfo.objectName, + spInfo, + file, + creator: address, + expectSecondarySpAddresses: [], + }); + + const res = await createObjectTx.broadcast({ + denom: 'BNB', + gasLimit: 210000, + gasPrice: '50000000000', + payer: address, + granter: '', + }); console.log('res', res); diff --git a/examples/nextjs/src/components/object/del/index.tsx b/examples/nextjs/src/components/object/del/index.tsx index 70ac397e..006e63d2 100644 --- a/examples/nextjs/src/components/object/del/index.tsx +++ b/examples/nextjs/src/components/object/del/index.tsx @@ -1,5 +1,4 @@ import { client } from '@/client'; -import { ISimulateGasFee } from '@bnb-chain/greenfield-chain-sdk'; import { useState } from 'react'; import { useAccount } from 'wagmi'; @@ -7,7 +6,6 @@ export const DeleteObject = () => { const { address } = useAccount(); const [bucketName, setBucketName] = useState(''); const [objectName, setObjectName] = useState(''); - const [simulateInfo, setSimulateInfo] = useState(null); return ( <> @@ -31,59 +29,33 @@ export const DeleteObject = () => { onClick={async () => { if (!address) return; - const res = await client.object.deleteObject( - { - bucketName, - objectName, - operator: address, - }, - { - simulate: true, - denom: 'BNB', - gasLimit: 210000, - gasPrice: '5000000000', - payer: address, - granter: '', - }, - ); + const deleteObjectTx = await client.object.deleteObject({ + bucketName, + objectName, + operator: address, + }); - console.log('res', res); - setSimulateInfo(res); - }} - > - simulate - -
- gasFee: {simulateInfo?.gasFee} -
- diff --git a/examples/nextjs/src/components/object/index.tsx b/examples/nextjs/src/components/object/index.tsx index a69c62b7..1258871d 100644 --- a/examples/nextjs/src/components/object/index.tsx +++ b/examples/nextjs/src/components/object/index.tsx @@ -1,4 +1,3 @@ -import { CancelCreateObject } from './cancel-create'; import { CreateObject } from './create'; import { DeleteObject } from './del'; import { ObjectInfo } from './info'; diff --git a/examples/nextjs/src/components/transfer/index.arv.tsx b/examples/nextjs/src/components/transfer/index.arv.tsx deleted file mode 100644 index 7f097f44..00000000 --- a/examples/nextjs/src/components/transfer/index.arv.tsx +++ /dev/null @@ -1,167 +0,0 @@ -import { GRPC_URL } from '@/config'; -import { makeCosmsPubKey, recoverPk, ZERO_PUBKEY } from '@bnb-chain/greenfield-chain-sdk'; -import { getGasFeeBySimulate } from '@/utils/simulate'; -import { IRawTxInfo, ISignature712, TransferTx } from '@bnb-chain/greenfield-chain-sdk'; -import { ethers } from 'ethers'; -import { useState } from 'react'; -import { useAccount, useNetwork } from 'wagmi'; -import { client } from '@/client'; - -export const TransferArv = () => { - const { address } = useAccount(); - const { chain } = useNetwork(); - const tTx = new TransferTx(GRPC_URL!, String(chain?.id)!); - const [transferInfo, setTransferInfo] = useState({ - to: '0x0000000000000000000000000000000000000001', - amount: '1', - gasLimit: '210000', - }); - const [transferSignInfo, setTransferSignInfo] = useState({ - messageHash: Uint8Array.from([]), - signature: '', - }); - const [transferGasFee, setTransferGasFee] = useState(''); - const [transferTxSignInfo, setTransferTxSignInfo] = useState({ - bytes: Uint8Array.from([]), - hex: '', - }); - // transfer end - - const [gasPrice, setGasPrice] = useState(''); - - return ( -
-

Transfer

- to : - { - setTransferInfo({ ...transferInfo, to: e.target.value }); - }} - /> -
- amount: - { - setTransferInfo({ ...transferInfo, amount: e.target.value }); - }} - /> -
- gas limit: - { - setTransferInfo({ ...transferInfo, gasLimit: e.target.value }); - }} - /> -
- - gas fee: {transferGasFee} -
- -

transferSignInfo: {transferSignInfo.signature}

- -

- transferTxSignInfo: - -

- -
- ); -}; diff --git a/examples/nextjs/src/components/transfer/index.tsx b/examples/nextjs/src/components/transfer/index.tsx index 914431ef..e772127a 100644 --- a/examples/nextjs/src/components/transfer/index.tsx +++ b/examples/nextjs/src/components/transfer/index.tsx @@ -1,19 +1,29 @@ import { client } from '@/client'; -import { ISimulateGasFee } from '@bnb-chain/greenfield-chain-sdk'; +import { ethers } from 'ethers'; import { useState } from 'react'; import { useAccount } from 'wagmi'; export const Transfer = () => { - const { address } = useAccount(); + const { address, connector } = useAccount(); const [transferInfo, setTransferInfo] = useState({ to: '0x0000000000000000000000000000000000000001', amount: '1', gasLimit: '210000', }); - const [simulateInfo, setSimulateInfo] = useState(null); return (
+

Transfer

to : { onClick={async () => { if (!address) return; - const res = await client.account.transfer( - { - fromAddress: address, - toAddress: transferInfo.to, - amount: [ - { - denom: 'BNB', - amount: transferInfo.amount, - }, - ], - }, - { - simulate: true, - denom: 'BNB', - gasLimit: Number(transferInfo.gasLimit), - gasPrice: '5000000000', - payer: address, - granter: '', - }, - ); + const transferTx = await client.account.transfer({ + fromAddress: address, + toAddress: transferInfo.to, + amount: [ + { + denom: 'BNB', + amount: ethers.utils.parseEther(transferInfo.amount).toString(), + }, + ], + }); - console.log('res', res); - setSimulateInfo(res); - }} - > - simulate - - {simulateInfo?.gasFee} -
-
); diff --git a/examples/nextjs/src/components/walletInfo/index.tsx b/examples/nextjs/src/components/walletInfo/index.tsx index c6c88513..40e69418 100644 --- a/examples/nextjs/src/components/walletInfo/index.tsx +++ b/examples/nextjs/src/components/walletInfo/index.tsx @@ -1,6 +1,7 @@ import { BSC_CHAIN_ID, GREEN_CHAIN_ID, + coinbaseWalletConnector, metaMaskWalletConnector, trustWalletConnector, } from '@/config'; @@ -10,7 +11,6 @@ import { useConnect, useDisconnect, useNetwork, - useProvider, useSwitchNetwork, } from 'wagmi'; @@ -22,6 +22,9 @@ export const WalletInfo = () => { const { connect: trustWalletConnect } = useConnect({ connector: trustWalletConnector, }); + const { connect: coinbaseWalletConnect } = useConnect({ + connector: coinbaseWalletConnector, + }); const { disconnect } = useDisconnect(); const { chain } = useNetwork(); @@ -43,6 +46,7 @@ export const WalletInfo = () => { <> + ); } diff --git a/examples/nextjs/src/components/withdraw/index.arv.tsx b/examples/nextjs/src/components/withdraw/index.arv.tsx deleted file mode 100644 index cc90d5ef..00000000 --- a/examples/nextjs/src/components/withdraw/index.arv.tsx +++ /dev/null @@ -1,183 +0,0 @@ -import { GRPC_URL } from '@/config'; -import { makeCosmsPubKey, recoverPk, ZERO_PUBKEY } from '@bnb-chain/greenfield-chain-sdk'; -import { getGasFeeBySimulate, getRelayFeeBySimulate } from '@/utils/simulate'; -import { IRawTxInfo, ISignature712, TransferOutTx } from '@bnb-chain/greenfield-chain-sdk'; -import { ethers } from 'ethers'; -import { useState } from 'react'; -import { useAccount, useNetwork } from 'wagmi'; -import { client } from '@/client'; - -export const Withdraw = () => { - const { address } = useAccount(); - const { chain } = useNetwork(); - const toutTx = new TransferOutTx(GRPC_URL, String(chain?.id)!); - const [transferoutInfo, setTransferoutInfo] = useState({ - to: '0x0000000000000000000000000000000000000001', - denom: 'BNB', - amount: '1', - gasLimit: '210000', - }); - const [transferoutSignInfo, setTransferoutSignInfo] = useState({ - messageHash: Uint8Array.from([]), - signature: '', - }); - const [transferOutGasFee, setTransferOutGasFee] = useState(''); - const [transferOutRelayFee, setTransferOutRelayFee] = useState(''); - const [transferoutTxSignInfo, setTransferoutTxSignInfo] = useState({ - bytes: Uint8Array.from([]), - hex: '', - }); - const [gasPrice, setGasPrice] = useState(''); - - return ( -
-

Withdraw

- to : - { - setTransferoutInfo({ ...transferoutInfo, to: e.target.value }); - }} - /> -
- amount: - { - setTransferoutInfo({ ...transferoutInfo, amount: e.target.value }); - }} - /> -
- gas limit: - { - setTransferoutInfo({ ...transferoutInfo, gasLimit: e.target.value }); - }} - /> -
- denom: - { - setTransferoutInfo({ ...transferoutInfo, denom: e.target.value }); - }} - /> -
- -
- relay fee: {transferOutRelayFee} -
- gas fee: {transferOutGasFee} -
- -

transferoutSignInfo: {transferoutSignInfo.signature}

- -

- transferOutTxSignInfo: - -

- -
- ); -}; diff --git a/examples/nextjs/src/components/withdraw/index.tsx b/examples/nextjs/src/components/withdraw/index.tsx index d62c988f..aab907c5 100644 --- a/examples/nextjs/src/components/withdraw/index.tsx +++ b/examples/nextjs/src/components/withdraw/index.tsx @@ -1,6 +1,7 @@ import { client } from '@/client'; import { getRelayFeeBySimulate } from '@/utils/simulate'; import { ISimulateGasFee } from '@bnb-chain/greenfield-chain-sdk'; +import { ethers } from 'ethers'; import { useState } from 'react'; import { useAccount } from 'wagmi'; @@ -9,7 +10,6 @@ export const Withdraw = () => { const [transferoutInfo, setTransferoutInfo] = useState({ to: '0x0000000000000000000000000000000000000001', - denom: 'BNB', amount: '1', gasLimit: '210000', }); @@ -47,36 +47,22 @@ export const Withdraw = () => { }} />
- denom: - { - setTransferoutInfo({ ...transferoutInfo, denom: e.target.value }); - }} - /> -

relay fee: {transferOutRelayFee}
gas fee: {simulateInfo?.gasFee}
-
- ); }; diff --git a/examples/nextjs/src/config/index.ts b/examples/nextjs/src/config/index.ts index 8d7d6565..3f2c075b 100644 --- a/examples/nextjs/src/config/index.ts +++ b/examples/nextjs/src/config/index.ts @@ -2,6 +2,7 @@ import { Chain, configureChains } from 'wagmi'; import { mainnet } from 'wagmi/chains'; import { InjectedConnector } from 'wagmi/connectors/injected'; import { MetaMaskConnector } from 'wagmi/connectors/metaMask'; +import { CoinbaseWalletConnector } from 'wagmi/connectors/coinbaseWallet'; import { publicProvider } from 'wagmi/providers/public'; import * as env from './env'; @@ -55,11 +56,18 @@ const bscChain: Chain = { // testnet: true, }; -const { chains, provider, webSocketProvider } = configureChains( +const { chains, publicClient, webSocketPublicClient } = configureChains( [mainnet, greenFieldChain, bscChain], [publicProvider()], ); +const coinbaseWalletConnector = new CoinbaseWalletConnector({ + chains, + options: { + appName: 'wagmi', + }, +}); + const trustWalletConnector = new InjectedConnector({ chains, options: { @@ -71,4 +79,11 @@ const trustWalletConnector = new InjectedConnector({ const metaMaskWalletConnector = new MetaMaskConnector({ chains }); -export { provider, webSocketProvider, chains, metaMaskWalletConnector, trustWalletConnector }; +export { + publicClient, + webSocketPublicClient, + chains, + metaMaskWalletConnector, + coinbaseWalletConnector, + trustWalletConnector, +}; diff --git a/examples/nextjs/src/constants/abi.ts b/examples/nextjs/src/constants/abi.ts index fd2337f0..87a9d368 100644 --- a/examples/nextjs/src/constants/abi.ts +++ b/examples/nextjs/src/constants/abi.ts @@ -1532,4 +1532,4 @@ export const CROSS_CHAIN_ABI = [ stateMutability: 'pure', type: 'function', }, -]; +] as const; diff --git a/examples/nextjs/src/pages/_app.tsx b/examples/nextjs/src/pages/_app.tsx index 963b8518..ad56422b 100644 --- a/examples/nextjs/src/pages/_app.tsx +++ b/examples/nextjs/src/pages/_app.tsx @@ -1,23 +1,24 @@ -import '@/styles/globals.css'; -import type { AppProps } from 'next/app'; -import { createClient, WagmiConfig } from 'wagmi'; import { + coinbaseWalletConnector, metaMaskWalletConnector, - provider, + publicClient, trustWalletConnector, - webSocketProvider, + webSocketPublicClient, } from '@/config'; +import '@/styles/globals.css'; +import type { AppProps } from 'next/app'; +import { createConfig, WagmiConfig } from 'wagmi'; -const wagmiClient = createClient({ +const wagmiConfig = createConfig({ autoConnect: true, - provider, - webSocketProvider, - connectors: [metaMaskWalletConnector, trustWalletConnector], + connectors: [metaMaskWalletConnector, trustWalletConnector, coinbaseWalletConnector], + webSocketPublicClient, + publicClient, }); export default function App({ Component, pageProps }: AppProps) { return ( - + ); diff --git a/examples/nextjs/tsconfig.json b/examples/nextjs/tsconfig.json index 2159bf45..187273e7 100644 --- a/examples/nextjs/tsconfig.json +++ b/examples/nextjs/tsconfig.json @@ -1,7 +1,11 @@ { "compilerOptions": { - "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], + "target": "ES2020", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -16,9 +20,17 @@ "incremental": true, "baseUrl": ".", "paths": { - "@/*": ["./src/*"] + "@/*": [ + "./src/*" + ] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], - "exclude": ["node_modules"] -} + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/examples/nodejs/index.js b/examples/nodejs/index.js index f4e074a4..f6d4c340 100644 --- a/examples/nodejs/index.js +++ b/examples/nodejs/index.js @@ -4,7 +4,7 @@ const { Client } = require('@bnb-chain/greenfield-chain-sdk'); const client = Client.create('https://gnfd.qa.bnbchain.world', '9000'); (async () => { - const account = await client.account.getAccount('0x7239B73CA99b095d4FEe1495cB62e36be8CfeeD1'); + const account = await client.account.getAccount('0x1C893441AB6c1A75E01887087ea508bE8e07AAae'); console.log(account); })(); diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 42f20d06..75a3d147 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -14,4 +14,4 @@ "dependencies": { "@bnb-chain/greenfield-chain-sdk": "workspace:*" } -} +} \ No newline at end of file diff --git a/package.json b/package.json index bcce8a8d..fc1f2660 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@rollup/plugin-typescript": "^8.5.0", "@types/chai": "^4.3.5", "@types/mocha": "^9.1.1", - "@types/node": "^18.16.10", + "@types/node": "^18.16.13", "@types/react": "^18.2.6", "@types/react-dom": "^18.2.4", "@typescript-eslint/eslint-plugin": "^5.59.6", diff --git a/packages/chain-sdk/README.md b/packages/chain-sdk/README.md index 8b664f1e..ca3be024 100644 --- a/packages/chain-sdk/README.md +++ b/packages/chain-sdk/README.md @@ -3,7 +3,11 @@ ## Install ```bash -> npm install @bnb-chain/greenfield-chain-sdk@alpha +# QA +npm install @bnb-chain/greenfield-chain-sdk@alpha + +# TESTNET +npm install @bnb-chain/greenfield-chain-sdk@beta ``` ## Usage @@ -16,52 +20,81 @@ const client = Client.create(GRPC_URL, GREEN_CHAIN_ID); Apis include transactions and queries. -### txs +### Tx + +#### 1. Tx construction + +take `transfer` for example: ```js -// transfer example -await client.account.transfer( - { - fromAddress: address, - toAddress: transferInfo.to, - amount: [ - { - denom: 'BNB', - amount: transferInfo.amount, - }, - ], - }, - { - simulate: false, - denom: 'BNB', - gasLimit: Number(simulateInfo.gasLimit), - gasPrice: simulateInfo.gasPrice, - payer: address, - granter: '', - }, -); +const transferTx = await client.account.transfer({ + fromAddress: address, + toAddress: transferInfo.to, + amount: [ + { + denom: 'BNB', + amount: ethers.utils.parseEther(transferInfo.amount).toString(), + }, + ], +}); ``` -### querys +#### 2. Simulate Tx ```js -// get account info -await client.account.getAccount(address); +// simulate tx +const simulateInfo = await transferTx.simulate({ + denom: 'BNB', +}); +``` + +#### 3. Boradcast Tx + +```js +// broadcast tx +const broadcastRes = await transferTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo.gasLimit), + gasPrice: simulateInfo.gasPrice, + payer: address, + granter: '', +}); +``` + +`broadcast` use `window.ethereum` as signature provider by default. + +If you want to use others, you can set `signTypedDataCallback`: + +```js +// trustwallet +const broadcastRes = await transferTx.broadcast({ + //... + signTypedDataCallback: async (addr: string, message: string) => { + return await window.trustwallet.request({ + method: 'eth_signTypedData_v4', + params: [addr, message], + }); + } +}); +``` + +If you broadcast in Nodejs, you can set `privateKey`: +```js +const broadcastRes = await transferTx.broadcast({ + //... + privateKey: '0x.......' +}); ``` -#### select sp +### Query ```js -const sps = await client.sp.getStorageProviders(); -const finalSps = (sps ?? []).filter((v: any) => v?.description?.moniker !== 'QATest'); -const selectIndex = 0; -const secondarySpAddresses = [ - ...finalSps.slice(0, selectIndex), - ...finalSps.slice(selectIndex + 1), -].map((item) => item.operatorAddress); +// get account info +await client.account.getAccount(address); ``` -more API List: + +more API: * [account](./src/api/account.ts) * [basic](./src/api/basic.ts) diff --git a/packages/chain-sdk/config/tsconfig.json b/packages/chain-sdk/config/tsconfig.json index 413714e6..50c9cc5d 100644 --- a/packages/chain-sdk/config/tsconfig.json +++ b/packages/chain-sdk/config/tsconfig.json @@ -20,6 +20,9 @@ "allowUmdGlobalAccess": true, "allowJs": true, "resolveJsonModule": true, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "strictPropertyInitialization": false, "paths": { "@/*": [ "../src/*" diff --git a/packages/chain-sdk/jest.config.mjs b/packages/chain-sdk/jest.config.mjs new file mode 100644 index 00000000..85317808 --- /dev/null +++ b/packages/chain-sdk/jest.config.mjs @@ -0,0 +1,23 @@ +import { pathsToModuleNameMapper } from 'ts-jest'; + +/** @type {import('ts-jest').JestConfigWithTsJest} */ +export default { + preset: 'ts-jest', + testEnvironment: 'node', + modulePathIgnorePatterns: ['/src/config.spec.ts'], + moduleNameMapper: { + ...pathsToModuleNameMapper({ '@/*': ['./src/*'] }, { prefix: '/' }), + '^(\\.{1,2}/.*)\\.js$': '$1', + }, + // transformIgnorePatterns: ['node_modules/(?!(@bnb-chain/greenfield-cosmos-types)/)'], + extensionsToTreatAsEsm: ['.ts'], + transform: { + '^.+\\.ts?$': [ + 'ts-jest', + { + // tsconfig: './config/tsconfig-cjs.json', + useESM: true, + }, + ], + }, +}; diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 5f05efac..abfaef6d 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -26,7 +26,7 @@ "dev": "rollup -cw", "prebuild": "rimraf ./dist", "build": "rollup -c", - "test": "TS_NODE_PROJECT=./config/tsconfig-test.json node --es-module-specifier-resolution=node --loader ts-node/esm --nolazy ../../node_modules/mocha/lib/cli/cli.js --timeout 9999999 --color 'test/*.test.ts'", + "test": "jest", "lint": "prettier --write './src/*.{ts,tsx,js,jsx}' && eslint ./src/ --ext .js,.jsx,.ts,.tsx --fix" }, "keywords": [], @@ -53,25 +53,32 @@ ] }, "dependencies": { - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.8", + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.9", "@bnb-chain/greenfiled-file-handle": "workspace:*", - "@cosmjs/proto-signing": "^0.29.5", - "@cosmjs/stargate": "^0.29.5", - "@cosmjs/tendermint-rpc": "^0.29.5", + "@cosmjs/proto-signing": "^0.30.1", + "@cosmjs/stargate": "^0.30.1", + "@cosmjs/tendermint-rpc": "^0.30.1", "@ethereumjs/util": "^8.0.5", "@ethersproject/signing-key": "^5.7.0", "@ethersproject/units": "^5.7.0", "@metamask/eth-sig-util": "^5.0.2", - "long": "^5.2.1" + "ethereum-cryptography": "^2.0.0", + "long": "^5.2.1", + "reflect-metadata": "^0.1.13", + "tsyringe": "^4.7.0" }, "devDependencies": { + "@jest/globals": "^29.5.0", + "@types/jest": "^29.5.1", + "jest": "^29.5.0", "rollup": "^2.79.1", "rollup-plugin-auto-external": "^2.0.0", "rollup-plugin-node-builtins": "^2.1.2", "rollup-plugin-polyfill-node": "^0.10.2", "rollup-plugin-terser": "^7.0.2", + "ts-jest": "^29.1.0", "ts-node": "^10.9.1", "tslib": "^2.5.0", "typescript": "^4.9.5" } -} +} \ No newline at end of file diff --git a/packages/chain-sdk/rollup.config.js b/packages/chain-sdk/rollup.config.js index de209ff3..3f068523 100644 --- a/packages/chain-sdk/rollup.config.js +++ b/packages/chain-sdk/rollup.config.js @@ -2,6 +2,7 @@ import alias from '@rollup/plugin-alias'; import commonjs from '@rollup/plugin-commonjs'; import json from '@rollup/plugin-json'; import resolve from '@rollup/plugin-node-resolve'; +import nodePolyfills from 'rollup-plugin-polyfill-node'; import typescript from '@rollup/plugin-typescript'; import path from 'path'; import builtins from 'rollup-plugin-node-builtins'; @@ -57,18 +58,16 @@ export default async () => { format: 'cjs', }, external: resolveExternal(), - context: 'window', - treeshake: true, plugins: [ json({ include: ['src/**'], }), autoExternal(), - resolve({ - browser: false, + nodePolyfills({ + include: 'node_modules/**', }), commonjs({ - defaultIsModuleExports: false, + ignoreDynamicRequires: true, }), typescript({ tsconfig: './config/tsconfig-cjs.json', diff --git a/packages/chain-sdk/src/api/account.spec.ts b/packages/chain-sdk/src/api/account.spec.ts new file mode 100644 index 00000000..c6a32ef3 --- /dev/null +++ b/packages/chain-sdk/src/api/account.spec.ts @@ -0,0 +1,59 @@ +import { describe, expect, test } from '@jest/globals'; +import { GREENFIELD_CHAIN_ID, GRPC_URL, ACCOUNT } from '../config.spec'; +import { Client } from '../client'; + +const client = Client.create(GRPC_URL, GREENFIELD_CHAIN_ID); + +describe('accountQuery', () => { + describe('getAccount', () => { + test('it works', async () => { + const res = await client.account.getAccount(ACCOUNT.address); + + expect(res).not.toBeNull(); + }); + }); + + describe('getAccountBalance', () => { + test('it works', async () => { + const res = await client.account.getAccountBalance({ + address: ACCOUNT.address, + denom: 'BNB', + }); + + expect(res).not.toBeNull(); + }); + }); + + describe('getPaymentAccount', () => { + test('it works', async () => { + const res = await client.account.getPaymentAccount({ + addr: ACCOUNT.address, + }); + + expect(res).not.toBeNull(); + }); + }); + + describe('getModuleAccounts', () => { + test('it works', async () => { + const res = await client.account.getModuleAccounts(); + + expect(res).not.toBeNull(); + }); + }); + + // TODO: don't work + // describe('getPaymentAccountsByOwner', () => { + // test('it works', async () => { + // const res = await client.account.getPaymentAccountsByOwner(ACCOUNT.address); + + // expect(res).not.toBeNull(); + // }); + // }); +}); + +// describe('accountTx', () => { +// describe('transfer', async () => { +// // ... +// }); +// }); diff --git a/packages/chain-sdk/src/api/account.ts b/packages/chain-sdk/src/api/account.ts index 74dc1891..feb00a1d 100644 --- a/packages/chain-sdk/src/api/account.ts +++ b/packages/chain-sdk/src/api/account.ts @@ -1,27 +1,29 @@ -import { MsgSendSDKTypeEIP712, MsgSendTypeUrl } from '@/messages/bank/send'; +import { MsgMultiSendSDKTypeEIP712, MsgMultiSendTypeUrl } from '@/messages/bank/MsgMultiSend'; +import { MsgSendSDKTypeEIP712, MsgSendTypeUrl } from '@/messages/bank/MsgSend'; +import { + MsgCreatePaymentAccountSDKTypeEIP712, + MsgCreatePaymentAccountTypeUrl, +} from '@/messages/greenfield/payment/MsgCreatePaymentAccount'; import { BaseAccount } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/auth'; import { - QueryClientImpl as AuthQueryClientImpl, QueryModuleAccountByNameResponse, QueryModuleAccountsResponse, } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/query'; import { - QueryClientImpl as BankQueryClientImpl, QueryBalanceRequest, QueryBalanceResponse, } from '@bnb-chain/greenfield-cosmos-types/cosmos/bank/v1beta1/query'; import { MsgMultiSend, MsgSend } from '@bnb-chain/greenfield-cosmos-types/cosmos/bank/v1beta1/tx'; -import { MsgMultiSendSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/cosmos/bank/v1beta1/MsgMultiSendSDKTypeEIP712'; -import { MsgCreatePaymentAccountSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/payment/MsgCreatePaymentAccountSDKTypeEIP712'; import { - QueryClientImpl as PaymentQueryClientImpl, QueryGetPaymentAccountRequest, QueryGetPaymentAccountResponse, QueryGetPaymentAccountsByOwnerResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; import { MsgCreatePaymentAccount } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/tx'; +import { TxResponse } from '..'; import { Basic } from './basic'; -import { ITxOption, SimulateOrBroad, SimulateOrBroadResponse } from '..'; +import { RpcQueryClient } from './queryclient'; +import { autoInjectable, container, delay, inject, injectable, singleton } from 'tsyringe'; export interface IAccount { /** @@ -50,169 +52,91 @@ export interface IAccount { */ getPaymentAccountsByOwner(owner: string): Promise; - createPaymentAccount( - msg: MsgCreatePaymentAccount, - txOption: T, - ): Promise>; - createPaymentAccount( - msg: MsgCreatePaymentAccount, - txOption: ITxOption, - ): Promise; + createPaymentAccount(msg: MsgCreatePaymentAccount): Promise; /** * Transfer function */ - transfer(msg: MsgSend, txOption: T): Promise>; - transfer(msg: MsgSend, txOption: ITxOption): Promise; + transfer(msg: MsgSend): Promise; /** * makes transfers from an account to multiple accounts with respect amounts */ - multiTransfer( - address: string, - msg: MsgMultiSend, - txOption: T, - ): Promise>; - multiTransfer( - address: string, - msg: MsgMultiSend, - txOption: ITxOption, - ): Promise; + multiTransfer(address: string, msg: MsgMultiSend): Promise; } -export class Account extends Basic implements IAccount { - public async multiTransfer(address: string, msg: MsgMultiSend, txOption: ITxOption) { - const typeUrl = '/cosmos.bank.v1beta1.MsgMultiSend'; - const msgBytes = MsgMultiSend.encode(msg).finish(); - const accountInfo = await this.getAccount(address); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, +@singleton() +export class Account implements IAccount { + constructor(@inject(delay(() => Basic)) private basic: Basic) {} + + private queryClient = container.resolve(RpcQueryClient); + + public async multiTransfer(address: string, msg: MsgMultiSend) { + return await this.basic.tx( + MsgMultiSendTypeUrl, + address, MsgMultiSendSDKTypeEIP712, MsgMultiSend.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgMultiSend.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } - public async createPaymentAccount(msg: MsgCreatePaymentAccount, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.payment.MsgCreatePaymentAccount'; - const msgBytes = MsgCreatePaymentAccount.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.creator); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async createPaymentAccount(msg: MsgCreatePaymentAccount) { + return await this.basic.tx( + MsgCreatePaymentAccountTypeUrl, + msg.creator, MsgCreatePaymentAccountSDKTypeEIP712, MsgCreatePaymentAccount.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgCreatePaymentAccount.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } public async getPaymentAccountsByOwner(owner: string) { - const rpcClient = await this.getRpcClient(); - const rpc = new PaymentQueryClientImpl(rpcClient); - + const rpc = await this.queryClient.getPaymentQueryClient(); return await rpc.GetPaymentAccountsByOwner({ owner, }); } public async getModuleAccountByName(name: string) { - const rpcClient = await this.getRpcClient(); - const rpc = new AuthQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getAuthQueryClient(); return rpc.ModuleAccountByName({ name, }); } public async getModuleAccounts() { - const rpcClient = await this.getRpcClient(); - const rpc = new AuthQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getAuthQueryClient(); return await rpc.ModuleAccounts(); } public async getPaymentAccount( request: QueryGetPaymentAccountRequest, ): Promise { - const rpcClient = await this.getRpcClient(); - const rpc = new PaymentQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getPaymentQueryClient(); return await rpc.PaymentAccount(request); } public async getAccountBalance(request: QueryBalanceRequest): Promise { - const rpcClient = await this.getRpcClient(); - const rpc = new BankQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getBankQueryClient(); return await rpc.Balance(request); } public async getAccount(address: string): Promise { - const client = await this.getQueryClient(); + const client = await this.queryClient.getQueryClient(); const account = await client.auth.account(address); if (!account) return BaseAccount.fromJSON({}); return BaseAccount.toJSON(BaseAccount.decode(account.value)) as BaseAccount; } - public async transfer(msg: MsgSend, txOption: ITxOption) { - const typeUrl = MsgSendTypeUrl; - const msgBytes = MsgSend.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.fromAddress); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async transfer(msg: MsgSend) { + return await this.basic.tx( + MsgSendTypeUrl, + msg.fromAddress, MsgSendSDKTypeEIP712, MsgSend.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgSend.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } } diff --git a/packages/chain-sdk/src/api/basic.ts b/packages/chain-sdk/src/api/basic.ts index 827d0114..474e69f5 100644 --- a/packages/chain-sdk/src/api/basic.ts +++ b/packages/chain-sdk/src/api/basic.ts @@ -1,3 +1,5 @@ +import { getPubKeyByPriKey, signEIP712Data } from '@/keymanage'; +import { defaultSignTypedData } from '@/sign/signTx'; import { getGasFeeBySimulate } from '@/utils/units'; import { BaseAccount } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/auth'; import { @@ -20,67 +22,18 @@ import { } from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/tx'; import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; import { makeAuthInfoBytes } from '@cosmjs/proto-signing'; -import { DeliverTxResponse, ProtobufRpcClient, StargateClient } from '@cosmjs/stargate'; +import { DeliverTxResponse, StargateClient } from '@cosmjs/stargate'; +import { Tendermint37Client } from '@cosmjs/tendermint-rpc'; import { toBuffer } from '@ethereumjs/util'; -import { SignTypedDataVersion, TypedDataUtils } from '@metamask/eth-sig-util'; import Long from 'long'; -import { ZERO_PUBKEY } from '../constants'; +import { BroadcastOptions, ISimulateGasFee, SimulateOptions } from '..'; +import { DEFAULT_DENOM, ZERO_PUBKEY } from '../constants'; import { createEIP712, generateFee, generateMessage, generateTypes } from '../messages'; -import { makeCosmsPubKey, recoverPk } from '../sign'; +import { eip712Hash, makeCosmsPubKey, recoverPk } from '../sign'; import { typeWrapper } from '../tx/utils'; - -import { - AuthExtension, - BankExtension, - QueryClient, - TxExtension, - createProtobufRpcClient, - setupAuthExtension, - setupAuthzExtension, - setupBankExtension, - setupDistributionExtension, - setupFeegrantExtension, - setupGovExtension, - setupIbcExtension, - setupMintExtension, - setupSlashingExtension, - setupStakingExtension, - setupTxExtension, -} from '@cosmjs/stargate'; -import { AuthzExtension } from '@cosmjs/stargate/build/modules/authz/queries'; -import { Tendermint34Client } from '@cosmjs/tendermint-rpc'; -import { ISimulateGasFee, ITxOption } from '..'; - -export const makeClientWithExtension = async ( - rpcUrl: string, -): Promise< - [QueryClient & BankExtension & TxExtension & AuthExtension & AuthzExtension, Tendermint34Client] -> => { - const tmClient = await Tendermint34Client.connect(rpcUrl); - return [ - QueryClient.withExtensions( - tmClient, - setupAuthExtension, - setupAuthzExtension, - setupBankExtension, - setupDistributionExtension, - setupFeegrantExtension, - setupGovExtension, - setupIbcExtension, - setupMintExtension, - setupSlashingExtension, - setupStakingExtension, - setupTxExtension, - ), - tmClient, - ]; -}; - -export const makeRpcClient = async (rpcUrl: string) => { - const [, tmClient] = await makeClientWithExtension(rpcUrl); - const rpc = createProtobufRpcClient(new QueryClient(tmClient)); - return rpc; -}; +import { RpcQueryClient } from './queryclient'; +import { Account } from './account'; +import { autoInjectable, container, delay, inject, injectable, singleton } from 'tsyringe'; export interface IBasic { /** @@ -124,7 +77,7 @@ export interface IBasic { simulateRawTx( txBodyBytes: Uint8Array, accountInfo: BaseAccount, - txOption: Pick, + txOption: SimulateOptions, ): Promise; /** @@ -134,17 +87,26 @@ export interface IBasic { broadcastRawTx(txRawBytes: Uint8Array): Promise; } +@singleton() export class Basic implements IBasic { - constructor(protected readonly rpcUrl: string, protected readonly chainId: string) {} + private rpcUrl: string; + private chainId: string; + constructor(@inject('RPC_URL') rpcUrl: string, @inject('CHAIN_ID') chainId: string) { + this.rpcUrl = rpcUrl; + this.chainId = chainId; + } + + private account: Account = container.resolve(Account); + private rpcQueryClient = container.resolve(RpcQueryClient); public async getNodeInfo() { - const rpcClient = await this.getRpcClient(); + const rpcClient = await this.rpcQueryClient.getRpcClient(); const rpc = new tdServiceClientImpl(rpcClient); return await rpc.GetNodeInfo(); } public async getLatestBlock(): Promise { - const rpcClient = await this.getRpcClient(); + const rpcClient = await this.rpcQueryClient.getRpcClient(); const rpc = new tdServiceClientImpl(rpcClient); return await rpc.GetLatestBlock(); } @@ -157,14 +119,14 @@ export class Basic implements IBasic { } public async getSyncing(): Promise { - const rpcClient = await this.getRpcClient(); + const rpcClient = await this.rpcQueryClient.getRpcClient(); const rpc = new tdServiceClientImpl(rpcClient); const syncing = await rpc.GetSyncing(); return syncing.syncing; } public async getBlockByHeight(height: number): Promise { - const rpcClient = await this.getRpcClient(); + const rpcClient = await this.rpcQueryClient.getRpcClient(); const rpc = new tdServiceClientImpl(rpcClient); return await rpc.GetBlockByHeight({ height: Long.fromInt(height), @@ -172,29 +134,50 @@ export class Basic implements IBasic { } public async GetLatestValidatorSet(request: GetLatestValidatorSetRequest): Promise { - const rpcClient = await this.getRpcClient(); + const rpcClient = await this.rpcQueryClient.getRpcClient(); const rpc = new tdServiceClientImpl(rpcClient); const validatorSet = await rpc.GetLatestValidatorSet(request); return validatorSet.blockHeight.toNumber(); } - private rpcClient: ProtobufRpcClient | null = null; - protected async getRpcClient() { - if (!this.rpcClient) { - this.rpcClient = await makeRpcClient(this.rpcUrl); - } - return this.rpcClient; + public async tx( + typeUrl: string, + address: string, + MsgSDKTypeEIP712: object, + MsgSDK: object, + msgBytes: Uint8Array, + ) { + const accountInfo = await this.account.getAccount(address); + const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); + + return { + simulate: async (opts: SimulateOptions) => { + return await this.simulateRawTx(bodyBytes, accountInfo, opts); + }, + broadcast: async (opts: BroadcastOptions) => { + const rawTxBytes = await this.getRawTxBytes( + typeUrl, + MsgSDKTypeEIP712, + MsgSDK, + bodyBytes, + accountInfo, + opts, + ); + + return await this.broadcastRawTx(rawTxBytes); + }, + }; } public async simulateRawTx( txBodyBytes: Uint8Array, accountInfo: BaseAccount, - txOption: Pick, + options: SimulateOptions, ) { - const rpcClient = await this.getRpcClient(); + const rpcClient = await this.rpcQueryClient.getRpcClient(); const rpc = new ServiceClientImpl(rpcClient); - const { denom } = txOption; + const { denom } = options; const authInfoBytes = this.getAuthInfoBytes({ sequence: accountInfo.sequence + '', denom, @@ -213,34 +196,23 @@ export class Basic implements IBasic { }); const res = await rpc.Simulate(request); - return getGasFeeBySimulate(res, txOption.denom); + return getGasFeeBySimulate(res, denom); } public async broadcastRawTx(txRawBytes: Uint8Array) { - const client = await StargateClient.connect(this.rpcUrl); + const tmClient = await Tendermint37Client.connect(this.rpcUrl); + const client = await StargateClient.create(tmClient); return await client.broadcastTx(txRawBytes); } - private queryClient: - | (QueryClient & BankExtension & TxExtension & AuthExtension & AuthzExtension) - | null = null; - - protected async getQueryClient() { - if (!this.queryClient) { - const [client] = await makeClientWithExtension(this.rpcUrl); - this.queryClient = client; - } - return this.queryClient; - } - private getAuthInfoBytes( - params: Pick & { + params: Pick & { pubKey: BaseAccount['pubKey']; sequence: string; }, ) { - const { pubKey, denom, sequence, gasLimit, gasPrice } = params; + const { pubKey, denom = DEFAULT_DENOM, sequence, gasLimit, gasPrice } = params; if (!pubKey) throw new Error('pubKey is required'); const feeAmount: Coin[] = [ @@ -269,9 +241,15 @@ export class Basic implements IBasic { msgEIP712: object, bodyBytes: Uint8Array, accountInfo: BaseAccount, - txOption: Omit, + txOption: BroadcastOptions, ): Promise { - const { denom, gasLimit, gasPrice } = txOption; + const { + denom, + gasLimit, + gasPrice, + privateKey, + signTypedDataCallback = defaultSignTypedData, + } = txOption; const eip712 = this.getEIP712Struct( typeUrl, msgEIP712Structor, @@ -282,7 +260,29 @@ export class Basic implements IBasic { txOption, ); - const { signature, pubKey } = await this.signTx(accountInfo.address, JSON.stringify(eip712)); + let signature, + pubKey = undefined; + + if (privateKey) { + pubKey = getPubKeyByPriKey(privateKey); + signature = signEIP712Data( + this.chainId, + accountInfo.accountNumber + '', + accountInfo.sequence + '', + typeUrl, + msgEIP712Structor, + msgEIP712, + txOption, + ); + } else { + signature = await signTypedDataCallback(accountInfo.address, JSON.stringify(eip712)); + const messageHash = eip712Hash(JSON.stringify(eip712)); + const pk = recoverPk({ + signature, + messageHash, + }); + pubKey = makeCosmsPubKey(pk); + } const authInfoBytes = this.getAuthInfoBytes({ denom, @@ -321,9 +321,9 @@ export class Basic implements IBasic { sequence: string, chainId: string, msg: object, - txOption: Omit, + txOption: BroadcastOptions, ) { - const { gasLimit, gasPrice, denom, payer } = txOption; + const { gasLimit, gasPrice, denom = DEFAULT_DENOM, payer } = txOption; const fee = generateFee( String(BigInt(gasLimit) * BigInt(gasPrice)), @@ -337,28 +337,4 @@ export class Basic implements IBasic { const messages = generateMessage(accountNumber, sequence, chainId, '', fee, wrapperMsg, '0'); return createEIP712(wrapperTypes, chainId, messages); } - - protected async signTx(addr: string, message: string) { - // TODO: provider - - /* eslint-disable @typescript-eslint/no-explicit-any */ - const signature = await (window as any).ethereum?.request({ - method: 'eth_signTypedData_v4', - params: [addr, message], - }); - - const messageHash = TypedDataUtils.eip712Hash(JSON.parse(message), SignTypedDataVersion.V4); - - const pk = recoverPk({ - signature, - messageHash, - }); - const pubKey = makeCosmsPubKey(pk); - - return { - signature, - messageHash, - pubKey, - }; - } } diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index 74a8f914..13924e9e 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -1,15 +1,20 @@ -import { MsgCreateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/createBucket'; -import { MsgDeleteBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/deleteBucket'; +import { + MsgCreateBucketSDKTypeEIP712, + MsgCreateBucketTypeUrl, +} from '@/messages/greenfield/storage/MsgCreateBucket'; +import { + MsgDeleteBucketSDKTypeEIP712, + MsgDeleteBucketTypeUrl, +} from '@/messages/greenfield/storage/MsgDeleteBucket'; +import { MsgDeletePolicySDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeletePolicy'; +import { MsgPutPolicySDKTypeEIP712 } from '@/messages/greenfield/storage/MsgPutPolicy'; +import { MsgUpdateBucketInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; import { decodeObjectFromHexString, encodeObjectToHexString } from '@/utils/encoding'; -import { METHOD_GET, MOCK_SIGNATURE, NORMAL_ERROR_CODE, fetchWithTimeout } from '@/utils/http'; +import { fetchWithTimeout, METHOD_GET, MOCK_SIGNATURE, NORMAL_ERROR_CODE } from '@/utils/http'; import { generateUrlByBucketName, isValidAddress, isValidBucketName, isValidUrl } from '@/utils/s3'; -import { MsgDeletePolicySDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/storage/MsgDeletePolicySDKTypeEIP712'; -import { MsgPutPolicySDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/storage/MsgPutPolicySDKTypeEIP712'; -import { MsgUpdateBucketInfoSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/storage/MsgUpdateBucketInfoSDKTypeEIP712'; import { ActionType } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; import { visibilityTypeFromJSON } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; import { - QueryClientImpl as BucketQueryClientImpl, QueryHeadBucketResponse, QueryVerifyPermissionResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/query'; @@ -22,17 +27,19 @@ import { } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import Long from 'long'; +import { container, delay, inject, singleton } from 'tsyringe'; +import { TxResponse } from '..'; import { BucketProps, GetObjectPropsType, + getUserBucketsPropsType, ICreateBucketMsgType, IGetCreateBucketApproval, IObjectResultType, IQuotaProps, - getUserBucketsPropsType, } from '../types/storage'; -import { Account } from './account'; -import { ITxOption, SimulateOrBroad, SimulateOrBroadResponse } from '..'; +import { Basic } from './basic'; +import { RpcQueryClient } from './queryclient'; export interface IBucket { /** @@ -43,14 +50,7 @@ export interface IBucket { /** * get approval of creating bucket and send createBucket txn to greenfield chain */ - createBucket( - params: IGetCreateBucketApproval, - txOption: T, - ): Promise>; - createBucket( - params: IGetCreateBucketApproval, - txOption: ITxOption, - ): Promise; + createBucket(params: IGetCreateBucketApproval): Promise; /** * query the bucketInfo on chain, return the bucket info if exists @@ -80,47 +80,20 @@ export interface IBucket { */ getBucketReadQuota(configParam: GetObjectPropsType): Promise>; - deleteBucket(msg: MsgDeleteBucket, txOption: T): Promise>; - deleteBucket(msg: MsgDeleteBucket, txOption: ITxOption): Promise; + deleteBucket(msg: MsgDeleteBucket): Promise; - updateBucketInfo( - msg: MsgUpdateBucketInfo, - txOption: T, - ): Promise>; - updateBucketInfo(msg: MsgUpdateBucketInfo, txOption: ITxOption): Promise; + updateBucketInfo(msg: MsgUpdateBucketInfo): Promise; - putBucketPolicy(msg: MsgPutPolicy, txOption: T): Promise>; - putBucketPolicy(msg: MsgPutPolicy, txOption: ITxOption): Promise; + putBucketPolicy(msg: MsgPutPolicy): Promise; - deleteBucketPolicy( - msg: MsgDeletePolicy, - txOption: T, - ): Promise>; - deleteBucketPolicy(msg: MsgDeletePolicy, txOption: ITxOption): Promise; + deleteBucketPolicy(msg: MsgDeletePolicy): Promise; } -export class Bucket extends Account implements IBucket { - // private sp: ISp = new Sp(this.rpcUrl, this.chainId); - /* private async getRandomSpInfo(): Promise { - const spList = await this.sp.getStorageProviders(); - if (!spList || spList.length === 0) { - return {} as ISpInfo; - } +@singleton() +export class Bucket implements IBucket { + constructor(@inject(delay(() => Basic)) private basic: Basic) {} - const randomIndex = Math.floor(Math.random() * spList.length); - const selectSp = spList[randomIndex]; - const secondarySpAddresses = spList - .filter((_, index) => index !== randomIndex) - .map((sp) => sp.operatorAddress); - const { endpoint, operatorAddress, sealAddress } = selectSp; - - return { - endpoint, - primarySpAddress: operatorAddress, - sealAddress, - secondarySpAddresses, - }; - } */ + private queryClient = container.resolve(RpcQueryClient); public async getCreateBucketApproval({ bucketName, @@ -208,23 +181,39 @@ export class Bucket extends Account implements IBucket { } } - public async createBucket(params: IGetCreateBucketApproval, txOption: ITxOption) { + private async createBucketTx(msg: MsgCreateBucket, signedMsg: ICreateBucketMsgType) { + return await this.basic.tx( + MsgCreateBucketTypeUrl, + msg.creator, + MsgCreateBucketSDKTypeEIP712, + { + ...signedMsg, + type: MsgCreateBucketTypeUrl, + charged_read_quota: signedMsg.charged_read_quota, + visibility: signedMsg.visibility, + primary_sp_approval: { + expired_height: signedMsg.primary_sp_approval.expired_height, + sig: signedMsg.primary_sp_approval.sig, + }, + }, + MsgCreateBucket.encode(msg).finish(), + ); + } + + public async createBucket(params: IGetCreateBucketApproval) { const { signedMsg } = await this.getCreateBucketApproval(params); if (!signedMsg) { throw new Error('Get create bucket approval error'); } - const sig = signedMsg.primary_sp_approval.sig; - const expiredHeight = signedMsg.primary_sp_approval.expired_height; - const msg: MsgCreateBucket = { bucketName: signedMsg.bucket_name, creator: signedMsg.creator, visibility: visibilityTypeFromJSON(signedMsg.visibility), primarySpAddress: signedMsg.primary_sp_address, primarySpApproval: { - expiredHeight: Long.fromString(expiredHeight), - sig: bytesFromBase64(sig), + expiredHeight: Long.fromString(signedMsg.primary_sp_approval.expired_height), + sig: bytesFromBase64(signedMsg.primary_sp_approval.sig), }, chargedReadQuota: signedMsg.charged_read_quota ? Long.fromString('0') @@ -232,93 +221,35 @@ export class Bucket extends Account implements IBucket { paymentAddress: '', }; - const typeUrl = '/bnbchain.greenfield.storage.MsgCreateBucket'; - const msgBytes = MsgCreateBucket.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.creator); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, - MsgCreateBucketSDKTypeEIP712, - { - ...signedMsg, - type: typeUrl, - charged_read_quota: signedMsg.charged_read_quota, - visibility: signedMsg.visibility, - primary_sp_approval: { - expired_height: expiredHeight, - sig, - }, - }, - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, - ); - - return await this.broadcastRawTx(rawTxBytes); + return await this.createBucketTx(msg, signedMsg); } - public async deleteBucket(msg: MsgDeleteBucket, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.storage.MsgDeleteBucket'; - const msgBytes = MsgDeleteBucket.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.operator); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async deleteBucket(msg: MsgDeleteBucket) { + return await this.basic.tx( + MsgDeleteBucketTypeUrl, + msg.operator, MsgDeleteBucketSDKTypeEIP712, MsgDeleteBucket.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgDeleteBucket.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } public async headBucket(bucketName: string) { - const rpcClient = await this.getRpcClient(); - const rpc = new BucketQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getBucketQueryClient(); return await rpc.HeadBucket({ bucketName, }); } public async headBucketById(bucketId: string) { - const rpcClient = await this.getRpcClient(); - const rpc = new BucketQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getBucketQueryClient(); return await rpc.HeadBucketById({ bucketId, }); } public async getVerifyPermission(bucketName: string, operator: string, actionType: ActionType) { - const rpcClient = await this.getRpcClient(); - const rpc = new BucketQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getBucketQueryClient(); return rpc.VerifyPermission({ bucketName, operator, @@ -438,93 +369,35 @@ export class Bucket extends Account implements IBucket { } } - public async updateBucketInfo(msg: MsgUpdateBucketInfo, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.storage.MsgUpdateBucketInfo'; - const msgBytes = MsgUpdateBucketInfo.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.operator); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async updateBucketInfo(msg: MsgUpdateBucketInfo) { + return await this.basic.tx( + '/greenfield.storage.MsgUpdateBucketInfo', + msg.operator, MsgUpdateBucketInfoSDKTypeEIP712, MsgUpdateBucketInfo.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgUpdateBucketInfo.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } - public async putBucketPolicy(msg: MsgPutPolicy, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.storage.MsgPutPolicy'; - const msgBytes = MsgPutPolicy.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.operator); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async putBucketPolicy(msg: MsgPutPolicy) { + return await this.basic.tx( + '/greenfield.storage.MsgPutPolicy', + msg.operator, MsgPutPolicySDKTypeEIP712, MsgPutPolicy.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgPutPolicy.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } - public async deleteBucketPolicy(msg: MsgDeletePolicy, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.storage.MsgDeletePolicy'; - const msgBytes = MsgDeletePolicy.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.operator); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } + public async deleteBucketPolicy(msg: MsgDeletePolicy) { + const typeUrl = '/greenfield.storage.MsgDeletePolicy'; - const rawTxBytes = await this.getRawTxBytes( + return await this.basic.tx( typeUrl, + msg.operator, MsgDeletePolicySDKTypeEIP712, MsgDeletePolicy.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgDeletePolicy.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } } diff --git a/packages/chain-sdk/src/api/challenge.ts b/packages/chain-sdk/src/api/challenge.ts index 340a3b63..4cb32cce 100644 --- a/packages/chain-sdk/src/api/challenge.ts +++ b/packages/chain-sdk/src/api/challenge.ts @@ -1,13 +1,14 @@ -import { MsgAttestSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/challenge/MsgAttestSDKTypeEIP712'; -import { MsgSubmitSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/challenge/MsgSubmitSDKTypeEIP712'; +import { MsgAttestSDKTypeEIP712 } from '@/messages/greenfield/chanenge/MsgAttest'; +import { MsgSubmitSDKTypeEIP712 } from '@/messages/greenfield/chanenge/MsgSubmit'; import { - QueryClientImpl as ChallengeQueryClientImpl, QueryInturnAttestationSubmitterResponse, QueryLatestAttestedChallengesResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/query'; import { MsgAttest, MsgSubmit } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/tx'; -import { Account } from './account'; -import { ITxOption, SimulateOrBroad, SimulateOrBroadResponse } from '..'; +import { container, delay, inject, singleton } from 'tsyringe'; +import { TxResponse } from '..'; +import { Basic } from './basic'; +import { RpcQueryClient } from './queryclient'; export interface IChallenge { /** @@ -18,16 +19,7 @@ export interface IChallenge { /** * challenges the service provider data integrity, used by off-chain service greenfield-challenger. */ - submitChallenge( - address: string, - msg: MsgSubmit, - txOption: T, - ): Promise>; - submitChallenge( - address: string, - msg: MsgSubmit, - txOption: ITxOption, - ): Promise; + submitChallenge(address: string, msg: MsgSubmit): Promise; /** * Attest handles user's request for attesting a challenge. @@ -35,92 +27,45 @@ export interface IChallenge { If the challenge is valid, the related storage provider will be slashed. For heartbeat attestation, the challenge is invalid and the storage provider will not be slashed. */ - attestChallenge( - address: string, - msg: MsgAttest, - txOption: T, - ): Promise>; - attestChallenge( - address: string, - msg: MsgAttest, - txOption: ITxOption, - ): Promise; + attestChallenge(address: string, msg: MsgAttest): Promise; latestAttestedChallenges(): Promise; inturnAttestationSubmitter(): Promise; } -export class Challenge extends Account implements IChallenge { - public async submitChallenge(address: string, msg: MsgSubmit, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.challenge.MsgSubmit'; - const msgBytes = MsgSubmit.encode(msg).finish(); - const accountInfo = await this.getAccount(address); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); +@singleton() +export class Challenge implements IChallenge { + private queryClient = container.resolve(RpcQueryClient); + constructor(@inject(delay(() => Basic)) private basic: Basic) {} - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async submitChallenge(address: string, msg: MsgSubmit) { + return await this.basic.tx( + '/greenfield.challenge.MsgSubmit', + address, MsgSubmitSDKTypeEIP712, MsgSubmit.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgSubmit.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } - public async attestChallenge(address: string, msg: MsgAttest, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.challenge.MsgAttest'; - const msgBytes = MsgAttest.encode(msg).finish(); - const accountInfo = await this.getAccount(address); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async attestChallenge(address: string, msg: MsgAttest) { + return await this.basic.tx( + '/greenfield.challenge.MsgAttest', + address, MsgAttestSDKTypeEIP712, MsgAttest.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgAttest.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } public async latestAttestedChallenges() { - const rpcClient = await this.getRpcClient(); - const rpc = new ChallengeQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getChallengeQueryClient(); return await rpc.LatestAttestedChallenges(); } public async inturnAttestationSubmitter() { - const rpcClient = await this.getRpcClient(); - const rpc = new ChallengeQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getChallengeQueryClient(); return await rpc.InturnAttestationSubmitter(); } } diff --git a/packages/chain-sdk/src/api/crosschain.ts b/packages/chain-sdk/src/api/crosschain.ts index b0af09f2..744bc53b 100644 --- a/packages/chain-sdk/src/api/crosschain.ts +++ b/packages/chain-sdk/src/api/crosschain.ts @@ -1,24 +1,19 @@ +import { MsgClaimSDKTypeEIP712 } from '@/messages/cosmos/oracle/MsgClaim'; import { - QueryClientImpl as BridgeQueryClientImpl, - QueryParamsResponse, -} from '@bnb-chain/greenfield-cosmos-types/greenfield/bridge/query'; - -import { MsgTransferOutSDKTypeEIP712 } from '@/messages/greenfield/bridge/transferOut'; + MsgTransferOutSDKTypeEIP712, + MsgTransferOutTypeUrl, +} from '@/messages/greenfield/bridge/MsgTransferOut'; +import { MsgMirrorBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMirrorBucket'; +import { MsgMirrorGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMirrorGroup'; +import { MsgMirrorObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMirrorObject'; import { - QueryClientImpl as CrosschainQueryClientImpl, QueryCrossChainPackageResponse, QueryReceiveSequenceResponse, QuerySendSequenceResponse, } from '@bnb-chain/greenfield-cosmos-types/cosmos/crosschain/v1/query'; -import { - QueryClientImpl as OracleQueryClientImpl, - QueryInturnRelayerResponse, -} from '@bnb-chain/greenfield-cosmos-types/cosmos/oracle/v1/query'; +import { QueryInturnRelayerResponse } from '@bnb-chain/greenfield-cosmos-types/cosmos/oracle/v1/query'; import { MsgClaim } from '@bnb-chain/greenfield-cosmos-types/cosmos/oracle/v1/tx'; -import { MsgClaimSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/cosmos/oracle/v1/MsgClaimSDKTypeEIP712'; -import { MsgMirrorBucketSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/storage/MsgMirrorBucketSDKTypeEIP712'; -import { MsgMirrorGroupSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/storage/MsgMirrorGroupSDKTypeEIP712'; -import { MsgMirrorObjectSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/storage/MsgMirrorObjectSDKTypeEIP712'; +import { QueryParamsResponse } from '@bnb-chain/greenfield-cosmos-types/greenfield/bridge/query'; import { MsgTransferOut } from '@bnb-chain/greenfield-cosmos-types/greenfield/bridge/tx'; import { MsgMirrorBucket, @@ -26,21 +21,21 @@ import { MsgMirrorObject, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import Long from 'long'; -import { ITxOption, SimulateOrBroad, SimulateOrBroadResponse } from '..'; -import { Account } from './account'; +import { container, singleton } from 'tsyringe'; +import { TxResponse } from '..'; +import { Basic } from './basic'; +import { RpcQueryClient } from './queryclient'; export interface ICrossChain { /** * makes a transfer from Greenfield to BSC */ - transferOut(msg: MsgTransferOut, txOption: T): Promise>; - transferOut(msg: MsgTransferOut, txOption: ITxOption): Promise; + transferOut(msg: MsgTransferOut): Promise; /** * cross-chain packages from BSC to Greenfield, used by relayers which run by validators */ - claims(msg: MsgClaim, txOption: T): Promise>; - claims(msg: MsgClaim, txOption: ITxOption): Promise; + claims(msg: MsgClaim): Promise; /** * gets the next send sequence for a channel @@ -65,209 +60,105 @@ export interface ICrossChain { /** * mirrors the group to BSC as NFT */ - mirrorGroup(msg: MsgMirrorGroup, txOption: T): Promise>; - mirrorGroup(msg: MsgMirrorGroup, txOption: ITxOption): Promise; + mirrorGroup(msg: MsgMirrorGroup): Promise; /** * mirrors the bucket to BSC as NFT */ - mirrorBucket(msg: MsgMirrorBucket, txOption: T): Promise>; - mirrorBucket(msg: MsgMirrorBucket, txOption: ITxOption): Promise; + mirrorBucket(msg: MsgMirrorBucket): Promise; /** * mirrors the object to BSC as NFT */ - mirrorObject(msg: MsgMirrorObject, txOption: T): Promise>; - mirrorObject(msg: MsgMirrorObject, txOption: ITxOption): Promise; + mirrorObject(msg: MsgMirrorObject): Promise; getParams(): Promise; } -export class CrossChain extends Account implements ICrossChain { - public async transferOut(msg: MsgTransferOut, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.bridge.MsgTransferOut'; - const msgBytes = MsgTransferOut.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.from); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); +@singleton() +export class CrossChain implements ICrossChain { + private basic: Basic = container.resolve(Basic); + private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async transferOut(msg: MsgTransferOut) { + return await this.basic.tx( + MsgTransferOutTypeUrl, + msg.from, MsgTransferOutSDKTypeEIP712, MsgTransferOut.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgTransferOut.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } - public async claims(msg: MsgClaim, txOption: ITxOption) { - const typeUrl = '/cosmos.oracle.v1.MsgClaim'; - const msgBytes = MsgClaim.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.fromAddress); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async claims(msg: MsgClaim) { + return await this.basic.tx( + '/cosmos.oracle.v1.MsgClaim', + msg.fromAddress, MsgClaimSDKTypeEIP712, MsgClaim.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgClaim.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } public async getChannelSendSequence(channelId: number) { - const rpcClient = await this.getRpcClient(); - const rpc = new CrosschainQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getCrosschainQueryClient(); return await rpc.SendSequence({ channelId, }); } public async getChannelReceiveSequence(channelId: number) { - const rpcClient = await this.getRpcClient(); - const rpc = new CrosschainQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getCrosschainQueryClient(); return await rpc.ReceiveSequence({ channelId, }); } public async getInturnRelayer() { - const rpcClient = await this.getRpcClient(); - const rpc = new OracleQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getOracleQueryClient(); return await rpc.InturnRelayer(); } public async getCrosschainPackage(channelId: number, sequence: number) { - const rpcClient = await this.getRpcClient(); - const rpc = new CrosschainQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getCrosschainQueryClient(); return await rpc.CrossChainPackage({ channelId, sequence: Long.fromNumber(sequence), }); } - public async mirrorGroup(msg: MsgMirrorGroup, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.storage.MsgMirrorGroup'; - const msgBytes = MsgMirrorGroup.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.operator); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async mirrorGroup(msg: MsgMirrorGroup) { + return await this.basic.tx( + '/greenfield.storage.MsgMirrorGroup', + msg.operator, MsgMirrorGroupSDKTypeEIP712, MsgMirrorGroup.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgMirrorGroup.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } - public async mirrorBucket(msg: MsgMirrorBucket, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.storage.MsgMirrorBucket'; - const msgBytes = MsgMirrorBucket.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.operator); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async mirrorBucket(msg: MsgMirrorBucket) { + return await this.basic.tx( + '/greenfield.storage.MsgMirrorBucket', + msg.operator, MsgMirrorBucketSDKTypeEIP712, MsgMirrorBucket.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgMirrorBucket.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } - public async mirrorObject(msg: MsgMirrorObject, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.storage.MsgMirrorObject'; - const msgBytes = MsgMirrorObject.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.operator); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async mirrorObject(msg: MsgMirrorObject) { + return await this.basic.tx( + '/greenfield.storage.MsgMirrorObject', + msg.operator, MsgMirrorObjectSDKTypeEIP712, MsgMirrorObject.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgMirrorObject.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } async getParams() { - const rpcClient = await this.getRpcClient(); - const rpc = new BridgeQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getBridgeQueryClient(); return rpc.Params(); } } diff --git a/packages/chain-sdk/src/api/distribution.ts b/packages/chain-sdk/src/api/distribution.ts index 3a0c74c2..1cab4edb 100644 --- a/packages/chain-sdk/src/api/distribution.ts +++ b/packages/chain-sdk/src/api/distribution.ts @@ -1,12 +1,13 @@ import { - MsgClientImpl, MsgFundCommunityPoolResponse, MsgSetWithdrawAddressResponse, MsgWithdrawDelegatorRewardResponse, MsgWithdrawValidatorCommissionResponse, } from '@bnb-chain/greenfield-cosmos-types/cosmos/distribution/v1beta1/tx'; import { Coin } from '@cosmjs/proto-signing'; -import { Account } from './account'; +import { container } from 'tsyringe'; +import { Basic } from './basic'; +import { RpcQueryClient } from './queryclient'; export interface IDistribution { /** * sets the withdrawal address for a delegator address @@ -40,10 +41,12 @@ export interface IDistribution { ): Promise; } -export class Distribution extends Account implements IDistribution { +export class Distribution implements IDistribution { + private basic: Basic = container.resolve(Basic); + private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); + public async setWithdrawAddress(withdrawAddress: string, delegatorAddress: string) { - const rpcCient = await this.getRpcClient(); - const rpc = new MsgClientImpl(rpcCient); + const rpc = await this.queryClient.getMsgClient(); return await rpc.SetWithdrawAddress({ withdrawAddress, delegatorAddress, @@ -51,16 +54,14 @@ export class Distribution extends Account implements IDistribution { } public async withdrawValidatorCommission(validatorAddress: string) { - const rpcCient = await this.getRpcClient(); - const rpc = new MsgClientImpl(rpcCient); + const rpc = await this.queryClient.getMsgClient(); return rpc.WithdrawValidatorCommission({ validatorAddress, }); } public async withdrawDelegatorReward(validatorAddress: string, delegatorAddress: string) { - const rpcCient = await this.getRpcClient(); - const rpc = new MsgClientImpl(rpcCient); + const rpc = await this.queryClient.getMsgClient(); return rpc.WithdrawDelegatorReward({ delegatorAddress, validatorAddress, @@ -68,8 +69,7 @@ export class Distribution extends Account implements IDistribution { } public async fundCommunityPoolundComm(amount: Coin[], depositor: string) { - const rpcCient = await this.getRpcClient(); - const rpc = new MsgClientImpl(rpcCient); + const rpc = await this.queryClient.getMsgClient(); return rpc.FundCommunityPool({ amount, depositor, diff --git a/packages/chain-sdk/src/api/feegrant.ts b/packages/chain-sdk/src/api/feegrant.ts new file mode 100644 index 00000000..0814c65c --- /dev/null +++ b/packages/chain-sdk/src/api/feegrant.ts @@ -0,0 +1,68 @@ +import { + MsgGrantAllowanceSDKTypeEIP712, + MsgGrantAllowanceTypeUrl, +} from '@/messages/feegrant/MsgGrantAllowance'; +import { + MsgRevokeAllowanceSDKTypeEIP712, + MsgRevokeAllowanceTypeUrl, +} from '@/messages/feegrant/MsgRevokeAllowance'; +import { + QueryAllowanceRequest, + QueryAllowanceResponse, + QueryAllowancesRequest, + QueryAllowancesResponse, +} from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/query'; +import { + MsgGrantAllowance, + MsgRevokeAllowance, +} from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/tx'; +import { container, singleton } from 'tsyringe'; +import { TxResponse } from '..'; +import { Basic } from './basic'; +import { RpcQueryClient } from './queryclient'; + +export interface IFeeGrant { + grantAllowance(msg: MsgGrantAllowance): Promise; + + revokeAllowance(msg: MsgRevokeAllowance): Promise; + + getAllowence(request: QueryAllowanceRequest): Promise; + + getAllowences(request: QueryAllowancesRequest): Promise; +} + +@singleton() +export class FeeGrant implements IFeeGrant { + private basic: Basic = container.resolve(Basic); + private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); + + public async grantAllowance(msg: MsgGrantAllowance) { + return await this.basic.tx( + MsgGrantAllowanceTypeUrl, + msg.granter, + MsgGrantAllowanceSDKTypeEIP712, + MsgGrantAllowance.toSDK(msg), + MsgGrantAllowance.encode(msg).finish(), + ); + } + + public async revokeAllowance(msg: MsgRevokeAllowance) { + return await this.basic.tx( + MsgRevokeAllowanceTypeUrl, + msg.granter, + MsgRevokeAllowanceSDKTypeEIP712, + MsgRevokeAllowance.toSDK(msg), + MsgRevokeAllowance.encode(msg).finish(), + ); + } + + public async getAllowence(request: QueryAllowanceRequest) { + const rpc = await this.queryClient.getFeeGrantQueryClient(); + return await rpc.Allowance(request); + } + + public async getAllowences(request: QueryAllowancesRequest) { + const rpc = await this.queryClient.getFeeGrantQueryClient(); + return await rpc.Allowances(request); + } +} diff --git a/packages/chain-sdk/src/api/group.ts b/packages/chain-sdk/src/api/group.ts index 688e4058..b06c8fc8 100644 --- a/packages/chain-sdk/src/api/group.ts +++ b/packages/chain-sdk/src/api/group.ts @@ -1,13 +1,12 @@ -import { MsgCreateGroupSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/storage/MsgCreateGroupSDKTypeEIP712'; -import { MsgDeleteGroupSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/storage/MsgDeleteGroupSDKTypeEIP712'; -import { MsgLeaveGroupSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/storage/MsgLeaveGroupSDKTypeEIP712'; -import { MsgUpdateGroupMemberSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/storage/MsgUpdateGroupMemberSDKTypeEIP712'; +import { MsgCreateGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCreateGroup'; +import { MsgDeleteGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteGroup'; +import { MsgLeaveGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgLeaveGroup'; +import { MsgUpdateGroupMemberSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateGroupMember'; import { QueryHeadGroupMemberResponse, QueryHeadGroupResponse, QueryPolicyForGroupRequest, QueryPolicyForGroupResponse, - QueryClientImpl as StorageQueryClientImpl, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/query'; import { MsgCreateGroup, @@ -15,47 +14,31 @@ import { MsgLeaveGroup, MsgUpdateGroupMember, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { ITxOption, SimulateOrBroad, SimulateOrBroadResponse } from '..'; -import { Account } from './account'; +import { container, singleton } from 'tsyringe'; +import { TxResponse } from '..'; +import { Basic } from './basic'; +import { RpcQueryClient } from './queryclient'; export interface IGroup { /** * create a new group on greenfield chain the group members can be initialized or not */ - createGroup(msg: MsgCreateGroup, txOption: T): Promise>; - createGroup(msg: MsgCreateGroup, txOption: ITxOption): Promise; + createGroup(msg: MsgCreateGroup): Promise; /** * send DeleteGroup txn to greenfield chain and return txn hash */ - deleteGroup(msg: MsgDeleteGroup, txOption: T): Promise>; - deleteGroup(msg: MsgDeleteGroup, txOption: ITxOption): Promise; + deleteGroup(msg: MsgDeleteGroup): Promise; /** * support adding or removing members from the group and return the txn hash */ - updateGroupMember( - msg: MsgUpdateGroupMember, - txOption: T, - ): Promise>; - updateGroupMember( - msg: MsgUpdateGroupMember, - txOption: ITxOption, - ): Promise; + updateGroupMember(msg: MsgUpdateGroupMember): Promise; /** * make the member leave the specific group */ - leaveGroup( - address: string, - msg: MsgLeaveGroup, - txOption: T, - ): Promise>; - leaveGroup( - address: string, - msg: MsgLeaveGroup, - txOption: ITxOption, - ): Promise; + leaveGroup(address: string, msg: MsgLeaveGroup): Promise; /** * query the groupInfo on chain, return the group info if exists @@ -78,68 +61,32 @@ export interface IGroup { getPolicyOfGroup(request: QueryPolicyForGroupRequest): Promise; } -export class Group extends Account implements IGroup { - public async createGroup(msg: MsgCreateGroup, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.storage.MsgCreateGroup'; - const msgBytes = MsgCreateGroup.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.creator); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } +@singleton() +export class Group implements IGroup { + private basic: Basic = container.resolve(Basic); + private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async createGroup(msg: MsgCreateGroup) { + return await this.basic.tx( + '/greenfield.storage.MsgCreateGroup', + msg.creator, MsgCreateGroupSDKTypeEIP712, MsgCreateGroup.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgCreateGroup.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } - public async deleteGroup(msg: MsgDeleteGroup, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.storage.MsgDeleteGroup'; - const msgBytes = MsgDeleteGroup.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.operator); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async deleteGroup(msg: MsgDeleteGroup) { + return await this.basic.tx( + '/greenfield.storage.MsgCreateGroup', + msg.operator, MsgDeleteGroupSDKTypeEIP712, MsgDeleteGroup.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgDeleteGroup.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } - public async updateGroupMember(msg: MsgUpdateGroupMember, txOption: ITxOption) { + public async updateGroupMember(msg: MsgUpdateGroupMember) { if (msg.groupName === '') { throw new Error('group name is empty'); } @@ -148,68 +95,27 @@ export class Group extends Account implements IGroup { throw new Error('no update member'); } - const typeUrl = '/bnbchain.greenfield.storage.MsgUpdateGroupMember'; - const msgBytes = MsgUpdateGroupMember.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.operator); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + return await this.basic.tx( + '/greenfield.storage.MsgUpdateGroupMember', + msg.operator, MsgUpdateGroupMemberSDKTypeEIP712, MsgUpdateGroupMember.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgUpdateGroupMember.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } - public async leaveGroup(address: string, msg: MsgLeaveGroup, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.storage.MsgLeaveGroup'; - const msgBytes = MsgLeaveGroup.encode(msg).finish(); - const accountInfo = await this.getAccount(address); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async leaveGroup(address: string, msg: MsgLeaveGroup) { + return await this.basic.tx( + '/greenfield.storage.MsgLeaveGroup', + address, MsgLeaveGroupSDKTypeEIP712, MsgLeaveGroup.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgLeaveGroup.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } public async headGroup(groupName: string, groupOwner: string) { - const rpcClient = await this.getRpcClient(); - const rpc = new StorageQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.HeadGroup({ groupName, groupOwner, @@ -217,8 +123,7 @@ export class Group extends Account implements IGroup { } public async headGroupMember(groupName: string, groupOwner: string, member: string) { - const rpcClient = await this.getRpcClient(); - const rpc = new StorageQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.HeadGroupMember({ groupName, groupOwner, @@ -227,8 +132,7 @@ export class Group extends Account implements IGroup { } public async getPolicyOfGroup(request: QueryPolicyForGroupRequest) { - const rpcClient = await this.getRpcClient(); - const rpc = new StorageQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.QueryPolicyForGroup(request); } } diff --git a/packages/chain-sdk/src/api/object.ts b/packages/chain-sdk/src/api/objectt.ts similarity index 76% rename from packages/chain-sdk/src/api/object.ts rename to packages/chain-sdk/src/api/objectt.ts index d8b5158f..bd905c3c 100644 --- a/packages/chain-sdk/src/api/object.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -1,5 +1,15 @@ -import { MsgCancelCreateObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/cancelCreateObject'; -import { MsgCreateObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/createObject'; +import { + MsgCancelCreateObjectSDKTypeEIP712, + MsgCancelCreateObjectTypeUrl, +} from '@/messages/greenfield/storage/MsgCancelCreateObject'; +import { + MsgCreateObjectSDKTypeEIP712, + MsgCreateObjectTypeUrl, +} from '@/messages/greenfield/storage/MsgCreateObject'; +import { + MsgDeleteObjectSDKTypeEIP712, + MsgDeleteObjectTypeUrl, +} from '@/messages/greenfield/storage/MsgDeleteObject'; import { METHOD_GET, METHOD_PUT, @@ -22,20 +32,17 @@ import { } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { FileHandler } from '@bnb-chain/greenfiled-file-handle'; -import { DeliverTxResponse } from '@cosmjs/stargate'; +import { container, singleton } from 'tsyringe'; import { ICreateObjectMsgType, IGetCreateObjectApproval, IGetObjectPropsType, - IGetObjectStaus, IListObjectsByBucketNamePropsType, IObjectProps, IObjectResultType, IPutObjectPropsType, - ITxOption, Long, - SimulateOrBroad, - SimulateOrBroadResponse, + TxResponse, } from '../types'; import { decodeObjectFromHexString, encodeObjectToHexString } from '../utils/encoding'; import { @@ -45,36 +52,21 @@ import { isValidUrl, } from '../utils/s3'; import { Account } from './account'; -import { Bucket, IBucket } from './bucket'; -import { MsgDeleteObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/deleteObject'; +import { Basic } from './basic'; +import { RpcQueryClient } from './queryclient'; export interface IObject { getCreateObjectApproval( getApprovalParams: IGetCreateObjectApproval, ): Promise>; - createObject( - getApprovalParams: IGetCreateObjectApproval, - txOption: T, - ): Promise>; - createObject( - getApprovalParams: IGetCreateObjectApproval, - txOption: ITxOption, - ): Promise; + createObject(getApprovalParams: IGetCreateObjectApproval): Promise; uploadObject(configParam: IPutObjectPropsType): Promise>; - cancelCreateObject( - msg: MsgCancelCreateObject, - txOption: T, - ): Promise>; - cancelCreateObject( - msg: MsgCancelCreateObject, - txOption: ITxOption, - ): Promise; + cancelCreateObject(msg: MsgCancelCreateObject): Promise; - deleteObject(msg: MsgDeleteObject, txOption: T): Promise>; - deleteObject(msg: MsgDeleteObject, txOption: ITxOption): Promise; + deleteObject(msg: MsgDeleteObject): Promise; headObject(bucketName: string, objectName: string): Promise; @@ -88,20 +80,13 @@ export interface IObject { configParam: IListObjectsByBucketNamePropsType, ): Promise>>; - createFolder( - getApprovalParams: IGetCreateObjectApproval, - txOption: T, - ): Promise>; - createFolder( - getApprovalParams: IGetCreateObjectApproval, - txOption: ITxOption, - ): Promise; + createFolder(getApprovalParams: IGetCreateObjectApproval): Promise; } -export class Object extends Account implements IObject { - constructor(rpcUrl: string, chainId: string, private bucket: IBucket) { - super(rpcUrl, chainId); - } +@singleton() +export class Objectt implements IObject { + private basic: Basic = container.resolve(Basic); + private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); public async getCreateObjectApproval({ bucketName, @@ -200,7 +185,27 @@ export class Object extends Account implements IObject { } } - public async createObject(getApprovalParams: IGetCreateObjectApproval, txOption: ITxOption) { + private async createObjectTx(msg: MsgCreateObject, signedMsg: ICreateObjectMsgType) { + return await this.basic.tx( + MsgCreateObjectTypeUrl, + msg.creator, + MsgCreateObjectSDKTypeEIP712, + { + ...signedMsg, + type: MsgCreateObjectTypeUrl, + visibility: signedMsg.visibility, + primary_sp_approval: { + expired_height: signedMsg.primary_sp_approval.expired_height, + sig: signedMsg.primary_sp_approval.sig, + }, + redundancy_type: signedMsg.redundancy_type, + payload_size: signedMsg.payload_size, + }, + MsgCreateObject.encode(msg).finish(), + ); + } + + public async createObject(getApprovalParams: IGetCreateObjectApproval) { const { signedMsg } = await this.getCreateObjectApproval(getApprovalParams); if (!signedMsg) { throw new Error('Get create object approval error'); @@ -224,43 +229,7 @@ export class Object extends Account implements IObject { }, }; - const typeUrl = '/bnbchain.greenfield.storage.MsgCreateObject'; - const msgBytes = MsgCreateObject.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.creator); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, - MsgCreateObjectSDKTypeEIP712, - { - ...signedMsg, - type: typeUrl, - visibility: signedMsg.visibility, - primary_sp_approval: { - expired_height: signedMsg.primary_sp_approval.expired_height, - sig: signedMsg.primary_sp_approval.sig, - }, - redundancy_type: signedMsg.redundancy_type, - payload_size: signedMsg.payload_size, - }, - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, - ); - - return await this.broadcastRawTx(rawTxBytes); + return await this.createObjectTx(msg, signedMsg); } public async uploadObject(configParam: IPutObjectPropsType): Promise> { @@ -313,69 +282,28 @@ export class Object extends Account implements IObject { } } - public async cancelCreateObject(msg: MsgCancelCreateObject, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.storage.MsgCancelCreateObject'; - const msgBytes = MsgCancelCreateObject.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.operator); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async cancelCreateObject(msg: MsgCancelCreateObject) { + return await this.basic.tx( + MsgCancelCreateObjectTypeUrl, + msg.operator, MsgCancelCreateObjectSDKTypeEIP712, MsgCancelCreateObject.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgCancelCreateObject.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } - public async deleteObject(msg: MsgDeleteObject, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.storage.MsgDeleteObject'; - const msgBytes = MsgDeleteObject.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.operator); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async deleteObject(msg: MsgDeleteObject) { + return await this.basic.tx( + MsgDeleteObjectTypeUrl, + msg.operator, MsgDeleteObjectSDKTypeEIP712, MsgDeleteObject.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgDeleteObject.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } public async headObject(bucketName: string, objectName: string) { - const rpcClient = await this.getRpcClient(); - const rpc = new StorageQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getStorageQueryClient(); return rpc.HeadObject({ bucketName, @@ -384,8 +312,7 @@ export class Object extends Account implements IObject { } public async headObjectById(objectId: string) { - const rpcClient = await this.getRpcClient(); - const rpc = new StorageQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getStorageQueryClient(); return rpc.HeadObjectById({ objectId, @@ -513,14 +440,14 @@ export class Object extends Account implements IObject { } } - public async createFolder(getApprovalParams: IGetCreateObjectApproval, txOption: ITxOption) { + public async createFolder(getApprovalParams: IGetCreateObjectApproval) { if (!getApprovalParams.objectName.endsWith('/')) { throw new Error( 'failed to create folder. Folder names must end with a forward slash (/) character', ); } - return this.createObject(getApprovalParams, txOption); + return this.createObject(getApprovalParams); } // private async getObjectStatusFromSP(params: IGetObjectStaus) { diff --git a/packages/chain-sdk/src/api/payment.ts b/packages/chain-sdk/src/api/payment.ts index aff279da..44084a3e 100644 --- a/packages/chain-sdk/src/api/payment.ts +++ b/packages/chain-sdk/src/api/payment.ts @@ -1,8 +1,7 @@ -import { MsgDepositSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/payment/MsgDepositSDKTypeEIP712'; -import { MsgDisableRefundSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/payment/MsgDisableRefundSDKTypeEIP712'; -import { MsgWithdrawSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/payment/MsgWithdrawSDKTypeEIP712'; +import { MsgDepositSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgDeposit'; +import { MsgDisableRefundSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgDisableRefund'; +import { MsgWithdrawSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgWithdraw'; import { - QueryClientImpl as PaymentQueryClientImpl, QueryGetStreamRecordResponse, QueryParamsResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; @@ -11,8 +10,10 @@ import { MsgDisableRefund, MsgWithdraw, } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/tx'; -import { ITxOption, SimulateOrBroad, SimulateOrBroadResponse } from '..'; -import { Account } from './account'; +import { container, singleton } from 'tsyringe'; +import { TxResponse } from '..'; +import { Basic } from './basic'; +import { RpcQueryClient } from './queryclient'; export interface IPayment { /** @@ -23,129 +24,65 @@ export interface IPayment { /** * deposits BNB to a stream account. */ - deposit(msg: MsgDeposit, txOption: T): Promise>; - deposit(msg: MsgDeposit, txOption: ITxOption): Promise; + deposit(msg: MsgDeposit): Promise; /** * withdraws BNB from a stream account. */ - withdraw(msg: MsgWithdraw, txOption: T): Promise>; - withdraw(msg: MsgWithdraw, txOption: ITxOption): Promise; + withdraw(msg: MsgWithdraw): Promise; /** * disables refund for a stream account. */ - disableRefund( - msg: MsgDisableRefund, - txOption: T, - ): Promise>; - disableRefund(msg: MsgDisableRefund, txOption: ITxOption): Promise; + disableRefund(msg: MsgDisableRefund): Promise; params(): Promise; } -export class Payment extends Account implements IPayment { +@singleton() +export class Payment implements IPayment { + private basic: Basic = container.resolve(Basic); + private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); + public async getStreamRecord(account: string) { - const rpcClient = await this.getRpcClient(); - const rpc = new PaymentQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getPaymentQueryClient(); return await rpc.StreamRecord({ account, }); } public async params() { - const rpcClient = await this.getRpcClient(); - const rpc = new PaymentQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getPaymentQueryClient(); return await rpc.Params(); } - public async deposit(msg: MsgDeposit, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.payment.MsgDeposit'; - const msgBytes = MsgDeposit.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.creator); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async deposit(msg: MsgDeposit) { + return await this.basic.tx( + '/greenfield.payment.MsgDeposit', + msg.creator, MsgDepositSDKTypeEIP712, MsgDeposit.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgDeposit.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } - public async withdraw(msg: MsgWithdraw, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.payment.MsgWithdraw'; - const msgBytes = MsgWithdraw.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.creator); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async withdraw(msg: MsgWithdraw) { + return await this.basic.tx( + '/greenfield.payment.MsgWithdraw', + msg.creator, MsgWithdrawSDKTypeEIP712, MsgWithdraw.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgWithdraw.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } - public async disableRefund(msg: MsgDisableRefund, txOption: ITxOption) { - const typeUrl = '/bnbchain.greenfield.payment.MsgDisableRefund'; - const msgBytes = MsgDisableRefund.encode(msg).finish(); - const accountInfo = await this.getAccount(msg.addr); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async disableRefund(msg: MsgDisableRefund) { + return await this.basic.tx( + '/greenfield.payment.MsgDisableRefund', + msg.addr, MsgDisableRefundSDKTypeEIP712, MsgDisableRefund.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgDisableRefund.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } } diff --git a/packages/chain-sdk/src/api/queryclient.ts b/packages/chain-sdk/src/api/queryclient.ts new file mode 100644 index 00000000..e89dfecc --- /dev/null +++ b/packages/chain-sdk/src/api/queryclient.ts @@ -0,0 +1,153 @@ +import { MsgClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/distribution/v1beta1/tx'; +import { QueryClientImpl as AuthQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/query'; +import { QueryClientImpl as BankQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/bank/v1beta1/query'; +import { QueryClientImpl as CrosschainQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/crosschain/v1/query'; +import { QueryClientImpl as FeeGrantQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/query'; +import { QueryClientImpl as OracleQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/oracle/v1/query'; +import { QueryClientImpl as BridgeQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/bridge/query'; +import { QueryClientImpl as ChallengeQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/query'; +import { QueryClientImpl as PaymentQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; +import { QueryClientImpl as SpQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/query'; +import { + QueryClientImpl as BucketQueryClientImpl, + QueryClientImpl as StorageQueryClientImpl, +} from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/query'; +import { + AuthExtension, + BankExtension, + createProtobufRpcClient, + ProtobufRpcClient, + QueryClient, + setupAuthExtension, + setupAuthzExtension, + setupBankExtension, + setupDistributionExtension, + setupFeegrantExtension, + setupGovExtension, + setupIbcExtension, + setupMintExtension, + setupSlashingExtension, + setupStakingExtension, + setupTxExtension, + TxExtension, +} from '@cosmjs/stargate'; +import { AuthzExtension } from '@cosmjs/stargate/build/modules/authz/queries'; +import { Tendermint37Client } from '@cosmjs/tendermint-rpc'; +import { inject, singleton } from 'tsyringe'; + +@singleton() +export class RpcQueryClient { + constructor(@inject('RPC_URL') private rpcUrl: string) { + this.rpcUrl = rpcUrl; + } + + private rpcClient: ProtobufRpcClient | null = null; + public async getRpcClient() { + if (!this.rpcClient) { + this.rpcClient = await makeRpcClient(this.rpcUrl); + } + return this.rpcClient; + } + + private txQueryClient: + | (QueryClient & BankExtension & TxExtension & AuthExtension & AuthzExtension) + | null = null; + public async getQueryClient() { + if (!this.txQueryClient) { + const [client] = await makeClientWithExtension(this.rpcUrl); + this.txQueryClient = client; + } + return this.txQueryClient; + } + + public async getAuthQueryClient() { + const rpcClient = await this.getRpcClient(); + return new AuthQueryClientImpl(rpcClient); + } + + public async getBankQueryClient() { + const rpcClient = await this.getRpcClient(); + return new BankQueryClientImpl(rpcClient); + } + + public async getPaymentQueryClient() { + const rpcClient = await this.getRpcClient(); + return new PaymentQueryClientImpl(rpcClient); + } + + public async getBucketQueryClient() { + const rpcClient = await this.getRpcClient(); + return new BucketQueryClientImpl(rpcClient); + } + + public async getSpQueryClient() { + const rpcClient = await this.getRpcClient(); + return new SpQueryClientImpl(rpcClient); + } + + public async getChallengeQueryClient() { + const rpcClient = await this.getRpcClient(); + return new ChallengeQueryClientImpl(rpcClient); + } + + public async getCrosschainQueryClient() { + const rpcClient = await this.getRpcClient(); + return new CrosschainQueryClientImpl(rpcClient); + } + + public async getOracleQueryClient() { + const rpcClient = await this.getRpcClient(); + return new OracleQueryClientImpl(rpcClient); + } + + public async getBridgeQueryClient() { + const rpcClient = await this.getRpcClient(); + return new BridgeQueryClientImpl(rpcClient); + } + + public async getFeeGrantQueryClient() { + const rpcClient = await this.getRpcClient(); + return new FeeGrantQueryClientImpl(rpcClient); + } + + public async getStorageQueryClient() { + const rpcClient = await this.getRpcClient(); + return new StorageQueryClientImpl(rpcClient); + } + + public async getMsgClient() { + const rpcClient = await this.getRpcClient(); + return new MsgClientImpl(rpcClient); + } +} + +export const makeClientWithExtension = async ( + rpcUrl: string, +): Promise< + [QueryClient & BankExtension & TxExtension & AuthExtension & AuthzExtension, Tendermint37Client] +> => { + const tmClient = await Tendermint37Client.connect(rpcUrl); + return [ + QueryClient.withExtensions( + tmClient, + setupAuthExtension, + setupAuthzExtension, + setupBankExtension, + setupDistributionExtension, + setupFeegrantExtension, + setupGovExtension, + setupIbcExtension, + setupMintExtension, + setupSlashingExtension, + setupStakingExtension, + setupTxExtension, + ), + tmClient, + ]; +}; + +export const makeRpcClient = async (rpcUrl: string) => { + const [, tmClient] = await makeClientWithExtension(rpcUrl); + const rpc = createProtobufRpcClient(new QueryClient(tmClient)); + return rpc; +}; diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index 40aaac2c..da7eb113 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -1,5 +1,5 @@ -import { MsgUpdateSpStoragePriceSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/sp/MsgUpdateSpStoragePriceSDKTypeEIP712'; -import { QueryClientImpl as SpQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/query'; +import { MsgUpdateSpStoragePriceSDKTypeEIP712 } from '@/messages/greenfield/sp/MsgUpdateSpStoragePrice'; + import { MsgUpdateSpStoragePrice } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/tx'; import { SecondarySpStorePrice, @@ -7,8 +7,9 @@ import { StorageProvider, } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/types'; import Long from 'long'; -import { Account } from './account'; -import { ITxOption } from '..'; +import { container, delay, inject, singleton } from 'tsyringe'; +import { Basic } from './basic'; +import { RpcQueryClient } from './queryclient'; export interface ISp { /** @@ -37,17 +38,19 @@ export interface ISp { */ } -export class Sp extends Account implements ISp { +@singleton() +export class Sp implements ISp { + constructor(@inject(delay(() => Basic)) private basic: Basic) {} + private queryClient = container.resolve(RpcQueryClient); + public async getStorageProviders() { - const rpcClient = await this.getRpcClient(); - const rpc = new SpQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getSpQueryClient(); const res = await rpc.StorageProviders(); return res.sps; } public async getStorageProviderInfo(spAddress: string) { - const rpcClient = await this.getRpcClient(); - const rpc = new SpQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getSpQueryClient(); const res = await rpc.StorageProvider({ spAddress, }); @@ -55,8 +58,7 @@ export class Sp extends Account implements ISp { } public async getStoragePriceByTime(spAddress: string) { - const rpcClient = await this.getRpcClient(); - const rpc = new SpQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getSpQueryClient(); const res = await rpc.QueryGetSpStoragePriceByTime({ timestamp: Long.fromNumber(0), spAddr: spAddress, @@ -65,45 +67,20 @@ export class Sp extends Account implements ISp { } public async getSecondarySpStorePrice() { - const rpcClient = await this.getRpcClient(); - const rpc = new SpQueryClientImpl(rpcClient); + const rpc = await this.queryClient.getSpQueryClient(); const res = await rpc.QueryGetSecondarySpStorePriceByTime({ timestamp: Long.fromNumber(0), }); return res.secondarySpStorePrice; } - public async updateSpStoragePrice( - address: string, - msg: MsgUpdateSpStoragePrice, - txOption: ITxOption, - ) { - const typeUrl = '/bnbchain.greenfield.sp.MsgUpdateSpStoragePrice'; - const msgBytes = MsgUpdateSpStoragePrice.encode(msg).finish(); - const accountInfo = await this.getAccount(address); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); - - if (txOption.simulate) { - return await this.simulateRawTx(bodyBytes, accountInfo, { - denom: txOption.denom, - }); - } - - const rawTxBytes = await this.getRawTxBytes( - typeUrl, + public async updateSpStoragePrice(address: string, msg: MsgUpdateSpStoragePrice) { + return await this.basic.tx( + '/greenfield.sp.MsgUpdateSpStoragePrice', + address, MsgUpdateSpStoragePriceSDKTypeEIP712, MsgUpdateSpStoragePrice.toSDK(msg), - bodyBytes, - accountInfo, - { - denom: txOption.denom, - gasLimit: txOption.gasLimit, - gasPrice: txOption.gasPrice, - payer: accountInfo.address, - granter: '', - }, + MsgUpdateSpStoragePrice.encode(msg).finish(), ); - - return await this.broadcastRawTx(rawTxBytes); } } diff --git a/packages/chain-sdk/src/client.ts b/packages/chain-sdk/src/client.ts index 662069ef..d94a8d7d 100644 --- a/packages/chain-sdk/src/client.ts +++ b/packages/chain-sdk/src/client.ts @@ -1,36 +1,42 @@ +import 'reflect-metadata'; +import { container, injectable } from 'tsyringe'; import { Account, IAccount } from './api/account'; -import { Basic, IBasic } from './api/basic'; import { Bucket, IBucket } from './api/bucket'; import { Challenge, IChallenge } from './api/challenge'; import { CrossChain, ICrossChain } from './api/crosschain'; import { Distribution, IDistribution } from './api/distribution'; +import { FeeGrant, IFeeGrant } from './api/feegrant'; import { Group, IGroup } from './api/group'; -import { IObject, Object } from './api/object'; +import { IObject, Objectt } from './api/objectt'; import { IPayment, Payment } from './api/payment'; import { ISp, Sp } from './api/sp'; +@injectable() export class Client { static create(rpcUrl: string, chainId: string): Client { - const account = new Account(rpcUrl, chainId); - const basic = new Basic(rpcUrl, chainId); - const bucket = new Bucket(rpcUrl, chainId); - const challenge = new Challenge(rpcUrl, chainId); - const crosschain = new CrossChain(rpcUrl, chainId); - const distribution = new Distribution(rpcUrl, chainId); - const group = new Group(rpcUrl, chainId); - const object = new Object(rpcUrl, chainId, bucket); - const payment = new Payment(rpcUrl, chainId); - const sp = new Sp(rpcUrl, chainId); + container.register('RPC_URL', { useValue: rpcUrl }); + container.register('CHAIN_ID', { useValue: chainId }); + + const account = container.resolve(Account); + const bucket = container.resolve(Bucket); + const challenge = container.resolve(Challenge); + const crosschain = container.resolve(CrossChain); + const distribution = container.resolve(Distribution); + const feegrant = container.resolve(FeeGrant); + const group = container.resolve(Group); + const objectt = container.resolve(Objectt); + const payment = container.resolve(Payment); + const sp = container.resolve(Sp); return new Client( account, - basic, bucket, challenge, crosschain, distribution, + feegrant, group, - object, + objectt, payment, sp, ); @@ -38,11 +44,11 @@ export class Client { constructor( public account: IAccount, - public basic: IBasic, public bucket: IBucket, public challenge: IChallenge, public crosschain: ICrossChain, public distribution: IDistribution, + public feegrant: IFeeGrant, public group: IGroup, public object: IObject, public payment: IPayment, diff --git a/packages/chain-sdk/src/config.spec.ts b/packages/chain-sdk/src/config.spec.ts new file mode 100644 index 00000000..8c16d3db --- /dev/null +++ b/packages/chain-sdk/src/config.spec.ts @@ -0,0 +1,9 @@ +export const GRPC_URL = 'https://gnfd.qa.bnbchain.world'; +export const GREENFIELD_URL = 'https://gnfd.qa.bnbchain.world'; +export const GREENFIELD_CHAIN_ID = '9000'; +export const BSC_RPC_URL = 'https://data-seed-prebsc-1-s1.binance.org:8545'; +export const BSC_CHAIN_ID = '97'; +export const ACCOUNT = { + address: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + privateKey: '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032', +}; diff --git a/packages/chain-sdk/src/constants/index.ts b/packages/chain-sdk/src/constants/index.ts index 8984ea31..fb13e2b2 100644 --- a/packages/chain-sdk/src/constants/index.ts +++ b/packages/chain-sdk/src/constants/index.ts @@ -1 +1,2 @@ export const ZERO_PUBKEY = '0x000000000000000000000000000000000000000000000000000000000000000000'; +export const DEFAULT_DENOM = ' BNB'; diff --git a/packages/chain-sdk/src/keymanage/index.ts b/packages/chain-sdk/src/keymanage/index.ts new file mode 100644 index 00000000..3573afb2 --- /dev/null +++ b/packages/chain-sdk/src/keymanage/index.ts @@ -0,0 +1,72 @@ +import { createEIP712, generateFee, generateMessage, generateTypes } from '@/messages'; +import { typeWrapper } from '@/tx/utils'; +import { bufferToHex, toBuffer } from '@ethereumjs/util'; +import { SignTypedDataVersion, signTypedData } from '@metamask/eth-sig-util'; +import { publicKeyCreate } from 'ethereum-cryptography/secp256k1-compat'; +import { BroadcastOptions, makeCosmsPubKey } from '..'; + +/** + * @priKey 0x prefix + */ +export const getPubKeyByPriKey = (priKey: string) => { + const privateKeyBytes = toBuffer(priKey); + const publicKeyBytes = publicKeyCreate(privateKeyBytes); + const pk = bufferToHex(toBuffer(publicKeyBytes)); + const pubKey = makeCosmsPubKey(pk); + return pubKey; +}; + +export const createEIP712Data = ( + chainId: string, + accountNumber: string, + sequence: string, + typeUrl: string, + MsgSDKTypeEIP712: object, + MsgSDK: object, + txOption: BroadcastOptions, +) => { + const { gasLimit, gasPrice, denom, payer } = txOption; + const fee = generateFee( + String(BigInt(gasLimit) * BigInt(gasPrice)), + denom, + String(gasLimit), + payer, + '', + ); + const wrapperTypes = generateTypes(MsgSDKTypeEIP712); + const wrapperMsg = typeWrapper(typeUrl, MsgSDK); + const messages = generateMessage(accountNumber, sequence, chainId, '', fee, wrapperMsg, '0'); + return createEIP712(wrapperTypes, chainId, messages); +}; + +export const signEIP712Data = ( + chainId: string, + accountNumber: string, + sequence: string, + typeUrl: string, + MsgSDKTypeEIP712: object, + MsgSDK: object, + txOption: BroadcastOptions, +) => { + const data = createEIP712Data( + chainId, + accountNumber, + sequence, + typeUrl, + MsgSDKTypeEIP712, + MsgSDK, + txOption, + ); + + if (!txOption.privateKey) { + throw new Error('private key is required'); + } + + return signTypedData({ + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + data, + version: SignTypedDataVersion.V4, + privateKey: toBuffer(txOption.privateKey), + }); +}; diff --git a/packages/chain-sdk/src/messages/bank/MsgMultiSend.ts b/packages/chain-sdk/src/messages/bank/MsgMultiSend.ts new file mode 100644 index 00000000..008eab7b --- /dev/null +++ b/packages/chain-sdk/src/messages/bank/MsgMultiSend.ts @@ -0,0 +1,9 @@ +export const MsgMultiSendTypeUrl = '/cosmos.bank.v1beta1.MsgMulti'; +export const MsgMultiSendSDKTypeEIP712 = { + Msg: [ + { name: 'type', type: 'string' }, + { name: 'from_address', type: 'string' }, + { name: 'to_address', type: 'string' }, + { name: 'amount', type: 'TypeAmount[]' }, + ], +}; diff --git a/packages/chain-sdk/src/messages/bank/send.ts b/packages/chain-sdk/src/messages/bank/MsgSend.ts similarity index 100% rename from packages/chain-sdk/src/messages/bank/send.ts rename to packages/chain-sdk/src/messages/bank/MsgSend.ts diff --git a/packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts b/packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts new file mode 100644 index 00000000..658eacca --- /dev/null +++ b/packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts @@ -0,0 +1,40 @@ +export const MsgClaimSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'from_address', + }, + { + type: 'uint64', + name: 'src_chain_id', + }, + { + type: 'uint64', + name: 'dest_chain_id', + }, + { + type: 'uint64', + name: 'sequence', + }, + { + type: 'uint64', + name: 'timestamp', + }, + { + type: 'bytes', + name: 'payload', + }, + { + type: 'uint64[]', + name: 'vote_address_set', + }, + { + type: 'bytes', + name: 'agg_signature', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts b/packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts new file mode 100644 index 00000000..926c342b --- /dev/null +++ b/packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts @@ -0,0 +1,31 @@ +export const MsgGrantAllowanceTypeUrl = '/cosmos/feegrant/v1beta1/MsgGrantAllowance'; +export const MsgGrantAllowanceSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'granter', + }, + { + type: 'string', + name: 'grantee', + }, + { + type: 'TypeAllowance', + name: 'allowance', + }, + ], + TypeAllowance: [ + { + type: 'string', + name: 'type_url', + }, + { + type: 'bytes', + name: 'value', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts b/packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts new file mode 100644 index 00000000..eccec3cd --- /dev/null +++ b/packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts @@ -0,0 +1,39 @@ +export const MsgRevokeAllowanceTypeUrl = '/cosmos/feegrant/v1beta1/MsgRevokeAllowance'; +export const MsgRevokeAllowanceSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'granter', + }, + { + type: 'string', + name: 'grantee', + }, + { + type: 'TypeAllowance', + name: 'allowance', + }, + { + type: 'string', + name: 'granter', + }, + { + type: 'string', + name: 'grantee', + }, + ], + TypeAllowance: [ + { + type: 'string', + name: 'type_url', + }, + { + type: 'bytes', + name: 'value', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts b/packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts new file mode 100644 index 00000000..96a789a4 --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts @@ -0,0 +1,22 @@ +export const MsgTransferOutTypeUrl = '/greenfield.bridge.MsgTransferOut'; + +export const MsgTransferOutSDKTypeEIP712 = { + Msg: [ + { + name: 'type', + type: 'string', + }, + { + name: 'from', + type: 'string', + }, + { + name: 'to', + type: 'string', + }, + { + name: 'amount', + type: 'TypeAmount', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/bridge/transferOut.ts b/packages/chain-sdk/src/messages/greenfield/bridge/transferOut.ts deleted file mode 100644 index 8df98063..00000000 --- a/packages/chain-sdk/src/messages/greenfield/bridge/transferOut.ts +++ /dev/null @@ -1,39 +0,0 @@ -export const TYPE_URL = '/bnbchain.greenfield.bridge.MsgTransferOut'; - -export const MsgTransferOutSDKTypeEIP712 = { - Msg: [ - { - name: 'type', - type: 'string', - }, - { - name: 'from', - type: 'string', - }, - { - name: 'to', - type: 'string', - }, - { - name: 'amount', - type: 'TypeAmount', - }, - ], -}; - -export const newMsgTransferOut = ( - amount: string, - denom: string, - fromAddress: string, - toAddress: string, -) => { - return { - type: TYPE_URL, - amount: { - amount, - denom, - }, - from: fromAddress, - to: toAddress, - }; -}; diff --git a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts b/packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts new file mode 100644 index 00000000..fe874f91 --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts @@ -0,0 +1,64 @@ +export const MsgAttestSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'challenger', + }, + { + type: 'string', + name: 'sp_operator_address', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'segment_index', + }, + { + type: 'bool', + name: 'random_index', + }, + { + type: 'string', + name: 'submitter', + }, + { + type: 'uint64', + name: 'challenge_id', + }, + { + type: 'string', + name: 'object_id', + }, + { + type: 'string', + name: 'sp_operator_address', + }, + { + type: 'string', + name: 'vote_result', + }, + { + type: 'string', + name: 'challenger_address', + }, + { + type: 'uint64[]', + name: 'vote_validator_set', + }, + { + type: 'bytes', + name: 'vote_agg_signature', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts b/packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts new file mode 100644 index 00000000..d89bdb5a --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts @@ -0,0 +1,32 @@ +export const MsgSubmitSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'challenger', + }, + { + type: 'string', + name: 'sp_operator_address', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'segment_index', + }, + { + type: 'bool', + name: 'random_index', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts b/packages/chain-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts new file mode 100644 index 00000000..61ccc3ed --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts @@ -0,0 +1,14 @@ +export const MsgCreatePaymentAccountTypeUrl = '/greenfield.payment'; + +export const MsgCreatePaymentAccountSDKTypeEIP712 = { + Msg: [ + { + name: 'type', + type: 'string', + }, + { + name: 'creaator', + type: 'string', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts b/packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts new file mode 100644 index 00000000..68e36b18 --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts @@ -0,0 +1,58 @@ +export const MsgDepositSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'authority', + }, + { + type: 'TypeParams', + name: 'params', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'to', + }, + { + type: 'string', + name: 'amount', + }, + ], + TypeParams: [ + { + type: 'uint64', + name: 'reserve_time', + }, + { + type: 'uint64', + name: 'payment_account_count_limit', + }, + { + type: 'uint64', + name: 'forced_settle_time', + }, + { + type: 'uint64', + name: 'max_auto_force_settle_num', + }, + { + type: 'string', + name: 'fee_denom', + }, + { + type: 'string', + name: 'validator_tax_rate', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts b/packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts new file mode 100644 index 00000000..bde9de7d --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts @@ -0,0 +1,78 @@ +export const MsgDisableRefundSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'authority', + }, + { + type: 'TypeParams', + name: 'params', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'to', + }, + { + type: 'string', + name: 'amount', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'from', + }, + { + type: 'string', + name: 'amount', + }, + { + type: 'string', + name: 'owner', + }, + { + type: 'string', + name: 'addr', + }, + ], + TypeParams: [ + { + type: 'uint64', + name: 'reserve_time', + }, + { + type: 'uint64', + name: 'payment_account_count_limit', + }, + { + type: 'uint64', + name: 'forced_settle_time', + }, + { + type: 'uint64', + name: 'max_auto_force_settle_num', + }, + { + type: 'string', + name: 'fee_denom', + }, + { + type: 'string', + name: 'validator_tax_rate', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts b/packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts new file mode 100644 index 00000000..06f685b1 --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts @@ -0,0 +1,70 @@ +export const MsgWithdrawSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'authority', + }, + { + type: 'TypeParams', + name: 'params', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'to', + }, + { + type: 'string', + name: 'amount', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'from', + }, + { + type: 'string', + name: 'amount', + }, + ], + TypeParams: [ + { + type: 'uint64', + name: 'reserve_time', + }, + { + type: 'uint64', + name: 'payment_account_count_limit', + }, + { + type: 'uint64', + name: 'forced_settle_time', + }, + { + type: 'uint64', + name: 'max_auto_force_settle_num', + }, + { + type: 'string', + name: 'fee_denom', + }, + { + type: 'string', + name: 'validator_tax_rate', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/sp/MsgUpdateSpStoragePrice.ts b/packages/chain-sdk/src/messages/greenfield/sp/MsgUpdateSpStoragePrice.ts new file mode 100644 index 00000000..69966917 --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/sp/MsgUpdateSpStoragePrice.ts @@ -0,0 +1,130 @@ +export const MsgUpdateSpStoragePriceSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'TypeDescription', + name: 'description', + }, + { + type: 'string', + name: 'sp_address', + }, + { + type: 'string', + name: 'funding_address', + }, + { + type: 'string', + name: 'seal_address', + }, + { + type: 'string', + name: 'approval_address', + }, + { + type: 'string', + name: 'gc_address', + }, + { + type: 'string', + name: 'endpoint', + }, + { + type: 'TypeAmount', + name: 'deposit', + }, + { + type: 'string', + name: 'read_price', + }, + { + type: 'uint64', + name: 'free_read_quota', + }, + { + type: 'string', + name: 'store_price', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'sp_address', + }, + { + type: 'TypeAmount', + name: 'deposit', + }, + { + type: 'string', + name: 'sp_address', + }, + { + type: 'string', + name: 'endpoint', + }, + { + type: 'TypeDescription', + name: 'description', + }, + { + type: 'string', + name: 'seal_address', + }, + { + type: 'string', + name: 'approval_address', + }, + { + type: 'string', + name: 'gc_address', + }, + { + type: 'string', + name: 'sp_address', + }, + { + type: 'string', + name: 'read_price', + }, + { + type: 'uint64', + name: 'free_read_quota', + }, + { + type: 'string', + name: 'store_price', + }, + ], + TypeDescription: [ + { + type: 'string', + name: 'moniker', + }, + { + type: 'string', + name: 'identity', + }, + { + type: 'string', + name: 'website', + }, + { + type: 'string', + name: 'security_contact', + }, + { + type: 'string', + name: 'details', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/cancelCreateObject.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts similarity index 82% rename from packages/chain-sdk/src/messages/greenfield/storage/cancelCreateObject.ts rename to packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts index 9cb58353..e2edc090 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/cancelCreateObject.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts @@ -1,4 +1,4 @@ -export const TYPE_URL = '/bnbchain.greenfield.storage.MsgCancelCreateObject'; +export const MsgCancelCreateObjectTypeUrl = '/greenfield.storage.MsgCancelCreateObject'; export const MsgCancelCreateObjectSDKTypeEIP712 = { Msg: [ @@ -33,7 +33,7 @@ export const newMsgCancelCreateObject = ({ objectName, }: ICancelCreateObjectMsg) => { return { - type: TYPE_URL, + type: MsgCancelCreateObjectTypeUrl, operator: from, bucket_name: bucketName, object_name: objectName, diff --git a/packages/chain-sdk/src/messages/greenfield/storage/createBucket.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts similarity index 92% rename from packages/chain-sdk/src/messages/greenfield/storage/createBucket.ts rename to packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts index 908ef233..660be762 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/createBucket.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts @@ -1,4 +1,4 @@ -export const TYPE_URL = '/bnbchain.greenfield.storage.MsgCreateBucket'; +export const MsgCreateBucketTypeUrl = '/greenfield.storage.MsgCreateBucket'; export const MsgCreateBucketSDKTypeEIP712 = { Msg: [ @@ -69,7 +69,7 @@ export const newMsgCreateBucket = ({ sig, }: ICreateBucketMsg) => { return { - type: TYPE_URL, + type: MsgCreateBucketTypeUrl, bucket_name: bucketName, creator: from, visibility, diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts new file mode 100644 index 00000000..b8957d86 --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts @@ -0,0 +1,212 @@ +export const MsgCreateGroupSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'primary_sp_address', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/createObject.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts similarity index 95% rename from packages/chain-sdk/src/messages/greenfield/storage/createObject.ts rename to packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts index c0e6133e..db8477f9 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/createObject.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts @@ -3,7 +3,7 @@ import { visibilityTypeToJSON, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; -export const TYPE_URL = '/bnbchain.greenfield.storage.MsgCreateObject'; +export const MsgCreateObjectTypeUrl = '/greenfield.storage.MsgCreateObject'; export const MsgCreateObjectSDKTypeEIP712 = { Msg: [ @@ -92,7 +92,7 @@ export const newMsgCreateObject = ({ redundancyType, }: ICreateObjectMsg) => { return { - type: TYPE_URL, + type: MsgCreateObjectTypeUrl, bucket_name: bucketName, content_type: contentType, creator: from, diff --git a/packages/chain-sdk/src/messages/greenfield/storage/deleteBucket.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts similarity index 80% rename from packages/chain-sdk/src/messages/greenfield/storage/deleteBucket.ts rename to packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts index 9303aa9c..d339587a 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/deleteBucket.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts @@ -1,4 +1,4 @@ -export const TYPE_URL = '/bnbchain.greenfield.storage.MsgDeleteBucket'; +export const MsgDeleteBucketTypeUrl = '/greenfield.storage.MsgDeleteBucket'; export const MsgDeleteBucketSDKTypeEIP712 = { Msg: [ @@ -24,7 +24,7 @@ export interface IDeleteBucketMsg { export const newMsgDeleteBucket = ({ bucketName, from }: IDeleteBucketMsg) => { return { - type: TYPE_URL, + type: MsgDeleteBucketTypeUrl, bucket_name: bucketName, operator: from, }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts new file mode 100644 index 00000000..bcf4fa10 --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts @@ -0,0 +1,220 @@ +export const MsgDeleteGroupSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'primary_sp_address', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_name', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/deleteObject.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts similarity index 84% rename from packages/chain-sdk/src/messages/greenfield/storage/deleteObject.ts rename to packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts index 6871f4b3..8a3c98e5 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/deleteObject.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts @@ -1,4 +1,4 @@ -export const TYPE_URL = '/bnbchain.greenfield.storage.MsgDeleteObject'; +export const MsgDeleteObjectTypeUrl = '/greenfield.storage.MsgDeleteObject'; export const MsgDeleteObjectSDKTypeEIP712 = { Msg: [ @@ -29,7 +29,7 @@ export interface IDeleteObjectMsg { export const newMsgDeleteObject = ({ bucketName, objectName, from }: IDeleteObjectMsg) => { return { - type: TYPE_URL, + type: MsgDeleteObjectTypeUrl, bucket_name: bucketName, object_name: objectName, operator: from, diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts new file mode 100644 index 00000000..dfded66e --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts @@ -0,0 +1,341 @@ +export const MsgDeletePolicySDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'primary_sp_address', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members_to_add', + }, + { + type: 'string[]', + name: 'members_to_delete', + }, + { + type: 'string', + name: 'member', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'TypeChargedReadQuota', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', + name: 'resource', + }, + { + type: 'StatementSDKType[]', + name: 'statements', + }, + { + type: 'TypeExpirationTime', + name: 'expiration_time', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', + name: 'resource', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeChargedReadQuota: [ + { + type: 'uint64', + name: 'value', + }, + ], + TypePrincipal: [ + { + name: 'type', + }, + { + type: 'string', + name: 'value', + }, + ], + TypeExpirationTime: [ + { + type: 'uint64', + name: 'seconds', + }, + { + type: 'uint64', + name: 'nanos', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts new file mode 100644 index 00000000..62e60295 --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts @@ -0,0 +1,252 @@ +export const MsgLeaveGroupSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'primary_sp_address', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members_to_add', + }, + { + type: 'string[]', + name: 'members_to_delete', + }, + { + type: 'string', + name: 'member', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts new file mode 100644 index 00000000..3fa1e2b6 --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts @@ -0,0 +1,357 @@ +export const MsgMirrorBucketSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'primary_sp_address', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members_to_add', + }, + { + type: 'string[]', + name: 'members_to_delete', + }, + { + type: 'string', + name: 'member', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'TypeChargedReadQuota', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', + name: 'resource', + }, + { + type: 'StatementSDKType[]', + name: 'statements', + }, + { + type: 'TypeExpirationTime', + name: 'expiration_time', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', + name: 'resource', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'id', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'id', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeChargedReadQuota: [ + { + type: 'uint64', + name: 'value', + }, + ], + TypePrincipal: [ + { + name: 'type', + }, + { + type: 'string', + name: 'value', + }, + ], + TypeExpirationTime: [ + { + type: 'uint64', + name: 'seconds', + }, + { + type: 'uint64', + name: 'nanos', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts new file mode 100644 index 00000000..d01e3070 --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts @@ -0,0 +1,381 @@ +export const MsgMirrorGroupSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'primary_sp_address', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members_to_add', + }, + { + type: 'string[]', + name: 'members_to_delete', + }, + { + type: 'string', + name: 'member', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'TypeChargedReadQuota', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', + name: 'resource', + }, + { + type: 'StatementSDKType[]', + name: 'statements', + }, + { + type: 'TypeExpirationTime', + name: 'expiration_time', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', + name: 'resource', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'id', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'id', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'id', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeChargedReadQuota: [ + { + type: 'uint64', + name: 'value', + }, + ], + TypePrincipal: [ + { + name: 'type', + }, + { + type: 'string', + name: 'value', + }, + ], + TypeExpirationTime: [ + { + type: 'uint64', + name: 'seconds', + }, + { + type: 'uint64', + name: 'nanos', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts new file mode 100644 index 00000000..fbf1f2be --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts @@ -0,0 +1,349 @@ +export const MsgMirrorObjectSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'primary_sp_address', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members_to_add', + }, + { + type: 'string[]', + name: 'members_to_delete', + }, + { + type: 'string', + name: 'member', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'TypeChargedReadQuota', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', + name: 'resource', + }, + { + type: 'StatementSDKType[]', + name: 'statements', + }, + { + type: 'TypeExpirationTime', + name: 'expiration_time', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', + name: 'resource', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'id', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeChargedReadQuota: [ + { + type: 'uint64', + name: 'value', + }, + ], + TypePrincipal: [ + { + name: 'type', + }, + { + type: 'string', + name: 'value', + }, + ], + TypeExpirationTime: [ + { + type: 'uint64', + name: 'seconds', + }, + { + type: 'uint64', + name: 'nanos', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts new file mode 100644 index 00000000..e5fd0c64 --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts @@ -0,0 +1,329 @@ +export const MsgPutPolicySDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'primary_sp_address', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members_to_add', + }, + { + type: 'string[]', + name: 'members_to_delete', + }, + { + type: 'string', + name: 'member', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'TypeChargedReadQuota', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', + name: 'resource', + }, + { + type: 'StatementSDKType[]', + name: 'statements', + }, + { + type: 'TypeExpirationTime', + name: 'expiration_time', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeChargedReadQuota: [ + { + type: 'uint64', + name: 'value', + }, + ], + TypePrincipal: [ + { + name: 'type', + }, + { + type: 'string', + name: 'value', + }, + ], + TypeExpirationTime: [ + { + type: 'uint64', + name: 'seconds', + }, + { + type: 'uint64', + name: 'nanos', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts new file mode 100644 index 00000000..23487d3b --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts @@ -0,0 +1,278 @@ +export const MsgUpdateBucketInfoSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'primary_sp_address', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members_to_add', + }, + { + type: 'string[]', + name: 'members_to_delete', + }, + { + type: 'string', + name: 'member', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'TypeChargedReadQuota', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'visibility', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeChargedReadQuota: [ + { + type: 'uint64', + name: 'value', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts new file mode 100644 index 00000000..a8c68343 --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts @@ -0,0 +1,240 @@ +export const MsgUpdateGroupMemberSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'primary_sp_address', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members_to_add', + }, + { + type: 'string[]', + name: 'members_to_delete', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], +}; diff --git a/packages/chain-sdk/src/sign/index.ts b/packages/chain-sdk/src/sign/index.ts index 4b48382e..e9915691 100644 --- a/packages/chain-sdk/src/sign/index.ts +++ b/packages/chain-sdk/src/sign/index.ts @@ -4,4 +4,4 @@ export interface ISignature712 { } export { sign712Tx } from './signTx'; -export { makeCosmsPubKey, recoverPk } from './pubKey'; +export { eip712Hash, makeCosmsPubKey, recoverPk } from './pubKey'; diff --git a/packages/chain-sdk/src/sign/pubKey.ts b/packages/chain-sdk/src/sign/pubKey.ts index 9a505c8c..1d529d62 100644 --- a/packages/chain-sdk/src/sign/pubKey.ts +++ b/packages/chain-sdk/src/sign/pubKey.ts @@ -2,6 +2,7 @@ import { PubKey } from '@bnb-chain/greenfield-cosmos-types/cosmos/crypto/secp256 import { toBuffer } from '@ethereumjs/util'; import { computePublicKey, recoverPublicKey } from '@ethersproject/signing-key'; import { ISignature712 } from '.'; +import { SignTypedDataVersion, TypedDataUtils } from '@metamask/eth-sig-util'; /** * recover public key from signature @@ -26,7 +27,11 @@ export const makeCosmsPubKey = (pk: string) => { }); return { - typeUrl: '/ethermint.crypto.v1.ethsecp256k1.PubKey', + typeUrl: '/cosmos.crypto.eth.ethsecp256k1.PubKey', value: PubKey.encode(pubKey).finish(), }; }; + +export const eip712Hash = (message: string) => { + return TypedDataUtils.eip712Hash(JSON.parse(message), SignTypedDataVersion.V4); +}; diff --git a/packages/chain-sdk/src/sign/signTx.ts b/packages/chain-sdk/src/sign/signTx.ts index 3942aae3..8f16581e 100644 --- a/packages/chain-sdk/src/sign/signTx.ts +++ b/packages/chain-sdk/src/sign/signTx.ts @@ -1,5 +1,5 @@ -import { TypedDataUtils, SignTypedDataVersion } from '@metamask/eth-sig-util'; import { ISignature712 } from '.'; +import { eip712Hash } from './pubKey'; /** * @addr wallet address @@ -13,10 +13,18 @@ export const sign712Tx = async (addr: string, message: string): Promise { + const signature = await (window as any).ethereum?.request({ + method: 'eth_signTypedData_v4', + params: [addr, message], + }); + return signature; +}; diff --git a/packages/chain-sdk/src/tx/baseTx.ts b/packages/chain-sdk/src/tx/baseTx.ts index 9eacfb48..84c79e4c 100644 --- a/packages/chain-sdk/src/tx/baseTx.ts +++ b/packages/chain-sdk/src/tx/baseTx.ts @@ -1,4 +1,4 @@ -import { makeRpcClient } from '@/api/basic'; +import { makeRpcClient } from '@/api/queryclient'; import { ServiceClientImpl, SimulateRequest, diff --git a/packages/chain-sdk/src/tx/bucket/create/index.ts b/packages/chain-sdk/src/tx/bucket/create/index.ts deleted file mode 100644 index 4864861a..00000000 --- a/packages/chain-sdk/src/tx/bucket/create/index.ts +++ /dev/null @@ -1,204 +0,0 @@ -import { BaseAccount } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/auth'; -import { Coin } from '@bnb-chain/greenfield-cosmos-types/cosmos/base/v1beta1/coin'; -import { TxBody, TxRaw } from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/tx'; -import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; -import { visibilityTypeFromJSON } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; -import { MsgCreateBucket } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { bytesFromBase64, Long } from '@bnb-chain/greenfield-cosmos-types/helpers'; -import { makeAuthInfoBytes } from '@cosmjs/proto-signing'; -import { bufferToHex } from '@ethereumjs/util'; -import { createEIP712, generateFee, generateMessage, generateTypes } from '../../../messages'; -import { - ICreateBucketMsg, - newMsgCreateBucket, - MsgCreateBucketSDKTypeEIP712, -} from '../../../messages/greenfield/storage/createBucket'; -import { sign712Tx } from '../../../sign'; -import { IRawTxInfo } from '../../../tx'; -import { BaseTx, IBaseMsg } from '../../baseTx'; - -export class CreateBucketTx extends BaseTx { - readonly rpcUrl: string; - readonly chainId: string; - public readonly txType: string; - - constructor(rpcUrl: string, chainId: string) { - super(rpcUrl, chainId, '/bnbchain.greenfield.storage.MsgCreateBucket'); - - this.rpcUrl = rpcUrl; - this.chainId = chainId; - this.txType = '/bnbchain.greenfield.storage.MsgCreateBucket'; - } - - public async signTx({ - bucketName, - from, - sequence, - primarySpAddress, - denom, - accountNumber, - expiredHeight, - chargedReadQuota, - sig, - visibility, - gasLimit, - gasPrice, - paymentAddress, - }: IBaseMsg & ICreateBucketMsg) { - const fee = generateFee( - String(BigInt(gasLimit) * BigInt(gasPrice)), - denom, - String(gasLimit), - from, - '', - ); - - const msg = newMsgCreateBucket({ - bucketName, - from, - expiredHeight, - visibility, - paymentAddress, - primarySpAddress, - chargedReadQuota, - sig, - }); - - const types = generateTypes(MsgCreateBucketSDKTypeEIP712); - const messages = generateMessage(accountNumber, sequence, this.chainId, '', fee, msg, '0'); - const eip712 = createEIP712(types, this.chainId, messages); - - return await sign712Tx(from, JSON.stringify(eip712)); - } - - public async getRawTxInfo({ - bucketName, - from, - sequence, - primarySpAddress, - denom, - expiredHeight, - sig, - visibility, - gasLimit, - sign, - pubKey, - chargedReadQuota, - gasPrice, - paymentAddress, - }: IBaseMsg & - ICreateBucketMsg & { - sign: string; - } & { - pubKey: BaseAccount['pubKey']; - }): Promise { - const bodyBytes = this.getSimulateBytes({ - primarySpAddress, - from, - denom, - bucketName, - expiredHeight, - sig, - visibility, - chargedReadQuota, - paymentAddress, - }); - const authInfoBytes = this.getAuthInfoBytes({ sequence, pubKey, denom, gasLimit, gasPrice }); - const signtureFromWallet = this.getSignture(sign); - - const txRaw = TxRaw.fromPartial({ - bodyBytes, - authInfoBytes, - signatures: [signtureFromWallet], - }); - - const txRawBytes = TxRaw.encode(txRaw).finish(); - - return { - bytes: txRawBytes, - hex: bufferToHex(Buffer.from(txRawBytes)), - }; - } - - public getAuthInfoBytes({ - sequence, - pubKey, - denom, - gasLimit, - gasPrice, - }: Pick & { - pubKey: BaseAccount['pubKey']; - }) { - if (!pubKey) throw new Error('pubKey is required'); - - const bigGasPrice = BigInt(gasPrice); - const bigGasLimit = BigInt(gasLimit); - - const feeAmount: Coin[] = [ - { - amount: String(bigGasPrice * bigGasLimit), - denom, - }, - ]; - const feeGranter = undefined; - const feePayer = undefined; - const authInfoBytes = makeAuthInfoBytes( - [{ pubkey: pubKey, sequence: Number(sequence) }], - feeAmount, - gasLimit, - feeGranter, - feePayer, - 712, - ); - - return authInfoBytes; - } - - public getSimulateBytes({ - from, - bucketName, - primarySpAddress, - expiredHeight, - sig, - visibility, - chargedReadQuota, - paymentAddress, - }: Pick< - IBaseMsg & ICreateBucketMsg, - | 'from' - | 'denom' - | 'bucketName' - | 'primarySpAddress' - | 'sig' - | 'expiredHeight' - | 'visibility' - | 'chargedReadQuota' - | 'paymentAddress' - >) { - const message = MsgCreateBucket.fromPartial({}); - message.bucketName = bucketName; - message.chargedReadQuota = chargedReadQuota - ? Long.fromNumber(0) - : Long.fromNumber(chargedReadQuota); - message.creator = from; - message.visibility = visibilityTypeFromJSON(visibility); - message.paymentAddress = paymentAddress; - message.primarySpAddress = primarySpAddress; - message.primarySpApproval = { - expiredHeight: Long.fromString(expiredHeight), - sig: bytesFromBase64(sig), - }; - - const messageBytes = MsgCreateBucket.encode(message).finish(); - const msgWrapped = Any.fromPartial({ - typeUrl: this.txType, - value: messageBytes, - }); - - const txBody = TxBody.fromPartial({ - messages: [msgWrapped], - }); - - return TxBody.encode(txBody).finish(); - } -} diff --git a/packages/chain-sdk/src/tx/bucket/del/index.ts b/packages/chain-sdk/src/tx/bucket/del/index.ts deleted file mode 100644 index c0943ae8..00000000 --- a/packages/chain-sdk/src/tx/bucket/del/index.ts +++ /dev/null @@ -1,146 +0,0 @@ -import { BaseAccount } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/auth'; -import { Coin } from '@bnb-chain/greenfield-cosmos-types/cosmos/base/v1beta1/coin'; -import { TxBody, TxRaw } from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/tx'; -import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; -import { MsgDeleteBucket } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { makeAuthInfoBytes } from '@cosmjs/proto-signing'; -import { bufferToHex } from '@ethereumjs/util'; -import { createEIP712, generateFee, generateMessage, generateTypes } from '../../../messages'; -import { - newMsgDeleteBucket, - MsgDeleteBucketSDKTypeEIP712, - TYPE_URL, - type IDeleteBucketMsg, -} from '../../../messages/greenfield/storage/deleteBucket'; -import { sign712Tx } from '../../../sign'; -import { type IRawTxInfo } from '../../../tx'; -import { BaseTx, type IBaseMsg } from '../../baseTx'; - -export class DelBucketTx extends BaseTx { - readonly rpcUrl: string; - readonly chainId: string; - public readonly txType: string; - - constructor(rpcUrl: string, chainId: string) { - super(rpcUrl, chainId, TYPE_URL); - - this.rpcUrl = rpcUrl; - this.chainId = chainId; - this.txType = TYPE_URL; - } - - public async signTx({ - from, - bucketName, - accountNumber, - sequence, - gasLimit, - denom, - gasPrice, - }: IBaseMsg & IDeleteBucketMsg) { - const fee = generateFee( - String(BigInt(gasLimit) * BigInt(gasPrice)), - denom, - String(gasLimit), - from, - '', - ); - const msg = newMsgDeleteBucket({ - bucketName, - from, - }); - - const types = generateTypes(MsgDeleteBucketSDKTypeEIP712); - const messages = generateMessage(accountNumber, sequence, this.chainId, '', fee, msg, '0'); - const eip712 = createEIP712(types, this.chainId, messages); - return await sign712Tx(from, JSON.stringify(eip712)); - } - - public async getRawTxInfo({ - bucketName, - from, - sequence, - gasLimit, - sign, - pubKey, - denom, - gasPrice, - }: IBaseMsg & - IDeleteBucketMsg & { - sign: string; - } & { - pubKey: BaseAccount['pubKey']; - }): Promise { - const bodyBytes = this.getSimulateBytes({ - from, - bucketName, - }); - const authInfoBytes = this.getAuthInfoBytes({ denom, sequence, pubKey, gasLimit, gasPrice }); - const signtureFromWallet = this.getSignture(sign); - - const txRaw = TxRaw.fromPartial({ - bodyBytes, - authInfoBytes, - signatures: [signtureFromWallet], - }); - - const txRawBytes = TxRaw.encode(txRaw).finish(); - - return { - bytes: txRawBytes, - hex: bufferToHex(Buffer.from(txRawBytes)), - }; - } - - public getSimulateBytes({ - from, - bucketName, - }: Pick): Uint8Array { - const message = MsgDeleteBucket.fromJSON({ - operator: from, - bucketName, - }); - const messageBytes = MsgDeleteBucket.encode(message).finish(); - const msgDemoWrapped = Any.fromPartial({ - typeUrl: this.txType, - value: messageBytes, - }); - - const txBody = TxBody.fromPartial({ - messages: [msgDemoWrapped], - }); - - return TxBody.encode(txBody).finish(); - } - - public getAuthInfoBytes({ - sequence, - pubKey, - denom, - gasLimit, - gasPrice, - }: Pick & { - pubKey: BaseAccount['pubKey']; - }) { - if (!pubKey) throw new Error('pubKey is required'); - - const feeAmount: Coin[] = [ - { - amount: String(BigInt(gasLimit) * BigInt(gasPrice)), - denom, - }, - ]; - const feeGranter = undefined; - const feePayer = undefined; - const authInfoBytes = makeAuthInfoBytes( - [{ pubkey: pubKey, sequence: Number(sequence) }], - feeAmount, - gasLimit, - feeGranter, - feePayer, - 712, - ); - - return authInfoBytes; - } -} diff --git a/packages/chain-sdk/src/tx/bucket/index.ts b/packages/chain-sdk/src/tx/bucket/index.ts deleted file mode 100644 index 5894252f..00000000 --- a/packages/chain-sdk/src/tx/bucket/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './create'; -export * from './del'; diff --git a/packages/chain-sdk/src/tx/index.ts b/packages/chain-sdk/src/tx/index.ts index 6474cdc9..00ee579d 100644 --- a/packages/chain-sdk/src/tx/index.ts +++ b/packages/chain-sdk/src/tx/index.ts @@ -1,8 +1,3 @@ -export * from './transfer'; -export * from './transferOut'; -export * from './bucket'; -export * from './object'; - export interface IRawTxInfo { bytes: Uint8Array; hex: string; diff --git a/packages/chain-sdk/src/tx/object/cancel-create/index.ts b/packages/chain-sdk/src/tx/object/cancel-create/index.ts deleted file mode 100644 index 1cff05bc..00000000 --- a/packages/chain-sdk/src/tx/object/cancel-create/index.ts +++ /dev/null @@ -1,143 +0,0 @@ -import { BaseAccount } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/auth'; -import { Coin } from '@bnb-chain/greenfield-cosmos-types/cosmos/base/v1beta1/coin'; -import { TxBody, TxRaw } from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/tx'; -import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; -import { MsgCancelCreateObject } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { makeAuthInfoBytes } from '@cosmjs/proto-signing'; -import { bufferToHex } from '@ethereumjs/util'; -import { createEIP712, generateFee, generateMessage, generateTypes } from '../../../messages'; -import { - ICancelCreateObjectMsg, - newMsgCancelCreateObject, - MsgCancelCreateObjectSDKTypeEIP712, -} from '../../../messages/greenfield/storage/cancelCreateObject'; -import { sign712Tx } from '../../../sign'; -import { IRawTxInfo } from '../../../tx'; -import { BaseTx, IBaseMsg } from '../../baseTx'; - -export class CancelCreateObjectTx extends BaseTx { - readonly rpcUrl: string; - readonly chainId: string; - public readonly txType: string; - - constructor(rpcUrl: string, chainId: string) { - super(rpcUrl, chainId, '/bnbchain.greenfield.storage.MsgCancelCreateObject'); - - this.rpcUrl = rpcUrl; - this.chainId = chainId; - this.txType = '/bnbchain.greenfield.storage.MsgCancelCreateObject'; - } - - public async signTx(params: IBaseMsg & ICancelCreateObjectMsg) { - const { accountNumber, bucketName, denom, gasLimit, gasPrice, objectName, sequence, from } = - params; - const fee = generateFee( - String(BigInt(gasLimit) * BigInt(gasPrice)), - denom, - String(gasLimit), - from, - '', - ); - const msg = newMsgCancelCreateObject({ - bucketName, - objectName, - from, - }); - const types = generateTypes(MsgCancelCreateObjectSDKTypeEIP712); - const messages = generateMessage(accountNumber, sequence, this.chainId, '', fee, msg, '0'); - const eip712 = createEIP712(types, this.chainId, messages); - - return await sign712Tx(from, JSON.stringify(eip712)); - } - - public async getRawTxInfo({ - bucketName, - from, - sequence, - gasLimit, - sign, - pubKey, - objectName, - denom, - gasPrice, - }: IBaseMsg & - ICancelCreateObjectMsg & { - sign: string; - } & { - pubKey: BaseAccount['pubKey']; - }): Promise { - const bodyBytes = this.getSimulateBytes({ - from, - bucketName, - objectName, - }); - const authInfoBytes = this.getAuthInfoBytes({ denom, sequence, pubKey, gasLimit, gasPrice }); - const signtureFromWallet = this.getSignture(sign); - - const txRaw = TxRaw.fromPartial({ - bodyBytes, - authInfoBytes, - signatures: [signtureFromWallet], - }); - - const txRawBytes = TxRaw.encode(txRaw).finish(); - - return { - bytes: txRawBytes, - hex: bufferToHex(Buffer.from(txRawBytes)), - }; - } - - public getSimulateBytes(params: ICancelCreateObjectMsg): Uint8Array { - const { from, bucketName, objectName } = params; - - const message = MsgCancelCreateObject.fromJSON({ - operator: from, - bucketName, - objectName, - }); - - const messageBytes = MsgCancelCreateObject.encode(message).finish(); - const msgWrapped = Any.fromPartial({ - typeUrl: this.txType, - value: messageBytes, - }); - - const txBody = TxBody.fromPartial({ - messages: [msgWrapped], - }); - - return TxBody.encode(txBody).finish(); - } - - public getAuthInfoBytes({ - sequence, - pubKey, - gasLimit, - denom, - gasPrice, - }: Pick & { - pubKey: BaseAccount['pubKey']; - }) { - if (!pubKey) throw new Error('pubKey is required'); - - const feeAmount: Coin[] = [ - { - amount: String(BigInt(gasPrice) * BigInt(gasLimit)), - denom, - }, - ]; - const feeGranter = undefined; - const feePayer = undefined; - const authInfoBytes = makeAuthInfoBytes( - [{ pubkey: pubKey, sequence: Number(sequence) }], - feeAmount, - gasLimit, - feeGranter, - feePayer, - 712, - ); - - return authInfoBytes; - } -} diff --git a/packages/chain-sdk/src/tx/object/create/index.ts b/packages/chain-sdk/src/tx/object/create/index.ts deleted file mode 100644 index 25157ba4..00000000 --- a/packages/chain-sdk/src/tx/object/create/index.ts +++ /dev/null @@ -1,215 +0,0 @@ -import { BaseAccount } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/auth'; -import { Coin } from '@bnb-chain/greenfield-cosmos-types/cosmos/base/v1beta1/coin'; -import { TxBody, TxRaw } from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/tx'; -import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; -import { - redundancyTypeFromJSON, - visibilityTypeFromJSON, -} from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; -import { MsgCreateObject } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { bytesFromBase64, Long } from '@bnb-chain/greenfield-cosmos-types/helpers'; -import { makeAuthInfoBytes } from '@cosmjs/proto-signing'; -import { bufferToHex } from '@ethereumjs/util'; -import { createEIP712, generateFee, generateMessage, generateTypes } from '../../../messages'; -import { - ICreateObjectMsg, - newMsgCreateObject, - MsgCreateObjectSDKTypeEIP712, -} from '../../../messages/greenfield/storage/createObject'; -import { sign712Tx } from '../../../sign'; -import { IRawTxInfo } from '../../../tx'; -import { BaseTx, IBaseMsg } from '../../baseTx'; - -export class CreateObjectTx extends BaseTx { - readonly rpcUrl: string; - readonly chainId: string; - public readonly txType: string; - - constructor(rpcUrl: string, chainId: string) { - super(rpcUrl, chainId, '/bnbchain.greenfield.storage.MsgCreateObject'); - - this.rpcUrl = rpcUrl; - this.chainId = chainId; - this.txType = '/bnbchain.greenfield.storage.MsgCreateObject'; - } - - public async signTx(params: IBaseMsg & ICreateObjectMsg) { - const { - accountNumber, - bucketName, - contentType, - denom, - expectChecksums, - expectSecondarySpAddresses, - expiredHeight, - from, - gasLimit, - objectName, - payloadSize, - redundancyType, - sequence, - sig, - visibility, - gasPrice, - } = params; - const fee = generateFee( - String(BigInt(gasLimit) * BigInt(gasPrice)), - denom, - String(gasLimit), - from, - '', - ); - const msg = newMsgCreateObject({ - bucketName, - contentType, - expectChecksums, - expectSecondarySpAddresses, - expiredHeight, - from, - objectName, - payloadSize, - redundancyType, - sig, - visibility, - }); - - const types = generateTypes(MsgCreateObjectSDKTypeEIP712); - const messages = generateMessage(accountNumber, sequence, this.chainId, '', fee, msg, '0'); - const eip712 = createEIP712(types, this.chainId, messages); - return await sign712Tx(from, JSON.stringify(eip712)); - } - - public async getRawTxInfo({ - bucketName, - contentType, - denom, - expectChecksums, - expectSecondarySpAddresses, - expiredHeight, - from, - gasLimit, - objectName, - payloadSize, - pubKey, - redundancyType, - sequence, - sig, - sign, - visibility, - gasPrice, - }: IBaseMsg & - ICreateObjectMsg & { - sign: string; - } & { - pubKey: BaseAccount['pubKey']; - }): Promise { - const bodyBytes = this.getSimulateBytes({ - from, - bucketName, - expiredHeight, - sig, - visibility, - contentType, - expectChecksums, - objectName, - payloadSize, - expectSecondarySpAddresses, - redundancyType, - }); - const authInfoBytes = this.getAuthInfoBytes({ denom, sequence, pubKey, gasLimit, gasPrice }); - const signtureFromWallet = this.getSignture(sign); - - const txRaw = TxRaw.fromPartial({ - bodyBytes, - authInfoBytes, - signatures: [signtureFromWallet], - }); - - const txRawBytes = TxRaw.encode(txRaw).finish(); - - return { - bytes: txRawBytes, - hex: bufferToHex(Buffer.from(txRawBytes)), - }; - } - - public getSimulateBytes(params: ICreateObjectMsg): Uint8Array { - const { - from, - bucketName, - objectName, - contentType, - visibility, - payloadSize, - expiredHeight, - sig, - expectChecksums, - expectSecondarySpAddresses, - redundancyType, - } = params; - - const message = MsgCreateObject.fromPartial({ - bucketName, - objectName, - contentType, - payloadSize, - creator: from, - expectSecondarySpAddresses, - }); - - message.visibility = - visibility === undefined ? visibilityTypeFromJSON(0) : visibilityTypeFromJSON(visibility); - message.redundancyType = - redundancyType === undefined - ? redundancyTypeFromJSON(0) - : redundancyTypeFromJSON(redundancyType); - message.primarySpApproval = { - expiredHeight: Long.fromString(expiredHeight), - sig: bytesFromBase64(sig), - }; - message.expectChecksums = expectChecksums.map((e: string) => bytesFromBase64(e)); - - const messageBytes = MsgCreateObject.encode(message).finish(); - const msgWrapped = Any.fromPartial({ - typeUrl: this.txType, - value: messageBytes, - }); - - const txBody = TxBody.fromPartial({ - messages: [msgWrapped], - }); - - return TxBody.encode(txBody).finish(); - } - - public getAuthInfoBytes({ - sequence, - pubKey, - gasLimit, - denom, - gasPrice, - }: Pick & { - pubKey: BaseAccount['pubKey']; - }) { - if (!pubKey) throw new Error('pubKey is required'); - - const feeAmount: Coin[] = [ - { - amount: String(BigInt(gasLimit) * BigInt(gasPrice)), - denom, - }, - ]; - const feeGranter = undefined; - const feePayer = undefined; - const authInfoBytes = makeAuthInfoBytes( - [{ pubkey: pubKey, sequence: Number(sequence) }], - feeAmount, - gasLimit, - feeGranter, - feePayer, - 712, - ); - - return authInfoBytes; - } -} diff --git a/packages/chain-sdk/src/tx/object/del/index.ts b/packages/chain-sdk/src/tx/object/del/index.ts deleted file mode 100644 index c319259c..00000000 --- a/packages/chain-sdk/src/tx/object/del/index.ts +++ /dev/null @@ -1,152 +0,0 @@ -import { BaseAccount } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/auth'; -import { Coin } from '@bnb-chain/greenfield-cosmos-types/cosmos/base/v1beta1/coin'; -import { TxBody, TxRaw } from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/tx'; -import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; -import { MsgDeleteObject } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { makeAuthInfoBytes } from '@cosmjs/proto-signing'; -import { bufferToHex } from '@ethereumjs/util'; -import { createEIP712, generateFee, generateMessage, generateTypes } from '../../../messages'; -import { - IDeleteObjectMsg, - newMsgDeleteObject, - MsgDeleteObjectSDKTypeEIP712, -} from '../../../messages/greenfield/storage/deleteObject'; -import { sign712Tx } from '../../../sign'; -import { IRawTxInfo } from '../../../tx'; -import { BaseTx, IBaseMsg } from '../../baseTx'; - -export class DelObjectTx extends BaseTx { - readonly rpcUrl: string; - readonly chainId: string; - public readonly txType: string; - - constructor(rpcUrl: string, chainId: string) { - super(rpcUrl, chainId, '/bnbchain.greenfield.storage.MsgDeleteObject'); - - this.rpcUrl = rpcUrl; - this.chainId = chainId; - this.txType = '/bnbchain.greenfield.storage.MsgDeleteObject'; - } - - public async signTx({ - bucketName, - objectName, - from, - sequence, - accountNumber, - gasLimit, - denom, - gasPrice, - }: IBaseMsg & IDeleteObjectMsg) { - const fee = generateFee( - String(BigInt(gasLimit) * BigInt(gasPrice)), - denom, - String(gasLimit), - from, - '', - ); - const msg = newMsgDeleteObject({ - bucketName, - from, - objectName, - }); - - const types = generateTypes(MsgDeleteObjectSDKTypeEIP712); - const messages = generateMessage(accountNumber, sequence, this.chainId, '', fee, msg, '0'); - const eip712 = createEIP712(types, this.chainId, messages); - - return await sign712Tx(from, JSON.stringify(eip712)); - } - - public async getRawTxInfo({ - bucketName, - from, - sequence, - gasLimit, - sign, - pubKey, - objectName, - denom, - gasPrice, - }: IBaseMsg & - IDeleteObjectMsg & { - sign: string; - } & { - pubKey: BaseAccount['pubKey']; - }): Promise { - const bodyBytes = this.getSimulateBytes({ - from, - bucketName, - objectName, - }); - const authInfoBytes = this.getAuthInfoBytes({ denom, sequence, pubKey, gasLimit, gasPrice }); - const signtureFromWallet = this.getSignture(sign); - - const txRaw = TxRaw.fromPartial({ - bodyBytes, - authInfoBytes, - signatures: [signtureFromWallet], - }); - - const txRawBytes = TxRaw.encode(txRaw).finish(); - - return { - bytes: txRawBytes, - hex: bufferToHex(Buffer.from(txRawBytes)), - }; - } - - public getSimulateBytes({ - from, - bucketName, - objectName, - }: Pick): Uint8Array { - const message = MsgDeleteObject.fromJSON({ - operator: from, - bucketName, - objectName, - }); - const messageBytes = MsgDeleteObject.encode(message).finish(); - const msgDemoWrapped = Any.fromPartial({ - typeUrl: this.txType, - value: messageBytes, - }); - - const txBody = TxBody.fromPartial({ - messages: [msgDemoWrapped], - }); - - return TxBody.encode(txBody).finish(); - } - - public getAuthInfoBytes({ - sequence, - pubKey, - gasLimit, - denom, - gasPrice, - }: Pick & { - pubKey: BaseAccount['pubKey']; - }) { - if (!pubKey) throw new Error('pubKey is required'); - - const feeAmount: Coin[] = [ - { - amount: String(BigInt(gasLimit) * BigInt(gasPrice)), - denom, - }, - ]; - const feeGranter = undefined; - const feePayer = undefined; - const authInfoBytes = makeAuthInfoBytes( - [{ pubkey: pubKey, sequence: Number(sequence) }], - feeAmount, - gasLimit, - feeGranter, - feePayer, - 712, - ); - - return authInfoBytes; - } -} diff --git a/packages/chain-sdk/src/tx/object/index.ts b/packages/chain-sdk/src/tx/object/index.ts deleted file mode 100644 index 83f3a8ed..00000000 --- a/packages/chain-sdk/src/tx/object/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './create'; -export * from './del'; -export * from './cancel-create'; diff --git a/packages/chain-sdk/src/tx/transfer/index.ts b/packages/chain-sdk/src/tx/transfer/index.ts deleted file mode 100644 index bcb77744..00000000 --- a/packages/chain-sdk/src/tx/transfer/index.ts +++ /dev/null @@ -1,172 +0,0 @@ -import { BaseAccount } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/auth'; -import { MsgSend } from '@bnb-chain/greenfield-cosmos-types/cosmos/bank/v1beta1/tx'; -import { Coin } from '@bnb-chain/greenfield-cosmos-types/cosmos/base/v1beta1/coin'; -import { TxBody, TxRaw } from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/tx'; -import { MsgSendSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/cosmos/bank/v1beta1/MsgSendSDKTypeEIP712'; -import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; -import { makeAuthInfoBytes } from '@cosmjs/proto-signing'; -import { bufferToHex } from '@ethereumjs/util'; -import { createEIP712, generateFee, generateMessage, generateTypes } from '../../messages'; -import { sign712Tx } from '../../sign/signTx'; -import { BaseTx, IBaseMsg, IRawTxInfo, ISendMsg } from '../baseTx'; -import { typeWrapper } from '../utils'; - -export interface ITransferTxInfo { - from: string; - to: string; - amount: string; -} - -const TYPE_URL = '/cosmos.bank.v1beta1.MsgSend'; -export class TransferTx extends BaseTx { - readonly rpcUrl: string; - readonly chainId: string; - public readonly txType: string; - - constructor(rpcUrl: string, chainId: string) { - super(rpcUrl, chainId, TYPE_URL); - this.rpcUrl = rpcUrl; - this.chainId = chainId; - this.txType = TYPE_URL; - } - - public async getRawTxInfo({ - sequence, - sign, - pubKey, - from, - to, - amount, - gasLimit, - denom, - gasPrice, - }: Pick< - ITransferTxInfo & IBaseMsg, - 'sequence' | 'from' | 'to' | 'amount' | 'gasLimit' | 'denom' | 'gasPrice' - > & { - sign: string; - } & { - pubKey: BaseAccount['pubKey']; - }): Promise { - const bodyBytes = this.getSimulateBytes({ from, to, amount, denom }); - const authInfoBytes = this.getAuthInfoBytes({ denom, sequence, pubKey, gasLimit, gasPrice }); - const signtureFromWallet = this.getSignture(sign); - - const txRaw = TxRaw.fromPartial({ - bodyBytes, - authInfoBytes, - signatures: [signtureFromWallet], - }); - - const txRawBytes = TxRaw.encode(txRaw).finish(); - - return { - bytes: txRawBytes, - hex: bufferToHex(Buffer.from(txRawBytes)), - }; - } - - public getSimulateBytes({ - from, - to, - amount, - denom, - }: Pick): Uint8Array { - const message = MsgSend.fromPartial({ - amount: [ - { - amount, - denom, - }, - ], - fromAddress: from, - toAddress: to, - }); - const messageBytes = MsgSend.encode(message).finish(); - - const msgWrapped = Any.fromPartial({ - typeUrl: this.txType, - value: messageBytes, - }); - - const txBody = TxBody.fromPartial({ - messages: [msgWrapped], - }); - - return TxBody.encode(txBody).finish(); - } - - public async signTx({ - from, - to, - sequence, - accountNumber, - amount, - denom, - gasLimit, - gasPrice, - }: IBaseMsg & ISendMsg) { - const fee = generateFee( - String(BigInt(gasLimit) * BigInt(gasPrice)), - denom, - String(gasLimit), - from, - '', - ); - - const msg = MsgSend.toSDK({ - amount: [ - { - amount, - denom, - }, - ], - fromAddress: from, - toAddress: to, - }); - - const wrapperMsg = typeWrapper(TYPE_URL, msg); - const types = generateTypes(MsgSendSDKTypeEIP712); - const messages = generateMessage( - accountNumber, - sequence, - this.chainId, - '', - fee, - wrapperMsg, - '0', - ); - const eip712 = createEIP712(types, this.chainId, messages); - return await sign712Tx(from, JSON.stringify(eip712)); - } - - public getAuthInfoBytes({ - sequence, - pubKey, - gasLimit, - denom, - gasPrice, - }: Pick & { - pubKey: BaseAccount['pubKey']; - }) { - if (!pubKey) throw new Error('pubKey is required'); - const feeAmount: Coin[] = [ - { - denom, - amount: String(BigInt(gasLimit) * BigInt(gasPrice)), - }, - ]; - const feeGranter = undefined; - const feePayer = undefined; - const authInfoBytes = makeAuthInfoBytes( - [{ pubkey: pubKey, sequence: Number(sequence) }], - feeAmount, - gasLimit, - feeGranter, - feePayer, - 712, - ); - - return authInfoBytes; - } -} diff --git a/packages/chain-sdk/src/tx/transferOut/index.ts b/packages/chain-sdk/src/tx/transferOut/index.ts deleted file mode 100644 index ea73c545..00000000 --- a/packages/chain-sdk/src/tx/transferOut/index.ts +++ /dev/null @@ -1,179 +0,0 @@ -import { BaseAccount } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/auth'; -import { Coin } from '@bnb-chain/greenfield-cosmos-types/cosmos/base/v1beta1/coin'; -import { TxBody, TxRaw } from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/tx'; -import { MsgTransferOutSDKTypeEIP712 } from '@bnb-chain/greenfield-cosmos-types/eip712/greenfield/bridge/MsgTransferOutSDKTypeEIP712'; -import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; -import { - QueryClientImpl, - QueryParamsRequest, -} from '@bnb-chain/greenfield-cosmos-types/greenfield/bridge/query'; -import { MsgTransferOut } from '@bnb-chain/greenfield-cosmos-types/greenfield/bridge/tx'; -import { makeAuthInfoBytes } from '@cosmjs/proto-signing'; -import { bufferToHex } from '@ethereumjs/util'; -import { createEIP712, generateFee, generateMessage, generateTypes } from '../../messages'; -import { sign712Tx } from '../../sign/signTx'; -import { BaseTx, IBaseMsg, IRawTxInfo, ISendMsg } from '../baseTx'; -import { typeWrapper } from '../utils'; -import { makeRpcClient } from '@/api/basic'; - -export const TYPE_URL = '/bnbchain.greenfield.bridge.MsgTransferOut'; - -export class TransferOutTx extends BaseTx { - readonly rpcUrl: string; - readonly chainId: string; - readonly txType: string; - - constructor(rpcUrl: string, chainId: string) { - super(rpcUrl, chainId, TYPE_URL); - - this.rpcUrl = rpcUrl; - this.chainId = chainId; - this.txType = TYPE_URL; - } - - public async getRawTxInfo({ - sequence, - sign, - pubKey, - from, - to, - amount, - denom, - gasLimit, - gasPrice, - }: Pick< - ISendMsg & IBaseMsg, - 'sequence' | 'from' | 'to' | 'amount' | 'denom' | 'gasLimit' | 'gasPrice' - > & { - sign: string; - } & { - pubKey: BaseAccount['pubKey']; - }): Promise { - const bodyBytes = this.getSimulateBytes({ from, to, amount, denom }); - const authInfoBytes = this.getAuthInfoBytes({ denom, sequence, pubKey, gasLimit, gasPrice }); - const signtureFromWallet = this.getSignture(sign); - - const txRaw = TxRaw.fromPartial({ - bodyBytes, - authInfoBytes, - signatures: [signtureFromWallet], - }); - - const txRawBytes = TxRaw.encode(txRaw).finish(); - - return { - bytes: txRawBytes, - hex: bufferToHex(Buffer.from(txRawBytes)), - }; - } - - public getSimulateBytes({ - from, - to, - amount, - denom, - }: Pick): Uint8Array { - const payload = { - from, - to, - amount: { - amount, - denom, - }, - }; - const message = MsgTransferOut.fromJSON(payload); - const messageBytes = MsgTransferOut.encode(message).finish(); - - const msgWrapped = Any.fromPartial({ - typeUrl: this.txType, - value: messageBytes, - }); - - const txBody = TxBody.fromPartial({ - messages: [msgWrapped], - }); - - return TxBody.encode(txBody).finish(); - } - - public getAuthInfoBytes({ - sequence, - pubKey, - gasLimit, - denom, - gasPrice, - }: Pick & { - pubKey: BaseAccount['pubKey']; - }) { - if (!pubKey) throw new Error('pubKey is required'); - - const feeAmount: Coin[] = [ - { - amount: String(BigInt(gasLimit) * BigInt(gasPrice)), - denom, - }, - ]; - const feeGranter = undefined; - const feePayer = undefined; - const authInfoBytes = makeAuthInfoBytes( - [{ pubkey: pubKey, sequence: Number(sequence) }], - feeAmount, - gasLimit, - feeGranter, - feePayer, - 712, - ); - - return authInfoBytes; - } - - public async signTx({ - from, - to, - sequence, - accountNumber, - amount, - denom, - gasLimit, - gasPrice, - }: ISendMsg & IBaseMsg) { - const fee = generateFee( - String(BigInt(gasLimit) * BigInt(gasPrice)), - denom, - String(gasLimit), - from, - '', - ); - // const msg = newMsgTransferOut(amount, denom, from, to); - const msg = MsgTransferOut.fromSDK({ - from, - to, - amount: { - amount, - denom, - }, - }); - - const wrappedMsg = typeWrapper(TYPE_URL, msg); - - const types = generateTypes(MsgTransferOutSDKTypeEIP712); - const messages = generateMessage( - accountNumber, - sequence, - this.chainId, - '', - fee, - wrappedMsg, - '0', - ); - const eip712 = createEIP712(types, this.chainId, messages); - return await sign712Tx(from, JSON.stringify(eip712)); - } - - public async simulateRelayFee() { - const rpcClient = await makeRpcClient(this.rpcUrl); - const rpc = new QueryClientImpl(rpcClient); - const data = QueryParamsRequest.encode({}).finish(); - return rpc.Params(data); - } -} diff --git a/packages/chain-sdk/src/types/tx.ts b/packages/chain-sdk/src/types/tx.ts index 6886f98e..8e821b15 100644 --- a/packages/chain-sdk/src/types/tx.ts +++ b/packages/chain-sdk/src/types/tx.ts @@ -5,15 +5,32 @@ export interface ISimulateGasFee { gasPrice: string; gasFee: string; } -export interface ITxOption { - denom: string; + +export type SignOptions = { + /** + * 0x prefix suffix + */ + privateKey: string; + /** + * wallet extension sign data by EIP712 + */ + signTypedDataCallback: (addr: string, eip712: string) => Promise; +}; + +export type TxOptions = { gasLimit: number; gasPrice: string; payer: string; granter: string; - simulate: boolean; -} -export type SimulateOrBroadResponse = ISimulateGasFee | DeliverTxResponse; -export type SimulateOrBroad = T['simulate'] extends true - ? ISimulateGasFee - : DeliverTxResponse; +}; + +export type SimulateOptions = { + denom: string; +}; + +export type BroadcastOptions = TxOptions & SimulateOptions & Partial; + +export type TxResponse = { + simulate: (opts: Readonly) => Promise; + broadcast: (opts: Readonly) => Promise; +}; diff --git a/packages/chain-sdk/src/utils/units.ts b/packages/chain-sdk/src/utils/units.ts index 6df6bd62..5011d8ba 100644 --- a/packages/chain-sdk/src/utils/units.ts +++ b/packages/chain-sdk/src/utils/units.ts @@ -1,6 +1,6 @@ -import { ISimulateGasFee } from '@/api/basic'; import { SimulateResponse } from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/service'; import { formatEther } from '@ethersproject/units'; +import { ISimulateGasFee } from '..'; export const getGasFeeBySimulate = ( simulateTxInfo: SimulateResponse, diff --git a/packages/chain-sdk/test/index.test.ts b/packages/chain-sdk/test/index.test.ts deleted file mode 100644 index 0322f9ec..00000000 --- a/packages/chain-sdk/test/index.test.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { assert } from 'chai'; -import { ZERO_PUBKEY, makeCosmsPubKey } from '../src'; - -describe('utils', () => { - it('makeCosmosPubkey', async () => { - const cosmosPubkey = makeCosmsPubKey(ZERO_PUBKEY); - assert.deepEqual(cosmosPubkey, { - typeUrl: '/ethermint.crypto.v1.ethsecp256k1.PubKey', - value: Uint8Array.from([ - 10, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - ]), - }); - }); -}); diff --git a/packages/file-handle/jest.config.mjs b/packages/file-handle/jest.config.mjs new file mode 100644 index 00000000..58efe501 --- /dev/null +++ b/packages/file-handle/jest.config.mjs @@ -0,0 +1,23 @@ +import { pathsToModuleNameMapper } from 'ts-jest'; + +/** @type {import('ts-jest').JestConfigWithTsJest} */ +export default { + preset: 'ts-jest', + testEnvironment: 'node', + // modulePathIgnorePatterns: ['/src/config.spec.ts'], + moduleNameMapper: { + ...pathsToModuleNameMapper({ '@/*': ['./src/*'] }, { prefix: '/' }), + '^(\\.{1,2}/.*)\\.js$': '$1', + }, + // transformIgnorePatterns: ['node_modules/(?!(@bnb-chain/greenfield-cosmos-types)/)'], + extensionsToTreatAsEsm: ['.ts'], + transform: { + '^.+\\.ts?$': [ + 'ts-jest', + { + // tsconfig: './config/tsconfig-cjs.json', + useESM: true, + }, + ], + }, +}; diff --git a/packages/file-handle/package.json b/packages/file-handle/package.json index d259f459..624837e8 100644 --- a/packages/file-handle/package.json +++ b/packages/file-handle/package.json @@ -26,7 +26,7 @@ "dev": "rollup -cw", "prebuild": "rimraf ./dist", "build": "rollup -c", - "test": "TS_NODE_PROJECT=./config/tsconfig-test.json node --es-module-specifier-resolution=node --loader ts-node/esm --nolazy ../../node_modules/mocha/lib/cli/cli.js --timeout 9999999 --color 'test/*.test.ts'", + "test": "jest", "lint": "prettier --write './src/*.{ts,tsx,js,jsx}' && eslint ./src/ --ext .js,.jsx,.ts,.tsx --fix" }, "keywords": [], @@ -52,16 +52,19 @@ "last 2 edge version" ] }, - "dependencies": {}, "devDependencies": { + "@jest/globals": "^29.5.0", + "@rollup/plugin-wasm": "^6.1.2", + "@types/jest": "^29.5.1", + "jest": "^29.5.0", "rollup": "^2.79.1", "rollup-plugin-auto-external": "^2.0.0", "rollup-plugin-node-builtins": "^2.1.2", "rollup-plugin-polyfill-node": "^0.10.2", "rollup-plugin-terser": "^7.0.2", - "@rollup/plugin-wasm": "^6.1.2", + "ts-jest": "^29.1.0", "ts-node": "^10.9.1", "tslib": "^2.5.0", "typescript": "^4.9.5" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index daf58ed7..30db5fcb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,7 +18,7 @@ importers: '@rollup/plugin-typescript': ^8.5.0 '@types/chai': ^4.3.5 '@types/mocha': ^9.1.1 - '@types/node': ^18.16.10 + '@types/node': ^18.16.13 '@types/react': ^18.2.6 '@types/react-dom': ^18.2.4 '@typescript-eslint/eslint-plugin': ^5.59.6 @@ -45,18 +45,18 @@ importers: '@rollup/plugin-json': 4.1.0_rollup@2.79.1 '@rollup/plugin-node-resolve': 13.3.0_rollup@2.79.1 '@rollup/plugin-strip': 3.0.2_rollup@2.79.1 - '@rollup/plugin-typescript': 8.5.0_vxwo7vqlqcs7hwrek7gmfkalae + '@rollup/plugin-typescript': 8.5.0_zptcx3kz3uwp66hzhyyt545weq '@types/chai': 4.3.5 '@types/mocha': 9.1.1 - '@types/node': 18.16.10 + '@types/node': 18.16.13 '@types/react': 18.2.6 '@types/react-dom': 18.2.4 - '@typescript-eslint/eslint-plugin': 5.59.6_hrzo544y7ygaq2nap7kmpxcgnm - '@typescript-eslint/parser': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq + '@typescript-eslint/eslint-plugin': 5.59.6_d2tnq3me7fwqifnmdgcmmzd77u + '@typescript-eslint/parser': 5.59.6_jgkqkwom7vrxl4kyi454n2sy2i chai: 4.3.7 conventional-changelog-cmyr-config: 2.1.0 eslint: 8.40.0 - eslint-config-react-app: 7.0.1_thperb4fnr5oocbjjbdebseave + eslint-config-react-app: 7.0.1_gyzglfzpridjovtqq5usnm7b5q eslint-plugin-prettier: 4.2.1_aq37wtubambsjkbuajxtwljxa4 husky: 8.0.3 lint-staged: 13.2.2 @@ -90,7 +90,8 @@ importers: react: 18.2.0 react-dom: 18.2.0 typescript: ^4.7.4 - wagmi: ^0.11.5 + viem: ^0.3.31 + wagmi: ^1.0.5 dependencies: '@bnb-chain/greenfield-chain-sdk': link:../../packages/chain-sdk '@bnb-chain/greenfield-cosmos-types': 0.3.0-alpha.8 @@ -110,11 +111,12 @@ importers: ethers: 5.7.2 evmosjs: 0.2.17 long: 5.2.1 - next: 13.1.6_3j7hb26pwgm6spbxoejtjx6xja + next: 13.1.6_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 typescript: 4.9.5 - wagmi: 0.11.7_76vh7hzkggrg75gljfbopgdmqi + viem: 0.3.31_typescript@4.9.5 + wagmi: 1.0.5_52rmszrm4bg4m3nhb6mgjy7grm devDependencies: cross-env: 7.0.3 dotenv: 16.0.3 @@ -127,75 +129,102 @@ importers: packages/chain-sdk: specifiers: - '@bnb-chain/greenfield-cosmos-types': 0.4.0-alpha.8 + '@bnb-chain/greenfield-cosmos-types': 0.4.0-alpha.9 '@bnb-chain/greenfiled-file-handle': workspace:* - '@cosmjs/proto-signing': ^0.29.5 - '@cosmjs/stargate': ^0.29.5 - '@cosmjs/tendermint-rpc': ^0.29.5 + '@cosmjs/proto-signing': ^0.30.1 + '@cosmjs/stargate': ^0.30.1 + '@cosmjs/tendermint-rpc': ^0.30.1 '@ethereumjs/util': ^8.0.5 '@ethersproject/signing-key': ^5.7.0 '@ethersproject/units': ^5.7.0 + '@jest/globals': ^29.5.0 '@metamask/eth-sig-util': ^5.0.2 + '@types/jest': ^29.5.1 + ethereum-cryptography: ^2.0.0 + jest: ^29.5.0 long: ^5.2.1 + reflect-metadata: ^0.1.13 rollup: ^2.79.1 rollup-plugin-auto-external: ^2.0.0 rollup-plugin-node-builtins: ^2.1.2 rollup-plugin-polyfill-node: ^0.10.2 rollup-plugin-terser: ^7.0.2 + ts-jest: ^29.1.0 ts-node: ^10.9.1 tslib: ^2.5.0 + tsyringe: ^4.7.0 typescript: ^4.9.5 dependencies: - '@bnb-chain/greenfield-cosmos-types': 0.4.0-alpha.8 + '@bnb-chain/greenfield-cosmos-types': 0.4.0-alpha.9 '@bnb-chain/greenfiled-file-handle': link:../file-handle - '@cosmjs/proto-signing': 0.29.5 - '@cosmjs/stargate': 0.29.5 - '@cosmjs/tendermint-rpc': 0.29.5 + '@cosmjs/proto-signing': 0.30.1 + '@cosmjs/stargate': 0.30.1 + '@cosmjs/tendermint-rpc': 0.30.1 '@ethereumjs/util': 8.0.5 '@ethersproject/signing-key': 5.7.0 '@ethersproject/units': 5.7.0 '@metamask/eth-sig-util': 5.0.2 + ethereum-cryptography: 2.0.0 long: 5.2.1 + reflect-metadata: 0.1.13 + tsyringe: 4.7.0 devDependencies: + '@jest/globals': 29.5.0 + '@types/jest': 29.5.1 + jest: 29.5.0_ztixajiphkh4mtv2gbkr4waa44 rollup: 2.79.1 rollup-plugin-auto-external: 2.0.0_rollup@2.79.1 rollup-plugin-node-builtins: 2.1.2 rollup-plugin-polyfill-node: 0.10.2_rollup@2.79.1 rollup-plugin-terser: 7.0.2_rollup@2.79.1 - ts-node: 10.9.1_wh5cciuul2ivno4sebepep4pie + ts-jest: 29.1.0_viinukn7nustgjlyhsmms6zpji + ts-node: 10.9.1_kad2biipqth74ckkc6ygvcanzi tslib: 2.5.0 typescript: 4.9.5 packages/file-handle: specifiers: + '@jest/globals': ^29.5.0 '@rollup/plugin-wasm': ^6.1.2 + '@types/jest': ^29.5.1 + jest: ^29.5.0 rollup: ^2.79.1 rollup-plugin-auto-external: ^2.0.0 rollup-plugin-node-builtins: ^2.1.2 rollup-plugin-polyfill-node: ^0.10.2 rollup-plugin-terser: ^7.0.2 + ts-jest: ^29.1.0 ts-node: ^10.9.1 tslib: ^2.5.0 typescript: ^4.9.5 devDependencies: + '@jest/globals': 29.5.0 '@rollup/plugin-wasm': 6.1.2_rollup@2.79.1 + '@types/jest': 29.5.1 + jest: 29.5.0_ztixajiphkh4mtv2gbkr4waa44 rollup: 2.79.1 rollup-plugin-auto-external: 2.0.0_rollup@2.79.1 rollup-plugin-node-builtins: 2.1.2 rollup-plugin-polyfill-node: 0.10.2_rollup@2.79.1 rollup-plugin-terser: 7.0.2_rollup@2.79.1 - ts-node: 10.9.1_dfji5vargqbhwd5qh6ylai2p3e + ts-jest: 29.1.0_viinukn7nustgjlyhsmms6zpji + ts-node: 10.9.1_kad2biipqth74ckkc6ygvcanzi tslib: 2.5.0 typescript: 4.9.5 packages: + /@adraffy/ens-normalize/1.9.0: + resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} + dev: false + /@ampproject/remapping/2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 + dev: true /@babel/code-frame/7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} @@ -209,10 +238,12 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 + dev: true /@babel/compat-data/7.21.7: resolution: {integrity: sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==} engines: {node: '>=6.9.0'} + dev: true /@babel/core/7.21.8: resolution: {integrity: sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==} @@ -235,6 +266,7 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: true /@babel/eslint-parser/7.21.8_r3wtitw7f7lufgjigaj6hnnlnu: resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} @@ -258,6 +290,7 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 + dev: true /@babel/helper-annotate-as-pure/7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} @@ -285,6 +318,7 @@ packages: browserslist: 4.21.5 lru-cache: 5.1.1 semver: 6.3.0 + dev: true /@babel/helper-create-class-features-plugin/7.21.8_@babel+core@7.21.8: resolution: {integrity: sha512-+THiN8MqiH2AczyuZrnrKL6cAxFRRQDKW9h1YkBvbgKmAm6mwiacig1qT73DHIWMGo40GRnsEfN3LA+E6NtmSw==} @@ -332,10 +366,12 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-environment-visitor/7.21.5: resolution: {integrity: sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-function-name/7.21.0: resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} @@ -343,12 +379,14 @@ packages: dependencies: '@babel/template': 7.20.7 '@babel/types': 7.21.5 + dev: true /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.5 + dev: true /@babel/helper-member-expression-to-functions/7.21.5: resolution: {integrity: sha512-nIcGfgwpH2u4n9GG1HpStW5Ogx7x7ekiFHbjjFRKXbn5zUvqO9ZgotCO4x1aNbKn/x/xOUaXEhyNHCwtFCpxWg==} @@ -362,6 +400,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.5 + dev: true /@babel/helper-module-transforms/7.21.5: resolution: {integrity: sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==} @@ -377,6 +416,7 @@ packages: '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-optimise-call-expression/7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} @@ -388,6 +428,7 @@ packages: /@babel/helper-plugin-utils/7.21.5: resolution: {integrity: sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.21.8: resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} @@ -423,6 +464,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.5 + dev: true /@babel/helper-skip-transparent-expression-wrappers/7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} @@ -436,18 +478,22 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.5 + dev: true /@babel/helper-string-parser/7.21.5: resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-validator-identifier/7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-validator-option/7.21.0: resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-wrap-function/7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} @@ -470,6 +516,7 @@ packages: '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color + dev: true /@babel/highlight/7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} @@ -478,6 +525,7 @@ packages: '@babel/helper-validator-identifier': 7.19.1 chalk: 2.4.2 js-tokens: 4.0.0 + dev: true /@babel/parser/7.21.8: resolution: {integrity: sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==} @@ -485,6 +533,7 @@ packages: hasBin: true dependencies: '@babel/types': 7.21.5 + dev: true /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.21.8: resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} @@ -717,6 +766,15 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.21.8: + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.8 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.21.8: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: @@ -1256,6 +1314,7 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.21.8: resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} @@ -1492,6 +1551,7 @@ packages: '@babel/code-frame': 7.21.4 '@babel/parser': 7.21.8 '@babel/types': 7.21.5 + dev: true /@babel/traverse/7.21.5: resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==} @@ -1509,6 +1569,7 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: true /@babel/types/7.21.5: resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} @@ -1517,6 +1578,11 @@ packages: '@babel/helper-string-parser': 7.21.5 '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 + dev: true + + /@bcoe/v8-coverage/0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true /@bnb-chain/greenfield-cosmos-types/0.3.0-alpha.8: resolution: {integrity: sha512-TaGFVdrKEKIOGPMh1AbrvqosxyIr+RgMPW8zBGGx9UNXgT6c5rvPri2GYSZo201Y9vELeiBJ3JQvsLyVCepV5w==} @@ -1525,8 +1591,8 @@ packages: protobufjs: 6.11.3 dev: false - /@bnb-chain/greenfield-cosmos-types/0.4.0-alpha.8: - resolution: {integrity: sha512-baOO2qSKMuzIn6Wj/D3lb9GIHCdVpebczjzgJx5QDuCJuhOTEyNRFeZ4afTn+nnJpb42BIS2jsjBr9XnJ7sc1Q==} + /@bnb-chain/greenfield-cosmos-types/0.4.0-alpha.9: + resolution: {integrity: sha512-SHkCoA/71pmEiwo4hw5z3GK0SOLYFPilcYCv/QpGFY0nhM4E0F9Qih+kIAZRmk4zPe50+6zF+NE9V46UjsS4WQ==} dependencies: long: 4.0.0 protobufjs: 6.11.3 @@ -1753,29 +1819,28 @@ packages: prettier: 2.8.8 dev: true - /@coinbase/wallet-sdk/3.6.5_@babel+core@7.21.8: - resolution: {integrity: sha512-8F91dvvC/+CTpaNTr+FgpLMa2YxjpXpE9pdnGewMoYi41ISbiXZado5VjYo9QSZlS+myzfKvDGpTzLFFUXPfDg==} + /@coinbase/wallet-sdk/3.6.6: + resolution: {integrity: sha512-vX+epj/Ttjo7XRwlr3TFUUfW5GTRMvORpERPwiu7z2jl3DSVL4rXLmHt5y6LDPlUVreas2gumdcFbu0fLRG9Jg==} engines: {node: '>= 10.0.0'} dependencies: '@metamask/safe-event-emitter': 2.0.0 - '@solana/web3.js': 1.74.0 + '@solana/web3.js': 1.76.0 bind-decorator: 1.0.11 bn.js: 5.2.1 buffer: 6.0.3 clsx: 1.2.1 - eth-block-tracker: 4.4.3_@babel+core@7.21.8 + eth-block-tracker: 6.1.0 eth-json-rpc-filters: 5.1.0 eth-rpc-errors: 4.0.2 json-rpc-engine: 6.1.0 keccak: 3.0.3 - preact: 10.13.2 - qs: 6.11.1 + preact: 10.14.1 + qs: 6.11.2 rxjs: 6.6.7 sha.js: 2.4.11 stream-browserify: 3.0.0 util: 0.12.5 transitivePeerDependencies: - - '@babel/core' - bufferutil - encoding - supports-color @@ -1868,15 +1933,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.16.10 + '@types/node': 18.16.13 chalk: 4.1.2 cosmiconfig: 8.1.3 - cosmiconfig-typescript-loader: 4.3.0_ibxj7nciepaflowmfgd2falzpm + cosmiconfig-typescript-loader: 4.3.0_a2puaduzak3h5uha6upr4sdmeq lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1_u5ax4hcaao6h6ctrp2v254guiq + ts-node: 10.9.1_kad2biipqth74ckkc6ygvcanzi typescript: 5.0.4 transitivePeerDependencies: - '@swc/core' @@ -1975,6 +2040,15 @@ packages: '@cosmjs/utils': 0.29.5 dev: false + /@cosmjs/amino/0.30.1: + resolution: {integrity: sha512-yNHnzmvAlkETDYIpeCTdVqgvrdt1qgkOXwuRVi8s27UKI5hfqyE9fJ/fuunXE6ZZPnKkjIecDznmuUOMrMvw4w==} + dependencies: + '@cosmjs/crypto': 0.30.1 + '@cosmjs/encoding': 0.30.1 + '@cosmjs/math': 0.30.1 + '@cosmjs/utils': 0.30.1 + dev: false + /@cosmjs/crypto/0.28.13: resolution: {integrity: sha512-ynKfM0q/tMBQMHJby6ad8lR3gkgBKaelQhIsCZTjClsnuC7oYT9y3ThSZCUWr7Pa9h0J8ahU2YV2oFWFVWJQzQ==} dependencies: @@ -1999,6 +2073,18 @@ packages: libsodium-wrappers: 0.7.11 dev: false + /@cosmjs/crypto/0.30.1: + resolution: {integrity: sha512-rAljUlake3MSXs9xAm87mu34GfBLN0h/1uPPV6jEwClWjNkAMotzjC0ab9MARy5FFAvYHL3lWb57bhkbt2GtzQ==} + dependencies: + '@cosmjs/encoding': 0.30.1 + '@cosmjs/math': 0.30.1 + '@cosmjs/utils': 0.30.1 + '@noble/hashes': 1.3.0 + bn.js: 5.2.1 + elliptic: 6.5.4 + libsodium-wrappers: 0.7.11 + dev: false + /@cosmjs/encoding/0.28.13: resolution: {integrity: sha512-jtXbAYtV77rLHxoIrjGFsvgGjeTKttuHRv6cvuy3toCZzY7JzTclKH5O2g36IIE4lXwD9xwuhGJ2aa6A3dhNkA==} dependencies: @@ -2015,6 +2101,14 @@ packages: readonly-date: 1.0.0 dev: false + /@cosmjs/encoding/0.30.1: + resolution: {integrity: sha512-rXmrTbgqwihORwJ3xYhIgQFfMSrwLu1s43RIK9I8EBudPx3KmnmyAKzMOVsRDo9edLFNuZ9GIvysUCwQfq3WlQ==} + dependencies: + base64-js: 1.5.1 + bech32: 1.1.4 + readonly-date: 1.0.0 + dev: false + /@cosmjs/json-rpc/0.29.5: resolution: {integrity: sha512-C78+X06l+r9xwdM1yFWIpGl03LhB9NdM1xvZpQHwgCOl0Ir/WV8pw48y3Ez2awAoUBRfTeejPe4KvrE6NoIi/w==} dependencies: @@ -2022,6 +2116,13 @@ packages: xstream: 11.14.0 dev: false + /@cosmjs/json-rpc/0.30.1: + resolution: {integrity: sha512-pitfC/2YN9t+kXZCbNuyrZ6M8abnCC2n62m+JtU9vQUfaEtVsgy+1Fk4TRQ175+pIWSdBMFi2wT8FWVEE4RhxQ==} + dependencies: + '@cosmjs/stream': 0.30.1 + xstream: 11.14.0 + dev: false + /@cosmjs/math/0.28.13: resolution: {integrity: sha512-PDpL8W/kbyeWi0mQ2OruyqE8ZUAdxPs1xCbDX3WXJwy2oU+X2UTbkuweJHVpS9CIqmZulBoWQAmlf6t6zr1N/g==} dependencies: @@ -2034,6 +2135,12 @@ packages: bn.js: 5.2.1 dev: false + /@cosmjs/math/0.30.1: + resolution: {integrity: sha512-yaoeI23pin9ZiPHIisa6qqLngfnBR/25tSaWpkTm8Cy10MX70UF5oN4+/t1heLaM6SSmRrhk3psRkV4+7mH51Q==} + dependencies: + bn.js: 5.2.1 + dev: false + /@cosmjs/proto-signing/0.28.13: resolution: {integrity: sha512-nSl/2ZLsUJYz3Ad0RY3ihZUgRHIow2OnYqKsESMu+3RA/jTi9bDYhiBu8mNMHI0xrEJry918B2CyI56pOUHdPQ==} dependencies: @@ -2058,6 +2165,18 @@ packages: long: 4.0.0 dev: false + /@cosmjs/proto-signing/0.30.1: + resolution: {integrity: sha512-tXh8pPYXV4aiJVhTKHGyeZekjj+K9s2KKojMB93Gcob2DxUjfKapFYBMJSgfKPuWUPEmyr8Q9km2hplI38ILgQ==} + dependencies: + '@cosmjs/amino': 0.30.1 + '@cosmjs/crypto': 0.30.1 + '@cosmjs/encoding': 0.30.1 + '@cosmjs/math': 0.30.1 + '@cosmjs/utils': 0.30.1 + cosmjs-types: 0.7.2 + long: 4.0.0 + dev: false + /@cosmjs/socket/0.29.5: resolution: {integrity: sha512-5VYDupIWbIXq3ftPV1LkS5Ya/T7Ol/AzWVhNxZ79hPe/mBfv1bGau/LqIYOm2zxGlgm9hBHOTmWGqNYDwr9LNQ==} dependencies: @@ -2070,6 +2189,18 @@ packages: - utf-8-validate dev: false + /@cosmjs/socket/0.30.1: + resolution: {integrity: sha512-r6MpDL+9N+qOS/D5VaxnPaMJ3flwQ36G+vPvYJsXArj93BjgyFB7BwWwXCQDzZ+23cfChPUfhbINOenr8N2Kow==} + dependencies: + '@cosmjs/stream': 0.30.1 + isomorphic-ws: 4.0.1_ws@7.5.9 + ws: 7.5.9 + xstream: 11.14.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + /@cosmjs/stargate/0.29.5: resolution: {integrity: sha512-hjEv8UUlJruLrYGJcUZXM/CziaINOKwfVm2BoSdUnNTMxGvY/jC1ABHKeZUYt9oXHxEJ1n9+pDqzbKc8pT0nBw==} dependencies: @@ -2091,12 +2222,39 @@ packages: - utf-8-validate dev: false + /@cosmjs/stargate/0.30.1: + resolution: {integrity: sha512-RdbYKZCGOH8gWebO7r6WvNnQMxHrNXInY/gPHPzMjbQF6UatA6fNM2G2tdgS5j5u7FTqlCI10stNXrknaNdzog==} + dependencies: + '@confio/ics23': 0.6.8 + '@cosmjs/amino': 0.30.1 + '@cosmjs/encoding': 0.30.1 + '@cosmjs/math': 0.30.1 + '@cosmjs/proto-signing': 0.30.1 + '@cosmjs/stream': 0.30.1 + '@cosmjs/tendermint-rpc': 0.30.1 + '@cosmjs/utils': 0.30.1 + cosmjs-types: 0.7.2 + long: 4.0.0 + protobufjs: 6.11.3 + xstream: 11.14.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: false + /@cosmjs/stream/0.29.5: resolution: {integrity: sha512-TToTDWyH1p05GBtF0Y8jFw2C+4783ueDCmDyxOMM6EU82IqpmIbfwcdMOCAm0JhnyMh+ocdebbFvnX/sGKzRAA==} dependencies: xstream: 11.14.0 dev: false + /@cosmjs/stream/0.30.1: + resolution: {integrity: sha512-Fg0pWz1zXQdoxQZpdHRMGvUH5RqS6tPv+j9Eh7Q953UjMlrwZVo0YFLC8OTf/HKVf10E4i0u6aM8D69Q6cNkgQ==} + dependencies: + xstream: 11.14.0 + dev: false + /@cosmjs/tendermint-rpc/0.29.5: resolution: {integrity: sha512-ar80twieuAxsy0x2za/aO3kBr2DFPAXDmk2ikDbmkda+qqfXgl35l9CVAAjKRqd9d+cRvbQyb5M4wy6XQpEV6w==} dependencies: @@ -2116,6 +2274,25 @@ packages: - utf-8-validate dev: false + /@cosmjs/tendermint-rpc/0.30.1: + resolution: {integrity: sha512-Z3nCwhXSbPZJ++v85zHObeUggrEHVfm1u18ZRwXxFE9ZMl5mXTybnwYhczuYOl7KRskgwlB+rID0WYACxj4wdQ==} + dependencies: + '@cosmjs/crypto': 0.30.1 + '@cosmjs/encoding': 0.30.1 + '@cosmjs/json-rpc': 0.30.1 + '@cosmjs/math': 0.30.1 + '@cosmjs/socket': 0.30.1 + '@cosmjs/stream': 0.30.1 + '@cosmjs/utils': 0.30.1 + axios: 0.21.4 + readonly-date: 1.0.0 + xstream: 11.14.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: false + /@cosmjs/utils/0.28.13: resolution: {integrity: sha512-dVeMBiyg+46x7XBZEfJK8yTihphbCFpjVYmLJVqmTsHfJwymQ65cpyW/C+V/LgWARGK8hWQ/aX9HM5Ao8QmMSg==} dev: false @@ -2124,11 +2301,16 @@ packages: resolution: {integrity: sha512-m7h+RXDUxOzEOGt4P+3OVPX7PuakZT3GBmaM/Y2u+abN3xZkziykD/NvedYFvvCCdQo714XcGl33bwifS9FZPQ==} dev: false + /@cosmjs/utils/0.30.1: + resolution: {integrity: sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g==} + dev: false + /@cspotcode/source-map-support/0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 + dev: true /@eslint-community/eslint-utils/4.4.0_eslint@8.40.0: resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} @@ -2561,6 +2743,235 @@ packages: /@humanwhocodes/object-schema/1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@istanbuljs/load-nyc-config/1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema/0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console/29.5.0: + resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 18.16.13 + chalk: 4.1.2 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + slash: 3.0.0 + dev: true + + /@jest/core/29.5.0_ts-node@10.9.1: + resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.5.0 + '@jest/reporters': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.13 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.8.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.5.0 + jest-config: 29.5.0_ztixajiphkh4mtv2gbkr4waa44 + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-resolve-dependencies: 29.5.0 + jest-runner: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + jest-watcher: 29.5.0 + micromatch: 4.0.5 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /@jest/environment/29.5.0: + resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.13 + jest-mock: 29.5.0 + dev: true + + /@jest/expect-utils/29.5.0: + resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.4.3 + dev: true + + /@jest/expect/29.5.0: + resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.5.0 + jest-snapshot: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers/29.5.0: + resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@sinonjs/fake-timers': 10.2.0 + '@types/node': 18.16.13 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-util: 29.5.0 + dev: true + + /@jest/globals/29.5.0: + resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/types': 29.5.0 + jest-mock: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters/29.5.0: + resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@jridgewell/trace-mapping': 0.3.18 + '@types/node': 18.16.13 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + jest-worker: 29.5.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas/29.4.3: + resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.25.24 + dev: true + + /@jest/source-map/29.4.3: + resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result/29.5.0: + resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.5.0 + '@jest/types': 29.5.0 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 + dev: true + + /@jest/test-sequencer/29.5.0: + resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.5.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + slash: 3.0.0 + dev: true + + /@jest/transform/29.5.0: + resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.21.8 + '@jest/types': 29.5.0 + '@jridgewell/trace-mapping': 0.3.18 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + micromatch: 4.0.5 + pirates: 4.0.5 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types/29.5.0: + resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.16.13 + '@types/yargs': 17.0.24 + chalk: 4.1.2 + dev: true + /@jridgewell/gen-mapping/0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} @@ -2577,14 +2988,22 @@ packages: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.18 + dev: true /@jridgewell/resolve-uri/3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/resolve-uri/3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true /@jridgewell/set-array/1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} + dev: true /@jridgewell/source-map/0.3.2: resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} @@ -2595,9 +3014,11 @@ packages: /@jridgewell/sourcemap-codec/1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true /@jridgewell/sourcemap-codec/1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true /@jridgewell/trace-mapping/0.3.17: resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} @@ -2611,12 +3032,14 @@ packages: dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 + dev: true /@jridgewell/trace-mapping/0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true /@json-rpc-tools/provider/1.7.6: resolution: {integrity: sha512-z7D3xvJ33UfCGv77n40lbzOYjZKVM3k2+5cV7xS8G6SCvKTzMkhkUYuD/qzQUNT4cG/lv0e9mRToweEEVLVVmA==} @@ -2651,14 +3074,14 @@ packages: resolution: {integrity: sha512-TQ21IjcZOw/scqypaVFY3jHVqI7X7Hta3qN/us6FvTol3AY06UmrhhXGww0E9xHmAbdX241ddwXEiMBSQZFr9g==} dev: false - /@lit-labs/ssr-dom-shim/1.1.0: - resolution: {integrity: sha512-92uQ5ARf7UXYrzaFcAX3T2rTvaS9Z1//ukV+DqjACM4c8s0ZBQd7ayJU5Dh2AFLD/Ayuyz4uMmxQec8q3U4Ong==} + /@lit-labs/ssr-dom-shim/1.1.1: + resolution: {integrity: sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==} dev: false /@lit/reactive-element/1.6.1: resolution: {integrity: sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA==} dependencies: - '@lit-labs/ssr-dom-shim': 1.1.0 + '@lit-labs/ssr-dom-shim': 1.1.1 dev: false /@manypkg/find-root/1.1.0: @@ -2708,31 +3131,43 @@ packages: resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} dev: false + /@metamask/utils/3.6.0: + resolution: {integrity: sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@types/debug': 4.1.7 + debug: 4.3.4 + semver: 7.5.1 + superstruct: 1.0.3 + transitivePeerDependencies: + - supports-color + dev: false + /@motionone/animation/10.15.1: resolution: {integrity: sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==} dependencies: '@motionone/easing': 10.15.1 '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 - tslib: 2.5.0 + tslib: 2.5.1 dev: false - /@motionone/dom/10.15.5: - resolution: {integrity: sha512-Xc5avlgyh3xukU9tydh9+8mB8+2zAq+WlLsC3eEIp7Ax7DnXgY7Bj/iv0a4X2R9z9ZFZiaXK3BO0xMYHKbAAdA==} + /@motionone/dom/10.16.2: + resolution: {integrity: sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg==} dependencies: '@motionone/animation': 10.15.1 '@motionone/generators': 10.15.1 '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 hey-listen: 1.0.8 - tslib: 2.5.0 + tslib: 2.5.1 dev: false /@motionone/easing/10.15.1: resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==} dependencies: '@motionone/utils': 10.15.1 - tslib: 2.5.0 + tslib: 2.5.1 dev: false /@motionone/generators/10.15.1: @@ -2740,14 +3175,14 @@ packages: dependencies: '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 - tslib: 2.5.0 + tslib: 2.5.1 dev: false - /@motionone/svelte/10.15.5: - resolution: {integrity: sha512-Xyxtgp7BlVnSBwcoFmXGHUVnpNktzeXsEifu2NJJWc7VGuxutDsBZxNdz80qvpLIC5MeBa1wh7GGegZzTm1msg==} + /@motionone/svelte/10.16.2: + resolution: {integrity: sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==} dependencies: - '@motionone/dom': 10.15.5 - tslib: 2.5.0 + '@motionone/dom': 10.16.2 + tslib: 2.5.1 dev: false /@motionone/types/10.15.1: @@ -2759,14 +3194,14 @@ packages: dependencies: '@motionone/types': 10.15.1 hey-listen: 1.0.8 - tslib: 2.5.0 + tslib: 2.5.1 dev: false - /@motionone/vue/10.15.5: - resolution: {integrity: sha512-cUENrLYAolUacHvCgU+8wF9OgSlVutfWbHMLERI/bElCJ+e2YVQvG/CpGhIM5fYOOJzuvg2T2wHmLLmvJoavEw==} + /@motionone/vue/10.16.2: + resolution: {integrity: sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==} dependencies: - '@motionone/dom': 10.15.5 - tslib: 2.5.0 + '@motionone/dom': 10.16.2 + tslib: 2.5.1 dev: false /@next/env/13.1.6: @@ -2906,8 +3341,10 @@ packages: eslint-scope: 5.1.1 dev: true - /@noble/ed25519/1.7.3: - resolution: {integrity: sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==} + /@noble/curves/1.0.0: + resolution: {integrity: sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==} + dependencies: + '@noble/hashes': 1.3.0 dev: false /@noble/hashes/1.2.0: @@ -3095,7 +3532,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-typescript/8.5.0_vxwo7vqlqcs7hwrek7gmfkalae: + /@rollup/plugin-typescript/8.5.0_zptcx3kz3uwp66hzhyyt545weq: resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} engines: {node: '>=8.0.0'} peerDependencies: @@ -3109,7 +3546,7 @@ packages: '@rollup/pluginutils': 3.1.0_rollup@2.79.1 resolve: 1.22.2 rollup: 2.79.1 - typescript: 5.0.4 + typescript: 4.9.5 dev: true /@rollup/plugin-wasm/6.1.2_rollup@2.79.1: @@ -3165,10 +3602,10 @@ packages: - utf-8-validate dev: false - /@safe-global/safe-apps-sdk/7.10.1: - resolution: {integrity: sha512-2imnqAbx9XrqT3psrhe/YVpj2yW840ngJIuqv0nTiWJLKcTCzM2LJ4MH7ir7H8Sp2wdG/BqNB3SvjUAks2qNjQ==} + /@safe-global/safe-apps-sdk/7.11.0: + resolution: {integrity: sha512-RDamzPM1Lhhiiz0O+Dn6FkFqIh47jmZX+HCV/BBnBBOSKfBJE//IGD3+02zMgojXHTikQAburdPes9qmH1SA1A==} dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.7.0 + '@safe-global/safe-gateway-typescript-sdk': 3.7.3 ethers: 5.7.2 transitivePeerDependencies: - bufferutil @@ -3179,7 +3616,7 @@ packages: /@safe-global/safe-apps-sdk/7.9.0: resolution: {integrity: sha512-S2EI+JL8ocSgE3uGNaDZCzKmwfhtxXZFDUP76vN0FeaY35itFMyi8F0Vhxu0XnZm3yLzJE3tp5px6GhuQFLU6w==} dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.7.0 + '@safe-global/safe-gateway-typescript-sdk': 3.7.3 ethers: 5.7.2 transitivePeerDependencies: - bufferutil @@ -3187,10 +3624,10 @@ packages: - utf-8-validate dev: false - /@safe-global/safe-gateway-typescript-sdk/3.7.0: - resolution: {integrity: sha512-3BvlUgp0oZ1Zkn7nG3wY1jvCEE4t530BjKcaa3r0qsf0whf/ez/0gmQwk7DTOGmVmvOfjj6HHikxnrUCCX+/3Q==} + /@safe-global/safe-gateway-typescript-sdk/3.7.3: + resolution: {integrity: sha512-O6JCgXNZWG0Vv8FnOEjKfcbsP0WxGvoPJk5ufqUrsyBlHup16It6oaLnn+25nXFLBZOHI1bz8429JlqAc2t2hg==} dependencies: - cross-fetch: 3.1.5 + cross-fetch: 3.1.6 transitivePeerDependencies: - encoding dev: false @@ -3207,6 +3644,14 @@ packages: '@scure/base': 1.1.1 dev: false + /@scure/bip32/1.3.0: + resolution: {integrity: sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==} + dependencies: + '@noble/curves': 1.0.0 + '@noble/hashes': 1.3.0 + '@scure/base': 1.1.1 + dev: false + /@scure/bip39/1.1.1: resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} dependencies: @@ -3214,6 +3659,29 @@ packages: '@scure/base': 1.1.1 dev: false + /@scure/bip39/1.2.0: + resolution: {integrity: sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==} + dependencies: + '@noble/hashes': 1.3.0 + '@scure/base': 1.1.1 + dev: false + + /@sinclair/typebox/0.25.24: + resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} + dev: true + + /@sinonjs/commons/3.0.0: + resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers/10.2.0: + resolution: {integrity: sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==} + dependencies: + '@sinonjs/commons': 3.0.0 + dev: true + /@solana/buffer-layout/4.0.1: resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} engines: {node: '>=5.10'} @@ -3221,20 +3689,19 @@ packages: buffer: 6.0.3 dev: false - /@solana/web3.js/1.74.0: - resolution: {integrity: sha512-RKZyPqizPCxmpMGfpu4fuplNZEWCrhRBjjVstv5QnAJvgln1jgOfgui+rjl1ExnqDnWKg9uaZ5jtGROH/cwabg==} + /@solana/web3.js/1.76.0: + resolution: {integrity: sha512-aJtF/nTs+9St+KtTK/wgVJ+SinfjYzn+3w1ygYIPw8ST6LH+qHBn8XkodgDTwlv/xzNkaVz1kkUDOZ8BPXyZWA==} dependencies: '@babel/runtime': 7.21.5 - '@noble/ed25519': 1.7.3 + '@noble/curves': 1.0.0 '@noble/hashes': 1.3.0 - '@noble/secp256k1': 1.7.1 '@solana/buffer-layout': 4.0.1 agentkeepalive: 4.3.0 bigint-buffer: 1.1.5 bn.js: 5.2.1 borsh: 0.7.0 bs58: 4.0.1 - buffer: 6.0.1 + buffer: 6.0.3 fast-stable-stringify: 1.0.0 jayson: 3.7.0 node-fetch: 2.6.11 @@ -3369,33 +3836,33 @@ packages: tslib: 2.5.0 dev: false - /@tanstack/query-core/4.27.0: - resolution: {integrity: sha512-sm+QncWaPmM73IPwFlmWSKPqjdTXZeFf/7aEmWh00z7yl2FjqophPt0dE1EHW9P1giMC5rMviv7OUbSDmWzXXA==} + /@tanstack/query-core/4.29.7: + resolution: {integrity: sha512-GXG4b5hV2Loir+h2G+RXhJdoZhJLnrBWsuLB2r0qBRyhWuXq9w/dWxzvpP89H0UARlH6Mr9DiVj4SMtpkF/aUA==} dev: false - /@tanstack/query-persist-client-core/4.27.0: - resolution: {integrity: sha512-A+dPA7zG0MJOMDeBc/2WcKXW4wV2JMkeBVydobPW9G02M4q0yAj7vI+7SmM2dFuXyIvxXp4KulCywN6abRKDSQ==} + /@tanstack/query-persist-client-core/4.29.7: + resolution: {integrity: sha512-/QahvSq9/f8hetCsCd9MaOy6fAoPn0YDGDcl6TTobqdr9kHMgrM9laP9yKJFg2hm5/jIsrCMDO/iCnxBiUhrqw==} dependencies: - '@tanstack/query-core': 4.27.0 + '@tanstack/query-core': 4.29.7 dev: false - /@tanstack/query-sync-storage-persister/4.27.1: - resolution: {integrity: sha512-vClLXtyQZwfV8QTyxqfkEzZSuwIKnrxORAUyxvCDna1M9xao0HtKYsChPVaJoSZ42PNGGvKCiKdg4kfyLeWj+A==} + /@tanstack/query-sync-storage-persister/4.29.7: + resolution: {integrity: sha512-XWys8hez8eFIb9+oYNs0Jumfjz8afEwN52VSrHJEWg7gZO/Y/8ziI80cNlaDNB+60t7s3TaspKXT5z8DNFsCkQ==} dependencies: - '@tanstack/query-persist-client-core': 4.27.0 + '@tanstack/query-persist-client-core': 4.29.7 dev: false - /@tanstack/react-query-persist-client/4.28.0_qfusmmwykmcbgdy37sd3cqxiry: - resolution: {integrity: sha512-xNpi3YdPOQIyYkKhByYDqTlyCeqICWFhV5PWkoVxYfzlRK6HYX4s+9Int407jEvhBz9cGC4OaL7rd6bynCFrYg==} + /@tanstack/react-query-persist-client/4.29.7_776iqyc7ir26b73sx2hj4bwzwu: + resolution: {integrity: sha512-KYUeESnthjjcfakpAei9Cz5gsIm1uDAVHrKcIAoARQwksk4j0KAo9ieExoIhL9v4mpTOlE9GsuZ/y06ANmaVaQ==} peerDependencies: - '@tanstack/react-query': 4.28.0 + '@tanstack/react-query': 4.29.7 dependencies: - '@tanstack/query-persist-client-core': 4.27.0 - '@tanstack/react-query': 4.28.0_biqbaboplfbrettd7655fr4n2y + '@tanstack/query-persist-client-core': 4.29.7 + '@tanstack/react-query': 4.29.7_biqbaboplfbrettd7655fr4n2y dev: false - /@tanstack/react-query/4.28.0_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-8cGBV5300RHlvYdS4ea+G1JcZIt5CIuprXYFnsWggkmGoC0b5JaqG0fIX3qwDL9PTNkKvG76NGThIWbpXivMrQ==} + /@tanstack/react-query/4.29.7_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-ijBWEzAIo09fB1yd22slRZzprrZ5zMdWYzBnCg5qiXuFbH78uGN1qtGz8+Ed4MuhaPaYSD+hykn+QEKtQviEtg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -3406,7 +3873,7 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.27.0 + '@tanstack/query-core': 4.29.7 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 use-sync-external-store: 1.2.0_react@18.2.0 @@ -3414,15 +3881,48 @@ packages: /@tsconfig/node10/1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true /@tsconfig/node12/1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true /@tsconfig/node14/1.0.3: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true /@tsconfig/node16/1.0.3: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} + dev: true + + /@types/babel__core/7.20.0: + resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} + dependencies: + '@babel/parser': 7.21.8 + '@babel/types': 7.21.5 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.18.5 + dev: true + + /@types/babel__generator/7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + dependencies: + '@babel/types': 7.21.5 + dev: true + + /@types/babel__template/7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + dependencies: + '@babel/parser': 7.21.8 + '@babel/types': 7.21.5 + dev: true + + /@types/babel__traverse/7.18.5: + resolution: {integrity: sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==} + dependencies: + '@babel/types': 7.21.5 + dev: true /@types/bn.js/4.11.6: resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} @@ -3440,6 +3940,12 @@ packages: '@types/node': 18.16.7 dev: false + /@types/debug/4.1.7: + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + dependencies: + '@types/ms': 0.7.31 + dev: false + /@types/estree/0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} dev: true @@ -3448,12 +3954,41 @@ packages: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} dev: true + /@types/graceful-fs/4.1.6: + resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} + dependencies: + '@types/node': 18.16.13 + dev: true + /@types/is-ci/3.0.0: resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} dependencies: ci-info: 3.8.0 dev: true + /@types/istanbul-lib-coverage/2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + dev: true + + /@types/istanbul-lib-report/3.0.0: + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + dev: true + + /@types/istanbul-reports/3.0.1: + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + dependencies: + '@types/istanbul-lib-report': 3.0.0 + dev: true + + /@types/jest/29.5.1: + resolution: {integrity: sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==} + dependencies: + expect: 29.5.0 + pretty-format: 29.5.0 + dev: true + /@types/json-schema/7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true @@ -3473,18 +4008,24 @@ packages: resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} dev: true + /@types/ms/0.7.31: + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + dev: false + /@types/node/12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - /@types/node/18.16.10: - resolution: {integrity: sha512-sMo3EngB6QkMBlB9rBe1lFdKSLqljyWPPWv6/FzSxh/IDlyVWSzE9RiF4eAuerQHybrWdqBgAGb03PM89qOasA==} + /@types/node/18.16.13: + resolution: {integrity: sha512-uZRomboV1vBL61EBXneL4j9/hEn+1Yqa4LQdpGrKmXFyJmVfWc9JV9+yb2AlnOnuaDnb2PDO3hC6/LKmzJxP1A==} dev: true /@types/node/18.16.7: resolution: {integrity: sha512-MFg7ua/bRtnA1hYE3pVyWxGd/r7aMqjNOdHvlSsXV3n8iaeGKkOaPzpJh6/ovf4bEXWcojkeMJpTsq3mzXW4IQ==} + dev: false - /@types/node/20.1.5: - resolution: {integrity: sha512-IvGD1CD/nego63ySR7vrAKEX3AJTcmrAN2kn+/sDNLi1Ff5kBzDeEdqWDplK+0HAEoLYej137Sk0cUU8OLOlMg==} + /@types/node/20.1.7: + resolution: {integrity: sha512-WCuw/o4GSwDGMoonES8rcvwsig77dGCMbZDrZr2x4ZZiNW4P/gcoZXe/0twgtobcTkmg9TuKflxYL/DuwDyJzg==} + dev: true /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -3500,6 +4041,10 @@ packages: '@types/node': 18.16.7 dev: false + /@types/prettier/2.7.2: + resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} + dev: true + /@types/prop-types/15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} @@ -3518,7 +4063,7 @@ packages: /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.16.10 + '@types/node': 18.16.13 dev: true /@types/scheduler/0.16.3: @@ -3538,6 +4083,10 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true + /@types/stack-utils/2.0.1: + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + dev: true + /@types/trusted-types/2.0.3: resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} dev: false @@ -3548,7 +4097,17 @@ packages: '@types/node': 18.16.7 dev: false - /@typescript-eslint/eslint-plugin/5.59.6_hrzo544y7ygaq2nap7kmpxcgnm: + /@types/yargs-parser/21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + dev: true + + /@types/yargs/17.0.24: + resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@typescript-eslint/eslint-plugin/5.59.6_d2tnq3me7fwqifnmdgcmmzd77u: resolution: {integrity: sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3560,29 +4119,29 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq + '@typescript-eslint/parser': 5.59.6_jgkqkwom7vrxl4kyi454n2sy2i '@typescript-eslint/scope-manager': 5.59.6 - '@typescript-eslint/type-utils': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq - '@typescript-eslint/utils': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq + '@typescript-eslint/type-utils': 5.59.6_jgkqkwom7vrxl4kyi454n2sy2i + '@typescript-eslint/utils': 5.59.6_jgkqkwom7vrxl4kyi454n2sy2i debug: 4.3.4 eslint: 8.40.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.1 - tsutils: 3.21.0_typescript@5.0.4 - typescript: 5.0.4 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.59.6_3qfatcekpgbllh6uk5ivyhkbxq: + /@typescript-eslint/experimental-utils/5.59.6_jgkqkwom7vrxl4kyi454n2sy2i: resolution: {integrity: sha512-UIVfEaaHggOuhgqdpFlFQ7IN9UFMCiBR/N7uPBUyUlwNdJzYfAu9m4wbOj0b59oI/HSPW1N63Q7lsvfwTQY13w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq + '@typescript-eslint/utils': 5.59.6_jgkqkwom7vrxl4kyi454n2sy2i eslint: 8.40.0 transitivePeerDependencies: - supports-color @@ -3609,7 +4168,7 @@ packages: - supports-color dev: false - /@typescript-eslint/parser/5.59.6_3qfatcekpgbllh6uk5ivyhkbxq: + /@typescript-eslint/parser/5.59.6_jgkqkwom7vrxl4kyi454n2sy2i: resolution: {integrity: sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3621,10 +4180,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.59.6 '@typescript-eslint/types': 5.59.6 - '@typescript-eslint/typescript-estree': 5.59.6_typescript@5.0.4 + '@typescript-eslint/typescript-estree': 5.59.6_typescript@4.9.5 debug: 4.3.4 eslint: 8.40.0 - typescript: 5.0.4 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true @@ -3645,7 +4204,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.6 dev: true - /@typescript-eslint/type-utils/5.59.6_3qfatcekpgbllh6uk5ivyhkbxq: + /@typescript-eslint/type-utils/5.59.6_jgkqkwom7vrxl4kyi454n2sy2i: resolution: {integrity: sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3655,12 +4214,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.6_typescript@5.0.4 - '@typescript-eslint/utils': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq + '@typescript-eslint/typescript-estree': 5.59.6_typescript@4.9.5 + '@typescript-eslint/utils': 5.59.6_jgkqkwom7vrxl4kyi454n2sy2i debug: 4.3.4 eslint: 8.40.0 - tsutils: 3.21.0_typescript@5.0.4 - typescript: 5.0.4 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true @@ -3696,7 +4255,7 @@ packages: - supports-color dev: false - /@typescript-eslint/typescript-estree/5.59.6_typescript@5.0.4: + /@typescript-eslint/typescript-estree/5.59.6_typescript@4.9.5: resolution: {integrity: sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3711,13 +4270,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.1 - tsutils: 3.21.0_typescript@5.0.4 - typescript: 5.0.4 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.59.6_3qfatcekpgbllh6uk5ivyhkbxq: + /@typescript-eslint/utils/5.59.6_jgkqkwom7vrxl4kyi454n2sy2i: resolution: {integrity: sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3728,7 +4287,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.6 '@typescript-eslint/types': 5.59.6 - '@typescript-eslint/typescript-estree': 5.59.6_typescript@5.0.4 + '@typescript-eslint/typescript-estree': 5.59.6_typescript@4.9.5 eslint: 8.40.0 eslint-scope: 5.1.1 semver: 7.5.1 @@ -3753,8 +4312,8 @@ packages: eslint-visitor-keys: 3.4.1 dev: true - /@wagmi/chains/0.2.9_typescript@4.9.5: - resolution: {integrity: sha512-z0Nv7Cto+t/47NtC8td7khMSWX0zKVCnm8gkgrRs9PHvN+4W7XZfUVQYfhIfkbelT/ONN9V1OA+ho122gmRr3Q==} + /@wagmi/chains/0.2.16_typescript@4.9.5: + resolution: {integrity: sha512-rkWaI2PxCnbD8G07ZZff5QXftnSkYL0h5f4DkHCG3fGYYr/ZDvmCL4bMae7j7A9sAif1csPPBmbCzHp3R5ogCQ==} peerDependencies: typescript: '>=4.9.4' peerDependenciesMeta: @@ -3764,36 +4323,43 @@ packages: typescript: 4.9.5 dev: false - /@wagmi/connectors/0.2.7_lava2f64c2cmd33nb3t2aamzq4: - resolution: {integrity: sha512-9l5XBlaO7AGukvIbgLj3L1VMbRvHmwQTu36t0mQRE90LHzqP45/BK9BtrpUI8DjdmIMwQ+omMqSqBuhawT5Zwg==} + /@wagmi/chains/0.2.23_typescript@4.9.5: + resolution: {integrity: sha512-oIc4ZpUL6bH/HdS7ROPWlFnP5U3XBujO/OiX4csRIezyLjMQ9FNXQRZShhi5ddL0Kj1RDbyVLe9K/QotEm1vig==} peerDependencies: - '@wagmi/core': '>=0.9.x' - ethers: '>=5.5.1 <6' typescript: '>=4.9.4' peerDependenciesMeta: - '@wagmi/core': + typescript: + optional: true + dependencies: + typescript: 4.9.5 + dev: false + + /@wagmi/connectors/1.0.3_lvuufliqsmb5kombz5lsh7xala: + resolution: {integrity: sha512-5uB+dUDop8s9scdE+S4IhgcfP8oRwdULVvpJ2MusDp+C00+OgvS3SnwZM6+Pjc9tyj5pi143zqsYtDynxFrMEA==} + peerDependencies: + '@wagmi/chains': '>=0.2.23' + typescript: '>=4.9.4' + viem: ~0.3.18 + peerDependenciesMeta: + '@wagmi/chains': optional: true typescript: optional: true dependencies: - '@coinbase/wallet-sdk': 3.6.5_@babel+core@7.21.8 + '@coinbase/wallet-sdk': 3.6.6 '@ledgerhq/connect-kit-loader': 1.0.2 '@safe-global/safe-apps-provider': 0.15.2 - '@safe-global/safe-apps-sdk': 7.10.1 - '@wagmi/core': 0.9.7_ggafbflcu3luqnvuy4xuc3h6nu - '@walletconnect/ethereum-provider': 1.8.0 - '@walletconnect/universal-provider': 2.3.3_dfji5vargqbhwd5qh6ylai2p3e - '@web3modal/standalone': 2.2.2_react@18.2.0 - abitype: 0.3.0_typescript@4.9.5 - ethers: 5.7.2 + '@safe-global/safe-apps-sdk': 7.11.0 + '@wagmi/chains': 0.2.23_typescript@4.9.5 + '@walletconnect/ethereum-provider': 2.7.4_uuxbjgtba3hmem7nazpjykwxcm + '@walletconnect/legacy-provider': 2.0.0 + '@web3modal/standalone': 2.4.1_react@18.2.0 + abitype: 0.8.1_typescript@4.9.5 eventemitter3: 4.0.7 typescript: 4.9.5 + viem: 0.3.31_typescript@4.9.5 transitivePeerDependencies: - - '@babel/core' - '@react-native-async-storage/async-storage' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - bufferutil - debug - encoding @@ -3804,28 +4370,24 @@ packages: - zod dev: false - /@wagmi/core/0.9.7_ggafbflcu3luqnvuy4xuc3h6nu: - resolution: {integrity: sha512-9NYoxpEM+sYAv0Jg3DvMbWTnJguPwiqs61382ATU5dqMsYF1v17ngg6S15gg8oIv9Y7nYrLsiFsQ9qkNYzKlJA==} + /@wagmi/core/1.0.5_nus464gvkzoi6naqshaakklh74: + resolution: {integrity: sha512-n8Y84WJkofGjhd4a+vpZzPPEQiHnkIGMe0uHOXfkm4eKJZyaJqvVJFPMWE6xFJkk0hxZ+1zw5xn0ZhdroHwHvg==} peerDependencies: - ethers: '>=5.5.1 <6' typescript: '>=4.9.4' + viem: ~0.3.18 peerDependenciesMeta: typescript: optional: true dependencies: - '@wagmi/chains': 0.2.9_typescript@4.9.5 - '@wagmi/connectors': 0.2.7_lava2f64c2cmd33nb3t2aamzq4 - abitype: 0.3.0_typescript@4.9.5 - ethers: 5.7.2 + '@wagmi/chains': 0.2.23_typescript@4.9.5 + '@wagmi/connectors': 1.0.3_lvuufliqsmb5kombz5lsh7xala + abitype: 0.8.1_typescript@4.9.5 eventemitter3: 4.0.7 typescript: 4.9.5 - zustand: 4.3.6_react@18.2.0 + viem: 0.3.31_typescript@4.9.5 + zustand: 4.3.8_react@18.2.0 transitivePeerDependencies: - - '@babel/core' - '@react-native-async-storage/async-storage' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - bufferutil - debug - encoding @@ -3837,67 +4399,28 @@ packages: - zod dev: false - /@walletconnect/browser-utils/1.8.0: - resolution: {integrity: sha512-Wcqqx+wjxIo9fv6eBUFHPsW1y/bGWWRboni5dfD8PtOmrihrEpOCmvRJe4rfl7xgJW8Ea9UqKEaq0bIRLHlK4A==} + /@walletconnect/core/2.7.4: + resolution: {integrity: sha512-nDJJZALZJI8l8JvjwZE4UmUzDzQBnTTJlQa/rc5MoGYtir0hfsQEl3sPkPcXbkkW5q+cHiynXsDcgM4740fmNQ==} dependencies: - '@walletconnect/safe-json': 1.0.0 - '@walletconnect/types': 1.8.0 - '@walletconnect/window-getters': 1.0.0 - '@walletconnect/window-metadata': 1.0.0 - detect-browser: 5.2.0 - dev: false - - /@walletconnect/client/1.8.0: - resolution: {integrity: sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ==} - deprecated: 'WalletConnect''s v1 SDKs are now deprecated. Please upgrade to a v2 SDK. For details see: https://docs.walletconnect.com/' - dependencies: - '@walletconnect/core': 1.8.0 - '@walletconnect/iso-crypto': 1.8.0 - '@walletconnect/types': 1.8.0 - '@walletconnect/utils': 1.8.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /@walletconnect/core/1.8.0: - resolution: {integrity: sha512-aFTHvEEbXcZ8XdWBw6rpQDte41Rxwnuk3SgTD8/iKGSRTni50gI9S3YEzMj05jozSiOBxQci4pJDMVhIUMtarw==} - dependencies: - '@walletconnect/socket-transport': 1.8.0 - '@walletconnect/types': 1.8.0 - '@walletconnect/utils': 1.8.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /@walletconnect/core/2.3.3_dfji5vargqbhwd5qh6ylai2p3e: - resolution: {integrity: sha512-pkPG3f0Mb9WcWMeLtRS8+RSV9gpnAGrU0y291LNXjggDupg5H7I1hFtcj5HI0kmpk4suAS4RKqYAxPzy4MgFRQ==} - dependencies: - '@walletconnect/heartbeat': 1.2.0_dfji5vargqbhwd5qh6ylai2p3e - '@walletconnect/jsonrpc-provider': 1.0.10 - '@walletconnect/jsonrpc-utils': 1.0.6 - '@walletconnect/jsonrpc-ws-connection': 1.0.10 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.11 '@walletconnect/keyvaluestorage': 1.0.2 '@walletconnect/logger': 2.0.1 '@walletconnect/relay-api': 1.0.9 '@walletconnect/relay-auth': 1.0.4 - '@walletconnect/safe-json': 1.0.1 + '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.3.3_dfji5vargqbhwd5qh6ylai2p3e - '@walletconnect/utils': 2.3.3_dfji5vargqbhwd5qh6ylai2p3e + '@walletconnect/types': 2.7.4 + '@walletconnect/utils': 2.7.4 events: 3.3.0 lodash.isequal: 4.5.0 - pino: 7.11.0 - uint8arrays: 3.1.0 + uint8arrays: 3.1.1 transitivePeerDependencies: - '@react-native-async-storage/async-storage' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - bufferutil - lokijs - - typescript - utf-8-validate dev: false @@ -3926,22 +4449,30 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/ethereum-provider/1.8.0: - resolution: {integrity: sha512-Nq9m+oo5P0F+njsROHw9KMWdoc/8iGHYzQdkjJN/1C7DtsqFRg5k5a3hd9rzCLpbPsOC1q8Z5lRs6JQgDvPm6Q==} - deprecated: 'WalletConnect''s v1 SDKs are now deprecated. Please upgrade to a v2 SDK. For details see: https://docs.walletconnect.com/' + /@walletconnect/ethereum-provider/2.7.4_uuxbjgtba3hmem7nazpjykwxcm: + resolution: {integrity: sha512-R5hcByY9zIsvyTHFUS+3xqtzs2REezED4tZFyXk0snJjWlnlL2EdeHaCjr5n+SIZDin4CMj1EAFC0ZrM4KoA4Q==} + peerDependencies: + '@web3modal/standalone': '>=2' + peerDependenciesMeta: + '@web3modal/standalone': + optional: true dependencies: - '@walletconnect/client': 1.8.0 '@walletconnect/jsonrpc-http-connection': 1.0.6 - '@walletconnect/jsonrpc-provider': 1.0.10 - '@walletconnect/signer-connection': 1.8.0 - '@walletconnect/types': 1.8.0 - '@walletconnect/utils': 1.8.0 - eip1193-provider: 1.0.1 - eventemitter3: 4.0.7 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/sign-client': 2.7.4 + '@walletconnect/types': 2.7.4 + '@walletconnect/universal-provider': 2.7.4 + '@walletconnect/utils': 2.7.4 + '@web3modal/standalone': 2.4.1_react@18.2.0 + events: 3.3.0 transitivePeerDependencies: + - '@react-native-async-storage/async-storage' - bufferutil - debug - encoding + - lokijs - utf-8-validate dev: false @@ -3952,69 +4483,53 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/heartbeat/1.2.0_dfji5vargqbhwd5qh6ylai2p3e: - resolution: {integrity: sha512-0vbzTa/ARrpmMmOD+bQMxPvFYKtOLQZObgZakrYr0aODiMOO71CmPVNV2eAqXnw9rMmcP+z91OybLeIFlwTjjA==} + /@walletconnect/heartbeat/1.2.1: + resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==} dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/time': 1.0.2 - chai: 4.3.7 - mocha: 10.2.0 - ts-node: 10.9.1_dfji5vargqbhwd5qh6ylai2p3e tslib: 1.14.1 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - typescript - dev: false - - /@walletconnect/iso-crypto/1.8.0: - resolution: {integrity: sha512-pWy19KCyitpfXb70hA73r9FcvklS+FvO9QUIttp3c2mfW8frxgYeRXfxLRCIQTkaYueRKvdqPjbyhPLam508XQ==} - dependencies: - '@walletconnect/crypto': 1.0.3 - '@walletconnect/types': 1.8.0 - '@walletconnect/utils': 1.8.0 dev: false /@walletconnect/jsonrpc-http-connection/1.0.6: resolution: {integrity: sha512-/3zSqDi7JDN06E4qm0NmVYMitngXfh21UWwy8zeJcBeJc+Jcs094EbLsIxtziIIKTCCbT88lWuTjl1ZujxN7cw==} dependencies: - '@walletconnect/jsonrpc-utils': 1.0.6 - '@walletconnect/safe-json': 1.0.1 - cross-fetch: 3.1.5 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + cross-fetch: 3.1.6 tslib: 1.14.1 transitivePeerDependencies: - encoding dev: false - /@walletconnect/jsonrpc-provider/1.0.10: - resolution: {integrity: sha512-g0ffPSpY3P6GqGjWGHsr3yqvQUhj7q2k6pAikoXv5XTXWaJRzFvrlbFkSgxziXsBrwrMZn0qvPufvpN4mMZ5FA==} + /@walletconnect/jsonrpc-provider/1.0.13: + resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==} dependencies: - '@walletconnect/jsonrpc-utils': 1.0.6 - '@walletconnect/safe-json': 1.0.1 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 tslib: 1.14.1 dev: false - /@walletconnect/jsonrpc-types/1.0.2: - resolution: {integrity: sha512-CZe8tjJX73OWdHjrBHy7HtAapJ2tT0Q3TYhPBhRxi3643lwPIQWC9En45ldY14TZwgSewkbZ0FtGBZK0G7Bbyg==} + /@walletconnect/jsonrpc-types/1.0.3: + resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==} dependencies: keyvaluestorage-interface: 1.0.0 tslib: 1.14.1 dev: false - /@walletconnect/jsonrpc-utils/1.0.6: - resolution: {integrity: sha512-snp0tfkjPiDLQp/jrBewI+9SM33GPV4+Gjgldod6XQ7rFyQ5FZjnBxUkY4xWH0+arNxzQSi6v5iDXjCjSaorpg==} + /@walletconnect/jsonrpc-utils/1.0.8: + resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} dependencies: '@walletconnect/environment': 1.0.1 - '@walletconnect/jsonrpc-types': 1.0.2 + '@walletconnect/jsonrpc-types': 1.0.3 tslib: 1.14.1 dev: false - /@walletconnect/jsonrpc-ws-connection/1.0.10: - resolution: {integrity: sha512-/tidvjfCXZuYugjF5fOswsNDPoMo9QRML3DFQ0dfNUarL4f5HGqu8NDGerr2n0+4MOX23GsT6Vv2POSwFbvgGw==} + /@walletconnect/jsonrpc-ws-connection/1.0.11: + resolution: {integrity: sha512-TiFJ6saasKXD+PwGkm5ZGSw0837nc6EeFmurSPgIT/NofnOV4Tv7CVJqGQN0rQYoJUSYu21cwHNYaFkzNpUN+w==} dependencies: - '@walletconnect/jsonrpc-utils': 1.0.6 - '@walletconnect/safe-json': 1.0.1 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 events: 3.3.0 tslib: 1.14.1 ws: 7.5.9 @@ -4038,28 +4553,68 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/logger/2.0.1: - resolution: {integrity: sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ==} + /@walletconnect/legacy-client/2.0.0: + resolution: {integrity: sha512-v5L7rYk9loVnfvUf0mF+76bUPFaU5/Vh7mzL6/950CD/yoGdzYZ3Kj+L7mkC6HPMEGeQsBP1+sqBuiVGZ/aODA==} dependencies: - pino: 7.11.0 - tslib: 1.14.1 + '@walletconnect/crypto': 1.0.3 + '@walletconnect/encoding': 1.0.2 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/legacy-types': 2.0.0 + '@walletconnect/legacy-utils': 2.0.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + detect-browser: 5.3.0 + query-string: 6.14.1 dev: false - /@walletconnect/mobile-registry/1.4.0: - resolution: {integrity: sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw==} - deprecated: 'Deprecated in favor of dynamic registry available from: https://github.com/walletconnect/walletconnect-registry' + /@walletconnect/legacy-modal/2.0.0: + resolution: {integrity: sha512-jckNd8lMhm4X7dX9TDdxM3bXKJnaqkRs6K2Mo5j6GmbIF9Eyx40jZ5+q457RVxvM6ciZEDT5s1wBHWdWoOo+9Q==} + dependencies: + '@walletconnect/legacy-types': 2.0.0 + '@walletconnect/legacy-utils': 2.0.0 + copy-to-clipboard: 3.3.3 + preact: 10.14.1 + qrcode: 1.5.3 dev: false - /@walletconnect/qrcode-modal/1.8.0: - resolution: {integrity: sha512-BueaFefaAi8mawE45eUtztg3ZFbsAH4DDXh1UNwdUlsvFMjqcYzLUG0xZvDd6z2eOpbgDg2N3bl6gF0KONj1dg==} - deprecated: 'WalletConnect''s v1 SDKs are now deprecated. Please upgrade to a v2 SDK. For details see: https://docs.walletconnect.com/' + /@walletconnect/legacy-provider/2.0.0: + resolution: {integrity: sha512-A8xPebMI1A+50HbWwTpFCbwP7G+1NGKdTKyg8BUUg3h3Y9JucpC1W6w/x0v1Xw7qFEqQnz74LoIN/A3ytH9xrQ==} dependencies: - '@walletconnect/browser-utils': 1.8.0 - '@walletconnect/mobile-registry': 1.4.0 - '@walletconnect/types': 1.8.0 - copy-to-clipboard: 3.3.3 - preact: 10.4.1 - qrcode: 1.4.4 + '@walletconnect/jsonrpc-http-connection': 1.0.6 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/legacy-client': 2.0.0 + '@walletconnect/legacy-modal': 2.0.0 + '@walletconnect/legacy-types': 2.0.0 + '@walletconnect/legacy-utils': 2.0.0 + transitivePeerDependencies: + - encoding + dev: false + + /@walletconnect/legacy-types/2.0.0: + resolution: {integrity: sha512-sOVrA7HUdbI1OwKyPOQU0/DdvTSVFlsXWpAk2K2WvP2erTkBWPMTJq6cv2BmKdoJ3p6gLApT7sd+jHi3OF71uw==} + dependencies: + '@walletconnect/jsonrpc-types': 1.0.3 + dev: false + + /@walletconnect/legacy-utils/2.0.0: + resolution: {integrity: sha512-CPWxSVVXw0kgNCxvU126g4GiV3mzXmC8IPJ15twE46aJ1FX+RHEIfAzFMFz2F2+fEhBxL63A7dwNQKDXorRPcQ==} + dependencies: + '@walletconnect/encoding': 1.0.2 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/legacy-types': 2.0.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + detect-browser: 5.3.0 + query-string: 6.14.1 + dev: false + + /@walletconnect/logger/2.0.1: + resolution: {integrity: sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ==} + dependencies: + pino: 7.11.0 + tslib: 1.14.1 dev: false /@walletconnect/randombytes/1.0.3: @@ -4074,7 +4629,7 @@ packages: /@walletconnect/relay-api/1.0.9: resolution: {integrity: sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==} dependencies: - '@walletconnect/jsonrpc-types': 1.0.2 + '@walletconnect/jsonrpc-types': 1.0.3 tslib: 1.14.1 dev: false @@ -4083,69 +4638,34 @@ packages: dependencies: '@stablelib/ed25519': 1.0.3 '@stablelib/random': 1.0.2 - '@walletconnect/safe-json': 1.0.1 + '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 tslib: 1.14.1 - uint8arrays: 3.1.0 - dev: false - - /@walletconnect/safe-json/1.0.0: - resolution: {integrity: sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg==} + uint8arrays: 3.1.1 dev: false - /@walletconnect/safe-json/1.0.1: - resolution: {integrity: sha512-Fm7e31oSYY15NQr8SsLJheKAy5L744udZf2lJKcz6wFmPJEzf7hOF0866o/rrldRzJnjZ4H2GJ45pFudsnLW5A==} + /@walletconnect/safe-json/1.0.2: + resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} dependencies: tslib: 1.14.1 dev: false - /@walletconnect/sign-client/2.3.3_dfji5vargqbhwd5qh6ylai2p3e: - resolution: {integrity: sha512-Q+KiqYYecf9prJoQWLIV7zJcEPa69XBzwrad4sQPcDD1BZMWa1f8OZUH3HmlmuCzopqEr4mgXU6v6yFHOasADw==} + /@walletconnect/sign-client/2.7.4: + resolution: {integrity: sha512-hZoCB51GB4u32yxzYnxp8dpzXgo6E7ZWUVOgnihmoMPjgJahPtvB/Ip9jYxI3fuV+ZPQYNlxQgEvR9X+2fLz+g==} dependencies: - '@walletconnect/core': 2.3.3_dfji5vargqbhwd5qh6ylai2p3e + '@walletconnect/core': 2.7.4 '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.0_dfji5vargqbhwd5qh6ylai2p3e - '@walletconnect/jsonrpc-provider': 1.0.10 - '@walletconnect/jsonrpc-utils': 1.0.6 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.3.3_dfji5vargqbhwd5qh6ylai2p3e - '@walletconnect/utils': 2.3.3_dfji5vargqbhwd5qh6ylai2p3e + '@walletconnect/types': 2.7.4 + '@walletconnect/utils': 2.7.4 events: 3.3.0 - pino: 7.11.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - bufferutil - lokijs - - typescript - - utf-8-validate - dev: false - - /@walletconnect/signer-connection/1.8.0: - resolution: {integrity: sha512-+YAaTAP52MWZJ2wWnqKClKCPlPHBo6reURFe0cWidLADh9mi/kPWGALZ5AENK22zpem1bbKV466rF5Rzvu0ehA==} - dependencies: - '@walletconnect/client': 1.8.0 - '@walletconnect/jsonrpc-types': 1.0.2 - '@walletconnect/jsonrpc-utils': 1.0.6 - '@walletconnect/qrcode-modal': 1.8.0 - '@walletconnect/types': 1.8.0 - eventemitter3: 4.0.7 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /@walletconnect/socket-transport/1.8.0: - resolution: {integrity: sha512-5DyIyWrzHXTcVp0Vd93zJ5XMW61iDM6bcWT4p8DTRfFsOtW46JquruMhxOLeCOieM4D73kcr3U7WtyR4JUsGuQ==} - dependencies: - '@walletconnect/types': 1.8.0 - '@walletconnect/utils': 1.8.0 - ws: 7.5.3 - transitivePeerDependencies: - - bufferutil - utf-8-validate dev: false @@ -4155,97 +4675,63 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/types/1.8.0: - resolution: {integrity: sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg==} - deprecated: 'WalletConnect''s v1 SDKs are now deprecated. Please upgrade to a v2 SDK. For details see: https://docs.walletconnect.com/' - dev: false - - /@walletconnect/types/2.3.3_dfji5vargqbhwd5qh6ylai2p3e: - resolution: {integrity: sha512-g2x27MloGElcRTwYM9Md/1E2RQ5ifYBCFZ/sfnpQrZPVxK3NzSMHJlcV6qrQm9ST82i+UrLEce9RkDgvjKk7+w==} + /@walletconnect/types/2.7.4: + resolution: {integrity: sha512-Nagfz8DqLxf0UlVd7xopgBX60EJp1xUEq7J30ALlTbWqEhCHuLK/qPk5vGdJ9Q6+ZDpTW9ShLq1DNf+5nVpVDQ==} dependencies: '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.0_dfji5vargqbhwd5qh6ylai2p3e - '@walletconnect/jsonrpc-types': 1.0.2 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/keyvaluestorage': 1.0.2 '@walletconnect/logger': 2.0.1 events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - lokijs - - typescript dev: false - /@walletconnect/universal-provider/2.3.3_dfji5vargqbhwd5qh6ylai2p3e: - resolution: {integrity: sha512-pibtlTUn7dg5Y5vs8tzSGaaDlq8eSXgHh7o9iMMpE4Fr06HyM36J0niGTOsKvMa+u5keCTwVhbB4MNnN08zVvg==} + /@walletconnect/universal-provider/2.7.4: + resolution: {integrity: sha512-suH3o5LpTX7hlx5lU98oLdEM0Ws5ZysjQ4Zr6EWIK1DVT8EDdWbw49ggJSW9IYRLQ2xG22jDvmTIdFAexYOgng==} dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.6 - '@walletconnect/jsonrpc-provider': 1.0.10 - '@walletconnect/jsonrpc-types': 1.0.2 - '@walletconnect/jsonrpc-utils': 1.0.6 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 - '@walletconnect/sign-client': 2.3.3_dfji5vargqbhwd5qh6ylai2p3e - '@walletconnect/types': 2.3.3_dfji5vargqbhwd5qh6ylai2p3e - '@walletconnect/utils': 2.3.3_dfji5vargqbhwd5qh6ylai2p3e + '@walletconnect/sign-client': 2.7.4 + '@walletconnect/types': 2.7.4 + '@walletconnect/utils': 2.7.4 eip1193-provider: 1.0.1 events: 3.3.0 - pino: 7.11.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - bufferutil - debug - encoding - lokijs - - typescript - utf-8-validate dev: false - /@walletconnect/utils/1.8.0: - resolution: {integrity: sha512-zExzp8Mj1YiAIBfKNm5u622oNw44WOESzo6hj+Q3apSMIb0Jph9X3GDIdbZmvVZsNPxWDL7uodKgZcCInZv2vA==} - dependencies: - '@walletconnect/browser-utils': 1.8.0 - '@walletconnect/encoding': 1.0.2 - '@walletconnect/jsonrpc-utils': 1.0.6 - '@walletconnect/types': 1.8.0 - bn.js: 4.11.8 - js-sha3: 0.8.0 - query-string: 6.13.5 - dev: false - - /@walletconnect/utils/2.3.3_dfji5vargqbhwd5qh6ylai2p3e: - resolution: {integrity: sha512-wS9ptLlT30c7m7zme3/y3cNjKXztZeKIulqBD1K/VxSxWEA4mK9mmXEACdmahjiX4EHZWtdHvEIu2rLDhkrrvQ==} + /@walletconnect/utils/2.7.4: + resolution: {integrity: sha512-2WEeKB9h/FQvyNmIBYwLtjdLm3Oo55EwtJoxkC00SA7xjf8jYxZ8q2y4P/CJP8oO5ruxBK5Ft0smKvPHXsE58Q==} dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 '@stablelib/random': 1.0.2 '@stablelib/sha256': 1.0.1 '@stablelib/x25519': 1.0.3 - '@walletconnect/jsonrpc-utils': 1.0.6 + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/relay-api': 1.0.9 - '@walletconnect/safe-json': 1.0.1 + '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.3.3_dfji5vargqbhwd5qh6ylai2p3e + '@walletconnect/types': 2.7.4 '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 detect-browser: 5.3.0 - query-string: 7.1.1 - uint8arrays: 3.1.0 + query-string: 7.1.3 + uint8arrays: 3.1.1 transitivePeerDependencies: - '@react-native-async-storage/async-storage' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - lokijs - - typescript - dev: false - - /@walletconnect/window-getters/1.0.0: - resolution: {integrity: sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA==} dev: false /@walletconnect/window-getters/1.0.1: @@ -4254,12 +4740,6 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/window-metadata/1.0.0: - resolution: {integrity: sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA==} - dependencies: - '@walletconnect/window-getters': 1.0.1 - dev: false - /@walletconnect/window-metadata/1.0.1: resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} dependencies: @@ -4267,31 +4747,31 @@ packages: tslib: 1.14.1 dev: false - /@web3modal/core/2.2.2_react@18.2.0: - resolution: {integrity: sha512-RKbYNIEVP5Hwiva68PWXExbkTFLUTasneyRpcjoQSM4BIh78qXp1YMt0nyTvFdHmHQEGxXEMCuRG5qoE97uMHA==} + /@web3modal/core/2.4.1_react@18.2.0: + resolution: {integrity: sha512-v6Y/eQJSI2YfUTv8rGqjFabqdk3ZPjx6Fe7j5Q8fw0ZWF1YRGM3mySG457qtKQ7D7E1kNKA3BHbaOZ3pgQoG6A==} dependencies: buffer: 6.0.3 - valtio: 1.10.3_react@18.2.0 + valtio: 1.10.5_react@18.2.0 transitivePeerDependencies: - react dev: false - /@web3modal/standalone/2.2.2_react@18.2.0: - resolution: {integrity: sha512-c05kkTFNGZqnjJ3n2C8uo+wWL6ut1jexGYAyTvbweDengdsOr8LDo0VpK5V3XSKCV2fFcPh5JE9H1aA4jpnZPg==} + /@web3modal/standalone/2.4.1_react@18.2.0: + resolution: {integrity: sha512-ZrI5LwWeT9sd8A3FdIX/gBp3ZrzrX882Ln1vJN0LTCmeP2OUsYcW5bPxjv1PcJ1YUBY7Tg4aTgMUnAVTTuqb+w==} dependencies: - '@web3modal/core': 2.2.2_react@18.2.0 - '@web3modal/ui': 2.2.2_react@18.2.0 + '@web3modal/core': 2.4.1_react@18.2.0 + '@web3modal/ui': 2.4.1_react@18.2.0 transitivePeerDependencies: - react dev: false - /@web3modal/ui/2.2.2_react@18.2.0: - resolution: {integrity: sha512-PAuMOuk4sZ4UGjucGMZKzu6Qu56XtFsgLaqOn8ZgP2RkZmYEBGSG9mUQVzJd3XzfzAy1T91Wmqp/3TI3m0pXuQ==} + /@web3modal/ui/2.4.1_react@18.2.0: + resolution: {integrity: sha512-x1ceyd3mMJsIHs5UUTLvE+6qyCjhyjL6gB/wVmTDbwASHSQIVyshQJ+s7BwIEMP/pbAsYDg+/M8EiUuE+/E/kg==} dependencies: - '@web3modal/core': 2.2.2_react@18.2.0 - lit: 2.6.1 + '@web3modal/core': 2.4.1_react@18.2.0 + lit: 2.7.4 motion: 10.15.5 - qrcode: 1.5.1 + qrcode: 1.5.3 transitivePeerDependencies: - react dev: false @@ -4303,12 +4783,23 @@ packages: jsonparse: 1.3.1 through: 2.3.8 - /abitype/0.3.0_typescript@4.9.5: - resolution: {integrity: sha512-0YokyAV4hKMcy97Pl+6QgZBlBdZJN2llslOs7kiFY+cu7kMlVXDBpxMExfv0krzBCQt2t7hNovpQ3y/zvEm18A==} - engines: {pnpm: '>=7'} + /abitype/0.8.1_typescript@4.9.5: + resolution: {integrity: sha512-n8Di6AWb3i7HnEkBvecU6pG0a5nj5YwMvdAIwPLsQK95ulRy/XS113s/RXvSfTX1iOQJYFrEO3/q4SMWu7OwTA==} peerDependencies: typescript: '>=4.9.4' - zod: '>=3.19.1' + zod: ^3 >=3.19.1 + peerDependenciesMeta: + zod: + optional: true + dependencies: + typescript: 4.9.5 + dev: false + + /abitype/0.8.2_typescript@4.9.5: + resolution: {integrity: sha512-B1ViNMGpfx/qjVQi0RTc2HEFHuR9uoCoTEkwELT5Y7pBPtBbctYijz9BK6+Kd0hQ3S70FhYTO2dWWk0QNUEXMA==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.19.1 peerDependenciesMeta: zod: optional: true @@ -4332,6 +4823,7 @@ packages: /acorn-walk/8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} + dev: true /acorn/8.8.2: resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} @@ -4385,6 +4877,7 @@ packages: /ansi-colors/4.1.1: resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} engines: {node: '>=6'} + dev: true /ansi-colors/4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} @@ -4398,11 +4891,6 @@ packages: type-fest: 0.21.3 dev: true - /ansi-regex/4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - dev: false - /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -4424,6 +4912,11 @@ packages: dependencies: color-convert: 2.0.1 + /ansi-styles/5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + /ansi-styles/6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -4435,9 +4928,11 @@ packages: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 + dev: true /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true /argparse/1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -4520,6 +5015,7 @@ packages: /assertion-error/1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true /ast-types-flow/0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} @@ -4532,7 +5028,7 @@ packages: /async-mutex/0.2.6: resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} dependencies: - tslib: 2.5.0 + tslib: 2.5.1 dev: false /asynckit/0.4.0: @@ -4575,6 +5071,47 @@ packages: dependencies: deep-equal: 2.2.1 + /babel-jest/29.5.0_@babel+core@7.21.8: + resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.21.8 + '@jest/transform': 29.5.0 + '@types/babel__core': 7.20.0 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.5.0_@babel+core@7.21.8 + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-istanbul/6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.21.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist/29.5.0: + resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.21.5 + '@types/babel__core': 7.20.0 + '@types/babel__traverse': 7.18.5 + dev: true + /babel-plugin-macros/3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} @@ -4595,6 +5132,7 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: true /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.21.8: resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} @@ -4606,6 +5144,7 @@ packages: core-js-compat: 3.30.2 transitivePeerDependencies: - supports-color + dev: true /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.21.8: resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} @@ -4616,11 +5155,43 @@ packages: '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.8 transitivePeerDependencies: - supports-color + dev: true /babel-plugin-transform-react-remove-prop-types/0.4.24: resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} dev: true + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.21.8: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.8 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.8 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.21.8 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.21.8 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.21.8 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.8 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.8 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.8 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.8 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.8 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.8 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.8 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.21.8 + dev: true + + /babel-preset-jest/29.5.0_@babel+core@7.21.8: + resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.8 + babel-plugin-jest-hoist: 29.5.0 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.21.8 + dev: true + /babel-preset-react-app/10.0.1: resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} dependencies: @@ -4689,6 +5260,7 @@ packages: /binary-extensions/2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} + dev: true /bind-decorator/1.0.11: resolution: {integrity: sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg==} @@ -4710,10 +5282,6 @@ packages: resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} dev: false - /bn.js/4.11.8: - resolution: {integrity: sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==} - dev: false - /bn.js/4.12.0: resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} @@ -4738,6 +5306,7 @@ packages: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 + dev: true /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -4756,6 +5325,7 @@ packages: /browser-stdout/1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + dev: true /browserify-aes/1.2.0: resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} @@ -4818,10 +5388,18 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001487 - electron-to-chromium: 1.4.396 + caniuse-lite: 1.0.30001488 + electron-to-chromium: 1.4.400 node-releases: 2.0.10 update-browserslist-db: 1.0.11_browserslist@4.21.5 + dev: true + + /bs-logger/0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + dependencies: + fast-json-stable-stringify: 2.1.0 + dev: true /bs58/4.0.1: resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} @@ -4837,45 +5415,23 @@ packages: safe-buffer: 5.2.1 dev: false - /buffer-alloc-unsafe/1.1.0: - resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} - dev: false - - /buffer-alloc/1.2.0: - resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} + /bser/2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: - buffer-alloc-unsafe: 1.1.0 - buffer-fill: 1.0.0 - dev: false + node-int64: 0.4.0 + dev: true /buffer-es6/4.9.3: resolution: {integrity: sha512-Ibt+oXxhmeYJSsCkODPqNpPmyegefiD8rfutH1NYGhMZQhSp95Rz7haemgnJ6dxa6LT+JLLbtgOMORRluwKktw==} dev: true - /buffer-fill/1.0.0: - resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} - dev: false - /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true /buffer-xor/1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - /buffer/5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: false - - /buffer/6.0.1: - resolution: {integrity: sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: false - /buffer/6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: @@ -4928,13 +5484,15 @@ packages: /camelcase/6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} + dev: true /caniuse-lite/1.0.30001486: resolution: {integrity: sha512-uv7/gXuHi10Whlj0pp5q/tsK/32J2QSqVRKQhs2j8VsDCjgyruAh/eEXHF822VqO9yT6iZKw3nRwZRSPBE9OQg==} dev: false - /caniuse-lite/1.0.30001487: - resolution: {integrity: sha512-83564Z3yWGqXsh2vaH/mhXfEM0wX+NlBCm1jYHOb97TrTWJEmPTccZgeLTPBUUb0PNVo+oomb7wkimZBIERClA==} + /caniuse-lite/1.0.30001488: + resolution: {integrity: sha512-NORIQuuL4xGpIy6iCCQGN4iFjlBXtfKWIenlUuyZJumLRIindLb7wXM+GO8erEhb7vXfcnf4BAg2PrSDN5TNLQ==} + dev: true /case/1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} @@ -4952,6 +5510,7 @@ packages: loupe: 2.3.6 pathval: 1.1.1 type-detect: 4.0.8 + dev: true /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -4973,12 +5532,18 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true + /char-regex/1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + /chardet/0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true /check-error/1.0.2: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} + dev: true /chokidar/3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} @@ -4993,6 +5558,7 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.2 + dev: true /ci-info/3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} @@ -5005,6 +5571,10 @@ packages: inherits: 2.0.4 safe-buffer: 5.2.1 + /cjs-module-lexer/1.2.2: + resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} + dev: true + /clean-stack/2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -5037,14 +5607,6 @@ packages: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false - /cliui/5.0.0: - resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} - dependencies: - string-width: 3.1.0 - strip-ansi: 5.2.0 - wrap-ansi: 5.1.0 - dev: false - /cliui/6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: @@ -5058,6 +5620,7 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + dev: true /cliui/8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} @@ -5082,6 +5645,15 @@ packages: engines: {node: '>=6'} dev: false + /co/4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /collect-v8-coverage/1.0.1: + resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + dev: true + /color-convert/1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -5183,6 +5755,11 @@ packages: /convert-source-map/1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true + + /convert-source-map/2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true /copy-to-clipboard/3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} @@ -5194,6 +5771,7 @@ packages: resolution: {integrity: sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA==} dependencies: browserslist: 4.21.5 + dev: true /core-util-is/1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -5207,7 +5785,7 @@ packages: vary: 1.1.2 dev: false - /cosmiconfig-typescript-loader/4.3.0_ibxj7nciepaflowmfgd2falzpm: + /cosmiconfig-typescript-loader/4.3.0_a2puaduzak3h5uha6upr4sdmeq: resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -5216,9 +5794,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.16.10 + '@types/node': 18.16.13 cosmiconfig: 8.1.3 - ts-node: 10.9.1_u5ax4hcaao6h6ctrp2v254guiq + ts-node: 10.9.1_kad2biipqth74ckkc6ygvcanzi typescript: 5.0.4 dev: true @@ -5257,6 +5835,13 @@ packages: protobufjs: 6.11.3 dev: false + /cosmjs-types/0.7.2: + resolution: {integrity: sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA==} + dependencies: + long: 4.0.0 + protobufjs: 6.11.3 + dev: false + /create-ecdh/4.0.4: resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} dependencies: @@ -5285,6 +5870,7 @@ packages: /create-require/1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true /cross-env/7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} @@ -5294,10 +5880,10 @@ packages: cross-spawn: 7.0.3 dev: true - /cross-fetch/3.1.5: - resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} + /cross-fetch/3.1.6: + resolution: {integrity: sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==} dependencies: - node-fetch: 2.6.7 + node-fetch: 2.6.11 transitivePeerDependencies: - encoding dev: false @@ -5415,6 +6001,7 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 + dev: true /decamelize-keys/1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -5431,17 +6018,23 @@ packages: /decamelize/4.0.0: resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} engines: {node: '>=10'} + dev: true /decode-uri-component/0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} dev: false + /dedent/0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dev: true + /deep-eql/4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} dependencies: type-detect: 4.0.8 + dev: true /deep-equal/2.2.1: resolution: {integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==} @@ -5519,10 +6112,6 @@ packages: minimalistic-assert: 1.0.1 dev: true - /detect-browser/5.2.0: - resolution: {integrity: sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA==} - dev: false - /detect-browser/5.3.0: resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} dev: false @@ -5532,13 +6121,25 @@ packages: engines: {node: '>=8'} dev: true + /detect-newline/3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /diff-sequences/29.4.3: + resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} + dev: true /diff/5.0.0: resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} engines: {node: '>=0.3.1'} + dev: true /diffie-hellman/5.0.3: resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} @@ -5548,8 +6149,8 @@ packages: randombytes: 2.1.0 dev: true - /dijkstrajs/1.0.2: - resolution: {integrity: sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==} + /dijkstrajs/1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} dev: false /dir-glob/3.0.1: @@ -5610,8 +6211,9 @@ packages: - utf-8-validate dev: false - /electron-to-chromium/1.4.396: - resolution: {integrity: sha512-pqKTdqp/c5vsrc0xUPYXTDBo9ixZuGY8es4ZOjjd6HD6bFYbu5QA09VoW3fkY4LF1T0zYk86lN6bZnNlBuOpdQ==} + /electron-to-chromium/1.4.400: + resolution: {integrity: sha512-Lsvf7cvwbIxCfB8VqbnVtEsjGi3+48ejDiQZfWo5gkT+1vQ2DHQI5pl0nUvPD6z1IQk6JgFeMC5ZQJqVhalEHg==} + dev: true /elliptic/6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -5624,9 +6226,10 @@ packages: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - /emoji-regex/7.0.3: - resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} - dev: false + /emittery/0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -5758,11 +6361,17 @@ packages: /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} + dev: true /escape-string-regexp/1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + /escape-string-regexp/2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -5792,7 +6401,7 @@ packages: - supports-color dev: false - /eslint-config-react-app/7.0.1_thperb4fnr5oocbjjbdebseave: + /eslint-config-react-app/7.0.1_gyzglfzpridjovtqq5usnm7b5q: resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5805,19 +6414,19 @@ packages: '@babel/core': 7.21.8 '@babel/eslint-parser': 7.21.8_r3wtitw7f7lufgjigaj6hnnlnu '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/eslint-plugin': 5.59.6_hrzo544y7ygaq2nap7kmpxcgnm - '@typescript-eslint/parser': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq + '@typescript-eslint/eslint-plugin': 5.59.6_d2tnq3me7fwqifnmdgcmmzd77u + '@typescript-eslint/parser': 5.59.6_jgkqkwom7vrxl4kyi454n2sy2i babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.40.0 eslint-plugin-flowtype: 8.0.3_voctbk3tr2epnkfodigb2qrmya eslint-plugin-import: 2.27.5_y6na5yzocvsvyzyspqtlmdb3ey - eslint-plugin-jest: 25.7.0_t4ps2ot6t7yo55wf2oi7vxmjni + eslint-plugin-jest: 25.7.0_nnwynhjapn4b2piif7hmhjqg7i eslint-plugin-jsx-a11y: 6.7.1_eslint@8.40.0 eslint-plugin-react: 7.32.2_eslint@8.40.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.40.0 - eslint-plugin-testing-library: 5.11.0_3qfatcekpgbllh6uk5ivyhkbxq - typescript: 5.0.4 + eslint-plugin-testing-library: 5.11.0_jgkqkwom7vrxl4kyi454n2sy2i + typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -5831,7 +6440,7 @@ packages: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: debug: 3.2.7 - is-core-module: 2.12.0 + is-core-module: 2.12.1 resolve: 1.22.2 transitivePeerDependencies: - supports-color @@ -5877,7 +6486,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq + '@typescript-eslint/parser': 5.59.6_jgkqkwom7vrxl4kyi454n2sy2i debug: 3.2.7 eslint: 8.40.0 eslint-import-resolver-node: 0.3.7 @@ -5970,7 +6579,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq + '@typescript-eslint/parser': 5.59.6_jgkqkwom7vrxl4kyi454n2sy2i array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -5993,7 +6602,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest/25.7.0_t4ps2ot6t7yo55wf2oi7vxmjni: + /eslint-plugin-jest/25.7.0_nnwynhjapn4b2piif7hmhjqg7i: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -6006,8 +6615,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.6_hrzo544y7ygaq2nap7kmpxcgnm - '@typescript-eslint/experimental-utils': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq + '@typescript-eslint/eslint-plugin': 5.59.6_d2tnq3me7fwqifnmdgcmmzd77u + '@typescript-eslint/experimental-utils': 5.59.6_jgkqkwom7vrxl4kyi454n2sy2i eslint: 8.40.0 transitivePeerDependencies: - supports-color @@ -6085,13 +6694,13 @@ packages: semver: 6.3.0 string.prototype.matchall: 4.0.8 - /eslint-plugin-testing-library/5.11.0_3qfatcekpgbllh6uk5ivyhkbxq: + /eslint-plugin-testing-library/5.11.0_jgkqkwom7vrxl4kyi454n2sy2i: resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.6_3qfatcekpgbllh6uk5ivyhkbxq + '@typescript-eslint/utils': 5.59.6_jgkqkwom7vrxl4kyi454n2sy2i eslint: 8.40.0 transitivePeerDependencies: - supports-color @@ -6217,17 +6826,15 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - /eth-block-tracker/4.4.3_@babel+core@7.21.8: - resolution: {integrity: sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw==} + /eth-block-tracker/6.1.0: + resolution: {integrity: sha512-K9SY8+/xMBi4M5HHTDdxnpEqEEGjbNpzHFqvxyjMZej8InV/B+CkFRKM6W+uvrFJ7m8Zd1E0qUkseU3vdIDFYQ==} + engines: {node: '>=14.0.0'} dependencies: - '@babel/plugin-transform-runtime': 7.21.4_@babel+core@7.21.8 - '@babel/runtime': 7.21.5 - eth-query: 2.1.2 + '@metamask/safe-event-emitter': 2.0.0 + '@metamask/utils': 3.6.0 json-rpc-random-id: 1.0.1 pify: 3.0.0 - safe-event-emitter: 1.0.1 transitivePeerDependencies: - - '@babel/core' - supports-color dev: false @@ -6284,6 +6891,15 @@ packages: '@scure/bip39': 1.1.1 dev: false + /ethereum-cryptography/2.0.0: + resolution: {integrity: sha512-g25m4EtfQGjstWgVE1aIz7XYYjf3kH5kG17ULWVB5dH6uLahsoltOhACzSxyDV+fhn4gbR4xRrOXGe6r2uh4Bg==} + dependencies: + '@noble/curves': 1.0.0 + '@noble/hashes': 1.3.0 + '@scure/bip32': 1.3.0 + '@scure/bip39': 1.2.0 + dev: false + /ethereumjs-abi/0.6.8: resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} dependencies: @@ -6407,6 +7023,22 @@ packages: strip-final-newline: 3.0.0 dev: true + /exit/0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /expect/29.5.0: + resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + dev: true + /extendable-error/0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} dev: true @@ -6448,8 +7080,8 @@ packages: /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - /fast-redact/3.1.2: - resolution: {integrity: sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==} + /fast-redact/3.2.0: + resolution: {integrity: sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==} engines: {node: '>=6'} dev: false @@ -6466,6 +7098,12 @@ packages: dependencies: reusify: 1.0.4 + /fb-watchman/2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: true + /file-entry-cache/6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -6487,13 +7125,6 @@ packages: engines: {node: '>=0.10.0'} dev: false - /find-up/3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - dependencies: - locate-path: 3.0.0 - dev: false - /find-up/4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -6525,6 +7156,7 @@ packages: /flat/5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true + dev: true /flatted/3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} @@ -6592,6 +7224,7 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true + dev: true optional: true /function-bind/1.1.1: @@ -6618,6 +7251,7 @@ packages: /gensync/1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + dev: true /get-caller-file/2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} @@ -6625,6 +7259,7 @@ packages: /get-func-name/2.0.0: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} + dev: true /get-intrinsic/1.2.0: resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} @@ -6641,6 +7276,11 @@ packages: has-proto: 1.0.1 has-symbols: 1.0.3 + /get-package-type/0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + /get-stream/6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -6701,6 +7341,7 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: true /glob/7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} @@ -6722,6 +7363,7 @@ packages: /globals/11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + dev: true /globals/13.20.0: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} @@ -6838,6 +7480,7 @@ packages: /he/1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true + dev: true /hey-listen/1.0.8: resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} @@ -6861,6 +7504,10 @@ packages: lru-cache: 6.0.0 dev: true + /html-escaper/2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + /human-id/1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} dev: true @@ -6913,6 +7560,15 @@ packages: parent-module: 1.0.1 resolve-from: 4.0.0 + /import-local/3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + /imurmurhash/0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -6980,6 +7636,7 @@ packages: engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 + dev: true /is-boolean-object/1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} @@ -7006,14 +7663,13 @@ packages: ci-info: 3.8.0 dev: true - /is-core-module/2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + /is-core-module/2.12.0: + resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} dependencies: has: 1.0.3 - dev: true - /is-core-module/2.12.0: - resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} + /is-core-module/2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} dependencies: has: 1.0.3 @@ -7033,11 +7689,6 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - /is-fullwidth-code-point/2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - dev: false - /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -7047,6 +7698,11 @@ packages: engines: {node: '>=12'} dev: true + /is-generator-fn/2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + /is-generator-function/1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} @@ -7107,6 +7763,7 @@ packages: /is-plain-obj/2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} + dev: true /is-reference/1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} @@ -7182,6 +7839,7 @@ packages: /is-unicode-supported/0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + dev: true /is-weakmap/2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} @@ -7239,6 +7897,60 @@ packages: ws: 7.5.9 dev: false + /isomorphic-ws/5.0.0_ws@8.12.0: + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + dependencies: + ws: 8.12.0 + dev: false + + /istanbul-lib-coverage/3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument/5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.21.8 + '@babel/parser': 7.21.8 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report/3.0.0: + resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} + engines: {node: '>=8'} + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 3.1.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps/4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports/3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.0 + dev: true + /jayson/3.7.0: resolution: {integrity: sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==} engines: {node: '>=8'} @@ -7262,15 +7974,425 @@ packages: - utf-8-validate dev: false + /jest-changed-files/29.5.0: + resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + p-limit: 3.1.0 + dev: true + + /jest-circus/29.5.0: + resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.13 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + is-generator-fn: 2.1.0 + jest-each: 29.5.0 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + p-limit: 3.1.0 + pretty-format: 29.5.0 + pure-rand: 6.0.2 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-cli/29.5.0_ztixajiphkh4mtv2gbkr4waa44: + resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.5.0_ts-node@10.9.1 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.1.0 + jest-config: 29.5.0_ztixajiphkh4mtv2gbkr4waa44 + jest-util: 29.5.0 + jest-validate: 29.5.0 + prompts: 2.4.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /jest-config/29.5.0_ztixajiphkh4mtv2gbkr4waa44: + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.21.8 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.13 + babel-jest: 29.5.0_@babel+core@7.21.8 + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1_kad2biipqth74ckkc6ygvcanzi + transitivePeerDependencies: + - supports-color + dev: true + + /jest-diff/29.5.0: + resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-docblock/29.4.3: + resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each/29.5.0: + resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + chalk: 4.1.2 + jest-get-type: 29.4.3 + jest-util: 29.5.0 + pretty-format: 29.5.0 + dev: true + + /jest-environment-node/29.5.0: + resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.13 + jest-mock: 29.5.0 + jest-util: 29.5.0 + dev: true + + /jest-get-type/29.4.3: + resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-haste-map/29.5.0: + resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/graceful-fs': 4.1.6 + '@types/node': 18.16.13 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + jest-worker: 29.5.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /jest-leak-detector/29.5.0: + resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-matcher-utils/29.5.0: + resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-message-util/29.5.0: + resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.21.4 + '@jest/types': 29.5.0 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.5.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock/29.5.0: + resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 18.16.13 + jest-util: 29.5.0 + dev: true + + /jest-pnp-resolver/1.2.3_jest-resolve@29.5.0: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.5.0 + dev: true + + /jest-regex-util/29.4.3: + resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-resolve-dependencies/29.5.0: + resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.4.3 + jest-snapshot: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve/29.5.0: + resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-pnp-resolver: 1.2.3_jest-resolve@29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + resolve: 1.22.2 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + + /jest-runner/29.5.0: + resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.5.0 + '@jest/environment': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.13 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.4.3 + jest-environment-node: 29.5.0 + jest-haste-map: 29.5.0 + jest-leak-detector: 29.5.0 + jest-message-util: 29.5.0 + jest-resolve: 29.5.0 + jest-runtime: 29.5.0 + jest-util: 29.5.0 + jest-watcher: 29.5.0 + jest-worker: 29.5.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime/29.5.0: + resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/globals': 29.5.0 + '@jest/source-map': 29.4.3 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.13 + chalk: 4.1.2 + cjs-module-lexer: 1.2.2 + collect-v8-coverage: 1.0.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot/29.5.0: + resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.21.8 + '@babel/generator': 7.21.5 + '@babel/plugin-syntax-jsx': 7.21.4_@babel+core@7.21.8 + '@babel/plugin-syntax-typescript': 7.21.4_@babel+core@7.21.8 + '@babel/traverse': 7.21.5 + '@babel/types': 7.21.5 + '@jest/expect-utils': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/babel__traverse': 7.18.5 + '@types/prettier': 2.7.2 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.21.8 + chalk: 4.1.2 + expect: 29.5.0 + graceful-fs: 4.2.11 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + natural-compare: 1.4.0 + pretty-format: 29.5.0 + semver: 7.5.1 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util/29.5.0: + resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 18.16.13 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-validate/29.5.0: + resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.4.3 + leven: 3.1.0 + pretty-format: 29.5.0 + dev: true + + /jest-watcher/29.5.0: + resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.13 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.5.0 + string-length: 4.0.2 + dev: true + /jest-worker/26.6.2: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.1.5 + '@types/node': 20.1.7 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true + /jest-worker/29.5.0: + resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 18.16.13 + jest-util: 29.5.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest/29.5.0_ztixajiphkh4mtv2gbkr4waa44: + resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.5.0_ts-node@10.9.1 + '@jest/types': 29.5.0 + import-local: 3.1.0 + jest-cli: 29.5.0_ztixajiphkh4mtv2gbkr4waa44 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + /js-sdsl/4.4.0: resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} @@ -7304,6 +8426,7 @@ packages: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true + dev: true /json-parse-better-errors/1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} @@ -7349,6 +8472,7 @@ packages: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true + dev: true /jsonfile/4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -7394,6 +8518,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /kleur/3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true + /kleur/4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} @@ -7483,6 +8612,11 @@ packages: xtend: 3.0.0 dev: true + /leven/3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true + /levn/0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -7559,26 +8693,26 @@ packages: wrap-ansi: 7.0.0 dev: true - /lit-element/3.3.0: - resolution: {integrity: sha512-M3OIoblNS7LZdRxOIk8g0wyLEA/lRw/UGJ1TX+767OpkuDsRdSoxBIvewpWqCo7sMd9xt1XedUNZIr9jUO1X3g==} + /lit-element/3.3.2: + resolution: {integrity: sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ==} dependencies: - '@lit-labs/ssr-dom-shim': 1.1.0 + '@lit-labs/ssr-dom-shim': 1.1.1 '@lit/reactive-element': 1.6.1 - lit-html: 2.7.0 + lit-html: 2.7.4 dev: false - /lit-html/2.7.0: - resolution: {integrity: sha512-/zPOl8EfeB3HHpTzINSpnWgvgQ8N07g/j272EOAIyB0Ys2RzBqTVT23i+JZuUlNbB2WHHeSsTCFi92NtWrtpqQ==} + /lit-html/2.7.4: + resolution: {integrity: sha512-/Jw+FBpeEN+z8X6PJva5n7+0MzCVAH2yypN99qHYYkq8bI+j7I39GH+68Z/MZD6rGKDK9RpzBw7CocfmHfq6+g==} dependencies: '@types/trusted-types': 2.0.3 dev: false - /lit/2.6.1: - resolution: {integrity: sha512-DT87LD64f8acR7uVp7kZfhLRrHkfC/N4BVzAtnw9Yg8087mbBJ//qedwdwX0kzDbxgPccWRW6mFwGbRQIxy0pw==} + /lit/2.7.4: + resolution: {integrity: sha512-cgD7xrZoYr21mbrkZIuIrj98YTMw/snJPg52deWVV4A8icLyNHI3bF70xsJeAgwTuiq5Kkd+ZR8gybSJDCPB7g==} dependencies: '@lit/reactive-element': 1.6.1 - lit-element: 3.3.0 - lit-html: 2.7.0 + lit-element: 3.3.2 + lit-html: 2.7.4 dev: false /load-json-file/4.0.0: @@ -7601,14 +8735,6 @@ packages: strip-bom: 3.0.0 dev: true - /locate-path/3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - dev: false - /locate-path/5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -7627,6 +8753,7 @@ packages: /lodash.debounce/4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: true /lodash.isequal/4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} @@ -7644,6 +8771,10 @@ packages: resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} dev: true + /lodash.memoize/4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true + /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -7676,6 +8807,7 @@ packages: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 + dev: true /log-update/4.0.0: resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} @@ -7705,6 +8837,7 @@ packages: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: get-func-name: 2.0.0 + dev: true /lru-cache/4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} @@ -7717,6 +8850,7 @@ packages: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 + dev: true /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} @@ -7741,8 +8875,22 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /make-dir/3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.0 + dev: true + /make-error/1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /makeerror/1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: true /map-obj/1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} @@ -7861,6 +9009,7 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 + dev: true /minimist-options/4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} @@ -7905,16 +9054,17 @@ packages: yargs: 16.2.0 yargs-parser: 20.2.4 yargs-unparser: 2.0.0 + dev: true /motion/10.15.5: resolution: {integrity: sha512-ejP6KioN4pigTGxL93APzOnvtLklParL59UQB2T3HWXQBxFcIp5/7YXFmkgiA6pNKKzjvnLhnonRBN5iSFMnNw==} dependencies: '@motionone/animation': 10.15.1 - '@motionone/dom': 10.15.5 - '@motionone/svelte': 10.15.5 + '@motionone/dom': 10.16.2 + '@motionone/svelte': 10.16.2 '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 - '@motionone/vue': 10.15.5 + '@motionone/vue': 10.16.2 dev: false /ms/2.1.2: @@ -7931,6 +9081,7 @@ packages: resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + dev: true /nanoid/3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} @@ -7945,7 +9096,7 @@ packages: /natural-compare/1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - /next/13.1.6_3j7hb26pwgm6spbxoejtjx6xja: + /next/13.1.6_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==} engines: {node: '>=14.6.0'} hasBin: true @@ -7969,7 +9120,7 @@ packages: postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - styled-jsx: 5.1.1_wn6zaaxe2xt3xsygjqv5uvr2am + styled-jsx: 5.1.1_react@18.2.0 optionalDependencies: '@next/swc-android-arm-eabi': 13.1.6 '@next/swc-android-arm64': 13.1.6 @@ -8004,31 +9155,24 @@ packages: dependencies: whatwg-url: 5.0.0 - /node-fetch/2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: false - /node-gyp-build/4.6.0: resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} hasBin: true dev: false + /node-int64/0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true + /node-releases/2.0.10: resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} + dev: true /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.1 + resolve: 1.22.2 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: true @@ -8038,7 +9182,7 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.12.0 + is-core-module: 2.12.1 semver: 7.5.1 validate-npm-package-license: 3.0.4 dev: true @@ -8046,6 +9190,7 @@ packages: /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + dev: true /npm-run-path/4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} @@ -8206,13 +9351,6 @@ packages: dependencies: yocto-queue: 0.1.0 - /p-locate/3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - dependencies: - p-limit: 2.3.0 - dev: false - /p-locate/4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -8275,11 +9413,6 @@ packages: lines-and-columns: 1.2.4 dev: true - /path-exists/3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - dev: false - /path-exists/4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -8313,6 +9446,7 @@ packages: /pathval/1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true /pbkdf2/3.1.2: resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} @@ -8367,7 +9501,7 @@ packages: hasBin: true dependencies: atomic-sleep: 1.0.0 - fast-redact: 3.1.2 + fast-redact: 3.2.0 on-exit-leak-free: 0.2.0 pino-abstract-transport: 0.5.0 pino-std-serializers: 4.0.0 @@ -8379,6 +9513,11 @@ packages: thread-stream: 0.15.2 dev: false + /pirates/4.0.5: + resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + engines: {node: '>= 6'} + dev: true + /pkg-dir/4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -8386,11 +9525,6 @@ packages: find-up: 4.1.0 dev: true - /pngjs/3.4.0: - resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} - engines: {node: '>=4.0.0'} - dev: false - /pngjs/5.0.0: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} @@ -8405,12 +9539,8 @@ packages: source-map-js: 1.0.2 dev: false - /preact/10.13.2: - resolution: {integrity: sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==} - dev: false - - /preact/10.4.1: - resolution: {integrity: sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q==} + /preact/10.14.1: + resolution: {integrity: sha512-4XDSnUisk3YFBb3p9WeKeH1mKoxdFUsaXcvxs9wlpYR1wax/TWJVqhwmIWbByX0h7jMEJH6Zc5J6jqc58FKaNQ==} dev: false /preferred-pm/3.0.3: @@ -8440,6 +9570,15 @@ packages: hasBin: true dev: true + /pretty-format/29.5.0: + resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + /process-es6/0.11.6: resolution: {integrity: sha512-GYBRQtL4v3wgigq10Pv58jmTbFXlIiTbSfgnNqZLY0ldUPqy1rRxDI5fCjoCpnM6TqmHQI8ydzTBXW86OYc0gA==} dev: true @@ -8452,6 +9591,14 @@ packages: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} dev: false + /prompts/2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + /prop-types/15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: @@ -8475,12 +9622,12 @@ packages: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 20.1.5 + '@types/node': 18.16.7 long: 4.0.0 dev: false - /proxy-compare/2.5.0: - resolution: {integrity: sha512-f1us0OsVAJ3tdIMXGQx2lmseYS4YXe4W+sKF5g5ww/jV+5ogMadPt+sIZ+88Ga9kvMJsrRNWzCrKPpr6pMWYbA==} + /proxy-compare/2.5.1: + resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} dev: false /proxy-from-env/1.1.0: @@ -8514,54 +9661,45 @@ packages: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} + /pure-rand/6.0.2: + resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} + dev: true + /q/1.5.1: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} dev: true - /qrcode/1.4.4: - resolution: {integrity: sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==} - engines: {node: '>=4'} - hasBin: true - dependencies: - buffer: 5.7.1 - buffer-alloc: 1.2.0 - buffer-from: 1.1.2 - dijkstrajs: 1.0.2 - isarray: 2.0.5 - pngjs: 3.4.0 - yargs: 13.3.2 - dev: false - - /qrcode/1.5.1: - resolution: {integrity: sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==} + /qrcode/1.5.3: + resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} engines: {node: '>=10.13.0'} hasBin: true dependencies: - dijkstrajs: 1.0.2 + dijkstrajs: 1.0.3 encode-utf8: 1.0.3 pngjs: 5.0.0 yargs: 15.4.1 dev: false - /qs/6.11.1: - resolution: {integrity: sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==} + /qs/6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} engines: {node: '>=0.6'} dependencies: side-channel: 1.0.4 dev: false - /query-string/6.13.5: - resolution: {integrity: sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q==} + /query-string/6.14.1: + resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==} engines: {node: '>=6'} dependencies: decode-uri-component: 0.2.2 + filter-obj: 1.1.0 split-on-first: 1.1.0 strict-uri-encode: 2.0.0 dev: false - /query-string/7.1.1: - resolution: {integrity: sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w==} + /query-string/7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} engines: {node: '>=6'} dependencies: decode-uri-component: 0.2.2 @@ -8607,6 +9745,10 @@ packages: /react-is/16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + /react-is/18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + /react/18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} @@ -8695,6 +9837,7 @@ packages: engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 + dev: true /readonly-date/1.0.0: resolution: {integrity: sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==} @@ -8720,6 +9863,10 @@ packages: strip-indent: 3.0.0 dev: true + /reflect-metadata/0.1.13: + resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} + dev: false + /regenerate-unicode-properties/10.1.0: resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} engines: {node: '>=4'} @@ -8779,6 +9926,13 @@ packages: /require-main-filename/2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + /resolve-cwd/3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -8795,20 +9949,16 @@ packages: global-dirs: 0.1.1 dev: true - /resolve/1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true - dependencies: - is-core-module: 2.11.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 + /resolve.exports/2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} dev: true /resolve/1.22.2: resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true dependencies: - is-core-module: 2.12.0 + is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -8816,7 +9966,7 @@ packages: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: - is-core-module: 2.12.0 + is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -8939,7 +10089,7 @@ packages: /rxjs/7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.5.0 + tslib: 2.5.1 dev: true /safe-buffer/5.1.2: @@ -8949,13 +10099,6 @@ packages: /safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - /safe-event-emitter/1.0.1: - resolution: {integrity: sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg==} - deprecated: Renamed to @metamask/safe-event-emitter - dependencies: - events: 3.3.0 - dev: false - /safe-json-utils/1.1.1: resolution: {integrity: sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ==} dev: false @@ -9027,7 +10170,6 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 - dev: true /serialize-javascript/4.0.0: resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} @@ -9039,6 +10181,7 @@ packages: resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} dependencies: randombytes: 2.1.0 + dev: true /set-blocking/2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -9112,6 +10255,10 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true + /sisteransi/1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -9170,6 +10317,13 @@ packages: engines: {node: '>=0.10.0'} dev: false + /source-map-support/0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + /source-map-support/0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: @@ -9236,6 +10390,13 @@ packages: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true + /stack-utils/2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + /stop-iteration-iterator/1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} @@ -9269,6 +10430,14 @@ packages: engines: {node: '>=0.6.19'} dev: true + /string-length/4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + /string-natural-compare/3.0.1: resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} dev: true @@ -9277,15 +10446,6 @@ packages: resolution: {integrity: sha512-tYft6IFi8SjplJpxCUxyqisD3b+R2CSkomrtJYCkvuf1KuCAWgz7YXt4O0jip7efpfCemwHEzTEAO8EuOYgh3w==} dev: true - /string-width/3.1.0: - resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} - engines: {node: '>=6'} - dependencies: - emoji-regex: 7.0.3 - is-fullwidth-code-point: 2.0.0 - strip-ansi: 5.2.0 - dev: false - /string-width/4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -9352,13 +10512,6 @@ packages: dependencies: safe-buffer: 5.2.1 - /strip-ansi/5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} - dependencies: - ansi-regex: 4.1.1 - dev: false - /strip-ansi/6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -9376,6 +10529,11 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + /strip-bom/4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + /strip-final-newline/2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -9404,7 +10562,7 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - /styled-jsx/5.1.1_wn6zaaxe2xt3xsygjqv5uvr2am: + /styled-jsx/5.1.1_react@18.2.0: resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -9417,7 +10575,6 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.21.8 client-only: 0.0.1 react: 18.2.0 dev: false @@ -9426,6 +10583,11 @@ packages: resolution: {integrity: sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==} dev: false + /superstruct/1.0.3: + resolution: {integrity: sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==} + engines: {node: '>=14.0.0'} + dev: false + /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -9443,6 +10605,7 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 + dev: true /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -9482,6 +10645,15 @@ packages: source-map-support: 0.5.21 dev: true + /test-exclude/6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + /text-encoding-utf-8/1.0.2: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} dev: false @@ -9523,9 +10695,14 @@ packages: os-tmpdir: 1.0.2 dev: true + /tmpl/1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true + /to-fast-properties/2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} + dev: true /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -9545,68 +10722,41 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.9.1_dfji5vargqbhwd5qh6ylai2p3e: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + /ts-jest/29.1.0_viinukn7nustgjlyhsmms6zpji: + resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' peerDependenciesMeta: - '@swc/core': + '@babel/core': optional: true - '@swc/wasm': + '@jest/types': optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 18.16.7 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - - /ts-node/10.9.1_u5ax4hcaao6h6ctrp2v254guiq: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': + babel-jest: optional: true - '@swc/wasm': + esbuild: optional: true dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 18.16.10 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 + '@babel/core': 7.21.8 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.5.0_ztixajiphkh4mtv2gbkr4waa44 + jest-util: 29.5.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 make-error: 1.3.6 - typescript: 5.0.4 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 + semver: 7.5.1 + typescript: 4.9.5 + yargs-parser: 21.1.1 dev: true - /ts-node/10.9.1_wh5cciuul2ivno4sebepep4pie: + /ts-node/10.9.1_kad2biipqth74ckkc6ygvcanzi: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -9625,7 +10775,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 20.1.5 + '@types/node': 18.16.13 acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 @@ -9651,6 +10801,9 @@ packages: /tslib/2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + /tslib/2.5.1: + resolution: {integrity: sha512-KaI6gPil5m9vF7DKaoXxx1ia9fxS4qG5YveErRRVknPDXXriu5M8h48YRjB6h5ZUOKuAKlSJYb0GaDe8I39fRw==} + /tsutils/3.21.0_typescript@4.9.5: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -9659,17 +10812,13 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 - dev: false - /tsutils/3.21.0_typescript@5.0.4: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + /tsyringe/4.7.0: + resolution: {integrity: sha512-ncFDM1jTLsok4ejMvSW5jN1VGPQD48y2tfAR0pdptWRKYX4bkbqPt92k7KJ5RFJ1KV36JEs/+TMh7I6OUgj74g==} + engines: {node: '>= 6.0.0'} dependencies: tslib: 1.14.1 - typescript: 5.0.4 - dev: true + dev: false /tty-table/4.2.1: resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} @@ -9702,6 +10851,7 @@ packages: /type-detect/4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} + dev: true /type-fest/0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} @@ -9764,8 +10914,8 @@ packages: hasBin: true dev: true - /uint8arrays/3.1.0: - resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} + /uint8arrays/3.1.1: + resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} dependencies: multiformats: 9.9.0 dev: false @@ -9820,6 +10970,7 @@ packages: browserslist: 4.21.5 escalade: 3.1.1 picocolors: 1.0.0 + dev: true /uri-js/4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -9862,6 +11013,16 @@ packages: /v8-compile-cache-lib/3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true + + /v8-to-istanbul/9.1.0: + resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.9.0 + dev: true /validate-npm-package-license/3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -9870,8 +11031,8 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /valtio/1.10.3_react@18.2.0: - resolution: {integrity: sha512-t3Ez/+baJ+Z5tIyeaI6nCAbW/hrmcq2jditwg/X++o5IvCdiGirQKTOv1kJq0glgUo13v5oABCVGcinggBfiKw==} + /valtio/1.10.5_react@18.2.0: + resolution: {integrity: sha512-jTp0k63VXf4r5hPoaC6a6LCG4POkVSh629WLi1+d5PlajLsbynTMd7qAgEiOSPxzoX5iNvbN7iZ/k/g29wrNiQ==} engines: {node: '>=12.20.0'} peerDependencies: react: '>=16.8' @@ -9879,7 +11040,7 @@ packages: react: optional: true dependencies: - proxy-compare: 2.5.0 + proxy-compare: 2.5.1 react: 18.2.0 use-sync-external-store: 1.2.0_react@18.2.0 dev: false @@ -9889,31 +11050,46 @@ packages: engines: {node: '>= 0.8'} dev: false - /wagmi/0.11.7_76vh7hzkggrg75gljfbopgdmqi: - resolution: {integrity: sha512-IiB1TxTVn+xvjju3ZNQfiwfiB6EZj1h3CO7Zt8q0PEDRN76jqniaeOV7QAnfBgtbqmVh2co4Miaz1rRtvVPMTQ==} + /viem/0.3.31_typescript@4.9.5: + resolution: {integrity: sha512-4B7oUQkYCGmnd/W+T/miFudx/pZ3V3mRdv3nl1tPy60W5Zlt2lIH+XN9Q0pkHe+5n2Eto/aFZYwRdqGsj6MHmA==} + dependencies: + '@adraffy/ens-normalize': 1.9.0 + '@noble/curves': 1.0.0 + '@noble/hashes': 1.3.0 + '@scure/bip32': 1.3.0 + '@scure/bip39': 1.2.0 + '@wagmi/chains': 0.2.16_typescript@4.9.5 + abitype: 0.8.2_typescript@4.9.5 + isomorphic-ws: 5.0.0_ws@8.12.0 + ws: 8.12.0 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + dev: false + + /wagmi/1.0.5_52rmszrm4bg4m3nhb6mgjy7grm: + resolution: {integrity: sha512-XsLhNPTD7c+QXaA9elMwDihvcNHBw4Jcu0S/otkn3N4FgWIUVSQGiUYwm3AQrm/UhON0+Q8Y3ICzxB47PSr46g==} peerDependencies: - ethers: '>=5.5.1 <6' react: '>=17.0.0' typescript: '>=4.9.4' + viem: ~0.3.18 peerDependenciesMeta: typescript: optional: true dependencies: - '@tanstack/query-sync-storage-persister': 4.27.1 - '@tanstack/react-query': 4.28.0_biqbaboplfbrettd7655fr4n2y - '@tanstack/react-query-persist-client': 4.28.0_qfusmmwykmcbgdy37sd3cqxiry - '@wagmi/core': 0.9.7_ggafbflcu3luqnvuy4xuc3h6nu - abitype: 0.3.0_typescript@4.9.5 - ethers: 5.7.2 + '@tanstack/query-sync-storage-persister': 4.29.7 + '@tanstack/react-query': 4.29.7_biqbaboplfbrettd7655fr4n2y + '@tanstack/react-query-persist-client': 4.29.7_776iqyc7ir26b73sx2hj4bwzwu + '@wagmi/core': 1.0.5_nus464gvkzoi6naqshaakklh74 + abitype: 0.8.1_typescript@4.9.5 react: 18.2.0 typescript: 4.9.5 use-sync-external-store: 1.2.0_react@18.2.0 + viem: 0.3.31_typescript@4.9.5 transitivePeerDependencies: - - '@babel/core' - '@react-native-async-storage/async-storage' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - bufferutil - debug - encoding @@ -9926,6 +11102,12 @@ packages: - zod dev: false + /walker/1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: true + /wcwidth/1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: @@ -10000,15 +11182,7 @@ packages: /workerpool/6.2.1: resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} - - /wrap-ansi/5.1.0: - resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} - engines: {node: '>=6'} - dependencies: - ansi-styles: 3.2.1 - string-width: 3.1.0 - strip-ansi: 5.2.0 - dev: false + dev: true /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} @@ -10025,10 +11199,19 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: true /wrappy/1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + /write-file-atomic/4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + /ws/7.4.6: resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} engines: {node: '>=8.3.0'} @@ -10042,8 +11225,8 @@ packages: optional: true dev: false - /ws/7.5.3: - resolution: {integrity: sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==} + /ws/7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 @@ -10055,12 +11238,12 @@ packages: optional: true dev: false - /ws/7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} - engines: {node: '>=8.3.0'} + /ws/8.12.0: + resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} + engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 + utf-8-validate: '>=5.0.2' peerDependenciesMeta: bufferutil: optional: true @@ -10127,6 +11310,7 @@ packages: /y18n/5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} + dev: true /yallist/2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} @@ -10134,6 +11318,7 @@ packages: /yallist/3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -10148,13 +11333,6 @@ packages: engines: {node: '>= 14'} dev: true - /yargs-parser/13.1.2: - resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: false - /yargs-parser/18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -10165,6 +11343,7 @@ packages: /yargs-parser/20.2.4: resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} engines: {node: '>=10'} + dev: true /yargs-parser/20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} @@ -10184,21 +11363,7 @@ packages: decamelize: 4.0.0 flat: 5.0.2 is-plain-obj: 2.1.0 - - /yargs/13.3.2: - resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} - dependencies: - cliui: 5.0.0 - find-up: 3.0.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 3.1.0 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 13.1.2 - dev: false + dev: true /yargs/15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} @@ -10227,6 +11392,7 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.4 + dev: true /yargs/17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} @@ -10244,13 +11410,14 @@ packages: /yn/3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} + dev: true /yocto-queue/0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - /zustand/4.3.6_react@18.2.0: - resolution: {integrity: sha512-6J5zDxjxLE+yukC2XZWf/IyWVKnXT9b9HUv09VJ/bwGCpKNcaTqp7Ws28Xr8jnbvnZcdRaidztAPsXFBIqufiw==} + /zustand/4.3.8_react@18.2.0: + resolution: {integrity: sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg==} engines: {node: '>=12.7.0'} peerDependencies: immer: '>=9.0' From 5f40f19fc5197a7bb79f785f49bc4f6aa1aabe75 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 22 May 2023 20:52:17 +0800 Subject: [PATCH 004/433] chore: [ci] release (alpha) (#43) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 4 ++++ examples/nextjs/CHANGELOG.md | 11 +++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 11 +++++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 20 ++++++++++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 49 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index c1aaa08c..7a7564eb 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -8,11 +8,15 @@ "@demo/nodejs": "0.0.1" }, "changesets": [ + "beige-tables-carry", "dull-dodos-prove", + "early-parents-divide", "eleven-mayflies-fry", "great-walls-hide", "large-crabs-cheat", "light-islands-smile", + "ninety-meals-impress", + "rude-tips-rush", "thirty-yaks-appear", "yellow-lobsters-divide" ] diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index daf79122..930e729a 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,16 @@ # @demo/wallet +## 0.0.2-alpha.6 + +### Patch Changes + +- Updated dependencies + [[`2b1aed2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2b1aed294ae1bdc10eb7ac7cfc3de7effc73a3eb), + [`2b1aed2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2b1aed294ae1bdc10eb7ac7cfc3de7effc73a3eb), + [`2b1aed2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2b1aed294ae1bdc10eb7ac7cfc3de7effc73a3eb), + [`2b1aed2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2b1aed294ae1bdc10eb7ac7cfc3de7effc73a3eb)]: + - @bnb-chain/greenfield-chain-sdk@0.1.0-alpha.6 + ## 0.0.2-alpha.5 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 9a6994be..b3957994 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.2-alpha.5", + "version": "0.0.2-alpha.6", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 5d7c7e53..30b812ec 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,16 @@ # @demo/nodejs +## 0.0.3-alpha.1 + +### Patch Changes + +- Updated dependencies + [[`2b1aed2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2b1aed294ae1bdc10eb7ac7cfc3de7effc73a3eb), + [`2b1aed2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2b1aed294ae1bdc10eb7ac7cfc3de7effc73a3eb), + [`2b1aed2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2b1aed294ae1bdc10eb7ac7cfc3de7effc73a3eb), + [`2b1aed2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2b1aed294ae1bdc10eb7ac7cfc3de7effc73a3eb)]: + - @bnb-chain/greenfield-chain-sdk@0.1.0-alpha.6 + ## 0.0.3-alpha.0 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 75a3d147..2646835e 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.3-alpha.0", + "version": "0.0.3-alpha.1", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 66b55136..001f02b9 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,25 @@ # @bnb-chain/greenfield-chain-sdk +## 0.1.0-alpha.6 + +### Patch Changes + +- [#42](https://github.com/bnb-chain/greenfield-js-sdk/pull/42) + [`2b1aed2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2b1aed294ae1bdc10eb7ac7cfc3de7effc73a3eb) + Thanks [@rrr523](https://github.com/rrr523)! - feat: feegrant + +- [#42](https://github.com/bnb-chain/greenfield-js-sdk/pull/42) + [`2b1aed2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2b1aed294ae1bdc10eb7ac7cfc3de7effc73a3eb) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Change Tx API + +- [#42](https://github.com/bnb-chain/greenfield-js-sdk/pull/42) + [`2b1aed2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2b1aed294ae1bdc10eb7ac7cfc3de7effc73a3eb) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Support dynamic provider + +- [#42](https://github.com/bnb-chain/greenfield-js-sdk/pull/42) + [`2b1aed2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2b1aed294ae1bdc10eb7ac7cfc3de7effc73a3eb) + Thanks [@rrr523](https://github.com/rrr523)! - Upgrade Cosmos SDK + ## 0.1.0-alpha.5 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index abfaef6d..127e9a20 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.1.0-alpha.5", + "version": "0.1.0-alpha.6", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From fc3dd986646624c81f3cc43bdffb02e70d170b4f Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 24 May 2023 11:25:58 +0800 Subject: [PATCH 005/433] Feat/multi msg (#49) * feat: Multi Send * feat: Compatibility multi tx message --- .changeset/empty-ducks-wait.md | 5 + .changeset/pre.json | 12 +- .../nextjs/src/components/transfer/index.tsx | 11 - packages/chain-sdk/src/api/account.spec.ts | 104 ++++- packages/chain-sdk/src/api/account.ts | 2 +- packages/chain-sdk/src/api/basic.ts | 4 +- packages/chain-sdk/src/api/bucket.ts | 34 +- packages/chain-sdk/src/api/challenge.ts | 23 +- packages/chain-sdk/src/api/crosschain.ts | 25 +- packages/chain-sdk/src/api/group.ts | 42 +- packages/chain-sdk/src/api/objectt.ts | 31 +- packages/chain-sdk/src/api/payment.ts | 21 +- packages/chain-sdk/src/api/sp.ts | 17 - packages/chain-sdk/src/config.spec.ts | 24 +- .../src/messages/bank/MsgMultiSend.ts | 60 ++- .../chain-sdk/src/messages/bank/MsgSend.ts | 32 +- .../src/messages/cosmos/oracle/MsgClaim.ts | 28 +- .../messages/feegrant/MsgGrantAllowance.ts | 19 +- .../messages/feegrant/MsgRevokeAllowance.ts | 28 +- .../greenfield/bridge/MsgTransferOut.ts | 14 +- .../messages/greenfield/chanenge/MsgAttest.ts | 48 +-- .../messages/greenfield/chanenge/MsgSubmit.ts | 18 +- .../messages/greenfield/payment/MsgDeposit.ts | 43 +- .../greenfield/payment/MsgDisableRefund.ts | 67 +--- .../greenfield/payment/MsgWithdraw.ts | 55 +-- .../greenfield/sp/MsgUpdateSpStoragePrice.ts | 130 ------- .../storage/MsgCancelCreateObject.ts | 2 +- .../greenfield/storage/MsgCreateBucket.ts | 42 +- .../greenfield/storage/MsgCreateGroup.ts | 200 +--------- .../greenfield/storage/MsgCreateObject.ts | 70 +--- .../greenfield/storage/MsgDeleteBucket.ts | 15 +- .../greenfield/storage/MsgDeleteGroup.ts | 207 +--------- .../greenfield/storage/MsgDeleteObject.ts | 2 +- .../greenfield/storage/MsgDeletePolicy.ts | 329 +--------------- .../greenfield/storage/MsgLeaveGroup.ts | 239 +----------- .../greenfield/storage/MsgMirrorBucket.ts | 343 +--------------- .../greenfield/storage/MsgMirrorGroup.ts | 367 +----------------- .../greenfield/storage/MsgMirrorObject.ts | 331 +--------------- .../greenfield/storage/MsgPutPolicy.ts | 315 +-------------- .../greenfield/storage/MsgUpdateBucketInfo.ts | 260 +------------ .../storage/MsgUpdateGroupMember.ts | 226 +---------- .../greenfield/storage/MsgUpdateObjectInfo.ts | 26 ++ packages/chain-sdk/src/messages/index.ts | 43 +- 43 files changed, 514 insertions(+), 3400 deletions(-) create mode 100644 .changeset/empty-ducks-wait.md delete mode 100644 packages/chain-sdk/src/messages/greenfield/sp/MsgUpdateSpStoragePrice.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts diff --git a/.changeset/empty-ducks-wait.md b/.changeset/empty-ducks-wait.md new file mode 100644 index 00000000..d5e8a164 --- /dev/null +++ b/.changeset/empty-ducks-wait.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +feat: Update EIP712 struct, Support Multi Message !!!!! diff --git a/.changeset/pre.json b/.changeset/pre.json index 8b137891..a32b838d 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -1 +1,11 @@ - +{ + "mode": "pre", + "tag": "alpha", + "initialVersions": { + "@demo/wallet": "0.0.2-alpha.6", + "@demo/nodejs": "0.0.4", + "@bnb-chain/greenfield-chain-sdk": "0.2.0", + "@bnb-chain/greenfiled-file-handle": "0.2.0" + }, + "changesets": [] +} diff --git a/examples/nextjs/src/components/transfer/index.tsx b/examples/nextjs/src/components/transfer/index.tsx index e772127a..2effec5d 100644 --- a/examples/nextjs/src/components/transfer/index.tsx +++ b/examples/nextjs/src/components/transfer/index.tsx @@ -13,17 +13,6 @@ export const Transfer = () => { return (
-

Transfer

to : { // }); }); -// describe('accountTx', () => { -// describe('transfer', async () => { -// // ... -// }); -// }); +describe('accountTx', () => { + let simulateInfo = DEFAULT_SIMULATE_INFO; + + describe('transfer', () => { + test('simulate works', async () => { + const transferTx = await makeTransferTx(); + simulateInfo = await transferTx.simulate({ + denom: 'BNB', + }); + expect(simulateInfo).not.toBeNull(); + }); + + test('broadcast works', async () => { + const transferTx = await makeTransferTx(); + const broadcastInfo = await transferTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo.gasLimit), + gasPrice: simulateInfo.gasPrice, + granter: '', + payer: ACCOUNT.address, + privateKey: ACCOUNT.privateKey, + }); + + expect(broadcastInfo.code).toEqual(0); + }); + }); + + describe('multiTransfer', () => { + test('simulate works', async () => { + const transferTx = await makeMultiTransferTx(); + simulateInfo = await transferTx.simulate({ + denom: 'BNB', + }); + expect(simulateInfo).not.toBeNull(); + }); + + test('broadcast works', async () => { + const transferTx = await makeMultiTransferTx(); + const broadcastInfo = await transferTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo.gasLimit), + gasPrice: simulateInfo.gasPrice, + granter: '', + payer: ACCOUNT.address, + privateKey: ACCOUNT.privateKey, + }); + + expect(broadcastInfo.code).toEqual(0); + }); + }); +}); + +async function makeMultiTransferTx() { + return await client.account.multiTransfer(ACCOUNT.address, { + inputs: [ + { + address: ACCOUNT.address, + coins: [ + { + amount: '10', + denom: 'BNB', + }, + ], + }, + ], + outputs: [ + { + address: ZERO_ACCOUNT_ADDRESS, + coins: [ + { + amount: '10', + denom: 'BNB', + }, + ], + }, + ], + }); +} + +async function makeTransferTx() { + return await client.account.transfer({ + amount: [ + { + amount: '10', + denom: 'BNB', + }, + ], + fromAddress: ACCOUNT.address, + toAddress: ZERO_ACCOUNT_ADDRESS, + }); +} diff --git a/packages/chain-sdk/src/api/account.ts b/packages/chain-sdk/src/api/account.ts index feb00a1d..561dd4c8 100644 --- a/packages/chain-sdk/src/api/account.ts +++ b/packages/chain-sdk/src/api/account.ts @@ -20,10 +20,10 @@ import { QueryGetPaymentAccountsByOwnerResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; import { MsgCreatePaymentAccount } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/tx'; +import { container, delay, inject, singleton } from 'tsyringe'; import { TxResponse } from '..'; import { Basic } from './basic'; import { RpcQueryClient } from './queryclient'; -import { autoInjectable, container, delay, inject, injectable, singleton } from 'tsyringe'; export interface IAccount { /** diff --git a/packages/chain-sdk/src/api/basic.ts b/packages/chain-sdk/src/api/basic.ts index 474e69f5..649c4577 100644 --- a/packages/chain-sdk/src/api/basic.ts +++ b/packages/chain-sdk/src/api/basic.ts @@ -26,14 +26,14 @@ import { DeliverTxResponse, StargateClient } from '@cosmjs/stargate'; import { Tendermint37Client } from '@cosmjs/tendermint-rpc'; import { toBuffer } from '@ethereumjs/util'; import Long from 'long'; +import { container, inject, singleton } from 'tsyringe'; import { BroadcastOptions, ISimulateGasFee, SimulateOptions } from '..'; import { DEFAULT_DENOM, ZERO_PUBKEY } from '../constants'; import { createEIP712, generateFee, generateMessage, generateTypes } from '../messages'; import { eip712Hash, makeCosmsPubKey, recoverPk } from '../sign'; import { typeWrapper } from '../tx/utils'; -import { RpcQueryClient } from './queryclient'; import { Account } from './account'; -import { autoInjectable, container, delay, inject, injectable, singleton } from 'tsyringe'; +import { RpcQueryClient } from './queryclient'; export interface IBasic { /** diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index 13924e9e..cfc339c9 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -6,9 +6,18 @@ import { MsgDeleteBucketSDKTypeEIP712, MsgDeleteBucketTypeUrl, } from '@/messages/greenfield/storage/MsgDeleteBucket'; -import { MsgDeletePolicySDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeletePolicy'; -import { MsgPutPolicySDKTypeEIP712 } from '@/messages/greenfield/storage/MsgPutPolicy'; -import { MsgUpdateBucketInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; +import { + MsgDeletePolicySDKTypeEIP712, + MsgDeletePolicyTypeUrl, +} from '@/messages/greenfield/storage/MsgDeletePolicy'; +import { + MsgPutPolicySDKTypeEIP712, + MsgPutPolicyTypeUrl, +} from '@/messages/greenfield/storage/MsgPutPolicy'; +import { + MsgUpdateBucketInfoSDKTypeEIP712, + MsgUpdateBucketInfoTypeUrl, +} from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; import { decodeObjectFromHexString, encodeObjectToHexString } from '@/utils/encoding'; import { fetchWithTimeout, METHOD_GET, MOCK_SIGNATURE, NORMAL_ERROR_CODE } from '@/utils/http'; import { generateUrlByBucketName, isValidAddress, isValidBucketName, isValidUrl } from '@/utils/s3'; @@ -16,6 +25,8 @@ import { ActionType } from '@bnb-chain/greenfield-cosmos-types/greenfield/permis import { visibilityTypeFromJSON } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; import { QueryHeadBucketResponse, + QueryPolicyForAccountRequest, + QueryPolicyForAccountResponse, QueryVerifyPermissionResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/query'; import { @@ -87,6 +98,10 @@ export interface IBucket { putBucketPolicy(msg: MsgPutPolicy): Promise; deleteBucketPolicy(msg: MsgDeletePolicy): Promise; + + getBucketPolicy(request: QueryPolicyForAccountRequest): Promise; + + // TODO: getBucketReadQuota(); } @singleton() @@ -371,7 +386,7 @@ export class Bucket implements IBucket { public async updateBucketInfo(msg: MsgUpdateBucketInfo) { return await this.basic.tx( - '/greenfield.storage.MsgUpdateBucketInfo', + MsgUpdateBucketInfoTypeUrl, msg.operator, MsgUpdateBucketInfoSDKTypeEIP712, MsgUpdateBucketInfo.toSDK(msg), @@ -381,7 +396,7 @@ export class Bucket implements IBucket { public async putBucketPolicy(msg: MsgPutPolicy) { return await this.basic.tx( - '/greenfield.storage.MsgPutPolicy', + MsgPutPolicyTypeUrl, msg.operator, MsgPutPolicySDKTypeEIP712, MsgPutPolicy.toSDK(msg), @@ -390,14 +405,17 @@ export class Bucket implements IBucket { } public async deleteBucketPolicy(msg: MsgDeletePolicy) { - const typeUrl = '/greenfield.storage.MsgDeletePolicy'; - return await this.basic.tx( - typeUrl, + MsgDeletePolicyTypeUrl, msg.operator, MsgDeletePolicySDKTypeEIP712, MsgDeletePolicy.toSDK(msg), MsgDeletePolicy.encode(msg).finish(), ); } + + public async getBucketPolicy(request: QueryPolicyForAccountRequest) { + const rpc = await this.queryClient.getStorageQueryClient(); + return rpc.QueryPolicyForAccount(request); + } } diff --git a/packages/chain-sdk/src/api/challenge.ts b/packages/chain-sdk/src/api/challenge.ts index 4cb32cce..128699b6 100644 --- a/packages/chain-sdk/src/api/challenge.ts +++ b/packages/chain-sdk/src/api/challenge.ts @@ -1,8 +1,9 @@ -import { MsgAttestSDKTypeEIP712 } from '@/messages/greenfield/chanenge/MsgAttest'; -import { MsgSubmitSDKTypeEIP712 } from '@/messages/greenfield/chanenge/MsgSubmit'; +import { MsgAttestSDKTypeEIP712, MsgAttestTypeUrl } from '@/messages/greenfield/chanenge/MsgAttest'; +import { MsgSubmitSDKTypeEIP712, MsgSubmitTypeUrl } from '@/messages/greenfield/chanenge/MsgSubmit'; import { QueryInturnAttestationSubmitterResponse, QueryLatestAttestedChallengesResponse, + QueryParamsResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/query'; import { MsgAttest, MsgSubmit } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/tx'; import { container, delay, inject, singleton } from 'tsyringe'; @@ -11,11 +12,8 @@ import { Basic } from './basic'; import { RpcQueryClient } from './queryclient'; export interface IChallenge { - /** - * sends request to challenge and get challenge result info - * The challenge info includes the piece data, piece hash roots and integrity hash corresponding to the accessed SP - */ - // getChallengeInfo(); + // TODO: getChallengeInfo(); + /** * challenges the service provider data integrity, used by off-chain service greenfield-challenger. */ @@ -32,6 +30,8 @@ export interface IChallenge { latestAttestedChallenges(): Promise; inturnAttestationSubmitter(): Promise; + + params(): Promise; } @singleton() @@ -41,7 +41,7 @@ export class Challenge implements IChallenge { public async submitChallenge(address: string, msg: MsgSubmit) { return await this.basic.tx( - '/greenfield.challenge.MsgSubmit', + MsgSubmitTypeUrl, address, MsgSubmitSDKTypeEIP712, MsgSubmit.toSDK(msg), @@ -51,7 +51,7 @@ export class Challenge implements IChallenge { public async attestChallenge(address: string, msg: MsgAttest) { return await this.basic.tx( - '/greenfield.challenge.MsgAttest', + MsgAttestTypeUrl, address, MsgAttestSDKTypeEIP712, MsgAttest.toSDK(msg), @@ -68,4 +68,9 @@ export class Challenge implements IChallenge { const rpc = await this.queryClient.getChallengeQueryClient(); return await rpc.InturnAttestationSubmitter(); } + + public async params() { + const rpc = await this.queryClient.getChallengeQueryClient(); + return await rpc.Params(); + } } diff --git a/packages/chain-sdk/src/api/crosschain.ts b/packages/chain-sdk/src/api/crosschain.ts index 744bc53b..077f6dd9 100644 --- a/packages/chain-sdk/src/api/crosschain.ts +++ b/packages/chain-sdk/src/api/crosschain.ts @@ -1,11 +1,20 @@ -import { MsgClaimSDKTypeEIP712 } from '@/messages/cosmos/oracle/MsgClaim'; +import { MsgClaimSDKTypeEIP712, MsgClaimTypeUrl } from '@/messages/cosmos/oracle/MsgClaim'; import { MsgTransferOutSDKTypeEIP712, MsgTransferOutTypeUrl, } from '@/messages/greenfield/bridge/MsgTransferOut'; -import { MsgMirrorBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMirrorBucket'; -import { MsgMirrorGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMirrorGroup'; -import { MsgMirrorObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMirrorObject'; +import { + MsgMirrorBucketSDKTypeEIP712, + MsgMirrorBucketTypeUrl, +} from '@/messages/greenfield/storage/MsgMirrorBucket'; +import { + MsgMirrorGroupSDKTypeEIP712, + MsgMirrorGroupTypeUrl, +} from '@/messages/greenfield/storage/MsgMirrorGroup'; +import { + MsgMirrorObjectSDKTypeEIP712, + MsgMirrorObjectTypeUrl, +} from '@/messages/greenfield/storage/MsgMirrorObject'; import { QueryCrossChainPackageResponse, QueryReceiveSequenceResponse, @@ -92,7 +101,7 @@ export class CrossChain implements ICrossChain { public async claims(msg: MsgClaim) { return await this.basic.tx( - '/cosmos.oracle.v1.MsgClaim', + MsgClaimTypeUrl, msg.fromAddress, MsgClaimSDKTypeEIP712, MsgClaim.toSDK(msg), @@ -129,7 +138,7 @@ export class CrossChain implements ICrossChain { public async mirrorGroup(msg: MsgMirrorGroup) { return await this.basic.tx( - '/greenfield.storage.MsgMirrorGroup', + MsgMirrorGroupTypeUrl, msg.operator, MsgMirrorGroupSDKTypeEIP712, MsgMirrorGroup.toSDK(msg), @@ -139,7 +148,7 @@ export class CrossChain implements ICrossChain { public async mirrorBucket(msg: MsgMirrorBucket) { return await this.basic.tx( - '/greenfield.storage.MsgMirrorBucket', + MsgMirrorBucketTypeUrl, msg.operator, MsgMirrorBucketSDKTypeEIP712, MsgMirrorBucket.toSDK(msg), @@ -149,7 +158,7 @@ export class CrossChain implements ICrossChain { public async mirrorObject(msg: MsgMirrorObject) { return await this.basic.tx( - '/greenfield.storage.MsgMirrorObject', + MsgMirrorObjectTypeUrl, msg.operator, MsgMirrorObjectSDKTypeEIP712, MsgMirrorObject.toSDK(msg), diff --git a/packages/chain-sdk/src/api/group.ts b/packages/chain-sdk/src/api/group.ts index b06c8fc8..488e1fef 100644 --- a/packages/chain-sdk/src/api/group.ts +++ b/packages/chain-sdk/src/api/group.ts @@ -1,7 +1,19 @@ -import { MsgCreateGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCreateGroup'; -import { MsgDeleteGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteGroup'; -import { MsgLeaveGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgLeaveGroup'; -import { MsgUpdateGroupMemberSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateGroupMember'; +import { + MsgCreateGroupSDKTypeEIP712, + MsgCreateGroupTypeUrl, +} from '@/messages/greenfield/storage/MsgCreateGroup'; +import { + MsgDeleteGroupSDKTypeEIP712, + MsgDeleteGroupTypeUrl, +} from '@/messages/greenfield/storage/MsgDeleteGroup'; +import { + MsgLeaveGroupSDKTypeEIP712, + MsgLeaveGroupTypeUrl, +} from '@/messages/greenfield/storage/MsgLeaveGroup'; +import { + MsgUpdateGroupMemberSDKTypeEIP712, + MsgUpdateGroupMemberTypeUrl, +} from '@/messages/greenfield/storage/MsgUpdateGroupMember'; import { QueryHeadGroupMemberResponse, QueryHeadGroupResponse, @@ -59,6 +71,12 @@ export interface IGroup { * it queries a bucket policy that grants permission to a group */ getPolicyOfGroup(request: QueryPolicyForGroupRequest): Promise; + + // TODO: PutGroupPolicy compire with bucket.putBucketPolicy + + // TODO: getBucketPolicyOfGroup + + // TODO: getObjectPolicyOfGroup } @singleton() @@ -68,7 +86,7 @@ export class Group implements IGroup { public async createGroup(msg: MsgCreateGroup) { return await this.basic.tx( - '/greenfield.storage.MsgCreateGroup', + MsgCreateGroupTypeUrl, msg.creator, MsgCreateGroupSDKTypeEIP712, MsgCreateGroup.toSDK(msg), @@ -78,7 +96,7 @@ export class Group implements IGroup { public async deleteGroup(msg: MsgDeleteGroup) { return await this.basic.tx( - '/greenfield.storage.MsgCreateGroup', + MsgDeleteGroupTypeUrl, msg.operator, MsgDeleteGroupSDKTypeEIP712, MsgDeleteGroup.toSDK(msg), @@ -96,7 +114,7 @@ export class Group implements IGroup { } return await this.basic.tx( - '/greenfield.storage.MsgUpdateGroupMember', + MsgUpdateGroupMemberTypeUrl, msg.operator, MsgUpdateGroupMemberSDKTypeEIP712, MsgUpdateGroupMember.toSDK(msg), @@ -106,7 +124,7 @@ export class Group implements IGroup { public async leaveGroup(address: string, msg: MsgLeaveGroup) { return await this.basic.tx( - '/greenfield.storage.MsgLeaveGroup', + MsgLeaveGroupTypeUrl, address, MsgLeaveGroupSDKTypeEIP712, MsgLeaveGroup.toSDK(msg), @@ -135,4 +153,12 @@ export class Group implements IGroup { const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.QueryPolicyForGroup(request); } + + public async getBucketPolicyOfGroup() { + // ... + } + + public async getObjectPolicyOfGroup() { + // ... + } } diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index bd905c3c..0df9b5c2 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -11,24 +11,26 @@ import { MsgDeleteObjectTypeUrl, } from '@/messages/greenfield/storage/MsgDeleteObject'; import { + MsgUpdateObjectInfoSDKTypeEIP712, + MsgUpdateObjectInfoTypeUrl, +} from '@/messages/greenfield/storage/MsgUpdateObjectInfo'; +import { + fetchWithTimeout, METHOD_GET, METHOD_PUT, MOCK_SIGNATURE, NORMAL_ERROR_CODE, - fetchWithTimeout, } from '@/utils/http'; import { redundancyTypeFromJSON, visibilityTypeFromJSON, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; -import { - QueryHeadObjectResponse, - QueryClientImpl as StorageQueryClientImpl, -} from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/query'; +import { QueryHeadObjectResponse } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/query'; import { MsgCancelCreateObject, MsgCreateObject, MsgDeleteObject, + MsgUpdateObjectInfo, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { FileHandler } from '@bnb-chain/greenfiled-file-handle'; @@ -51,7 +53,6 @@ import { isValidObjectName, isValidUrl, } from '../utils/s3'; -import { Account } from './account'; import { Basic } from './basic'; import { RpcQueryClient } from './queryclient'; @@ -66,6 +67,8 @@ export interface IObject { cancelCreateObject(msg: MsgCancelCreateObject): Promise; + updateObjectInfo(msg: MsgUpdateObjectInfo): Promise; + deleteObject(msg: MsgDeleteObject): Promise; headObject(bucketName: string, objectName: string): Promise; @@ -81,6 +84,12 @@ export interface IObject { ): Promise>>; createFolder(getApprovalParams: IGetCreateObjectApproval): Promise; + + // TODO: PutObjectPolicy + // TODO: DeleteObjectPolicy + // TODO: IsObjectPermissionAllowed + // TODO: GetObjectUploadProgress + // TODO: getObjectStatusFromSP } @singleton() @@ -302,6 +311,16 @@ export class Objectt implements IObject { ); } + public async updateObjectInfo(msg: MsgUpdateObjectInfo) { + return await this.basic.tx( + MsgUpdateObjectInfoTypeUrl, + msg.operator, + MsgUpdateObjectInfoSDKTypeEIP712, + MsgUpdateObjectInfo.toSDK(msg), + MsgUpdateObjectInfo.encode(msg).finish(), + ); + } + public async headObject(bucketName: string, objectName: string) { const rpc = await this.queryClient.getStorageQueryClient(); diff --git a/packages/chain-sdk/src/api/payment.ts b/packages/chain-sdk/src/api/payment.ts index 44084a3e..632290d8 100644 --- a/packages/chain-sdk/src/api/payment.ts +++ b/packages/chain-sdk/src/api/payment.ts @@ -1,6 +1,15 @@ -import { MsgDepositSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgDeposit'; -import { MsgDisableRefundSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgDisableRefund'; -import { MsgWithdrawSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgWithdraw'; +import { + MsgDepositSDKTypeEIP712, + MsgDepositTypeUrl, +} from '@/messages/greenfield/payment/MsgDeposit'; +import { + MsgDisableRefundSDKTypeEIP712, + MsgDisableRefundTypeUrl, +} from '@/messages/greenfield/payment/MsgDisableRefund'; +import { + MsgWithdrawSDKTypeEIP712, + MsgWithdrawTypeUrl, +} from '@/messages/greenfield/payment/MsgWithdraw'; import { QueryGetStreamRecordResponse, QueryParamsResponse, @@ -58,7 +67,7 @@ export class Payment implements IPayment { public async deposit(msg: MsgDeposit) { return await this.basic.tx( - '/greenfield.payment.MsgDeposit', + MsgDepositTypeUrl, msg.creator, MsgDepositSDKTypeEIP712, MsgDeposit.toSDK(msg), @@ -68,7 +77,7 @@ export class Payment implements IPayment { public async withdraw(msg: MsgWithdraw) { return await this.basic.tx( - '/greenfield.payment.MsgWithdraw', + MsgWithdrawTypeUrl, msg.creator, MsgWithdrawSDKTypeEIP712, MsgWithdraw.toSDK(msg), @@ -78,7 +87,7 @@ export class Payment implements IPayment { public async disableRefund(msg: MsgDisableRefund) { return await this.basic.tx( - '/greenfield.payment.MsgDisableRefund', + MsgDisableRefundTypeUrl, msg.addr, MsgDisableRefundSDKTypeEIP712, MsgDisableRefund.toSDK(msg), diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index da7eb113..7888a1c7 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -1,6 +1,3 @@ -import { MsgUpdateSpStoragePriceSDKTypeEIP712 } from '@/messages/greenfield/sp/MsgUpdateSpStoragePrice'; - -import { MsgUpdateSpStoragePrice } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/tx'; import { SecondarySpStorePrice, SpStoragePrice, @@ -32,10 +29,6 @@ export interface ISp { * returns the secondary storage price, including update time and store price */ getSecondarySpStorePrice(): Promise; - - /** - * submit a grant transaction to allow gov module account to deduct the specified number of tokens - */ } @singleton() @@ -73,14 +66,4 @@ export class Sp implements ISp { }); return res.secondarySpStorePrice; } - - public async updateSpStoragePrice(address: string, msg: MsgUpdateSpStoragePrice) { - return await this.basic.tx( - '/greenfield.sp.MsgUpdateSpStoragePrice', - address, - MsgUpdateSpStoragePriceSDKTypeEIP712, - MsgUpdateSpStoragePrice.toSDK(msg), - MsgUpdateSpStoragePrice.encode(msg).finish(), - ); - } } diff --git a/packages/chain-sdk/src/config.spec.ts b/packages/chain-sdk/src/config.spec.ts index 8c16d3db..ccabc448 100644 --- a/packages/chain-sdk/src/config.spec.ts +++ b/packages/chain-sdk/src/config.spec.ts @@ -1,9 +1,25 @@ -export const GRPC_URL = 'https://gnfd.qa.bnbchain.world'; -export const GREENFIELD_URL = 'https://gnfd.qa.bnbchain.world'; +import { ISimulateGasFee } from './types'; + +// export const GRPC_URL = 'https://gnfd.qa.bnbchain.world'; +export const GRPC_URL = 'http://localhost:26750'; +// export const GREENFIELD_URL = 'https://gnfd.qa.bnbchain.world'; +export const GREENFIELD_URL = 'http://localhost:26750'; export const GREENFIELD_CHAIN_ID = '9000'; export const BSC_RPC_URL = 'https://data-seed-prebsc-1-s1.binance.org:8545'; export const BSC_CHAIN_ID = '97'; +// export const ACCOUNT = { +// address: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', +// privateKey: '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032', +// }; export const ACCOUNT = { - address: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', - privateKey: '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032', + address: '0x67c01Cc85Db17E26F279FC588759F266F97d1AB3', + privateKey: '0x9355300339899ae8df87ba0e2b71e8cc1ca996d65b0520e232d9de54bab11861', +}; + +export const ZERO_ACCOUNT_ADDRESS = '0x0000000000000000000000000000000000000000'; + +export const DEFAULT_SIMULATE_INFO: ISimulateGasFee = { + gasFee: '0', + gasLimit: BigInt(0), + gasPrice: '0', }; diff --git a/packages/chain-sdk/src/messages/bank/MsgMultiSend.ts b/packages/chain-sdk/src/messages/bank/MsgMultiSend.ts index 008eab7b..93602625 100644 --- a/packages/chain-sdk/src/messages/bank/MsgMultiSend.ts +++ b/packages/chain-sdk/src/messages/bank/MsgMultiSend.ts @@ -1,9 +1,57 @@ -export const MsgMultiSendTypeUrl = '/cosmos.bank.v1beta1.MsgMulti'; +export const MsgMultiSendTypeUrl = '/cosmos.bank.v1beta1.MsgMultiSend'; export const MsgMultiSendSDKTypeEIP712 = { - Msg: [ - { name: 'type', type: 'string' }, - { name: 'from_address', type: 'string' }, - { name: 'to_address', type: 'string' }, - { name: 'amount', type: 'TypeAmount[]' }, + Msg1: [ + { + name: 'type', + type: 'string', + }, + { + name: 'inputs', + type: 'TypeMsg1Inputs[]', + }, + { + name: 'outputs', + type: 'TypeMsg1Outputs[]', + }, + ], + TypeMsg1Inputs: [ + { + name: 'address', + type: 'string', + }, + { + name: 'coins', + type: 'TypeMsg1InputsCoins[]', + }, + ], + TypeMsg1InputsCoins: [ + { + name: 'denom', + type: 'string', + }, + { + name: 'amount', + type: 'string', + }, + ], + TypeMsg1Outputs: [ + { + name: 'address', + type: 'string', + }, + { + name: 'coins', + type: 'TypeMsg1OutputsCoins[]', + }, + ], + TypeMsg1OutputsCoins: [ + { + name: 'denom', + type: 'string', + }, + { + name: 'amount', + type: 'string', + }, ], }; diff --git a/packages/chain-sdk/src/messages/bank/MsgSend.ts b/packages/chain-sdk/src/messages/bank/MsgSend.ts index 88c875ac..575a4617 100644 --- a/packages/chain-sdk/src/messages/bank/MsgSend.ts +++ b/packages/chain-sdk/src/messages/bank/MsgSend.ts @@ -1,9 +1,31 @@ export const MsgSendTypeUrl = '/cosmos.bank.v1beta1.MsgSend'; export const MsgSendSDKTypeEIP712 = { - Msg: [ - { name: 'type', type: 'string' }, - { name: 'from_address', type: 'string' }, - { name: 'to_address', type: 'string' }, - { name: 'amount', type: 'TypeAmount[]' }, + Msg1: [ + { + name: 'type', + type: 'string', + }, + { + name: 'from_address', + type: 'string', + }, + { + name: 'to_address', + type: 'string', + }, + { + name: 'amount', + type: 'TypeMsg1Amount[]', + }, + ], + TypeMsg1Amount: [ + { + name: 'denom', + type: 'string', + }, + { + name: 'amount', + type: 'string', + }, ], }; diff --git a/packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts b/packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts index 658eacca..941108b8 100644 --- a/packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts +++ b/packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts @@ -1,40 +1,30 @@ +export const MsgClaimTypeUrl = '/cosmos.oracle.v1.MsgClaim'; + export const MsgClaimSDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', + type: 'string', }, { - type: 'string', name: 'from_address', + type: 'string', }, { - type: 'uint64', name: 'src_chain_id', + type: 'uint32', }, { - type: 'uint64', name: 'dest_chain_id', + type: 'uint32', }, { - type: 'uint64', name: 'sequence', - }, - { type: 'uint64', - name: 'timestamp', - }, - { - type: 'bytes', - name: 'payload', }, { - type: 'uint64[]', - name: 'vote_address_set', - }, - { - type: 'bytes', - name: 'agg_signature', + name: 'timestamp', + type: 'uint64', }, ], }; diff --git a/packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts b/packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts index 926c342b..10d2bf00 100644 --- a/packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts +++ b/packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts @@ -1,31 +1,32 @@ -export const MsgGrantAllowanceTypeUrl = '/cosmos/feegrant/v1beta1/MsgGrantAllowance'; +export const MsgGrantAllowanceTypeUrl = '/cosmos.feegrant.v1beta1.MsgGrantAllowance'; + export const MsgGrantAllowanceSDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', + type: 'string', }, { - type: 'string', name: 'granter', + type: 'string', }, { - type: 'string', name: 'grantee', + type: 'string', }, { - type: 'TypeAllowance', name: 'allowance', + type: 'TypeAny', }, ], - TypeAllowance: [ + TypeAny: [ { + name: 'type', type: 'string', - name: 'type_url', }, { - type: 'bytes', name: 'value', + type: 'bytes', }, ], }; diff --git a/packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts b/packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts index eccec3cd..f1afe290 100644 --- a/packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts +++ b/packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts @@ -1,39 +1,17 @@ -export const MsgRevokeAllowanceTypeUrl = '/cosmos/feegrant/v1beta1/MsgRevokeAllowance'; +export const MsgRevokeAllowanceTypeUrl = '/cosmos.feegrant.v1beta1.MsgRevokeAllowance'; export const MsgRevokeAllowanceSDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', - }, - { type: 'string', - name: 'granter', - }, - { - type: 'string', - name: 'grantee', - }, - { - type: 'TypeAllowance', - name: 'allowance', }, { - type: 'string', name: 'granter', - }, - { type: 'string', - name: 'grantee', }, - ], - TypeAllowance: [ { + name: 'grantee', type: 'string', - name: 'type_url', - }, - { - type: 'bytes', - name: 'value', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts b/packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts index 96a789a4..a9bb4052 100644 --- a/packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts +++ b/packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts @@ -1,7 +1,7 @@ export const MsgTransferOutTypeUrl = '/greenfield.bridge.MsgTransferOut'; export const MsgTransferOutSDKTypeEIP712 = { - Msg: [ + Msg1: [ { name: 'type', type: 'string', @@ -16,7 +16,17 @@ export const MsgTransferOutSDKTypeEIP712 = { }, { name: 'amount', - type: 'TypeAmount', + type: 'TypeMsg1Amount', + }, + ], + TypeMsg1Amount: [ + { + name: 'denom', + type: 'string', + }, + { + name: 'amount', + type: 'string', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts b/packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts index fe874f91..1b434879 100644 --- a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts +++ b/packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts @@ -1,64 +1,34 @@ +export const MsgAttestTypeUrl = '/greenfield.challenge.MsgAttest'; + export const MsgAttestSDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', - }, - { type: 'string', - name: 'challenger', - }, - { - type: 'string', - name: 'sp_operator_address', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'uint64', - name: 'segment_index', - }, - { - type: 'bool', - name: 'random_index', }, { - type: 'string', name: 'submitter', + type: 'string', }, { - type: 'uint64', name: 'challenge_id', + type: 'uint64', }, { - type: 'string', name: 'object_id', - }, - { type: 'string', - name: 'sp_operator_address', }, { + name: 'sp_operator_address', type: 'string', - name: 'vote_result', }, { + name: 'vote_result', type: 'string', - name: 'challenger_address', }, { - type: 'uint64[]', - name: 'vote_validator_set', - }, - { - type: 'bytes', - name: 'vote_agg_signature', + name: 'challenger_address', + type: 'string', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts b/packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts index d89bdb5a..c8734186 100644 --- a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts +++ b/packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts @@ -1,32 +1,34 @@ +export const MsgSubmitTypeUrl = '/greenfield.challenge.MsgSubmit'; + export const MsgSubmitSDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', + type: 'string', }, { - type: 'string', name: 'challenger', + type: 'string', }, { - type: 'string', name: 'sp_operator_address', + type: 'string', }, { - type: 'string', name: 'bucket_name', + type: 'string', }, { - type: 'string', name: 'object_name', + type: 'string', }, { - type: 'uint64', name: 'segment_index', + type: 'uint32', }, { - type: 'bool', name: 'random_index', + type: 'bool', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts b/packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts index 68e36b18..99b498b8 100644 --- a/packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts +++ b/packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts @@ -1,58 +1,21 @@ +export const MsgDepositTypeUrl = '/greenfield.payment.MsgDeposit'; export const MsgDepositSDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', - }, - { type: 'string', - name: 'authority', }, { - type: 'TypeParams', - name: 'params', - }, - { - type: 'string', name: 'creator', - }, - { type: 'string', - name: 'creator', }, { - type: 'string', name: 'to', - }, - { - type: 'string', - name: 'amount', - }, - ], - TypeParams: [ - { - type: 'uint64', - name: 'reserve_time', - }, - { - type: 'uint64', - name: 'payment_account_count_limit', - }, - { - type: 'uint64', - name: 'forced_settle_time', - }, - { - type: 'uint64', - name: 'max_auto_force_settle_num', - }, - { type: 'string', - name: 'fee_denom', }, { + name: 'amount', type: 'string', - name: 'validator_tax_rate', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts b/packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts index bde9de7d..cd4f16ec 100644 --- a/packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts +++ b/packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts @@ -1,78 +1,17 @@ +export const MsgDisableRefundTypeUrl = '/greenfield.payment.MsgDisableRefund'; export const MsgDisableRefundSDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', - }, - { - type: 'string', - name: 'authority', - }, - { - type: 'TypeParams', - name: 'params', - }, - { - type: 'string', - name: 'creator', - }, - { type: 'string', - name: 'creator', }, { - type: 'string', - name: 'to', - }, - { - type: 'string', - name: 'amount', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'from', - }, - { - type: 'string', - name: 'amount', - }, - { - type: 'string', name: 'owner', - }, - { type: 'string', - name: 'addr', - }, - ], - TypeParams: [ - { - type: 'uint64', - name: 'reserve_time', - }, - { - type: 'uint64', - name: 'payment_account_count_limit', - }, - { - type: 'uint64', - name: 'forced_settle_time', - }, - { - type: 'uint64', - name: 'max_auto_force_settle_num', - }, - { - type: 'string', - name: 'fee_denom', }, { + name: 'addr', type: 'string', - name: 'validator_tax_rate', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts b/packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts index 06f685b1..eaec76e2 100644 --- a/packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts +++ b/packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts @@ -1,70 +1,21 @@ +export const MsgWithdrawTypeUrl = '/greenfield.payment.MsgWithdraw'; export const MsgWithdrawSDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', - }, - { type: 'string', - name: 'authority', - }, - { - type: 'TypeParams', - name: 'params', }, { - type: 'string', name: 'creator', - }, - { type: 'string', - name: 'creator', }, { - type: 'string', - name: 'to', - }, - { - type: 'string', - name: 'amount', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', name: 'from', - }, - { - type: 'string', - name: 'amount', - }, - ], - TypeParams: [ - { - type: 'uint64', - name: 'reserve_time', - }, - { - type: 'uint64', - name: 'payment_account_count_limit', - }, - { - type: 'uint64', - name: 'forced_settle_time', - }, - { - type: 'uint64', - name: 'max_auto_force_settle_num', - }, - { type: 'string', - name: 'fee_denom', }, { + name: 'amount', type: 'string', - name: 'validator_tax_rate', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/sp/MsgUpdateSpStoragePrice.ts b/packages/chain-sdk/src/messages/greenfield/sp/MsgUpdateSpStoragePrice.ts deleted file mode 100644 index 69966917..00000000 --- a/packages/chain-sdk/src/messages/greenfield/sp/MsgUpdateSpStoragePrice.ts +++ /dev/null @@ -1,130 +0,0 @@ -export const MsgUpdateSpStoragePriceSDKTypeEIP712 = { - Msg: [ - { - type: 'string', - name: 'type', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'TypeDescription', - name: 'description', - }, - { - type: 'string', - name: 'sp_address', - }, - { - type: 'string', - name: 'funding_address', - }, - { - type: 'string', - name: 'seal_address', - }, - { - type: 'string', - name: 'approval_address', - }, - { - type: 'string', - name: 'gc_address', - }, - { - type: 'string', - name: 'endpoint', - }, - { - type: 'TypeAmount', - name: 'deposit', - }, - { - type: 'string', - name: 'read_price', - }, - { - type: 'uint64', - name: 'free_read_quota', - }, - { - type: 'string', - name: 'store_price', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'sp_address', - }, - { - type: 'TypeAmount', - name: 'deposit', - }, - { - type: 'string', - name: 'sp_address', - }, - { - type: 'string', - name: 'endpoint', - }, - { - type: 'TypeDescription', - name: 'description', - }, - { - type: 'string', - name: 'seal_address', - }, - { - type: 'string', - name: 'approval_address', - }, - { - type: 'string', - name: 'gc_address', - }, - { - type: 'string', - name: 'sp_address', - }, - { - type: 'string', - name: 'read_price', - }, - { - type: 'uint64', - name: 'free_read_quota', - }, - { - type: 'string', - name: 'store_price', - }, - ], - TypeDescription: [ - { - type: 'string', - name: 'moniker', - }, - { - type: 'string', - name: 'identity', - }, - { - type: 'string', - name: 'website', - }, - { - type: 'string', - name: 'security_contact', - }, - { - type: 'string', - name: 'details', - }, - ], -}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts index e2edc090..68ad783a 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts @@ -1,7 +1,7 @@ export const MsgCancelCreateObjectTypeUrl = '/greenfield.storage.MsgCancelCreateObject'; export const MsgCancelCreateObjectSDKTypeEIP712 = { - Msg: [ + Msg1: [ { name: 'type', type: 'string', diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts index 660be762..2085a256 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts @@ -1,7 +1,7 @@ export const MsgCreateBucketTypeUrl = '/greenfield.storage.MsgCreateBucket'; export const MsgCreateBucketSDKTypeEIP712 = { - Msg: [ + Msg1: [ { name: 'type', type: 'string', @@ -28,14 +28,14 @@ export const MsgCreateBucketSDKTypeEIP712 = { }, { name: 'primary_sp_approval', - type: 'TypePrimarySpApproval', + type: 'TypeMsg1PrimarySpApproval', }, { name: 'charged_read_quota', type: 'uint64', }, ], - TypePrimarySpApproval: [ + TypeMsg1PrimarySpApproval: [ { name: 'expired_height', type: 'uint64', @@ -46,39 +46,3 @@ export const MsgCreateBucketSDKTypeEIP712 = { }, ], }; - -export interface ICreateBucketMsg { - bucketName: string; - expiredHeight: string; - from: string; - visibility: string; - paymentAddress: string; - primarySpAddress: string; - chargedReadQuota: number; - sig: string; -} - -export const newMsgCreateBucket = ({ - bucketName, - expiredHeight, - from, - visibility, - paymentAddress, - primarySpAddress, - chargedReadQuota, - sig, -}: ICreateBucketMsg) => { - return { - type: MsgCreateBucketTypeUrl, - bucket_name: bucketName, - creator: from, - visibility, - payment_address: paymentAddress, - primary_sp_address: primarySpAddress, - primary_sp_approval: { - expired_height: expiredHeight, - sig, - }, - charged_read_quota: chargedReadQuota, - }; -}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts index b8957d86..e264a6f4 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts @@ -1,212 +1,22 @@ +export const MsgCreateGroupTypeUrl = '/greenfield.storage.MsgCreateGroup'; + export const MsgCreateGroupSDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'payment_address', - }, - { - type: 'string', - name: 'primary_sp_address', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'uint64', - name: 'charged_read_quota', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { type: 'string', - name: 'reason', }, { - type: 'string', name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'uint64', - name: 'payload_size', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'content_type', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'Uint8Array[]', - name: 'expect_checksums', - }, - { - type: 'string', - name: 'redundancy_type', - }, - { - type: 'string[]', - name: 'expect_secondary_sp_addresses', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string[]', - name: 'secondary_sp_addresses', - }, - { - type: 'Uint8Array[]', - name: 'secondary_sp_signatures', - }, - { - type: 'string', - name: 'operator', - }, - { type: 'string', - name: 'bucket_name', }, { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'src_bucket_name', - }, - { - type: 'string', - name: 'dst_bucket_name', - }, - { - type: 'string', - name: 'src_object_name', - }, - { - type: 'string', - name: 'dst_object_name', - }, - { - type: 'TypeDstPrimarySpApproval', - name: 'dst_primary_sp_approval', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string[]', - name: 'object_ids', - }, - { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', name: 'group_name', + type: 'string', }, { - type: 'string[]', name: 'members', - }, - ], - TypePrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', - }, - ], - TypeDstPrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', + type: 'string[]', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts index db8477f9..c565ff7d 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts @@ -1,12 +1,7 @@ -import { - redundancyTypeToJSON, - visibilityTypeToJSON, -} from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; - export const MsgCreateObjectTypeUrl = '/greenfield.storage.MsgCreateObject'; export const MsgCreateObjectSDKTypeEIP712 = { - Msg: [ + Msg1: [ { name: 'type', type: 'string', @@ -37,76 +32,17 @@ export const MsgCreateObjectSDKTypeEIP712 = { }, { name: 'primary_sp_approval', - type: 'TypePrimarySpApproval', - }, - { - name: 'expect_checksums', - type: 'bytes[]', + type: 'TypeMsg1PrimarySpApproval', }, { name: 'redundancy_type', type: 'string', }, - { - name: 'expect_secondary_sp_addresses', - type: 'string[]', - }, ], - TypePrimarySpApproval: [ + TypeMsg1PrimarySpApproval: [ { name: 'expired_height', type: 'uint64', }, - { - name: 'sig', - type: 'bytes', - }, ], }; - -export interface ICreateObjectMsg { - bucketName: string; - contentType: string; - expectChecksums: string[]; - expectSecondarySpAddresses: string[]; - expiredHeight: string; - from: string; - visibility: number; - objectName: string; - payloadSize: string; - redundancyType: number; - sig: string; -} - -export const newMsgCreateObject = ({ - bucketName, - contentType, - expectChecksums, - expiredHeight, - from, - visibility, - objectName, - payloadSize, - sig, - expectSecondarySpAddresses, - redundancyType, -}: ICreateObjectMsg) => { - return { - type: MsgCreateObjectTypeUrl, - bucket_name: bucketName, - content_type: contentType, - creator: from, - expect_checksums: expectChecksums, - visibility: - visibility === undefined ? visibilityTypeToJSON(0) : visibilityTypeToJSON(visibility), - object_name: objectName, - payload_size: payloadSize, - primary_sp_approval: { - expired_height: expiredHeight, - sig: sig, - }, - expect_secondary_sp_addresses: expectSecondarySpAddresses, - redundancy_type: - redundancyType === undefined ? redundancyTypeToJSON(0) : redundancyTypeToJSON(redundancyType), - }; -}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts index d339587a..97637371 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts @@ -1,7 +1,7 @@ export const MsgDeleteBucketTypeUrl = '/greenfield.storage.MsgDeleteBucket'; export const MsgDeleteBucketSDKTypeEIP712 = { - Msg: [ + Msg1: [ { name: 'type', type: 'string', @@ -16,16 +16,3 @@ export const MsgDeleteBucketSDKTypeEIP712 = { }, ], }; - -export interface IDeleteBucketMsg { - bucketName: string; - from: string; -} - -export const newMsgDeleteBucket = ({ bucketName, from }: IDeleteBucketMsg) => { - return { - type: MsgDeleteBucketTypeUrl, - bucket_name: bucketName, - operator: from, - }; -}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts index bcf4fa10..eea3a164 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts @@ -1,220 +1,17 @@ +export const MsgDeleteGroupTypeUrl = '/greenfield.storage.MsgDeleteGroup'; export const MsgDeleteGroupSDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', - }, - { - type: 'string', - name: 'creator', - }, - { type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'payment_address', - }, - { - type: 'string', - name: 'primary_sp_address', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'uint64', - name: 'charged_read_quota', }, { - type: 'string', name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'operator', - }, - { type: 'string', - name: 'bucket_name', }, { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'uint64', - name: 'payload_size', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'content_type', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'Uint8Array[]', - name: 'expect_checksums', - }, - { - type: 'string', - name: 'redundancy_type', - }, - { - type: 'string[]', - name: 'expect_secondary_sp_addresses', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string[]', - name: 'secondary_sp_addresses', - }, - { - type: 'Uint8Array[]', - name: 'secondary_sp_signatures', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'src_bucket_name', - }, - { - type: 'string', - name: 'dst_bucket_name', - }, - { - type: 'string', - name: 'src_object_name', - }, - { - type: 'string', - name: 'dst_object_name', - }, - { - type: 'TypeDstPrimarySpApproval', - name: 'dst_primary_sp_approval', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string[]', - name: 'object_ids', - }, - { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', name: 'group_name', - }, - { - type: 'string[]', - name: 'members', - }, - { type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'group_name', - }, - ], - TypePrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', - }, - ], - TypeDstPrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts index 8a3c98e5..be16002c 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts @@ -1,7 +1,7 @@ export const MsgDeleteObjectTypeUrl = '/greenfield.storage.MsgDeleteObject'; export const MsgDeleteObjectSDKTypeEIP712 = { - Msg: [ + Msg1: [ { name: 'type', type: 'string', diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts index dfded66e..52970807 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts @@ -1,341 +1,18 @@ +export const MsgDeletePolicyTypeUrl = '/greenfield.storage.MsgDeletePolicy'; + export const MsgDeletePolicySDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'payment_address', - }, - { - type: 'string', - name: 'primary_sp_address', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'uint64', - name: 'charged_read_quota', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'uint64', - name: 'payload_size', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'content_type', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'Uint8Array[]', - name: 'expect_checksums', - }, - { - type: 'string', - name: 'redundancy_type', - }, - { - type: 'string[]', - name: 'expect_secondary_sp_addresses', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string[]', - name: 'secondary_sp_addresses', - }, - { - type: 'Uint8Array[]', - name: 'secondary_sp_signatures', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'src_bucket_name', - }, - { - type: 'string', - name: 'dst_bucket_name', - }, - { - type: 'string', - name: 'src_object_name', - }, - { - type: 'string', - name: 'dst_object_name', - }, - { - type: 'TypeDstPrimarySpApproval', - name: 'dst_primary_sp_approval', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string[]', - name: 'object_ids', - }, - { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string[]', - name: 'members', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'group_name', - }, - { type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'group_owner', }, { - type: 'string', - name: 'group_name', - }, - { - type: 'string[]', - name: 'members_to_add', - }, - { - type: 'string[]', - name: 'members_to_delete', - }, - { - type: 'string', - name: 'member', - }, - { - type: 'string', - name: 'group_owner', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string', name: 'operator', - }, - { type: 'string', - name: 'bucket_name', - }, - { - type: 'TypeChargedReadQuota', - name: 'charged_read_quota', }, { - type: 'string', - name: 'payment_address', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'TypePrincipal', - name: 'principal', - }, - { - type: 'string', name: 'resource', - }, - { - type: 'StatementSDKType[]', - name: 'statements', - }, - { - type: 'TypeExpirationTime', - name: 'expiration_time', - }, - { type: 'string', - name: 'operator', - }, - { - type: 'TypePrincipal', - name: 'principal', - }, - { - type: 'string', - name: 'resource', - }, - ], - TypePrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', - }, - ], - TypeDstPrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', - }, - ], - TypeChargedReadQuota: [ - { - type: 'uint64', - name: 'value', - }, - ], - TypePrincipal: [ - { - name: 'type', - }, - { - type: 'string', - name: 'value', - }, - ], - TypeExpirationTime: [ - { - type: 'uint64', - name: 'seconds', - }, - { - type: 'uint64', - name: 'nanos', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts index 62e60295..71ad512e 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts @@ -1,252 +1,21 @@ +export const MsgLeaveGroupTypeUrl = '/greenfield.storage.MsgLeaveGroup'; export const MsgLeaveGroupSDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'payment_address', - }, - { - type: 'string', - name: 'primary_sp_address', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'uint64', - name: 'charged_read_quota', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'uint64', - name: 'payload_size', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'content_type', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'Uint8Array[]', - name: 'expect_checksums', - }, - { - type: 'string', - name: 'redundancy_type', - }, - { - type: 'string[]', - name: 'expect_secondary_sp_addresses', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string[]', - name: 'secondary_sp_addresses', - }, - { - type: 'Uint8Array[]', - name: 'secondary_sp_signatures', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'src_bucket_name', - }, - { - type: 'string', - name: 'dst_bucket_name', - }, - { - type: 'string', - name: 'src_object_name', - }, - { - type: 'string', - name: 'dst_object_name', - }, - { - type: 'TypeDstPrimarySpApproval', - name: 'dst_primary_sp_approval', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string[]', - name: 'object_ids', - }, - { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string[]', - name: 'members', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'group_name', }, { + name: 'member', type: 'string', - name: 'operator', }, { - type: 'string', name: 'group_owner', - }, - { type: 'string', - name: 'group_name', - }, - { - type: 'string[]', - name: 'members_to_add', - }, - { - type: 'string[]', - name: 'members_to_delete', }, { - type: 'string', - name: 'member', - }, - { - type: 'string', - name: 'group_owner', - }, - { - type: 'string', name: 'group_name', - }, - ], - TypePrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', - }, - ], - TypeDstPrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', + type: 'string', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts index 3fa1e2b6..abe65940 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts @@ -1,357 +1,22 @@ +export const MsgMirrorBucketTypeUrl = '/greenfield.storage.MsgMirrorBucket'; + export const MsgMirrorBucketSDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'payment_address', - }, - { - type: 'string', - name: 'primary_sp_address', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'uint64', - name: 'charged_read_quota', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'uint64', - name: 'payload_size', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'content_type', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'Uint8Array[]', - name: 'expect_checksums', - }, - { - type: 'string', - name: 'redundancy_type', - }, - { - type: 'string[]', - name: 'expect_secondary_sp_addresses', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string[]', - name: 'secondary_sp_addresses', - }, - { - type: 'Uint8Array[]', - name: 'secondary_sp_signatures', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'src_bucket_name', - }, - { - type: 'string', - name: 'dst_bucket_name', - }, - { - type: 'string', - name: 'src_object_name', - }, - { - type: 'string', - name: 'dst_object_name', - }, - { - type: 'TypeDstPrimarySpApproval', - name: 'dst_primary_sp_approval', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string[]', - name: 'object_ids', - }, - { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string[]', - name: 'members', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'group_owner', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string[]', - name: 'members_to_add', - }, - { - type: 'string[]', - name: 'members_to_delete', - }, - { - type: 'string', - name: 'member', - }, - { - type: 'string', - name: 'group_owner', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'TypeChargedReadQuota', - name: 'charged_read_quota', - }, - { - type: 'string', - name: 'payment_address', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'TypePrincipal', - name: 'principal', - }, - { type: 'string', - name: 'resource', - }, - { - type: 'StatementSDKType[]', - name: 'statements', - }, - { - type: 'TypeExpirationTime', - name: 'expiration_time', }, { - type: 'string', name: 'operator', - }, - { - type: 'TypePrincipal', - name: 'principal', - }, - { type: 'string', - name: 'resource', - }, - { - type: 'string', - name: 'operator', }, { - type: 'string', name: 'id', - }, - { - type: 'string', - name: 'operator', - }, - { type: 'string', - name: 'id', - }, - ], - TypePrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', - }, - ], - TypeDstPrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', - }, - ], - TypeChargedReadQuota: [ - { - type: 'uint64', - name: 'value', - }, - ], - TypePrincipal: [ - { - name: 'type', }, { + name: 'bucket_name', type: 'string', - name: 'value', - }, - ], - TypeExpirationTime: [ - { - type: 'uint64', - name: 'seconds', - }, - { - type: 'uint64', - name: 'nanos', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts index d01e3070..4202f6bb 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts @@ -1,381 +1,22 @@ +export const MsgMirrorGroupTypeUrl = '/greenfield.storage.MsgMirrorGroup'; + export const MsgMirrorGroupSDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'payment_address', - }, - { - type: 'string', - name: 'primary_sp_address', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'uint64', - name: 'charged_read_quota', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'uint64', - name: 'payload_size', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'content_type', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'Uint8Array[]', - name: 'expect_checksums', - }, - { - type: 'string', - name: 'redundancy_type', - }, - { - type: 'string[]', - name: 'expect_secondary_sp_addresses', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string[]', - name: 'secondary_sp_addresses', - }, - { - type: 'Uint8Array[]', - name: 'secondary_sp_signatures', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { type: 'string', - name: 'object_name', }, { - type: 'string', name: 'operator', - }, - { type: 'string', - name: 'src_bucket_name', }, { - type: 'string', - name: 'dst_bucket_name', - }, - { - type: 'string', - name: 'src_object_name', - }, - { - type: 'string', - name: 'dst_object_name', - }, - { - type: 'TypeDstPrimarySpApproval', - name: 'dst_primary_sp_approval', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string[]', - name: 'object_ids', - }, - { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string[]', - name: 'members', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'group_owner', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string[]', - name: 'members_to_add', - }, - { - type: 'string[]', - name: 'members_to_delete', - }, - { - type: 'string', - name: 'member', - }, - { - type: 'string', - name: 'group_owner', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'TypeChargedReadQuota', - name: 'charged_read_quota', - }, - { - type: 'string', - name: 'payment_address', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'TypePrincipal', - name: 'principal', - }, - { - type: 'string', - name: 'resource', - }, - { - type: 'StatementSDKType[]', - name: 'statements', - }, - { - type: 'TypeExpirationTime', - name: 'expiration_time', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'TypePrincipal', - name: 'principal', - }, - { - type: 'string', - name: 'resource', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', name: 'id', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'id', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'id', - }, - ], - TypePrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', - }, - ], - TypeDstPrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', - }, - ], - TypeChargedReadQuota: [ - { - type: 'uint64', - name: 'value', - }, - ], - TypePrincipal: [ - { - name: 'type', }, { + name: 'group_name', type: 'string', - name: 'value', - }, - ], - TypeExpirationTime: [ - { - type: 'uint64', - name: 'seconds', - }, - { - type: 'uint64', - name: 'nanos', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts index fbf1f2be..e6a76143 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts @@ -1,349 +1,26 @@ +export const MsgMirrorObjectTypeUrl = '/greenfield.storage.MsgMirrorObject'; + export const MsgMirrorObjectSDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'payment_address', - }, - { type: 'string', - name: 'primary_sp_address', }, { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'uint64', - name: 'charged_read_quota', - }, - { - type: 'string', name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'operator', - }, - { type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'uint64', - name: 'payload_size', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'content_type', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'Uint8Array[]', - name: 'expect_checksums', - }, - { - type: 'string', - name: 'redundancy_type', - }, - { - type: 'string[]', - name: 'expect_secondary_sp_addresses', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string[]', - name: 'secondary_sp_addresses', - }, - { - type: 'Uint8Array[]', - name: 'secondary_sp_signatures', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'src_bucket_name', - }, - { - type: 'string', - name: 'dst_bucket_name', - }, - { - type: 'string', - name: 'src_object_name', - }, - { - type: 'string', - name: 'dst_object_name', - }, - { - type: 'TypeDstPrimarySpApproval', - name: 'dst_primary_sp_approval', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string[]', - name: 'object_ids', - }, - { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string[]', - name: 'members', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'group_owner', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string[]', - name: 'members_to_add', - }, - { - type: 'string[]', - name: 'members_to_delete', - }, - { - type: 'string', - name: 'member', - }, - { - type: 'string', - name: 'group_owner', - }, - { - type: 'string', - name: 'group_name', }, { + name: 'id', type: 'string', - name: 'operator', }, { - type: 'string', name: 'bucket_name', - }, - { - type: 'TypeChargedReadQuota', - name: 'charged_read_quota', - }, - { - type: 'string', - name: 'payment_address', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'operator', - }, - { type: 'string', - name: 'bucket_name', }, { - type: 'string', name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'TypePrincipal', - name: 'principal', - }, - { - type: 'string', - name: 'resource', - }, - { - type: 'StatementSDKType[]', - name: 'statements', - }, - { - type: 'TypeExpirationTime', - name: 'expiration_time', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'TypePrincipal', - name: 'principal', - }, - { - type: 'string', - name: 'resource', - }, - { type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'id', - }, - ], - TypePrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', - }, - ], - TypeDstPrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', - }, - ], - TypeChargedReadQuota: [ - { - type: 'uint64', - name: 'value', - }, - ], - TypePrincipal: [ - { - name: 'type', - }, - { - type: 'string', - name: 'value', - }, - ], - TypeExpirationTime: [ - { - type: 'uint64', - name: 'seconds', - }, - { - type: 'uint64', - name: 'nanos', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts index e5fd0c64..7d05fab1 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts @@ -1,329 +1,22 @@ +export const MsgPutPolicyTypeUrl = '/greenfield.storage.MsgPutPolicy'; + export const MsgPutPolicySDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'payment_address', - }, - { - type: 'string', - name: 'primary_sp_address', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'uint64', - name: 'charged_read_quota', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'uint64', - name: 'payload_size', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'content_type', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'Uint8Array[]', - name: 'expect_checksums', - }, - { - type: 'string', - name: 'redundancy_type', - }, - { - type: 'string[]', - name: 'expect_secondary_sp_addresses', - }, - { - type: 'string', - name: 'operator', - }, - { type: 'string', - name: 'bucket_name', }, { - type: 'string', - name: 'object_name', - }, - { - type: 'string[]', - name: 'secondary_sp_addresses', - }, - { - type: 'Uint8Array[]', - name: 'secondary_sp_signatures', - }, - { - type: 'string', name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'src_bucket_name', - }, - { - type: 'string', - name: 'dst_bucket_name', - }, - { - type: 'string', - name: 'src_object_name', - }, - { - type: 'string', - name: 'dst_object_name', - }, - { - type: 'TypeDstPrimarySpApproval', - name: 'dst_primary_sp_approval', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { type: 'string', - name: 'object_name', }, { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string[]', - name: 'object_ids', - }, - { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string[]', - name: 'members', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'group_owner', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string[]', - name: 'members_to_add', - }, - { - type: 'string[]', - name: 'members_to_delete', - }, - { - type: 'string', - name: 'member', - }, - { - type: 'string', - name: 'group_owner', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'TypeChargedReadQuota', - name: 'charged_read_quota', - }, - { - type: 'string', - name: 'payment_address', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'TypePrincipal', - name: 'principal', - }, - { - type: 'string', name: 'resource', + type: 'string', }, { - type: 'StatementSDKType[]', - name: 'statements', - }, - { - type: 'TypeExpirationTime', name: 'expiration_time', - }, - ], - TypePrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', - }, - ], - TypeDstPrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', - }, - ], - TypeChargedReadQuota: [ - { - type: 'uint64', - name: 'value', - }, - ], - TypePrincipal: [ - { - name: 'type', - }, - { type: 'string', - name: 'value', - }, - ], - TypeExpirationTime: [ - { - type: 'uint64', - name: 'seconds', - }, - { - type: 'uint64', - name: 'nanos', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts index 23487d3b..97eb5bbb 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts @@ -1,278 +1,26 @@ +export const MsgUpdateBucketInfoTypeUrl = '/greenfield.storage.MsgUpdateBucketInfo'; + export const MsgUpdateBucketInfoSDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'payment_address', - }, - { type: 'string', - name: 'primary_sp_address', }, { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'uint64', - name: 'charged_read_quota', - }, - { - type: 'string', name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { type: 'string', - name: 'operator', }, { - type: 'string', name: 'bucket_name', - }, - { - type: 'string', - name: 'reason', - }, - { type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', }, { + name: 'payment_address', type: 'string', - name: 'object_name', - }, - { - type: 'uint64', - name: 'payload_size', }, { - type: 'string', name: 'visibility', - }, - { - type: 'string', - name: 'content_type', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'Uint8Array[]', - name: 'expect_checksums', - }, - { - type: 'string', - name: 'redundancy_type', - }, - { - type: 'string[]', - name: 'expect_secondary_sp_addresses', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string[]', - name: 'secondary_sp_addresses', - }, - { - type: 'Uint8Array[]', - name: 'secondary_sp_signatures', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'src_bucket_name', - }, - { - type: 'string', - name: 'dst_bucket_name', - }, - { - type: 'string', - name: 'src_object_name', - }, - { - type: 'string', - name: 'dst_object_name', - }, - { - type: 'TypeDstPrimarySpApproval', - name: 'dst_primary_sp_approval', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string[]', - name: 'object_ids', - }, - { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string[]', - name: 'members', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'group_owner', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string[]', - name: 'members_to_add', - }, - { - type: 'string[]', - name: 'members_to_delete', - }, - { - type: 'string', - name: 'member', - }, - { - type: 'string', - name: 'group_owner', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string', - name: 'operator', - }, - { type: 'string', - name: 'bucket_name', - }, - { - type: 'TypeChargedReadQuota', - name: 'charged_read_quota', - }, - { - type: 'string', - name: 'payment_address', - }, - { - type: 'string', - name: 'visibility', - }, - ], - TypePrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', - }, - ], - TypeDstPrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', - }, - ], - TypeChargedReadQuota: [ - { - type: 'uint64', - name: 'value', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts index a8c68343..3848e90b 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts @@ -1,240 +1,22 @@ +export const MsgUpdateGroupMemberTypeUrl = '/greenfield.storage.MsgUpdateGroupMember'; + export const MsgUpdateGroupMemberSDKTypeEIP712 = { - Msg: [ + Msg1: [ { - type: 'string', name: 'type', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'payment_address', - }, - { - type: 'string', - name: 'primary_sp_address', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'uint64', - name: 'charged_read_quota', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'uint64', - name: 'payload_size', - }, - { - type: 'string', - name: 'visibility', - }, - { - type: 'string', - name: 'content_type', - }, - { - type: 'TypePrimarySpApproval', - name: 'primary_sp_approval', - }, - { - type: 'Uint8Array[]', - name: 'expect_checksums', - }, - { type: 'string', - name: 'redundancy_type', }, { - type: 'string[]', - name: 'expect_secondary_sp_addresses', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string[]', - name: 'secondary_sp_addresses', - }, - { - type: 'Uint8Array[]', - name: 'secondary_sp_signatures', - }, - { - type: 'string', name: 'operator', - }, - { type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'src_bucket_name', - }, - { - type: 'string', - name: 'dst_bucket_name', - }, - { - type: 'string', - name: 'src_object_name', - }, - { - type: 'string', - name: 'dst_object_name', - }, - { - type: 'TypeDstPrimarySpApproval', - name: 'dst_primary_sp_approval', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string', - name: 'object_name', - }, - { - type: 'string', - name: 'operator', - }, - { - type: 'string', - name: 'bucket_name', - }, - { - type: 'string[]', - name: 'object_ids', - }, - { - type: 'string', - name: 'reason', - }, - { - type: 'string', - name: 'creator', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string[]', - name: 'members', }, { + name: 'group_owner', type: 'string', - name: 'operator', }, { - type: 'string', name: 'group_name', - }, - { - type: 'string', - name: 'operator', - }, - { type: 'string', - name: 'group_owner', - }, - { - type: 'string', - name: 'group_name', - }, - { - type: 'string[]', - name: 'members_to_add', - }, - { - type: 'string[]', - name: 'members_to_delete', - }, - ], - TypePrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', - }, - ], - TypeDstPrimarySpApproval: [ - { - type: 'uint64', - name: 'expired_height', - }, - { - type: 'bytes', - name: 'sig', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts new file mode 100644 index 00000000..7381cbe6 --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts @@ -0,0 +1,26 @@ +export const MsgUpdateObjectInfoTypeUrl = '/greenfield.storage.MsgUpdateObjectInfo'; + +export const MsgUpdateObjectInfoSDKTypeEIP712 = { + Msg1: [ + { + name: 'type', + type: 'string', + }, + { + name: 'operator', + type: 'string', + }, + { + name: 'bucket_name', + type: 'string', + }, + { + name: 'object_name', + type: 'string', + }, + { + name: 'visibility', + type: 'string', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/index.ts b/packages/chain-sdk/src/messages/index.ts index 71469506..8dd3a356 100644 --- a/packages/chain-sdk/src/messages/index.ts +++ b/packages/chain-sdk/src/messages/index.ts @@ -28,7 +28,7 @@ export const generateMessage = ( sequence, memo, fee, - msg, + msg1: msg, timeout_height: timeoutHeight, }; }; @@ -46,24 +46,41 @@ export const generateTypes = (newTypes?: object) => { { name: 'verifyingContract', type: 'string' }, { name: 'salt', type: 'string' }, ], - Tx: [ - { name: 'account_number', type: 'uint256' }, - { name: 'chain_id', type: 'uint256' }, - { name: 'fee', type: 'Fee' }, - { name: 'memo', type: 'string' }, - { name: 'msg', type: 'Msg' }, - { name: 'sequence', type: 'uint256' }, - { name: 'timeout_height', type: 'uint256' }, - ], Fee: [ { name: 'amount', type: 'Coin[]' }, { name: 'gas_limit', type: 'uint256' }, { name: 'payer', type: 'string' }, { name: 'granter', type: 'string' }, ], - TypeAmount: [ - { name: 'denom', type: 'string' }, - { name: 'amount', type: 'string' }, + Tx: [ + { + name: 'account_number', + type: 'uint256', + }, + { + name: 'chain_id', + type: 'uint256', + }, + { + name: 'fee', + type: 'Fee', + }, + { + name: 'memo', + type: 'string', + }, + { + name: 'sequence', + type: 'uint256', + }, + { + name: 'timeout_height', + type: 'uint256', + }, + { + name: 'msg1', + type: 'Msg1', + }, ], }; From e99b09837c59a502a056eb19a7b40ce8c67381af Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Thu, 25 May 2023 01:05:33 +0800 Subject: [PATCH 006/433] Revert "Feat/multi msg (#49)" (#53) This reverts commit fc3dd986646624c81f3cc43bdffb02e70d170b4f. --- .changeset/empty-ducks-wait.md | 5 - .changeset/pre.json | 12 +- .../nextjs/src/components/transfer/index.tsx | 11 + packages/chain-sdk/src/api/account.spec.ts | 104 +---- packages/chain-sdk/src/api/account.ts | 2 +- packages/chain-sdk/src/api/basic.ts | 4 +- packages/chain-sdk/src/api/bucket.ts | 34 +- packages/chain-sdk/src/api/challenge.ts | 23 +- packages/chain-sdk/src/api/crosschain.ts | 25 +- packages/chain-sdk/src/api/group.ts | 42 +- packages/chain-sdk/src/api/objectt.ts | 31 +- packages/chain-sdk/src/api/payment.ts | 21 +- packages/chain-sdk/src/api/sp.ts | 17 + packages/chain-sdk/src/config.spec.ts | 24 +- .../src/messages/bank/MsgMultiSend.ts | 60 +-- .../chain-sdk/src/messages/bank/MsgSend.ts | 32 +- .../src/messages/cosmos/oracle/MsgClaim.ts | 28 +- .../messages/feegrant/MsgGrantAllowance.ts | 19 +- .../messages/feegrant/MsgRevokeAllowance.ts | 28 +- .../greenfield/bridge/MsgTransferOut.ts | 14 +- .../messages/greenfield/chanenge/MsgAttest.ts | 48 ++- .../messages/greenfield/chanenge/MsgSubmit.ts | 18 +- .../messages/greenfield/payment/MsgDeposit.ts | 43 +- .../greenfield/payment/MsgDisableRefund.ts | 67 +++- .../greenfield/payment/MsgWithdraw.ts | 55 ++- .../greenfield/sp/MsgUpdateSpStoragePrice.ts | 130 +++++++ .../storage/MsgCancelCreateObject.ts | 2 +- .../greenfield/storage/MsgCreateBucket.ts | 42 +- .../greenfield/storage/MsgCreateGroup.ts | 200 +++++++++- .../greenfield/storage/MsgCreateObject.ts | 70 +++- .../greenfield/storage/MsgDeleteBucket.ts | 15 +- .../greenfield/storage/MsgDeleteGroup.ts | 207 +++++++++- .../greenfield/storage/MsgDeleteObject.ts | 2 +- .../greenfield/storage/MsgDeletePolicy.ts | 329 +++++++++++++++- .../greenfield/storage/MsgLeaveGroup.ts | 239 +++++++++++- .../greenfield/storage/MsgMirrorBucket.ts | 343 +++++++++++++++- .../greenfield/storage/MsgMirrorGroup.ts | 367 +++++++++++++++++- .../greenfield/storage/MsgMirrorObject.ts | 331 +++++++++++++++- .../greenfield/storage/MsgPutPolicy.ts | 315 ++++++++++++++- .../greenfield/storage/MsgUpdateBucketInfo.ts | 260 ++++++++++++- .../storage/MsgUpdateGroupMember.ts | 226 ++++++++++- .../greenfield/storage/MsgUpdateObjectInfo.ts | 26 -- packages/chain-sdk/src/messages/index.ts | 43 +- 43 files changed, 3400 insertions(+), 514 deletions(-) delete mode 100644 .changeset/empty-ducks-wait.md create mode 100644 packages/chain-sdk/src/messages/greenfield/sp/MsgUpdateSpStoragePrice.ts delete mode 100644 packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts diff --git a/.changeset/empty-ducks-wait.md b/.changeset/empty-ducks-wait.md deleted file mode 100644 index d5e8a164..00000000 --- a/.changeset/empty-ducks-wait.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-chain-sdk': patch ---- - -feat: Update EIP712 struct, Support Multi Message !!!!! diff --git a/.changeset/pre.json b/.changeset/pre.json index a32b838d..8b137891 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -1,11 +1 @@ -{ - "mode": "pre", - "tag": "alpha", - "initialVersions": { - "@demo/wallet": "0.0.2-alpha.6", - "@demo/nodejs": "0.0.4", - "@bnb-chain/greenfield-chain-sdk": "0.2.0", - "@bnb-chain/greenfiled-file-handle": "0.2.0" - }, - "changesets": [] -} + diff --git a/examples/nextjs/src/components/transfer/index.tsx b/examples/nextjs/src/components/transfer/index.tsx index 2effec5d..e772127a 100644 --- a/examples/nextjs/src/components/transfer/index.tsx +++ b/examples/nextjs/src/components/transfer/index.tsx @@ -13,6 +13,17 @@ export const Transfer = () => { return (
+

Transfer

to : { // }); }); -describe('accountTx', () => { - let simulateInfo = DEFAULT_SIMULATE_INFO; - - describe('transfer', () => { - test('simulate works', async () => { - const transferTx = await makeTransferTx(); - simulateInfo = await transferTx.simulate({ - denom: 'BNB', - }); - expect(simulateInfo).not.toBeNull(); - }); - - test('broadcast works', async () => { - const transferTx = await makeTransferTx(); - const broadcastInfo = await transferTx.broadcast({ - denom: 'BNB', - gasLimit: Number(simulateInfo.gasLimit), - gasPrice: simulateInfo.gasPrice, - granter: '', - payer: ACCOUNT.address, - privateKey: ACCOUNT.privateKey, - }); - - expect(broadcastInfo.code).toEqual(0); - }); - }); - - describe('multiTransfer', () => { - test('simulate works', async () => { - const transferTx = await makeMultiTransferTx(); - simulateInfo = await transferTx.simulate({ - denom: 'BNB', - }); - expect(simulateInfo).not.toBeNull(); - }); - - test('broadcast works', async () => { - const transferTx = await makeMultiTransferTx(); - const broadcastInfo = await transferTx.broadcast({ - denom: 'BNB', - gasLimit: Number(simulateInfo.gasLimit), - gasPrice: simulateInfo.gasPrice, - granter: '', - payer: ACCOUNT.address, - privateKey: ACCOUNT.privateKey, - }); - - expect(broadcastInfo.code).toEqual(0); - }); - }); -}); - -async function makeMultiTransferTx() { - return await client.account.multiTransfer(ACCOUNT.address, { - inputs: [ - { - address: ACCOUNT.address, - coins: [ - { - amount: '10', - denom: 'BNB', - }, - ], - }, - ], - outputs: [ - { - address: ZERO_ACCOUNT_ADDRESS, - coins: [ - { - amount: '10', - denom: 'BNB', - }, - ], - }, - ], - }); -} - -async function makeTransferTx() { - return await client.account.transfer({ - amount: [ - { - amount: '10', - denom: 'BNB', - }, - ], - fromAddress: ACCOUNT.address, - toAddress: ZERO_ACCOUNT_ADDRESS, - }); -} +// describe('accountTx', () => { +// describe('transfer', async () => { +// // ... +// }); +// }); diff --git a/packages/chain-sdk/src/api/account.ts b/packages/chain-sdk/src/api/account.ts index 561dd4c8..feb00a1d 100644 --- a/packages/chain-sdk/src/api/account.ts +++ b/packages/chain-sdk/src/api/account.ts @@ -20,10 +20,10 @@ import { QueryGetPaymentAccountsByOwnerResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; import { MsgCreatePaymentAccount } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/tx'; -import { container, delay, inject, singleton } from 'tsyringe'; import { TxResponse } from '..'; import { Basic } from './basic'; import { RpcQueryClient } from './queryclient'; +import { autoInjectable, container, delay, inject, injectable, singleton } from 'tsyringe'; export interface IAccount { /** diff --git a/packages/chain-sdk/src/api/basic.ts b/packages/chain-sdk/src/api/basic.ts index 649c4577..474e69f5 100644 --- a/packages/chain-sdk/src/api/basic.ts +++ b/packages/chain-sdk/src/api/basic.ts @@ -26,14 +26,14 @@ import { DeliverTxResponse, StargateClient } from '@cosmjs/stargate'; import { Tendermint37Client } from '@cosmjs/tendermint-rpc'; import { toBuffer } from '@ethereumjs/util'; import Long from 'long'; -import { container, inject, singleton } from 'tsyringe'; import { BroadcastOptions, ISimulateGasFee, SimulateOptions } from '..'; import { DEFAULT_DENOM, ZERO_PUBKEY } from '../constants'; import { createEIP712, generateFee, generateMessage, generateTypes } from '../messages'; import { eip712Hash, makeCosmsPubKey, recoverPk } from '../sign'; import { typeWrapper } from '../tx/utils'; -import { Account } from './account'; import { RpcQueryClient } from './queryclient'; +import { Account } from './account'; +import { autoInjectable, container, delay, inject, injectable, singleton } from 'tsyringe'; export interface IBasic { /** diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index cfc339c9..13924e9e 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -6,18 +6,9 @@ import { MsgDeleteBucketSDKTypeEIP712, MsgDeleteBucketTypeUrl, } from '@/messages/greenfield/storage/MsgDeleteBucket'; -import { - MsgDeletePolicySDKTypeEIP712, - MsgDeletePolicyTypeUrl, -} from '@/messages/greenfield/storage/MsgDeletePolicy'; -import { - MsgPutPolicySDKTypeEIP712, - MsgPutPolicyTypeUrl, -} from '@/messages/greenfield/storage/MsgPutPolicy'; -import { - MsgUpdateBucketInfoSDKTypeEIP712, - MsgUpdateBucketInfoTypeUrl, -} from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; +import { MsgDeletePolicySDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeletePolicy'; +import { MsgPutPolicySDKTypeEIP712 } from '@/messages/greenfield/storage/MsgPutPolicy'; +import { MsgUpdateBucketInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; import { decodeObjectFromHexString, encodeObjectToHexString } from '@/utils/encoding'; import { fetchWithTimeout, METHOD_GET, MOCK_SIGNATURE, NORMAL_ERROR_CODE } from '@/utils/http'; import { generateUrlByBucketName, isValidAddress, isValidBucketName, isValidUrl } from '@/utils/s3'; @@ -25,8 +16,6 @@ import { ActionType } from '@bnb-chain/greenfield-cosmos-types/greenfield/permis import { visibilityTypeFromJSON } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; import { QueryHeadBucketResponse, - QueryPolicyForAccountRequest, - QueryPolicyForAccountResponse, QueryVerifyPermissionResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/query'; import { @@ -98,10 +87,6 @@ export interface IBucket { putBucketPolicy(msg: MsgPutPolicy): Promise; deleteBucketPolicy(msg: MsgDeletePolicy): Promise; - - getBucketPolicy(request: QueryPolicyForAccountRequest): Promise; - - // TODO: getBucketReadQuota(); } @singleton() @@ -386,7 +371,7 @@ export class Bucket implements IBucket { public async updateBucketInfo(msg: MsgUpdateBucketInfo) { return await this.basic.tx( - MsgUpdateBucketInfoTypeUrl, + '/greenfield.storage.MsgUpdateBucketInfo', msg.operator, MsgUpdateBucketInfoSDKTypeEIP712, MsgUpdateBucketInfo.toSDK(msg), @@ -396,7 +381,7 @@ export class Bucket implements IBucket { public async putBucketPolicy(msg: MsgPutPolicy) { return await this.basic.tx( - MsgPutPolicyTypeUrl, + '/greenfield.storage.MsgPutPolicy', msg.operator, MsgPutPolicySDKTypeEIP712, MsgPutPolicy.toSDK(msg), @@ -405,17 +390,14 @@ export class Bucket implements IBucket { } public async deleteBucketPolicy(msg: MsgDeletePolicy) { + const typeUrl = '/greenfield.storage.MsgDeletePolicy'; + return await this.basic.tx( - MsgDeletePolicyTypeUrl, + typeUrl, msg.operator, MsgDeletePolicySDKTypeEIP712, MsgDeletePolicy.toSDK(msg), MsgDeletePolicy.encode(msg).finish(), ); } - - public async getBucketPolicy(request: QueryPolicyForAccountRequest) { - const rpc = await this.queryClient.getStorageQueryClient(); - return rpc.QueryPolicyForAccount(request); - } } diff --git a/packages/chain-sdk/src/api/challenge.ts b/packages/chain-sdk/src/api/challenge.ts index 128699b6..4cb32cce 100644 --- a/packages/chain-sdk/src/api/challenge.ts +++ b/packages/chain-sdk/src/api/challenge.ts @@ -1,9 +1,8 @@ -import { MsgAttestSDKTypeEIP712, MsgAttestTypeUrl } from '@/messages/greenfield/chanenge/MsgAttest'; -import { MsgSubmitSDKTypeEIP712, MsgSubmitTypeUrl } from '@/messages/greenfield/chanenge/MsgSubmit'; +import { MsgAttestSDKTypeEIP712 } from '@/messages/greenfield/chanenge/MsgAttest'; +import { MsgSubmitSDKTypeEIP712 } from '@/messages/greenfield/chanenge/MsgSubmit'; import { QueryInturnAttestationSubmitterResponse, QueryLatestAttestedChallengesResponse, - QueryParamsResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/query'; import { MsgAttest, MsgSubmit } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/tx'; import { container, delay, inject, singleton } from 'tsyringe'; @@ -12,8 +11,11 @@ import { Basic } from './basic'; import { RpcQueryClient } from './queryclient'; export interface IChallenge { - // TODO: getChallengeInfo(); - + /** + * sends request to challenge and get challenge result info + * The challenge info includes the piece data, piece hash roots and integrity hash corresponding to the accessed SP + */ + // getChallengeInfo(); /** * challenges the service provider data integrity, used by off-chain service greenfield-challenger. */ @@ -30,8 +32,6 @@ export interface IChallenge { latestAttestedChallenges(): Promise; inturnAttestationSubmitter(): Promise; - - params(): Promise; } @singleton() @@ -41,7 +41,7 @@ export class Challenge implements IChallenge { public async submitChallenge(address: string, msg: MsgSubmit) { return await this.basic.tx( - MsgSubmitTypeUrl, + '/greenfield.challenge.MsgSubmit', address, MsgSubmitSDKTypeEIP712, MsgSubmit.toSDK(msg), @@ -51,7 +51,7 @@ export class Challenge implements IChallenge { public async attestChallenge(address: string, msg: MsgAttest) { return await this.basic.tx( - MsgAttestTypeUrl, + '/greenfield.challenge.MsgAttest', address, MsgAttestSDKTypeEIP712, MsgAttest.toSDK(msg), @@ -68,9 +68,4 @@ export class Challenge implements IChallenge { const rpc = await this.queryClient.getChallengeQueryClient(); return await rpc.InturnAttestationSubmitter(); } - - public async params() { - const rpc = await this.queryClient.getChallengeQueryClient(); - return await rpc.Params(); - } } diff --git a/packages/chain-sdk/src/api/crosschain.ts b/packages/chain-sdk/src/api/crosschain.ts index 077f6dd9..744bc53b 100644 --- a/packages/chain-sdk/src/api/crosschain.ts +++ b/packages/chain-sdk/src/api/crosschain.ts @@ -1,20 +1,11 @@ -import { MsgClaimSDKTypeEIP712, MsgClaimTypeUrl } from '@/messages/cosmos/oracle/MsgClaim'; +import { MsgClaimSDKTypeEIP712 } from '@/messages/cosmos/oracle/MsgClaim'; import { MsgTransferOutSDKTypeEIP712, MsgTransferOutTypeUrl, } from '@/messages/greenfield/bridge/MsgTransferOut'; -import { - MsgMirrorBucketSDKTypeEIP712, - MsgMirrorBucketTypeUrl, -} from '@/messages/greenfield/storage/MsgMirrorBucket'; -import { - MsgMirrorGroupSDKTypeEIP712, - MsgMirrorGroupTypeUrl, -} from '@/messages/greenfield/storage/MsgMirrorGroup'; -import { - MsgMirrorObjectSDKTypeEIP712, - MsgMirrorObjectTypeUrl, -} from '@/messages/greenfield/storage/MsgMirrorObject'; +import { MsgMirrorBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMirrorBucket'; +import { MsgMirrorGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMirrorGroup'; +import { MsgMirrorObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMirrorObject'; import { QueryCrossChainPackageResponse, QueryReceiveSequenceResponse, @@ -101,7 +92,7 @@ export class CrossChain implements ICrossChain { public async claims(msg: MsgClaim) { return await this.basic.tx( - MsgClaimTypeUrl, + '/cosmos.oracle.v1.MsgClaim', msg.fromAddress, MsgClaimSDKTypeEIP712, MsgClaim.toSDK(msg), @@ -138,7 +129,7 @@ export class CrossChain implements ICrossChain { public async mirrorGroup(msg: MsgMirrorGroup) { return await this.basic.tx( - MsgMirrorGroupTypeUrl, + '/greenfield.storage.MsgMirrorGroup', msg.operator, MsgMirrorGroupSDKTypeEIP712, MsgMirrorGroup.toSDK(msg), @@ -148,7 +139,7 @@ export class CrossChain implements ICrossChain { public async mirrorBucket(msg: MsgMirrorBucket) { return await this.basic.tx( - MsgMirrorBucketTypeUrl, + '/greenfield.storage.MsgMirrorBucket', msg.operator, MsgMirrorBucketSDKTypeEIP712, MsgMirrorBucket.toSDK(msg), @@ -158,7 +149,7 @@ export class CrossChain implements ICrossChain { public async mirrorObject(msg: MsgMirrorObject) { return await this.basic.tx( - MsgMirrorObjectTypeUrl, + '/greenfield.storage.MsgMirrorObject', msg.operator, MsgMirrorObjectSDKTypeEIP712, MsgMirrorObject.toSDK(msg), diff --git a/packages/chain-sdk/src/api/group.ts b/packages/chain-sdk/src/api/group.ts index 488e1fef..b06c8fc8 100644 --- a/packages/chain-sdk/src/api/group.ts +++ b/packages/chain-sdk/src/api/group.ts @@ -1,19 +1,7 @@ -import { - MsgCreateGroupSDKTypeEIP712, - MsgCreateGroupTypeUrl, -} from '@/messages/greenfield/storage/MsgCreateGroup'; -import { - MsgDeleteGroupSDKTypeEIP712, - MsgDeleteGroupTypeUrl, -} from '@/messages/greenfield/storage/MsgDeleteGroup'; -import { - MsgLeaveGroupSDKTypeEIP712, - MsgLeaveGroupTypeUrl, -} from '@/messages/greenfield/storage/MsgLeaveGroup'; -import { - MsgUpdateGroupMemberSDKTypeEIP712, - MsgUpdateGroupMemberTypeUrl, -} from '@/messages/greenfield/storage/MsgUpdateGroupMember'; +import { MsgCreateGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCreateGroup'; +import { MsgDeleteGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteGroup'; +import { MsgLeaveGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgLeaveGroup'; +import { MsgUpdateGroupMemberSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateGroupMember'; import { QueryHeadGroupMemberResponse, QueryHeadGroupResponse, @@ -71,12 +59,6 @@ export interface IGroup { * it queries a bucket policy that grants permission to a group */ getPolicyOfGroup(request: QueryPolicyForGroupRequest): Promise; - - // TODO: PutGroupPolicy compire with bucket.putBucketPolicy - - // TODO: getBucketPolicyOfGroup - - // TODO: getObjectPolicyOfGroup } @singleton() @@ -86,7 +68,7 @@ export class Group implements IGroup { public async createGroup(msg: MsgCreateGroup) { return await this.basic.tx( - MsgCreateGroupTypeUrl, + '/greenfield.storage.MsgCreateGroup', msg.creator, MsgCreateGroupSDKTypeEIP712, MsgCreateGroup.toSDK(msg), @@ -96,7 +78,7 @@ export class Group implements IGroup { public async deleteGroup(msg: MsgDeleteGroup) { return await this.basic.tx( - MsgDeleteGroupTypeUrl, + '/greenfield.storage.MsgCreateGroup', msg.operator, MsgDeleteGroupSDKTypeEIP712, MsgDeleteGroup.toSDK(msg), @@ -114,7 +96,7 @@ export class Group implements IGroup { } return await this.basic.tx( - MsgUpdateGroupMemberTypeUrl, + '/greenfield.storage.MsgUpdateGroupMember', msg.operator, MsgUpdateGroupMemberSDKTypeEIP712, MsgUpdateGroupMember.toSDK(msg), @@ -124,7 +106,7 @@ export class Group implements IGroup { public async leaveGroup(address: string, msg: MsgLeaveGroup) { return await this.basic.tx( - MsgLeaveGroupTypeUrl, + '/greenfield.storage.MsgLeaveGroup', address, MsgLeaveGroupSDKTypeEIP712, MsgLeaveGroup.toSDK(msg), @@ -153,12 +135,4 @@ export class Group implements IGroup { const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.QueryPolicyForGroup(request); } - - public async getBucketPolicyOfGroup() { - // ... - } - - public async getObjectPolicyOfGroup() { - // ... - } } diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 0df9b5c2..bd905c3c 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -11,26 +11,24 @@ import { MsgDeleteObjectTypeUrl, } from '@/messages/greenfield/storage/MsgDeleteObject'; import { - MsgUpdateObjectInfoSDKTypeEIP712, - MsgUpdateObjectInfoTypeUrl, -} from '@/messages/greenfield/storage/MsgUpdateObjectInfo'; -import { - fetchWithTimeout, METHOD_GET, METHOD_PUT, MOCK_SIGNATURE, NORMAL_ERROR_CODE, + fetchWithTimeout, } from '@/utils/http'; import { redundancyTypeFromJSON, visibilityTypeFromJSON, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; -import { QueryHeadObjectResponse } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/query'; +import { + QueryHeadObjectResponse, + QueryClientImpl as StorageQueryClientImpl, +} from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/query'; import { MsgCancelCreateObject, MsgCreateObject, MsgDeleteObject, - MsgUpdateObjectInfo, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { FileHandler } from '@bnb-chain/greenfiled-file-handle'; @@ -53,6 +51,7 @@ import { isValidObjectName, isValidUrl, } from '../utils/s3'; +import { Account } from './account'; import { Basic } from './basic'; import { RpcQueryClient } from './queryclient'; @@ -67,8 +66,6 @@ export interface IObject { cancelCreateObject(msg: MsgCancelCreateObject): Promise; - updateObjectInfo(msg: MsgUpdateObjectInfo): Promise; - deleteObject(msg: MsgDeleteObject): Promise; headObject(bucketName: string, objectName: string): Promise; @@ -84,12 +81,6 @@ export interface IObject { ): Promise>>; createFolder(getApprovalParams: IGetCreateObjectApproval): Promise; - - // TODO: PutObjectPolicy - // TODO: DeleteObjectPolicy - // TODO: IsObjectPermissionAllowed - // TODO: GetObjectUploadProgress - // TODO: getObjectStatusFromSP } @singleton() @@ -311,16 +302,6 @@ export class Objectt implements IObject { ); } - public async updateObjectInfo(msg: MsgUpdateObjectInfo) { - return await this.basic.tx( - MsgUpdateObjectInfoTypeUrl, - msg.operator, - MsgUpdateObjectInfoSDKTypeEIP712, - MsgUpdateObjectInfo.toSDK(msg), - MsgUpdateObjectInfo.encode(msg).finish(), - ); - } - public async headObject(bucketName: string, objectName: string) { const rpc = await this.queryClient.getStorageQueryClient(); diff --git a/packages/chain-sdk/src/api/payment.ts b/packages/chain-sdk/src/api/payment.ts index 632290d8..44084a3e 100644 --- a/packages/chain-sdk/src/api/payment.ts +++ b/packages/chain-sdk/src/api/payment.ts @@ -1,15 +1,6 @@ -import { - MsgDepositSDKTypeEIP712, - MsgDepositTypeUrl, -} from '@/messages/greenfield/payment/MsgDeposit'; -import { - MsgDisableRefundSDKTypeEIP712, - MsgDisableRefundTypeUrl, -} from '@/messages/greenfield/payment/MsgDisableRefund'; -import { - MsgWithdrawSDKTypeEIP712, - MsgWithdrawTypeUrl, -} from '@/messages/greenfield/payment/MsgWithdraw'; +import { MsgDepositSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgDeposit'; +import { MsgDisableRefundSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgDisableRefund'; +import { MsgWithdrawSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgWithdraw'; import { QueryGetStreamRecordResponse, QueryParamsResponse, @@ -67,7 +58,7 @@ export class Payment implements IPayment { public async deposit(msg: MsgDeposit) { return await this.basic.tx( - MsgDepositTypeUrl, + '/greenfield.payment.MsgDeposit', msg.creator, MsgDepositSDKTypeEIP712, MsgDeposit.toSDK(msg), @@ -77,7 +68,7 @@ export class Payment implements IPayment { public async withdraw(msg: MsgWithdraw) { return await this.basic.tx( - MsgWithdrawTypeUrl, + '/greenfield.payment.MsgWithdraw', msg.creator, MsgWithdrawSDKTypeEIP712, MsgWithdraw.toSDK(msg), @@ -87,7 +78,7 @@ export class Payment implements IPayment { public async disableRefund(msg: MsgDisableRefund) { return await this.basic.tx( - MsgDisableRefundTypeUrl, + '/greenfield.payment.MsgDisableRefund', msg.addr, MsgDisableRefundSDKTypeEIP712, MsgDisableRefund.toSDK(msg), diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index 7888a1c7..da7eb113 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -1,3 +1,6 @@ +import { MsgUpdateSpStoragePriceSDKTypeEIP712 } from '@/messages/greenfield/sp/MsgUpdateSpStoragePrice'; + +import { MsgUpdateSpStoragePrice } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/tx'; import { SecondarySpStorePrice, SpStoragePrice, @@ -29,6 +32,10 @@ export interface ISp { * returns the secondary storage price, including update time and store price */ getSecondarySpStorePrice(): Promise; + + /** + * submit a grant transaction to allow gov module account to deduct the specified number of tokens + */ } @singleton() @@ -66,4 +73,14 @@ export class Sp implements ISp { }); return res.secondarySpStorePrice; } + + public async updateSpStoragePrice(address: string, msg: MsgUpdateSpStoragePrice) { + return await this.basic.tx( + '/greenfield.sp.MsgUpdateSpStoragePrice', + address, + MsgUpdateSpStoragePriceSDKTypeEIP712, + MsgUpdateSpStoragePrice.toSDK(msg), + MsgUpdateSpStoragePrice.encode(msg).finish(), + ); + } } diff --git a/packages/chain-sdk/src/config.spec.ts b/packages/chain-sdk/src/config.spec.ts index ccabc448..8c16d3db 100644 --- a/packages/chain-sdk/src/config.spec.ts +++ b/packages/chain-sdk/src/config.spec.ts @@ -1,25 +1,9 @@ -import { ISimulateGasFee } from './types'; - -// export const GRPC_URL = 'https://gnfd.qa.bnbchain.world'; -export const GRPC_URL = 'http://localhost:26750'; -// export const GREENFIELD_URL = 'https://gnfd.qa.bnbchain.world'; -export const GREENFIELD_URL = 'http://localhost:26750'; +export const GRPC_URL = 'https://gnfd.qa.bnbchain.world'; +export const GREENFIELD_URL = 'https://gnfd.qa.bnbchain.world'; export const GREENFIELD_CHAIN_ID = '9000'; export const BSC_RPC_URL = 'https://data-seed-prebsc-1-s1.binance.org:8545'; export const BSC_CHAIN_ID = '97'; -// export const ACCOUNT = { -// address: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', -// privateKey: '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032', -// }; export const ACCOUNT = { - address: '0x67c01Cc85Db17E26F279FC588759F266F97d1AB3', - privateKey: '0x9355300339899ae8df87ba0e2b71e8cc1ca996d65b0520e232d9de54bab11861', -}; - -export const ZERO_ACCOUNT_ADDRESS = '0x0000000000000000000000000000000000000000'; - -export const DEFAULT_SIMULATE_INFO: ISimulateGasFee = { - gasFee: '0', - gasLimit: BigInt(0), - gasPrice: '0', + address: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + privateKey: '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032', }; diff --git a/packages/chain-sdk/src/messages/bank/MsgMultiSend.ts b/packages/chain-sdk/src/messages/bank/MsgMultiSend.ts index 93602625..008eab7b 100644 --- a/packages/chain-sdk/src/messages/bank/MsgMultiSend.ts +++ b/packages/chain-sdk/src/messages/bank/MsgMultiSend.ts @@ -1,57 +1,9 @@ -export const MsgMultiSendTypeUrl = '/cosmos.bank.v1beta1.MsgMultiSend'; +export const MsgMultiSendTypeUrl = '/cosmos.bank.v1beta1.MsgMulti'; export const MsgMultiSendSDKTypeEIP712 = { - Msg1: [ - { - name: 'type', - type: 'string', - }, - { - name: 'inputs', - type: 'TypeMsg1Inputs[]', - }, - { - name: 'outputs', - type: 'TypeMsg1Outputs[]', - }, - ], - TypeMsg1Inputs: [ - { - name: 'address', - type: 'string', - }, - { - name: 'coins', - type: 'TypeMsg1InputsCoins[]', - }, - ], - TypeMsg1InputsCoins: [ - { - name: 'denom', - type: 'string', - }, - { - name: 'amount', - type: 'string', - }, - ], - TypeMsg1Outputs: [ - { - name: 'address', - type: 'string', - }, - { - name: 'coins', - type: 'TypeMsg1OutputsCoins[]', - }, - ], - TypeMsg1OutputsCoins: [ - { - name: 'denom', - type: 'string', - }, - { - name: 'amount', - type: 'string', - }, + Msg: [ + { name: 'type', type: 'string' }, + { name: 'from_address', type: 'string' }, + { name: 'to_address', type: 'string' }, + { name: 'amount', type: 'TypeAmount[]' }, ], }; diff --git a/packages/chain-sdk/src/messages/bank/MsgSend.ts b/packages/chain-sdk/src/messages/bank/MsgSend.ts index 575a4617..88c875ac 100644 --- a/packages/chain-sdk/src/messages/bank/MsgSend.ts +++ b/packages/chain-sdk/src/messages/bank/MsgSend.ts @@ -1,31 +1,9 @@ export const MsgSendTypeUrl = '/cosmos.bank.v1beta1.MsgSend'; export const MsgSendSDKTypeEIP712 = { - Msg1: [ - { - name: 'type', - type: 'string', - }, - { - name: 'from_address', - type: 'string', - }, - { - name: 'to_address', - type: 'string', - }, - { - name: 'amount', - type: 'TypeMsg1Amount[]', - }, - ], - TypeMsg1Amount: [ - { - name: 'denom', - type: 'string', - }, - { - name: 'amount', - type: 'string', - }, + Msg: [ + { name: 'type', type: 'string' }, + { name: 'from_address', type: 'string' }, + { name: 'to_address', type: 'string' }, + { name: 'amount', type: 'TypeAmount[]' }, ], }; diff --git a/packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts b/packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts index 941108b8..658eacca 100644 --- a/packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts +++ b/packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts @@ -1,30 +1,40 @@ -export const MsgClaimTypeUrl = '/cosmos.oracle.v1.MsgClaim'; - export const MsgClaimSDKTypeEIP712 = { - Msg1: [ + Msg: [ { - name: 'type', type: 'string', + name: 'type', }, { - name: 'from_address', type: 'string', + name: 'from_address', }, { + type: 'uint64', name: 'src_chain_id', - type: 'uint32', }, { + type: 'uint64', name: 'dest_chain_id', - type: 'uint32', }, { - name: 'sequence', type: 'uint64', + name: 'sequence', }, { - name: 'timestamp', type: 'uint64', + name: 'timestamp', + }, + { + type: 'bytes', + name: 'payload', + }, + { + type: 'uint64[]', + name: 'vote_address_set', + }, + { + type: 'bytes', + name: 'agg_signature', }, ], }; diff --git a/packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts b/packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts index 10d2bf00..926c342b 100644 --- a/packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts +++ b/packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts @@ -1,32 +1,31 @@ -export const MsgGrantAllowanceTypeUrl = '/cosmos.feegrant.v1beta1.MsgGrantAllowance'; - +export const MsgGrantAllowanceTypeUrl = '/cosmos/feegrant/v1beta1/MsgGrantAllowance'; export const MsgGrantAllowanceSDKTypeEIP712 = { - Msg1: [ + Msg: [ { - name: 'type', type: 'string', + name: 'type', }, { - name: 'granter', type: 'string', + name: 'granter', }, { - name: 'grantee', type: 'string', + name: 'grantee', }, { + type: 'TypeAllowance', name: 'allowance', - type: 'TypeAny', }, ], - TypeAny: [ + TypeAllowance: [ { - name: 'type', type: 'string', + name: 'type_url', }, { - name: 'value', type: 'bytes', + name: 'value', }, ], }; diff --git a/packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts b/packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts index f1afe290..eccec3cd 100644 --- a/packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts +++ b/packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts @@ -1,17 +1,39 @@ -export const MsgRevokeAllowanceTypeUrl = '/cosmos.feegrant.v1beta1.MsgRevokeAllowance'; +export const MsgRevokeAllowanceTypeUrl = '/cosmos/feegrant/v1beta1/MsgRevokeAllowance'; export const MsgRevokeAllowanceSDKTypeEIP712 = { - Msg1: [ + Msg: [ { - name: 'type', type: 'string', + name: 'type', }, { + type: 'string', name: 'granter', + }, + { + type: 'string', + name: 'grantee', + }, + { + type: 'TypeAllowance', + name: 'allowance', + }, + { type: 'string', + name: 'granter', }, { + type: 'string', name: 'grantee', + }, + ], + TypeAllowance: [ + { type: 'string', + name: 'type_url', + }, + { + type: 'bytes', + name: 'value', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts b/packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts index a9bb4052..96a789a4 100644 --- a/packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts +++ b/packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts @@ -1,7 +1,7 @@ export const MsgTransferOutTypeUrl = '/greenfield.bridge.MsgTransferOut'; export const MsgTransferOutSDKTypeEIP712 = { - Msg1: [ + Msg: [ { name: 'type', type: 'string', @@ -16,17 +16,7 @@ export const MsgTransferOutSDKTypeEIP712 = { }, { name: 'amount', - type: 'TypeMsg1Amount', - }, - ], - TypeMsg1Amount: [ - { - name: 'denom', - type: 'string', - }, - { - name: 'amount', - type: 'string', + type: 'TypeAmount', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts b/packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts index 1b434879..fe874f91 100644 --- a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts +++ b/packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts @@ -1,34 +1,64 @@ -export const MsgAttestTypeUrl = '/greenfield.challenge.MsgAttest'; - export const MsgAttestSDKTypeEIP712 = { - Msg1: [ + Msg: [ { + type: 'string', name: 'type', + }, + { type: 'string', + name: 'challenger', }, { - name: 'submitter', type: 'string', + name: 'sp_operator_address', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', }, { - name: 'challenge_id', type: 'uint64', + name: 'segment_index', + }, + { + type: 'bool', + name: 'random_index', }, { - name: 'object_id', type: 'string', + name: 'submitter', + }, + { + type: 'uint64', + name: 'challenge_id', }, { - name: 'sp_operator_address', type: 'string', + name: 'object_id', }, { - name: 'vote_result', type: 'string', + name: 'sp_operator_address', }, { - name: 'challenger_address', type: 'string', + name: 'vote_result', + }, + { + type: 'string', + name: 'challenger_address', + }, + { + type: 'uint64[]', + name: 'vote_validator_set', + }, + { + type: 'bytes', + name: 'vote_agg_signature', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts b/packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts index c8734186..d89bdb5a 100644 --- a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts +++ b/packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts @@ -1,34 +1,32 @@ -export const MsgSubmitTypeUrl = '/greenfield.challenge.MsgSubmit'; - export const MsgSubmitSDKTypeEIP712 = { - Msg1: [ + Msg: [ { - name: 'type', type: 'string', + name: 'type', }, { - name: 'challenger', type: 'string', + name: 'challenger', }, { - name: 'sp_operator_address', type: 'string', + name: 'sp_operator_address', }, { - name: 'bucket_name', type: 'string', + name: 'bucket_name', }, { - name: 'object_name', type: 'string', + name: 'object_name', }, { + type: 'uint64', name: 'segment_index', - type: 'uint32', }, { - name: 'random_index', type: 'bool', + name: 'random_index', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts b/packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts index 99b498b8..68e36b18 100644 --- a/packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts +++ b/packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts @@ -1,21 +1,58 @@ -export const MsgDepositTypeUrl = '/greenfield.payment.MsgDeposit'; export const MsgDepositSDKTypeEIP712 = { - Msg1: [ + Msg: [ { + type: 'string', name: 'type', + }, + { type: 'string', + name: 'authority', }, { + type: 'TypeParams', + name: 'params', + }, + { + type: 'string', name: 'creator', + }, + { type: 'string', + name: 'creator', }, { - name: 'to', type: 'string', + name: 'to', }, { + type: 'string', name: 'amount', + }, + ], + TypeParams: [ + { + type: 'uint64', + name: 'reserve_time', + }, + { + type: 'uint64', + name: 'payment_account_count_limit', + }, + { + type: 'uint64', + name: 'forced_settle_time', + }, + { + type: 'uint64', + name: 'max_auto_force_settle_num', + }, + { + type: 'string', + name: 'fee_denom', + }, + { type: 'string', + name: 'validator_tax_rate', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts b/packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts index cd4f16ec..bde9de7d 100644 --- a/packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts +++ b/packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts @@ -1,17 +1,78 @@ -export const MsgDisableRefundTypeUrl = '/greenfield.payment.MsgDisableRefund'; export const MsgDisableRefundSDKTypeEIP712 = { - Msg1: [ + Msg: [ { + type: 'string', name: 'type', + }, + { type: 'string', + name: 'authority', + }, + { + type: 'TypeParams', + name: 'params', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'to', }, { - name: 'owner', type: 'string', + name: 'amount', }, { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'from', + }, + { + type: 'string', + name: 'amount', + }, + { + type: 'string', + name: 'owner', + }, + { + type: 'string', name: 'addr', + }, + ], + TypeParams: [ + { + type: 'uint64', + name: 'reserve_time', + }, + { + type: 'uint64', + name: 'payment_account_count_limit', + }, + { + type: 'uint64', + name: 'forced_settle_time', + }, + { + type: 'uint64', + name: 'max_auto_force_settle_num', + }, + { + type: 'string', + name: 'fee_denom', + }, + { type: 'string', + name: 'validator_tax_rate', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts b/packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts index eaec76e2..06f685b1 100644 --- a/packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts +++ b/packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts @@ -1,21 +1,70 @@ -export const MsgWithdrawTypeUrl = '/greenfield.payment.MsgWithdraw'; export const MsgWithdrawSDKTypeEIP712 = { - Msg1: [ + Msg: [ { + type: 'string', name: 'type', + }, + { type: 'string', + name: 'authority', + }, + { + type: 'TypeParams', + name: 'params', }, { + type: 'string', name: 'creator', + }, + { type: 'string', + name: 'creator', }, { - name: 'from', type: 'string', + name: 'to', }, { + type: 'string', name: 'amount', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'from', + }, + { + type: 'string', + name: 'amount', + }, + ], + TypeParams: [ + { + type: 'uint64', + name: 'reserve_time', + }, + { + type: 'uint64', + name: 'payment_account_count_limit', + }, + { + type: 'uint64', + name: 'forced_settle_time', + }, + { + type: 'uint64', + name: 'max_auto_force_settle_num', + }, + { + type: 'string', + name: 'fee_denom', + }, + { type: 'string', + name: 'validator_tax_rate', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/sp/MsgUpdateSpStoragePrice.ts b/packages/chain-sdk/src/messages/greenfield/sp/MsgUpdateSpStoragePrice.ts new file mode 100644 index 00000000..69966917 --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/sp/MsgUpdateSpStoragePrice.ts @@ -0,0 +1,130 @@ +export const MsgUpdateSpStoragePriceSDKTypeEIP712 = { + Msg: [ + { + type: 'string', + name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'TypeDescription', + name: 'description', + }, + { + type: 'string', + name: 'sp_address', + }, + { + type: 'string', + name: 'funding_address', + }, + { + type: 'string', + name: 'seal_address', + }, + { + type: 'string', + name: 'approval_address', + }, + { + type: 'string', + name: 'gc_address', + }, + { + type: 'string', + name: 'endpoint', + }, + { + type: 'TypeAmount', + name: 'deposit', + }, + { + type: 'string', + name: 'read_price', + }, + { + type: 'uint64', + name: 'free_read_quota', + }, + { + type: 'string', + name: 'store_price', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'sp_address', + }, + { + type: 'TypeAmount', + name: 'deposit', + }, + { + type: 'string', + name: 'sp_address', + }, + { + type: 'string', + name: 'endpoint', + }, + { + type: 'TypeDescription', + name: 'description', + }, + { + type: 'string', + name: 'seal_address', + }, + { + type: 'string', + name: 'approval_address', + }, + { + type: 'string', + name: 'gc_address', + }, + { + type: 'string', + name: 'sp_address', + }, + { + type: 'string', + name: 'read_price', + }, + { + type: 'uint64', + name: 'free_read_quota', + }, + { + type: 'string', + name: 'store_price', + }, + ], + TypeDescription: [ + { + type: 'string', + name: 'moniker', + }, + { + type: 'string', + name: 'identity', + }, + { + type: 'string', + name: 'website', + }, + { + type: 'string', + name: 'security_contact', + }, + { + type: 'string', + name: 'details', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts index 68ad783a..e2edc090 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts @@ -1,7 +1,7 @@ export const MsgCancelCreateObjectTypeUrl = '/greenfield.storage.MsgCancelCreateObject'; export const MsgCancelCreateObjectSDKTypeEIP712 = { - Msg1: [ + Msg: [ { name: 'type', type: 'string', diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts index 2085a256..660be762 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts @@ -1,7 +1,7 @@ export const MsgCreateBucketTypeUrl = '/greenfield.storage.MsgCreateBucket'; export const MsgCreateBucketSDKTypeEIP712 = { - Msg1: [ + Msg: [ { name: 'type', type: 'string', @@ -28,14 +28,14 @@ export const MsgCreateBucketSDKTypeEIP712 = { }, { name: 'primary_sp_approval', - type: 'TypeMsg1PrimarySpApproval', + type: 'TypePrimarySpApproval', }, { name: 'charged_read_quota', type: 'uint64', }, ], - TypeMsg1PrimarySpApproval: [ + TypePrimarySpApproval: [ { name: 'expired_height', type: 'uint64', @@ -46,3 +46,39 @@ export const MsgCreateBucketSDKTypeEIP712 = { }, ], }; + +export interface ICreateBucketMsg { + bucketName: string; + expiredHeight: string; + from: string; + visibility: string; + paymentAddress: string; + primarySpAddress: string; + chargedReadQuota: number; + sig: string; +} + +export const newMsgCreateBucket = ({ + bucketName, + expiredHeight, + from, + visibility, + paymentAddress, + primarySpAddress, + chargedReadQuota, + sig, +}: ICreateBucketMsg) => { + return { + type: MsgCreateBucketTypeUrl, + bucket_name: bucketName, + creator: from, + visibility, + payment_address: paymentAddress, + primary_sp_address: primarySpAddress, + primary_sp_approval: { + expired_height: expiredHeight, + sig, + }, + charged_read_quota: chargedReadQuota, + }; +}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts index e264a6f4..b8957d86 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts @@ -1,22 +1,212 @@ -export const MsgCreateGroupTypeUrl = '/greenfield.storage.MsgCreateGroup'; - export const MsgCreateGroupSDKTypeEIP712 = { - Msg1: [ + Msg: [ { + type: 'string', name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'primary_sp_address', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { type: 'string', + name: 'reason', }, { + type: 'string', name: 'creator', + }, + { type: 'string', + name: 'bucket_name', }, { - name: 'group_name', type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', }, { - name: 'members', type: 'string[]', + name: 'members', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts index c565ff7d..db8477f9 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts @@ -1,7 +1,12 @@ +import { + redundancyTypeToJSON, + visibilityTypeToJSON, +} from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; + export const MsgCreateObjectTypeUrl = '/greenfield.storage.MsgCreateObject'; export const MsgCreateObjectSDKTypeEIP712 = { - Msg1: [ + Msg: [ { name: 'type', type: 'string', @@ -32,17 +37,76 @@ export const MsgCreateObjectSDKTypeEIP712 = { }, { name: 'primary_sp_approval', - type: 'TypeMsg1PrimarySpApproval', + type: 'TypePrimarySpApproval', + }, + { + name: 'expect_checksums', + type: 'bytes[]', }, { name: 'redundancy_type', type: 'string', }, + { + name: 'expect_secondary_sp_addresses', + type: 'string[]', + }, ], - TypeMsg1PrimarySpApproval: [ + TypePrimarySpApproval: [ { name: 'expired_height', type: 'uint64', }, + { + name: 'sig', + type: 'bytes', + }, ], }; + +export interface ICreateObjectMsg { + bucketName: string; + contentType: string; + expectChecksums: string[]; + expectSecondarySpAddresses: string[]; + expiredHeight: string; + from: string; + visibility: number; + objectName: string; + payloadSize: string; + redundancyType: number; + sig: string; +} + +export const newMsgCreateObject = ({ + bucketName, + contentType, + expectChecksums, + expiredHeight, + from, + visibility, + objectName, + payloadSize, + sig, + expectSecondarySpAddresses, + redundancyType, +}: ICreateObjectMsg) => { + return { + type: MsgCreateObjectTypeUrl, + bucket_name: bucketName, + content_type: contentType, + creator: from, + expect_checksums: expectChecksums, + visibility: + visibility === undefined ? visibilityTypeToJSON(0) : visibilityTypeToJSON(visibility), + object_name: objectName, + payload_size: payloadSize, + primary_sp_approval: { + expired_height: expiredHeight, + sig: sig, + }, + expect_secondary_sp_addresses: expectSecondarySpAddresses, + redundancy_type: + redundancyType === undefined ? redundancyTypeToJSON(0) : redundancyTypeToJSON(redundancyType), + }; +}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts index 97637371..d339587a 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts @@ -1,7 +1,7 @@ export const MsgDeleteBucketTypeUrl = '/greenfield.storage.MsgDeleteBucket'; export const MsgDeleteBucketSDKTypeEIP712 = { - Msg1: [ + Msg: [ { name: 'type', type: 'string', @@ -16,3 +16,16 @@ export const MsgDeleteBucketSDKTypeEIP712 = { }, ], }; + +export interface IDeleteBucketMsg { + bucketName: string; + from: string; +} + +export const newMsgDeleteBucket = ({ bucketName, from }: IDeleteBucketMsg) => { + return { + type: MsgDeleteBucketTypeUrl, + bucket_name: bucketName, + operator: from, + }; +}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts index eea3a164..bcf4fa10 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts @@ -1,17 +1,220 @@ -export const MsgDeleteGroupTypeUrl = '/greenfield.storage.MsgDeleteGroup'; export const MsgDeleteGroupSDKTypeEIP712 = { - Msg1: [ + Msg: [ { + type: 'string', name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'primary_sp_address', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', }, { + type: 'string', name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'operator', + }, + { type: 'string', + name: 'bucket_name', }, { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + { type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_name', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts index be16002c..8a3c98e5 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts @@ -1,7 +1,7 @@ export const MsgDeleteObjectTypeUrl = '/greenfield.storage.MsgDeleteObject'; export const MsgDeleteObjectSDKTypeEIP712 = { - Msg1: [ + Msg: [ { name: 'type', type: 'string', diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts index 52970807..dfded66e 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts @@ -1,18 +1,341 @@ -export const MsgDeletePolicyTypeUrl = '/greenfield.storage.MsgDeletePolicy'; - export const MsgDeletePolicySDKTypeEIP712 = { - Msg1: [ + Msg: [ { + type: 'string', name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'primary_sp_address', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_name', + }, + { type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_owner', }, { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members_to_add', + }, + { + type: 'string[]', + name: 'members_to_delete', + }, + { + type: 'string', + name: 'member', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', name: 'operator', + }, + { type: 'string', + name: 'bucket_name', + }, + { + type: 'TypeChargedReadQuota', + name: 'charged_read_quota', }, { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', name: 'resource', + }, + { + type: 'StatementSDKType[]', + name: 'statements', + }, + { + type: 'TypeExpirationTime', + name: 'expiration_time', + }, + { type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', + name: 'resource', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeChargedReadQuota: [ + { + type: 'uint64', + name: 'value', + }, + ], + TypePrincipal: [ + { + name: 'type', + }, + { + type: 'string', + name: 'value', + }, + ], + TypeExpirationTime: [ + { + type: 'uint64', + name: 'seconds', + }, + { + type: 'uint64', + name: 'nanos', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts index 71ad512e..62e60295 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts @@ -1,21 +1,252 @@ -export const MsgLeaveGroupTypeUrl = '/greenfield.storage.MsgLeaveGroup'; export const MsgLeaveGroupSDKTypeEIP712 = { - Msg1: [ + Msg: [ { + type: 'string', name: 'type', + }, + { type: 'string', + name: 'creator', }, { - name: 'member', type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'primary_sp_address', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members', }, { - name: 'group_owner', type: 'string', + name: 'operator', }, { + type: 'string', name: 'group_name', + }, + { type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members_to_add', + }, + { + type: 'string[]', + name: 'members_to_delete', + }, + { + type: 'string', + name: 'member', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts index abe65940..3fa1e2b6 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts @@ -1,22 +1,357 @@ -export const MsgMirrorBucketTypeUrl = '/greenfield.storage.MsgMirrorBucket'; - export const MsgMirrorBucketSDKTypeEIP712 = { - Msg1: [ + Msg: [ { + type: 'string', name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { type: 'string', + name: 'primary_sp_address', }, { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', }, { - name: 'id', type: 'string', + name: 'group_owner', }, { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members_to_add', + }, + { + type: 'string[]', + name: 'members_to_delete', + }, + { + type: 'string', + name: 'member', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', name: 'bucket_name', + }, + { + type: 'TypeChargedReadQuota', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', + name: 'resource', + }, + { + type: 'StatementSDKType[]', + name: 'statements', + }, + { + type: 'TypeExpirationTime', + name: 'expiration_time', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', + name: 'resource', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'id', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'id', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeChargedReadQuota: [ + { + type: 'uint64', + name: 'value', + }, + ], + TypePrincipal: [ + { + name: 'type', + }, + { + type: 'string', + name: 'value', + }, + ], + TypeExpirationTime: [ + { + type: 'uint64', + name: 'seconds', + }, + { + type: 'uint64', + name: 'nanos', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts index 4202f6bb..d01e3070 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts @@ -1,22 +1,381 @@ -export const MsgMirrorGroupTypeUrl = '/greenfield.storage.MsgMirrorGroup'; - export const MsgMirrorGroupSDKTypeEIP712 = { - Msg1: [ + Msg: [ { + type: 'string', name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'primary_sp_address', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'operator', + }, + { type: 'string', + name: 'bucket_name', }, { + type: 'string', name: 'operator', + }, + { type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', }, { - name: 'id', type: 'string', + name: 'src_object_name', }, { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + { + type: 'string', + name: 'operator', + }, + { type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members_to_add', + }, + { + type: 'string[]', + name: 'members_to_delete', + }, + { + type: 'string', + name: 'member', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'TypeChargedReadQuota', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', + name: 'resource', + }, + { + type: 'StatementSDKType[]', + name: 'statements', + }, + { + type: 'TypeExpirationTime', + name: 'expiration_time', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', + name: 'resource', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'id', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'id', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'id', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeChargedReadQuota: [ + { + type: 'uint64', + name: 'value', + }, + ], + TypePrincipal: [ + { + name: 'type', + }, + { + type: 'string', + name: 'value', + }, + ], + TypeExpirationTime: [ + { + type: 'uint64', + name: 'seconds', + }, + { + type: 'uint64', + name: 'nanos', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts index e6a76143..fbf1f2be 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts @@ -1,26 +1,349 @@ -export const MsgMirrorObjectTypeUrl = '/greenfield.storage.MsgMirrorObject'; - export const MsgMirrorObjectSDKTypeEIP712 = { - Msg1: [ + Msg: [ { + type: 'string', name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { type: 'string', + name: 'primary_sp_address', }, { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', name: 'operator', + }, + { type: 'string', + name: 'bucket_name', }, { - name: 'id', type: 'string', + name: 'operator', }, { + type: 'string', name: 'bucket_name', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { type: 'string', + name: 'bucket_name', }, { + type: 'string', name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members_to_add', + }, + { + type: 'string[]', + name: 'members_to_delete', + }, + { + type: 'string', + name: 'member', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'TypeChargedReadQuota', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', + name: 'resource', + }, + { + type: 'StatementSDKType[]', + name: 'statements', + }, + { + type: 'TypeExpirationTime', + name: 'expiration_time', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', + name: 'resource', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'id', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeChargedReadQuota: [ + { + type: 'uint64', + name: 'value', + }, + ], + TypePrincipal: [ + { + name: 'type', + }, + { + type: 'string', + name: 'value', + }, + ], + TypeExpirationTime: [ + { + type: 'uint64', + name: 'seconds', + }, + { + type: 'uint64', + name: 'nanos', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts index 7d05fab1..e5fd0c64 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts @@ -1,22 +1,329 @@ -export const MsgPutPolicyTypeUrl = '/greenfield.storage.MsgPutPolicy'; - export const MsgPutPolicySDKTypeEIP712 = { - Msg1: [ + Msg: [ { + type: 'string', name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { type: 'string', + name: 'primary_sp_address', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', }, { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', name: 'operator', + }, + { type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', }, { - name: 'resource', type: 'string', + name: 'object_name', }, { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members_to_add', + }, + { + type: 'string[]', + name: 'members_to_delete', + }, + { + type: 'string', + name: 'member', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'TypeChargedReadQuota', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'TypePrincipal', + name: 'principal', + }, + { + type: 'string', + name: 'resource', + }, + { + type: 'StatementSDKType[]', + name: 'statements', + }, + { + type: 'TypeExpirationTime', name: 'expiration_time', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeChargedReadQuota: [ + { + type: 'uint64', + name: 'value', + }, + ], + TypePrincipal: [ + { + name: 'type', + }, + { type: 'string', + name: 'value', + }, + ], + TypeExpirationTime: [ + { + type: 'uint64', + name: 'seconds', + }, + { + type: 'uint64', + name: 'nanos', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts index 97eb5bbb..23487d3b 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts @@ -1,26 +1,278 @@ -export const MsgUpdateBucketInfoTypeUrl = '/greenfield.storage.MsgUpdateBucketInfo'; - export const MsgUpdateBucketInfoSDKTypeEIP712 = { - Msg1: [ + Msg: [ { + type: 'string', name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { type: 'string', + name: 'primary_sp_address', }, { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { type: 'string', + name: 'operator', }, { + type: 'string', name: 'bucket_name', + }, + { type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', }, { - name: 'payment_address', type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', }, { + type: 'string', name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members_to_add', + }, + { + type: 'string[]', + name: 'members_to_delete', + }, + { + type: 'string', + name: 'member', + }, + { + type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { type: 'string', + name: 'bucket_name', + }, + { + type: 'TypeChargedReadQuota', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'visibility', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeChargedReadQuota: [ + { + type: 'uint64', + name: 'value', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts index 3848e90b..a8c68343 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts @@ -1,22 +1,240 @@ -export const MsgUpdateGroupMemberTypeUrl = '/greenfield.storage.MsgUpdateGroupMember'; - export const MsgUpdateGroupMemberSDKTypeEIP712 = { - Msg1: [ + Msg: [ { + type: 'string', name: 'type', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'payment_address', + }, + { + type: 'string', + name: 'primary_sp_address', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'uint64', + name: 'charged_read_quota', + }, + { + type: 'string', + name: 'operator', + }, + { type: 'string', + name: 'bucket_name', }, { + type: 'string', name: 'operator', + }, + { type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'uint64', + name: 'payload_size', + }, + { + type: 'string', + name: 'visibility', + }, + { + type: 'string', + name: 'content_type', + }, + { + type: 'TypePrimarySpApproval', + name: 'primary_sp_approval', + }, + { + type: 'Uint8Array[]', + name: 'expect_checksums', + }, + { + type: 'string', + name: 'redundancy_type', + }, + { + type: 'string[]', + name: 'expect_secondary_sp_addresses', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string[]', + name: 'secondary_sp_addresses', + }, + { + type: 'Uint8Array[]', + name: 'secondary_sp_signatures', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', }, { - name: 'group_owner', type: 'string', + name: 'object_name', }, { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'src_bucket_name', + }, + { + type: 'string', + name: 'dst_bucket_name', + }, + { + type: 'string', + name: 'src_object_name', + }, + { + type: 'string', + name: 'dst_object_name', + }, + { + type: 'TypeDstPrimarySpApproval', + name: 'dst_primary_sp_approval', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string', + name: 'object_name', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', + name: 'bucket_name', + }, + { + type: 'string[]', + name: 'object_ids', + }, + { + type: 'string', + name: 'reason', + }, + { + type: 'string', + name: 'creator', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members', + }, + { + type: 'string', + name: 'operator', + }, + { + type: 'string', name: 'group_name', + }, + { + type: 'string', + name: 'operator', + }, + { type: 'string', + name: 'group_owner', + }, + { + type: 'string', + name: 'group_name', + }, + { + type: 'string[]', + name: 'members_to_add', + }, + { + type: 'string[]', + name: 'members_to_delete', + }, + ], + TypePrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', + }, + ], + TypeDstPrimarySpApproval: [ + { + type: 'uint64', + name: 'expired_height', + }, + { + type: 'bytes', + name: 'sig', }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts deleted file mode 100644 index 7381cbe6..00000000 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts +++ /dev/null @@ -1,26 +0,0 @@ -export const MsgUpdateObjectInfoTypeUrl = '/greenfield.storage.MsgUpdateObjectInfo'; - -export const MsgUpdateObjectInfoSDKTypeEIP712 = { - Msg1: [ - { - name: 'type', - type: 'string', - }, - { - name: 'operator', - type: 'string', - }, - { - name: 'bucket_name', - type: 'string', - }, - { - name: 'object_name', - type: 'string', - }, - { - name: 'visibility', - type: 'string', - }, - ], -}; diff --git a/packages/chain-sdk/src/messages/index.ts b/packages/chain-sdk/src/messages/index.ts index 8dd3a356..71469506 100644 --- a/packages/chain-sdk/src/messages/index.ts +++ b/packages/chain-sdk/src/messages/index.ts @@ -28,7 +28,7 @@ export const generateMessage = ( sequence, memo, fee, - msg1: msg, + msg, timeout_height: timeoutHeight, }; }; @@ -46,41 +46,24 @@ export const generateTypes = (newTypes?: object) => { { name: 'verifyingContract', type: 'string' }, { name: 'salt', type: 'string' }, ], + Tx: [ + { name: 'account_number', type: 'uint256' }, + { name: 'chain_id', type: 'uint256' }, + { name: 'fee', type: 'Fee' }, + { name: 'memo', type: 'string' }, + { name: 'msg', type: 'Msg' }, + { name: 'sequence', type: 'uint256' }, + { name: 'timeout_height', type: 'uint256' }, + ], Fee: [ { name: 'amount', type: 'Coin[]' }, { name: 'gas_limit', type: 'uint256' }, { name: 'payer', type: 'string' }, { name: 'granter', type: 'string' }, ], - Tx: [ - { - name: 'account_number', - type: 'uint256', - }, - { - name: 'chain_id', - type: 'uint256', - }, - { - name: 'fee', - type: 'Fee', - }, - { - name: 'memo', - type: 'string', - }, - { - name: 'sequence', - type: 'uint256', - }, - { - name: 'timeout_height', - type: 'uint256', - }, - { - name: 'msg1', - type: 'Msg1', - }, + TypeAmount: [ + { name: 'denom', type: 'string' }, + { name: 'amount', type: 'string' }, ], }; From 17ebf8468f206eae735c4007a785c113244327c4 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Thu, 25 May 2023 01:08:57 +0800 Subject: [PATCH 007/433] Update WASM (#55) * feat: Update WASM * feat: Update create object tx --- .changeset/cuddly-eels-knock.md | 5 ++ examples/nextjs/package.json | 1 + .../src/components/object/create/index.tsx | 11 ++- examples/nodejs/index.js | 20 ++++- examples/nodejs/package.json | 3 +- packages/chain-sdk/package.json | 2 + packages/chain-sdk/src/api/objectt.spec.ts | 52 +++++++++++++ packages/chain-sdk/src/api/objectt.ts | 18 ++--- packages/chain-sdk/src/types/storage.ts | 4 +- packages/file-handle/README.md | 2 + packages/file-handle/package.json | 10 ++- packages/file-handle/rollup.config.js | 31 +++++++- .../src/files-handle-wasm/main.wasm | Bin 2930583 -> 3079990 bytes .../file-handle/src/files-handle-wasm/node.js | 16 ++++ .../src/files-handle-wasm/wasm_exec_node.js | 47 ++++++++++++ .../file-handle/src/files-handle-wasm/web.js | 2 +- packages/file-handle/src/go-wasm/README.md | 7 ++ packages/file-handle/src/go-wasm/go.mod | 15 ++++ packages/file-handle/src/go-wasm/go.sum | 41 ++++++++++ packages/file-handle/src/go-wasm/main.go | 43 +++++++++++ pnpm-lock.yaml | 71 ++++++++++++++++++ 21 files changed, 378 insertions(+), 23 deletions(-) create mode 100644 .changeset/cuddly-eels-knock.md create mode 100644 packages/chain-sdk/src/api/objectt.spec.ts create mode 100644 packages/file-handle/src/files-handle-wasm/node.js create mode 100644 packages/file-handle/src/files-handle-wasm/wasm_exec_node.js create mode 100644 packages/file-handle/src/go-wasm/README.md create mode 100644 packages/file-handle/src/go-wasm/go.mod create mode 100644 packages/file-handle/src/go-wasm/go.sum create mode 100644 packages/file-handle/src/go-wasm/main.go diff --git a/.changeset/cuddly-eels-knock.md b/.changeset/cuddly-eels-knock.md new file mode 100644 index 00000000..54e777ad --- /dev/null +++ b/.changeset/cuddly-eels-knock.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +feat: Update createObject params diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index b3957994..3a3cee18 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -12,6 +12,7 @@ }, "dependencies": { "@bnb-chain/greenfield-chain-sdk": "workspace:*", + "@bnb-chain/greenfiled-file-handle": "workspace:*", "@bnb-chain/greenfield-cosmos-types": "0.3.0-alpha.8", "@cosmjs/encoding": "^0.29.5", "@cosmjs/proto-signing": "^0.29.5", diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index 38d64f45..b86145f7 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -1,4 +1,5 @@ import { client, selectSp } from '@/client'; +import { FileHandler } from '@bnb-chain/greenfiled-file-handle'; import { ChangeEvent, useState } from 'react'; import { useAccount } from 'wagmi'; @@ -49,11 +50,17 @@ export const CreateObject = () => { } const spInfo = await selectSp(); + const fileBytes = await file.arrayBuffer(); + const hashResult = await FileHandler.getPieceHashRoots(new Uint8Array(fileBytes)); + const { contentLength, expectCheckSums } = hashResult; + const createObjectTx = await client.object.createObject({ bucketName: createObjectInfo.bucketName, objectName: createObjectInfo.objectName, spInfo, - file, + contentLength, + expectCheckSums, + fileType: file.type, creator: address, expectSecondarySpAddresses: [], }); @@ -66,8 +73,6 @@ export const CreateObject = () => { granter: '', }); - console.log('res', res); - const uploadRes = await client.object.uploadObject({ bucketName: createObjectInfo.bucketName, objectName: createObjectInfo.objectName, diff --git a/examples/nodejs/index.js b/examples/nodejs/index.js index f6d4c340..b57a8a1f 100644 --- a/examples/nodejs/index.js +++ b/examples/nodejs/index.js @@ -1,8 +1,26 @@ const { Client } = require('@bnb-chain/greenfield-chain-sdk'); -// import {Client} from '@bnb-chain/greenfield-chain-sdk' +const { getCheckSums } = require('@bnb-chain/greenfiled-file-handle/files'); +const fs = require('fs'); const client = Client.create('https://gnfd.qa.bnbchain.world', '9000'); +// (async () => { +// const filePath = './package.json'; +// const fileBuf = fs.readFileSync(filePath); +// const DEFAULT_SEGMENT_SIZE = 16 * 1024 * 1024; +// const DEFAULT_DATA_BLOCKS = 4; +// const DEFAULT_PARITY_BLOCKS = 2; +// const bytes = new Uint8Array(fileBuf); + +// const hashResult = await getCheckSums( +// Buffer.from(bytes).toString('hex'), +// DEFAULT_SEGMENT_SIZE, +// DEFAULT_DATA_BLOCKS, +// DEFAULT_PARITY_BLOCKS, +// ); +// console.log('hashResult', hashResult); +// })(); + (async () => { const account = await client.account.getAccount('0x1C893441AB6c1A75E01887087ea508bE8e07AAae'); diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 51c7a5be..77b6fb6c 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -12,6 +12,7 @@ "lint": "next lint" }, "dependencies": { - "@bnb-chain/greenfield-chain-sdk": "workspace:*" + "@bnb-chain/greenfield-chain-sdk": "workspace:*", + "@bnb-chain/greenfiled-file-handle": "workspace:*" } } diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index c8f16f23..47c51895 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -70,7 +70,9 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@types/jest": "^29.5.1", + "@types/mime": "^3.0.1", "jest": "^29.5.0", + "mime": "^3.0.0", "rollup": "^2.79.1", "rollup-plugin-auto-external": "^2.0.0", "rollup-plugin-node-builtins": "^2.1.2", diff --git a/packages/chain-sdk/src/api/objectt.spec.ts b/packages/chain-sdk/src/api/objectt.spec.ts new file mode 100644 index 00000000..7e787cf4 --- /dev/null +++ b/packages/chain-sdk/src/api/objectt.spec.ts @@ -0,0 +1,52 @@ +import { describe, expect, test } from '@jest/globals'; +import fs from 'fs'; +import mime from 'mime'; +import path from 'path'; +import { Client } from '../client'; +import { ACCOUNT, GREENFIELD_CHAIN_ID, GRPC_URL } from '../config.spec'; + +const client = Client.create(GRPC_URL, GREENFIELD_CHAIN_ID); + +describe('objectTx', () => { + // test('createObjectTx', async () => { + // // a file + // const filePath = './src/api/account.spec.ts'; + // const fileBuf = fs.readFileSync(filePath); + // const extame = path.extname(filePath); + // const fileType = mime.getType(extame); + // const spInfo = await selectSp(); + // const createObjectTx = await client.object.createObject({ + // bucketName: 'risk1', + // objectName: 'abcdef', + // spInfo, + // fileType: fileType || 'application/octet-stream', + // creator: ACCOUNT.address, + // expectSecondarySpAddresses: [], + // }); + // const rxRes = await createObjectTx.broadcast({ + // denom: 'BNB', + // gasLimit: 210000, + // gasPrice: '50000000000', + // payer: ACCOUNT.address, + // granter: '', + // }); + // expect(rxRes.code).toBe(0); + // }); +}); + +const selectSp = async () => { + const sps = await client.sp.getStorageProviders(); + const finalSps = (sps ?? []).filter((v: any) => v?.description?.moniker !== 'QATest'); + const selectIndex = 0; + const secondarySpAddresses = [ + ...finalSps.slice(0, selectIndex), + ...finalSps.slice(selectIndex + 1), + ].map((item) => item.operatorAddress); + const selectSpInfo = { + endpoint: finalSps[selectIndex].endpoint, + primarySpAddress: finalSps[selectIndex]?.operatorAddress, + sealAddress: finalSps[selectIndex].sealAddress, + secondarySpAddresses, + }; + return selectSpInfo; +}; diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index bd905c3c..418b147b 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -95,17 +95,16 @@ export class Objectt implements IObject { visibility = 'VISIBILITY_TYPE_PUBLIC_READ', spInfo, duration = 3000, - file, + fileType = 'application/octet-stream', redundancyType = 'REDUNDANCY_EC_TYPE', + contentLength, + expectCheckSums, }: IGetCreateObjectApproval) { try { if (!isValidUrl(spInfo.endpoint)) { throw new Error('Invalid endpoint'); } - if (!file) { - throw new Error('File is needed'); - } if (!isValidBucketName(bucketName)) { throw new Error('Error bucket name'); } @@ -115,16 +114,11 @@ export class Objectt implements IObject { if (!creator) { throw new Error('empty creator address'); } - const buffer = await file.arrayBuffer(); - const bytes = new Uint8Array(buffer); - const hashResult = await FileHandler.getPieceHashRoots(bytes); - const { contentLength, expectCheckSums } = hashResult; - const finalContentType = - file && file.type && file.type.length > 0 ? file.type : 'application/octet-stream'; + const msg: ICreateObjectMsgType = { creator: creator, object_name: objectName, - content_type: finalContentType, + content_type: fileType, payload_size: contentLength.toString(), bucket_name: bucketName, visibility, @@ -141,6 +135,7 @@ export class Objectt implements IObject { Authorization: `authTypeV2 ECDSA-secp256k1, Signature=${signature}`, 'X-Gnfd-Unsigned-Msg': unSignedMessageInHex, }); + const result = await fetchWithTimeout( url, { @@ -149,6 +144,7 @@ export class Objectt implements IObject { }, duration, ); + const { status } = result; if (!result.ok) { return { diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index 9e917204..999d338d 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -94,12 +94,14 @@ export interface IGetCreateObjectApproval { objectName: string; creator: string; visibility?: keyof typeof VisibilityType; - file: File; + fileType: string; redundancyType?: keyof typeof RedundancyType; expectSecondarySpAddresses: string[]; // endpoint?: string; spInfo: ISpInfo; duration?: number; + contentLength: number; + expectCheckSums: string[]; // hashResult?: any; } diff --git a/packages/file-handle/README.md b/packages/file-handle/README.md index d4e7bdab..b7ac81d9 100644 --- a/packages/file-handle/README.md +++ b/packages/file-handle/README.md @@ -1,3 +1,5 @@ # Greenfield Files JS SDK WASM module that handle file, such as `checksums` method. + +* [ ] Nodejs `checksums` need support pass Buffer diff --git a/packages/file-handle/package.json b/packages/file-handle/package.json index 8f5adbd9..5307d354 100644 --- a/packages/file-handle/package.json +++ b/packages/file-handle/package.json @@ -15,11 +15,16 @@ "types": "./dist/cjs/**.d.ts", "default": "./dist/cjs/index.js" } + }, + "./files": { + "default": "./dist/files-handle-wasm/cjs/node.js" } }, "browser": { "./dist/cjs/index.js": "./dist/cjs/index.js", - "./dist/esm/index.js": "./dist/esm/index.js" + "./dist/esm/index.js": "./dist/esm/index.js", + "./dist/files-handle-wasm/cjs/node.js": "./dist/files-handle-wasm/web/index.js", + "./dist/files-handle-wasm/esm/node.js": "./dist/files-handle-wasm/web/index.js" }, "scripts": { "predev": "rimraf ./dist", @@ -59,6 +64,7 @@ "jest": "^29.5.0", "rollup": "^2.79.1", "rollup-plugin-auto-external": "^2.0.0", + "rollup-plugin-copy": "^3.4.0", "rollup-plugin-node-builtins": "^2.1.2", "rollup-plugin-polyfill-node": "^0.10.2", "rollup-plugin-terser": "^7.0.2", @@ -67,4 +73,4 @@ "tslib": "^2.5.0", "typescript": "^4.9.5" } -} \ No newline at end of file +} diff --git a/packages/file-handle/rollup.config.js b/packages/file-handle/rollup.config.js index bd4a1afb..4f04f215 100644 --- a/packages/file-handle/rollup.config.js +++ b/packages/file-handle/rollup.config.js @@ -8,6 +8,7 @@ import { babel } from '@rollup/plugin-babel'; import builtins from 'rollup-plugin-node-builtins'; import nodePolyfills from 'rollup-plugin-polyfill-node'; import wasm from '@rollup/plugin-wasm'; +import copy from 'rollup-plugin-copy'; const buildConfig = ({ input = './src/index.ts', @@ -26,9 +27,6 @@ const buildConfig = ({ json(), resolve({ browser }), commonjs(), - wasm({ - targetEnv: 'auto-inline', - }), minified && terser(), ...(es5 ? [ @@ -63,6 +61,9 @@ export default async () => { plugins: [ builtins(), nodePolyfills(), + wasm({ + targetEnv: 'auto-inline', + }), resolve({ preferBuiltins: true, browser: true, @@ -82,14 +83,38 @@ export default async () => { plugins: [ autoExternal(), resolve({ + preferBuiltins: false, browser: false, }), + wasm({ + targetEnv: 'node', + }), commonjs(), + nodePolyfills(), typescript({ tsconfig: './config/tsconfig-cjs.json', declarationDir: './dist/cjs', }), ], }), + { + input: ['./src/files-handle-wasm/node.js', './src/files-handle-wasm/web.js'], + output: [ + { dir: './dist/files-handle-wasm/cjs', format: 'cjs', sourcemap: true }, + { dir: './dist/files-handle-wasm/esm', format: 'esm', sourcemap: true }, + ], + plugins: [ + wasm({ + targetEnv: 'auto-inline', + }), + copy({ + targets: [ + { src: 'src/files-handle-wasm/main.wasm', dest: 'dist/files-handle-wasm/cjs' }, + { src: 'src/files-handle-wasm/wasm_exec_node.js', dest: 'dist/files-handle-wasm/cjs' }, + { src: 'src/files-handle-wasm/wasm_exec.js', dest: 'dist/files-handle-wasm/cjs' }, + ], + }), + ], + }, ]; }; diff --git a/packages/file-handle/src/files-handle-wasm/main.wasm b/packages/file-handle/src/files-handle-wasm/main.wasm index c34b43f28f37c99e5ae7cb347e57cc15da4e1cd2..10a82571bba18447469841d79e723959bba5bf2b 100755 GIT binary patch literal 3079990 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

#_e!e0ez`B@*V0d6 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

!)k&`G3`SP%_DU+#1 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

RnLmNRa2|w7a8# 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�ZO$XvThzk3HsgXQdl!^1s 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 diff --git a/examples/nextjs/src/pages/tx.tsx b/examples/nextjs/src/pages/tx.tsx index 0bf1f746..9a537c32 100644 --- a/examples/nextjs/src/pages/tx.tsx +++ b/examples/nextjs/src/pages/tx.tsx @@ -2,6 +2,7 @@ import { Bucket } from '@/components/bucket'; import { Deposit } from '@/components/deposit'; import { Group } from '@/components/group'; import { Mirror } from '@/components/mirror'; +import { MultiMsg } from '@/components/multimsg'; import { ObjectComponent } from '@/components/object'; import { OffChainAuth } from '@/components/offchainauth'; import { Transfer } from '@/components/transfer'; @@ -39,6 +40,8 @@ export default function Tx() {
+
+ )}

E*SZRhZLG!Jk6z)N@LzX%E5M zJ46za40@HmMAIk;4Lk$j zne_Lc!nsLP|@l$;Q4#-a1r#Y^x=B%gX0gY8(Gk+xc%v1h#0 z#>$5RIKRO+8pq1PrJBUGJ|lB;Qiv&vYu9@@gEQKcg0lEJbI4mbFeqq%FG#oY%zn7y zLv%+bRz#$10XsfWXm>V`V#mz7tcPPIcoY-sYAUs0bS_KL#c?gfSWd2r{)n%6Hu^!T}l)%p7V9H^a?fz{K=VuolI%*B`c9X#NGD?*qm!xzIi2K|(?p&$Feni#A(OEgTkYp#wfBHb z7OQCwQ@3bqh@D7?f&BFm!_^by#BO~vwr#{tH8df1eMao& zII%;zOSvWhhWHX<$6JF)pm-Y>$ej=crt{}DT5^iT2ptI{pCeMAK$~G3w?Trq&#Vlg z$XIj6(ABvmISV<4ZuBuGNlG=BD||Bd>AptdvvwQ%S}#21#=hRm?bXI6aVy){A1Jij zy0KZWbYtfzTARK7lmE%@?IQJyOJ3O95AU{MS5{ud%;;aLY#f%|DTBehNGx#Dt5Ut-bPbVFx+0&{#9pGIXaDmTkMdP;%T$ zS~ejLCGVN1IJ2N#N2|TMVV4RK3lh=hd@pC%W#uHOO42YdfY-jimTkQOVfr{~rA8N? z1QUNA4h9RiTMUzj92R`}tw0yZsTFY^GD6&YHl6tc_(1b@_ z>Y)3e?snRTBrc5EIY?uekc78xed_86J3i*c_9Q)NFJ_mPChWU|@CxtldsT6Gix5L0 zI*moR%8S~fYJxbu1dyaYrl>)78Sz!O2-l!@LqW71DnvS5U)H*M(5hOC@2KYAY2$A*JcSdPWeBx2v=mOSw@PgN1r3Bzk@8mPu3G-T_?V&vrafv#x zhZMkbkGC7S1UP#Xaam8eKwiX!3K5ULlqC#oM_eB8&SI!!HG2v~Y?J;MaPva z;y%xIu!PFU`kfQ!wrbbWC%q%1V)RvRp*SFpLl}Ze;~+H7x=CwWwapC}U=+`-m?)T2 zpV2(PHdyO>Q)^E0X7jp)+*1sX*SvEggE{O-&lHV#^$#hnpg{sA?5G~o(4`4@DfYDk z$hfy-ke`9On5Tg}oUEmgr})yYqw~EZgFO8cWx?L%Pjv;pHq{D{VPh368oY&FPigJk zoGgS`JM$M?m$BVg$-qYAbJo0~gzd(X#&%WR>Iw9)?b57n#+n8(UEU)VxZc@E}@bf7pZ7){B1r5+af7#A z5Z1PLJu6`iYdu)OCk++WE6?mwOXgl?z%VAzW*^?1EI-+Q&hM1!#UssF!N9HZ!VoPU z5_$`UOi@Gh1`Ye;`FyGjxMWsT2wnps{F-E%=LP%Zb_cpcxgPXjtLq`k3d$)QjN?9v zZ|nZYaamL@lMz>YSwmJR5!qJYDz3HXe@R`5x_Rn~ac#6mSV8?RW1C`+Z}5%`V`t8i ziJ66g(+V~h8m%PQkCUxarPFy!3TghBFNmW600jeO)(H7r=wIZ%%x#kfLtX5H*`SOO z_KP+Uy4=eegu17vf`Cvd6~s1cO9ij>jtoLVqRT@Bvi0ZX)gHwNM}bY=R$(W7eL6Zx zS}D{LN%{T!FXfXqyJTy!ODF)^^}t-Mx*278d3j8zQkP}(5sx-wE1I1blI+vZi1diy zJzybQ8eArR8s?8@mT#>3kc&Mf2N`tBXjgH&DC_i|$Gm5aJ10g8KA~6WA{<3690ulr zZqYafmt#NUl?*6e0ASf>F=yy8bvv0}b|vc`jXj_?qZiRt0*fThb*2a6~6ML-q%N!P-={k3Q8c= z%y!9`P?CmS#j&2_^^G*po+Ps(#u{P5>N(Bw&d>A8*12Z*hK!H8BC25oJTM^HC%ocn zulR9S1qD|DDc}se4|_O(`Nx=dj9Tid@h-Mm*;?SJDj`5+p-ZVxe6mRy4rq(gY8JlTi1HgC=GGiC5Y9@l%T0uYJ=CeJqMkVhNB+IZwwklt0FiiO;TX3Jv!S6BurZF z^{847^lgl$Xs6$EZS^0x=L=i7ryfp(J(!ohOd&%}CW|aG)Zm{FR1dEB`ULm3OHw4C zVVyWR*;6D$fk@-72Ms%MdN|sQovrUNf+!oJza~ai^$(Uayjar~MO9ntLMU+AZP@2| zk86Xx&8?Mig*jLe3RqR4r0p6h7h-j$C)$lUNoS~lUNQ;{zu+&PxjT_&??0%{u5Ctzmf~4fRUh+{bsZrhaP1*QE z3It?HBZ-I(p^okvC@b?y| zNFw0%FZA~|8%ikIH~uX@o74w?kypwELxXswn(f72&_>@H3%$|bmxfth;_vfemOr{F zZ|A_T%#$0mPeC48{gWxGpaOW_{5J+Glv2ozvwl_jnOaN7tD z+XGfv#DGLrZLbJZA$p{tMk8~e7vhJ~EfOd`on;0j}V)DJ*bRop!vq;9UHG_hNg4zO+tW4+eZY2#xp5lI&VEu*U^7 z-9I1=zZmMe1x>B3ohEW-~!MOj9Rp331LOz z5Xl_!!UK^zMA91Kil0MqQ@q{lBRN7|%FoacZuU7Acl#WN+kIZa%YEctAG_2CSNbHE z`ruX{ETNL@(p%;es{KYT_%yf7hbo4etb#M;)$-hkd^ZW=d}hobf=g^#NbDqj28s#_ zOT5AX$y$7fD+@Y904MH1QH1Bc0rM(5ssl4NVMolyj`&T!Vq$h|<%J;(RYrhuHkeS+eS2(9PEadik9QbQ>!fc&y^$M=Q8D&s%s@y<= zyJA=laI49^bKhkXxL?I8SC`E)hP@Wj_Cr;R+5@kQN3^W}2yf-uYTgJStpqJ# z5sD^naI``djXE$y$gd?KE=rB(H`5u^K}u%?GWvDmn50CfjJOb(3j|((KiKobV3IRP zRfAEB+`iUo0})OQ<43(KCO3v6qYOP|H<$TPzN}1~*Q&%QXuy-bQceYa=lLprE;8&l zOF@eLS9#NqY15j@eIZGtER-n~kfH?IytMm7Or89oE$puGR&Di}JS@VF_qg&RmH;JS z0Xg4N{waYHXn5Ch8xJQM;gpis4|ul*Cz}1*z-ehKS(pY+w|LVAC(T)dNON?-QPmav zEy?=bYY{5F16Pe3+YvjuGAnyLg~0VICj$J`9bX12n=> z`W~tM7;7s71^fqb#X?OsouSj>l49ou5AO#FF;2AX9&=dGq-f#;;Ik%(Tl01N1CyMA=Pa0s$d0#H7f6vXf;$ur10)4 zjWu*aLj3cb8o^S-7d#ahHx>gKI9`UqS!P=^>aZwR3aB(6!aWyV=|a8C7Qy#}85B!L zuw0dBl0M((^K<1vD%^o$nq^E7HylffXAN`=#so?SASH5s*$SkV(t;%5c-aP-F7yE! zwmM#1bKL(0ChOYp|Bipy9se$-bK4pcf56?r4I)?VN%*{ptdv)2JZH9t7q%MB2i0tT z)KNzt!^GM&mmm9beqb{{?s!_w=d02Dq?1oRg`ZRL8RjQ%JAch<@p;|r7A$!E>wohN zZ+z36e{11yzvZoO`<>r?`=a0b{dc_c58n0e#eevoKYH)`{`gOp{OOC2X%ab~mX|IVtORUN^w$^Ex{dlCYNL8{2Bp)jFB7nvrI#V^jfkvYppzh*p0sZUZt8 z973v@a?T&){GmK#3-fA+lV4l1t@$7FrrG?OjE(j9)*6%j1IthC0^2Y2;SRHX$ zb%Wv6GGVb{EBn%-BnMC1Rn(I(^ozSJ>lCvb_xb87$qC~qO}twM3(t;#d;a@O+x*=qE}IH?d<`e`oQ zmx{^095C&j=xG#62-RQuG|pwqvtU}sJ?O2>Bo?R`bZTE2%db|e47#5lp{;CEtUgk2D7)=Uf!L&E>}!^tyrJ_fYn@Qdot z`T{zgU4`f({z(p9L^o9DAj2T?)^Q=FT;A=0w1S+Qc+rTY{}S)zt4jJ;64CR5O1!#? z+~`bN(fcv*71}e}-VAvR>6avfxwxqI7qya*+l{s1HC+IRqBR$!lVAyBGIuH*TX0|P zKNjxwmC^@eV%T$WtXJ7sH#PeHvA@!&)GN=aROVLttFuRS%-mA!f$+z~C-a@?cW-RM zC;qTbe1whAdWO01%WhS`g45%VWr_W?=_l;D4f7-Hu>lX6D0FN*vS zREZ_SSSl&>0DE0-g@OhJ1=azy)d6HdKc@pe*_{{UeamUY@2y_Rf_~o5N(Q62lDBy= z3;FqH7TffICTvtGAYHNBy^^&ZA~?3E*?;fwqSpRDvHgo4%D1nQs89G#uVn52BPwxC zQd8hvUeYpW{sWu;NJ~cIboh6BC2Rigt@%{O-{vK)`M;aK`Fp&QHUGEPya|XA`1g8A zYyNN8{D-C-{e51^nrFO?1Mh?W-h#0Hy5;?c{Jmk*U$N64ZOmiSb5)d$BmJ;fvQGaJ zm1LKs(EW%PwMqR&OaGJp-h#;fyygA<{@%v_XB^+PQ=ZBCs8_N`ia*6Ru4M<0>mF5Q z?2q~Ax%Oy=T#Nd?FbzdqCDrMaKIyHS59WP=*teIIKkb!FQvM@UqK}O1Y-W9yaCY&@ zFXoH-EYakjB#V7F9`vHD(Vu}nxwQB5q!jNGAM?Hqam@0rT=F-%t>{C0nt$OL+R4B0 z_CR@dYF|T9WZfh6B&nPPhZGtOLpBKB3yqMf$Gg|P^P z^~Z$7J8;wlrATO>;P2lz8rs?TCVwshY^1fY;5_$C9;{6;%=_(JMOeid)%I=H`CT+2 zT{f$nW)-eFCFkb(`vD96j`#at{Qb5-yBq(_pKl5MM%SXVKn772et!BrbfPgdD2q zvXGJ-o}6a(%wK1(JF7Y~@BOz74je%X5b&D_%Y~pD8DCh5f5QOx6dVBzGW|}SK0zuy zW99cH^4!ZE_GT_MrxjwN4j6}uW6_!B`eU6Eoj@|K42#r532y6~*1 z*ck18Es9Me30&lrjCQ|JS`{D1MH2D773)M2*O-y6)1YFr9} zzsrkS`-h;Y!|`r^Z*V-g<^48)Z*ZJT(+OBVc?--z;Y<$E5JyU(F-I4NsLv+#maESy zRYDC$)u7yWm;ecxf*LKCC@SQ%CZxLNM|^~)=+`j=GJmsKlqvX%bNug9DwFYxh^fJp zKE3YGk-#7Au)N<#Vz@#t@-%$(qh86@lKx?i%p95C{sUgr_QZ?W{?ttLL9b-()3MC< zx5|IFoAbcC`Iy(RZs_ElM!EjDSF&#CzGXLy66F1amo$uI;LkhqZ?Cack;*^E&y9U)Wn3FohP8SrQrkImpGg4s_Q5g_6VO)edgzpeG`Ckf~ zUt)XALPv8_SK}-E3IA9}6gEX>#5N|rPJ6Xn~ zxzz#kHe`<#t_Q_eY>-1@i0{QZ;Q%SHM#^aP3G9gUGed$O0D{DF66gm{gt;SYlAxzY zZ0WyYu2HXv*aP4dCMB7rwei@sm?L<0RdP3$AKfLruje<&T62kDl15pXr70U-o#&FU zRJ2HF>%5Zfx;|8jbI9$#4PMfO8O9}KcmHc%0E7derTGiJk~J?{899@N56&x8)0uRtp zDmh-}B@Kc-Z2lKhUJ-Y>SF+~mmgYRtrM$vRTJt1I4xuaky+M!x4F3Kqe{T?^@}503 zX(8kk*E${s*$~29O1Qa+CpgeJ}zMF^HOuKW6*nga!3pI~1dG!%MUP;Ve9UZ{MxJ(Mv?4-#`&2kIt9YS>uLD9n%&)KXUedN~# zWL*~D^aZB6k4-4+k2;!Ie1ya4N)TY@!LwkvdFxN9MsBK&w+b@OTQPUkr-T zZ#N&_H!K9~lr+=PpC?vZF;^eNVRHR)Y&MR{chL<#l255ijTNJKEeZgF?xdzRKeHsI6rzmP!6yq;{;53X)}Rvk$^#d`WgFj-0H(O zl1`yDyX@>dQ`7?;Ug+n!$GM*^pq z#6dqfX3Km)2%_Q#!F>3HJ9K7;)5yrN$I}2v`Czx`fE~+6&j9ckfP7wz5BT#z;L!cx z(R0D2u|jRQ^OFg8rhN#+B*rNfxpS;x-1#uw7|`2{o(UCW1{gWO6{r|?C}}V>b}|QU zS#jvhs~~oT;f>T6^z@byT{f3(PJ<7p;$`E_IJRGCR-w7lBk~Pc&sD~sybL|{1O0iC zi^Kyf1wrhkOB5Vm+<=e>Or#Kjg5m+&VJbd5gFwNd82@~ckH=ueBM32iSWY185d@$q z`3x|Zd7^3O(+Ynu;fGk3v z)IDd*s_ELF$IIR{mRka8 zcvOvd!4VNuF){gAd(J@^2HHwJ5 z_c_^F0V?Eecsj8}TB2{eCxPk1-jdNoUcZE)=jt@mN}nlI(&KPbR{C6_QViusf7~$) zh^N%u(s|(^!dJW~i!}%c9oS-3C4#v5I3Y^Sf5&Qqsn>Xz5HS8BPbxPR( zkJq(Tj#<(oW)xQWhlNVYE~o72CxuGRFK?UyemVPDWcvUYtXHUR)|kAE*~_SCO6)KI zNq&dpZdm*_tm>(RRZ;e{w1PSM8^HNuJcPjnS0M4SwC9dt5AoXy18{cm*a~6L zE$0Es@;X+d>PFJ1Tg-XiRn3SXW~p^l{XQ+IJ>5~ILmQyp)okLr5IGJCrN9Cvi|Mrkh*w)4Q+C0&r=|i`XdR;GG~=+> zt2{*|Drn>}krGwzNc$IYH!MlW@fvT)$Z?<0O%}x#HMeE7SES~@^oO!5>c!%aUHx1Mkxh$)B$M|uHS87fBJ0_R|4Ds{E9a+@sa}aAiUpo6BlJG zoCJ7=eczF7MQ}Es=6l-Q+LLaFvKZ*>-gP;@Np^@ZSs(ESe1QvQ)c@?luJ3);yI%G^ z8CA&0E89LC15i=Xh{o^FMRdb+6GXou@It`fxmh$LoMGos$2BDw+Hwo zN)Zq7ar z)F?3K3T*TOd+xQk#4DL4C3r3B32I*IB_C0;g$-BD#-Gglebo2p_}aizb{do4b3Z+^QSlg#NVuTXYq(-JNpS(X>SD|*;E{88zJxe z$=)Hz;zdW;3khc#X~qhM-K>CeL}zd)?64kSkch`ne$7Zs;{@|d)ZVWoouwiEfmCS# zF)+Ae4Ed4}T)gQ(D10j14FbjLwNX-B=^^yfSMS2ZzVH*=oEXXTm1+qOF(1gGh*UZC z4xT1ryEN{NDSXQhHL@3ZAKBYbvK(jo^gplqK0Qx?L+e1I%{&asnv~(F@LztYQkkKO zSz7=Zm$^!Yt5+^P)iDJM)F4smKOn%l z9x>EMqbvRIJ$uPpBL=`8q96Jnt4bG4u%=$9YN1#|^_~&EB~#Me;z%hV*M@@pEWs2S zlN$3Q_bnPUV+BJQwLT3esI{_LEGMWnOw=NwVMqcDNbw<1p$e#qSrG(P$TO|IeBbbRpH^A#!%Oo`0E`8Ay|2xG)w?wCnQW#@U04TGl z$|VFFW4190L72i^xYfsN=0b`fz@I=z!dGEb`V{P`QHD-}n2^kc#bgDe(H-7Zi=`Gp7gZ^#eJtGcQB>p^#M$QZf1}zOM=! z>0BS9x$rg7k!FHWag2(nIp{fp#f5aAtGyAMD7+4!m9*}|(xldUN!vo-gQ+rNYepH- zpm;{OGt1fbzrv|8W09ye5Wx_ffW9l_mt>ou7X4l9qS;(bvj}*n>O7rtiLNq)MJ+c3 zaL4R&k!VZyRQ|`){-gAY(6AK6*+D1C4Ov0c6e6t**3V1#c*n^jJhwP(r*lR(5hpxG)B$<0nJ7v=ON2D_ zS0l?rJc%L8*cp{DEW9FN zG7{wCmZ-aEV&D9MD*rhg?}luWm|%|(%!Sg+&!r5$Sdl|-XO2UN;vv12d`CrQf|Y| zQ`{60*EQqnJ`3bc>p1dW+x4tf36Nc+goD6CcL2z)i9nMiPo~Y*9i>-~GKE=WpCw*>V(yEBJOq%pl7)88Wx2$JaSEuMY3Up<}Z;g+_ zaE=y00ZKP^2aE~iPK4X(aQW4{^$3;Fc3K2T+o3>&G9v#5%C119l`*C7wb9enL{WO9 zVXOR;Zj$wd0Z&iiFD%sYP4aDe%lF1_R!bxn|BX#_Yy~@rm)7B9&NPquU|1tBuzLRf z$ZE`sRxDp!`yIA6*2Zh7+G`}&}dYn#g|GkqdI^FjVgZQY-RWR`+JxLdj=AnF<=8JuNb5O_ZI&3 zAYg-bJN&QS{m;wc(U)q7!DBfzN^c-@yA#VG_n>%3b_$Lx;1xw2sIW34hFMT8gdNNR zFKA9iuv=^3#r}8*El$HN75)JEmrqQ!du|1rj#W3IW@-sc2T`}=l&aQ0qnKE@n#yylo= zj(HHht4aM4R7Ad1-Z{bziS`ipCx*B`fiA=T#7TI|Z3Mg_k0 z=1Pj!rrlyXNn>uNTWXb!qaLIx6kSLcnH&)6&ZU=RT*{Mgc6yLX0&%GlH^jw&Ef?~8 zpO?rg|bGLxN(qL4B|-Eku=EVN1ZY|Cihb_t3# z-s$7IuLh(>ZwL*zB&{93@8bGA7}Rp}a-X(1TI0bN=)=mMPGACU;B|p#ox}6j3J*QL z!8`LJ;Zb!Dj!diy?v7$15|kLIR-%JN3Q@Vh_XBbAXRu`_7;@H!1c(;HRYis3rS2@I zZY4d(edGNP&LUNUCPx~kR=9;IA@mkG&(!&PdlyjEWqrIUBTxFgV3w$j)hJ|-#S-xj zf&1`|QGy{aW(y-nAXkn*N-l25hszK3ID5{jNy$^F&`tnm>w zf`AiPPPS*oJya4J-f&bjtSILQHaC^9@hW?6GzRJy}CqkBsw6ApP3c~S7+45MZwI}hFCLD+#vp&Bc=>UA*VPFpH_aA;$oLZanPVC z#SIxv(U<|zfZWs~f!U1?Be~H}qvS^QCEJe!LZ)0BVBk%83piod4E^c((AWbE_JLtk zjAN%z9tUFwa|~)@*4BeyByn!ZFZ9<*ybvjzB#g~;Yn6|!RS6-gZ511$sUZfIFj~;W zI!b&YKqzjk15CXgi40=9@$KNYF^a8LnoY|}U$?cgTk1t(NgPZAE6Ns3f^L#&b4DwS z>#*CJNi_ML%#)p1!DhOjT2hLZHQ#7i)8r8)E4(4w3nh@!4(D^f+M4#ZEX18WT6YI> zW9~$A?%%Ya2kP&|2G<=%jEU*dlJId(aTlq+CBq#fs4RvE-{1?ZthHkeL*8IOo?^=# z;VV0_=xZgObbuwrtUxRz6>+*9HoBENQ^aJ;P!$MeK~5*+6Q zI@O6aavZmXs2ndVy=XTalLJ@_Se;huM{vyFa?>ya&2N3=mPZc0pm_5%?fj;-`48kf7vvl7699&~knU|6TIKAeUnMXGgRE#2+{VJ% zQ2dB=B~fVhnG|g?+!kgT!$e8=bbVidk;h~k^iQYCACt{_V*C8cV;hhbCvx$#tP?98E7E6)h&P7$N+>-YF24YlV)eUl`X%Fs)n5Hp zm0mwj_N(h@y%*J<-hrM($<1Z;er>+ZIOGg{xa&P!d!3lGWGOmY~78@DwhK_5z=5|E~^M}F}B30vQ zmva+GD&v68zyg9W(|N^{FA_3KH~3(icP1c`;$ZCD^6%g@;-=}!lygb+4Zek%C$qh7 zbTCXRFgqyXf*8F)e;J$OUocvN|Mncw*L2mLYR~4i2jjC->{+`#5TCtKsG7A$=MNQaQRR|-_YKq_ z@GetSvcW~HOa+3gE=CTXKqh8hV#}P+9p>sHEOHU->$|hbXB-X2CMT0kI8t>|xuJHS z7gda%wBHz$+XhaQYP=%ZERgz`sR~*jW*88&_@sFK93L`g4<81^%EROAVZf|BM2-S* zNEx+qtL1AG)Jn;PtnRp-ByQ&ea^BeiyI%QI_c9$tUvm^asg65V2?6>Qlj#vJZrp$% zzW`pJ&HPU|!Vy4&7ZyN#E>`uJApCicoFxUAdRO>4qEw$`4M|l{3O+@Ra}0L+9s9r{ znated@LVz^@`X8hK!!ryV#>`E{*td}OAIbT1kEIUirpgCub93FcfIvZ$knw+%`Nug zXR#9ko=u%q$oW@}2CO>Ph1B*sAWCY?r2{z7Z(vb?Zk6*j?K6304d^RZ#;#35D^8$Bd9^Jg+Kjjr)(N$CZvllhd%xG|2^TSKT9j5vyuu}M6JA?kG-tski zB#Dm7gDA+Ex*rP%EI7iw+RI4c^fY3#gVK{ytu2@CP}~Sl49}hDuoT_;B*u0(ZL{jb zQFq&rSjC5AfOZ+ukPJiSq{xS~&Re!2(OcDJNEZ`W*hKY1q6Ebu{PirPo=(BI>D(6p z+hrBlxcHK2#UL@Lva(6K!fV+gT$aK*MGeN>(;UU0gohFl@_m4yY z55D z%NnQPh&@^@YKDD9rK~JWYuC?pJ|RG>`&7zWwr3Rwc#St-IZ?lHW|9Iiy%fX*KPT3a zN=)4M2adWB(9Vp2I3BOMUt~%b zqEJe&CyI-FfEA*+l83@(BWGIUB5T@09uzlv(`Jw~np%PTDL}On%S5MDy=Cu#j9?_Z zwbN(2xSITKqJgT<&jpVaNuU{L5Xk_ARy4>#^@^Ux%XQ3T$9ozSGl<#?KFF}3&{bBA zh+E+`)tAW;LBhdrNtcI2dqUKx|F$frbjdMpMjx}9P_cn_&TO55!RR3-nInR-Auuv6 zxzga^onwJ<8!PuW!dS62W_gKR{;YP0pH_OO$QK8+tZI}+mgt|73+bbvnC*o{2LSWk=ItT3MVAmdG@+ z2*{q96?jklDVAOs-L5v%2Va;;apOwCIVD!Zkb z$OiJiNPs>_0LUd{@^|)+r>Za@#FI~RFUnH>Sn}y%Zp*98Gy(@;rqz5rlZINfv{Q+i zoz}TkWhd&>RBpYZVxZcNYVbqlM)Adu={N?rbsy1#naC0c|CmTD(egDiWO*l6QW-+p zH7kkI07eccCSRSe^lHYA1Ph9wqO+#Gq;Vok!g`{VVnh=B9Xw}LC#8JDB{C}=V`}Gu zOWFVq)HSb;S0%|^&Pf+JFvhC1X&`G;9U3?lauiG;nv$d`bRb$WFlxREyWCqhKBa?u zVr;)TdQ=<5n z;(R+U^98M;dN%KDxp(%Ab|#zhbf(aYJ-V~PF6@HCzo)6JP~4=i6U_1b-BqNc(E#th0*;QH`;Fx!&AY+x>2fHe8U z>&I9)3vlq$#aXNlUxYJkF+@V~e8a)ObFUpviu1aEn1K@-@)0Xf=0MKX>VaCOHkF+T z>`icUB2Lf5p1Mnwvni4@@_WLa%4KtJLGEbA{mP-bO~=c-&s?=A@CYLdPE>R05}`cq z*jgZ`nfMc~6wFEtccOy)kZ}VyR2%l4_LvgBMk|4wo(sQ6spM13bS!GwuGu&=`Y?D- z8Tqh=A%E=`~a;_Kx2TPiL(j_ z*Hl2z$_9e=sU6*2+x6bo1vL<;60h`zdz7;QQ$)wXXm4*<39|2PS$~RFl(C_zpQL84 zZt`AIt-q)C(&fmUWZ<0IZ}yfd7Vd3SM)g7xVo;;LMDJsSU6jz{0U4GQKY{yPZ>i@q}sDv#jQKiY*DYv zcx>96s`w=Dr>~$MTXl-Wp8=Oi>KL)3cq&WMHGr>@4-+%;!>rl-98MjRD4EJ~V^4;D zQ81%ooRcW?(DbQJtPoX7Fg(YK4V8q)(_UT;d1is6GhmQsKN!kNZ@f%VvY8NdvcZAi z^w{lBQppbK8B8)B7LkKxby3%_Bx}Ob2{?vWJP)S?7uXQHb@t%J-nouJ{rKP&#J|y{ z!J)hv-7}mY;aDPXxFQhe1q{+m;$7zL84f9iQEs8YvzU?_07td9$;wx6={;nwXtaa7 zY4xirJyBnakL{Eeu5)XicP9Q+?1pRWswp!DJc)N0FsraozG_&M9^%r9X66pYO&5XC zH0X>%zGPDKV2K`K=bU6*b+cFhM`cj=CZ`}^X;?ztN4?&dEfECOdGr!4aR}hqlt?%v z{Eb_QD2|%nF}oiUl;MjRsXE&vKCA~Sn8ck5S-S(At3{35n_{D~9&A)RDxUabI9p^o zWu0C_u4ct9TwwlXGd|${QX?1A+k0XluA4E1nKxF;UH< z1IXANg+-ocYN``!7*=%ykjPw8D=cDpWi$#S3Jc*dMtsBk1dkNkc79WB8zsCvxzRfB z_pLJPG_r-*z*#&Z&?+{g1@IZdB)Hb$88pqU0TBTAvBXYC>lLX$is^ zL(Y(RC05;S`!XMFJlJT=U{)zvx*Ji)Dr?(7|v48&>dt5{Gy93#(Uf{u=niAP<~eK6DLlbu+@1RZOT4bD#3 z06)*MpRik^NFmPf>RfxpHD3^JkT87pL3>3(q=dV_E8}GjpskE`g|igqOIwy`w3g|? z#BbSX913%e?(vYZ5CWEBqL%B!s+Gi%^B3}J2b@-B?Hjy=rkn4un=YH_Ip+FwRdv{n zRo7#Z#Xt{UriKZ;zK(6iOkWVq|FnPf6QIod}UT)wPDV(3uN_)T}a$7;EAb6x4oS;{l);dr-Zf8rC{&d&IBi?{cju5Q(@ zR^R)LUfN)li(UXJVqal8Ma7&c>8MqxaDuFMZR1$G**n;$;NaqzlL38DYWeEyHm_jt zvt%iMa>-+>9@z*_>4ria(xFxTtV{``Q!${q56T-tUF4c3*y1lzJ%Rq zhUIS4wW1R%nbz0#vCQwP^6v8N zHD1YNnQ(edx@O_@7b?kgcK%HyS?qc?lI*9*zP`H*i5iGxmhsyWp$-zV(_cHQp(`-s-6Q?6%|wxv-}`RaYWxBEtEmugHDaM;Xi zVRAGMs@6eR7sIV4?;{9asG%dJsQt$6+Wp3DtT8igW6>&ZId5YrdaF2PiHz!y#4*5o zpwaq0t|WqsE+TWNA)lUWi46fH<4##iB;1)%=VT{Vh?2>uQ`ysn?Fuid7^DRuv7R8! z?Q~_C9fynmu*1=}Rr4n(yZ33*kQ(L|arC#{$Ot4PQ4R1YV(+ZGP`V@=w&(%n$~vZ; z?8FK-Y*qmCin%#tUtv1pxJJ}pfuZ-{0(Xdj#^+U^3VHxOj}pJYZTzej#_t)-9Xc4|5Kr1B912Y(Y4DXTR5|& z{$0&T^-}toy4XRR0!EA^>G4V~Rn7N?Cp)o%%?&GXJ6P7e;j1`LpwnUn#KW1GE z!68@p1lit#hUTV+ltZSrQ0J;j9S__8%pfRowi)V!tpa*Pc)Ub>26{At?hH_%g?;@j~VJ zZDl)tQ>BjZPXvf+M(5f4xw2Bn`RB2tz&~>i;N3-m$Np{pg0n9Oh7L>}J0mRdcS!_Z zP&-F*PcdvKj?7#VbWfR<;ZWcZ8Vulg^k{ZNu=M@axN8?3d3hoL9V8Mzl#Me z-h@`-5Z?uJP?YLfHpZHsud4KXR?@Qs+Gx*`0fk?Ahb$szL?$re_f!1OITp$&5=kj?ytND4fM&cMfmmZq`ALmbMN8hX^}fw|zk+(m=*nz0glLXr=0H|*CUQOReAXo3sLcDO zH2D=15WExBAhr|g3KlM{S`H(lv|D|yEJw#LvxzVo34oH}Dl9D-*;9n@mqIy8!69%8 zo-IkSz61qC-|*@ZBIHRH`2{=;6DhM8E59R5;3+8f4pz2$-(tPDXZ6T3+G)WdW0<2j z^a9hY4+!bwitjC`#dJt`AW+M#UlVvBqZ6pZK#{pLd=*mUbO7yA?VId<9M!-l=R<`8 z-RI*jDG(2DFh*W&7^1+dOt4Jp9L&m`NCkhz>ThFpHVWDzeaUQ+6b6&2M9!5tl5j=R z+MG#1YqGwHX5|q+ zK3yks+!)|qK3gn!3si50-ncP@E$v3De6Z8uH9j~^8yDhtEZEva0Tod;%6SDv3s`c+ znIvW+sH5kTOoWGkZT_B5Ifws101_z}%8;}BNnNzWK#ZUf^7sHqNw6`F_Z+*nB1FUX zPDdisQJB&iBBKtWh15+H07a_|%ynFM&CGIAu0l74sq4814@1Pp!^Gt%re$)Plc z;%2GwWF=~dI@7ObgS}}qE@~WSYV#|crIRzg*+SALJboPodFVCtjmT20tGM#rRkJ@^ zrpby$_SIx`xN3J_*B zb7pz8Qf;ABOQ|@o^O)B$AT@X?U8?1E9)4Q9Q-Mt>%pnNV=6!^IC!Q~M}lm6*7;tg4xJRGEI}2f*jK3|NpgGwf8Ygd_eA!US6z{Y z2){I=lplJfWM4VTgM_C3kC%K%8BBJBdIzfglUGW1gxEY}Oo?QF>?N&vdg_XM?@u?J za$5RluVl@acZ8q!_qHL#9pPf*b?NTK@fjpP@k*85i!Fy>Z5KjH(w&;t`2PIEn(Fr( z_%yMg!pCw6l=3dwW!P9~^8#8PnUzzsJkTVcBltOzAGt#3<&xr4vwXf%KS=e7!FKVw zY{?c*j31nMP8Uv`o=!7cnM`(K6N?xEcUrK0$$ufNZ$JfPpGk>%Ib-uv?Rxyh+mra$_hTFYIGZ!_=@hn&`VLH!A29V?PPOq~7c4lYxh&IKBx$(z-E!0Rp+0y!w+p_3mf`l6RLPNDdR93N>-$Z`oM#tceu zHP0cJ#QVcuU1^cUeSng}C*mO7-R`>W8+mozGQ~@8swv=t zvq?dt$tO#R_f5j8(C zpOBhVCQI-Ka%kKr^Mg<~8DU=P{i+P60tnrbSVoKEr`bIBdc;zdT+8xie&0y{#B1@K zk>=ZrPLj@cUk!20rcB@=l|#+|*E*Pro+AaX0Z?3%-kt_}`zd_F;Y=)WN$heSw-tpt z&WJ7qR@47$QMlu4zYs$lh4;MEd{jd0krt@p|C;)!J$8b9jrylz^g{fndFMWyTDHxC^yk;3&I-s2S)nO-q4$9vS;>9y3bmGcVq>70vacBbBdMH%Gx zdsF5O5LZp{>=)8nr)0H0SE(h=8qV*qPJTP}*L~58r>>jF9!Z@a>Lhg9_>x!3TsOlR zG+*|TcDh?!H#`42ZT_IF(nDS;bKSJFl3($XwTH)d`}^9nLl67=)JyZsvJ}G$vQEG1 zl`38u$q^UA$;)0ENM;G!<3=`hOBZpvBZxQ?r!&T{#R?`(S%G3CXM|;)SaMra2wDTu z^hy(MxW(Wzi!#x1*TjMPavb8X*rcdcSB z60>MiYCZk~e&;siBU+E`c0uu-8H(kshDS!`u{x8TSiw;2*WHzk6wSlpe6qr8Y7!Iz z1p%LF#Az>P9k85~lqra^Ehm3mClrRVRi~7jAzd?#{*akQ>xnZUF`^Q;(DMWHfyqW` zHfWGvcdXtOKrzCVLk_(HFJlE8v|P38l&exXUl6b8#A?S25vwNzAy=l6shXH8QKa5X z#MExm$Y4qxpR~2!Ln;w(SeH7pb2+!pD`gUK9+pR$0NLP$XD<|St4~01A`~kI^~GMS zRw8cn_q7u75`Ujc#Hl;d(Z4(!(4}6fA`#zJVpK3`v(fBMME8U-8W9OS`z_%TBK)=4 zl5r&FVGy!rp5XPV3>YGt1lr6^drUo+15s zz?LpgqEAD*ZMVw#?c;LIZgXIU`$R*~Ttbyi2VG$O)H0vpP8Cy5`$$I~0J05StgVS} zxuMmk`35g%d@C05s-Aqi#VeH<3wN|;G=8I(td;*a`TJVN+UoC9#`>FUdNI~EuT){I zXJ;?1!BBQkyu?uSIfpX_oMjW-UD;??mUDuUBO7h>K9!Bs$)^4+7&p#Fa{b`TLBB#@b;mnusO}1He)d#%rB|AP>aOyV zwN!VtzptgbYyAD}sqQ0QsX}!R&v@2vcKN6t476nSh@A2Br9y7WPj+GjBR*E3OGh0| z_=cb=ux#;(n{a9`IH-ACMNVwUdnwO-?IBr_=_*Z9Aa>-bwg|;ABu#T4>ij}3WQK%g z_9zJ=uUiFRv3AGbri`55>$J+@ub}jjnHd=jj2oTI*b-->{LglbWY>uNtN826zq+vRyDGT~9WAF$JTRhKPU8y&kj|8cLB@vTd7g8%bvD1HSm^-<+GfWXW zWn*w8cY%48S2vh3X)1FnYJOc!S-7JR{?;n?EyS$v!5&GM$-C=ca)a&?Z_N@H=wh~d z*tZ)zo4f^sy^rp(nc>le_)|<~{#y_^psL?6- zzXYgo%kgChO-YUf%*UYsoC*L5Vjk<#Y<@jZo^ksqsdcZ1rkq`YNqWcI>zCl2AOEunl?rfXd8TgA7f z*oGUC(A6c3wS+r8ENMn$2r|k&q}&Fu6)pHR-ta25@MU9QZ{6->KRaVED|&)!4AHT& zM!Ju9!j+Eg{`vg`eg2%H)21(<3Gmg)j=e<0I&iEUAc7I;%1&Y$ZG9~EXl1Ru!9o0? zx=$G6BWG998!;ChQ`j(&({y}}_*psL#Q-1K^^M!IXLBEpaTtQGr5Yu^7;{8`;Xlt! z{!1JHqaSPmQ*JDsKai2y@O1Gu1VJ+uFr$gs!=clHG6}ZFY6S@63jM9RG_a5&|$1B-v zIe}(@V5wx!mFOJ`i(MitIOuc0NBV0vvt!%T#Mlx+kQ}R^^MUiq z|1B0Y@!PmCD4)oIR95LS|3a>?v3}Os zBH;nY)unn~lBZz_+qp$mfPBtNn*iakAdYKvTj>l7pw2q}f;VM>zcJsnZd*meKsSV3 ziha>*mQM9)54sZU3}xMY*(+VDqEC;-CUjJVakp2xTr2sxzH9rU6Rn$yg{qYFG);-u zVOXcSA?$*7M(VV?sl7)twZ~a8BMq}t?5SR+xvUfG=<1tOgM86K;&#I&8M$~4$tg1I z;I5F+pE(>5`&Hk~dM~QoaH%Xv=N=@PlBof;-_oi6McW!a_LI8E6c0Dw=*l^!t8p7HNUwI}l#Ln<^C=U!%`wz*Pmeku+ z*`3F=455b|iHIpS-<-mALN;6Ly;fzmw$3zLHdhcZlr8kh^tyWP=>VS5G;tqOJs^8q zeqX?3C)W7nfRL!IoHIKJne9W%adMIz8fvsza3-+}8A03GSJ%*1OJ$X8>uTOngb3@z za-Fs=Vmb|;%S{Wcs=zQfH-UkDlDsJN`$WahgW)6>3}9cc52@^^^5&&2uFt!yT>+}B z+1yM#)m&j=V)`23qV9~dH=xWWqcyj9oQn%_=5|@rez+5B8KPnQGo2Vh8;i||E#8V* z42o7%@g>V{%X=!s-A#8FprweO8lR?N0P$!rF^B1Yp;#C<{BL{e>ZB*TYMv$$d zXH#6|A_!2;;&Qxwp>4w*RZ#R`m{CX34CalPR8ubqY`QLX;zn(Jf|rI4pB`Qs(nqa? zcj<=A)&Z~zD<6PSKN}kV8IKyA0+TW7HAO-?>Ihh6)IUyLe(rg|EYFz8?73{T)Q<52 zL{3H;nDofyffyO%ke_Or?8L?{R>4e%j2gsh3DxAdlr_}$;&`Teub4?I?A0F zdu8b^#|>3ptJrykhSC`R*lWfsQx4uWy5uFN@kBigjjX_Fqb2i@zdjBbV7 zGVrDxycdA`IJ5(Z`(+0b_pz}9jr$&SzaO}d;JpCc$GQg)_tOUw_pz}9jr$&SkIXPo zle41x2;K|8eXM%`aliIJ;yyNZpmE=W?)L-t5xf_G`&jn?;(o({#C>e+K;ym#-K+O? zR&*c1djYtQbq^r!FFBC7kBuE@-1ngS{lI+$?*-sK);)l@-*g~x9~(Q+xbH#ty2~;v zx{u(!0NlsA2N3sHA4uHC#tt;@d(i!U;68%)0&pMe9zfi0K9IPNjU8y*_n`ZM+1oi0 zycdA`SoZ+pe#?QxeQfM!i2K3W<357-0&pMe9zfi0JCL}Kjr|O9KWFy1kKnxk+{d~( z?pM;6R=;%vf7;ADTDN5rknCvb{#D}VEB^Mj)UoigY~_yQqMWEQXHMKOQ_`}swI3y;86J5_OG}mG6QF2 zS8&ArkDb_2e32Hi>l{~k&F{^LyRcnC{ced&!Jzw`Db{#X6+igop&;3Rjfgxiwgew{r4LlYQsiD3}SzE4>$s zrw9>zxTueAeQqQpNRDx7eG_j&)3}RNfM6sWfH?zTQ;Lj0boMh7B_i@P%nH$E z4162RHaSO7m>B^FG)wiw0{q4mqD)kpY^UB}@cDKs8v7voY!65hOy+N8lppp=v7dPE z#Ig8&6k>iycoV!%95>3DkJj#h57}4>y#xLvR6rnJ1^>4=W^9sP#XY)s2R!THNIV|t z9q@>F0vaHVm;@Ln+u>pB{8N57d51T;Q+H6}!FItB8!6Mu9bUu0Ks?%@?B_sa$$g4j z8M;WU)m}Nw zelSm?%ymqZycsA#T$$EYX!~W_MMuS^@CE|)N{B@EO^ z6Uli=E=aGd_Z~dJ_&Gh%4x}(kLw^Rp{Gc7=dJUE2CVtU)@L1q zKhoF(&V7vc1PjSIQckbNcZy;`ws<@_4e5n;+=Sh5MkERG+)D`MYz8<^qW#aAxS!9s zbBxeV9{KaW@6R!SB1_1an1B|L&l(!0C)vHgBN*ekz%vs&Gqw*=z~%lWSdY4NK=`R4 zERRh{GF;N}7s?$=DT(}U7BxcV%Z?(8h|+z-@d%sTi`$&55daSjLkIm^B%+6oI;VjT zw35UVK^f&AIsZ9~)Kqd6HM1Aa!!6WEMs-xsPEbq;6F(N|m}pA+$U-AN~%bTU7$ z$7c))<==QpqK`OF=VW|8*|{gv5pPO4j9kSy0H*(CZR4gnc=SenQel^s)?yT;QV+2L z#>cdx-oWOZzE(L9H>nZ1DD($&$LjGelh>E)t@V0awcg30-l9fRQl+<1>vc)gLs{x= z@CHoky{@Y&4q9rw5+QwQO)I98$%~>GC2xK@<|}F{Rg}ZkHHAz$tH_ZILR4`lLhLbA z7ylCYkbGSMXIViU}f#GueX=R!%S6^9J;RFzQo z?LkraU#8Y!x?-lEpFh+d6pHu`pE8Di4z3h{0+~NZJ%$^S%4+037GwN7EESrZn(qg< z)C`tY_yZY!6bJx?{=~d{iVZR19oQbC?iw(uBl%33O|w4}oL{IQX*d_0au9%V?){?Z zgApPo1_qW0z`rQNC)NrAoaca<8R3s6BqN=jB3aVS%KoauWL7q7LRV+7f8ER31eeXK zR(|Io99@&0SlgD@G1BP;K=MFONbZ{3mwJyu^UD>dhbu0$WSv0l;mPz^xW)G`GF;8`3BR8s% z!D6&a%C^KZFK0|;vBp?%31i77(h?w6%Ra6QntXHG~KbnY;DDJURM>?V)H6? z`b+SZc^vvgzRr`p4oEA~hoHT(gxz3(Ma3rqYhEI+O$ChN9uY1+CG|9gBi76~3pYB^ zLRUD?g9}4aEaAwx4A|P0QgR>%*1@RGR=Z}>E_FP8R40vpW6WaS}ZRm9&I;Z)a?aQ|Ms^jhw{YI##vRNU5`bTKs5x z8dZN{*6p?4ZN(Y)#e=}4FD4%^m=rk?G<%I@6p;nYVZ7Q7d3AZ|70}UzM;{FMFd-;B zx;q?brC!GhdVBGD$iT1zx~qX7cl{&`n6Gq$j{c+8L?31i9g;7Q$QxfwnUe?TG7+CU z8HUCg3JuedAigdVVZ1wGTnTFoe_)rw_gd_{B^aVKP<4r}2U^r{b?LmK6Nj}$?P5({ z4g(f)fN4^=G>FGI!I08F^QH)wR`@?O+>v18G(uTcsdbavk?5u#R7h6NU~4IMGm`7ho)lbF&%)K2kOQ6 z^4@VoB$vsTc-uBNMq-jgzGiMNvkKL@;Q^EvG&h$!3^q4BnKHY%;eBg%^d!v9QFx>q z7}dGC%DSqX8x13OPW1`6#sS=<`wA?J6s)xpF4}0p2h_Kz62&1%%c3jm|nC!#~Mloh8P+(Cuh%Dgo9C7d( zS2{A6d;MD!D}+sL4Aw6jCM&$O^(HpMqQ)Dj|Je)8g~Sj?rid^e%fljROgDT}b5#j} znzzznTJ4oA4+{m2zhC3;EqjXPhnfdVL?E#Y*lDHpUdbS##3+8!Gx6tzUdbSlEPs)v zHu!skgt9=fhf{6g>+p;M@gi?%tqMdM8Ej}#V@$kHJoyP5BOTI4uVh0a(-+tOW1138 z?S4ldGH8Suu_2MY{r#o>-i9O$?FBCP0@f?p+utL>M(Ch6_stdl-Z~KWtvPFoR%@Qx znJaGB)+dn$?;+VuJY)&ry0F^U1Dxq*^_ZMPCGM9P^Uwsaz1s1SKDfnXUg5NsV|4@` zN+M&FWu4f#F$&j^CbR6=nVC zrEIe#KEv1#u^LRZcGAme@_h{7dG;-2N`Dno+LZjLJZ>Kj+*^Y6kZ4k@bZ9uFqOp(Me}Nr` zqmDkBd*N+dRcm+EcIQl;E+>x@QFLOb+VMsnl&L}vQOWV#>j{*QRWB6|ga=+Xc09pM zcPUM#6!$lqIG#-yed$U7J=d8Q)oxZ+x*1h)&;bqgvNB!Wqx8^7Kd2GH|HMLb=NG6-!4SL0yN~R?` zRvgIOnwRV{@@OFnN$Q;-aU@c$3q{O=YB(QqgbxG`4oTbkkdBOY zs#do;8n>jrBT+|`=VO)C#5S+uwjnnELDj8nQN_&(UCvV0wI{eUAz5VFnR8~lwV9gi zOKQpcW0l^yYz5PxG-9|&-Xtw3(A;zwtGQ&g@y-2Ukr6nQVh7KPKrsxGub>&y{=9@&~03Fp{{0Sy5H{pE*2=^pg2lnJgi-s>Nf@dq0GKp*qNy?^RqOB;#^ z0Kdu*JOAAKXOcJ#OVj&JUW1PWrUhkuyxttotK)HNJdobSXxU`&aN?v9s}BWCrH_!E@ldE{?`!(32*}h zZoq(pswHp(0B(T5eU+t8o+~b-lL(wPA{PapghmXRi=hldpcn=yQnd{ac;ET+=VU7X z>I!C0;^pGR>>R?>PT{dc4p8?nJ&pk=CjxHy<%l{1k70UoGBrsb;|50geozK1k^r#* zOxNb~Fme#UJ7{YD!89jE4hE8;vH5z?Ffq_Rm~w=c0c;-($yB6hyD)6dFFuD&onJ9+ zZmo>-IO=w~7-buM3HBZsbHtc{RP@7g0AR(3mQT^ZAPBq&@z{WCs_1zW8fiderIK-n zb?N%Cjo|iI#7W|GWH4`!O{c7{36E z$gHJPF(`{j7{%l-q7O&zv>L%om3PN^Q>9#n%)V(N%$qnJj}ZNc_7-Ex66J7r1qC*Q zXsJ`J(##^ijIq}*ki^Bzf@;(Cb(=KIRUp=7iyE&m1MyWLA-dtA5|GCRO1+0UrrbCb zxpBz2aRK_m^>UFo#pvT56vQQ_ttYWz}yZgsg%@qZx1+9zs+o$=VO2ga>OD5#uN&(4jH)GFV z^Lo~E=74&{3)qlE+dF8FRthlZ6MXJ;?DrV+V_wgC7H#bfKkfyrXIIQmGI8&09k)=W zN77ZHH$C#IN81wym|ZmB(?Oq^29z6*!Wjop?9%NdbmiAG8i#?(sgQV~Y&I{*?G&22 zT`A%vDc>m{Ks}0Pl-N0$H*}$12-#>RKJlcyf4I_Gb}1y4P!Q&4JK=5i!L%u%6W%0Z zo0Qtgr~s~;l=EnjS_2J7@py@BRM&^9TR_Kb-T2|M5Tl=l}Bm{?~K==)e8<|MAEC{K^0K z!9V@8|9Rf|7ksGG{BU!!In`X&T;5#KT-ls%u4=Asu4%4qu4}GuUg$Z;u%G_UvOA~K z*&Ddo1j9uvKCz=I9%Tp<=(dXPpY&SB9jwK&;i%B9P0;a%Ciq+vYsI@+p~XSv*Yh<1 zLstw!K}ad;?r!SKwS2ig)P1y^lxvDF*GbLo#dFZ6a4j!3*D^0yC7aw8BFU%i!A?G? z1eZ=%MuB!ISvH`WjJz$?k_!*dO{5UVLHW2Az@RiM0v`GyxY@g!2(f3W@L6Y_1|bJ= zQtS)4J8fs_%vMRZY;ZV7#jm5+aYrT`>^>I|2f@8w~uGn!DJWyHy4Fw4jrl z*K|CE?KfFotO&0lc_?maZi^t}`H$s%$(d`%Lkh3J<7Iq|a|iI)EJ{@a5ynNuq*ha( z4R=~Q#1*hy7HwB$n3B#VWQTo!sABEW;J!crQd6&u-{-O6JXB|M)^IYXu-iBuI{6sy zI58h>{7+ITkwXi5bb`LMKa~|)I;~r>HesIUc)!u{exu_3gStHW6CzRLH;4tS%gSc# zD0=)88CXJNC*a}#;95+{E`{ZmDlBl;oueQj;*blHvkjZnNes08?;K!Ttw~0coVm zymOC%5Tp#}_Ke0c(gncPtz8gBJ3N8wUI_yZS>bP4-2D3r5cKi=K?=k?b@2VZK(VyK zYxib=B&4mYSt2{0U%H#~NG?U5VTAw^E?ndRg=P1!x`vN{H~m z9B7_qBNvKiQ%O1%>_g{#h_h~BSOly27(;8p%ajVw&bpc0YJckYp z%ft2@xL#ZvcsKeYX|cC< zHX)CBOE;@f=~eohUiwp7`dt7t1MYDzWWcdd;4c_6H9KJ~z}=q)$9<0@{}o_cl^mu- zp1jkZh~{~UWqw(naOC|HPw>GnakSv3#n?vD$=s`tQ|*_l7K!lxMKqgS|k#22v3#Um}n%tQ%Dv4?0}k$Y@`xQ~!dL`W%bOOr{`QY?ASe`4x zG9e`w)AEVkFV=N&o21(U7oF~FPW+eyc%uwp93mBi#nugAA?EaVcX)p4O&dIHs95#c6dvp@HBw2@ z`EXoP7(8;?t@!?Ddexe&)PnChZFZR#un3-$2}|!#sO4VC;)dWePNeY)e{W$uufu!d zCaxj4y@%hjgh;Ed^r{y8bYiLLX@76Moh$A_&7Hyl={@y_2wtR8p<`j#$ z+ii_kGTe&`+9_CqEMw*Lx+yB3!-6P%iZM1}a^)v%=yAuWDH2Zo0#Jk-s;1 zM@sK6_V4_-O%KwswXty3IY zBfn*8>vAt=YRk%jNvn(QE9y#91Mg}=dWon$OEmKCCiOdIHr(zG)m2{KhRTa{2-jIM zJ`H-tPsoQ7LtpI`ZMYJl9&vn)zqjGyf}Et|kNA7*Si(bN{cHWb%^?qfIN+Q8y|s_{ z&1UiZ-RT^?A_Mw5uVkE%1$o}!1q>>BzGsjpTfCB?f+64z>W%*1K;@SEtT^E&uWFni zF4~Btt^VHNWhkh3z0Kbn7RyneH~V`7?NE;Qr#&~IZ}CcoMF|J@UT^aP1{F8pXTaii zuVh#(M{|DE-y5iOzRn7ZAM>h)MfzVI-W~ql;4R02-tO-Wi`XGe>fhn-4K(ZlH;awi zQ(DXu!F=2+85Z5|zbMJV507J0ZU`_|=!|6euZPC?&ztMm^I42rvQV2~~; znnb~y!$a)c#-MR4(Z+nh08u`W?JPbp&-0MTk%j~u@i8w}Q5OZ5hY|@Re{n>M3nF@% zU@SpsNDB36Ek>ZNkga#qJnIvFZ8QQipF&tb=}v;yIEK{U;FvfKZ3}Z%KN*(5(xrO_ z(w4PMr}LcnHv^bayeXvk3Cj$v@O?zK^-@fBo(;~?B&f8=gMFsF*j>6rk-*1xb67AnPp0xKPYku%D;d>6wTb-71=bob`H)I=v25;pyjSyUy;5S?a2)w6d7YQE z=4s;;pS>?_9z!k((e+-*ny2h%^H{@|N?zzCt$8Yx;^zB%HNU|tB`oPO`XYay8b6o) z@3c`hguK$lUa4aIh$?K>>_~%$4r<^79zw`IATOO+9}?T9xqk5<~Iahii8(rVr#L3z9sLS)TH@XQhAo@^4vmTD2Iv7Ua3 z`wF9CcWAH|q)S_VMm8=*(rR*<^FYZ+1p7!U~8G2H2>UorO9dWEZp7BrBpK0FW%;1Z)xAwbr*-=o~lw(ny~oa6S> z&iUX#k36WQ&dJV(z*a_`#H_#=>;yio%F=$B5G`I#_7KMfxf)Xvc45-N>Sg zjjm?LvunH|<5@D3IHo~g5UUuM#!Bw0In1Op`u&5Fg}`cPciq$%iJ?Cogd!I znw}BE2{FH|9FTS)j7@=E%$^gMV_3VA6XzBCu6nWob4~9@rESJDJ;`!tsuLSAo*0$_F60I60e_WnRhjH~on|Z_E9?>2GAeBEIufE-SsDu@^mlC$NJYM2m*yJ#fwpevv>IBLSzDvE5O%DBy zJ~@~9dz&0u^+kWSt$Vo_GyNl0eKC-gyP{H#?n1FfOsP!NI4C$=xHrnfy~>-i;fm+* z;+{JZS9>KJF0FGP?lu12h6`lR3O*3Pr&L}904lc#a*yaW=c#9rm z$3?J>V)rdb7)s(wgVqU-8rfDfC!9loqz@y^=N04M9S$ z>jQ88LN95}b8B$MC2*t^Yrec+c#$`1Q<*95jb7kMWqj&jh!J&__lr$K_w4p!K)=hx zp3#_(2(FeWyHU`wDQ1$xSmlJ!rQXMSr8n&4@r2L@LBx`GZ)a>0e)D7$5>GBuckmgF z13ti?akH-Y+UivI z<-U}wypmy+J9s`-SNnUzDo@=K)TJ{0(W`ux{mfkcGN_DDuJJbi(U0IRYAhf!7B%K0 zc!$F)@84bPm27n7_nZB_`4+jq=L5OU-`haAiB|{S^*4S7E57r)fLUVq9 z(F_SBbwyCQDV$j(Bx{}e8s&%spYg05M;uNz@ENl{m6jv6PN#_pQ(k5vVgX&tYGeUk z!Yf}H{^rW?hfBj}J^1bSYxqrBp+Xj6p*l=fSG5mSR}=6|g>40c)TH7VAOCRKc2Q4eS#)Zd~*;c>=YGT0QB zA0w;rpB%Wy-$6+__hwXq)vEVsK)D=cJ9o5Ckp4yj(isAeO|Le*07v5wcH6KdU?~4l z_`~BUY$6XUTkpWx0N*SsPs-K|W}}za!7$u43}$}Ia`})~C7xCNB|L_G8bz7;OWugz zj5{SfurKb=+XpDrPW7j^>r>iY%yJ-Q5h?)D9HrbF^|`Ek7(G5lTvBc#h?J<5i)Y59 zZoV&ijgP~|y@;ZP-Ha8T!CZn}=f!o{Y?XP3RNgoW-i2ea((TC(0aF^-)7QyYk`T2T ztteT9)=cQc{iF$9MFLH3+S)F|_TmtD^(NbyE9Yhh^apD0vk5VS%#dRu93(2B6;`1l z?Ud_6&J69kI|L>A{r2$vi9fc~GJ1&nQN>Fl; z(1cjGf~aVG5Y?v{;fOfdK>Uw3lUc zdauJ_bjnp;3WsFTmpIIt!L#E!IR_cZ$b8B1Ajt=g?`uPZ%CVcnNqfHh+T{>z8xpHT zGafaH4G-a(E!oeYL@ibNa-|YiVpu%$e{ETjKTKkH2@zNvoDF)n*Z#gnGtfDzAac`@ zl^npYdg<#FK(T(jz$0G3M!>}tfGMVr!vKRy^;kJh+DO|>Z){KLv}PL=2f@Y!CJLXy*np@i@jN+H^!9|_g$aTTYjEmqgSc~ zulzFz!Gcx$GFkzpgzy!Os3x0k+@l&O#-@8nmkVZ3ai@?`yv<@q zG7#s&2NtR94NQ3h zcW49TnNwO4+)Skh%Nso_a#LZx%qv>YTm$b%&&$05>zPw~3Ohvi=Yd_@D~k3?wpKT6wy$)n^uHV_7jx2-Hrn{E%DS9H#s zI-e6i2bonRhbdCgaoIz#pf+Ol`N$%tIbeB;8Z?TZ?ZNYLffeeW&m^ZvTlKb;Q{1R% zd$L$63uKZze?D`W;lKABg&I3Q`E6uZ13)+n$^>@UqB#G2Rz6SL5pN<_?4l>QEN+A4 zk&2XwNp<&2IbV19MC@cKqB#Um*v+MJa-%BH(&=I_KQ7-MTnQn-V zbxb{>PVP0vgR#bUqd&KK-Wm7>$1c+42?ditb@bJ)|zX3e++fy8fa80{3 zCt(jw^&>wn(;ClEH8-NFC!+2NkfeyxlLXh_UrA@P)u#tD3r5-=n=Plujcw)z{i^HNX_cN)^bb)dZq0qqQ9G`z@O zSP*@XNL;qj1QdD2$;%=-L$DZj^Muth2AJx^4(?a3IgAcgJz>urJFuAr|Ial?TJoiX zh{FY)?#-JGb6w%`9LTJNB3)YY#Dk=oX~^cfD0F=9}W;v>Jv zo3|V4Tm)Y2=659D8S?i(kkKoB9nmr`cJEW`Uvx#~dXLFYtZl}SoIk2DkmZoq3xIA{ zPw2MwynJM`6Kl@~x}Q)cc3bp949rn6(CZM|gBi3E3?A|cBI?>!fc>C8U9dd$`Cefi zQ=QnL4FHQ5u6D!-yz`4`-JCy`SL&) zBc`}ddl+)Xg`4{HMgd+afT*eNl67~6UAj0Yf@D3Bn*jLV??JqBe{&&M4dJ1D+x)x8 z<|yuHsucJ<-%drxkG%eUGuW6$)r*Z-GqLRN)39R$l0&ulY0tQvm7NH)O`rtM)JlTl zpL;fi>vzKNttrO7){Bqr#j6r`f_+CAwLU))4y`yG8T#*XOw>sTu(3D$-X?Euhy`Wb zl=#@44lSL8mK4j9E4Vc=g7=Jk0p80M8HL8UQUie%rPP(U%apb-BU?}jvRif#7Z4ZXKRG!Q^XLVRNq)>SG`l zx?W6s`?>FJq!-4=Lf-=BK6`%TIQ)@}BEqT{L9|Q{HyB&EfzH;xVh)2Rd1V1zN-*^| zk9a45gp)x;at&JxHoLRn%l5$VN5n9v;^p+B`PO+*8vRITPb3=*SWeu1U4%nMVsI=# zPZF)Uy*P>%$M)iAk1&@X#mO>T+lvJts&8wE!1iJxevpy?qDCW+q9L(h^&O`eTEBI^ z<@kLqHCgd=WB3|@*T8EP2ipUBB(@jFqEsJ%=A{%@_FWLXaEDA62VZc$)j_f2*cgf> z4|Vvy+$dgR-x(F9-<@!7cEb6*8d0M4YWPxRk)oP8G|3SJ9Md=1AhCx-gBm4D0 zsAd(GG=l>+*@*>hK`h>dosaj@!c$%;s)=@!3^nic@_G(;83j1L6qa0CvYnM&UMVR$ z=VLvO%B}E928f_l7X?_>uk`n}=I&`OY~-<&-j+JBFBe3a8?8J39}VL+{8JW9bTpr* z5&cAC;%VMlg%XATd{qU34GmKCL1_j7FvYvOEj`lGP;@m7;*@%N|4FyhN9+V1 z*ryv(fwu(8PKLDI0x3Nw>Y=Z=ASp#-$=QUZ#;6;5F*9r>VH)y z;>;+X!m=C1Cu_?p#jo+E>;~`Xi~;fJ;-|tU>nfF;O)lF1h1k;>0hDAXDL4-xp6tXb z52-X4aXM6`Tv>g+0Fd_XKS;64Y(Tmv_1LLi1FB42 zO^<>E!(Q81@*T%M<+;dU6yn6ACHQ?!1h+LwAEfkl*djp$$Lo5E3#Y(!elqMkG5?k(- zN>);puU2?TYhD!3uAZ)tm0ro3r@`bfPy2hbefl&Gt3)JTevOw;IjJTzS7_m3-Wxc( zt;ae_ne8)h=j+Lu$+jgof*5EmR}x_*f0QJBXUca;_Lkm67_NaOLD8mO5$#n_R?1S6zLpbEn&ECkSkPfj#UJO;7l^;-iXuA! zg^s65NdAN$fgC*ErjiurJiUdZcpZGF^jjXs;yzu|6%datyNEV1 z>0xJbG)O6eRDfz)$Rszan)A}aD>9s2>ccb9%i{vTErMVB$5U7@^OEaT_Mjy9J9Lb| zYw0lBCNFN&#x#FyIzO3pg_pExD<}NB(%;(*l#dHtk0JdN(W`O@^?;8hIE+%_&g zQev)L^=$D<##{`hAVk4JF#z+khBsC!GMJ*cqGxY6RVs;OBgwJLaoMU)CVs1zH^QUt zFTPOfB$pT4ypj!x8s1TRv%fcL8k#FhxmIsrcHaF&gJ+xMu)>?OSk(32ip8Q5 zfg<;c-CF>H3N)&XiN_cri{k;sGj=}S{Fx>Z=@iFlfnwWMR1=^#QF0WU`CCSUmW!Qh zzpCpGXO)c(!?y+&G>~qGw>*mX)B*>YS;-eU2$k|5e1VWL!80rIrB)W57@}fhZYEW# zcJd~2<0THlM_K~HDFn9jF%8(z6>|>vrC#Zu8dB+v)l}$M>5Jxo;s6SH9*&0`Iu|_w z)Nx+ew07e07`fc>M3J?LPOHedYaI#yph!4@b&Afi$~<4^MQxsO5u;Lv znn8*d3`VBT3FLaO_%GVWagji@Cb#Uzx-je(uWek&(+o@*c2B<;Tr`)D6`=S2C=Z~# z*(+P7qSvw{1Vd&>-RcFcmxWrcR)}n`D=k4b!n=%k0Sn(4CLHs<7(il^uh^PB!~R|| z{rsT|oBTfsAtj+ZtedJOI>ObOCkt|1f5IWtz%&}pLjQgomq#CPOhOhUe?g(Zy}R=I zg|X-Wrebg2?adpSkc+$ahL!)-6?WMv++CySIHa0byU%)`Iwa=A&W3b9har1`M&T*T ztC2lqruyNKIK%cGW?ChR;6Cr}v0zf8!wTm-;N>oCiujOI_Do8a&f(|0m?eWj3Y$uf zvoCll!z-?UgxF?KBl_a!g?r~=9Nc2te4%3|*v*%jbiM>}`43(@TM))d2P z*TM`W(SUl{%3*USzDO*Kg?ZD4G?@Rj8N+|g+p~~Q37s!4?-?liNTrr|ii>?$r{Se} z`1dy|wdfgc7TlSUc!lD?gy4vPW#l;f-(vf^lMq6zdfwqPo{pq$T?wAyu&?BcRrz>p^xw zLX3Q!g|*DoIhr(Do>Lasbipg)ssekJS2lqyu5SbtW&(SS7qnhzV53~Ez+P8ZIv3ce z-#was!~VO_I~UV{0vgOu{M9#;Hupbwhv zLK$$y(iw~UNtw4mGZ$zUp_fvoKr7enATP_tCaZfr1d!YxCHg}aS~z-N?Ai*OhLqEg z!?iEfC&)OEu)^|=wj8V`DLGtb7i5(Uy_?ZXc?ESvzfN?la1k3UA6RiBO4FW@JT|m) zgW8OU$&^snoq#iw7f7ob3R|e_p;~r#wd|!{_En-6xJnj%L>G}H9^jc<>}^SJu?1CG zxoLZ~w>BcJ9W1JUlbtQmN)cjJb%!Ua?#Ldh?pkl#RNX<)I>kL{{w(g;iEMOnb-h=! zwXrz7KmYAC0_@-ngEx33TcVd2)LZ<$Etm&1x{O>?TzgY0Ve`vAZt}X7BL>qs-?qlV z0sZ8F5YUK&`$I8h@Ejp=zVyM1 zN#s*L)rs|O$|aLWttwgJWlixMhDi}!!W=23yet$*6hgzYd@M_!*kf#^a@1^nO;_Tp z*ucle5y#^< z(O^-mmwQgqJYX|cQiJSmqV<{E>@6o3}o zr3FjA>}$&frAb^Zjq}rs&uHwxfVJO6jnmI)Jeq(pep=t2etRuRZ7@etv|BopV*xQF zU}bi0aNOAx+Ce}|p}=}zSP*Q?Yg25f90}a!tr+J?piIrq8W{fzJ;mTH-c&^lKJCIs zO#`sr458SUWGp4(GO(2D9aWR6bi#M8sls>YV0d>nNkgP7=wTvTHydVmy+?$?%s~;c zHP{iu_|F**6!slwJ5B}94PY6k9so82ShtnwBped0CWE)_0UdmfKp*@tixsz1kr*bEy%ru_x=VY6pZT`A3Wx5AuVaFk zlTHRRhMm(cUY)7V)q%W>dB(a*(TW!W$r>w_MJ{eeI@)ZVfLw=_vK3ZF9>Pi?2uw`) zT}R;FWG;Ou-Qci;9ECi`CJd+lEHxMJt7zjZygf4)i4yDp6+4b#7_T&f?It`K>6>7l z7HlDFcL>|#mmNniaF6j#gShm805E&Y>j1z2&ieJOI1g7S(&8P+gm4?B==H%pOyirDSNUb>L&07Bh<3gqZb zH>K{26EahEhxcl7lu`KQbBg&%z&pH-9fOgG{LDdu1#ZanJBBKoiM$gS?KofjD2hTK>vfa z`JWp2Sge-#oRa@(=4z(PWUfr6$~@u-%Obg+94NhZW>zJPf_#ln768?A z&bRsabbmaokDuaW=3|p45bL0ipX6iaWwXai^|9RQjr43{Fiki0;a{^Xva@xuqSjW% zacWm9iqxUDOCCgYQB5mmPK9OWS(Rnxr8Si*`g>DNp}gYnp|FNDqn5$RDOgL{JzJdkzJsnnO%10p5h7 znPYSV%cwmlwvp&&#wQNaTt?aou{6F(&cTi=lT?Vk%xkrgY&%2KX(&bOZqV#y+Dh0m z9W2{AcV`GP7yuQz6MI<%H*?Pc-&iDy!K?<_y#$1Y9WO6Wv3^elPp?U>INBmi3dg`j zoZx{yG&J!B{KoDljWLWXG1qpM0hEHsFgFJW8d-zK_iuE^qs?dgi-MCsLgdctejiUfNVFw=H@D|L&%I;*v(QcI1y%h#oSEzD~DO{JDt zX~mD9P5WwRwVtlj62qx@tY@w7RBFlYV)2Pg`_~F`g06B`0-Zs>>>1<)8ES{hj0Liw{RxKo-`eCnWo9x8eIV7u_ z*(uYRadKNvNOnF;i`JN_*z@CjCm)H`Lj4_K7u>M&;Tl*58~DIs1wOEoAx&^ZvWO@y zyDJQx`+u*<0yB^rEOhrp4Y%#-T6|$3to=p`!qF8F?%W>`KG1zaJVnNj_N2RT`Q4h6 zox4Jh`FyW?ae47U9k`fFKjKDIKcZgF6|bd%Z4bl#<&2bp{;%6uz9+zE)Jz40HM!+u ztg51^POK4Ck!*K}9;r(U9n0&E2P5E_xeMx+HWQo^q8)ct^Bt}Cu1q_=9D#o~i9=?H zE8SN31y4ixIy@gHoLD3;N9*EOh@RtYi#o1)b4zvSQ@PLMA_v7RRff;kTdKtdg2=bQ z=h4WFAm%)P>Qazp9WF^L4%a7T8}(A_Ioha9S2tyY)0-OP^`mW6S(=K4jEk(-bfMj}hTH?dtasazf*zDS7k&?25#T*E# z#`xI9kWGbmca0{wx6uOZUXT{Dy8EO@%#PJrc^%fRO1Gq+mlBtHEZt$XJ zh|sYBYOgVdLjam|S_wwG$y-WKj28dWGYV>(*D`6~D)D>VN(nJW!5si5k2~jG_;+W< zzp{@U(y2P`9AA^2SmkuV7x!Q2y|ne}FmM+q&8tm$wPU3krMFd+^7K!yl8k)YdW-RNOOCsr~6gImr_z%-oN z>$vJc*3`89wy=I=lO%us2uwAz}g&JZEs45?T4 z_`bGIRG1!KBi;uDCShxH5hS8_ z?#LlfxDa{a4xNbn$T^gw@HzVESK}}WJc{93yafyOa47dLv3becEqERUIOsws4~F?S z8|6(zS3HTr2)D(>U5L@y%ADq~`H&{!W;l~uk}Zqvl1j$)4`ose>qVNZ(DW9yNm&{z zQ_T7fB!36ns$Y;XEbw|kDWFy6O5zcO9p7%Wks2R63OMMd=TwI5F9J}+KtTgVKe>>H zMzNhK^_idwmnBT!A@%#y`bdHxjuG53AL}2%`piL1_fi79q6pyEk#2H*wpLG=Ysu;FPHk)2?pt za>jrxCnbS>#Ij(fRQY~LHA$Sc8@=W~s6aTbG>Du0{S7*+$Clo2_4jKuLtptc?lyma zg(7xgss7FWeuK8Z0PitE!kvxs7B6d~WLd}7ZT|i#-AtQLgnNOHd4Z?30MGOK``i8f zclCYw=j_cuHM910Z^KkP zLV-71&?(Fu^eT>BxrzervEmaqg(GOXaFJtW#b#Z30fFIbG>pc?F!~OMbJ*Ns-@TwN zn1+ZWA$`d~IxIhm=lHyk<9a*TgPf4jkY(8lWiBTWA^MQdQo4WK1{Kyt z#pe68S4$lGB!R&aq}ayiLe|+TOg4bH+K`%3VnS-c2;?KoRl;XaX8qw^-FX2_;s0gt zUEuAiiu>_%&b>De0&)e!SP;$)k0d;AS|U*qbGKlreVA5S(}$W?ZK?J_-?V}r^SpT{ zB#`jFgg`EjKzK=1z$>6eKn#Ky6f`K-sGw14OD!$`?{{X_n!VTF`zBHQ`}{w@&u?EP z=j^lAthHv%nwd2-YZf$)Deb84oh6=~Mk!9_TRthSBtnd2JC9Cp<@vT3U99|0H9wkd zRiT&?HH`k8=J!papnJlA%qz9JY~#&&Gg)f&+~w_*wkOx+uM}_1-21=0oq`d!=8=?3 z`z-w3tQE9Wpp!K^!1f@hO$VUmI;MXt^WAx!Si#WC3RD%^Tqb1K{T1<<$g>#QIYu~; zTB@lNu5S|8s=?EMq59_OtwZuuvfS%is5X~t_SpJhmcqKt4oc+N3a@0L+F}Z47n71J zz2p~_5*T-z-SBAM2Bnc4&O%msB?Hf-#KgeF1pI0*Y00n{=%0;Tn(uvTM!e7~8F(I} zr;R5K8(-rk4Ln04yrXOVcRSDVNDzlOZNO}ZSR|MsYpezjLJv~j~K?IyFb!AshtbEC9}Nx#M`8F+4* zswRD-m&{#KkZm4y(y#SO23|H>m~`9rM`i6gFKOV#LJ@!8I_O zVzVUn{B1NVgoxCxnN@rW9BD$MA)6X*XNdM1p7VGhBjY)uf2(b!nQh^Q12Q-pu@4uh zG63-?dlBd?NHWu+oagRAPRUhSLoh2{2^T^7#n7@5l+5_Zw){FwkJusoVyIM@@l#6c z5Q!K=Ny~6Vd6IqUfAU-;O`19Am2xxgi(s+;o=d=x-Lod&=T|1Ay~Hb(B+in2cCg}1 zVg})j5J^%$c{{=wZSqL}13Gze?x4UmB`tWEB{?QX9^b2FN($k;PK5h?<-jC-HGqL< z)Em8k;Ez3)$3=Rz$O4C4!o~OZ+apz1QF{IzaCSPVo+6lr8JK2hQq#m>+|u*lhn+|R zsmkdOWOm}i(4a#ZhFp*9rxINA#BgvTU~NH=m12tLc48%C(uW~LL6s#jA=7RpCydKJ zhy|s(yxlE^Ez-=7xi~A^+EP_Y^z}?#s2bO%pPhOaImDl+o{ziX>h$U5Uf6a)xGE0H zBHZJWE|HlXaOhb2kZcE6dDWa+g1$dp<7KUvGw4=M zpko8SwOLtjU8&x|6J*Oz{-*mSxH69B_K^h%pBZ+b){``o5Dc&FmRt(Y$>5d< zs<_^IIqR^Hh`7CwIGAEz=bzfOTiQpBq`e!wy_Gs))QJcgG=im|kt!!(qIpmoZW&34 zqIc6FJlJ7y3z)vd(uE8YmI40y;s=Xshpvt$vqT0@`M8~Dr_+78jL<0`e|}pZd6gf zPPXN$XWWiOEh}EDGNnk~=|*Z^CxU%O`Mm`Alzll1y`W8yUp6?UVgtF<%j;g^00!Pw z3BcuE(jeoAGZ=v#YUK7(=pI%QcznSlpe61Ak`fA9Qvn8^3tUVHs1hE+#RK;UNiK)6Os`Ybt5s8ayUZK>iSjmOMiY~cUGC*={pNv_;EBCiy_&`l(;uyOQNC)@|EkVe+z#u>bm6 zwggv>z6G5KpilT%8>(1eOYZ1Es+=bBvLyU+vDerzPO7jRRQKp`=@Dxv^GeF4#JU}L zjt7BcK@p%Z=3ODwQ3$xywUyqGb`7TRU^zt>!$%mB&|{6m=J_h9+1;D4M#swM${}3j zkZlMPM*}T6vta(hwav5_c8jr4{lm1+PC-MAlWF086zF@CdXj~FnYU)-52IKQthWF} zX2R$aq?>?)6xC<+!B^S?7^>p%H&~{X1-5&5(JEgZgyvX!RddpqTuD8HgFdw7zG;>u zLr1JIgyF3?yJRPO1qN+L<=MT#J8P&B8&ic~3+U(}IKTmene~#KB9iRdp=?o*r}!+Q28%zCPSo2abw+@xvzg<566Nx zxTqJCN-jI09V$UuV9ZyIh<`5O0ph_@9zZ)H6z=yhqr6J9tZO!?s0#yNmu!w-OG!dD;RZx$;Pe(kKm_#Z zt^M=DXsLrZMYs%;*-mTpiaUr+OU~MAgOIbgl@7%$LEMFBU$``H$Df?&?yJ0#nQB7T z*>+NLwU;#0qU6-N`RTkRD2-{n&?^~un$`{7G80KFYrMiEsxi>2o?Sa?D{H-ywZgq@ zeiD;bF7gW23a#jl%8UJXGc-!hifCwD=f9f)E11bstgZKwCbGp$zVWm9NjW9y-X&hi zM7C(0-oMMdfK4^6-`R^d<)Nl7o6EhDVTmSjq0^-OE4-vlHJ3;>`cz-(l?*&Ju2H7? zDz9LZK=bMzrh3RLSt~SmjxyC(dj)GnjC*k^H~8;1)iiKAs;}|iZK~CJjn$oCZKIdW zYiIxQaDGxwO)6dMl}g&#T|Ilve8F0I^DY9Z_(&|3UZ6(0sNtl$1KYCA63q@~^we3C z3p^qtrTFJH9+EE3*`pTiwCCs9CCkZq24E=>iO9$w+FhXwoLd?E<=Lfa`QX>0kjdsk z<~Y&MmN+nFoTO;IaRL8eYXGOZ4XPiPG_cCcTLbEoal|JLto91lK#`6w^xuunNyk2-HU4|vCV&4@ z!vL(+kX~MXt(Pwm?k1+p*n1PezUmSCS{{qzuemrFVQ2?iVZv62GL6><$_;}W{*IV5 zJ=w~;2^fXeXUAG`uvJgCYI0=Frg0L}BTt+5%ZNyujtt4K$Mc3ayz#U*o&ILxHb$LI zZ_UX%?Rilxf!>D2L>t6R)ji(FpKSs8k8ch?>Kfz%n3G>+O#gK{%T(p?wT1Hl5-wPJ zH7(WYyeR9BwKSnGpymp*mG{Yag`1Gsg3b$J`C8JKHz6v5TNFg8O8h9#_tNmmn0tJr z)u4@kXuRbQvlD)R>ka}y;|FgbKR`iROkmBBAc?c|A8hd>YY3g*pBCQGXQxkGLlEF9 zYk0jNN_hhJOth%V0bs{!aN75`VfzrhkJk(0IIuCOvl3(=!+&T)4LGlpHei5+AqKG} zXytjvRp5{?M}!*?fo;xLUWoCltGNgBP%F9dF%w0Qpn8 zWG^}uZyc?l`<7sniA!)QHM^Q|T42qb2IeBciBp+zyt}8Fjm1i6>UA2lRZk8-a$|S5 zIwhDUf`|5{Ja5RpC%m7ABBD0$4#Lm>pUd7UH zz;At0_|Wi`IYV06t7RZk7h8$~?(Zof<_H!bbmZ9pbbgjt?rg^w3O04v+Acu+a6(=8 zJG?i^u7JsT360@LBh3NngoMob>}~TpF{Vx{N#pvFy}2NK+}4CYWSjLQ^hSQ9J~73v#E1)T#aM7eAlr{FX-RYdgMl#O?~}Nh+EtK| z@~!VWVC7rXErhXxZxMU_zk>^KX;p>|luWCOEA<(|G*=2)7L864DYj%Jui;Kh$oL1| zSV>WMIv;`2npysX=-#_q8&#-zqA;=cs#!o1g-vhm&+%yZ1QV3o8J5#qh47rYCLICD z^g!8@to>@0XYHRy0u?ciL6t%wLFTBBqYRqsi%d8Tn|V<`nKbNHpz^y7MT z1KImGpaMr^*WZngkHk=L*!s}22v$);2n={%IncSzY6VkwiX!4 zwtVhU2)v*G$IHy1&q_2hhs&d>p$yY;9i&^|9QTQh{6KwPK97tyxGQieAOoZ0fY*K@GGzYY9jlNKdXta2aHsXi7p+X!1U9$nz}2_HYB4v^WYx zlElyb_}u9XN_mdfqD-a;QgpTx&a}*XZ+jK8vr)YHJMy{PT^NOFZ1CYsl55s*D(#=k zAz{EdIaD}2nfhmuv^Y?Kp}Pkn963sl)U2s_A83|mL+N^0?0|lvMwTL@U+TZVq`%8{ z0@JGeMtM)(v#YK7%q?>W)&dohDwZapmQV2l%DQEum^g@VNgcBr6A`f;&xP~;#MI0z%9QCY@g2ZLq& z;$jmVFZ=!ptZ7kGsY%cYElSTTBNeYa%#p|VhVZCS(X#ULh^ySQb~sMA;%uv(Zk@zz zd2+gS^5n@=rcA{nm#&>~g50{+&vULYD^8#OI(cASglQ4B#d>O9pG>6~A$Mwe4lJaq zz#`;A4wY;fqLL*T;}JCpNuS@uViZFobp=gORdIA|vBR=Z*EiulGYN&*ZU^(A!co1; z_7DxR!Xari#A&03ERgrX>R1!9(1%}{|1bFH(~yO=-k6~Pmcm@f0#DPzPFNYTz~5jV zZ1*U7X&2!uWC~0}7WkTGKt?iH$O2y>u^uB8l8^=df)sn;3Tbk$Yf7E{6)jgeyVq8g zCLs(pORC=W6=j>0F9;>;wrP~f#90N2iNfu3^@sdszzWeVDS%KTwMHTRgUc1#xKB*HHGLy;grX0DQ69%fDrZyd;m6QoXLJOjPf&?V`8EcBE_WFRyK!4i&>8-hv<+| zBDMzpjm9$ub+J9&)cAM`o*yx+G9`57^5VL}|9kNNF#|s$P{e>wh5Kdm#skzR!0jC9 z25y&Gf}R)@=kxls4@qyqVI+qj9Y%QzDv}(lu-FQW-65@x!}ylNFmC^<+Opp%m4&63 zR53-JUC(hGjPqh**sA9)5RTD~j-rKNEI>W&idN#4;sRhCNf z6Sdduxls=%E&OQIDN5#&@9Ynyt}Y`?Yv#}X2Ni8jBmY3{)nIbTLlVv_nU=;FR6f1D zke>OB<#`nz%}7FZ4Y$*)wif)rM;(o^L(o@cM!P&{QKm&7OIkMnZ;k4OTNXkkBf?`V zca{n5E~=`gO$4qygDTd}5DV)|cDYwovp=~x)2nIxCAAJZ%&^92YtfyceoNNcDhG6h za&0))>UiAWJUu zhAjPo-koXZLEsAF=6t5~Gf_Y-NF-Xyu5wVSfFgATk@{i~7LL?wyr}Zhcmt;MQike+ zqZdJ_jU{avw<-jx(3T~JuM=EY-tJ9a@MaZDaK_cm0d7DDP)!~(43COSOH$L@(J#vA zaNtPpE%+ne(wZP_9WC-X;)>1svK(F zNVCHrO@HXm5+&qUC=?t5&nrR?dO1^s^fY-?gdlOJHD*uh62w*+Pr7+n1l^|!&@#1n)P|l zVx{v*{2_9-m0>}|sU8#}kB1FUSgIs4B;Po#aUkfQA#n712Kg#^9b`VKZXuzIECt5( zh)+akx--H#l{ra|y)5Vqg~_!!3Em>}y=pRM;%Op2k{83?55@R`tTT?gnM$aGC8#t) z69j7V+#uzI9&X|7XYnJ>_W1f*;y_+@3o@zvz{IPt)Jx9QHAL=QZ>)QH@1q*24nVNK zwt3$WBBs$K1_yhp*2ial~mpsuxnD8j(u}w$@Es8G>&y_Mo>qT$fLx!co^nZ z&W({qdI3Z%BBeF4pp$~>CH)JoA%f&1&w-Oi=8(R~tNl@_<&2^M}SRZE-wrC!{I34X?54$?57@|T&*I^s-TO5`M611MI`-{E8=X9`KzSd@Gtn0kAjg@wC z(Qk$sHRMRV)JtBeaMgQLwIj*CctzeRo+diE+(DIC)14q?Gu0Lu6G*)WK3Y(DJxLEI zBt14cJxk^TW}9uGR%Ibpdl%Nh(_0{5cKmqvFI(T=dcyH(GvN#z{?p(D@Q^s5yhg4 z(j;@LE$hJ^tL_>WEIjdw|D_EKc^&_BBSU18+v(|7dcVl)*!|7mtX}Wn9xVcHU1-2N8X3 z;I7K=HLnxl*`&ax#icz9Ij)q=keN*Z1YRMbF**EHR^WV@E_9$BRf#6&4}pU&Bo6gh zc8g+;b2>{R6}W-Jn{0dId|HDXl)gi)(5n)-7u_mSxt@52gxYGpfVx5C5#AQ`ya6>2Fr zsGA_aLARC>6tka`&~F|lBF1;)l2G)-F+No6u2hwx`9d3tg=)7qo4oV3y`e#ib3e7K zBX;F%cOfZdNu*rw5T??Lb^!NB-rF1e=g%vTO%_}{m4In)R_ZJn$&%3;=VS{=Pj!5IoCN)@EQ=!A4HgTj1xDrKreES}U zq(nh=WT3xF9_loM;F6AyIEbNff?1wOsfLmL^vcm>>U|E%WGdB@+$=oc1#FfiPAu-~ zKjXjKELr;R3M4-0Wo?!qY4B{<7#X6aEcYqO+MAJOtPLh~`NVa$}#A>h0f zQu8Zb)}$u=y5(4`9bV30S~;wovef))MQOAjrDnEcRel1~3{Kzh>LsP2TpBW;atXf#VB42?{C%!gvT4Z)2o)Q;sT6J$Kb z`4TvS!wHkuz3x;#Gt?FQMtFnedDEM4;N;CS2eP-EamJZ%ed}9)Ri3kc?QOsQ>%Z|E zzxi93_!?n9Trnkz6L8QlQ>gn=hCWj)EBst7g(WC^*`w(kZ-9--4mi60_F$mT*rj13YyT*}1Sc6YqOSkuLK{m_p(PU}P z&tl{o_cp(YqJsp*v7AE*$lcq~i;XI7V4PlC#kclQhj$Epi&diV6)|7!vC*PunI zcOgBIeiVK^3v4lXyK$ylGGy@KhW1^wbS$JLyjJs)?a0nG1+dMBNEPD zEhsj4JrxvhMKx%7YH66F)(i}QFWb2HioH2w6n|NdT=(&o+EKm^^|SmaF<*J)Uhn;} zab)yp#54pv12aGoSaI&2zwubs7$tqGxqQXLSS+18chA=hi^!e3=PMkDDxbR-7;l8( z+Y$iE*@(Utf)PGawgP z@)X!;K@urNea+idiXwnOQH6Ei)^(3;9~hQgx{E*sZS**J36V zEq93Jkcpk%2Md{)%wnL%G@9-iFKHnY^w6Q4Wb-IQM^v=)Ew62gqwXXv;KKMD#yKEE zm{f>05dW~8Gt1ToH;!`Aa;(9>dP5d#fURW2Dq{`4M{HmNIa;j2#S~mPdnWCPa@O$G zR1k3&vLqrG^1{c$4#0_oa3#h7KCK#Ww!}4XA1EfmQa+fU_<(H5A^ReI*}KnBA-jq_ zc+G@?-5eJ()6~fApE?|q+lAD36xaVv2snSHGMJnG#=y&b_bPo=-0{C`0E76gYk2-g zqoQNHMSW#y?*4^d&IXDdAStXr=U(Zrcdx7<9whrs!hDyO03Td%uSi8W-XN`_d!;6d zA{%}vub%&sa5~?_uJ)EpJ(sK#*;VWEwbF#tYf80fd9I-rIiogO?8AD8W@s$NKCC60 z>S7<{$8qFzF1qDiMeKvTPhubBU3Kh({6rgN_KlbG*qD^yaFh4Hw8dFK$H(aDhFdeS zwP-iO6VB^s23CzV6;oiXM!z-D=;@|3zgCSVk6Y(L9mBY}0*0VugBMoX^%hoC0<~k> z_dzFF>_Ak4kjICtH%DTgK`6SIp=Oje5lg+cQ;IMl*$!akNyhS4dI8T$t5;S>>XTNk z^|p-rAZcY#T44Hm0JVu|bn{yyyxqY`ln@ z^(s$W^;@;$-_09>_C$uQnZLL{ko0>S^xyfTo;;ejnWe-sKrt4FmjX!wVKrzo3`e)e z2*qJChCYp&hAlg!VZfz8d~h!iZ~+>xGHTx)DBO(NjIABmrh(B|(mRJOZJf``+)k|X zUA4DCcLVr(>&$$wVf4u3{OOKZVbmSBT3i8xG9*2$xU8z2Zj8msOrx?Ylc=n5b3U|H zUfH~7jFk=MUE6MOKYL<5C9ZQAwjfS$5M&#A_73R6%@|PjBszqygsd~H>7u+pxI{2a z&xksBSWq-1*EoURaI zz(JP?lpRfcC`gq1sMR7gw-k2psS?OT3%a6IMAn78u2{wW9&k9{SL$Wnh0WP63)&IM zN)B4(36P~v0tg;H322s^w7KGXsV8*NHI*#4&wHcCh@+ra+SFt!FwLpIOk%A?FOBV_ z@dOV$AVVypdoka;aSdvY^ht4Yu{mQYl;m*wad-EC#BWgx61Np5u#h6)Q3LP%B=p1? zAESYk=|O$fn~lEANt57+s%$;RiFn?%(;1NkON48J9>SLbd}UeGoxeTq!?nYV(2rRX zL7X}bMcddDUf$4ya0_}Vi5{z`;Y=KPVBUp1+r*sY17W0rNDkqpYHC1YNxmu?fu2f` zR;S`TZJewAUuq=PmLrb(2=ofO-4>|^2{xv#)BGnJ(Qkl0{1xXMA+nb;( zr6yc~8u+K73pGX0EUBdPYm3Tyj{a?%Y*4m|AfL>I4#Irf98zsG!tSoU)a8Jq*EH}n zxuviq+d=)Bz)eC8)*c9BH_b^Br1}BLts%%*4H~KJncs=^kB`1TT>ApdsXLqp#x=Jz z?0XZTDs)M@RxFxkDNbdH16!<2iN#z`09&DY2FjAmC0VEF@#T`tbL&+OPOk!{uaK&i z*#3F#B6pHG_P*9D3~KwL)mL4`iLM|x`S5)0b*0+W-KVz>XPzwddU|Ujqi+MJ$FO%F-T}&Ecd_1T#WU9h`Ic9Tdh(+VDTIc%R45 zD06OjH{;Z<4h39JwT#)|W|EJ*^Q)$~<&_c(vyaB`4@^XnRUL zO(CCkWV|F!n#kJKA>vxodco8lT3oIVvd`Y5%e+SxCNA8|2jWGq@S@*Vl9Lnt*|r3` z38fBsHN855;R+=ty}?TvlO~&UCLN|3>tnc;-N7J5{jVgCzIY`j5O;yA+ zDa{P#@3QQg+1jT+P|rXkK5G8TnZA%ZK+}+d>Bxih0U#!vO5;N@EZ1qF&oz>Gdmtgx z&KPYspxPN~U=@{AR9tl#>KM<5&qalo-6c|aamb>IYHduE2!tT*W!)OTg23ljbqf1* zE^#;}^DR)X)X}A0(mJZUV{3C5C@~$9r@dt}ECUXkPQGP+K@r7m>~E&GwlWA4i-QrG zJb&7S_~>1lERv<+d=V)#RJI1L_s*EP3sQOnkG z;3nI`--6G*jcQom`qEN5Wn0VbU*+wal^6`5uCusqF-);-p=z&{!F`FLs3F;}l`;LN z#stB{oZu8C3&iFU#Qh5v2-X9sgF4+=Rguy}r>!8}Z+FN`Rb7;eRjP>mPA_W1B7?H5 z7Nc5Lc)Roqg%{85D+cJ$7wl%5>qcGp}T-y9j?0`*{ zoV}AaWU=c?5+;MBX7VcA5u=f)TXi~HuQXk1==zc=AD2yr5t=EVY$5j07#26M>eMw?JV_@W;B!N(+bIg)+_2S_xjdPoKwm1Sf`Q|UUGHN;HqJ+^pe&m zInh$xr*A)y_iUzDhOTx{CDMF|SALD2-78O|AkqE?9vpGt!wbK9_}E=vmZDn|>)6SM z(N1~o2oq!kEQ*+(<*Si`b33t)(H!bnLa%%TAnnoAzbH$G?1U<_dQko13CCxfRJLfP z7xjzop^3tlD*}p_dYdLg7zhmud$KEA?&Ts+Rx)5TJNAABuDH@me^I%jUSC`l7rxfZ znqc5UV5fPIt%{Le>@}<}qMo&@B91ThvKDd7g#rs=GQP{aoWZnml|8tkqBL1KEekxS zLk~q&&o@-mlWD9wQ?|(~m{&}mYTVU!n z{?|qMS_dWsu(?!=0SwLT@(uY~>G8B%O0~K$v#RkfZsryVNkh0SxZXF}U1=y&i02@!mnXCjbh% zrS{VM%c6?Td+6l`Gx1kTrZ0=;eyu!A_SJ63knVaE?o3d4JcZJo@=7Tws_Iy_5Nz>D(Au>qUBoRP(m+#{o4E)cCmia5uUxaAQRN?`y|lkhN`Bm1F|4V(wm(W+2_X~DD;NxzOvoJZ zEs};fT$SF=gk&D!J4s3J2==+X*W3Dv%1$2olKBW5v}XuFwvhlTHXSxfyN+D9DqnQ! zBvA!E_E#LndB7X8?HkS2<*ECum$Rumc%P>35%yL>0TY?~Pzmrsg}IZ8*uU;+^6F;o z%MRaWjeer?0KekpY=F2RbsuO`GV#N%RU*!(N`Ph08;MgY%6@fE)S3NwTV8OcTJSf$ zArsQ#Y|Xwhs*rxRR7*wsPjAk*^{Rv?{%fh0iuQRc@>|HGlUlnYUT z;1~S|nftfUCq&HB0v2ut)q_%E`O*{4a$HK~D^55wjV8}FOC%VRXXb9?nTqE)IWT3x zU^p|Sr>0Ip3QbnpRylw-Nd12D2mt_8s@xUlYPKVIEWGmCwDQSl99jPy!1*Bn zp7^E5=cJ@3hAnY_RNrcRsWxqOX+SIw^2u8CshwpR{ec)~>QqZb%Vdv3!AVw20f~FqobdRD7(XJ+jx$)@%Wj7Q_)vM($Nbu@Opfv$|hspm+0iJ z-jGHo6N;a2;kG5J7(Bo)C;u34lLnA{(g9hIp}28-#G~}SN=t#t_gKAhpz;xWAABqt z5Y#f#VK{u^^Y$t4n#~)c?;_U<3q_3PJ4w>aVFpMQ>+UlSNf#~CmW4GNqSr#wH`tWz zl>|sXOwdeT2GE1$CH2P9^(GN!@B!q|nd6vWZ~*rz$7IApfDjb< zcD}OwXweIfu16fuyy4~-1Eo+xnp~~@sN_GY+F<^bVt*NS}O$1gok;AL7&s^$NO|2l$ zDY3E3z1S1VT#$q@@0;aHwQR9zEK_O> zzb;o!Jsoln8?C+)CT$jAQ(6#hlbpSw0UxIM(th#A65Ll5HpHwa`^?;Sv0}wlkXd>V z;0|v|!)D0WM2(;ks=p?*GSHF;fRh5v4cpP3c593h08i2SKLuaaq<1Y46Sk0j0mll--CNf@f@$Rm@i(Z5RH<7Fk4`^FrK+ zhLPdXmlqrIp0&#hI_~VmOJ7n|+G0B>FzM6O5D*$r#p~mn6IE_gl@B+Mhpwy2 zr-B2!iKz1N;HZR*I0;?owTwuW*@H-x@@qYf>%69^{TiE}D$|#EIYW$<+ecF%6Hv)| ztTF{&?v2<=!6vazv)$l@bDFK=WTXF{Use^GIF{8*U&$|!!xPSWor5YYtGl=7YpF}t zJ1|_T<;&`$`xf-nn(2R7UVUKCdWjfA4K%?kkSYn|pnEc|pnh4s80gEE75CYNyw-tc zdb5oqU-NiVCIXITvi$yR@V{05`p9voacJZRU84T5KXM?j%))U)aVTt*bx74I7V3@I z|8gzLF%r5e7b=@2t>7xx1fd2?|=H;G~1Z`~^gYkG4|CbBb2s}Y(#*VrkSv^X-^ziBua zBere6jmJnR*|(=L{g-3gA41m$S&@xVEv7XRGO@WYOhkDEbdu+{Pol9gLPH+`TQQAcfND>@ALVCKlsBxde^(({qFa?XU-r037_}A_kHjG(?9*wKjU-GIe-3v z4}9Q*AN-5I{Hwn{_iz68@BaQD`26EP{?mEqo%hfG{4XE+(1*@H|AG&Hq|^Lp{F~dH z+nk5L`SQ1*xuCf){w-=QY7RCR%ioe__*>cxf6JQ7n#=LGqPeoUD*ml*^6$d$beuScNXMnAq{y=pPF4oY%_#&m@WQ5h z(PS~IfpX=Zq^p;Ciw~-xxLZd_hpIUFZf~L5C#71v>TnJ+tf$cl%%k#gDVB}gVW$CP zl!Z|<$_^7<81>cOho>}jVQV^SIen?FTkF>M*{!?0TbKX>o};aaAin74+Xm17@TBfw zE_!V1=lf=J&Q3wqJ5e=jM5n7*?$_}T z+|QRcG%+KL_6x2M>BjXasynf$3+l45c1kFcQ9! z0H$_rGZOwThjvBidc`$*-*N~_!Vd5qK#IaQYt3Kqh%<%O^-1#)Q}kV_0mMQFtH z4n#vE)}t)PGThX7Sx$u{@Vpp5$Z_4DvR`YP(ya<7>kAH1ovd0^7Mw&0aRr>-Is=2M zhyr;rt-XeWI;C|+)?5gSd3#~jUKI0ao7e=@3-p(FY?d`ATaSfJbaQnw8Vu%t*!@-V zUdNfR@c;H6{6JUT%2;?#QubvpyG{vzxy}KOnMJ|}W8!B->cq?x$YLEA1g_waQ*U4@ zNNvl*r|9Heq@ZPNS1$sd%fT#-gXwFDykCsQ0)tt=5_ln#H=8gP@y#ILh>vqN9fk64 zQ78p4@?rryos)<>@yv}bgflNzo|Bi40J4~X=K}~>T-Si4U!6+`gkd_tKx8D#J{r{> z3+9uuLJs7kfG7D!KkA(#oH>%J+@OC1z+DnM?3E7tyDDv2GJvLvA%NPF%|*t?BfF&N zi#UV}h^%Z&Nb=%vFLby#C5)}%0p|y}n8~0`e1miJA%PLK1c$NKVSHcv_Ah{uA{p2X zqM+n7xY!}wuDv)O}91xqy+g z7q6gwbmFUCCSN8U3?gi1lgT-|S$j)-HI8|i+qn7o+)${uZ!F%7J+k--X?HWP5O3x$e^W1kZgk)#2+l2{`md^l8=BnCY5J=$FV1MUu))8Sh1D9klV3h4 zY&J$KIep#kZL0|RU>F#+pyqGqIN`kn^yh3%=^$ZZcR3_uc<0p0+`GN3jrh-sBYr== zdM7{S#myqk-?4`HpWWi~{4r7SzRB^~M)p(Lz~{P4>h?H@^>Qs3oc z4#8Z=e+UTd%CL6Dr~7d)YLxT`hCmZov+>o7KjFnM)xPm}Vc#Y^$!$#{ex6u+=g*3@ zRSDM4Dq?MxeFauHu-OR`cX&rH(T@I}bQHPvL>|~>!Vs9Et5zs{Uv~()TF(w6RecXr z@C>Km9k%wL=a=8E)BK)Iq5XCV+II+GmXR}L11I@8zI(gslTj5Ebe96WzUM8RC<5@e zqy-f{00-_eAbtFeu+QNd`X4s%>)t3{?dGeu*{ELRm$P)iRv_u$yirBcS;b-HSQ?4p ztvZrb%IM#Mj)+R^hq!;hF7N^o{UMy> zevYpPq-Rd(iyfZb{X0|YMJvc0l08#n%0y7#FLtstKPw!f_VCRzwBoF?YbgU=lU6)^ zLN*8uh=gopatVjuWb`*Li)D1bX0QJ@;!I*{vM%>o_ttZ&|f`kk@;CV}a9&?uZ?* zQ9{{DD5nt0w8mTDf#JI?d>2o;lsM)s4%s;7F9(t`mdVp6)>OikZu7c!h5E@#<|ncW z5TdEWXvOIs#m;eugE5bj)CV4R1g1$4YN&9W-09VxQES@?Xm)efX(f~4p+bIA}QTK=gGt@D|bdJ_z?R`aEN)4&0>M?KGOjUX)M&)oI z)R9`ox5MijmE4xC+s#wp{ z4$S6*xwvxk5o_<`u(&n@y>W#jb#aj&2$ApAfWPH^v;i}&Ab&7(7YEF^AXyP{^;He{ zI}XeS%=9t20ms_=IACYC+XBLWHVB{xK?`fQyY`aV#u4Oe?}MnwZd;I#`8+D&DbG9B zZV!Q?z*;suYLw3pOSSZ%^@jhm~hopjoxZahb2rI`k6{-2+Msul0V`9 za0m;i?%fT2ll9 z1isu^I*n((m2Q#Kr{wsbpO7xE;Tsst`~6GqvALaC$;cCxoIIo6*TFnbg^9AS3-)cf zFcbfdktE9KQ#Z41!$97hb&I2wF;>$g?**5{*u?X`wA3cAbQwz{W3z9Ze0ZS=6X@7Y z?eVAMU3*;i%7yK53nqo==iL6u)QDN+A)E#g9{c&z4o}%TQ6W$pxpU=W3$eU zFtCDPCn37EZ@hk`{Ms)Y&oQKkbE(DGmJ0hk>8wc;TK+Z&epf` z%NQvJBB@@C(vKb+SbNM|>Cv>tiRgpeqptT3b`Y6P@|Xb{0G;T-fOvl7u<((Q>SI9_ z#|b*ng*g}m8b1mDK$le;QH7~`gVTzds(H*lFhk4*z;37S3j2_7+1|LmR`>{4jP!@Y zAR*v(c$pcwHF7e#(nXYFN=OSbgbuVBagj6o+_CH|y(Q`^q8DIV<0M>1_#m6)0eR~8 z=ke`{nlhNj`I#gMYecSC!Ig#4%#U8F#h+II+Q(j8-dNC|;#5JKjWb0nr|wpr!QSGC zc~s4BlLRwuIb6vebDH1-(OV+VqYqHBF)=4=yKZ2oA{JY&-w?G!w zimp7gF6LdLRa|`5E8ySO&+E{TY&3vgP9k#)a04Njo}g@3wF zYn+UK(1V%5$B?y7lV0f5C(SzD3rn_0N2PB&3LLuU3Y5-F3AzfyxMlFOJ5b_pJfF9!49Tkxc2JgR0nm(8odj zkPusdILaZEl@7=(*>WT?wIi+eVs>gi?ll6tVPoV4LR&;%zwCS}oZ#ymn3;BXq!1f= z@(tin7jNYSTXi6>EP*8RSCGN}TX$g>n;or;ZdLxh3uNBC7h4q&_W_MUelPT-hLD#f zge<$*G9eQw9mul*5;XUj;GiUEu;W0`qCxa<+H-`>d=Sb~gs_FP^#5?RIu`kA~e;T>~3v5FcVc(vj5);OZC2gni&aaGLHe6RRDjSIrf z*g7Q^4#hNXybc>LXT(LN7rBKMR-Ju2?c*YE%0jQy`U~+E%qx~DppGLfcL>JVn8+aX zBI;2qy_hk!G(A#IMGk5)vwgyD>#=3P9M9>hG6&Yz22EqhO+0!)xD1Z%4*l=)IGYb;n*w|$$niukiD9I(Zo zMY~vDP)xx9l`~;PQ|fwojRUh@lA(a*6%5=$Ykb`ngxI}-im8E0a?2N{!i2gL6J%cR zO&cSo7g=LY^mN=2$sJSWkwRCuBH{Gr2R|dWcOCl!yGnnb(Om zj0kBw#@al`%o7lDBt#f^hUScbtC`>(#%z*P*oVn_#?sV#Q&}Ov!0Q{q`BK^kzH?boqi`OflsMMP~ueq>(;71bvnF)9^f%D?4-&=|{|x zM?c5ot~8P6+H{4$cOCG>E2KkTulIb|bP*D2=yXac9aqsu(rWU4nFX3DQvl zi3;3MQ?sb|;g}R5@?B$sLKj-HAnE9GBn3?5MSiuDP1INHi9hGPF!6mP+WD^oI0&&v z5HK3&yQ4wJSQAl){k+w!%9V<8RclAc45|UiY+M`0QnQJ)#2~Vpc!yP2N`Yjlxp4vp z`nOR606_QE)h9kiyl_|c$q!OjP zwT`{%v9_OM+qC`m;8l?Y{c8!>q3m~$j2ROv-T@{h1X#mFLth>Y`%Alvd&i#;ylC~n zKG?|`G9)HcAtAIybXLsei{7%4`YUBwNIQ|#(I)5CNPQ_G(+E{2^_Lx-VWl^Rl`^Rh z5)`8>%Cx@VqbXZvM!{~OYoKH?YaXyKwB8Q1Ua4l*A!wC%!-ySXAR%@t^Hs!tq17!D zyY3CJ=fY0lg1#P|S*2dm?j;%F^QRV`5Mr&S9} zWenXLc~O&YZ!dF*78OIi6NXD&K^nRPS^$-!=a;hQxCxoEv1vDfzkI;|G5rO)%ljL6 zEJT9}t2_+Q2>$WBN;HtC(7jx=R$?UV(5p$p$1S&p}5-X z7)~Z*m2}BQVB|~;T|&VrE}5>3epRMdTz{~Vp`2>7Pn7pn8feKiG4qInjl4BwvkJ*QgxaI<0Yp;x=}SK{d%OHJ5lxmupK1 z7yu@wP;O3Z97*WY8b?4c%R2W#h?}j7HWsEXr<&M@&#xuJD6HBvZ|haw(0^;(FfC`n zAxWcqvAs5(@7fUvD6z&r!D*#rMO#&Bz$S0PM8_}Tx}SWv>AQxo&7g#e?^+zIY{VH_ z@IOVGyV;>y$JMI}W=HIcuK?317okWTBfurn^mYefr1L7`i?$dF^C5)&6StJjVeyP` ztPF3Y7Fv|epD00-T;eV8Vj0O$bKn8iJ_v&!BwTynz;|gUe9zYNSN$*dqRnuLausqP z_Et^oP?XD(5#CyFE_5O{BE$kW6VjWp3oX*+V> zdVLTdxu=+0aJ`>};;r3=Xyb$EFicL3RNI(HHEy@y_L2-RB(GTsHO%eA8ae(g%WziK zIr{treG9#~n#YdSB|A{mDrS-h-9 zyr616gV}&(D>E5zz;8`SNH-jpI7mY%JQ}u*=~mpdyD8y#JGb8dz=mdJmw(3YVD;`@ z<*<%9s)2*ouOYTY2|(`~L4}4%^(Ns%k zFKr{K&N8nPAsTfeK8JgY9o^v5R9<#=OH55TY{5Oa`Qf9=y1;?#R64@deo94oO;>YJ z>b(|e?ByZ{VK&^}AP3SeFZQC=Wn^7vPgj-mPA;t|i)lb{D#BQ@iO{~VqP(r^wCLK3 zq7m{cSwd-A+e<5|aH;X;-fi7c7iW5QnuIte*=}ix?K%-CpF^t7Md?PSE3Bom;YD4? zVKb3!xejM?A*@seFz2SQRJKSAZNttkeBRzYFbThNX7MW9)_p#hV_0czWZJMcEe)!c z+Mbr$P%On!f|qm1(2R>TOF1q9CIF}kDa;Z7A!Dh0$Yta@9R7#i ztMK6D1T8`sV-2I(k}w*IadYs>%q9zGUME(tMX4J!rGoO61%qB*<0i|!sC67FK@B%qSy6U0ZgO!&`5JDrzM^Q3n^2Hd z?UJwdYNpt!01s<+DCb=XTm6%Ct+mTL{b7e@xY&>CfbR4mLx-9JRE-c^VICGT0!#_M ziw`GEk$PC7pJnuo{wKUqlf_hNdv~OP{k>k_?nI#ZHe2#<6LQ3) z8(VMmQ(nn7&c2y_3{!4;O4rPwtMFf}$T3)pj1xc$HS6k*WL@P3TjYLBA}X4j_iA1z z*8WD+*L2kB9)5ur-H>BESfc0bFnv9+7C+67Kn85tZ z&+WttMvkn2a*&H<@9Khz(xhG9zBH-Jc4Fe+;_j7VjK7UE(_cjKM+?Xk$z28uYXpW^ zX;Up=MX6OR89<)i>PB)T)Muz!6k`45MAB;?%?MlaPWEYBDnL{Jy8$yDz3*qq;qfJVXQK|d!p2fdX& zVRNY$-79R)n*eP7ydki_`*h)Cs#HLSzyi0cH1;bz=2ePkF6$TnNHRf;k~ObTae~PB z@LC)($fVSt5SXS&q6U}6y7ql6Ltp`hjoMcADWlBrEylN&fn3Xo2+*L}V zo=_f|Rc8ivO?PNIdNK_;s8$KA}?xK#3r>yO5khlZt=`?Cr&mnV%zme*g_u44GzUFyrMkJ?pc#}0UVPweWO>h8>wjW zBARkrBYtfs6>ln4f5T3)0pQPMlin<0U1BSuB4>({QPn{wqkNx{AXn$ zv$WJ5ZcRKT@5)2{bXL){}?s_kDu(s>%sYBmdFKXz+mZgTBUtCcZ zR8Y&#uc#BCm6JJ9O7mSVP$+|2=Pxsc^08l33n~ z>$tSl8!wAt4_fKN3ANX1rDGw$!JjbS*?~E&=Oe-jC2C=>RrLj(*lJ$6%tlHKV$e$( zgAnUft)_nUE4!#$HqTcpeGw((5kK!A^v-uR^f5j|`;}ihg%Bo-tkxJNL{-aUfz=XS z?f;QDYfA#sX7mzLf7COk?a5S4C9fP&|E`j6kkdGom*|*tJF&JcC)BnD&D&1t@>Ex+ zEaU9P&e_aT~2qHK&K2|!Cd6Pj$KC8*1e#Kl7=6r?zE=wo?l{iDWj^%hL`|zk_JMS#q z_JSN9AK%b>;-ImvZWfSJY>Tg zFAmRdxW3}GZO=Fk9m#&YHNSOAL%DW%CEGJnZ;|kpWOAPLl6Fb580Vux_ErCVo9?h_ z8u!6{&40K3pcvN)oBZ0Xx9 zBS6|PHLN{ida;9hRxvHx-D*Ec_V8Ep^Pk>8y3Apf5PS<`*?$4{#WOhxoCZ5pNvon> zDJnBy z6}31aU;hVfiNPXwVPSC6LcEKyF=a7M=?fjyjmpM&9-kLx^1mp3u73ll^AxDMbyPFT zZ~fA2C5s%oX^JY`c^&7uxYk-40>PdQa%HL#6WRQEoF(ug72BboYG;5t2|Asp1d)_= za1;n+VG8O+Nch7N@7FFhLBLpAH1{&@P~w=gE&r2RFqW69Q`WN0Jz#rd@p*r&MR6kkxnMeRhfn_ z@!~F2beB;QKvz_hh5Ug`jMwlTg&~Qo$##|Q)V-}-ubAxT5Ei@?m0|s^BKr#UZn?o;}h_ZgZ12d(Lz0FoUlo#s1lyJEPUdfa?>XDo< zs2c@u#X>Lnh^i7a(q^~cmyei8W3U!^B?C`Ili;EK6u=L9Ndr&X%XU0WGVn#i;WGc-^i;9Ae{a+vlI32>)TkDOkVKI# z?5Z&=DtUq&4{OLnGZ++AK4J-z7%pPAhBkKwEyq$V%U(gXTM>U1Ctw$LVkL_q8ec0a zmv~ua8|=!o2C~6Qumpo0pqCZ}txjlaA6o5@`h-_;KC{mK71B9&?`Cy(Sdem6Jk%u) zH5a5@r39;i_xofH)v*Uvi~{p=tj-Jnt5J6v{K8bk)L=CU1gwyMY5gEhwxS~ zk66c;2kMYLY=Oy&`{}?XCSpZYp=C)Y0CF80pd5M>NQcH?U5zH!4Ixh2qHefOM)M~;`JOnC< zjso=oy&|U)COo$j>pkBk%X?JUPu}Te8Vfql1)M2)Q$GmgE!J;BW|*0f z=BxyDi@f?a-6#qVkHUY@f4^OSCy{T?cJQo_1t?b?vdFeunhoRCJd7wdgw5HJ4EQpy z)07ze<;foizA|S3e_(}9XSWQQ-}|{KButa$s3^#`uOsLtzpK)r01^x=^%0tCN!cLX zwBx{JRuXA#!#3ekHEdSg6KZ0aQQ)Y&_#RV6?dc#R7FC`^B})(nP$RJwbBQ)-;y|^@ z-k>64s}80=QO;vPMeHrAh)Aa3D&kz55x~7usf6?<2Z)V*;m{O#lh7j*34*B>IW1pG z;3Bk8kPKE3txn@64DcuknczSLqk;HIch`%&C*M+5i|kzlUevG_d$Fs<5Pm?|79<>b zsTVYkOqNu)!CYQbdK@`7hCdzKMskO7=n%3taBNM>+VBkLy3W#tIev8`Jmg04=@AR) z9_0B8fkW63phj_OhstRH7IrGjvfmObpu6ASp};&;CPpX?iDHVg$<;1Wr{0%LhkB>; zVqD0u0+Cfhcjx-(O%JRt^^V02piBgFQ|3u=xfit2a^^u*7;t%azOt&c;U?Xkuc;_Y zc_i~{av4ok5vnfdYx36OAZ0MM6T-|=&q_bDVE^(Gx4X*aeb_*MqgDMfGmQ>hiLJ5<+ z6(w|~KESZ%Jqg}Ak}SUmks{E9o9psJ$B^!}d9jf^G2|Iq8#DcBu0LizFJ=RN6}=LY zS%BBd)d>8~MKo?;Q5$(P0ZQ~?5VJWGYo>cA-AASIUUNGRO6@f5I)CtdFKS!|(Gg@N z6=x%E$-?jv#JC?;B=>|;E` z5kaNSBQQO(ccsIs$O|Lt5XoHgDyN+DYOiekBPLabbEU5}K%4q&WD|`^C4a7FC_L0A zz7`-Uk(Sqa6Nb%+vR+YA@IRD0(G`-qodR$SLNDhKySW4nN!lcdn9|u$Q_lG#J&d2| zBKGnpy7;~FM3>Mi=2_C4Y(~cOhiNcAIALJU96#-yQRc{4hQ#Ll5JBMdu#iIZ)l{31 zwmCdyf)o^0CZq?wpfN$Xa$xBogW_c)N7NDCqh8S%B25*}5GATWd?-~M@o}$h9I=W( zjq}C*-Iu+VohcQ22a+Ng7nXE2VylG1)zsY^aI#Gps{(6`Oqy`3|@{KBdLoF{Mp(m7vq5+dSrWBA}ObJIprA z=DvAe&PJu>EQ(Tg;$r+$q{~Mf_83>a$q-ZjOBi6`EC7bxMH;Uk^s+#tM%FTDRe+6Q z+Ah0(GY7(mWuSdxW49_24K{ildyta8&x;;?4Y}5~5;B_GiM=y2;y|k0Z!-FMqZv$q ziQMr%7}D!eqP=%IAXCWG0SQj&K+PjU5z=*$9WlKQ$DXFIz#R(#;h$9E7+a@D&GVv0 zA7&1=#)q2uomr{rV4sT&cF^Hj!1|a8*)Xnw;C?}r5r$=m&h0CCiB~ElIeO^bG7^W z`j7}4$+-}{JsCN$_3p+KPdd4tSk{K=wDmKM#A2b`r2Mngp2dTP$Y~8parov z$+0!AUDB3JE6!5q5zE zf+X=@iBmB0cM@9bb?;S@KM{BkdW9SSvloLOH>4*Bf;zn-SRBB`4&W{YaC{Cx7#R<+ z1o1>J6vWv6_?!m2uXBhN!gL%Ua=MfodE4u~W4mp%##GP?$7%dNlj$ziZuM^ZU1cja?@(6EWKo1kruk!*i zsd{Z1Dt3)Gwnj~%M+?-6*&IppMfgOk1fb~0jv|VD{<*7~@JJ!zP&;A>JWEj-cs?eB zKcum?8@=U0wbdSF<6-I9xFDSlAAFpZERk!y;@wIPxTet~#Yqo=xX3Aq`pH07UqBZL zbW2Op!03hSQ?f0s^LagzPy6-OMj>uLSvWU%KWw%QoDP>t4sMUPK`3469Hgr8O%BMm ziFz9&Lye_Jy6Y~#q+TuAWJM(iiKjnVoqwN(An!D-~61G~!yr*T5Bo-jZVk|i`f zkday)?)J)hAOpdBHQW6WFKV;F6y6eq1{NhBa4RjM-yxIbR@yG!O53$y67CRPfOM?g zyp=YjZpg+CwtH|ZE$dOgdjZOIyDPUKPHWr);MrI`7EPnTXSpQhSTxa0;d^%z2o@B% zZeX0K+Q#xZAA)fuZZZkZG*11vH%DtQ_36=?2OYW{t>FRV^6|olyqqD@%Apq>ED}9v zIM^i)<}Y#7@N{CFS*LiorZ-u(+a2yyVQcBJWC8|G{|3|)+QC<{mq99}9DHcKgC)FP zaEmI|qfVEU#Xp5B>A%b#%C=dtw^aie2+pU)1cy`Y_ zR9ND9mm7)U(ke;PCmph(cRWdYTH{td&My_Q4a7SQ{l(Bd@tujM>VW)g@X5Stad@-i%Q2O)fdeGn64cV7jY_=v-mGt3M*2KyQ6zHaWVEdTz zwb|O z7H%^opc!*AHtu`ST=}3gDMYGnX(8dZvTN?dX+2~5Y=+ls*TGYvZx(6G|8F89Kv4rxeU8b$s10!+qMDHtIPTyHX!{Qp zqI$9j8#MMz$om}YG|zNt!UsSZLZ?D+Fu-#_|6r3Uaj_cE#S5}GFUqFO3qpadV-TW& z06MXqvEq_gdHUUVH>(&FdUgHy}!GZTaa;Y&bFhlVUrUu8(r=^t~){z zmZQ$lY6ogFL_REL8G(t;5_hx1zwbDV;>yM(K3Yb|NfZj(S&w;(?TJd3AG}NwuF_5> zVvYA^dLp_m%3z7@BpiNH_79 zc*zkhNfUuIg{gt1h{HaIrkeP%HyOoY7zHC@w19MOfVr1=G@iA&%$&fkum)WnRrX`J zu3_7L$|c^0<~N)G*e6c+_yu zso0|pdU@TWQRpzGplr`XhMSZ*M>xFlQ(*>Nq~MXmpL*X>slO~Q}7KNHJN(;{L;-HaC25=>npS zC4>R7gwT*!WF|`zEf_cEfDdq7_{k8c-^~&jg@V+h(F4wYU|HWwA-OCWZhye%dzHu$ z7G+uxA#G_ULIPJ5NOxLk{KUYStW}M!QYsQYzt$94Pp9)9hhNAY)E$m4b~e)iK-oxf$-ekhUSof4vf!Wgx~8!^kN(lmk{h};v-}4>jY|#SH~^D2Gb+Pqc>f?1vDuA2 z5QUz8O>P7RAJP|*t#tqUIEuzStWcwhN zQ;uUQN`vD?k)pc_B-aqx!e8ae;CcrRR3aGjh6P{7a%@fUTPYfE*hgz_8I>~F$k@(C z5XlQ^B-D9N4R74rhHor2tS1M?VLf6W#U+|^D@u3Je{u!o5LLl>93e^s{iwpPq02lj zc8j!6kJD}Oz8SqSIVX?dadu6ZLhPU?5Tp2DGs=r;hD8L4RBcOEh!#*MuHZnKVq`DS z&zn&MtW9ZGW}GAhUfI0~B*DD9*xfr3mjP^}VFX@bW4M6`^AHfE%APbWNcG>FKa*Qk zr`O$SWPC+;ny__pZn#q;6(>#rTyYZC^B%mav7F5VcPi0<_Op0Z7cg=&#DggV1=EB( z8ElilYjjXuPsz9^iV7McHmN~z+=#AD*wU~l*sHL`KT_YyOjA3 z!qi2@1l;Yq84%AqK8m`iZ+Y~u;vQacuYQ;L!UGz*DkMpzZ22`JNgnae$u2--i-l=Y zzA)}h!`>ie3PEqLz!NqF+*8+}`ldh{CR!NmgL_9!-LL0A)Lsl3s^dh=%r*tI3-phM zP17t*)BH|s+NKFNI?DV&%E--_bUh#f2>jo*P##0)#(ZD3(AA~ZU_*5+l>0{6^;EPRbxsA^*o5~E6k5MgV=LbyMs z7P>$1fJ8Tttcj|#*@tElRJYVR2w@QMl229qoUN-y%H2{>{3vs)^}aj29h)%I`+~Hm zqU|~;8j)eE4k}2nzQ|`&h^cUgl}LRw-<403&C<}?D(Rs2miofGDWMMst}lIwIw)GP zzPJv$e-ulj>7bwUhD>o19=yF`Po+-$K`4X!7)P=tS%T7n9tOpXfAcH(yrHKjlRvi; zYnz@M53l}^YHrVmX?tqT+&iXIWJBQ8M}tw53DE>0rUyAWiR5m2O&3D~pu^U4mphW7 zNg|M(;#y+ev4WA9nvv#gf$g>T-ZD#>A}lhUaR&IsPs+@LynO z=7el$Sazpa_u(U!J=hpKBIb_l$VC*!_zo|koxeP6@O*zaXWj)NAg^x>Oypz4P{G5Q zG-P%glpaFqF#vr%2y7)_qtILKI1ZqZRWjd+YLrtu z09RTs8^)s3P5mr zvVnlg6;bwZwO&R-vhngEw9`Fl%sHI3yg^tN-Rib8%KJdTR!GUA&c@KnHO|bV>sU1`@F?Zs##slO0xvjgJ)_hMEj~Ua{>}Hpm)()Y>gK0 zoH-zoAR1hQ%QtbGBba!OWqsC~3zC>f5Y)trABEpq{F-<3^WIGjq`_H@P&M8KfHuL&b*%N^1p`Af9&w1Ziy+@E_y9oN>9lJRvfy-xE4sM(5*qE?Igm5fPI(GiDx zZsK-&{U55=Pjv;Icvau=s$>nNE9cKmo?ODF0c;h-LDR9qP>w#>-IH8~A zJDo14Zpqta30ibNe8gOqbw3cV>we#1=j@2K_V}EE@A93-B+n{qf8Q;2coet# z46#7oE%Jy8hwN3^O&J^C%+O)_dib7?%&d?M>DIA9YfPx~`(Ap!DtgS+6Ywz8Dkhbl z^GcsqJw{IP#C~~ap7)XuD-YrRCxBmdw0%b88PqC>*mAUpZoD4i)ku4?u|S77yrC9* z>JfS#+%5LFY^~j_F_b8V-6q8&qXVf;N<43jRFUh2vh9aa7MlR>>&|vu_6%;;mj6P! zX2bl74-#*d-lMyq6I(QefZ~2rHe!{4aQ&=Yxz5b8xC91cR6E$V!^C3BGv_4FE)Xpf z57K&p`~kGv%jqPn3#Kq2(QiA9EG!#(=o|P_U}3Ah8IxO57xUOlpPrOf<}h5Yyv8ek zS=kHjMyhFOy_bznAx=b@EI^n+@rHsd%%#xf%N&wv$nGL~`6Lk2_@86%+?x4+%O94^ zPn%dXbZ|uzB%NDodNkM8E5p@7a<2BZN8phwyW4#{6~IFQJP>f)@$#H-;z=i+baHt5 z`}?QG=a=L2E2r?8K7IP@PMz`kH@xw*H=X`wJTqqwWN*Q9#u;avdFGjK{nfL6O`f;C z?QOsQ8}j_-Z^`rax4(VXZ{ztLJnwkN*=PSQp5Obuch3I(KlsBx{3AZ^de^(({hm2< z=KS%Wycf^=-v9nT{j+oa`~x5Si@*G?pm4sK3)eSurdWQ#Qf@DjC70pYB#2&DUWjSoHWaT= z(v~GuyBP2SQ<;5s7QM)aX;&3|NSgK%%e;i$BmU3uuOLep*&FQ&s&Pu(p6nfXKL0#= zP*_I)i;_glOvDSfF8DC}MpR(zvlWtQpMtt0&yV(lNilr%ut7!a`N(SHh5_*toZdPk z8@f)75&9Fw%3xC%;0*NTA2A?uob4M*iNx3Y*o?LP11uW~tXH*aWK++_ZyXMQf6s}8 zevN5fgh1)mY${~`P6GHlx}I2F*weryy!soI&30ZiM&`pR5i-@by^2Y^!ux0uZv+`4 zAOffn5Rvv9W|%Mp&WSfJlw#VV>i-x7;<1E?d<&pQ(3HJ872t-bupFLOHSgRoRD+`J z6ETFDYzf-H#9sqBf?JjuA;k)U{!-uSORTV{4sWm~UAH?0Q{7(ZmYH5IvV}Y^3cBJy zJ;6}ZfJG^qZ^j}nv|Efz$D$j5f!SkW`<$(>_svw-msZbx)0N%(j-Ig0;X^(umv>A?EIsI`AU z-W(!$xAZoA^OGLjfziADXXvV+K)ZT8UcF!6w9!Lv7S~hB%my^;__Rec@`0p$jLLC1 zUF-%sNTw6El^j?~JGjRx(2fo4eZ_$(M&nQfzwz63V6^diWO{JlOFAmf!5{0J;=r~f z1FK^KcX;z6ZoUX)H(==aM`KU&kGOF1qD13(WGhRm6Cs}F7o_yLD^HkxO~q%HU_M$td1C$UL=)|)WR`*(p? z6dh`!?B-dUCykXepD%FOXJgnslhR~L50yZi4U@w-Dg%11TsDC3;IufX|Bt&jfw!wD z^2hJ;w&a04l_d(weMyiPHWNwUIfMA_8FYec+(u>`$LK7^nQ?}3mLI?QC33Sr2!s#< zg#7`5ge4FVBy1WsiEM(PL}bax78Mmo96?e3-)~j*sdM_AdjrV)=lA(tKIGkdPFHnz zb#--hRdw}8!LzwVUiR-F!ODb&Ho9M@m7! z|3H89C9>=L%E$Vb4q(K5es_G5^FD#;q;{5H(GewPfIrY0!uCEIg8B2)_3T!aQ-qsd`+!CNQe4YYfjVFsfl{!9j;55c(xUl@F2v|iy9j5rcb zR+zTh?=jvF(|+HLexy2Ts4J@kZ6nG6F5#?GWZvn_!nl%k`VE77(mj#5J;U2;Q}7@Z5?MAb zDtcB~QB)CF5i9jL0FG4$$5pvlGjrmptak>d0C{&N{$MHJh<_v8=N53!5K)IS;ZQON zgqh)z=6o;yptAXNR3WRo9l*VU6(5L2EE%)Rrh_%KA$2xi!uRjMkjiV3etLFg9g8RO zFP2S>9aLY)#;WL&!w`Q{(1*4B!w^0wDEvKGYhF#HOg*4aq|v&yK?xj?&h_Cc@52My z2STcc2VZhCmCwO4{Ij7t*aNB1%MvqDr%-r5^s{vdb$=KvE6ECe6>*ZVS)16beKD*m z1p0L5>nv?_%SPh?7TJf}>l)B^4fZv+^2rc6(H!KOp!i08+^^Nq&cFT{39`5FK+mDIkAph0Au(k=Xy??_g9a8`25bwHVSsNs@m^5k>6!Z>(GWSQ zBuJDkswb<3GI%l^0&=1);GJwCe2Ur)-IUzTXOr|%UU|RU>JGb-bZ}0l4x|(onc=TLG0$|I9folqN8yNkBMw|@)a9Fbw;Je;`^(_$yJR*E! zBPN3O`|O6?I){PDp+s?IN!xI9-HB>>$ZOfC3%X=cL(W{9d!(bv)SIg%hS0z{jd2U0 zZzCaTV;ngzEDAx5f0!+NbAR(T{-qbrX1h)tWeK18k9(8Me5%KA0vl0zk2iTwI?QVI zI`Kp&SUp4F80P5$j9f$05$1;l7!3)>%7?+z{=_@$A3KcoM?$|%7Z4cx?lkyG0fw=O zB6R4>O6$`8Io!_*aGJq7?EFc)SknHy0E38z?a=NQ4rBBdKU7EB{jvZffg?7SO1ro} zzbe3JEXhgNWzT5D_m{okP=#2M%W7#DU45jM`ws@`aTWS-7?noHRU3!Rt-+pPk*$o1 zOoxDTCO&458=C`&rSw)0-9WTNF7$G?Qm4L-5?y?;mo{A-xr1`sJo<}-UTN!+r4F=3 zl~YMVR(2`0dcSUaN7@PKh(P=NHmF8ZUBI!au)l*&#$+^cYyDx3Us2FcUYr!yWoYYrwc?z^O zrgGwOb_UhfIs21pcq9TwZjZ=|SxN?x7X`Ish1Y79D2t)xsVvT#NPMjH^44J{SwK0o zvlv0Ps;snHHOAOCY8AusSGHId!C`99aEaWJ{!)+SPA(@cPW7rxS};y0S<+Ejtac!q zZxk`?kA{S~Tsh54eoLn_-IO9XXc0m>!N#T^x|*H`3Y!bJ|dqLFPR$-R*z z$$br9f#INph(e0_0!X&#~PeU<_@dU)8xMz7F1e5v9gGrj;VRQ@5ueP`lbs z@WN&?lA{=X#W|=-*FA55wC?#IjS_*(|7@kA!5NykF`NdI^bkC$A<@ohcm{4`mBYq+ z?4kJ^8SShA8pzr>g&#y|?6)66G~PaS+B*)MF5wsL$M}J0jA>(QTDFK}E#n`|3{=P1 z`~eoq3&Jxxr+ETCGdzX4IR=}z`v61o zojbE9rw)pQ;2HpLG-B(HdaI#vhSOSR}5Bc*)Uc;=p-YYln(=ovogJ45XIi^joxleJ;-zg za8hA2bx7q23Sa);^a6;eixJ<{y{+mwd^x(p+93Qc3 zl~SbLBKIvvY?I~nAZl{witJ?BE1E3#Igm{jDwd`7f={5OPbIq?T5I4B?5VixzR`PV z4SQW5-0wI_(^W;8JmdcCxa=OahDcsWt4`$f6U*T#tQbXCck++JA!YG`n1)73P!)1dtSxv z7a9;lx-I_-BDzER>ag8Ko7yO-x=?vYw^+FJUV=Eyzz{fC1r|h|tl)MPpOXW3*9T?D za?x@ZIju4v(v+%>9K~ps-9$jt(Iyi&(Fb%U0AM{rBcvH6d9{{#c~y%zLxWnxwdpep z5eawnT!fpNAE|Z(q&#=UG+KxJttcrst?{5eQ;^h>agwf-hegFm9Zq=ifN2FX4daW7 z%6r8PD&{^qhr;lv%AQrOb#$_=@^+gXkeSr#C z|DM@gX>2>=+7FX}c0{s&@I#1R|LDg){t1m(|MO2HR2_lph*EDKr~c)mTh;m11=WSs zMb*XCCDoM7|3J1?r=cjyieThU%FJkubVC(d z)`A(F+AdJ9jC^1td{1)RX`9XTZ=6`!=Y7fpBhn%+V_!}tsj;EXjX^m zT~F+Sv`$V81aYrnK9Rz8j#p%Y_7sj`@`HP_qA)h!jX9Kw!jnUCZUm9Q(LFEOwCG&} zXZ4Y~(OQ45!M(wu12y)MXB36)X)Ej6_8*_o7z85*GEwZtw!OYA9>N1?Z@EzAfe*vwQg9a7l^Gc>(m&0BC?488zTBendP zP&+KWW;>XpMojXt0udXBRB{f4uQ^(i5%Yz#Pj#G3Uw0@YZA(czt+EU4S8@i)+kUeb z|E3yzcxo!?yfwSUfvk=%1Bk}pm_2Uwk~Vrg!Iuv67>1oetU068cO8c= zqhCT(()G|Lgze&Rm~K^FPh&VyAB+*`2`Yr*(41=sCfg*h%bxDPNT?&(XCBR<7c!JP zBz+`V^SEHcfM%t34lDNb?4W+n>$j=*k3gJ!^Omeoi-V&cavJza#pub#$&h>OhA6Zw);RgSpXt%u5>j zFA)71FJxOEFDY9c$k5L*^wT5s|KTMK{pX2(OGn!Oz<~_?-vG!N>T!Q>v+%F+-hyGM z^KK*i{FSoLSQUyU=O;!Flct3+bWBe=CS#4il#Wo9hw4CKtga)Z zuHtI-b1!KF_DMnCapL@^0~z{15%l4>owLp_yriMWS*8qYJ?HOjDfxKr{V)B!4cW)~ zoA;1kK9Vc5p7yP}|^I^P)7?a)M?^xl7$SdBn-#CQT_(8l+ zRzHe_v5*}i`U@wSUvwZN+y`<SYdQ{d-rgsmJ+y zW8y<{?~nKQ))l&`d4>f-cMR@XbjTcj-(>T}B~3Am)At(3#H@Av1_^Dd5+rnbbsrBc zI%A&XwOMP2QCsqj+-St2bCm=QPJ-oqq>F%GC7Jy`*(xTCPQB_>$Lpl=B?O zYMqj+^?ZMCwGQFE@oDDfx^<)i-O^-9H>)3!9f%7Ymo<=XYGOMgVvP&Eq{*hea;;kH z@2ypn`+vij z#;VW;2Qu`#3;G$gIOOjNFKNudjI7D>j=S9}9mvqjX%dXa>g=fq{GJo>;#Ufg2qmp1 zPjvKnUR40vO?rcaTM_!Jy`&L~fw0LV9npW)fvh)-Oy^ka7ooq#OB#B56qD0Cj>Sd? zGW2vCa-X?dWH-6iOPX1LVW-Kjzn>lIcnf!(0~z|)8~R-%^w)byLr)K4a$H9<=M4^I z=ovifi{Xv_-sUg8{5CB&VCluWnntqRMxjC{V+Xl*vm>QH{tC8=wBiC+sAfrn@+H(BxY5eR%u8+BBXZV!B}1xf+%t= z(x}U%KoPU!GV%-o<;iLy5Py+=l^m1Ejkb_jPj>;+DFsYC$kHvDI>)M#!|nArQ%ygXob~L_}`Ab~HcVn_)3UlmfWtXRs!hxa`>0mv>14a>xGWbo94< zwBMBl5SiDd8Q{wE!leO=Fzyw?IKJxWmurY8r#tT~3J1X@>OP#QgnEn-;w{5^45Th$ zlwIxokvBMY^+$3R2T!3HAZQVuSfk-XC`eN%s+fT)aH|MuQ?*+~w!k$V=bG=e$%s8o zwN2Q|6VarictG-$DE?%AD=lYCYUS3Z2f2CCv>odf3|J1;PnmivVKa_`1D7~j3&>_m z?O4)#rk9VVuICEdhB(_I;&83EQ*Y@Mu}III z7INtA7@C|Dri4I{jmFp5#%Ur3jFT7Q=4hJG>-?s!zmKiwZgP5USbstt#VbT#;yOwM zw|9$OowuekZm2s2qD0_RIi3n&98yVIG?U9elIn^VT54;FaUO=ivN%&x<(6E(PXjw) zXvrB_ft%b|l?4K+;E=ajs(9&gcnuuRI6TO zhX`qvkm6J5mR_?2C$yxtmM%5Vz0cAo%7r}2-hjq zE6B$q!g4^km*Tq(1)q&5NCs;L3g#{;0Ofc|L6G_hFDXc$@sa{#Ld>9w<&o=h z(A3yXa&#O`xuBH-*lNaWB3UqD@^FqNIg$=So7m|o(j^Y6(}3ay7nbVEPc08;D-G9n zbF?4t$V@xsMUDa;ABQ{9i)y`OWEps#bD^-?1$9G=g+zo9?cpo0qp-YuavcRDFsZ%L z;E|npYKGLj6KXP)oRNjBYpc91b}a>D2em;FDACkC-3yyGNU>QSAzJoSRe+yzSMqAF zuK{NbRYU+V9@zLPy(mjU_INA`r=mJ;Kc0`6jK&C42DIz3xnw~r1+jEEG(}9S^ohNk zn+YCRHU5+fBJ4Q)Ff?TzUz2m_E`moLpT*Kqb&*vZe>s$m@`fyP!25Oab}dWh!j?(s8gGJn0@dPxv;6m3 zJRdRzA+L*UibxW$FZkG_2W5^GPPMFdw0f!~9AllDj9J2b1q>;7CCzSeVLRRNT&t;E zD7s|Y@u(c(QyBIm#qK z8MAIMl)u*}ABu;`hg?*R9!|a~m0Y&n2kU5jG{XE(G zsdI1#%QGvY%jHWwe6>|-==WNsPW4)CmBQkf&T}4E;E9})xqfui{L>wg&UGpx9H*gI zHrLN|JlE@7=jm}7W&UY^NhsN} z`6YKN<#cqh28!-jQ7LA}xZ6{8QAAZyeKj$U5G!8e7q(IeTjND^fvi&*S{Dt$VlS;~ zCwX6Jl!=2w&?uo1MHk|8sE5Q(?IkfPa(|3!Kxfv}WVPKPByBF#KF8WE+eJe7dtd_U9bT>4u zG85Kp=oK_o*}Z-v(i75e2t{@M$_ntMtrVs447DgJS;8~Nc4j&c|508aWjpb z8VOUj9YzyN?@p7Ie=VD)ZBZJ8_)+O3_V5Ke=ZW5+JyYIoTXUq9pX9(seOn^v@3$~H zQT?USyxUTSW<-Kh!k&&vOb=w;3uS`Mohad{> zyC<7$lnZYOf$cZ~?wd3T!P^z5BU{u;8)CzaU1PdC!k(Qi!M+C<2~iCcHieUEZpkfw zgFWK@k;s!Snwzop4w%qDW((%1an~8Q;+R4!#Lrzz=ezN`&B7fx3xP5=@Go;TlZ36P zPRj%i+Z)bz(Vo{Q>&T>_)Fvus6t5zqD7}z8BIBLeP?CcM>kVLqG+iO{EwjDR;%1sL zI?VkPvwg_!Q3|JT+g*&f%6nkL0m)kfG1Fm(1e-6kq>BH#esTY($Ya9Piixm>eaC!J ztBN$1-a-_RhbX~!q=G%gR_X{1H zb&$p|+%1KMjb;3gOsPluy&ae^*%~yU=QDO+TEIl{&?PF^7z8Z<#|8f*%*B*0llZCkfs8gkj-6a=uFsy;9z`T(^@D3V;afCP>h+{t3wXvn*= zt4s&`kd}6>?s~ZF0)u2z=HkV;t)1bv%Jb+lZ-=$|4Z@?CaT9wvQFxcCWN@Tz5|XAT z&`rquday zxz?MI8mmFfvKyCGrCCYW^vl@J?J9G&3gtz-8hU2Dqf28|G#h1KrCqB7c!O}R0nD;n{fGnaZ@sw?WI5UX8wQ3tySOEoyf zCDoH_ppq!c#Bo_tLw1ltBzR(&Kt@~Styu1@P>GV=)2Ub)5wX&!F|vp55!u^Gb|GAg zjFrD|Ei&nl26EH=!@0$|j1Ex6;kqB~HBRzosD`6{QRvuNVo1VXBLZ-Sjf^JD(q*ZX z4hoVkf7>aqJh_@_Ltm-wv^L`ZVfXnF;a7FSh4?Mabiix}YE#uMDVG|J-@+BzZwNPN z;~MQ`}cH52Kk~Ry^>WI}DREmUCl4X>X*IwH&Y=I3doz620vmnJ~vw*m!)MxrE zFp-Q5PFP;*vX_?tQLvZTZfCyo`7qi_Yt{Kcgrc{A1+unW=%`#0c&C`?+=V2;D;$%x zU+(@*^Me8_`_ILSxsQpACPNJ@iw{z+E+E^PQXYCT`U-t)A|Sc=8HHtn=}*=nKa(ny z@FA2N2<8q3iA`3TW+y0CrNRWg)a%y?N~3{D7qcC4T#9x8Sz(%7CSYbxTF8~feF|^( zrv8d*G?5fGu#^fITsb3&5ZZeB1S6~*dzV!^V(9kRo z)dnUs!N^d*E+dFarZf8>nO@CBs*p%;t>g`&)NsWPwo{sqyp4D{GZHV1Ftr@U_*Ps> z7q(J}bP`IrEW?+rNQ)iNb=)k&%j8j}9Z9u6AJHW-JeBnTFC6E#1}bLQaaTwEk)~H> z?i9G4k``t#)Cvo?tU{LRu+73PMQ~9Lr$kwi_@cSh zg~mXk>E*TuCrKbf=1v@+X%Q|F>c-QesK6CJcTUn2X#kE&zas<6{{Kwmr;61bp!wfDMW%c+R{R$!?o0mzEk=Hx&|710u!Ou0tQ9m+J8p1En*Ba($@*dmPlU>EjanC@6| z#D~FX5+Tw0L`1cjf6GKQdVrQv`Nj0bAtxF}Y^9x9vavtjo2^2xPZn)9(uLPNHhPGS zwvB5@HYb4uLfcdxD&bImzliBh@S1c(tR`w*jsyFau0CuCi-ny`dAE}nHf4=D6Cz2o z(yK2RbDrD-th>Dcx7x`69W-v~mWx?E05d#bQWC3=eQK1du3U3!!R@Z38_3BB5sE z5BfLX#!wTlih8jf`Nv!?`bRF&JZZhJ9hpvVA3D7{UH8<5t35md> zS-`Hy*aEQztRrT}%J+Q4jZHl6r#pdd+);IHGMdlgSz4TFCD%3w{%x?*tTZaGuT(_M z;0bU~TEk>DGAy%|DkGY@M!N&Dahz!BV}|l{NVwN}7arm`cy0jB^XAzA@PK#P-9mTP zczNs2aDTE5r9~ zW5Mcl__E8DbJsQY5@kf1Vf5Ru?xGNds71e90-p+c=sMzeR(haY{}Hv`%6yVz^9 zvvo62Tk_O5vqu^=P|cfoi38c$y6FJoaF1nshTk)znR{sg@<3L1`OVqtjJeZQdVK+i zN7}tPm-%};$~O&BM{8sf3h!I*r7c4AL>C&_l&0T7Om<-eM(C*3mwN?QXcW;@G(fzQ zB)<$r!-oQIT9!&XJH+Ngk8p2r+^6Vpzg=+K(AscsjO)N~ADN}W6^_Qn@c^JO%# za%9wiD;?4XbALc4D{s#ZNz4IXDFE#UARm&e{JjmyzS11w&zCn2m}VG^cqp!R#5NTB z0CA_G*eV%vS%yk>W?y5o&>Q_#$8AF~MR32up}5A;*ibOS-@b9#a@)AQ;^q!|IUU#BiRjBxtq9(PXg%6SYc!s;s3^Zl1!aTrCLuS z@oK~VWPGD0H)-BNjDw;VjBimfh9i9Zmr)-|PoTi(EfI}=O~bS&Gaye8zKm)&H@lK2l#N`k!Z6i0SW814H=W7>y{BrY4u z`&nFb>6Z`Xy)3Y6fAewvg;O$&C! zHjXp}k!ahKpbt5ujiaOm_-@Cf2H!6LNyu2b=soQ3Z5$b>?Bo21zqjVnlH~6n_4k&N zho)eE|Cqlw{5bbZWs8b(DkkZek2hsMa7gpZt9L7i)-sqU3NT_G>R8Xy1sL7AcBYxQ5^@(1M>D+MA@wg}S=w!oLc4)sReC*X+4lF); zn33b8`42d@2iKuZCzsxSUp!a~T9<|q*63GKS+}0qW-s(&MkOl;LKQEvTU=V25gi;L zX5PUtsEevk$1g#O9SP?E@#{$~do+~SuGg^heE}JB0fgn4LARh*!u7c}ia%XP>~8V4 z&~8&(+GKq17DL+lWG@a*lKOOk$Bvv%C~i!Z-Zz4hN0WVPBlVG5`XA`rUBUFJbF

diff --git a/packages/chain-sdk/config/tsconfig.json b/packages/chain-sdk/config/tsconfig.json index 50c9cc5d..903cdd82 100644 --- a/packages/chain-sdk/config/tsconfig.json +++ b/packages/chain-sdk/config/tsconfig.json @@ -1,10 +1,8 @@ { - "lib": [ - "dom", - "esnext", - "es6" - ], "compilerOptions": { + "lib": [ + "es2021" + ], "baseUrl": ".", "target": "ESNext", "module": "ESNext", @@ -36,4 +34,4 @@ "exclude": [ "../node_modules" ] -} \ No newline at end of file +} diff --git a/packages/chain-sdk/src/api/basic.ts b/packages/chain-sdk/src/api/basic.ts index 649c4577..b7bba165 100644 --- a/packages/chain-sdk/src/api/basic.ts +++ b/packages/chain-sdk/src/api/basic.ts @@ -20,18 +20,24 @@ import { TxBody, TxRaw, } from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/tx'; -import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; import { makeAuthInfoBytes } from '@cosmjs/proto-signing'; import { DeliverTxResponse, StargateClient } from '@cosmjs/stargate'; import { Tendermint37Client } from '@cosmjs/tendermint-rpc'; import { toBuffer } from '@ethereumjs/util'; import Long from 'long'; import { container, inject, singleton } from 'tsyringe'; -import { BroadcastOptions, ISimulateGasFee, SimulateOptions } from '..'; +import { BroadcastOptions, ISimulateGasFee, MetaTxInfo, SimulateOptions, TxResponse } from '..'; import { DEFAULT_DENOM, ZERO_PUBKEY } from '../constants'; -import { createEIP712, generateFee, generateMessage, generateTypes } from '../messages'; +import { + createEIP712, + generateFee, + generateMessage, + generateTypes, + mergeMultiEip712, + mergeMultiMessage, +} from '../messages'; +import { generateMsg, typeWrapper } from '../messages/utils'; import { eip712Hash, makeCosmsPubKey, recoverPk } from '../sign'; -import { typeWrapper } from '../tx/utils'; import { Account } from './account'; import { RpcQueryClient } from './queryclient'; @@ -85,12 +91,25 @@ export interface IBasic { The function returns a pointer to a BroadcastTxResponse and any error that occurred during the operation. */ broadcastRawTx(txRawBytes: Uint8Array): Promise; + + tx( + typeUrl: MetaTxInfo['typeUrl'], + address: MetaTxInfo['address'], + MsgSDKTypeEIP712: MetaTxInfo['MsgSDKTypeEIP712'], + MsgSDK: MetaTxInfo['MsgSDK'], + msgBytes: MetaTxInfo['msgBytes'], + ): Promise; + + /** + * + */ + multiTx(txResList: TxResponse[]): Promise>; } @singleton() export class Basic implements IBasic { - private rpcUrl: string; - private chainId: string; + public rpcUrl: string; + public chainId: string; constructor(@inject('RPC_URL') rpcUrl: string, @inject('CHAIN_ID') chainId: string) { this.rpcUrl = rpcUrl; this.chainId = chainId; @@ -141,14 +160,14 @@ export class Basic implements IBasic { } public async tx( - typeUrl: string, - address: string, - MsgSDKTypeEIP712: object, - MsgSDK: object, - msgBytes: Uint8Array, + typeUrl: MetaTxInfo['typeUrl'], + address: MetaTxInfo['address'], + MsgSDKTypeEIP712: MetaTxInfo['MsgSDKTypeEIP712'], + MsgSDK: MetaTxInfo['MsgSDK'], + msgBytes: MetaTxInfo['msgBytes'], ) { const accountInfo = await this.account.getAccount(address); - const bodyBytes = this.getBodyBytes(typeUrl, msgBytes); + const bodyBytes = this.getSingleBodyBytes(typeUrl, msgBytes); return { simulate: async (opts: SimulateOptions) => { @@ -166,6 +185,14 @@ export class Basic implements IBasic { return await this.broadcastRawTx(rawTxBytes); }, + metaTxInfo: { + typeUrl, + address, + MsgSDKTypeEIP712, + MsgSDK, + msgBytes, + bodyBytes, + }, }; } @@ -206,6 +233,80 @@ export class Basic implements IBasic { return await client.broadcastTx(txRawBytes); } + public async multiTx(txResList: TxResponse[]) { + const txs = txResList.map((txRes) => txRes.metaTxInfo); + const accountInfo = await this.account.getAccount(txs[0].address); + const multiMsgBytes = txs.map((tx) => { + return generateMsg(tx.typeUrl, tx.msgBytes); + }); + const txBody = TxBody.fromPartial({ + messages: multiMsgBytes, + }); + const txBodyBytes = TxBody.encode(txBody).finish(); + + return { + simulate: async (opts: SimulateOptions) => { + return await this.simulateRawTx(txBodyBytes, accountInfo, opts); + }, + broadcast: async (opts: BroadcastOptions) => { + const { + denom, + gasLimit, + gasPrice, + privateKey, + payer, + signTypedDataCallback = defaultSignTypedData, + } = opts; + + const types = mergeMultiEip712(txs.map((tx) => tx.MsgSDKTypeEIP712)); + const fee = generateFee( + String(BigInt(gasLimit) * BigInt(gasPrice)), + denom, + String(gasLimit), + payer, + '', + ); + const wrapperTypes = generateTypes(types); + const multiMessages = mergeMultiMessage(txs); + const messages = generateMessage( + accountInfo.accountNumber.toString(), + accountInfo.sequence.toString(), + this.chainId, + '', + fee, + multiMessages, + '0', + ); + + const eip712 = createEIP712(wrapperTypes, this.chainId, messages); + const signature = await signTypedDataCallback(accountInfo.address, JSON.stringify(eip712)); + const messageHash = eip712Hash(JSON.stringify(eip712)); + + const pk = recoverPk({ + signature, + messageHash, + }); + const pubKey = makeCosmsPubKey(pk); + + const authInfoBytes = this.getAuthInfoBytes({ + denom, + sequence: accountInfo.sequence + '', + gasLimit, + gasPrice, + pubKey, + }); + + const txRaw = TxRaw.fromPartial({ + bodyBytes: txBodyBytes, + authInfoBytes, + signatures: [toBuffer(signature)], + }); + const txBytes = TxRaw.encode(txRaw).finish(); + return await this.broadcastRawTx(txBytes); + }, + }; + } + private getAuthInfoBytes( params: Pick & { pubKey: BaseAccount['pubKey']; @@ -235,6 +336,11 @@ export class Basic implements IBasic { return authInfoBytes; } + /** + * Get the body bytes of a transaction + * + * EIP712 sign or private key sign + */ protected async getRawTxBytes( typeUrl: string, msgEIP712Structor: object, @@ -301,11 +407,8 @@ export class Basic implements IBasic { return TxRaw.encode(txRaw).finish(); } - protected getBodyBytes(typeUrl: string, msgBytes: Uint8Array): Uint8Array { - const msgWrapped = Any.fromPartial({ - typeUrl, - value: msgBytes, - }); + protected getSingleBodyBytes(typeUrl: string, msgBytes: Uint8Array): Uint8Array { + const msgWrapped = generateMsg(typeUrl, msgBytes); const txBody = TxBody.fromPartial({ messages: [msgWrapped], diff --git a/packages/chain-sdk/src/client.ts b/packages/chain-sdk/src/client.ts index 8632d7d2..11050558 100644 --- a/packages/chain-sdk/src/client.ts +++ b/packages/chain-sdk/src/client.ts @@ -12,6 +12,7 @@ import { IPayment, Payment } from './api/payment'; import { ISp, Sp } from './api/sp'; import { IOffChainAuth, OffChainAuth } from './api/offchainauth'; import { IStorage, Storage } from './api/storage'; +import { Basic, IBasic } from './api/basic'; @injectable() export class Client { @@ -20,6 +21,7 @@ export class Client { container.register('CHAIN_ID', { useValue: chainId }); const account = container.resolve(Account); + const basic = container.resolve(Basic); const bucket = container.resolve(Bucket); const challenge = container.resolve(Challenge); const crosschain = container.resolve(CrossChain); @@ -34,6 +36,7 @@ export class Client { return new Client( account, + basic, bucket, challenge, crosschain, @@ -50,6 +53,7 @@ export class Client { constructor( public account: IAccount, + public basic: IBasic, public bucket: IBucket, public challenge: IChallenge, public crosschain: ICrossChain, diff --git a/packages/chain-sdk/src/keymanage/index.ts b/packages/chain-sdk/src/keymanage/index.ts index 3573afb2..441b2ccf 100644 --- a/packages/chain-sdk/src/keymanage/index.ts +++ b/packages/chain-sdk/src/keymanage/index.ts @@ -1,5 +1,5 @@ import { createEIP712, generateFee, generateMessage, generateTypes } from '@/messages'; -import { typeWrapper } from '@/tx/utils'; +import { typeWrapper } from '@/messages/utils'; import { bufferToHex, toBuffer } from '@ethereumjs/util'; import { SignTypedDataVersion, signTypedData } from '@metamask/eth-sig-util'; import { publicKeyCreate } from 'ethereum-cryptography/secp256k1-compat'; diff --git a/packages/chain-sdk/src/messages/index.ts b/packages/chain-sdk/src/messages/index.ts index 8dd3a356..8a8a657b 100644 --- a/packages/chain-sdk/src/messages/index.ts +++ b/packages/chain-sdk/src/messages/index.ts @@ -1,3 +1,5 @@ +import { MetaTxInfo } from '..'; + export const createEIP712 = (types: object, chainId: string, message: object) => { return { types, @@ -22,18 +24,28 @@ export const generateMessage = ( msg: object, timeoutHeight: string, ) => { - return { + let res: Record = { account_number: accountNumber, chain_id: chainCosmosId, sequence, memo, fee, - msg1: msg, timeout_height: timeoutHeight, }; + + if (msg.hasOwnProperty('msg1')) { + res = { + ...res, + ...msg, + }; + } else { + res.msg1 = msg; + } + + return res; }; -export const generateTypes = (newTypes?: object) => { +export const generateTypes = (newTypes: object) => { const types = { Coin: [ { name: 'denom', type: 'string' }, @@ -77,15 +89,34 @@ export const generateTypes = (newTypes?: object) => { name: 'timeout_height', type: 'uint256', }, - { - name: 'msg1', - type: 'Msg1', - }, ], }; - Object.assign(types, newTypes); - return types; + if (Array.isArray(newTypes)) { + for (let i = 0; i < newTypes.length; i++) { + types.Tx.push({ + name: `msg${i + 1}`, + type: `Msg${i + 1}`, + }); + } + Object.assign(types, ...newTypes); + } else { + types.Tx.push({ + name: 'msg1', + type: 'Msg1', + }); + Object.assign(types, newTypes); + } + + // sort types by field name + const resTypes: Record = {}; + const unsortedObjArr = [...Object.entries(types)]; + const sortedObjArr = unsortedObjArr.sort(([k1], [k2]) => k1.localeCompare(k2)); + sortedObjArr.forEach(([k, v]) => { + resTypes[k] = v; + }); + + return resTypes; }; export const generateFee = ( @@ -107,3 +138,35 @@ export const generateFee = ( granter, }; }; + +export const mergeMultiEip712 = ( + eip712s: MetaTxInfo['MsgSDKTypeEIP712'][], +): MetaTxInfo['MsgSDKTypeEIP712'][] => { + const res: MetaTxInfo['MsgSDKTypeEIP712'][] = []; + + eip712s.forEach((eip712, index) => { + if (index === 0) { + res.push(eip712); + } else { + const str = JSON.stringify(eip712); + const reStr = str.replaceAll('Msg1', `Msg${index + 1}`); + res.push(JSON.parse(reStr) as MetaTxInfo['MsgSDKTypeEIP712']); + } + }); + + return res; +}; + +export const mergeMultiMessage = (txs: MetaTxInfo[]) => { + const msgs = txs.map((tx) => tx.MsgSDK); + + const res: Record = {}; + msgs.forEach((msg, index) => { + res[`msg${index + 1}`] = { + ...msg, + type: txs[index].typeUrl, + }; + }); + + return res; +}; diff --git a/packages/chain-sdk/src/messages/utils.ts b/packages/chain-sdk/src/messages/utils.ts new file mode 100644 index 00000000..3066b93b --- /dev/null +++ b/packages/chain-sdk/src/messages/utils.ts @@ -0,0 +1,15 @@ +import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; + +export const typeWrapper = (type: string, msg: object) => { + return { + ...msg, + type, + }; +}; + +export const generateMsg = (typeUrl: string, msgBytes: Uint8Array) => { + return Any.fromPartial({ + typeUrl, + value: msgBytes, + }); +}; diff --git a/packages/chain-sdk/src/tx/utils.ts b/packages/chain-sdk/src/tx/utils.ts deleted file mode 100644 index cc71f36c..00000000 --- a/packages/chain-sdk/src/tx/utils.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const typeWrapper = (type: string, msg: object) => { - return { - ...msg, - type, - }; -}; diff --git a/packages/chain-sdk/src/types/tx.ts b/packages/chain-sdk/src/types/tx.ts index 8e821b15..a056c6b6 100644 --- a/packages/chain-sdk/src/types/tx.ts +++ b/packages/chain-sdk/src/types/tx.ts @@ -30,7 +30,17 @@ export type SimulateOptions = { export type BroadcastOptions = TxOptions & SimulateOptions & Partial; +export type MetaTxInfo = { + typeUrl: string; + address: string; + MsgSDKTypeEIP712: object; + MsgSDK: object; + msgBytes: Uint8Array; + bodyBytes: Uint8Array; +}; + export type TxResponse = { simulate: (opts: Readonly) => Promise; broadcast: (opts: Readonly) => Promise; + metaTxInfo: MetaTxInfo; }; From e3b5568ef985dc8092f70ba0a5e6d957882432a9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 7 Jun 2023 15:52:56 +0800 Subject: [PATCH 038/433] chore: [ci] release (alpha) (#98) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 2 ++ examples/nextjs/CHANGELOG.md | 13 +++++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 9 +++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 12 ++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 39 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index ea6d4d72..a2d97cf7 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -13,11 +13,13 @@ "clean-dogs-joke", "cold-suns-accept", "cuddly-eels-knock", + "cyan-ties-cross", "dull-dodos-prove", "early-parents-divide", "empty-ducks-wait", "fluffy-pumas-yawn", "fluffy-snails-explain", + "lovely-knives-smile", "ninety-meals-impress", "pretty-bulldogs-notice", "rude-tips-rush", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 07487086..0cbd1b04 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,18 @@ # @demo/wallet +## 0.0.2-alpha.16 + +### Patch Changes + +- [#97](https://github.com/bnb-chain/greenfield-js-sdk/pull/97) + [`6dc142a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/6dc142a1b99063b611e177c43e0ac2e5103147e8) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Support Multi tx !! + +- Updated dependencies + [[`be23cd2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/be23cd233cfa2e9ee723d9bee0faf30f38dc4325), + [`6dc142a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/6dc142a1b99063b611e177c43e0ac2e5103147e8)]: + - @bnb-chain/greenfield-chain-sdk@0.2.1-alpha.9 + ## 0.0.2-alpha.15 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 881772a4..cedfa592 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.2-alpha.15", + "version": "0.0.2-alpha.16", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 5ee2ec90..3ebe1b8f 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/nodejs +## 0.0.5-alpha.9 + +### Patch Changes + +- Updated dependencies + [[`be23cd2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/be23cd233cfa2e9ee723d9bee0faf30f38dc4325), + [`6dc142a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/6dc142a1b99063b611e177c43e0ac2e5103147e8)]: + - @bnb-chain/greenfield-chain-sdk@0.2.1-alpha.9 + ## 0.0.5-alpha.8 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 33988f2f..11602bbd 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.5-alpha.8", + "version": "0.0.5-alpha.9", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index ef4c6f6e..8a0a3f9a 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.1-alpha.9 + +### Patch Changes + +- [#96](https://github.com/bnb-chain/greenfield-js-sdk/pull/96) + [`be23cd2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/be23cd233cfa2e9ee723d9bee0faf30f38dc4325) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Head Group + +- [#97](https://github.com/bnb-chain/greenfield-js-sdk/pull/97) + [`6dc142a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/6dc142a1b99063b611e177c43e0ac2e5103147e8) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Support Multi tx !! + ## 0.2.1-alpha.8 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index d0cad26a..3cfb5508 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.1-alpha.8", + "version": "0.2.1-alpha.9", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 573528f16c5a73f04d64431c667be5bb59767801 Mon Sep 17 00:00:00 2001 From: randomx999 <84435529+randomx999@users.noreply.github.com> Date: Wed, 7 Jun 2023 17:00:12 +0800 Subject: [PATCH 039/433] feat: Allow to have sp auth fail (#101) * feat: Allow to have sp auth fail * fix: Replace endpoint with address when auth failed * Create tidy-dodos-care.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> --- .changeset/tidy-dodos-care.md | 5 +++++ packages/chain-sdk/src/api/offchainauth.ts | 19 ++++++++++--------- packages/chain-sdk/src/types/storage.ts | 1 + 3 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 .changeset/tidy-dodos-care.md diff --git a/.changeset/tidy-dodos-care.md b/.changeset/tidy-dodos-care.md new file mode 100644 index 00000000..ed685764 --- /dev/null +++ b/.changeset/tidy-dodos-care.md @@ -0,0 +1,5 @@ +--- +"@bnb-chain/greenfield-chain-sdk": patch +--- + +feat: Allow to have sp auth fail diff --git a/packages/chain-sdk/src/api/offchainauth.ts b/packages/chain-sdk/src/api/offchainauth.ts index 244a3c9a..263a06e6 100644 --- a/packages/chain-sdk/src/api/offchainauth.ts +++ b/packages/chain-sdk/src/api/offchainauth.ts @@ -47,13 +47,13 @@ export class OffChainAuth implements IOffChainAuth { const spsNonceRaw = await fetchNonces({ sps, address, domain }); const fetchSpsNonceFailed = spsNonceRaw .filter((item: ISp) => item.nonce === null) - .map((item: ISp) => item.endpoint); - if (fetchSpsNonceFailed.length > 0) { - throw new Error(`Fetch nonce failed for sps: ${fetchSpsNonceFailed.join(',')}`); + .map((item: ISp) => item.address); + if (fetchSpsNonceFailed.length === spsNonceRaw.length) { + throw new Error(`No Sp service available, Please try again later.`); } - const spsNonce = spsNonceRaw.filter((item: ISp) => item.nonce !== null); + const spsWithNonce = spsNonceRaw.filter((item: ISp) => item.nonce !== null); // 2. generate signature key pair - const seedMsg = genLocalSignMsg(spsNonce, domain); + const seedMsg = genLocalSignMsg(spsWithNonce, domain); const seed = await getCurrentSeedString({ message: seedMsg, address, chainId, provider }); const seedString = hexlify(seed); const pubKey = await getCurrentAccountPublicKey(seedString); @@ -69,7 +69,7 @@ export class OffChainAuth implements IOffChainAuth { chainId, issuedDate, expireDate, - sps: spsNonce, + sps: spsWithNonce, }); const signRes = await personalSign({ message: signMsg, address, provider }); const jsonSignMsg = JSON.stringify(signMsg).replace(/\"/g, ''); @@ -77,7 +77,7 @@ export class OffChainAuth implements IOffChainAuth { // 4. upload signature and pubKey to server const res = await updateSpsPubKey({ address, - sps: spsNonce, + sps: spsWithNonce, domain, pubKey, expireDate, @@ -86,8 +86,8 @@ export class OffChainAuth implements IOffChainAuth { const uploadSpsPubkeyFailed = res .filter((item: any) => item.code !== 0) .map((item: any) => item.data.address); - if (uploadSpsPubkeyFailed.length > 0) { - throw new Error(`Upload public key failed for sps: ${fetchSpsNonceFailed.join(',')}`); + if (uploadSpsPubkeyFailed.length === spsWithNonce.length) { + throw new Error(`No Sp service available, Please try again later.`); } const successSps: string[] = []; res.forEach((item: any) => { @@ -103,6 +103,7 @@ export class OffChainAuth implements IOffChainAuth { pubKey, expirationTime, spAddresses: successSps, + failedSpAddresses: [...fetchSpsNonceFailed, ...uploadSpsPubkeyFailed], }, message: 'Sign and upload public key success', }; diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index 27068895..5c605dd3 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -307,6 +307,7 @@ export interface IReturnOffChainAuthKeyPairAndUpload { pubKey: string; expirationTime: number; spAddresses: string[]; + failedSpAddresses: string[]; } export interface IReturnSignWithSeedString { From c35e735e913c7c5db245ed724a8c46ec436bf2e4 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Thu, 8 Jun 2023 11:12:13 +0800 Subject: [PATCH 040/433] chore: TS lib (#104) --- packages/chain-sdk/config/tsconfig.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/chain-sdk/config/tsconfig.json b/packages/chain-sdk/config/tsconfig.json index 903cdd82..72acf6d7 100644 --- a/packages/chain-sdk/config/tsconfig.json +++ b/packages/chain-sdk/config/tsconfig.json @@ -1,7 +1,8 @@ { "compilerOptions": { "lib": [ - "es2021" + "es2021", + "DOM" ], "baseUrl": ".", "target": "ESNext", From 4efba33c650b1c9124cea5bf03d7bac8eee5b3d1 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Thu, 8 Jun 2023 16:46:58 +0800 Subject: [PATCH 041/433] feat: Sync cosmos types (#106) --- .changeset/olive-bikes-judge.md | 5 + package.json | 12 +- packages/chain-sdk/package.json | 6 +- pnpm-lock.yaml | 489 ++++++++++++++++++++------------ 4 files changed, 325 insertions(+), 187 deletions(-) create mode 100644 .changeset/olive-bikes-judge.md diff --git a/.changeset/olive-bikes-judge.md b/.changeset/olive-bikes-judge.md new file mode 100644 index 00000000..653897b3 --- /dev/null +++ b/.changeset/olive-bikes-judge.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +feat: sync protobuf with greenfield 0.2.2-alpha.2 and greenfield-cosmos-sdk 0.2.2-alpha.1 diff --git a/package.json b/package.json index 4abd7052..b1045a9a 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,8 @@ "@babel/core": "^7.22.1", "@changesets/changelog-github": "^0.4.8", "@changesets/cli": "^2.26.1", - "@commitlint/cli": "^17.6.3", - "@commitlint/config-conventional": "^17.6.3", + "@commitlint/cli": "^17.6.5", + "@commitlint/config-conventional": "^17.6.5", "@rollup/plugin-alias": "^4.0.4", "@rollup/plugin-babel": "^5.3.1", "@rollup/plugin-commonjs": "^22.0.2", @@ -29,13 +29,13 @@ "@types/chai": "^4.3.5", "@types/mocha": "^9.1.1", "@types/node": "^18.16.16", - "@types/react": "^18.2.7", + "@types/react": "^18.2.9", "@types/react-dom": "^18.2.4", - "@typescript-eslint/eslint-plugin": "^5.59.7", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^5.59.9", + "@typescript-eslint/parser": "^5.59.9", "chai": "^4.3.7", "conventional-changelog-cmyr-config": "^2.1.0", - "eslint": "^8.41.0", + "eslint": "^8.42.0", "eslint-config-react-app": "^7.0.1", "eslint-plugin-prettier": "^4.2.1", "husky": "^8.0.3", diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 3cfb5508..82e3e4e8 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -53,19 +53,19 @@ ] }, "dependencies": { - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.10", + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.11", "@bnb-chain/greenfiled-file-handle": "workspace:*", "@cosmjs/proto-signing": "^0.30.1", "@cosmjs/stargate": "^0.30.1", "@cosmjs/tendermint-rpc": "^0.30.1", "@ethereumjs/util": "^8.0.5", + "@ethersproject/bytes": "5.7.0", "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "5.7.0", "@ethersproject/units": "^5.7.0", "@metamask/eth-sig-util": "^5.0.2", "dayjs": "^1.11.7", "ethereum-cryptography": "^2.0.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/strings": "5.7.0", "long": "^5.2.1", "reflect-metadata": "^0.1.13", "tsyringe": "^4.7.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1a60d3b7..87f6c211 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,8 +7,8 @@ importers: '@babel/core': ^7.22.1 '@changesets/changelog-github': ^0.4.8 '@changesets/cli': ^2.26.1 - '@commitlint/cli': ^17.6.3 - '@commitlint/config-conventional': ^17.6.3 + '@commitlint/cli': ^17.6.5 + '@commitlint/config-conventional': ^17.6.5 '@rollup/plugin-alias': ^4.0.4 '@rollup/plugin-babel': ^5.3.1 '@rollup/plugin-commonjs': ^22.0.2 @@ -19,13 +19,13 @@ importers: '@types/chai': ^4.3.5 '@types/mocha': ^9.1.1 '@types/node': ^18.16.16 - '@types/react': ^18.2.7 + '@types/react': ^18.2.9 '@types/react-dom': ^18.2.4 - '@typescript-eslint/eslint-plugin': ^5.59.7 - '@typescript-eslint/parser': ^5.59.7 + '@typescript-eslint/eslint-plugin': ^5.59.9 + '@typescript-eslint/parser': ^5.59.9 chai: ^4.3.7 conventional-changelog-cmyr-config: ^2.1.0 - eslint: ^8.41.0 + eslint: ^8.42.0 eslint-config-react-app: ^7.0.1 eslint-plugin-prettier: ^4.2.1 husky: ^8.0.3 @@ -37,27 +37,27 @@ importers: '@babel/core': 7.22.1 '@changesets/changelog-github': 0.4.8 '@changesets/cli': 2.26.1 - '@commitlint/cli': 17.6.3 - '@commitlint/config-conventional': 17.6.3 + '@commitlint/cli': 17.6.5 + '@commitlint/config-conventional': 17.6.5 '@rollup/plugin-alias': 4.0.4_rollup@2.79.1 '@rollup/plugin-babel': 5.3.1_k3hxcgsuh2bw3lrplgyzu2m55q '@rollup/plugin-commonjs': 22.0.2_rollup@2.79.1 '@rollup/plugin-json': 4.1.0_rollup@2.79.1 '@rollup/plugin-node-resolve': 13.3.0_rollup@2.79.1 '@rollup/plugin-strip': 3.0.2_rollup@2.79.1 - '@rollup/plugin-typescript': 8.5.0_zptcx3kz3uwp66hzhyyt545weq + '@rollup/plugin-typescript': 8.5.0_x5fg2s3voyx5jrtpaswheakfcm '@types/chai': 4.3.5 '@types/mocha': 9.1.1 '@types/node': 18.16.16 - '@types/react': 18.2.7 + '@types/react': 18.2.9 '@types/react-dom': 18.2.4 - '@typescript-eslint/eslint-plugin': 5.59.7_gnnf3trwikzd6jkxh7av7rnt5e - '@typescript-eslint/parser': 5.59.7_5ujgynla27k2qkzlnkldjwsutm + '@typescript-eslint/eslint-plugin': 5.59.9_3cembfv4vokiyn6g4ljynjc5d4 + '@typescript-eslint/parser': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u chai: 4.3.7 conventional-changelog-cmyr-config: 2.1.0 - eslint: 8.41.0 - eslint-config-react-app: 7.0.1_mdmzox53wtfwgvhjq6hwdg7za4 - eslint-plugin-prettier: 4.2.1_qokqbt3mojjgfarfkyl2cug5vu + eslint: 8.42.0 + eslint-config-react-app: 7.0.1_vmv4wunyjjq45xne6myfbgbjsi + eslint-plugin-prettier: 4.2.1_eveahbx3r3okkkxu7l44ces2q4 husky: 8.0.3 lint-staged: 13.2.2 mocha: 10.2.0 @@ -131,7 +131,7 @@ importers: packages/chain-sdk: specifiers: - '@bnb-chain/greenfield-cosmos-types': 0.4.0-alpha.10 + '@bnb-chain/greenfield-cosmos-types': 0.4.0-alpha.11 '@bnb-chain/greenfiled-file-handle': workspace:* '@cosmjs/proto-signing': ^0.30.1 '@cosmjs/stargate': ^0.30.1 @@ -162,7 +162,7 @@ importers: tsyringe: ^4.7.0 typescript: ^4.9.5 dependencies: - '@bnb-chain/greenfield-cosmos-types': 0.4.0-alpha.10 + '@bnb-chain/greenfield-cosmos-types': 0.4.0-alpha.11 '@bnb-chain/greenfiled-file-handle': link:../file-handle '@cosmjs/proto-signing': 0.30.1 '@cosmjs/stargate': 0.30.1 @@ -182,7 +182,7 @@ importers: '@jest/globals': 29.5.0 '@types/jest': 29.5.1 '@types/mime': 3.0.1 - jest: 29.5.0_u3tjahz4lx2ow4rgesw7wigoy4 + jest: 29.5.0_divpegkz2qugvd2racsiwsfxku mime: 3.0.0 rollup: 2.79.1 rollup-plugin-auto-external: 2.0.0_rollup@2.79.1 @@ -190,7 +190,7 @@ importers: rollup-plugin-polyfill-node: 0.10.2_rollup@2.79.1 rollup-plugin-terser: 7.0.2_rollup@2.79.1 ts-jest: 29.1.0_re3sd25lehf6oiq4fphel37ifq - ts-node: 10.9.1_gbfmtwj2t57hq5iibp7xw5qwjq + ts-node: 10.9.1_6yd3dr4iiziaqkscqiabuqynye tslib: 2.5.0 typescript: 4.9.5 @@ -282,7 +282,7 @@ packages: - supports-color dev: true - /@babel/eslint-parser/7.21.8_by4wejwpbvx7rwok4n5jgqnouy: + /@babel/eslint-parser/7.21.8_x4z5szbpxidodfq6bg2unesv74: resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -291,7 +291,7 @@ packages: dependencies: '@babel/core': 7.22.1 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.41.0 + eslint: 8.42.0 eslint-visitor-keys: 2.1.0 semver: 6.3.0 dev: true @@ -657,8 +657,8 @@ packages: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object/7.21.0_@babel+core@7.22.1: - resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} + /@babel/plugin-proposal-private-property-in-object/7.21.11_@babel+core@7.22.1: + resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1558,7 +1558,7 @@ packages: '@babel/helper-validator-option': 7.21.0 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.22.1 '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-proposal-private-property-in-object': 7.21.0_@babel+core@7.22.1 + '@babel/plugin-proposal-private-property-in-object': 7.21.11_@babel+core@7.22.1 '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.22.1 '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.22.1 '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.22.1 @@ -1765,8 +1765,8 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bnb-chain/greenfield-cosmos-types/0.4.0-alpha.10: - resolution: {integrity: sha512-JTZjKAQfo2e9d0PUXy9umqNNnpEOv2rvUsfAyJFijG8rnHAR1SUJchh0su344b6u0t+bhvUu/fixA3VVqaNvQw==} + /@bnb-chain/greenfield-cosmos-types/0.4.0-alpha.11: + resolution: {integrity: sha512-59ILIwpifUWUAihTbU+DDEkddH5Xz0lghxUMRGwjvlB8+MF0m5t+R6SAJWk0ZkVMVIWdIGJphjkBJn2ffKbisA==} dependencies: long: 4.0.0 protobufjs: 6.11.3 @@ -2021,13 +2021,13 @@ packages: - utf-8-validate dev: false - /@commitlint/cli/17.6.3: - resolution: {integrity: sha512-ItSz2fd4F+CujgIbQOfNNerDF1eFlsBGEfp9QcCb1kxTYMuKTYZzA6Nu1YRRrIaaWwe2E7awUGpIMrPoZkOG3A==} + /@commitlint/cli/17.6.5: + resolution: {integrity: sha512-3PQrWr/uo6lzF5k7n5QuosCYnzaxP9qGBp3jhWP0Vmsa7XA6wrl9ccPqfQyXpSbQE3zBROVO3TDqgPKe4tfmLQ==} engines: {node: '>=v14'} hasBin: true dependencies: '@commitlint/format': 17.4.4 - '@commitlint/lint': 17.6.3 + '@commitlint/lint': 17.6.5 '@commitlint/load': 17.5.0 '@commitlint/read': 17.5.1 '@commitlint/types': 17.4.4 @@ -2041,8 +2041,8 @@ packages: - '@swc/wasm' dev: true - /@commitlint/config-conventional/17.6.3: - resolution: {integrity: sha512-bLyHEjjRWqlLQWIgYFHmUPbEFMOOLXeF3QbUinDIJev/u9e769tkoTH9YPknEywiuIrAgZaVo+OfzAIsJP0fsw==} + /@commitlint/config-conventional/17.6.5: + resolution: {integrity: sha512-Xl9H9KLl86NZm5CYNTNF9dcz1xelE/EbvhWIWcYxG/rn3UWYWdWmmnX2q6ZduNdLFSGbOxzUpIx61j5zxbeXxg==} engines: {node: '>=v14'} dependencies: conventional-changelog-conventionalcommits: 5.0.0 @@ -2081,21 +2081,21 @@ packages: chalk: 4.1.2 dev: true - /@commitlint/is-ignored/17.6.3: - resolution: {integrity: sha512-LQbNdnPbxrpbcrVKR5yf51SvquqktpyZJwqXx3lUMF6+nT9PHB8xn3wLy8pi2EQv5Zwba484JnUwDE1ygVYNQA==} + /@commitlint/is-ignored/17.6.5: + resolution: {integrity: sha512-CQvAPt9gX7cuUbMrIaIMKczfWJqqr6m8IlJs0F2zYwyyMTQ87QMHIj5jJ5HhOaOkaj6dvTMVGx8Dd1I4xgUuoQ==} engines: {node: '>=v14'} dependencies: '@commitlint/types': 17.4.4 semver: 7.5.0 dev: true - /@commitlint/lint/17.6.3: - resolution: {integrity: sha512-fBlXwt6SHJFgm3Tz+luuo3DkydAx9HNC5y4eBqcKuDuMVqHd2ugMNr+bQtx6riv9mXFiPoKp7nE4Xn/ls3iVDA==} + /@commitlint/lint/17.6.5: + resolution: {integrity: sha512-BSJMwkE4LWXrOsiP9KoHG+/heSDfvOL/Nd16+ojTS/DX8HZr8dNl8l3TfVr/d/9maWD8fSegRGtBtsyGuugFrw==} engines: {node: '>=v14'} dependencies: - '@commitlint/is-ignored': 17.6.3 - '@commitlint/parse': 17.4.4 - '@commitlint/rules': 17.6.1 + '@commitlint/is-ignored': 17.6.5 + '@commitlint/parse': 17.6.5 + '@commitlint/rules': 17.6.5 '@commitlint/types': 17.4.4 dev: true @@ -2109,14 +2109,14 @@ packages: '@commitlint/types': 17.4.4 '@types/node': 18.16.16 chalk: 4.1.2 - cosmiconfig: 8.1.3 - cosmiconfig-typescript-loader: 4.3.0_waweejw4iz6ggyfdp55oyvm6dm + cosmiconfig: 8.2.0 + cosmiconfig-typescript-loader: 4.3.0_lvwppffiyrxnhtsstljkwa2inq lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1_gbfmtwj2t57hq5iibp7xw5qwjq - typescript: 5.0.4 + ts-node: 10.9.1_sz2hep2ld4tbz4lvm5u3llauiu + typescript: 5.1.3 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -2127,8 +2127,8 @@ packages: engines: {node: '>=v14'} dev: true - /@commitlint/parse/17.4.4: - resolution: {integrity: sha512-EKzz4f49d3/OU0Fplog7nwz/lAfXMaDxtriidyGF9PtR+SRbgv4FhsfF310tKxs6EPj8Y+aWWuX3beN5s+yqGg==} + /@commitlint/parse/17.6.5: + resolution: {integrity: sha512-0zle3bcn1Hevw5Jqpz/FzEWNo2KIzUbc1XyGg6WrWEoa6GH3A1pbqNF6MvE6rjuy6OY23c8stWnb4ETRZyN+Yw==} engines: {node: '>=v14'} dependencies: '@commitlint/types': 17.4.4 @@ -2159,8 +2159,8 @@ packages: resolve-global: 1.0.0 dev: true - /@commitlint/rules/17.6.1: - resolution: {integrity: sha512-lUdHw6lYQ1RywExXDdLOKxhpp6857/4c95Dc/1BikrHgdysVUXz26yV0vp1GL7Gv+avx9WqZWTIVB7pNouxlfw==} + /@commitlint/rules/17.6.5: + resolution: {integrity: sha512-uTB3zSmnPyW2qQQH+Dbq2rekjlWRtyrjDo4aLFe63uteandgkI+cc0NhhbBAzcXShzVk0qqp8SlkQMu0mgHg/A==} engines: {node: '>=v14'} dependencies: '@commitlint/ensure': 17.4.4 @@ -2496,13 +2496,13 @@ packages: eslint-visitor-keys: 3.4.1 dev: false - /@eslint-community/eslint-utils/4.4.0_eslint@8.41.0: + /@eslint-community/eslint-utils/4.4.0_eslint@8.42.0: resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.41.0 + eslint: 8.42.0 eslint-visitor-keys: 3.4.1 dev: true @@ -2531,8 +2531,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /@eslint/js/8.41.0: - resolution: {integrity: sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==} + /@eslint/js/8.42.0: + resolution: {integrity: sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -2917,6 +2917,17 @@ packages: shx: 0.3.4 dev: false + /@humanwhocodes/config-array/0.11.10: + resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + /@humanwhocodes/config-array/0.11.8: resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} engines: {node: '>=10.10.0'} @@ -2926,6 +2937,7 @@ packages: minimatch: 3.1.2 transitivePeerDependencies: - supports-color + dev: false /@humanwhocodes/module-importer/1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} @@ -3723,7 +3735,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-typescript/8.5.0_zptcx3kz3uwp66hzhyyt545weq: + /@rollup/plugin-typescript/8.5.0_x5fg2s3voyx5jrtpaswheakfcm: resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} engines: {node: '>=8.0.0'} peerDependencies: @@ -3737,7 +3749,7 @@ packages: '@rollup/pluginutils': 3.1.0_rollup@2.79.1 resolve: 1.22.2 rollup: 2.79.1 - typescript: 4.9.5 + typescript: 5.1.3 dev: true /@rollup/plugin-wasm/6.1.2_rollup@2.79.1: @@ -3783,8 +3795,8 @@ packages: resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} dev: false - /@rushstack/eslint-patch/1.3.0: - resolution: {integrity: sha512-IthPJsJR85GhOkp3Hvp8zFOPK5ynKn6STyHa/WZpioK7E1aYDiBzpqQPrngc14DszIUkIrdd3k9Iu0XSzlP/1w==} + /@rushstack/eslint-patch/1.3.1: + resolution: {integrity: sha512-RkmuBcqiNioeeBKbgzMlOdreUkJfYaSjwgx9XDgGGpjvWgyaxWvDmZVSN9CS6LjEASadhgPv2BcFp+SeouWXXA==} dev: true /@safe-global/safe-apps-provider/0.15.2: @@ -4271,7 +4283,7 @@ packages: /@types/react-dom/18.2.4: resolution: {integrity: sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==} dependencies: - '@types/react': 18.2.7 + '@types/react': 18.2.9 /@types/react/18.2.6: resolution: {integrity: sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==} @@ -4281,8 +4293,8 @@ packages: csstype: 3.1.2 dev: false - /@types/react/18.2.7: - resolution: {integrity: sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw==} + /@types/react/18.2.9: + resolution: {integrity: sha512-pL3JAesUkF7PEQGxh5XOwdXGV907te6m1/Qe1ERJLgomojS6Ne790QiA7GUl434JEkFA2aAaB6qJ5z4e1zJn/w==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 @@ -4335,8 +4347,8 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin/5.59.7_gnnf3trwikzd6jkxh7av7rnt5e: - resolution: {integrity: sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==} + /@typescript-eslint/eslint-plugin/5.59.9_3cembfv4vokiyn6g4ljynjc5d4: + resolution: {integrity: sha512-4uQIBq1ffXd2YvF7MAvehWKW3zVv/w+mSfRAu+8cKbfj3nwzyqJLNcZJpQ/WZ1HLbJDiowwmQ6NO+63nCA+fqA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -4347,30 +4359,30 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.59.7_5ujgynla27k2qkzlnkldjwsutm - '@typescript-eslint/scope-manager': 5.59.7 - '@typescript-eslint/type-utils': 5.59.7_5ujgynla27k2qkzlnkldjwsutm - '@typescript-eslint/utils': 5.59.7_5ujgynla27k2qkzlnkldjwsutm + '@typescript-eslint/parser': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/scope-manager': 5.59.9 + '@typescript-eslint/type-utils': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/utils': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u debug: 4.3.4 - eslint: 8.41.0 + eslint: 8.42.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.1 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 + tsutils: 3.21.0_typescript@5.1.3 + typescript: 5.1.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.59.7_5ujgynla27k2qkzlnkldjwsutm: - resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} + /@typescript-eslint/experimental-utils/5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u: + resolution: {integrity: sha512-eZTK/Ci0QAqNc/q2MqMwI2+QI5ZI9HM12FcfGwbEvKif5ev/CIIYLmrlckvgPrC8XSbl39HtErR5NJiQkRkvWg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.7_5ujgynla27k2qkzlnkldjwsutm - eslint: 8.41.0 + '@typescript-eslint/utils': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u + eslint: 8.42.0 transitivePeerDependencies: - supports-color - typescript @@ -4396,8 +4408,8 @@ packages: - supports-color dev: false - /@typescript-eslint/parser/5.59.7_5ujgynla27k2qkzlnkldjwsutm: - resolution: {integrity: sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==} + /@typescript-eslint/parser/5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u: + resolution: {integrity: sha512-FsPkRvBtcLQ/eVK1ivDiNYBjn3TGJdXy2fhXX+rc7czWl4ARwnpArwbihSOHI2Peg9WbtGHrbThfBUkZZGTtvQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4406,12 +4418,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.59.7 - '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/typescript-estree': 5.59.7_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.59.9 + '@typescript-eslint/types': 5.59.9 + '@typescript-eslint/typescript-estree': 5.59.9_typescript@5.1.3 debug: 4.3.4 - eslint: 8.41.0 - typescript: 4.9.5 + eslint: 8.42.0 + typescript: 5.1.3 transitivePeerDependencies: - supports-color dev: true @@ -4424,16 +4436,16 @@ packages: '@typescript-eslint/visitor-keys': 5.59.5 dev: false - /@typescript-eslint/scope-manager/5.59.7: - resolution: {integrity: sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==} + /@typescript-eslint/scope-manager/5.59.9: + resolution: {integrity: sha512-8RA+E+w78z1+2dzvK/tGZ2cpGigBZ58VMEHDZtpE1v+LLjzrYGc8mMaTONSxKyEkz3IuXFM0IqYiGHlCsmlZxQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/visitor-keys': 5.59.7 + '@typescript-eslint/types': 5.59.9 + '@typescript-eslint/visitor-keys': 5.59.9 dev: true - /@typescript-eslint/type-utils/5.59.7_5ujgynla27k2qkzlnkldjwsutm: - resolution: {integrity: sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==} + /@typescript-eslint/type-utils/5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u: + resolution: {integrity: sha512-ksEsT0/mEHg9e3qZu98AlSrONAQtrSTljL3ow9CGej8eRo7pe+yaC/mvTjptp23Xo/xIf2mLZKC6KPv4Sji26Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -4442,12 +4454,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.7_typescript@4.9.5 - '@typescript-eslint/utils': 5.59.7_5ujgynla27k2qkzlnkldjwsutm + '@typescript-eslint/typescript-estree': 5.59.9_typescript@5.1.3 + '@typescript-eslint/utils': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u debug: 4.3.4 - eslint: 8.41.0 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 + eslint: 8.42.0 + tsutils: 3.21.0_typescript@5.1.3 + typescript: 5.1.3 transitivePeerDependencies: - supports-color dev: true @@ -4457,8 +4469,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /@typescript-eslint/types/5.59.7: - resolution: {integrity: sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==} + /@typescript-eslint/types/5.59.9: + resolution: {integrity: sha512-uW8H5NRgTVneSVTfiCVffBb8AbwWSKg7qcA4Ot3JI3MPCJGsB4Db4BhvAODIIYE5mNj7Q+VJkK7JxmRhk2Lyjw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -4483,8 +4495,8 @@ packages: - supports-color dev: false - /@typescript-eslint/typescript-estree/5.59.7_typescript@4.9.5: - resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} + /@typescript-eslint/typescript-estree/5.59.9_typescript@5.1.3: + resolution: {integrity: sha512-pmM0/VQ7kUhd1QyIxgS+aRvMgw+ZljB3eDb+jYyp6d2bC0mQWLzUDF+DLwCTkQ3tlNyVsvZRXjFyV0LkU/aXjA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -4492,31 +4504,31 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/visitor-keys': 5.59.7 + '@typescript-eslint/types': 5.59.9 + '@typescript-eslint/visitor-keys': 5.59.9 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.1 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 + tsutils: 3.21.0_typescript@5.1.3 + typescript: 5.1.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.59.7_5ujgynla27k2qkzlnkldjwsutm: - resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} + /@typescript-eslint/utils/5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u: + resolution: {integrity: sha512-1PuMYsju/38I5Ggblaeb98TOoUvjhRvLpLa1DoTOFaLWqaXl/1iQ1eGurTXgBY58NUdtfTXKP5xBq7q9NDaLKg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0_eslint@8.41.0 + '@eslint-community/eslint-utils': 4.4.0_eslint@8.42.0 '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.59.7 - '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/typescript-estree': 5.59.7_typescript@4.9.5 - eslint: 8.41.0 + '@typescript-eslint/scope-manager': 5.59.9 + '@typescript-eslint/types': 5.59.9 + '@typescript-eslint/typescript-estree': 5.59.9_typescript@5.1.3 + eslint: 8.42.0 eslint-scope: 5.1.1 semver: 7.5.1 transitivePeerDependencies: @@ -4532,11 +4544,11 @@ packages: eslint-visitor-keys: 3.4.1 dev: false - /@typescript-eslint/visitor-keys/5.59.7: - resolution: {integrity: sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==} + /@typescript-eslint/visitor-keys/5.59.9: + resolution: {integrity: sha512-bT7s0td97KMaLwpEBckbzj/YohnvXtqbe2XgqNvTl6RJVakY5mvENOTPvw5u66nljfZxthESpDozs86U+oLY8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/types': 5.59.9 eslint-visitor-keys: 3.4.1 dev: true @@ -5436,7 +5448,7 @@ packages: '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.22.1 '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.22.1 '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-proposal-private-property-in-object': 7.21.0_@babel+core@7.22.1 + '@babel/plugin-proposal-private-property-in-object': 7.21.11_@babel+core@7.22.1 '@babel/plugin-transform-flow-strip-types': 7.21.0_@babel+core@7.22.1 '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.22.1 '@babel/plugin-transform-runtime': 7.22.4_@babel+core@7.22.1 @@ -5548,8 +5560,8 @@ packages: dependencies: fill-range: 7.0.1 - /breakword/1.0.5: - resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} + /breakword/1.0.6: + resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} dependencies: wcwidth: 1.0.1 dev: true @@ -6023,7 +6035,7 @@ packages: vary: 1.1.2 dev: false - /cosmiconfig-typescript-loader/4.3.0_waweejw4iz6ggyfdp55oyvm6dm: + /cosmiconfig-typescript-loader/4.3.0_lvwppffiyrxnhtsstljkwa2inq: resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -6033,9 +6045,9 @@ packages: typescript: '>=3' dependencies: '@types/node': 18.16.16 - cosmiconfig: 8.1.3 - ts-node: 10.9.1_gbfmtwj2t57hq5iibp7xw5qwjq - typescript: 5.0.4 + cosmiconfig: 8.2.0 + ts-node: 10.9.1_sz2hep2ld4tbz4lvm5u3llauiu + typescript: 5.1.3 dev: true /cosmiconfig/7.1.0: @@ -6049,8 +6061,8 @@ packages: yaml: 1.10.2 dev: true - /cosmiconfig/8.1.3: - resolution: {integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==} + /cosmiconfig/8.2.0: + resolution: {integrity: sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==} engines: {node: '>=14'} dependencies: import-fresh: 3.3.0 @@ -6643,7 +6655,7 @@ packages: - supports-color dev: false - /eslint-config-react-app/7.0.1_mdmzox53wtfwgvhjq6hwdg7za4: + /eslint-config-react-app/7.0.1_vmv4wunyjjq45xne6myfbgbjsi: resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6654,21 +6666,21 @@ packages: optional: true dependencies: '@babel/core': 7.22.1 - '@babel/eslint-parser': 7.21.8_by4wejwpbvx7rwok4n5jgqnouy - '@rushstack/eslint-patch': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.59.7_gnnf3trwikzd6jkxh7av7rnt5e - '@typescript-eslint/parser': 5.59.7_5ujgynla27k2qkzlnkldjwsutm + '@babel/eslint-parser': 7.21.8_x4z5szbpxidodfq6bg2unesv74 + '@rushstack/eslint-patch': 1.3.1 + '@typescript-eslint/eslint-plugin': 5.59.9_3cembfv4vokiyn6g4ljynjc5d4 + '@typescript-eslint/parser': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 - eslint: 8.41.0 - eslint-plugin-flowtype: 8.0.3_7t5tq2tkyt7ymjbrxl7dnyyyqy - eslint-plugin-import: 2.27.5_izhqafgqng4wcko2njiubgromy - eslint-plugin-jest: 25.7.0_m5ao5cvjmeejvpdykxvkb476su - eslint-plugin-jsx-a11y: 6.7.1_eslint@8.41.0 - eslint-plugin-react: 7.32.2_eslint@8.41.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.41.0 - eslint-plugin-testing-library: 5.11.0_5ujgynla27k2qkzlnkldjwsutm - typescript: 4.9.5 + eslint: 8.42.0 + eslint-plugin-flowtype: 8.0.3_x7gmotf647inwhqzsrebi2ai7q + eslint-plugin-import: 2.27.5_4sfevs3vpuvadhjdwbsynzgtpy + eslint-plugin-jest: 25.7.0_6p7xp42z5pxanulzlc5byrxfg4 + eslint-plugin-jsx-a11y: 6.7.1_eslint@8.42.0 + eslint-plugin-react: 7.32.2_eslint@8.42.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.42.0 + eslint-plugin-testing-library: 5.11.0_tizxnkcvjrb4cldxgwq5h3lj5u + typescript: 5.1.3 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -6707,7 +6719,7 @@ packages: - supports-color dev: false - /eslint-module-utils/2.8.0_e57gmbeodeqbdagy4uvph5troe: + /eslint-module-utils/2.8.0_psn6fw4moe3x2es443hwiatkh4: resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -6728,15 +6740,14 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.7_5ujgynla27k2qkzlnkldjwsutm debug: 3.2.7 - eslint: 8.41.0 + eslint: 8.40.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: - supports-color - dev: true + dev: false - /eslint-module-utils/2.8.0_psn6fw4moe3x2es443hwiatkh4: + /eslint-module-utils/2.8.0_z6h35y2edcwahhgxs7hcukw54e: resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -6757,14 +6768,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: + '@typescript-eslint/parser': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u debug: 3.2.7 - eslint: 8.40.0 + eslint: 8.42.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: - supports-color - dev: false + dev: true - /eslint-plugin-flowtype/8.0.3_7t5tq2tkyt7ymjbrxl7dnyyyqy: + /eslint-plugin-flowtype/8.0.3_x7gmotf647inwhqzsrebi2ai7q: resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -6774,12 +6786,12 @@ packages: dependencies: '@babel/plugin-syntax-flow': 7.21.4_@babel+core@7.22.1 '@babel/plugin-transform-react-jsx': 7.22.3_@babel+core@7.22.1 - eslint: 8.41.0 + eslint: 8.42.0 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.27.5_eslint@8.40.0: + /eslint-plugin-import/2.27.5_4sfevs3vpuvadhjdwbsynzgtpy: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -6789,16 +6801,17 @@ packages: '@typescript-eslint/parser': optional: true dependencies: + '@typescript-eslint/parser': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.40.0 + eslint: 8.42.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0_psn6fw4moe3x2es443hwiatkh4 + eslint-module-utils: 2.8.0_z6h35y2edcwahhgxs7hcukw54e has: 1.0.3 - is-core-module: 2.12.0 + is-core-module: 2.12.1 is-glob: 4.0.3 minimatch: 3.1.2 object.values: 1.1.6 @@ -6809,9 +6822,9 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: false + dev: true - /eslint-plugin-import/2.27.5_izhqafgqng4wcko2njiubgromy: + /eslint-plugin-import/2.27.5_eslint@8.40.0: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -6821,17 +6834,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.7_5ujgynla27k2qkzlnkldjwsutm array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.41.0 + eslint: 8.40.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0_e57gmbeodeqbdagy4uvph5troe + eslint-module-utils: 2.8.0_psn6fw4moe3x2es443hwiatkh4 has: 1.0.3 - is-core-module: 2.12.1 + is-core-module: 2.12.0 is-glob: 4.0.3 minimatch: 3.1.2 object.values: 1.1.6 @@ -6842,9 +6854,9 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true + dev: false - /eslint-plugin-jest/25.7.0_m5ao5cvjmeejvpdykxvkb476su: + /eslint-plugin-jest/25.7.0_6p7xp42z5pxanulzlc5byrxfg4: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -6857,9 +6869,9 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.7_gnnf3trwikzd6jkxh7av7rnt5e - '@typescript-eslint/experimental-utils': 5.59.7_5ujgynla27k2qkzlnkldjwsutm - eslint: 8.41.0 + '@typescript-eslint/eslint-plugin': 5.59.9_3cembfv4vokiyn6g4ljynjc5d4 + '@typescript-eslint/experimental-utils': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u + eslint: 8.42.0 transitivePeerDependencies: - supports-color - typescript @@ -6890,7 +6902,7 @@ packages: semver: 6.3.0 dev: false - /eslint-plugin-jsx-a11y/6.7.1_eslint@8.41.0: + /eslint-plugin-jsx-a11y/6.7.1_eslint@8.42.0: resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -6905,7 +6917,7 @@ packages: axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.41.0 + eslint: 8.42.0 has: 1.0.3 jsx-ast-utils: 3.3.3 language-tags: 1.0.5 @@ -6915,7 +6927,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier/4.2.1_qokqbt3mojjgfarfkyl2cug5vu: + /eslint-plugin-prettier/4.2.1_eveahbx3r3okkkxu7l44ces2q4: resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -6926,7 +6938,7 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.41.0 + eslint: 8.42.0 prettier: 2.8.8 prettier-linter-helpers: 1.0.0 dev: true @@ -6940,13 +6952,13 @@ packages: eslint: 8.40.0 dev: false - /eslint-plugin-react-hooks/4.6.0_eslint@8.41.0: + /eslint-plugin-react-hooks/4.6.0_eslint@8.42.0: resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.41.0 + eslint: 8.42.0 dev: true /eslint-plugin-react/7.32.2_eslint@8.40.0: @@ -6973,7 +6985,7 @@ packages: string.prototype.matchall: 4.0.8 dev: false - /eslint-plugin-react/7.32.2_eslint@8.41.0: + /eslint-plugin-react/7.32.2_eslint@8.42.0: resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -6983,7 +6995,7 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.41.0 + eslint: 8.42.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -6997,14 +7009,14 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library/5.11.0_5ujgynla27k2qkzlnkldjwsutm: + /eslint-plugin-testing-library/5.11.0_tizxnkcvjrb4cldxgwq5h3lj5u: resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.7_5ujgynla27k2qkzlnkldjwsutm - eslint: 8.41.0 + '@typescript-eslint/utils': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u + eslint: 8.42.0 transitivePeerDependencies: - supports-color - typescript @@ -7083,16 +7095,16 @@ packages: - supports-color dev: false - /eslint/8.41.0: - resolution: {integrity: sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==} + /eslint/8.42.0: + resolution: {integrity: sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0_eslint@8.41.0 + '@eslint-community/eslint-utils': 4.4.0_eslint@8.42.0 '@eslint-community/regexpp': 4.5.1 '@eslint/eslintrc': 2.0.3 - '@eslint/js': 8.41.0 - '@humanwhocodes/config-array': 0.11.8 + '@eslint/js': 8.42.0 + '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -8386,6 +8398,34 @@ packages: - supports-color dev: true + /jest-cli/29.5.0_divpegkz2qugvd2racsiwsfxku: + resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.5.0_ts-node@10.9.1 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.1.0 + jest-config: 29.5.0_divpegkz2qugvd2racsiwsfxku + jest-util: 29.5.0 + jest-validate: 29.5.0 + prompts: 2.4.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + /jest-cli/29.5.0_u3tjahz4lx2ow4rgesw7wigoy4: resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8449,7 +8489,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1_gbfmtwj2t57hq5iibp7xw5qwjq + ts-node: 10.9.1_6yd3dr4iiziaqkscqiabuqynye transitivePeerDependencies: - supports-color dev: true @@ -8789,6 +8829,26 @@ packages: supports-color: 8.1.1 dev: true + /jest/29.5.0_divpegkz2qugvd2racsiwsfxku: + resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.5.0_ts-node@10.9.1 + '@jest/types': 29.5.0 + import-local: 3.1.0 + jest-cli: 29.5.0_divpegkz2qugvd2racsiwsfxku + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + /jest/29.5.0_u3tjahz4lx2ow4rgesw7wigoy4: resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10523,7 +10583,7 @@ packages: /rxjs/7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.5.2 + tslib: 2.5.3 dev: true /safe-buffer/5.1.2: @@ -10733,7 +10793,7 @@ packages: hasBin: true dependencies: array.prototype.flat: 1.3.1 - breakword: 1.0.5 + breakword: 1.0.6 grapheme-splitter: 1.0.4 strip-ansi: 6.0.1 wcwidth: 1.0.1 @@ -11180,7 +11240,7 @@ packages: '@babel/core': 7.22.1 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0_u3tjahz4lx2ow4rgesw7wigoy4 + jest: 29.5.0_divpegkz2qugvd2racsiwsfxku jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -11190,6 +11250,37 @@ packages: yargs-parser: 21.1.1 dev: true + /ts-node/10.9.1_6yd3dr4iiziaqkscqiabuqynye: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 20.2.5 + acorn: 8.8.2 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + /ts-node/10.9.1_gbfmtwj2t57hq5iibp7xw5qwjq: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true @@ -11221,6 +11312,37 @@ packages: yn: 3.1.1 dev: true + /ts-node/10.9.1_sz2hep2ld4tbz4lvm5u3llauiu: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 18.16.16 + acorn: 8.8.2 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.1.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + /tsconfig-paths/3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: @@ -11239,8 +11361,8 @@ packages: resolution: {integrity: sha512-KaI6gPil5m9vF7DKaoXxx1ia9fxS4qG5YveErRRVknPDXXriu5M8h48YRjB6h5ZUOKuAKlSJYb0GaDe8I39fRw==} dev: false - /tslib/2.5.2: - resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==} + /tslib/2.5.3: + resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} dev: true /tsutils/3.21.0_typescript@4.9.5: @@ -11251,6 +11373,17 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 + dev: false + + /tsutils/3.21.0_typescript@5.1.3: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.1.3 + dev: true /tsyringe/4.7.0: resolution: {integrity: sha512-ncFDM1jTLsok4ejMvSW5jN1VGPQD48y2tfAR0pdptWRKYX4bkbqPt92k7KJ5RFJ1KV36JEs/+TMh7I6OUgj74g==} @@ -11347,9 +11480,9 @@ packages: engines: {node: '>=4.2.0'} hasBin: true - /typescript/5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} + /typescript/5.1.3: + resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} + engines: {node: '>=14.17'} hasBin: true dev: true From b6d558d941512efb0b4893e57a06ab71b21432c5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 8 Jun 2023 16:48:52 +0800 Subject: [PATCH 042/433] chore: [ci] release (alpha) (#102) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 2 ++ examples/nextjs/CHANGELOG.md | 9 +++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 9 +++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 13 +++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 36 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index a2d97cf7..6660c722 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -21,12 +21,14 @@ "fluffy-snails-explain", "lovely-knives-smile", "ninety-meals-impress", + "olive-bikes-judge", "pretty-bulldogs-notice", "rude-tips-rush", "strong-snails-count", "sweet-feet-hide", "ten-suits-crash", "thin-bears-rule", + "tidy-dodos-care", "young-bears-scream" ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 0cbd1b04..1f1e7b21 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/wallet +## 0.0.2-alpha.17 + +### Patch Changes + +- Updated dependencies + [[`4efba33`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4efba33c650b1c9124cea5bf03d7bac8eee5b3d1), + [`573528f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/573528f16c5a73f04d64431c667be5bb59767801)]: + - @bnb-chain/greenfield-chain-sdk@0.2.1-alpha.10 + ## 0.0.2-alpha.16 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index cedfa592..c3c51709 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.2-alpha.16", + "version": "0.0.2-alpha.17", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 3ebe1b8f..eee330f7 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/nodejs +## 0.0.5-alpha.10 + +### Patch Changes + +- Updated dependencies + [[`4efba33`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4efba33c650b1c9124cea5bf03d7bac8eee5b3d1), + [`573528f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/573528f16c5a73f04d64431c667be5bb59767801)]: + - @bnb-chain/greenfield-chain-sdk@0.2.1-alpha.10 + ## 0.0.5-alpha.9 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 11602bbd..74e5aa80 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.5-alpha.9", + "version": "0.0.5-alpha.10", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 8a0a3f9a..819c6952 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,18 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.1-alpha.10 + +### Patch Changes + +- [#106](https://github.com/bnb-chain/greenfield-js-sdk/pull/106) + [`4efba33`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4efba33c650b1c9124cea5bf03d7bac8eee5b3d1) + Thanks [@rrr523](https://github.com/rrr523)! - feat: sync protobuf with greenfield 0.2.2-alpha.2 + and greenfield-cosmos-sdk 0.2.2-alpha.1 + +- [#101](https://github.com/bnb-chain/greenfield-js-sdk/pull/101) + [`573528f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/573528f16c5a73f04d64431c667be5bb59767801) + Thanks [@randomx999](https://github.com/randomx999)! - feat: Allow to have sp auth fail + ## 0.2.1-alpha.9 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 82e3e4e8..180d6932 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.1-alpha.9", + "version": "0.2.1-alpha.10", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 75993037d157dbe3b419476f4aca1e842bd1e2b6 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 9 Jun 2023 01:43:24 +0800 Subject: [PATCH 043/433] chore: Use rainbowkit simply wallet of example (#107) --- README.md | 2 +- examples/nextjs/next.config.js | 9 + examples/nextjs/package.json | 3 +- .../src/components/walletInfo/index.tsx | 76 +- examples/nextjs/src/config/index.ts | 1 + examples/nextjs/src/pages/_app.tsx | 36 +- pnpm-lock.yaml | 676 ++++++++++-------- 7 files changed, 418 insertions(+), 385 deletions(-) diff --git a/README.md b/README.md index a9492e9d..58e6d1ec 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ You can find some package documentation below: Support use in browser and node.js -* [nextjs](./examples/nextjs/README.md) +* [Next.js Example(TypeScript)](./examples/nextjs/README.md) * [Nodejs](./examples/nodejs/README.md) ## Supported JS environments diff --git a/examples/nextjs/next.config.js b/examples/nextjs/next.config.js index f02108f0..06281ede 100644 --- a/examples/nextjs/next.config.js +++ b/examples/nextjs/next.config.js @@ -23,6 +23,15 @@ const nextConfig = { // your project has ESLint errors. ignoreDuringBuilds: true, }, + webpack: (config) => { + config.resolve.fallback = { + fs: false, + net: false, + tls: false, + }; + + return config; + }, }; module.exports = nextConfig; diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index c3c51709..9ff64454 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -19,6 +19,7 @@ "@ethersproject/signing-key": "^5.7.0", "@metamask/eth-sig-util": "^5.0.2", "@next/font": "13.1.6", + "@rainbow-me/rainbowkit": "^1.0.1", "@types/node": "^18.7.1", "@types/react": "^18.0.17", "@types/react-dom": "^18.0.6", @@ -34,7 +35,7 @@ "react-dom": "18.2.0", "typescript": "^4.7.4", "viem": "^0.3.31", - "wagmi": "^1.0.5" + "wagmi": "^1.1.1" }, "devDependencies": { "cross-env": "^7.0.3", diff --git a/examples/nextjs/src/components/walletInfo/index.tsx b/examples/nextjs/src/components/walletInfo/index.tsx index 40e69418..2900ce15 100644 --- a/examples/nextjs/src/components/walletInfo/index.tsx +++ b/examples/nextjs/src/components/walletInfo/index.tsx @@ -1,81 +1,9 @@ -import { - BSC_CHAIN_ID, - GREEN_CHAIN_ID, - coinbaseWalletConnector, - metaMaskWalletConnector, - trustWalletConnector, -} from '@/config'; -import { - useAccount, - useBalance, - useConnect, - useDisconnect, - useNetwork, - useSwitchNetwork, -} from 'wagmi'; +import { ConnectButton } from '@rainbow-me/rainbowkit'; export const WalletInfo = () => { - const { address, connector, isConnected } = useAccount(); - const { connect: metaMaskConnect } = useConnect({ - connector: metaMaskWalletConnector, - }); - const { connect: trustWalletConnect } = useConnect({ - connector: trustWalletConnector, - }); - const { connect: coinbaseWalletConnect } = useConnect({ - connector: coinbaseWalletConnector, - }); - - const { disconnect } = useDisconnect(); - const { chain } = useNetwork(); - const { switchNetwork: switchToGreenField } = useSwitchNetwork({ - chainId: GREEN_CHAIN_ID, - }); - - const { switchNetwork: switchToBSC } = useSwitchNetwork({ - chainId: BSC_CHAIN_ID, - }); - - const balance = useBalance({ - address, - watch: true, - }); - - if (!isConnected) { - return ( - <> - - - - - ); - } - return (
-
-

address : {address}

-

connector: {connector?.name}

- -
- -

change chain chainId {chain?.id}

-

balance: {balance.data?.formatted}

- -
- +
); }; diff --git a/examples/nextjs/src/config/index.ts b/examples/nextjs/src/config/index.ts index 3f2c075b..2994785c 100644 --- a/examples/nextjs/src/config/index.ts +++ b/examples/nextjs/src/config/index.ts @@ -17,6 +17,7 @@ export const CROSS_CHAIN_CONTRACT_ADDRESS = env.CROSS_CHAIN_CONTRACT_ADDRESS; const greenFieldChain: Chain = { id: GREEN_CHAIN_ID, network: 'greenfield', + iconUrl: 'https://github.com/wagmi-dev/wagmi/assets/5653652/44446c8c-5c72-4e89-b8eb-3042ef618eed', rpcUrls: { default: { http: [GREENFIELD_RPC_URL], diff --git a/examples/nextjs/src/pages/_app.tsx b/examples/nextjs/src/pages/_app.tsx index ad56422b..e0c73bbb 100644 --- a/examples/nextjs/src/pages/_app.tsx +++ b/examples/nextjs/src/pages/_app.tsx @@ -1,17 +1,33 @@ -import { - coinbaseWalletConnector, - metaMaskWalletConnector, - publicClient, - trustWalletConnector, - webSocketPublicClient, -} from '@/config'; +import { chains, publicClient, webSocketPublicClient } from '@/config'; import '@/styles/globals.css'; +import { + connectorsForWallets, + getDefaultWallets, + RainbowKitProvider, +} from '@rainbow-me/rainbowkit'; +import '@rainbow-me/rainbowkit/styles.css'; +import { trustWallet } from '@rainbow-me/rainbowkit/wallets'; import type { AppProps } from 'next/app'; import { createConfig, WagmiConfig } from 'wagmi'; +const projectId = ''; +const { wallets } = getDefaultWallets({ + projectId, + appName: 'greenfield js sdk demo', + chains, +}); + +const connectors = connectorsForWallets([ + ...wallets, + { + groupName: 'Recommended', + wallets: [trustWallet({ projectId, chains })], + }, +]); + const wagmiConfig = createConfig({ autoConnect: true, - connectors: [metaMaskWalletConnector, trustWalletConnector, coinbaseWalletConnector], + connectors, webSocketPublicClient, publicClient, }); @@ -19,7 +35,9 @@ const wagmiConfig = createConfig({ export default function App({ Component, pageProps }: AppProps) { return ( - + + + ); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 87f6c211..c408b857 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,18 +45,18 @@ importers: '@rollup/plugin-json': 4.1.0_rollup@2.79.1 '@rollup/plugin-node-resolve': 13.3.0_rollup@2.79.1 '@rollup/plugin-strip': 3.0.2_rollup@2.79.1 - '@rollup/plugin-typescript': 8.5.0_x5fg2s3voyx5jrtpaswheakfcm + '@rollup/plugin-typescript': 8.5.0_zptcx3kz3uwp66hzhyyt545weq '@types/chai': 4.3.5 '@types/mocha': 9.1.1 '@types/node': 18.16.16 '@types/react': 18.2.9 '@types/react-dom': 18.2.4 - '@typescript-eslint/eslint-plugin': 5.59.9_3cembfv4vokiyn6g4ljynjc5d4 - '@typescript-eslint/parser': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/eslint-plugin': 5.59.9_3i5bqcvz3xm47mwpahnwyqmg7m + '@typescript-eslint/parser': 5.59.9_kigkzfftsmftz3xok324pyvzui chai: 4.3.7 conventional-changelog-cmyr-config: 2.1.0 eslint: 8.42.0 - eslint-config-react-app: 7.0.1_vmv4wunyjjq45xne6myfbgbjsi + eslint-config-react-app: 7.0.1_xmrelbdudo5pygtffdtf73abn4 eslint-plugin-prettier: 4.2.1_eveahbx3r3okkkxu7l44ces2q4 husky: 8.0.3 lint-staged: 13.2.2 @@ -74,6 +74,7 @@ importers: '@ethersproject/signing-key': ^5.7.0 '@metamask/eth-sig-util': ^5.0.2 '@next/font': 13.1.6 + '@rainbow-me/rainbowkit': ^1.0.1 '@types/node': ^18.7.1 '@types/react': ^18.0.17 '@types/react-dom': ^18.0.6 @@ -91,7 +92,7 @@ importers: react-dom: 18.2.0 typescript: ^4.7.4 viem: ^0.3.31 - wagmi: ^1.0.5 + wagmi: ^1.1.1 dependencies: '@bnb-chain/greenfield-chain-sdk': link:../../packages/chain-sdk '@bnb-chain/greenfiled-file-handle': link:../../packages/file-handle @@ -101,6 +102,7 @@ importers: '@ethersproject/signing-key': 5.7.0 '@metamask/eth-sig-util': 5.0.2 '@next/font': 13.1.6 + '@rainbow-me/rainbowkit': 1.0.1_vknwzyp7f6ki4rewwg5gl2fghi '@types/node': 18.16.7 '@types/react': 18.2.6 '@types/react-dom': 18.2.4 @@ -116,7 +118,7 @@ importers: react-dom: 18.2.0_react@18.2.0 typescript: 4.9.5 viem: 0.3.31_typescript@4.9.5 - wagmi: 1.0.5_52rmszrm4bg4m3nhb6mgjy7grm + wagmi: 1.1.1_52rmszrm4bg4m3nhb6mgjy7grm devDependencies: cross-env: 7.0.3 dotenv: 16.0.3 @@ -182,7 +184,7 @@ importers: '@jest/globals': 29.5.0 '@types/jest': 29.5.1 '@types/mime': 3.0.1 - jest: 29.5.0_divpegkz2qugvd2racsiwsfxku + jest: 29.5.0_u3tjahz4lx2ow4rgesw7wigoy4 mime: 3.0.0 rollup: 2.79.1 rollup-plugin-auto-external: 2.0.0_rollup@2.79.1 @@ -190,7 +192,7 @@ importers: rollup-plugin-polyfill-node: 0.10.2_rollup@2.79.1 rollup-plugin-terser: 7.0.2_rollup@2.79.1 ts-jest: 29.1.0_re3sd25lehf6oiq4fphel37ifq - ts-node: 10.9.1_6yd3dr4iiziaqkscqiabuqynye + ts-node: 10.9.1_gbfmtwj2t57hq5iibp7xw5qwjq tslib: 2.5.0 typescript: 4.9.5 @@ -1684,19 +1686,11 @@ packages: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true - /@babel/runtime/7.21.5: - resolution: {integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - dev: false - /@babel/runtime/7.22.3: resolution: {integrity: sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - dev: true /@babel/template/7.21.9: resolution: {integrity: sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==} @@ -1998,7 +1992,7 @@ packages: engines: {node: '>= 10.0.0'} dependencies: '@metamask/safe-event-emitter': 2.0.0 - '@solana/web3.js': 1.76.0 + '@solana/web3.js': 1.77.3 bind-decorator: 1.0.11 bn.js: 5.2.1 buffer: 6.0.3 @@ -2008,7 +2002,7 @@ packages: eth-rpc-errors: 4.0.2 json-rpc-engine: 6.1.0 keccak: 3.0.3 - preact: 10.14.1 + preact: 10.15.1 qs: 6.11.2 rxjs: 6.6.7 sha.js: 2.4.11 @@ -2115,7 +2109,7 @@ packages: lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1_sz2hep2ld4tbz4lvm5u3llauiu + ts-node: 10.9.1_gbfmtwj2t57hq5iibp7xw5qwjq typescript: 5.1.3 transitivePeerDependencies: - '@swc/core' @@ -2486,6 +2480,10 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true + /@emotion/hash/0.8.0: + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + dev: false + /@eslint-community/eslint-utils/4.4.0_eslint@8.40.0: resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3281,8 +3279,8 @@ packages: resolution: {integrity: sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==} dev: false - /@lit/reactive-element/1.6.1: - resolution: {integrity: sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA==} + /@lit/reactive-element/1.6.2: + resolution: {integrity: sha512-rDfl+QnCYjuIGf5xI2sVJWdYIi56CTCwWa+nidKYX6oIuBYwUbT/vX4qbUDlHiZKJ/3FRNQ/tWJui44p6/stSA==} dependencies: '@lit-labs/ssr-dom-shim': 1.1.1 dev: false @@ -3338,7 +3336,7 @@ packages: resolution: {integrity: sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==} engines: {node: '>=14.0.0'} dependencies: - '@types/debug': 4.1.7 + '@types/debug': 4.1.8 debug: 4.3.4 semver: 7.5.1 superstruct: 1.0.3 @@ -3352,7 +3350,7 @@ packages: '@motionone/easing': 10.15.1 '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 - tslib: 2.5.1 + tslib: 2.5.3 dev: false /@motionone/dom/10.16.2: @@ -3363,14 +3361,14 @@ packages: '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 hey-listen: 1.0.8 - tslib: 2.5.1 + tslib: 2.5.3 dev: false /@motionone/easing/10.15.1: resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==} dependencies: '@motionone/utils': 10.15.1 - tslib: 2.5.1 + tslib: 2.5.3 dev: false /@motionone/generators/10.15.1: @@ -3378,14 +3376,14 @@ packages: dependencies: '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 - tslib: 2.5.1 + tslib: 2.5.3 dev: false /@motionone/svelte/10.16.2: resolution: {integrity: sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==} dependencies: '@motionone/dom': 10.16.2 - tslib: 2.5.1 + tslib: 2.5.3 dev: false /@motionone/types/10.15.1: @@ -3397,14 +3395,14 @@ packages: dependencies: '@motionone/types': 10.15.1 hey-listen: 1.0.8 - tslib: 2.5.1 + tslib: 2.5.3 dev: false /@motionone/vue/10.16.2: resolution: {integrity: sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==} dependencies: '@motionone/dom': 10.16.2 - tslib: 2.5.1 + tslib: 2.5.3 dev: false /@next/env/13.1.6: @@ -3550,6 +3548,12 @@ packages: '@noble/hashes': 1.3.0 dev: false + /@noble/curves/1.1.0: + resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} + dependencies: + '@noble/hashes': 1.3.1 + dev: false + /@noble/hashes/1.2.0: resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} dev: false @@ -3558,6 +3562,11 @@ packages: resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} dev: false + /@noble/hashes/1.3.1: + resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} + engines: {node: '>= 16'} + dev: false + /@noble/secp256k1/1.7.1: resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} dev: false @@ -3593,7 +3602,7 @@ packages: open: 8.4.2 picocolors: 1.0.0 tiny-glob: 0.2.9 - tslib: 2.5.0 + tslib: 2.5.3 dev: false /@protobufjs/aspromise/1.1.2: @@ -3639,6 +3648,29 @@ packages: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} dev: false + /@rainbow-me/rainbowkit/1.0.1_vknwzyp7f6ki4rewwg5gl2fghi: + resolution: {integrity: sha512-P+2lgHaN5X84K1e+MARUydyhYRS+nStN4H470QloBBWP5UsidHZpSJGd4qi0WFtfR6zBff96N6kmsfJo7PjFhQ==} + engines: {node: '>=12.4'} + peerDependencies: + react: '>=17' + react-dom: '>=17' + viem: ~0.3.19 + wagmi: ~1.0.1 + dependencies: + '@vanilla-extract/css': 1.9.1 + '@vanilla-extract/dynamic': 2.0.2 + '@vanilla-extract/sprinkles': 1.5.0_@vanilla-extract+css@1.9.1 + clsx: 1.1.1 + qrcode: 1.5.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-remove-scroll: 2.5.4_s3k22s5ab4eu26xuel7hiaraxy + viem: 0.3.31_typescript@4.9.5 + wagmi: 1.1.1_52rmszrm4bg4m3nhb6mgjy7grm + transitivePeerDependencies: + - '@types/react' + dev: false + /@rollup/plugin-alias/4.0.4_rollup@2.79.1: resolution: {integrity: sha512-0CaAY238SMtYAWEXXptWSR8iz8NYZnH7zNBKuJ14xFJSGwLtPgjvXYsoApAHfzYXXH1ejxpVw7WlHss3zhh9SQ==} engines: {node: '>=14.0.0'} @@ -3735,7 +3767,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-typescript/8.5.0_x5fg2s3voyx5jrtpaswheakfcm: + /@rollup/plugin-typescript/8.5.0_zptcx3kz3uwp66hzhyyt545weq: resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} engines: {node: '>=8.0.0'} peerDependencies: @@ -3749,7 +3781,7 @@ packages: '@rollup/pluginutils': 3.1.0_rollup@2.79.1 resolve: 1.22.2 rollup: 2.79.1 - typescript: 5.1.3 + typescript: 4.9.5 dev: true /@rollup/plugin-wasm/6.1.2_rollup@2.79.1: @@ -3897,12 +3929,12 @@ packages: buffer: 6.0.3 dev: false - /@solana/web3.js/1.76.0: - resolution: {integrity: sha512-aJtF/nTs+9St+KtTK/wgVJ+SinfjYzn+3w1ygYIPw8ST6LH+qHBn8XkodgDTwlv/xzNkaVz1kkUDOZ8BPXyZWA==} + /@solana/web3.js/1.77.3: + resolution: {integrity: sha512-PHaO0BdoiQRPpieC1p31wJsBaxwIOWLh8j2ocXNKX8boCQVldt26Jqm2tZE4KlrvnCIV78owPLv1pEUgqhxZ3w==} dependencies: - '@babel/runtime': 7.21.5 - '@noble/curves': 1.0.0 - '@noble/hashes': 1.3.0 + '@babel/runtime': 7.22.3 + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 '@solana/buffer-layout': 4.0.1 agentkeepalive: 4.3.0 bigint-buffer: 1.1.5 @@ -3911,7 +3943,7 @@ packages: bs58: 4.0.1 buffer: 6.0.3 fast-stable-stringify: 1.0.0 - jayson: 3.7.0 + jayson: 4.1.0 node-fetch: 2.6.11 rpc-websockets: 7.5.1 superstruct: 0.14.2 @@ -4148,8 +4180,8 @@ packages: '@types/node': 18.16.7 dev: false - /@types/debug/4.1.7: - resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + /@types/debug/4.1.8: + resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} dependencies: '@types/ms': 0.7.31 dev: false @@ -4347,7 +4379,7 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin/5.59.9_3cembfv4vokiyn6g4ljynjc5d4: + /@typescript-eslint/eslint-plugin/5.59.9_3i5bqcvz3xm47mwpahnwyqmg7m: resolution: {integrity: sha512-4uQIBq1ffXd2YvF7MAvehWKW3zVv/w+mSfRAu+8cKbfj3nwzyqJLNcZJpQ/WZ1HLbJDiowwmQ6NO+63nCA+fqA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4359,29 +4391,29 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/parser': 5.59.9_kigkzfftsmftz3xok324pyvzui '@typescript-eslint/scope-manager': 5.59.9 - '@typescript-eslint/type-utils': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u - '@typescript-eslint/utils': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/type-utils': 5.59.9_kigkzfftsmftz3xok324pyvzui + '@typescript-eslint/utils': 5.59.9_kigkzfftsmftz3xok324pyvzui debug: 4.3.4 eslint: 8.42.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.1 - tsutils: 3.21.0_typescript@5.1.3 - typescript: 5.1.3 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u: + /@typescript-eslint/experimental-utils/5.59.9_kigkzfftsmftz3xok324pyvzui: resolution: {integrity: sha512-eZTK/Ci0QAqNc/q2MqMwI2+QI5ZI9HM12FcfGwbEvKif5ev/CIIYLmrlckvgPrC8XSbl39HtErR5NJiQkRkvWg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/utils': 5.59.9_kigkzfftsmftz3xok324pyvzui eslint: 8.42.0 transitivePeerDependencies: - supports-color @@ -4408,7 +4440,7 @@ packages: - supports-color dev: false - /@typescript-eslint/parser/5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u: + /@typescript-eslint/parser/5.59.9_kigkzfftsmftz3xok324pyvzui: resolution: {integrity: sha512-FsPkRvBtcLQ/eVK1ivDiNYBjn3TGJdXy2fhXX+rc7czWl4ARwnpArwbihSOHI2Peg9WbtGHrbThfBUkZZGTtvQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4420,10 +4452,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.59.9 '@typescript-eslint/types': 5.59.9 - '@typescript-eslint/typescript-estree': 5.59.9_typescript@5.1.3 + '@typescript-eslint/typescript-estree': 5.59.9_typescript@4.9.5 debug: 4.3.4 eslint: 8.42.0 - typescript: 5.1.3 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true @@ -4444,7 +4476,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.9 dev: true - /@typescript-eslint/type-utils/5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u: + /@typescript-eslint/type-utils/5.59.9_kigkzfftsmftz3xok324pyvzui: resolution: {integrity: sha512-ksEsT0/mEHg9e3qZu98AlSrONAQtrSTljL3ow9CGej8eRo7pe+yaC/mvTjptp23Xo/xIf2mLZKC6KPv4Sji26Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4454,12 +4486,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.9_typescript@5.1.3 - '@typescript-eslint/utils': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/typescript-estree': 5.59.9_typescript@4.9.5 + '@typescript-eslint/utils': 5.59.9_kigkzfftsmftz3xok324pyvzui debug: 4.3.4 eslint: 8.42.0 - tsutils: 3.21.0_typescript@5.1.3 - typescript: 5.1.3 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true @@ -4495,7 +4527,7 @@ packages: - supports-color dev: false - /@typescript-eslint/typescript-estree/5.59.9_typescript@5.1.3: + /@typescript-eslint/typescript-estree/5.59.9_typescript@4.9.5: resolution: {integrity: sha512-pmM0/VQ7kUhd1QyIxgS+aRvMgw+ZljB3eDb+jYyp6d2bC0mQWLzUDF+DLwCTkQ3tlNyVsvZRXjFyV0LkU/aXjA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4510,13 +4542,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.1 - tsutils: 3.21.0_typescript@5.1.3 - typescript: 5.1.3 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u: + /@typescript-eslint/utils/5.59.9_kigkzfftsmftz3xok324pyvzui: resolution: {integrity: sha512-1PuMYsju/38I5Ggblaeb98TOoUvjhRvLpLa1DoTOFaLWqaXl/1iQ1eGurTXgBY58NUdtfTXKP5xBq7q9NDaLKg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4527,7 +4559,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.9 '@typescript-eslint/types': 5.59.9 - '@typescript-eslint/typescript-estree': 5.59.9_typescript@5.1.3 + '@typescript-eslint/typescript-estree': 5.59.9_typescript@4.9.5 eslint: 8.42.0 eslint-scope: 5.1.1 semver: 7.5.1 @@ -4552,6 +4584,40 @@ packages: eslint-visitor-keys: 3.4.1 dev: true + /@vanilla-extract/css/1.9.1: + resolution: {integrity: sha512-pu2SFiff5jRhPwvGoj8cM5l/qIyLvigOmy22ss5DGjwV5pJYezRjDLxWumi2luIwioMWvh9EozCjyfH8nq+7fQ==} + dependencies: + '@emotion/hash': 0.8.0 + '@vanilla-extract/private': 1.0.3 + ahocorasick: 1.0.2 + chalk: 4.1.2 + css-what: 5.1.0 + cssesc: 3.0.0 + csstype: 3.1.2 + deep-object-diff: 1.1.9 + deepmerge: 4.3.1 + media-query-parser: 2.0.2 + outdent: 0.8.0 + dev: false + + /@vanilla-extract/dynamic/2.0.2: + resolution: {integrity: sha512-U4nKaEQ8Kuz+exXEr51DUpyaOuzo24/S/k1YbDPQR06cYcNjQqvwFRnwWtZ+9ImocqM1wTKtzrdUgSTtLGIwAg==} + dependencies: + '@vanilla-extract/private': 1.0.3 + dev: false + + /@vanilla-extract/private/1.0.3: + resolution: {integrity: sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ==} + dev: false + + /@vanilla-extract/sprinkles/1.5.0_@vanilla-extract+css@1.9.1: + resolution: {integrity: sha512-W58f2Rzz5lLmk0jbhgStVlZl5wEiPB1Ur3fRvUaBM+MrifZ3qskmFq/CiH//fEYeG5Dh9vF1qRviMMH46cX9Nw==} + peerDependencies: + '@vanilla-extract/css': ^1.0.0 + dependencies: + '@vanilla-extract/css': 1.9.1 + dev: false + /@wagmi/chains/0.2.16_typescript@4.9.5: resolution: {integrity: sha512-rkWaI2PxCnbD8G07ZZff5QXftnSkYL0h5f4DkHCG3fGYYr/ZDvmCL4bMae7j7A9sAif1csPPBmbCzHp3R5ogCQ==} peerDependencies: @@ -4563,10 +4629,10 @@ packages: typescript: 4.9.5 dev: false - /@wagmi/chains/0.2.23_typescript@4.9.5: - resolution: {integrity: sha512-oIc4ZpUL6bH/HdS7ROPWlFnP5U3XBujO/OiX4csRIezyLjMQ9FNXQRZShhi5ddL0Kj1RDbyVLe9K/QotEm1vig==} + /@wagmi/chains/1.1.0_typescript@4.9.5: + resolution: {integrity: sha512-pWZlxBk0Ql8E7DV8DwqlbBpOyUdaG9UDlQPBxJNALuEK1I0tbQ3AVvSDnlsEIt06UPmPo5o27gzs3hwPQ/A+UA==} peerDependencies: - typescript: '>=4.9.4' + typescript: '>=5.0.4' peerDependenciesMeta: typescript: optional: true @@ -4574,12 +4640,12 @@ packages: typescript: 4.9.5 dev: false - /@wagmi/connectors/1.0.3_lvuufliqsmb5kombz5lsh7xala: - resolution: {integrity: sha512-5uB+dUDop8s9scdE+S4IhgcfP8oRwdULVvpJ2MusDp+C00+OgvS3SnwZM6+Pjc9tyj5pi143zqsYtDynxFrMEA==} + /@wagmi/connectors/2.1.1_6kzd5vavbzkn72zen4lkmvcjsi: + resolution: {integrity: sha512-xUOsg95uzurQwAxH+TqOi2ZNhF472wC4Fl49NT/N5jRA3hdi0L+nZR2a63k2SGDSge6jaejaErK7g8nzl0O3Ww==} peerDependencies: - '@wagmi/chains': '>=0.2.23' - typescript: '>=4.9.4' - viem: ~0.3.18 + '@wagmi/chains': '>=1.0.0' + typescript: '>=5.0.4' + viem: '>=0.3.35' peerDependenciesMeta: '@wagmi/chains': optional: true @@ -4590,11 +4656,11 @@ packages: '@ledgerhq/connect-kit-loader': 1.0.2 '@safe-global/safe-apps-provider': 0.15.2 '@safe-global/safe-apps-sdk': 7.11.0 - '@wagmi/chains': 0.2.23_typescript@4.9.5 - '@walletconnect/ethereum-provider': 2.7.4_uuxbjgtba3hmem7nazpjykwxcm + '@wagmi/chains': 1.1.0_typescript@4.9.5 + '@walletconnect/ethereum-provider': 2.7.8_gft74yegowi6ldcnoyni4czcde '@walletconnect/legacy-provider': 2.0.0 - '@web3modal/standalone': 2.4.1_react@18.2.0 - abitype: 0.8.1_typescript@4.9.5 + '@web3modal/standalone': 2.4.3_react@18.2.0 + abitype: 0.8.7_typescript@4.9.5 eventemitter3: 4.0.7 typescript: 4.9.5 viem: 0.3.31_typescript@4.9.5 @@ -4610,18 +4676,18 @@ packages: - zod dev: false - /@wagmi/core/1.0.5_nus464gvkzoi6naqshaakklh74: - resolution: {integrity: sha512-n8Y84WJkofGjhd4a+vpZzPPEQiHnkIGMe0uHOXfkm4eKJZyaJqvVJFPMWE6xFJkk0hxZ+1zw5xn0ZhdroHwHvg==} + /@wagmi/core/1.1.1_nus464gvkzoi6naqshaakklh74: + resolution: {integrity: sha512-nEg/TIfX8youSBU+qmecIQVyVCOJxPaOHoavr3lbXTa6LZd/PvJ9jEPbl1Ho//KoAI4pqoE59wky0vydgygF0g==} peerDependencies: - typescript: '>=4.9.4' - viem: ~0.3.18 + typescript: '>=5.0.4' + viem: '>=0.3.35' peerDependenciesMeta: typescript: optional: true dependencies: - '@wagmi/chains': 0.2.23_typescript@4.9.5 - '@wagmi/connectors': 1.0.3_lvuufliqsmb5kombz5lsh7xala - abitype: 0.8.1_typescript@4.9.5 + '@wagmi/chains': 1.1.0_typescript@4.9.5 + '@wagmi/connectors': 2.1.1_6kzd5vavbzkn72zen4lkmvcjsi + abitype: 0.8.7_typescript@4.9.5 eventemitter3: 4.0.7 typescript: 4.9.5 viem: 0.3.31_typescript@4.9.5 @@ -4639,11 +4705,12 @@ packages: - zod dev: false - /@walletconnect/core/2.7.4: - resolution: {integrity: sha512-nDJJZALZJI8l8JvjwZE4UmUzDzQBnTTJlQa/rc5MoGYtir0hfsQEl3sPkPcXbkkW5q+cHiynXsDcgM4740fmNQ==} + /@walletconnect/core/2.7.8: + resolution: {integrity: sha512-Ptp1Jo9hv5mtrQMF/iC/RF/KHmYfO79DBLj77AV4PnJ5z6J0MRYepPKXKFEirOXR4OKCT5qCrPOiRtGvtNI+sg==} dependencies: '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/jsonrpc-ws-connection': 1.0.11 '@walletconnect/keyvaluestorage': 1.0.2 @@ -4652,8 +4719,8 @@ packages: '@walletconnect/relay-auth': 1.0.4 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.7.4 - '@walletconnect/utils': 2.7.4 + '@walletconnect/types': 2.7.8 + '@walletconnect/utils': 2.7.8 events: 3.3.0 lodash.isequal: 4.5.0 uint8arrays: 3.1.1 @@ -4689,23 +4756,23 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/ethereum-provider/2.7.4_uuxbjgtba3hmem7nazpjykwxcm: - resolution: {integrity: sha512-R5hcByY9zIsvyTHFUS+3xqtzs2REezED4tZFyXk0snJjWlnlL2EdeHaCjr5n+SIZDin4CMj1EAFC0ZrM4KoA4Q==} + /@walletconnect/ethereum-provider/2.7.8_gft74yegowi6ldcnoyni4czcde: + resolution: {integrity: sha512-HueJtdhkIu+1U6jOlsFc9F8uZbleiFwZxAGROf7ARhwsPUz9Yd+E0Ct5aNwPwsSDCzUvNpw5/LogFbCVQWWHcA==} peerDependencies: '@web3modal/standalone': '>=2' peerDependenciesMeta: '@web3modal/standalone': optional: true dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.6 + '@walletconnect/jsonrpc-http-connection': 1.0.7 '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/sign-client': 2.7.4 - '@walletconnect/types': 2.7.4 - '@walletconnect/universal-provider': 2.7.4 - '@walletconnect/utils': 2.7.4 - '@web3modal/standalone': 2.4.1_react@18.2.0 + '@walletconnect/sign-client': 2.7.8 + '@walletconnect/types': 2.7.8 + '@walletconnect/universal-provider': 2.7.8 + '@walletconnect/utils': 2.7.8 + '@web3modal/standalone': 2.4.3_react@18.2.0 events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -4731,8 +4798,8 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/jsonrpc-http-connection/1.0.6: - resolution: {integrity: sha512-/3zSqDi7JDN06E4qm0NmVYMitngXfh21UWwy8zeJcBeJc+Jcs094EbLsIxtziIIKTCCbT88lWuTjl1ZujxN7cw==} + /@walletconnect/jsonrpc-http-connection/1.0.7: + resolution: {integrity: sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==} dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 @@ -4814,14 +4881,14 @@ packages: '@walletconnect/legacy-types': 2.0.0 '@walletconnect/legacy-utils': 2.0.0 copy-to-clipboard: 3.3.3 - preact: 10.14.1 + preact: 10.15.1 qrcode: 1.5.3 dev: false /@walletconnect/legacy-provider/2.0.0: resolution: {integrity: sha512-A8xPebMI1A+50HbWwTpFCbwP7G+1NGKdTKyg8BUUg3h3Y9JucpC1W6w/x0v1Xw7qFEqQnz74LoIN/A3ytH9xrQ==} dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.6 + '@walletconnect/jsonrpc-http-connection': 1.0.7 '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/legacy-client': 2.0.0 '@walletconnect/legacy-modal': 2.0.0 @@ -4890,17 +4957,17 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/sign-client/2.7.4: - resolution: {integrity: sha512-hZoCB51GB4u32yxzYnxp8dpzXgo6E7ZWUVOgnihmoMPjgJahPtvB/Ip9jYxI3fuV+ZPQYNlxQgEvR9X+2fLz+g==} + /@walletconnect/sign-client/2.7.8: + resolution: {integrity: sha512-na7VeXiOwM83w69s4kA5IeuL2SezwIbHfJsitmbtmsTLaX8Hnf7HwaJrNzrdhKpnEw8a+uG/xDTq+RYY50zf+A==} dependencies: - '@walletconnect/core': 2.7.4 + '@walletconnect/core': 2.7.8 '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.7.4 - '@walletconnect/utils': 2.7.4 + '@walletconnect/types': 2.7.8 + '@walletconnect/utils': 2.7.8 events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -4915,8 +4982,8 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/types/2.7.4: - resolution: {integrity: sha512-Nagfz8DqLxf0UlVd7xopgBX60EJp1xUEq7J30ALlTbWqEhCHuLK/qPk5vGdJ9Q6+ZDpTW9ShLq1DNf+5nVpVDQ==} + /@walletconnect/types/2.7.8: + resolution: {integrity: sha512-1ZucKd5F4Ws+O84Yl4tCzd+hcD3A9vnaimKyC753b7Jdtwg2dm21E6H9t34kOVsFjVdKt9qFrZ1LaVL7SZp59g==} dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 @@ -4929,17 +4996,17 @@ packages: - lokijs dev: false - /@walletconnect/universal-provider/2.7.4: - resolution: {integrity: sha512-suH3o5LpTX7hlx5lU98oLdEM0Ws5ZysjQ4Zr6EWIK1DVT8EDdWbw49ggJSW9IYRLQ2xG22jDvmTIdFAexYOgng==} + /@walletconnect/universal-provider/2.7.8: + resolution: {integrity: sha512-T/0U1o6uewyz2KUQF3Gt57RtuYFKJhJHwH3m4sSTKeEwwzsU83+M/D2v5Pa6Vhy2ynzkKB84pRG9mwm1oaQbLQ==} dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.6 + '@walletconnect/jsonrpc-http-connection': 1.0.7 '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 - '@walletconnect/sign-client': 2.7.4 - '@walletconnect/types': 2.7.4 - '@walletconnect/utils': 2.7.4 + '@walletconnect/sign-client': 2.7.8 + '@walletconnect/types': 2.7.8 + '@walletconnect/utils': 2.7.8 eip1193-provider: 1.0.1 events: 3.3.0 transitivePeerDependencies: @@ -4951,19 +5018,18 @@ packages: - utf-8-validate dev: false - /@walletconnect/utils/2.7.4: - resolution: {integrity: sha512-2WEeKB9h/FQvyNmIBYwLtjdLm3Oo55EwtJoxkC00SA7xjf8jYxZ8q2y4P/CJP8oO5ruxBK5Ft0smKvPHXsE58Q==} + /@walletconnect/utils/2.7.8: + resolution: {integrity: sha512-W3GudJNZUlSdKJ7fyMqeDoM02Ffd7jmK6mxxmRGkxF6mf9ciIxEPDWl18JGkanp+EDK06PXLm4/64fraLkbJVQ==} dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 '@stablelib/random': 1.0.2 '@stablelib/sha256': 1.0.1 '@stablelib/x25519': 1.0.3 - '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/relay-api': 1.0.9 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.7.4 + '@walletconnect/types': 2.7.8 '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 detect-browser: 5.3.0 @@ -4987,8 +5053,8 @@ packages: tslib: 1.14.1 dev: false - /@web3modal/core/2.4.1_react@18.2.0: - resolution: {integrity: sha512-v6Y/eQJSI2YfUTv8rGqjFabqdk3ZPjx6Fe7j5Q8fw0ZWF1YRGM3mySG457qtKQ7D7E1kNKA3BHbaOZ3pgQoG6A==} + /@web3modal/core/2.4.3_react@18.2.0: + resolution: {integrity: sha512-7Z/sDe9RIYQ2k9ITcxgEa/u7FvlI76vcVVZn9UY4ISivefqrH4JAS3GX4JmVNUUlovwuiZdyqBv4llAQOMK6Rg==} dependencies: buffer: 6.0.3 valtio: 1.10.5_react@18.2.0 @@ -4996,21 +5062,21 @@ packages: - react dev: false - /@web3modal/standalone/2.4.1_react@18.2.0: - resolution: {integrity: sha512-ZrI5LwWeT9sd8A3FdIX/gBp3ZrzrX882Ln1vJN0LTCmeP2OUsYcW5bPxjv1PcJ1YUBY7Tg4aTgMUnAVTTuqb+w==} + /@web3modal/standalone/2.4.3_react@18.2.0: + resolution: {integrity: sha512-5ATXBoa4GGm+TIUSsKWsfWCJunv1XevOizpgTFhqyeGgRDmWhqsz9UIPzH/1mk+g0iJ/xqMKs5F6v9D2QeKxag==} dependencies: - '@web3modal/core': 2.4.1_react@18.2.0 - '@web3modal/ui': 2.4.1_react@18.2.0 + '@web3modal/core': 2.4.3_react@18.2.0 + '@web3modal/ui': 2.4.3_react@18.2.0 transitivePeerDependencies: - react dev: false - /@web3modal/ui/2.4.1_react@18.2.0: - resolution: {integrity: sha512-x1ceyd3mMJsIHs5UUTLvE+6qyCjhyjL6gB/wVmTDbwASHSQIVyshQJ+s7BwIEMP/pbAsYDg+/M8EiUuE+/E/kg==} + /@web3modal/ui/2.4.3_react@18.2.0: + resolution: {integrity: sha512-J989p8CdtEhI9gZHf/rZ/WFqYlrAHWw9GmAhFoiNODwjAp0BoG/uoaPiijJMchXdngihZOjLGCQwDXU16DHiKg==} dependencies: - '@web3modal/core': 2.4.1_react@18.2.0 - lit: 2.7.4 - motion: 10.15.5 + '@web3modal/core': 2.4.3_react@18.2.0 + lit: 2.7.5 + motion: 10.16.2 qrcode: 1.5.3 transitivePeerDependencies: - react @@ -5023,10 +5089,10 @@ packages: jsonparse: 1.3.1 through: 2.3.8 - /abitype/0.8.1_typescript@4.9.5: - resolution: {integrity: sha512-n8Di6AWb3i7HnEkBvecU6pG0a5nj5YwMvdAIwPLsQK95ulRy/XS113s/RXvSfTX1iOQJYFrEO3/q4SMWu7OwTA==} + /abitype/0.8.2_typescript@4.9.5: + resolution: {integrity: sha512-B1ViNMGpfx/qjVQi0RTc2HEFHuR9uoCoTEkwELT5Y7pBPtBbctYijz9BK6+Kd0hQ3S70FhYTO2dWWk0QNUEXMA==} peerDependencies: - typescript: '>=4.9.4' + typescript: '>=5.0.4' zod: ^3 >=3.19.1 peerDependenciesMeta: zod: @@ -5035,8 +5101,8 @@ packages: typescript: 4.9.5 dev: false - /abitype/0.8.2_typescript@4.9.5: - resolution: {integrity: sha512-B1ViNMGpfx/qjVQi0RTc2HEFHuR9uoCoTEkwELT5Y7pBPtBbctYijz9BK6+Kd0hQ3S70FhYTO2dWWk0QNUEXMA==} + /abitype/0.8.7_typescript@4.9.5: + resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==} peerDependencies: typescript: '>=5.0.4' zod: ^3 >=3.19.1 @@ -5097,6 +5163,10 @@ packages: indent-string: 4.0.0 dev: true + /ahocorasick/1.0.2: + resolution: {integrity: sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA==} + dev: false + /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -5268,7 +5338,7 @@ packages: /async-mutex/0.2.6: resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} dependencies: - tslib: 2.5.1 + tslib: 2.5.3 dev: false /asynckit/0.4.0: @@ -5284,15 +5354,9 @@ packages: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} - /axe-core/4.7.1: - resolution: {integrity: sha512-sCXXUhA+cljomZ3ZAwb8i1p3oOlkABzPy08ZDAoGcYuvtBPlQ1Ytde129ArXyHWDhfeewq7rlx9F+cUx2SSlkg==} - engines: {node: '>=4'} - dev: false - /axe-core/4.7.2: resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} engines: {node: '>=4'} - dev: true /axios/0.21.4: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} @@ -5886,6 +5950,11 @@ packages: engines: {node: '>=0.8'} dev: true + /clsx/1.1.1: + resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==} + engines: {node: '>=6'} + dev: false + /clsx/1.2.1: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} @@ -6046,7 +6115,7 @@ packages: dependencies: '@types/node': 18.16.16 cosmiconfig: 8.2.0 - ts-node: 10.9.1_sz2hep2ld4tbz4lvm5u3llauiu + ts-node: 10.9.1_gbfmtwj2t57hq5iibp7xw5qwjq typescript: 5.1.3 dev: true @@ -6182,6 +6251,17 @@ packages: randomfill: 1.0.4 dev: true + /css-what/5.1.0: + resolution: {integrity: sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==} + engines: {node: '>= 6'} + dev: false + + /cssesc/3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: false + /csstype/3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} @@ -6315,10 +6395,13 @@ packages: /deep-is/0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + /deep-object-diff/1.1.9: + resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} + dev: false + /deepmerge/4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - dev: true /defaults/1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -6380,6 +6463,10 @@ packages: engines: {node: '>=8'} dev: true + /detect-node-es/1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dev: false + /diff-sequences/29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6655,7 +6742,7 @@ packages: - supports-color dev: false - /eslint-config-react-app/7.0.1_vmv4wunyjjq45xne6myfbgbjsi: + /eslint-config-react-app/7.0.1_xmrelbdudo5pygtffdtf73abn4: resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6668,19 +6755,19 @@ packages: '@babel/core': 7.22.1 '@babel/eslint-parser': 7.21.8_x4z5szbpxidodfq6bg2unesv74 '@rushstack/eslint-patch': 1.3.1 - '@typescript-eslint/eslint-plugin': 5.59.9_3cembfv4vokiyn6g4ljynjc5d4 - '@typescript-eslint/parser': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/eslint-plugin': 5.59.9_3i5bqcvz3xm47mwpahnwyqmg7m + '@typescript-eslint/parser': 5.59.9_kigkzfftsmftz3xok324pyvzui babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.42.0 eslint-plugin-flowtype: 8.0.3_x7gmotf647inwhqzsrebi2ai7q eslint-plugin-import: 2.27.5_4sfevs3vpuvadhjdwbsynzgtpy - eslint-plugin-jest: 25.7.0_6p7xp42z5pxanulzlc5byrxfg4 + eslint-plugin-jest: 25.7.0_suwqznixrpgzl7s24izvrdolvm eslint-plugin-jsx-a11y: 6.7.1_eslint@8.42.0 eslint-plugin-react: 7.32.2_eslint@8.42.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.42.0 - eslint-plugin-testing-library: 5.11.0_tizxnkcvjrb4cldxgwq5h3lj5u - typescript: 5.1.3 + eslint-plugin-testing-library: 5.11.0_kigkzfftsmftz3xok324pyvzui + typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -6768,7 +6855,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/parser': 5.59.9_kigkzfftsmftz3xok324pyvzui debug: 3.2.7 eslint: 8.42.0 eslint-import-resolver-node: 0.3.7 @@ -6801,7 +6888,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/parser': 5.59.9_kigkzfftsmftz3xok324pyvzui array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -6843,7 +6930,7 @@ packages: eslint-import-resolver-node: 0.3.7 eslint-module-utils: 2.8.0_psn6fw4moe3x2es443hwiatkh4 has: 1.0.3 - is-core-module: 2.12.0 + is-core-module: 2.12.1 is-glob: 4.0.3 minimatch: 3.1.2 object.values: 1.1.6 @@ -6856,7 +6943,7 @@ packages: - supports-color dev: false - /eslint-plugin-jest/25.7.0_6p7xp42z5pxanulzlc5byrxfg4: + /eslint-plugin-jest/25.7.0_suwqznixrpgzl7s24izvrdolvm: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -6869,8 +6956,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.9_3cembfv4vokiyn6g4ljynjc5d4 - '@typescript-eslint/experimental-utils': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/eslint-plugin': 5.59.9_3i5bqcvz3xm47mwpahnwyqmg7m + '@typescript-eslint/experimental-utils': 5.59.9_kigkzfftsmftz3xok324pyvzui eslint: 8.42.0 transitivePeerDependencies: - supports-color @@ -6883,12 +6970,12 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.22.3 aria-query: 5.1.3 array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 ast-types-flow: 0.0.7 - axe-core: 4.7.1 + axe-core: 4.7.2 axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 @@ -7009,13 +7096,13 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library/5.11.0_tizxnkcvjrb4cldxgwq5h3lj5u: + /eslint-plugin-testing-library/5.11.0_kigkzfftsmftz3xok324pyvzui: resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.9_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/utils': 5.59.9_kigkzfftsmftz3xok324pyvzui eslint: 8.42.0 transitivePeerDependencies: - supports-color @@ -7640,6 +7727,11 @@ packages: has-proto: 1.0.1 has-symbols: 1.0.3 + /get-nonce/1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + dev: false + /get-package-type/0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -7990,6 +8082,12 @@ packages: engines: {node: '>= 0.10'} dev: false + /invariant/2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + dependencies: + loose-envify: 1.4.0 + dev: false + /is-arguments/1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -8339,8 +8437,8 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jayson/3.7.0: - resolution: {integrity: sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==} + /jayson/4.1.0: + resolution: {integrity: sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==} engines: {node: '>=8'} hasBin: true dependencies: @@ -8354,7 +8452,6 @@ packages: eyes: 0.1.8 isomorphic-ws: 4.0.1_ws@7.5.9 json-stringify-safe: 5.0.1 - lodash: 4.17.21 uuid: 8.3.2 ws: 7.5.9 transitivePeerDependencies: @@ -8398,34 +8495,6 @@ packages: - supports-color dev: true - /jest-cli/29.5.0_divpegkz2qugvd2racsiwsfxku: - resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.5.0_ts-node@10.9.1 - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - import-local: 3.1.0 - jest-config: 29.5.0_divpegkz2qugvd2racsiwsfxku - jest-util: 29.5.0 - jest-validate: 29.5.0 - prompts: 2.4.2 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - /jest-cli/29.5.0_u3tjahz4lx2ow4rgesw7wigoy4: resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8489,7 +8558,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1_6yd3dr4iiziaqkscqiabuqynye + ts-node: 10.9.1_gbfmtwj2t57hq5iibp7xw5qwjq transitivePeerDependencies: - supports-color dev: true @@ -8829,26 +8898,6 @@ packages: supports-color: 8.1.1 dev: true - /jest/29.5.0_divpegkz2qugvd2racsiwsfxku: - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.5.0_ts-node@10.9.1 - '@jest/types': 29.5.0 - import-local: 3.1.0 - jest-cli: 29.5.0_divpegkz2qugvd2racsiwsfxku - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - /jest/29.5.0_u3tjahz4lx2ow4rgesw7wigoy4: resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9174,7 +9223,7 @@ packages: resolution: {integrity: sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ==} dependencies: '@lit-labs/ssr-dom-shim': 1.1.1 - '@lit/reactive-element': 1.6.1 + '@lit/reactive-element': 1.6.2 lit-html: 2.7.4 dev: false @@ -9184,10 +9233,10 @@ packages: '@types/trusted-types': 2.0.3 dev: false - /lit/2.7.4: - resolution: {integrity: sha512-cgD7xrZoYr21mbrkZIuIrj98YTMw/snJPg52deWVV4A8icLyNHI3bF70xsJeAgwTuiq5Kkd+ZR8gybSJDCPB7g==} + /lit/2.7.5: + resolution: {integrity: sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ==} dependencies: - '@lit/reactive-element': 1.6.1 + '@lit/reactive-element': 1.6.2 lit-element: 3.3.2 lit-html: 2.7.4 dev: false @@ -9277,6 +9326,7 @@ packages: /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true /log-symbols/4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} @@ -9386,6 +9436,12 @@ packages: inherits: 2.0.4 safe-buffer: 5.2.1 + /media-query-parser/2.0.2: + resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} + dependencies: + '@babel/runtime': 7.22.3 + dev: false + /meow/6.1.1: resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} @@ -9539,8 +9595,8 @@ packages: yargs-unparser: 2.0.0 dev: true - /motion/10.15.5: - resolution: {integrity: sha512-ejP6KioN4pigTGxL93APzOnvtLklParL59UQB2T3HWXQBxFcIp5/7YXFmkgiA6pNKKzjvnLhnonRBN5iSFMnNw==} + /motion/10.16.2: + resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} dependencies: '@motionone/animation': 10.15.1 '@motionone/dom': 10.16.2 @@ -9815,6 +9871,10 @@ packages: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} dev: true + /outdent/0.8.0: + resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==} + dev: false + /p-filter/2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} @@ -10022,8 +10082,8 @@ packages: source-map-js: 1.0.2 dev: false - /preact/10.14.1: - resolution: {integrity: sha512-4XDSnUisk3YFBb3p9WeKeH1mKoxdFUsaXcvxs9wlpYR1wax/TWJVqhwmIWbByX0h7jMEJH6Zc5J6jqc58FKaNQ==} + /preact/10.15.1: + resolution: {integrity: sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g==} dev: false /preferred-pm/3.0.3: @@ -10153,6 +10213,17 @@ packages: engines: {node: '>=0.6.0', teleport: '>=0.2.0'} dev: true + /qrcode/1.5.0: + resolution: {integrity: sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + dijkstrajs: 1.0.3 + encode-utf8: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + dev: false + /qrcode/1.5.3: resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} engines: {node: '>=10.13.0'} @@ -10232,6 +10303,58 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true + /react-remove-scroll-bar/2.3.4_s3k22s5ab4eu26xuel7hiaraxy: + resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.6 + react: 18.2.0 + react-style-singleton: 2.2.1_s3k22s5ab4eu26xuel7hiaraxy + tslib: 2.5.3 + dev: false + + /react-remove-scroll/2.5.4_s3k22s5ab4eu26xuel7hiaraxy: + resolution: {integrity: sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.6 + react: 18.2.0 + react-remove-scroll-bar: 2.3.4_s3k22s5ab4eu26xuel7hiaraxy + react-style-singleton: 2.2.1_s3k22s5ab4eu26xuel7hiaraxy + tslib: 2.5.3 + use-callback-ref: 1.3.0_s3k22s5ab4eu26xuel7hiaraxy + use-sidecar: 1.1.2_s3k22s5ab4eu26xuel7hiaraxy + dev: false + + /react-style-singleton/2.2.1_s3k22s5ab4eu26xuel7hiaraxy: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.6 + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.2.0 + tslib: 2.5.3 + dev: false + /react/18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} @@ -10559,7 +10682,7 @@ packages: /rpc-websockets/7.5.1: resolution: {integrity: sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==} dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.22.3 eventemitter3: 4.0.7 uuid: 8.3.2 ws: 8.13.0_3cxu5zja4e2r5wmvge7mdcljwq @@ -11240,7 +11363,7 @@ packages: '@babel/core': 7.22.1 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0_divpegkz2qugvd2racsiwsfxku + jest: 29.5.0_u3tjahz4lx2ow4rgesw7wigoy4 jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -11250,37 +11373,6 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node/10.9.1_6yd3dr4iiziaqkscqiabuqynye: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 20.2.5 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - /ts-node/10.9.1_gbfmtwj2t57hq5iibp7xw5qwjq: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true @@ -11312,37 +11404,6 @@ packages: yn: 3.1.1 dev: true - /ts-node/10.9.1_sz2hep2ld4tbz4lvm5u3llauiu: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 18.16.16 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.1.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - /tsconfig-paths/3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: @@ -11357,13 +11418,8 @@ packages: /tslib/2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - /tslib/2.5.1: - resolution: {integrity: sha512-KaI6gPil5m9vF7DKaoXxx1ia9fxS4qG5YveErRRVknPDXXriu5M8h48YRjB6h5ZUOKuAKlSJYb0GaDe8I39fRw==} - dev: false - /tslib/2.5.3: resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} - dev: true /tsutils/3.21.0_typescript@4.9.5: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -11373,17 +11429,6 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 - dev: false - - /tsutils/3.21.0_typescript@5.1.3: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.1.3 - dev: true /tsyringe/4.7.0: resolution: {integrity: sha512-ncFDM1jTLsok4ejMvSW5jN1VGPQD48y2tfAR0pdptWRKYX4bkbqPt92k7KJ5RFJ1KV36JEs/+TMh7I6OUgj74g==} @@ -11549,6 +11594,37 @@ packages: dependencies: punycode: 2.3.0 + /use-callback-ref/1.3.0_s3k22s5ab4eu26xuel7hiaraxy: + resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.6 + react: 18.2.0 + tslib: 2.5.3 + dev: false + + /use-sidecar/1.1.2_s3k22s5ab4eu26xuel7hiaraxy: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.6 + detect-node-es: 1.1.0 + react: 18.2.0 + tslib: 2.5.3 + dev: false + /use-sync-external-store/1.2.0_react@18.2.0: resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: @@ -11641,12 +11717,12 @@ packages: - zod dev: false - /wagmi/1.0.5_52rmszrm4bg4m3nhb6mgjy7grm: - resolution: {integrity: sha512-XsLhNPTD7c+QXaA9elMwDihvcNHBw4Jcu0S/otkn3N4FgWIUVSQGiUYwm3AQrm/UhON0+Q8Y3ICzxB47PSr46g==} + /wagmi/1.1.1_52rmszrm4bg4m3nhb6mgjy7grm: + resolution: {integrity: sha512-UjLUhISsYIuzPBLfSxeHp6VsTeGs/EGxaS9JBer7OhM/qtMEVKgugzPtNia4aqkMKcA+OBEsSMINY3fHHOafAA==} peerDependencies: react: '>=17.0.0' - typescript: '>=4.9.4' - viem: ~0.3.18 + typescript: '>=5.0.4' + viem: '>=0.3.35' peerDependenciesMeta: typescript: optional: true @@ -11654,8 +11730,8 @@ packages: '@tanstack/query-sync-storage-persister': 4.29.7 '@tanstack/react-query': 4.29.7_biqbaboplfbrettd7655fr4n2y '@tanstack/react-query-persist-client': 4.29.7_776iqyc7ir26b73sx2hj4bwzwu - '@wagmi/core': 1.0.5_nus464gvkzoi6naqshaakklh74 - abitype: 0.8.1_typescript@4.9.5 + '@wagmi/core': 1.1.1_nus464gvkzoi6naqshaakklh74 + abitype: 0.8.7_typescript@4.9.5 react: 18.2.0 typescript: 4.9.5 use-sync-external-store: 1.2.0_react@18.2.0 From a85d900611ece2f1a77f0ae84258825b6d0e15f6 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 13 Jun 2023 11:31:19 +0800 Subject: [PATCH 044/433] Feat/update group (#108) * feat: Update group extra api * chore: Test group api * Create quiet-planets-shop.md --- .changeset/quiet-planets-shop.md | 5 ++ packages/chain-sdk/src/api/group.spec.ts | 80 +++++++++++++++++++ packages/chain-sdk/src/api/group.ts | 17 ++++ packages/chain-sdk/src/config.spec.ts | 20 ++--- .../greenfield/storage/MsgUpdateGroupExtra.ts | 26 ++++++ 5 files changed, 138 insertions(+), 10 deletions(-) create mode 100644 .changeset/quiet-planets-shop.md create mode 100644 packages/chain-sdk/src/api/group.spec.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts diff --git a/.changeset/quiet-planets-shop.md b/.changeset/quiet-planets-shop.md new file mode 100644 index 00000000..e0534a60 --- /dev/null +++ b/.changeset/quiet-planets-shop.md @@ -0,0 +1,5 @@ +--- +"@bnb-chain/greenfield-chain-sdk": patch +--- + +feat: add `updateGroupExtra` api diff --git a/packages/chain-sdk/src/api/group.spec.ts b/packages/chain-sdk/src/api/group.spec.ts new file mode 100644 index 00000000..3053dc07 --- /dev/null +++ b/packages/chain-sdk/src/api/group.spec.ts @@ -0,0 +1,80 @@ +import { describe, test } from '@jest/globals'; +import { Client } from '../client'; +import { ACCOUNT, GREENFIELD_CHAIN_ID, GRPC_URL, ZERO_ACCOUNT_ADDRESS } from '../config.spec'; + +const client = Client.create(GRPC_URL, GREENFIELD_CHAIN_ID); + +describe('groupTx', () => { + describe('createGroup', () => { + test('simulate works', async () => { + const createGroupTx = await client.group.createGroup({ + creator: ACCOUNT.address, + extra: 'extra init', + groupName: 'group name', + members: [ACCOUNT.address], + }); + + const simulateInfo = createGroupTx.simulate({ + denom: 'BNB', + }); + + expect(simulateInfo).not.toBeNull(); + + // console.log(simulateInfo); + }); + + // test('broadcast works', async () => { + // const transferTx = await makeTransferTx(); + // const broadcastInfo = await transferTx.broadcast({ + // denom: 'BNB', + // gasLimit: Number(simulateInfo.gasLimit), + // gasPrice: simulateInfo.gasPrice, + // granter: '', + // payer: ACCOUNT.address, + // privateKey: ACCOUNT.privateKey, + // }); + + // expect(broadcastInfo.code).toEqual(0); + // }); + }); +}); + +async function makeMultiTransferTx() { + return await client.account.multiTransfer(ACCOUNT.address, { + inputs: [ + { + address: ACCOUNT.address, + coins: [ + { + amount: '10', + denom: 'BNB', + }, + ], + }, + ], + outputs: [ + { + address: ZERO_ACCOUNT_ADDRESS, + coins: [ + { + amount: '10', + denom: 'BNB', + }, + ], + }, + ], + }); +} + +async function makeTransferTx() { + return await client.account.transfer({ + amount: [ + { + amount: '10', + denom: 'BNB', + }, + ], + fromAddress: ACCOUNT.address, + toAddress: ZERO_ACCOUNT_ADDRESS, + }); +} diff --git a/packages/chain-sdk/src/api/group.ts b/packages/chain-sdk/src/api/group.ts index 64ddbf49..35993ff7 100644 --- a/packages/chain-sdk/src/api/group.ts +++ b/packages/chain-sdk/src/api/group.ts @@ -10,6 +10,10 @@ import { MsgLeaveGroupSDKTypeEIP712, MsgLeaveGroupTypeUrl, } from '@/messages/greenfield/storage/MsgLeaveGroup'; +import { + MsgUpdateGroupExtraSDKTypeEIP712, + MsgUpdateGroupExtraTypeUrl, +} from '@/messages/greenfield/storage/MsgUpdateGroupExtra'; import { MsgUpdateGroupMemberSDKTypeEIP712, MsgUpdateGroupMemberTypeUrl, @@ -31,6 +35,7 @@ import { MsgDeleteGroup, MsgLeaveGroup, MsgPutPolicy, + MsgUpdateGroupExtra, MsgUpdateGroupMember, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import { container, delay, inject, singleton } from 'tsyringe'; @@ -55,6 +60,8 @@ export interface IGroup { */ updateGroupMember(msg: MsgUpdateGroupMember): Promise; + updateGroupExtra(msg: MsgUpdateGroupExtra): Promise; + /** * make the member leave the specific group */ @@ -142,6 +149,16 @@ export class Group implements IGroup { ); } + public async updateGroupExtra(msg: MsgUpdateGroupExtra) { + return await this.basic.tx( + MsgUpdateGroupExtraTypeUrl, + msg.operator, + MsgUpdateGroupExtraSDKTypeEIP712, + MsgUpdateGroupExtra.toSDK(msg), + MsgUpdateGroupExtra.encode(msg).finish(), + ); + } + public async leaveGroup(address: string, msg: MsgLeaveGroup) { return await this.basic.tx( MsgLeaveGroupTypeUrl, diff --git a/packages/chain-sdk/src/config.spec.ts b/packages/chain-sdk/src/config.spec.ts index ccabc448..8039dc3c 100644 --- a/packages/chain-sdk/src/config.spec.ts +++ b/packages/chain-sdk/src/config.spec.ts @@ -1,20 +1,20 @@ import { ISimulateGasFee } from './types'; -// export const GRPC_URL = 'https://gnfd.qa.bnbchain.world'; -export const GRPC_URL = 'http://localhost:26750'; -// export const GREENFIELD_URL = 'https://gnfd.qa.bnbchain.world'; -export const GREENFIELD_URL = 'http://localhost:26750'; +export const GRPC_URL = 'https://gnfd.qa.bnbchain.world'; +// export const GRPC_URL = 'http://localhost:26750'; +export const GREENFIELD_URL = 'https://gnfd.qa.bnbchain.world'; +// export const GREENFIELD_URL = 'http://localhost:26750'; export const GREENFIELD_CHAIN_ID = '9000'; export const BSC_RPC_URL = 'https://data-seed-prebsc-1-s1.binance.org:8545'; export const BSC_CHAIN_ID = '97'; -// export const ACCOUNT = { -// address: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', -// privateKey: '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032', -// }; export const ACCOUNT = { - address: '0x67c01Cc85Db17E26F279FC588759F266F97d1AB3', - privateKey: '0x9355300339899ae8df87ba0e2b71e8cc1ca996d65b0520e232d9de54bab11861', + address: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + privateKey: '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032', }; +// export const ACCOUNT = { +// address: '0x67c01Cc85Db17E26F279FC588759F266F97d1AB3', +// privateKey: '0x9355300339899ae8df87ba0e2b71e8cc1ca996d65b0520e232d9de54bab11861', +// }; export const ZERO_ACCOUNT_ADDRESS = '0x0000000000000000000000000000000000000000'; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts new file mode 100644 index 00000000..5ac375d7 --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts @@ -0,0 +1,26 @@ +export const MsgUpdateGroupExtraTypeUrl = '/greenfield.storage.MsgUpdateGroupExtra'; + +export const MsgUpdateGroupExtraSDKTypeEIP712 = { + Msg1: [ + { + name: 'type', + type: 'string', + }, + { + name: 'operator', + type: 'string', + }, + { + name: 'group_owner', + type: 'string', + }, + { + name: 'group_name', + type: 'string', + }, + { + name: 'Extra', + type: 'string', + }, + ], +}; From a08baf61048072d79df319ec6be71f3797b7c9c2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 13 Jun 2023 11:34:00 +0800 Subject: [PATCH 045/433] chore: [ci] release (alpha) (#109) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 6660c722..e7769f96 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -23,6 +23,7 @@ "ninety-meals-impress", "olive-bikes-judge", "pretty-bulldogs-notice", + "quiet-planets-shop", "rude-tips-rush", "strong-snails-count", "sweet-feet-hide", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 1f1e7b21..0286469f 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.2-alpha.18 + +### Patch Changes + +- Updated dependencies + [[`a85d900`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a85d900611ece2f1a77f0ae84258825b6d0e15f6)]: + - @bnb-chain/greenfield-chain-sdk@0.2.1-alpha.11 + ## 0.0.2-alpha.17 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 9ff64454..284dd0f5 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.2-alpha.17", + "version": "0.0.2-alpha.18", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index eee330f7..46607608 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.5-alpha.11 + +### Patch Changes + +- Updated dependencies + [[`a85d900`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a85d900611ece2f1a77f0ae84258825b6d0e15f6)]: + - @bnb-chain/greenfield-chain-sdk@0.2.1-alpha.11 + ## 0.0.5-alpha.10 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 74e5aa80..09e7112e 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.5-alpha.10", + "version": "0.0.5-alpha.11", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 819c6952..88bab9d2 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.1-alpha.11 + +### Patch Changes + +- [#108](https://github.com/bnb-chain/greenfield-js-sdk/pull/108) + [`a85d900`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a85d900611ece2f1a77f0ae84258825b6d0e15f6) + Thanks [@rrr523](https://github.com/rrr523)! - feat: add `updateGroupExtra` api + ## 0.2.1-alpha.10 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 180d6932..f2d9874e 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.1-alpha.10", + "version": "0.2.1-alpha.11", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 3eebdc31aee7591cc42f1b4734e7f6487a694cda Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 13 Jun 2023 15:57:31 +0800 Subject: [PATCH 046/433] Feat/sp listgroup (#110) * feat: Add sp.listGroup API * chore: Update Example --- .changeset/rotten-needles-watch.md | 5 ++ .../nextjs/src/components/group/index.tsx | 3 + .../src/components/group/list/index.tsx | 42 +++++++++ .../nextjs/src/components/mirror/index.tsx | 2 +- packages/chain-sdk/src/api/group.ts | 9 +- packages/chain-sdk/src/api/sp.ts | 90 ++++++++++++++++++- packages/chain-sdk/src/utils/http.ts | 11 ++- 7 files changed, 154 insertions(+), 8 deletions(-) create mode 100644 .changeset/rotten-needles-watch.md create mode 100644 examples/nextjs/src/components/group/list/index.tsx diff --git a/.changeset/rotten-needles-watch.md b/.changeset/rotten-needles-watch.md new file mode 100644 index 00000000..1dbad393 --- /dev/null +++ b/.changeset/rotten-needles-watch.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +feat: Add `sp.listGroup` API diff --git a/examples/nextjs/src/components/group/index.tsx b/examples/nextjs/src/components/group/index.tsx index 1babd994..10e0bcfb 100644 --- a/examples/nextjs/src/components/group/index.tsx +++ b/examples/nextjs/src/components/group/index.tsx @@ -1,6 +1,7 @@ import { CreateGroup } from './create'; import { DeleteGroup } from './delete'; import { GroupInfo } from './info'; +import { ListGroup } from './list'; export const Group = () => { return ( @@ -12,6 +13,8 @@ export const Group = () => { + +
); }; diff --git a/examples/nextjs/src/components/group/list/index.tsx b/examples/nextjs/src/components/group/list/index.tsx new file mode 100644 index 00000000..9c4569ed --- /dev/null +++ b/examples/nextjs/src/components/group/list/index.tsx @@ -0,0 +1,42 @@ +import { client } from '@/client'; +import { useState } from 'react'; +import { useAccount } from 'wagmi'; + +export const ListGroup = () => { + const { address } = useAccount(); + const [groupName, setGroupName] = useState(''); + const [prefix, setPrefix] = useState(''); + + return ( +
+

group list

+ { + setPrefix(e.target.value); + }} + /> + { + setGroupName(e.target.value); + }} + /> + +
+ ); +}; diff --git a/examples/nextjs/src/components/mirror/index.tsx b/examples/nextjs/src/components/mirror/index.tsx index c91e5033..9e9df125 100644 --- a/examples/nextjs/src/components/mirror/index.tsx +++ b/examples/nextjs/src/components/mirror/index.tsx @@ -26,7 +26,7 @@ export const Mirror = () => { if (!groupInfo) return; const mirrorGroupTx = await client.crosschain.mirrorGroup({ - groupName: groupInfo.groupName, + groupName: '', id: groupInfo.id, operator: address, }); diff --git a/packages/chain-sdk/src/api/group.ts b/packages/chain-sdk/src/api/group.ts index 35993ff7..5176d346 100644 --- a/packages/chain-sdk/src/api/group.ts +++ b/packages/chain-sdk/src/api/group.ts @@ -20,7 +20,6 @@ import { } from '@/messages/greenfield/storage/MsgUpdateGroupMember'; import { GRNToString, newBucketGRN, newGroupGRN, newObjectGRN } from '@/utils/grn'; import { - QueryBucketNFTResponse, QueryGroupNFTResponse, QueryHeadGroupMemberResponse, QueryHeadGroupResponse, @@ -91,8 +90,6 @@ export interface IGroup { */ getPolicyOfGroup(request: QueryPolicyForGroupRequest): Promise; - // TODO: putGroupPolicy compire with bucket.putBucketPolicy - getBucketPolicyOfGroup(bucketName: string, groupId: number): Promise; getObjectPolicyOfGroup( @@ -100,6 +97,12 @@ export interface IGroup { objectName: string, groupId: number, ): Promise; + + putGroupPolicy( + owner: string, + groupName: string, + srcMsg: Omit, + ): Promise; } @singleton() diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index 5e873b6d..bc9b08dc 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -1,12 +1,16 @@ +import { getAuthorizationAuthTypeV2 } from '@/utils/auth'; +import { fetchWithTimeout, METHOD_GET } from '@/utils/http'; import { QueryParamsResponse } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/query'; import { SecondarySpStorePrice, SpStoragePrice, + Status, StorageProvider, } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/types'; +import { SourceType } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; +import { GroupInfo } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/types'; import Long from 'long'; -import { container, delay, inject, singleton } from 'tsyringe'; -import { Basic } from './basic'; +import { container, singleton } from 'tsyringe'; import { RpcQueryClient } from './queryclient'; export interface ISp { @@ -32,11 +36,12 @@ export interface ISp { getSecondarySpStorePrice(): Promise; params(): Promise; + + listGroup(groupName: string, prefix: string, opts: ListGroupsOptions): Promise; } @singleton() export class Sp implements ISp { - constructor(@inject(delay(() => Basic)) private basic: Basic) {} private queryClient = container.resolve(RpcQueryClient); public async getStorageProviders() { @@ -74,4 +79,83 @@ export class Sp implements ISp { const rpc = await this.queryClient.getSpQueryClient(); return await rpc.Params(); } + + public async getInServiceSP() { + const sps = await this.getStorageProviders(); + const spList = sps.filter((sp) => sp.status === Status.STATUS_IN_SERVICE); + if (spList.length === 0) throw new Error('No storage provider found'); + return spList[0]; + } + + public async listGroup(groupName: string, prefix: string, opts: ListGroupsOptions) { + const MaximumGetGroupListLimit = 1000; + const MaximumGetGroupListOffset = 100000; + const DefaultGetGroupListLimit = 50; + + const res: ListGroupsResult = { + groups: [], + count: '0', + }; + + if (groupName === '' || prefix === '') { + return res; + } + + if (opts.limit < 0) { + return res; + } else if (opts.limit > MaximumGetGroupListLimit) { + opts.limit = MaximumGetGroupListLimit; + } else if (opts.limit === 0) { + opts.limit = DefaultGetGroupListLimit; + } + + if (opts.offset < 0 || opts.offset > MaximumGetGroupListOffset) { + return res; + } + + let headerContent: Record = {}; + const sp = await this.getInServiceSP(); + const Authorization = getAuthorizationAuthTypeV2(); + headerContent = { + ...headerContent, + Authorization, + }; + const url = `${sp.endpoint}?group-query&name=${groupName}&prefix=${prefix}&source-type=${opts.sourceType}&limit=${opts.limit}&offset=${opts.offset}`; + + const headers = new Headers(headerContent); + const result = await fetchWithTimeout(url, { + headers, + method: METHOD_GET, + }); + + const { status } = result; + if (!result.ok) { + throw { + code: -1, + message: 'Get group list error.', + statusCode: status, + }; + } + + return await result.json(); + } } + +type ListGroupsOptions = { + sourceType: keyof typeof SourceType; + limit: number; + offset: number; +}; + +type ListGroupsResult = { + groups: { + group: GroupInfo; + operator: string; + createAt: number; + createTime: number; + updateAt: number; + updateTime: number; + removed: boolean; + }[]; + count: string; +}; diff --git a/packages/chain-sdk/src/utils/http.ts b/packages/chain-sdk/src/utils/http.ts index 83d8043f..a614f4b1 100644 --- a/packages/chain-sdk/src/utils/http.ts +++ b/packages/chain-sdk/src/utils/http.ts @@ -1,3 +1,4 @@ +const EMPTY_STRING_SHA256 = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'; const MOCK_SIGNATURE = '1234567812345678123456781234567812345678123456781234567812345678'; const NORMAL_ERROR_CODE = 404; const METHOD_GET = 'GET'; @@ -21,4 +22,12 @@ const fetchWithTimeout = async (fetchUrl = '', fetchOptions: any = {}, duration } }; -export { MOCK_SIGNATURE, NORMAL_ERROR_CODE, METHOD_GET, METHOD_POST, METHOD_PUT, fetchWithTimeout }; +export { + EMPTY_STRING_SHA256, + MOCK_SIGNATURE, + NORMAL_ERROR_CODE, + METHOD_GET, + METHOD_POST, + METHOD_PUT, + fetchWithTimeout, +}; From d88c1f7dec2e04259319384ad08be4d22cd7d965 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 13 Jun 2023 15:59:31 +0800 Subject: [PATCH 047/433] chore: [ci] release (alpha) (#111) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index e7769f96..a4a20388 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -24,6 +24,7 @@ "olive-bikes-judge", "pretty-bulldogs-notice", "quiet-planets-shop", + "rotten-needles-watch", "rude-tips-rush", "strong-snails-count", "sweet-feet-hide", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 0286469f..2158323a 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.2-alpha.19 + +### Patch Changes + +- Updated dependencies + [[`3eebdc3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3eebdc31aee7591cc42f1b4734e7f6487a694cda)]: + - @bnb-chain/greenfield-chain-sdk@0.2.1-alpha.12 + ## 0.0.2-alpha.18 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 284dd0f5..cb506ffd 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.2-alpha.18", + "version": "0.0.2-alpha.19", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 46607608..a348ea8f 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.5-alpha.12 + +### Patch Changes + +- Updated dependencies + [[`3eebdc3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3eebdc31aee7591cc42f1b4734e7f6487a694cda)]: + - @bnb-chain/greenfield-chain-sdk@0.2.1-alpha.12 + ## 0.0.5-alpha.11 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 09e7112e..3a497319 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.5-alpha.11", + "version": "0.0.5-alpha.12", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 88bab9d2..93f752a3 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.1-alpha.12 + +### Patch Changes + +- [#110](https://github.com/bnb-chain/greenfield-js-sdk/pull/110) + [`3eebdc3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3eebdc31aee7591cc42f1b4734e7f6487a694cda) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add `sp.listGroup` API + ## 0.2.1-alpha.11 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index f2d9874e..3af8808f 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.1-alpha.11", + "version": "0.2.1-alpha.12", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 8bacce86c8a1203001d40c8e307d054e31e9c2b7 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 14 Jun 2023 01:55:34 +0800 Subject: [PATCH 048/433] chore: Update Example (#112) --- examples/nextjs/package.json | 5 +- .../nextjs/src/components/deposit/index.tsx | 35 +- .../nextjs/src/components/multimsg/index.tsx | 6 +- .../nextjs/src/components/transfer/index.tsx | 4 +- .../src/components/walletInfo/index.tsx | 2 +- .../nextjs/src/components/withdraw/index.tsx | 4 +- examples/nextjs/src/config/index.ts | 17 +- examples/nextjs/src/pages/index.tsx | 2 - examples/nextjs/src/utils/simulate.ts | 10 +- package.json | 12 +- pnpm-lock.yaml | 1999 ++++++++++------- 11 files changed, 1244 insertions(+), 852 deletions(-) diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index cb506ffd..b3916698 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -27,15 +27,14 @@ "cors": "^2.8.5", "eslint": "^8.21.0", "eslint-config-next": "13.1.6", - "ethers": "^5", "evmosjs": "^0.2.17", "long": "^5.2.1", "next": "13.1.6", "react": "18.2.0", "react-dom": "18.2.0", "typescript": "^4.7.4", - "viem": "^0.3.31", - "wagmi": "^1.1.1" + "viem": "^1.0.6", + "wagmi": "^1.2.0" }, "devDependencies": { "cross-env": "^7.0.3", diff --git a/examples/nextjs/src/components/deposit/index.tsx b/examples/nextjs/src/components/deposit/index.tsx index 3bf38fc6..82e1acb2 100644 --- a/examples/nextjs/src/components/deposit/index.tsx +++ b/examples/nextjs/src/components/deposit/index.tsx @@ -1,11 +1,11 @@ import { CROSS_CHAIN_CONTRACT_ADDRESS, TOKEN_HUB_CONTRACT_ADDRESS } from '@/config'; import { CROSS_CHAIN_ABI, TOKENHUB_ABI } from '@/constants/abi'; import { useState } from 'react'; -import { formatEther, parseEther } from 'viem'; +import { formatEther, formatGwei, parseEther, parseGwei } from 'viem'; import { useAccount, usePublicClient, useWalletClient } from 'wagmi'; export const Deposit = () => { - const { address, connector, isConnected } = useAccount(); + const { address } = useAccount(); const publicClient = usePublicClient(); const { data: walletClient } = useWalletClient(); const [depositAmount, setDepositAmount] = useState(0); @@ -16,14 +16,13 @@ export const Deposit = () => { amount: { - setDepositAmount(parseInt(e.target.value)); + setDepositAmount(parseFloat(e.target.value)); }} />
-
- ); diff --git a/examples/nextjs/src/components/multimsg/index.tsx b/examples/nextjs/src/components/multimsg/index.tsx index e834c352..ea232050 100644 --- a/examples/nextjs/src/components/multimsg/index.tsx +++ b/examples/nextjs/src/components/multimsg/index.tsx @@ -1,5 +1,5 @@ import { client } from '@/client'; -import { ethers } from 'ethers'; +import { parseEther } from 'viem'; import { useAccount } from 'wagmi'; export const MultiMsg = () => { @@ -18,7 +18,7 @@ export const MultiMsg = () => { amount: [ { denom: 'BNB', - amount: ethers.utils.parseEther('0.00001').toString(), + amount: parseEther('0.00001').toString(), }, ], }); @@ -29,7 +29,7 @@ export const MultiMsg = () => { from: address, to: '0x0000000000000000000000000000000000000001', amount: { - amount: ethers.utils.parseEther('0.00001').toString(), + amount: parseEther('0.00001').toString(), denom: 'BNB', }, }); diff --git a/examples/nextjs/src/components/transfer/index.tsx b/examples/nextjs/src/components/transfer/index.tsx index 2effec5d..f2f93a48 100644 --- a/examples/nextjs/src/components/transfer/index.tsx +++ b/examples/nextjs/src/components/transfer/index.tsx @@ -1,6 +1,6 @@ import { client } from '@/client'; -import { ethers } from 'ethers'; import { useState } from 'react'; +import { parseEther } from 'viem'; import { useAccount } from 'wagmi'; export const Transfer = () => { @@ -51,7 +51,7 @@ export const Transfer = () => { amount: [ { denom: 'BNB', - amount: ethers.utils.parseEther(transferInfo.amount).toString(), + amount: parseEther(`${Number(transferInfo.amount)}`).toString(), }, ], }); diff --git a/examples/nextjs/src/components/walletInfo/index.tsx b/examples/nextjs/src/components/walletInfo/index.tsx index 2900ce15..8cc30d0e 100644 --- a/examples/nextjs/src/components/walletInfo/index.tsx +++ b/examples/nextjs/src/components/walletInfo/index.tsx @@ -3,7 +3,7 @@ import { ConnectButton } from '@rainbow-me/rainbowkit'; export const WalletInfo = () => { return (
- +
); }; diff --git a/examples/nextjs/src/components/withdraw/index.tsx b/examples/nextjs/src/components/withdraw/index.tsx index bb24ed9a..2b4febae 100644 --- a/examples/nextjs/src/components/withdraw/index.tsx +++ b/examples/nextjs/src/components/withdraw/index.tsx @@ -1,8 +1,8 @@ import { client } from '@/client'; import { getRelayFeeBySimulate } from '@/utils/simulate'; import { ISimulateGasFee } from '@bnb-chain/greenfield-chain-sdk'; -import { ethers } from 'ethers'; import { useState } from 'react'; +import { parseEther } from 'viem'; import { useAccount } from 'wagmi'; export const Withdraw = () => { @@ -54,7 +54,7 @@ export const Withdraw = () => { from: address, to: transferoutInfo.to, amount: { - amount: ethers.utils.parseEther(transferoutInfo.amount).toString(), + amount: parseEther(`${Number(transferoutInfo.amount)}`).toString(), denom: 'BNB', }, }); diff --git a/examples/nextjs/src/config/index.ts b/examples/nextjs/src/config/index.ts index 2994785c..6fe1d8ab 100644 --- a/examples/nextjs/src/config/index.ts +++ b/examples/nextjs/src/config/index.ts @@ -1,8 +1,7 @@ -import { Chain, configureChains } from 'wagmi'; -import { mainnet } from 'wagmi/chains'; +import { Chain, configureChains, mainnet } from 'wagmi'; +import { CoinbaseWalletConnector } from 'wagmi/connectors/coinbaseWallet'; import { InjectedConnector } from 'wagmi/connectors/injected'; import { MetaMaskConnector } from 'wagmi/connectors/metaMask'; -import { CoinbaseWalletConnector } from 'wagmi/connectors/coinbaseWallet'; import { publicProvider } from 'wagmi/providers/public'; import * as env from './env'; @@ -17,7 +16,6 @@ export const CROSS_CHAIN_CONTRACT_ADDRESS = env.CROSS_CHAIN_CONTRACT_ADDRESS; const greenFieldChain: Chain = { id: GREEN_CHAIN_ID, network: 'greenfield', - iconUrl: 'https://github.com/wagmi-dev/wagmi/assets/5653652/44446c8c-5c72-4e89-b8eb-3042ef618eed', rpcUrls: { default: { http: [GREENFIELD_RPC_URL], @@ -58,7 +56,16 @@ const bscChain: Chain = { }; const { chains, publicClient, webSocketPublicClient } = configureChains( - [mainnet, greenFieldChain, bscChain], + [ + mainnet, + // { + // ..., + // iconUrl: + // 'https://github.com/wagmi-dev/wagmi/assets/5653652/44446c8c-5c72-4e89-b8eb-3042ef618eed', + // }, + greenFieldChain, + bscChain, + ], [publicProvider()], ); diff --git a/examples/nextjs/src/pages/index.tsx b/examples/nextjs/src/pages/index.tsx index 4db851aa..4ee4bf26 100644 --- a/examples/nextjs/src/pages/index.tsx +++ b/examples/nextjs/src/pages/index.tsx @@ -4,8 +4,6 @@ import Link from 'next/link'; export default function Home() { const isMounted = useIsMounted(); - // https://github.com/ethers-io/ethers.js/issues/726 - if (!isMounted) return null; return ( diff --git a/examples/nextjs/src/utils/simulate.ts b/examples/nextjs/src/utils/simulate.ts index 9e7fc56e..d6c7a614 100644 --- a/examples/nextjs/src/utils/simulate.ts +++ b/examples/nextjs/src/utils/simulate.ts @@ -1,13 +1,13 @@ -import { ethers } from 'ethers'; +import { formatUnits, parseUnits } from 'viem'; export const getRelayFeeBySimulate = ( transferOutRelayerFee: string, transferOutAckRelayerFee: string, ) => { - const relayFee = ethers.utils.parseUnits(transferOutRelayerFee, 0); - const ackFee = ethers.utils.parseUnits(transferOutAckRelayerFee, 0); + const relayFee = parseUnits(`${Number(BigInt(transferOutRelayerFee))}`, 0); + const ackFee = parseUnits(`${Number(BigInt(transferOutAckRelayerFee))}`, 0); - const total = relayFee.add(ackFee); + const total = relayFee + ackFee; - return ethers.utils.formatUnits(total, 18); + return formatUnits(total, 18); }; diff --git a/package.json b/package.json index b1045a9a..27f86c34 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "author": "", "license": "GPLv3", "devDependencies": { - "@babel/core": "^7.22.1", + "@babel/core": "^7.22.5", "@changesets/changelog-github": "^0.4.8", "@changesets/cli": "^2.26.1", "@commitlint/cli": "^17.6.5", @@ -28,11 +28,11 @@ "@rollup/plugin-typescript": "^8.5.0", "@types/chai": "^4.3.5", "@types/mocha": "^9.1.1", - "@types/node": "^18.16.16", - "@types/react": "^18.2.9", - "@types/react-dom": "^18.2.4", - "@typescript-eslint/eslint-plugin": "^5.59.9", - "@typescript-eslint/parser": "^5.59.9", + "@types/node": "^18.16.18", + "@types/react": "^18.2.12", + "@types/react-dom": "^18.2.5", + "@typescript-eslint/eslint-plugin": "^5.59.11", + "@typescript-eslint/parser": "^5.59.11", "chai": "^4.3.7", "conventional-changelog-cmyr-config": "^2.1.0", "eslint": "^8.42.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c408b857..f443d388 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,7 +4,7 @@ importers: .: specifiers: - '@babel/core': ^7.22.1 + '@babel/core': ^7.22.5 '@changesets/changelog-github': ^0.4.8 '@changesets/cli': ^2.26.1 '@commitlint/cli': ^17.6.5 @@ -18,11 +18,11 @@ importers: '@rollup/plugin-typescript': ^8.5.0 '@types/chai': ^4.3.5 '@types/mocha': ^9.1.1 - '@types/node': ^18.16.16 - '@types/react': ^18.2.9 - '@types/react-dom': ^18.2.4 - '@typescript-eslint/eslint-plugin': ^5.59.9 - '@typescript-eslint/parser': ^5.59.9 + '@types/node': ^18.16.18 + '@types/react': ^18.2.12 + '@types/react-dom': ^18.2.5 + '@typescript-eslint/eslint-plugin': ^5.59.11 + '@typescript-eslint/parser': ^5.59.11 chai: ^4.3.7 conventional-changelog-cmyr-config: ^2.1.0 eslint: ^8.42.0 @@ -34,29 +34,29 @@ importers: prettier: ^2.8.8 rimraf: ^3.0.2 devDependencies: - '@babel/core': 7.22.1 + '@babel/core': 7.22.5 '@changesets/changelog-github': 0.4.8 '@changesets/cli': 2.26.1 '@commitlint/cli': 17.6.5 '@commitlint/config-conventional': 17.6.5 '@rollup/plugin-alias': 4.0.4_rollup@2.79.1 - '@rollup/plugin-babel': 5.3.1_k3hxcgsuh2bw3lrplgyzu2m55q + '@rollup/plugin-babel': 5.3.1_7j3zdoaddfjq5alrlemmlxmxci '@rollup/plugin-commonjs': 22.0.2_rollup@2.79.1 '@rollup/plugin-json': 4.1.0_rollup@2.79.1 '@rollup/plugin-node-resolve': 13.3.0_rollup@2.79.1 '@rollup/plugin-strip': 3.0.2_rollup@2.79.1 - '@rollup/plugin-typescript': 8.5.0_zptcx3kz3uwp66hzhyyt545weq + '@rollup/plugin-typescript': 8.5.0_x5fg2s3voyx5jrtpaswheakfcm '@types/chai': 4.3.5 '@types/mocha': 9.1.1 - '@types/node': 18.16.16 - '@types/react': 18.2.9 - '@types/react-dom': 18.2.4 - '@typescript-eslint/eslint-plugin': 5.59.9_3i5bqcvz3xm47mwpahnwyqmg7m - '@typescript-eslint/parser': 5.59.9_kigkzfftsmftz3xok324pyvzui + '@types/node': 18.16.18 + '@types/react': 18.2.12 + '@types/react-dom': 18.2.5 + '@typescript-eslint/eslint-plugin': 5.59.11_sqfi766b7p7jf53aqxvjxvblnq + '@typescript-eslint/parser': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u chai: 4.3.7 conventional-changelog-cmyr-config: 2.1.0 eslint: 8.42.0 - eslint-config-react-app: 7.0.1_xmrelbdudo5pygtffdtf73abn4 + eslint-config-react-app: 7.0.1_yn5ilqvgwchduzwezxxn64yk7y eslint-plugin-prettier: 4.2.1_eveahbx3r3okkkxu7l44ces2q4 husky: 8.0.3 lint-staged: 13.2.2 @@ -84,15 +84,14 @@ importers: dotenv: ^16.0.3 eslint: ^8.21.0 eslint-config-next: 13.1.6 - ethers: ^5 evmosjs: ^0.2.17 long: ^5.2.1 next: 13.1.6 react: 18.2.0 react-dom: 18.2.0 typescript: ^4.7.4 - viem: ^0.3.31 - wagmi: ^1.1.1 + viem: ^1.0.6 + wagmi: ^1.2.0 dependencies: '@bnb-chain/greenfield-chain-sdk': link:../../packages/chain-sdk '@bnb-chain/greenfiled-file-handle': link:../../packages/file-handle @@ -102,7 +101,7 @@ importers: '@ethersproject/signing-key': 5.7.0 '@metamask/eth-sig-util': 5.0.2 '@next/font': 13.1.6 - '@rainbow-me/rainbowkit': 1.0.1_vknwzyp7f6ki4rewwg5gl2fghi + '@rainbow-me/rainbowkit': 1.0.1_osz7gkuvw6gybth6kg2yker4la '@types/node': 18.16.7 '@types/react': 18.2.6 '@types/react-dom': 18.2.4 @@ -110,15 +109,14 @@ importers: cors: 2.8.5 eslint: 8.40.0 eslint-config-next: 13.1.6_jgkqkwom7vrxl4kyi454n2sy2i - ethers: 5.7.2 evmosjs: 0.2.17 long: 5.2.1 next: 13.1.6_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 typescript: 4.9.5 - viem: 0.3.31_typescript@4.9.5 - wagmi: 1.1.1_52rmszrm4bg4m3nhb6mgjy7grm + viem: 1.0.6_typescript@4.9.5 + wagmi: 1.2.0_sta5t6m4653sw6oxbjskfbw63m devDependencies: cross-env: 7.0.3 dotenv: 16.0.3 @@ -256,11 +254,23 @@ packages: '@babel/highlight': 7.18.6 dev: true + /@babel/code-frame/7.22.5: + resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.5 + dev: true + /@babel/compat-data/7.22.3: resolution: {integrity: sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==} engines: {node: '>=6.9.0'} dev: true + /@babel/compat-data/7.22.5: + resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/core/7.22.1: resolution: {integrity: sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==} engines: {node: '>=6.9.0'} @@ -284,14 +294,37 @@ packages: - supports-color dev: true - /@babel/eslint-parser/7.21.8_x4z5szbpxidodfq6bg2unesv74: - resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} + /@babel/core/7.22.5: + resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/helper-compilation-targets': 7.22.5_@babel+core@7.22.5 + '@babel/helper-module-transforms': 7.22.5 + '@babel/helpers': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/eslint-parser/7.22.5_x2nqc5cansj73pf43kd5o2aydq: + resolution: {integrity: sha512-C69RWYNYtrgIRE5CmTd77ZiLDXqgBipahJc/jHP3sLcAGj6AJzxNIuKNpVnICqbyK7X3pFUfEvL++rvtbQpZkQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': '>=7.11.0' eslint: ^7.5.0 || ^8.0.0 dependencies: - '@babel/core': 7.22.1 + '@babel/core': 7.22.5 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 eslint: 8.42.0 eslint-visitor-keys: 2.1.0 @@ -318,18 +351,28 @@ packages: jsesc: 2.5.2 dev: true - /@babel/helper-annotate-as-pure/7.18.6: - resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} + /@babel/generator/7.22.5: + resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.5 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 dev: true - /@babel/helper-builder-binary-assignment-operator-visitor/7.22.3: - resolution: {integrity: sha512-ahEoxgqNoYXm0k22TvOke48i1PkavGu0qGCmcq9ugi6gnmvKNaMjKBSrZTnWUi1CFEeNAUiVba0Wtzm03aSkJg==} + /@babel/helper-annotate-as-pure/7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-builder-binary-assignment-operator-visitor/7.22.5: + resolution: {integrity: sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 dev: true /@babel/helper-compilation-targets/7.22.1_@babel+core@7.22.1: @@ -346,46 +389,60 @@ packages: semver: 6.3.0 dev: true - /@babel/helper-create-class-features-plugin/7.22.1_@babel+core@7.22.1: - resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} + /@babel/helper-compilation-targets/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.22.1 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-member-expression-to-functions': 7.22.3 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.22.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/helper-split-export-declaration': 7.18.6 + '@babel/compat-data': 7.22.5 + '@babel/core': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + browserslist: 4.21.8 + lru-cache: 5.1.1 + semver: 6.3.0 + dev: true + + /@babel/helper-create-class-features-plugin/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-create-regexp-features-plugin/7.22.1_@babel+core@7.22.1: - resolution: {integrity: sha512-WWjdnfR3LPIe+0EY8td7WmjhytxXtjKAEpnAxun/hkNiyOaPlvGK+NZaBFIdi9ndYV3Gav7BpFvtUwnaJlwi1w==} + /@babel/helper-create-regexp-features-plugin/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/core': 7.22.5 + '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.0 dev: true - /@babel/helper-define-polyfill-provider/0.4.0_@babel+core@7.22.1: + /@babel/helper-define-polyfill-provider/0.4.0_@babel+core@7.22.5: resolution: {integrity: sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-compilation-targets': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-compilation-targets': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.2 @@ -399,6 +456,11 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/helper-environment-visitor/7.22.5: + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-function-name/7.21.0: resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} engines: {node: '>=6.9.0'} @@ -407,6 +469,14 @@ packages: '@babel/types': 7.22.4 dev: true + /@babel/helper-function-name/7.22.5: + resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.5 + '@babel/types': 7.22.5 + dev: true + /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} @@ -414,11 +484,18 @@ packages: '@babel/types': 7.22.4 dev: true - /@babel/helper-member-expression-to-functions/7.22.3: - resolution: {integrity: sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA==} + /@babel/helper-hoist-variables/7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-member-expression-to-functions/7.22.5: + resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 dev: true /@babel/helper-module-imports/7.21.4: @@ -428,6 +505,13 @@ packages: '@babel/types': 7.22.4 dev: true + /@babel/helper-module-imports/7.22.5: + resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: true + /@babel/helper-module-transforms/7.22.1: resolution: {integrity: sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==} engines: {node: '>=6.9.0'} @@ -444,11 +528,27 @@ packages: - supports-color dev: true - /@babel/helper-optimise-call-expression/7.18.6: - resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} + /@babel/helper-module-transforms/7.22.5: + resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-optimise-call-expression/7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 dev: true /@babel/helper-plugin-utils/7.21.5: @@ -456,31 +556,36 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.22.1: - resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} + /@babel/helper-plugin-utils/7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-remap-async-to-generator/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.22.1 - '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.22.4 + '@babel/core': 7.22.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-wrap-function': 7.22.5 + '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-replace-supers/7.22.1: - resolution: {integrity: sha512-ut4qrkE4AuSfrwHSps51ekR1ZY/ygrP1tp0WFm8oVq6nzc/hvfV/22JylndIbsf2U2M9LOMwiSddr6y+78j+OQ==} + /@babel/helper-replace-supers/7.22.5: + resolution: {integrity: sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.22.1 - '@babel/helper-member-expression-to-functions': 7.22.3 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/template': 7.21.9 - '@babel/traverse': 7.22.4 - '@babel/types': 7.22.4 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color dev: true @@ -492,11 +597,18 @@ packages: '@babel/types': 7.22.4 dev: true - /@babel/helper-skip-transparent-expression-wrappers/7.20.0: - resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} + /@babel/helper-simple-access/7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-skip-transparent-expression-wrappers/7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 dev: true /@babel/helper-split-export-declaration/7.18.6: @@ -506,29 +618,51 @@ packages: '@babel/types': 7.22.4 dev: true + /@babel/helper-split-export-declaration/7.22.5: + resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: true + /@babel/helper-string-parser/7.21.5: resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} engines: {node: '>=6.9.0'} dev: true + /@babel/helper-string-parser/7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-identifier/7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} dev: true + /@babel/helper-validator-identifier/7.22.5: + resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-option/7.21.0: resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-wrap-function/7.20.5: - resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} + /@babel/helper-validator-option/7.22.5: + resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-wrap-function/7.22.5: + resolution: {integrity: sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-function-name': 7.21.0 - '@babel/template': 7.21.9 - '@babel/traverse': 7.22.4 - '@babel/types': 7.22.4 + '@babel/helper-function-name': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color dev: true @@ -544,6 +678,17 @@ packages: - supports-color dev: true + /@babel/helpers/7.22.5: + resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/highlight/7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} @@ -553,6 +698,15 @@ packages: js-tokens: 4.0.0 dev: true + /@babel/highlight/7.22.5: + resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + /@babel/parser/7.22.4: resolution: {integrity: sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==} engines: {node: '>=6.0.0'} @@ -561,128 +715,145 @@ packages: '@babel/types': 7.22.4 dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.22.1: - resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} + /@babel/parser/7.22.5: + resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-6r4yRwEnorYByILoDRnEqxtojYKuiIv9FojW2E8GUKo9eWBwbKcd9IiZOZpdyXc64RmyGGyPu3/uAcrz/dq2kQ==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-transform-optional-chaining': 7.22.3_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.22.5_@babel+core@7.22.5 dev: true - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.22.1: + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.22.5: resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-create-class-features-plugin': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-decorators/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-XjTKH3sHr6pPqG+hR1NCdVupwiosfdKM2oSMyKQVQ5Bym9l/p7BuLAqT5U32zZzRCfPq/TPRPzMiiTE9bOXU4w==} + /@babel/plugin-proposal-decorators/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-h8hlezQ4dl6ixodgXkH8lUfcD7x+WAuIqPUjwGoItynrXOAv4a4Tci1zA/qjzQjjcl0v3QpLdc2LM6ZACQuY7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-create-class-features-plugin': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-replace-supers': 7.22.1 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/plugin-syntax-decorators': 7.22.3_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/plugin-syntax-decorators': 7.22.5_@babel+core@7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.22.1: + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.22.5: resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.22.5 dev: true - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.22.1: + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.22.5: resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.22.5 dev: true - /@babel/plugin-proposal-optional-chaining/7.21.0_@babel+core@7.22.1: + /@babel/plugin-proposal-optional-chaining/7.21.0_@babel+core@7.22.5: resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.22.5 dev: true - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.22.1: + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.22.5: resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-create-class-features-plugin': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object/7.21.11_@babel+core@7.22.1: + /@babel/plugin-proposal-private-property-in-object/7.21.0-placeholder-for-preset-env.2_@babel+core@7.22.5: + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + dev: true + + /@babel/plugin-proposal-private-property-in-object/7.21.11_@babel+core@7.22.5: resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.22.1: + /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.22.5: resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-create-regexp-features-plugin': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.22.1: @@ -694,6 +865,15 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.22.5: + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.22.1: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: @@ -712,72 +892,81 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.22.1: + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.22.5: + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.22.5: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-decorators/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-R16Zuge73+8/nLcDjkIpyhi5wIbN7i7fiuLJR8yQX7vPAa/ltUKtd3iLbb4AgP5nrLi91HnNUNosELIGUGH1bg==} + /@babel/plugin-syntax-decorators/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-avpUOBS7IU6al8MmF1XpAyj9QYeLPuSDJI5D4pVMSMdL7xQokKqJPYQC67RCT0aCTashUXPiGwMJ0DEXXCEmMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.22.1: + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.22.5: resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.22.1: + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.22.5: resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-flow/7.21.4_@babel+core@7.22.1: - resolution: {integrity: sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw==} + /@babel/plugin-syntax-flow/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.22.1: - resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} + /@babel/plugin-syntax-import-assertions/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-i35jZJv6aO7hxEbIWQ41adVfOzjm9dcYDNeWlBMd8p0ZQRtNUCBrmGwZt+H5lb+oOC9a3svp956KP0oWGA1YsA==} + /@babel/plugin-syntax-import-attributes/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.22.1: @@ -789,6 +978,15 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.22.5: + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.22.1: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: @@ -798,6 +996,15 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.22.5: + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-jsx/7.21.4_@babel+core@7.22.1: resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} engines: {node: '>=6.9.0'} @@ -808,6 +1015,16 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true + /@babel/plugin-syntax-jsx/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.22.1: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -817,6 +1034,15 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.22.5: + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.22.1: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: @@ -826,6 +1052,15 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.22.5: + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.22.1: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: @@ -835,6 +1070,15 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.22.5: + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.22.1: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: @@ -844,6 +1088,15 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.22.5: + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.22.1: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: @@ -853,6 +1106,15 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.22.5: + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.22.1: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: @@ -862,14 +1124,23 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.22.1: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.22.5: + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.22.5: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.22.1: @@ -882,6 +1153,16 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.22.5: + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-typescript/7.21.4_@babel+core@7.22.1: resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} engines: {node: '>=6.9.0'} @@ -892,792 +1173,802 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-unicode-sets-regex/7.18.6_@babel+core@7.22.1: + /@babel/plugin-syntax-typescript/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-unicode-sets-regex/7.18.6_@babel+core@7.22.5: resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-create-regexp-features-plugin': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions/7.21.5_@babel+core@7.22.1: - resolution: {integrity: sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==} + /@babel/plugin-transform-arrow-functions/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-async-generator-functions/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-36A4Aq48t66btydbZd5Fk0/xJqbpg/v4QWI4AH4cYHBXy9Mu42UOupZpebKFiCFNT9S9rJFcsld0gsv0ayLjtA==} + /@babel/plugin-transform-async-generator-functions/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-environment-visitor': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.22.1 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-async-to-generator/7.20.7_@babel+core@7.22.1: - resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} + /@babel/plugin-transform-async-to-generator/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.5_@babel+core@7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.22.1: - resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + /@babel/plugin-transform-block-scoped-functions/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping/7.21.0_@babel+core@7.22.1: - resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} + /@babel/plugin-transform-block-scoping/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-properties/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-mASLsd6rhOrLZ5F3WbCxkzl67mmOnqik0zrg5W6D/X0QMW7HtvnoL1dRARLKIbMP3vXwkwziuLesPqWVGIl6Bw==} + /@babel/plugin-transform-class-properties/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-create-class-features-plugin': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-class-static-block/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-5BirgNWNOx7cwbTJCOmKFJ1pZjwk5MUfMIwiBBvsirCJMZeQgs5pk6i1OlkVg+1Vef5LfBahFOrdCnAWvkVKMw==} + /@babel/plugin-transform-class-static-block/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-create-class-features-plugin': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-classes/7.21.0_@babel+core@7.22.1: - resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} + /@babel/plugin-transform-classes/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.22.1_@babel+core@7.22.1 - '@babel/helper-environment-visitor': 7.22.1 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-replace-supers': 7.22.1 - '@babel/helper-split-export-declaration': 7.18.6 + '@babel/core': 7.22.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.22.5_@babel+core@7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-computed-properties/7.21.5_@babel+core@7.22.1: - resolution: {integrity: sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q==} + /@babel/plugin-transform-computed-properties/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/template': 7.21.9 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.5 dev: true - /@babel/plugin-transform-destructuring/7.21.3_@babel+core@7.22.1: - resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} + /@babel/plugin-transform-destructuring/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.22.1: - resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} + /@babel/plugin-transform-dotall-regex/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-create-regexp-features-plugin': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.22.1: - resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} + /@babel/plugin-transform-duplicate-keys/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dynamic-import/7.22.1_@babel+core@7.22.1: - resolution: {integrity: sha512-rlhWtONnVBPdmt+jeewS0qSnMz/3yLFrqAP8hHC6EDcrYRSyuz9f9yQhHvVn2Ad6+yO9fHXac5piudeYrInxwQ==} + /@babel/plugin-transform-dynamic-import/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.22.5 dev: true - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.22.1: - resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} + /@babel/plugin-transform-exponentiation-operator/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-export-namespace-from/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-5Ti1cHLTDnt3vX61P9KZ5IG09bFXp4cDVFJIAeCZuxu9OXXJJZp5iP0n/rzM2+iAutJY+KWEyyHcRaHlpQ/P5g==} + /@babel/plugin-transform-export-namespace-from/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.22.5 dev: true - /@babel/plugin-transform-flow-strip-types/7.21.0_@babel+core@7.22.1: - resolution: {integrity: sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==} + /@babel/plugin-transform-flow-strip-types/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-flow': 7.21.4_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-flow': 7.22.5_@babel+core@7.22.5 dev: true - /@babel/plugin-transform-for-of/7.21.5_@babel+core@7.22.1: - resolution: {integrity: sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ==} + /@babel/plugin-transform-for-of/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.22.1: - resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} + /@babel/plugin-transform-function-name/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-compilation-targets': 7.22.1_@babel+core@7.22.1 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-compilation-targets': 7.22.5_@babel+core@7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-json-strings/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-IuvOMdeOOY2X4hRNAT6kwbePtK21BUyrAEgLKviL8pL6AEEVUVcqtRdN/HJXBLGIbt9T3ETmXRnFedRRmQNTYw==} + /@babel/plugin-transform-json-strings/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.22.5 dev: true - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.22.1: - resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + /@babel/plugin-transform-literals/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-logical-assignment-operators/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-CbayIfOw4av2v/HYZEsH+Klks3NC2/MFIR3QR8gnpGNNPEaq2fdlVCRYG/paKs7/5hvBLQ+H70pGWOHtlNEWNA==} + /@babel/plugin-transform-logical-assignment-operators/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.22.5 dev: true - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.22.1: - resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + /@babel/plugin-transform-member-expression-literals/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-amd/7.20.11_@babel+core@7.22.1: - resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} + /@babel/plugin-transform-modules-amd/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-module-transforms': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-module-transforms': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs/7.21.5_@babel+core@7.22.1: - resolution: {integrity: sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==} + /@babel/plugin-transform-modules-commonjs/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-module-transforms': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-simple-access': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-module-transforms': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-systemjs/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-V21W3bKLxO3ZjcBJZ8biSvo5gQ85uIXW2vJfh7JSWf/4SLUSr1tOoHX3ruN4+Oqa2m+BKfsxTR1I+PsvkIWvNw==} + /@babel/plugin-transform-modules-systemjs/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-identifier': 7.19.1 + '@babel/core': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.22.1: - resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} + /@babel/plugin-transform-modules-umd/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-module-transforms': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-module-transforms': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-named-capturing-groups-regex/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-c6HrD/LpUdNNJsISQZpds3TXvfYIAbo+efE9aWmY/PmSRD0agrJ9cPMt4BmArwUQ7ZymEWTFjTyp+yReLJZh0Q==} + /@babel/plugin-transform-named-capturing-groups-regex/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-create-regexp-features-plugin': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-new-target/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-5RuJdSo89wKdkRTqtM9RVVJzHum9c2s0te9rB7vZC1zKKxcioWIy+xcu4OoIAjyFZhb/bp5KkunuLin1q7Ct+w==} + /@babel/plugin-transform-new-target/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-nullish-coalescing-operator/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-CpaoNp16nX7ROtLONNuCyenYdY/l7ZsR6aoVa7rW7nMWisoNoQNIH5Iay/4LDyRjKMuElMqXiBoOQCDLTMGZiw==} + /@babel/plugin-transform-nullish-coalescing-operator/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.22.5 dev: true - /@babel/plugin-transform-numeric-separator/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-+AF88fPDJrnseMh5vD9+SH6wq4ZMvpiTMHh58uLs+giMEyASFVhcT3NkoyO+NebFCNnpHJEq5AXO2txV4AGPDQ==} + /@babel/plugin-transform-numeric-separator/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.22.5 dev: true - /@babel/plugin-transform-object-rest-spread/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-38bzTsqMMCI46/TQnJwPPpy33EjLCc1Gsm2hRTF6zTMWnKsN61vdrpuzIEGQyKEhDSYDKyZHrrd5FMj4gcUHhw==} + /@babel/plugin-transform-object-rest-spread/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.3 - '@babel/core': 7.22.1 - '@babel/helper-compilation-targets': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.22.1 - '@babel/plugin-transform-parameters': 7.22.3_@babel+core@7.22.1 + '@babel/compat-data': 7.22.5 + '@babel/core': 7.22.5 + '@babel/helper-compilation-targets': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-transform-parameters': 7.22.5_@babel+core@7.22.5 dev: true - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.22.1: - resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + /@babel/plugin-transform-object-super/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-replace-supers': 7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-optional-catch-binding/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-bnDFWXFzWY0BsOyqaoSXvMQ2F35zutQipugog/rqotL2S4ciFOKlRYUu9djt4iq09oh2/34hqfRR2k1dIvuu4g==} + /@babel/plugin-transform-optional-catch-binding/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.22.5 dev: true - /@babel/plugin-transform-optional-chaining/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-63v3/UFFxhPKT8j8u1jTTGVyITxl7/7AfOqK8C5gz1rHURPUGe3y5mvIf68eYKGoBNahtJnTxBKug4BQOnzeJg==} + /@babel/plugin-transform-optional-chaining/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.22.5 dev: true - /@babel/plugin-transform-parameters/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-x7QHQJHPuD9VmfpzboyGJ5aHEr9r7DsAsdxdhJiTB3J3j8dyl+NFZ+rX5Q2RWFDCs61c06qBfS4ys2QYn8UkMw==} + /@babel/plugin-transform-parameters/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-methods/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-fC7jtjBPFqhqpPAE+O4LKwnLq7gGkD3ZmC2E3i4qWH34mH3gOg2Xrq5YMHUq6DM30xhqM1DNftiRaSqVjEG+ug==} + /@babel/plugin-transform-private-methods/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-create-class-features-plugin': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-private-property-in-object/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-C7MMl4qWLpgVCbXfj3UW8rR1xeCnisQ0cU7YJHV//8oNBS0aCIVg1vFnZXxOckHhEpQyqNNkWmvSEWnMLlc+Vw==} + /@babel/plugin-transform-private-property-in-object/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.22.1: - resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + /@babel/plugin-transform-property-literals/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.22.1: - resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} + /@babel/plugin-transform-react-display-name/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.22.1: - resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} + /@babel/plugin-transform-react-jsx-development/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/plugin-transform-react-jsx': 7.22.3_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/plugin-transform-react-jsx': 7.22.5_@babel+core@7.22.5 dev: true - /@babel/plugin-transform-react-jsx/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-JEulRWG2f04a7L8VWaOngWiK6p+JOSpB+DAtwfJgOaej1qdbNxqtK7MwTBHjUA10NeFcszlFNqCdbRcirzh2uQ==} + /@babel/plugin-transform-react-jsx/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-jsx': 7.21.4_@babel+core@7.22.1 - '@babel/types': 7.22.4 + '@babel/core': 7.22.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5_@babel+core@7.22.5 + '@babel/types': 7.22.5 dev: true - /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.22.1: - resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} + /@babel/plugin-transform-react-pure-annotations/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-regenerator/7.21.5_@babel+core@7.22.1: - resolution: {integrity: sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w==} + /@babel/plugin-transform-regenerator/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.1 dev: true - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.22.1: - resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} + /@babel/plugin-transform-reserved-words/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-runtime/7.22.4_@babel+core@7.22.1: - resolution: {integrity: sha512-Urkiz1m4zqiRo17klj+l3nXgiRTFQng91Bc1eiLF7BMQu1e7wE5Gcq9xSv062IF068NHjcutSbIMev60gXxAvA==} + /@babel/plugin-transform-runtime/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-bg4Wxd1FWeFx3daHFTWk1pkSWK/AyQuiyAoeZAOkAOUBjnZPH6KT7eMxouV47tQ6hl6ax2zyAWBdWZXbrvXlaw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-plugin-utils': 7.21.5 - babel-plugin-polyfill-corejs2: 0.4.3_@babel+core@7.22.1 - babel-plugin-polyfill-corejs3: 0.8.1_@babel+core@7.22.1 - babel-plugin-polyfill-regenerator: 0.5.0_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.3_@babel+core@7.22.5 + babel-plugin-polyfill-corejs3: 0.8.1_@babel+core@7.22.5 + babel-plugin-polyfill-regenerator: 0.5.0_@babel+core@7.22.5 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.22.1: - resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + /@babel/plugin-transform-shorthand-properties/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-spread/7.20.7_@babel+core@7.22.1: - resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} + /@babel/plugin-transform-spread/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.22.1: - resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} + /@babel/plugin-transform-sticky-regex/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.22.1: - resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + /@babel/plugin-transform-template-literals/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.22.1: - resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} + /@babel/plugin-transform-typeof-symbol/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typescript/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-pyjnCIniO5PNaEuGxT28h0HbMru3qCVrMqVgVOz/krComdIrY9W6FCLBq9NWHY8HDGaUlan+UhmZElDENIfCcw==} + /@babel/plugin-transform-typescript/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-SMubA9S7Cb5sGSFFUlqxyClTA9zWJ8qGQrppNUm05LtFuN1ELRFNndkix4zUJrC9F+YivWwa1dHMSyo0e0N9dA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-typescript': 7.21.4_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5_@babel+core@7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-unicode-escapes/7.21.5_@babel+core@7.22.1: - resolution: {integrity: sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg==} + /@babel/plugin-transform-unicode-escapes/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-property-regex/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-5ScJ+OmdX+O6HRuMGW4kv7RL9vIKdtdAj9wuWUKy1wbHY3jaM/UlyIiC1G7J6UJiiyMukjjK0QwL3P0vBd0yYg==} + /@babel/plugin-transform-unicode-property-regex/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-create-regexp-features-plugin': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.22.1: - resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} + /@babel/plugin-transform-unicode-regex/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-create-regexp-features-plugin': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-sets-regex/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-hNufLdkF8vqywRp+P55j4FHXqAX2LRUccoZHH7AFn1pq5ZOO2ISKW9w13bFZVjBoTqeve2HOgoJCcaziJVhGNw==} + /@babel/plugin-transform-unicode-sets-regex/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-create-regexp-features-plugin': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/preset-env/7.22.4_@babel+core@7.22.1: - resolution: {integrity: sha512-c3lHOjbwBv0TkhYCr+XCR6wKcSZ1QbQTVdSkZUaVpLv8CVWotBMArWUi5UAJrcrQaEnleVkkvaV8F/pmc/STZQ==} + /@babel/preset-env/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.22.3 - '@babel/core': 7.22.1 - '@babel/helper-compilation-targets': 7.22.1_@babel+core@7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-option': 7.21.0 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-proposal-private-property-in-object': 7.21.11_@babel+core@7.22.1 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.22.1 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.22.1 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.22.1 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.22.1 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.22.1 - '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.22.1 - '@babel/plugin-syntax-import-attributes': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.22.1 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.22.1 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.22.1 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.22.1 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.22.1 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.22.1 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.22.1 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.22.1 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.22.1 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.22.1 - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-transform-arrow-functions': 7.21.5_@babel+core@7.22.1 - '@babel/plugin-transform-async-generator-functions': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-async-to-generator': 7.20.7_@babel+core@7.22.1 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.22.1 - '@babel/plugin-transform-class-properties': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-class-static-block': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.22.1 - '@babel/plugin-transform-computed-properties': 7.21.5_@babel+core@7.22.1 - '@babel/plugin-transform-destructuring': 7.21.3_@babel+core@7.22.1 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.22.1 - '@babel/plugin-transform-dynamic-import': 7.22.1_@babel+core@7.22.1 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-transform-export-namespace-from': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-for-of': 7.21.5_@babel+core@7.22.1 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.22.1 - '@babel/plugin-transform-json-strings': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.22.1 - '@babel/plugin-transform-logical-assignment-operators': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-transform-modules-amd': 7.20.11_@babel+core@7.22.1 - '@babel/plugin-transform-modules-commonjs': 7.21.5_@babel+core@7.22.1 - '@babel/plugin-transform-modules-systemjs': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-new-target': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-nullish-coalescing-operator': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-numeric-separator': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-object-rest-spread': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-transform-optional-catch-binding': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-optional-chaining': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-parameters': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-private-methods': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-private-property-in-object': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-transform-regenerator': 7.21.5_@babel+core@7.22.1 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.22.1 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.22.1 - '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.22.1 - '@babel/plugin-transform-unicode-escapes': 7.21.5_@babel+core@7.22.1 - '@babel/plugin-transform-unicode-property-regex': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-transform-unicode-sets-regex': 7.22.3_@babel+core@7.22.1 - '@babel/preset-modules': 0.1.5_@babel+core@7.22.1 - '@babel/types': 7.22.4 - babel-plugin-polyfill-corejs2: 0.4.3_@babel+core@7.22.1 - babel-plugin-polyfill-corejs3: 0.8.1_@babel+core@7.22.1 - babel-plugin-polyfill-regenerator: 0.5.0_@babel+core@7.22.1 - core-js-compat: 3.30.2 + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.5 + '@babel/core': 7.22.5 + '@babel/helper-compilation-targets': 7.22.5_@babel+core@7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2_@babel+core@7.22.5 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.22.5 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-import-assertions': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-syntax-import-attributes': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.22.5 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.22.5 + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6_@babel+core@7.22.5 + '@babel/plugin-transform-arrow-functions': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-async-generator-functions': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-async-to-generator': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-block-scoped-functions': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-block-scoping': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-class-properties': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-class-static-block': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-classes': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-computed-properties': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-destructuring': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-dotall-regex': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-duplicate-keys': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-dynamic-import': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-exponentiation-operator': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-export-namespace-from': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-for-of': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-function-name': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-json-strings': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-literals': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-logical-assignment-operators': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-member-expression-literals': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-modules-amd': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-modules-commonjs': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-modules-systemjs': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-modules-umd': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-new-target': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-numeric-separator': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-object-rest-spread': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-object-super': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-optional-catch-binding': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-optional-chaining': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-parameters': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-private-methods': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-private-property-in-object': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-property-literals': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-regenerator': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-reserved-words': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-shorthand-properties': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-spread': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-sticky-regex': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-template-literals': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-typeof-symbol': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-unicode-escapes': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-unicode-property-regex': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-unicode-regex': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-unicode-sets-regex': 7.22.5_@babel+core@7.22.5 + '@babel/preset-modules': 0.1.5_@babel+core@7.22.5 + '@babel/types': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.3_@babel+core@7.22.5 + babel-plugin-polyfill-corejs3: 0.8.1_@babel+core@7.22.5 + babel-plugin-polyfill-regenerator: 0.5.0_@babel+core@7.22.5 + core-js-compat: 3.31.0 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules/0.1.5_@babel+core@7.22.1: + /@babel/preset-modules/0.1.5_@babel+core@7.22.5: resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.22.1 - '@babel/types': 7.22.4 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.22.5 + '@babel/plugin-transform-dotall-regex': 7.22.5_@babel+core@7.22.5 + '@babel/types': 7.22.5 esutils: 2.0.3 dev: true - /@babel/preset-react/7.22.3_@babel+core@7.22.1: - resolution: {integrity: sha512-lxDz1mnZ9polqClBCVBjIVUypoB4qV3/tZUDb/IlYbW1kiiLaXaX+bInbRjl+lNQ/iUZraQ3+S8daEmoELMWug==} + /@babel/preset-react/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-option': 7.21.0 - '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-transform-react-jsx': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + '@babel/plugin-transform-react-display-name': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-react-jsx': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-react-jsx-development': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-react-pure-annotations': 7.22.5_@babel+core@7.22.5 dev: true - /@babel/preset-typescript/7.21.5_@babel+core@7.22.1: - resolution: {integrity: sha512-iqe3sETat5EOrORXiQ6rWfoOg2y68Cs75B9wNxdPW4kixJxh7aXQE1KPdWLDniC24T/6dSnguF33W9j/ZZQcmA==} + /@babel/preset-typescript/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-option': 7.21.0 - '@babel/plugin-syntax-jsx': 7.21.4_@babel+core@7.22.1 - '@babel/plugin-transform-modules-commonjs': 7.21.5_@babel+core@7.22.1 - '@babel/plugin-transform-typescript': 7.22.3_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-modules-commonjs': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-typescript': 7.22.5_@babel+core@7.22.5 transitivePeerDependencies: - supports-color dev: true @@ -1692,6 +1983,12 @@ packages: dependencies: regenerator-runtime: 0.13.11 + /@babel/runtime/7.22.5: + resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + /@babel/template/7.21.9: resolution: {integrity: sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==} engines: {node: '>=6.9.0'} @@ -1701,6 +1998,15 @@ packages: '@babel/types': 7.22.4 dev: true + /@babel/template/7.22.5: + resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 + dev: true + /@babel/traverse/7.21.5: resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==} engines: {node: '>=6.9.0'} @@ -1737,6 +2043,24 @@ packages: - supports-color dev: true + /@babel/traverse/7.22.5: + resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/types/7.21.5: resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} engines: {node: '>=6.9.0'} @@ -1755,6 +2079,15 @@ packages: to-fast-properties: 2.0.0 dev: true + /@babel/types/7.22.5: + resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + to-fast-properties: 2.0.0 + dev: true + /@bcoe/v8-coverage/0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true @@ -1787,7 +2120,7 @@ packages: /@changesets/apply-release-plan/6.1.3: resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.5 '@changesets/config': 2.3.0 '@changesets/get-version-range-type': 0.3.2 '@changesets/git': 2.0.0 @@ -1805,7 +2138,7 @@ packages: /@changesets/assemble-release-plan/5.2.3: resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.5 '@changesets/errors': 0.1.4 '@changesets/get-dependents-graph': 1.3.5 '@changesets/types': 5.2.1 @@ -1833,7 +2166,7 @@ packages: resolution: {integrity: sha512-XnTa+b51vt057fyAudvDKGB0Sh72xutQZNAdXkCqPBKO2zvs2yYZx5hFZj1u9cbtpwM6Sxtcr02/FQJfZOzemQ==} hasBin: true dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.5 '@changesets/apply-release-plan': 6.1.3 '@changesets/assemble-release-plan': 5.2.3 '@changesets/changelog-git': 0.1.14 @@ -1908,7 +2241,7 @@ packages: /@changesets/get-release-plan/3.0.16: resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.5 '@changesets/assemble-release-plan': 5.2.3 '@changesets/config': 2.3.0 '@changesets/pre': 1.0.14 @@ -1924,7 +2257,7 @@ packages: /@changesets/git/2.0.0: resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.5 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -1949,7 +2282,7 @@ packages: /@changesets/pre/1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.5 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -1959,7 +2292,7 @@ packages: /@changesets/read/0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.5 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/parse': 0.3.16 @@ -1980,7 +2313,7 @@ packages: /@changesets/write/0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.5 '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 @@ -2101,15 +2434,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.16.16 + '@types/node': 18.16.18 chalk: 4.1.2 cosmiconfig: 8.2.0 - cosmiconfig-typescript-loader: 4.3.0_lvwppffiyrxnhtsstljkwa2inq + cosmiconfig-typescript-loader: 4.3.0_f7ftk3vf3beanyfjs3ua3i63me lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1_gbfmtwj2t57hq5iibp7xw5qwjq + ts-node: 10.9.1_uc4mglbmg4gsgxc6hysq56typi typescript: 5.1.3 transitivePeerDependencies: - '@swc/core' @@ -2186,7 +2519,7 @@ packages: /@confio/ics23/0.6.8: resolution: {integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==} dependencies: - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.1 protobufjs: 6.11.3 dev: false @@ -2223,7 +2556,7 @@ packages: '@cosmjs/encoding': 0.28.13 '@cosmjs/math': 0.28.13 '@cosmjs/utils': 0.28.13 - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.1 bn.js: 5.2.1 elliptic: 6.5.4 libsodium-wrappers: 0.7.11 @@ -2235,7 +2568,7 @@ packages: '@cosmjs/encoding': 0.29.5 '@cosmjs/math': 0.29.5 '@cosmjs/utils': 0.29.5 - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.1 bn.js: 5.2.1 elliptic: 6.5.4 libsodium-wrappers: 0.7.11 @@ -3288,7 +3621,7 @@ packages: /@manypkg/find-root/1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.5 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -3297,7 +3630,7 @@ packages: /@manypkg/get-packages/1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.5 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -3648,7 +3981,7 @@ packages: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} dev: false - /@rainbow-me/rainbowkit/1.0.1_vknwzyp7f6ki4rewwg5gl2fghi: + /@rainbow-me/rainbowkit/1.0.1_osz7gkuvw6gybth6kg2yker4la: resolution: {integrity: sha512-P+2lgHaN5X84K1e+MARUydyhYRS+nStN4H470QloBBWP5UsidHZpSJGd4qi0WFtfR6zBff96N6kmsfJo7PjFhQ==} engines: {node: '>=12.4'} peerDependencies: @@ -3665,8 +3998,8 @@ packages: react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-remove-scroll: 2.5.4_s3k22s5ab4eu26xuel7hiaraxy - viem: 0.3.31_typescript@4.9.5 - wagmi: 1.1.1_52rmszrm4bg4m3nhb6mgjy7grm + viem: 1.0.6_typescript@4.9.5 + wagmi: 1.2.0_sta5t6m4653sw6oxbjskfbw63m transitivePeerDependencies: - '@types/react' dev: false @@ -3684,7 +4017,7 @@ packages: slash: 4.0.0 dev: true - /@rollup/plugin-babel/5.3.1_k3hxcgsuh2bw3lrplgyzu2m55q: + /@rollup/plugin-babel/5.3.1_7j3zdoaddfjq5alrlemmlxmxci: resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -3695,8 +4028,8 @@ packages: '@types/babel__core': optional: true dependencies: - '@babel/core': 7.22.1 - '@babel/helper-module-imports': 7.21.4 + '@babel/core': 7.22.5 + '@babel/helper-module-imports': 7.22.5 '@rollup/pluginutils': 3.1.0_rollup@2.79.1 rollup: 2.79.1 dev: true @@ -3767,7 +4100,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-typescript/8.5.0_zptcx3kz3uwp66hzhyyt545weq: + /@rollup/plugin-typescript/8.5.0_x5fg2s3voyx5jrtpaswheakfcm: resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} engines: {node: '>=8.0.0'} peerDependencies: @@ -3781,7 +4114,7 @@ packages: '@rollup/pluginutils': 3.1.0_rollup@2.79.1 resolve: 1.22.2 rollup: 2.79.1 - typescript: 4.9.5 + typescript: 5.1.3 dev: true /@rollup/plugin-wasm/6.1.2_rollup@2.79.1: @@ -3932,7 +4265,7 @@ packages: /@solana/web3.js/1.77.3: resolution: {integrity: sha512-PHaO0BdoiQRPpieC1p31wJsBaxwIOWLh8j2ocXNKX8boCQVldt26Jqm2tZE4KlrvnCIV78owPLv1pEUgqhxZ3w==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.5 '@noble/curves': 1.1.0 '@noble/hashes': 1.3.1 '@solana/buffer-layout': 4.0.1 @@ -4135,6 +4468,10 @@ packages: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} dev: true + /@tsconfig/node16/1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true + /@types/babel__core/7.20.0: resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} dependencies: @@ -4284,12 +4621,17 @@ packages: resolution: {integrity: sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g==} dev: true + /@types/node/18.16.18: + resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} + dev: true + /@types/node/18.16.7: resolution: {integrity: sha512-MFg7ua/bRtnA1hYE3pVyWxGd/r7aMqjNOdHvlSsXV3n8iaeGKkOaPzpJh6/ovf4bEXWcojkeMJpTsq3mzXW4IQ==} dev: false /@types/node/20.2.5: resolution: {integrity: sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==} + dev: true /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -4316,6 +4658,21 @@ packages: resolution: {integrity: sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==} dependencies: '@types/react': 18.2.9 + dev: false + + /@types/react-dom/18.2.5: + resolution: {integrity: sha512-sRQsOS/sCLnpQhR4DSKGTtWFE3FZjpQa86KPVbhUqdYMRZ9FEFcfAytKhR/vUG2rH1oFbOOej6cuD7MFSobDRQ==} + dependencies: + '@types/react': 18.2.12 + dev: true + + /@types/react/18.2.12: + resolution: {integrity: sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 + dev: true /@types/react/18.2.6: resolution: {integrity: sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==} @@ -4331,11 +4688,12 @@ packages: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 csstype: 3.1.2 + dev: false /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.16.16 + '@types/node': 18.16.18 dev: true /@types/scheduler/0.16.3: @@ -4379,8 +4737,8 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin/5.59.9_3i5bqcvz3xm47mwpahnwyqmg7m: - resolution: {integrity: sha512-4uQIBq1ffXd2YvF7MAvehWKW3zVv/w+mSfRAu+8cKbfj3nwzyqJLNcZJpQ/WZ1HLbJDiowwmQ6NO+63nCA+fqA==} + /@typescript-eslint/eslint-plugin/5.59.11_sqfi766b7p7jf53aqxvjxvblnq: + resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -4391,37 +4749,37 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.59.9_kigkzfftsmftz3xok324pyvzui - '@typescript-eslint/scope-manager': 5.59.9 - '@typescript-eslint/type-utils': 5.59.9_kigkzfftsmftz3xok324pyvzui - '@typescript-eslint/utils': 5.59.9_kigkzfftsmftz3xok324pyvzui + '@typescript-eslint/parser': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/scope-manager': 5.59.11 + '@typescript-eslint/type-utils': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/utils': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u debug: 4.3.4 eslint: 8.42.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.1 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 + tsutils: 3.21.0_typescript@5.1.3 + typescript: 5.1.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.59.9_kigkzfftsmftz3xok324pyvzui: - resolution: {integrity: sha512-eZTK/Ci0QAqNc/q2MqMwI2+QI5ZI9HM12FcfGwbEvKif5ev/CIIYLmrlckvgPrC8XSbl39HtErR5NJiQkRkvWg==} + /@typescript-eslint/experimental-utils/5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u: + resolution: {integrity: sha512-GkQGV0UF/V5Ra7gZMBmiD1WrYUFOJNvCZs+XQnUyJoxmqfWMXVNyB2NVCPRKefoQcpvTv9UpJyfCvsJFs8NzzQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.9_kigkzfftsmftz3xok324pyvzui + '@typescript-eslint/utils': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u eslint: 8.42.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser/5.59.5_jgkqkwom7vrxl4kyi454n2sy2i: - resolution: {integrity: sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==} + /@typescript-eslint/parser/5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u: + resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4430,18 +4788,18 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.59.5 - '@typescript-eslint/types': 5.59.5 - '@typescript-eslint/typescript-estree': 5.59.5_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.59.11 + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/typescript-estree': 5.59.11_typescript@5.1.3 debug: 4.3.4 - eslint: 8.40.0 - typescript: 4.9.5 + eslint: 8.42.0 + typescript: 5.1.3 transitivePeerDependencies: - supports-color - dev: false + dev: true - /@typescript-eslint/parser/5.59.9_kigkzfftsmftz3xok324pyvzui: - resolution: {integrity: sha512-FsPkRvBtcLQ/eVK1ivDiNYBjn3TGJdXy2fhXX+rc7czWl4ARwnpArwbihSOHI2Peg9WbtGHrbThfBUkZZGTtvQ==} + /@typescript-eslint/parser/5.59.5_jgkqkwom7vrxl4kyi454n2sy2i: + resolution: {integrity: sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4450,14 +4808,22 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.59.9 - '@typescript-eslint/types': 5.59.9 - '@typescript-eslint/typescript-estree': 5.59.9_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.59.5 + '@typescript-eslint/types': 5.59.5 + '@typescript-eslint/typescript-estree': 5.59.5_typescript@4.9.5 debug: 4.3.4 - eslint: 8.42.0 + eslint: 8.40.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: false + + /@typescript-eslint/scope-manager/5.59.11: + resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/visitor-keys': 5.59.11 dev: true /@typescript-eslint/scope-manager/5.59.5: @@ -4468,16 +4834,8 @@ packages: '@typescript-eslint/visitor-keys': 5.59.5 dev: false - /@typescript-eslint/scope-manager/5.59.9: - resolution: {integrity: sha512-8RA+E+w78z1+2dzvK/tGZ2cpGigBZ58VMEHDZtpE1v+LLjzrYGc8mMaTONSxKyEkz3IuXFM0IqYiGHlCsmlZxQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.59.9 - '@typescript-eslint/visitor-keys': 5.59.9 - dev: true - - /@typescript-eslint/type-utils/5.59.9_kigkzfftsmftz3xok324pyvzui: - resolution: {integrity: sha512-ksEsT0/mEHg9e3qZu98AlSrONAQtrSTljL3ow9CGej8eRo7pe+yaC/mvTjptp23Xo/xIf2mLZKC6KPv4Sji26Q==} + /@typescript-eslint/type-utils/5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u: + resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -4486,28 +4844,28 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.9_typescript@4.9.5 - '@typescript-eslint/utils': 5.59.9_kigkzfftsmftz3xok324pyvzui + '@typescript-eslint/typescript-estree': 5.59.11_typescript@5.1.3 + '@typescript-eslint/utils': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u debug: 4.3.4 eslint: 8.42.0 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 + tsutils: 3.21.0_typescript@5.1.3 + typescript: 5.1.3 transitivePeerDependencies: - supports-color dev: true + /@typescript-eslint/types/5.59.11: + resolution: {integrity: sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@typescript-eslint/types/5.59.5: resolution: {integrity: sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /@typescript-eslint/types/5.59.9: - resolution: {integrity: sha512-uW8H5NRgTVneSVTfiCVffBb8AbwWSKg7qcA4Ot3JI3MPCJGsB4Db4BhvAODIIYE5mNj7Q+VJkK7JxmRhk2Lyjw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@typescript-eslint/typescript-estree/5.59.5_typescript@4.9.5: - resolution: {integrity: sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==} + /@typescript-eslint/typescript-estree/5.59.11_typescript@5.1.3: + resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -4515,20 +4873,20 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.59.5 - '@typescript-eslint/visitor-keys': 5.59.5 + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/visitor-keys': 5.59.11 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.0 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 + semver: 7.5.1 + tsutils: 3.21.0_typescript@5.1.3 + typescript: 5.1.3 transitivePeerDependencies: - supports-color - dev: false + dev: true - /@typescript-eslint/typescript-estree/5.59.9_typescript@4.9.5: - resolution: {integrity: sha512-pmM0/VQ7kUhd1QyIxgS+aRvMgw+ZljB3eDb+jYyp6d2bC0mQWLzUDF+DLwCTkQ3tlNyVsvZRXjFyV0LkU/aXjA==} + /@typescript-eslint/typescript-estree/5.59.5_typescript@4.9.5: + resolution: {integrity: sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -4536,20 +4894,20 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.59.9 - '@typescript-eslint/visitor-keys': 5.59.9 + '@typescript-eslint/types': 5.59.5 + '@typescript-eslint/visitor-keys': 5.59.5 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.1 + semver: 7.5.0 tsutils: 3.21.0_typescript@4.9.5 typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: true + dev: false - /@typescript-eslint/utils/5.59.9_kigkzfftsmftz3xok324pyvzui: - resolution: {integrity: sha512-1PuMYsju/38I5Ggblaeb98TOoUvjhRvLpLa1DoTOFaLWqaXl/1iQ1eGurTXgBY58NUdtfTXKP5xBq7q9NDaLKg==} + /@typescript-eslint/utils/5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u: + resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4557,9 +4915,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0_eslint@8.42.0 '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.59.9 - '@typescript-eslint/types': 5.59.9 - '@typescript-eslint/typescript-estree': 5.59.9_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.59.11 + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/typescript-estree': 5.59.11_typescript@5.1.3 eslint: 8.42.0 eslint-scope: 5.1.1 semver: 7.5.1 @@ -4568,21 +4926,21 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys/5.59.5: - resolution: {integrity: sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==} + /@typescript-eslint/visitor-keys/5.59.11: + resolution: {integrity: sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.59.5 + '@typescript-eslint/types': 5.59.11 eslint-visitor-keys: 3.4.1 - dev: false + dev: true - /@typescript-eslint/visitor-keys/5.59.9: - resolution: {integrity: sha512-bT7s0td97KMaLwpEBckbzj/YohnvXtqbe2XgqNvTl6RJVakY5mvENOTPvw5u66nljfZxthESpDozs86U+oLY8Q==} + /@typescript-eslint/visitor-keys/5.59.5: + resolution: {integrity: sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.59.9 + '@typescript-eslint/types': 5.59.5 eslint-visitor-keys: 3.4.1 - dev: true + dev: false /@vanilla-extract/css/1.9.1: resolution: {integrity: sha512-pu2SFiff5jRhPwvGoj8cM5l/qIyLvigOmy22ss5DGjwV5pJYezRjDLxWumi2luIwioMWvh9EozCjyfH8nq+7fQ==} @@ -4618,17 +4976,6 @@ packages: '@vanilla-extract/css': 1.9.1 dev: false - /@wagmi/chains/0.2.16_typescript@4.9.5: - resolution: {integrity: sha512-rkWaI2PxCnbD8G07ZZff5QXftnSkYL0h5f4DkHCG3fGYYr/ZDvmCL4bMae7j7A9sAif1csPPBmbCzHp3R5ogCQ==} - peerDependencies: - typescript: '>=4.9.4' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - typescript: 4.9.5 - dev: false - /@wagmi/chains/1.1.0_typescript@4.9.5: resolution: {integrity: sha512-pWZlxBk0Ql8E7DV8DwqlbBpOyUdaG9UDlQPBxJNALuEK1I0tbQ3AVvSDnlsEIt06UPmPo5o27gzs3hwPQ/A+UA==} peerDependencies: @@ -4640,8 +4987,8 @@ packages: typescript: 4.9.5 dev: false - /@wagmi/connectors/2.1.1_6kzd5vavbzkn72zen4lkmvcjsi: - resolution: {integrity: sha512-xUOsg95uzurQwAxH+TqOi2ZNhF472wC4Fl49NT/N5jRA3hdi0L+nZR2a63k2SGDSge6jaejaErK7g8nzl0O3Ww==} + /@wagmi/connectors/2.2.0_ws34o4uwesxlqswlkmfq6xmtfi: + resolution: {integrity: sha512-pI1ed2V8dC8Gro0YbXrJedFj5U9HHD/zUe9MMUaV3ews2LY6qziSXZp9Dw6TKyiSJ5ANbRlZcl40AmSPozkZmw==} peerDependencies: '@wagmi/chains': '>=1.0.0' typescript: '>=5.0.4' @@ -4657,13 +5004,13 @@ packages: '@safe-global/safe-apps-provider': 0.15.2 '@safe-global/safe-apps-sdk': 7.11.0 '@wagmi/chains': 1.1.0_typescript@4.9.5 - '@walletconnect/ethereum-provider': 2.7.8_gft74yegowi6ldcnoyni4czcde + '@walletconnect/ethereum-provider': 2.8.0_@walletconnect+modal@2.4.5 '@walletconnect/legacy-provider': 2.0.0 - '@web3modal/standalone': 2.4.3_react@18.2.0 + '@walletconnect/modal': 2.4.5_react@18.2.0 abitype: 0.8.7_typescript@4.9.5 eventemitter3: 4.0.7 typescript: 4.9.5 - viem: 0.3.31_typescript@4.9.5 + viem: 1.0.6_typescript@4.9.5 transitivePeerDependencies: - '@react-native-async-storage/async-storage' - bufferutil @@ -4676,8 +5023,8 @@ packages: - zod dev: false - /@wagmi/core/1.1.1_nus464gvkzoi6naqshaakklh74: - resolution: {integrity: sha512-nEg/TIfX8youSBU+qmecIQVyVCOJxPaOHoavr3lbXTa6LZd/PvJ9jEPbl1Ho//KoAI4pqoE59wky0vydgygF0g==} + /@wagmi/core/1.2.0_6jfc5y2fmej3fcg7i7iq4eb634: + resolution: {integrity: sha512-7onf13u0atdXOnoitB+pivnIUPJman7Y8GITKkxwmcwJ3lpE1U/grYE7xHcKN7av7KEu0DozvKPhN7nJ/7OErw==} peerDependencies: typescript: '>=5.0.4' viem: '>=0.3.35' @@ -4686,11 +5033,11 @@ packages: optional: true dependencies: '@wagmi/chains': 1.1.0_typescript@4.9.5 - '@wagmi/connectors': 2.1.1_6kzd5vavbzkn72zen4lkmvcjsi + '@wagmi/connectors': 2.2.0_ws34o4uwesxlqswlkmfq6xmtfi abitype: 0.8.7_typescript@4.9.5 eventemitter3: 4.0.7 typescript: 4.9.5 - viem: 0.3.31_typescript@4.9.5 + viem: 1.0.6_typescript@4.9.5 zustand: 4.3.8_react@18.2.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -4705,8 +5052,8 @@ packages: - zod dev: false - /@walletconnect/core/2.7.8: - resolution: {integrity: sha512-Ptp1Jo9hv5mtrQMF/iC/RF/KHmYfO79DBLj77AV4PnJ5z6J0MRYepPKXKFEirOXR4OKCT5qCrPOiRtGvtNI+sg==} + /@walletconnect/core/2.8.0: + resolution: {integrity: sha512-pl7x4sq1nuU0ixA9wF2ecjDecUzIauKr7ZwC29rs9qTcmDpxgJbbOdZwaSl+dJlf1bHC87adVLf5KAkwwo9PzQ==} dependencies: '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-provider': 1.0.13 @@ -4719,8 +5066,8 @@ packages: '@walletconnect/relay-auth': 1.0.4 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.7.8 - '@walletconnect/utils': 2.7.8 + '@walletconnect/types': 2.8.0 + '@walletconnect/utils': 2.8.0 events: 3.3.0 lodash.isequal: 4.5.0 uint8arrays: 3.1.1 @@ -4756,23 +5103,23 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/ethereum-provider/2.7.8_gft74yegowi6ldcnoyni4czcde: - resolution: {integrity: sha512-HueJtdhkIu+1U6jOlsFc9F8uZbleiFwZxAGROf7ARhwsPUz9Yd+E0Ct5aNwPwsSDCzUvNpw5/LogFbCVQWWHcA==} + /@walletconnect/ethereum-provider/2.8.0_@walletconnect+modal@2.4.5: + resolution: {integrity: sha512-nVVJtZUpoeurFjoEPYlrUHkT3YleCpEC9YAMKJyEIB3MZZInttcGxGyi0vwFQ+trCfuX8RrdKUPQ952NvxvCvw==} peerDependencies: - '@web3modal/standalone': '>=2' + '@walletconnect/modal': '>=2' peerDependenciesMeta: - '@web3modal/standalone': + '@walletconnect/modal': optional: true dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7 '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/sign-client': 2.7.8 - '@walletconnect/types': 2.7.8 - '@walletconnect/universal-provider': 2.7.8 - '@walletconnect/utils': 2.7.8 - '@web3modal/standalone': 2.4.3_react@18.2.0 + '@walletconnect/modal': 2.4.5_react@18.2.0 + '@walletconnect/sign-client': 2.8.0 + '@walletconnect/types': 2.8.0 + '@walletconnect/universal-provider': 2.8.0 + '@walletconnect/utils': 2.8.0 events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -4924,6 +5271,15 @@ packages: tslib: 1.14.1 dev: false + /@walletconnect/modal/2.4.5_react@18.2.0: + resolution: {integrity: sha512-t+sII7GIMsKDr0wvSJxzlpcbxw35WthuVpAqPlzMS7roSPmQZT18KO8Iu4ccLkNZF+ioptRTpBUKtk2eeuaqlQ==} + dependencies: + '@web3modal/core': 2.4.5_react@18.2.0 + '@web3modal/ui': 2.4.5_react@18.2.0 + transitivePeerDependencies: + - react + dev: false + /@walletconnect/randombytes/1.0.3: resolution: {integrity: sha512-35lpzxcHFbTN3ABefC9W+uBpNZl1GC4Wpx0ed30gibfO/y9oLdy1NznbV96HARQKSBV9J9M/rrtIvf6a23jfYw==} dependencies: @@ -4957,17 +5313,17 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/sign-client/2.7.8: - resolution: {integrity: sha512-na7VeXiOwM83w69s4kA5IeuL2SezwIbHfJsitmbtmsTLaX8Hnf7HwaJrNzrdhKpnEw8a+uG/xDTq+RYY50zf+A==} + /@walletconnect/sign-client/2.8.0: + resolution: {integrity: sha512-+l9qwvVeUGk0fBQsgx6yb6hdGYt8uQ3a9jR9GgsJvm8FjFh1oUzTKqFnG7XdhCBnzFnbSoLr41Xe8PbN8qoUSw==} dependencies: - '@walletconnect/core': 2.7.8 + '@walletconnect/core': 2.8.0 '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.7.8 - '@walletconnect/utils': 2.7.8 + '@walletconnect/types': 2.8.0 + '@walletconnect/utils': 2.8.0 events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -4982,8 +5338,8 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/types/2.7.8: - resolution: {integrity: sha512-1ZucKd5F4Ws+O84Yl4tCzd+hcD3A9vnaimKyC753b7Jdtwg2dm21E6H9t34kOVsFjVdKt9qFrZ1LaVL7SZp59g==} + /@walletconnect/types/2.8.0: + resolution: {integrity: sha512-FMeGK3lGXFDwcs5duoN74xL1aLrkgYqnavWE0DnFPt2i1QmSUITU9c8f88EDh8uPXANd2WIYOItm0DVCNxLGGA==} dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 @@ -4996,17 +5352,17 @@ packages: - lokijs dev: false - /@walletconnect/universal-provider/2.7.8: - resolution: {integrity: sha512-T/0U1o6uewyz2KUQF3Gt57RtuYFKJhJHwH3m4sSTKeEwwzsU83+M/D2v5Pa6Vhy2ynzkKB84pRG9mwm1oaQbLQ==} + /@walletconnect/universal-provider/2.8.0: + resolution: {integrity: sha512-BMsGiINI3rT7DRyDJM7miuWG6vDVE0PV6zMcCXIMDYYPay7zFvJxv2VHEx9an4MutrvQR76NTRyG//i1K84VOQ==} dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7 '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 - '@walletconnect/sign-client': 2.7.8 - '@walletconnect/types': 2.7.8 - '@walletconnect/utils': 2.7.8 + '@walletconnect/sign-client': 2.8.0 + '@walletconnect/types': 2.8.0 + '@walletconnect/utils': 2.8.0 eip1193-provider: 1.0.1 events: 3.3.0 transitivePeerDependencies: @@ -5018,8 +5374,8 @@ packages: - utf-8-validate dev: false - /@walletconnect/utils/2.7.8: - resolution: {integrity: sha512-W3GudJNZUlSdKJ7fyMqeDoM02Ffd7jmK6mxxmRGkxF6mf9ciIxEPDWl18JGkanp+EDK06PXLm4/64fraLkbJVQ==} + /@walletconnect/utils/2.8.0: + resolution: {integrity: sha512-Q8OwMtUevIn1+64LXyTMLlhH58k3UOAjU5b3smYZ7CEEmwEGpOTfTDAWrB3v+ZDIhjyqP94+8fuvKIbcVLKLWA==} dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -5029,7 +5385,7 @@ packages: '@walletconnect/relay-api': 1.0.9 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.7.8 + '@walletconnect/types': 2.8.0 '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 detect-browser: 5.3.0 @@ -5053,8 +5409,8 @@ packages: tslib: 1.14.1 dev: false - /@web3modal/core/2.4.3_react@18.2.0: - resolution: {integrity: sha512-7Z/sDe9RIYQ2k9ITcxgEa/u7FvlI76vcVVZn9UY4ISivefqrH4JAS3GX4JmVNUUlovwuiZdyqBv4llAQOMK6Rg==} + /@web3modal/core/2.4.5_react@18.2.0: + resolution: {integrity: sha512-iulOIW2irVaq+xWTzzM2xbRI4TCR0yTnV2Yz+ifIFl+r3OF3ZOC1jsy4jJnKL7/6e7p4NmmKJk0/w951KzCF5g==} dependencies: buffer: 6.0.3 valtio: 1.10.5_react@18.2.0 @@ -5062,19 +5418,10 @@ packages: - react dev: false - /@web3modal/standalone/2.4.3_react@18.2.0: - resolution: {integrity: sha512-5ATXBoa4GGm+TIUSsKWsfWCJunv1XevOizpgTFhqyeGgRDmWhqsz9UIPzH/1mk+g0iJ/xqMKs5F6v9D2QeKxag==} - dependencies: - '@web3modal/core': 2.4.3_react@18.2.0 - '@web3modal/ui': 2.4.3_react@18.2.0 - transitivePeerDependencies: - - react - dev: false - - /@web3modal/ui/2.4.3_react@18.2.0: - resolution: {integrity: sha512-J989p8CdtEhI9gZHf/rZ/WFqYlrAHWw9GmAhFoiNODwjAp0BoG/uoaPiijJMchXdngihZOjLGCQwDXU16DHiKg==} + /@web3modal/ui/2.4.5_react@18.2.0: + resolution: {integrity: sha512-LvGjGL7vyQrUrrQOtFAK0SyxJs1yozOnJjP7s7gWXJa7wFWCE+kVjrhE8VrKbwx7nHe78IFA1rs7V1ncCirqVQ==} dependencies: - '@web3modal/core': 2.4.3_react@18.2.0 + '@web3modal/core': 2.4.5_react@18.2.0 lit: 2.7.5 motion: 10.16.2 qrcode: 1.5.3 @@ -5089,18 +5436,6 @@ packages: jsonparse: 1.3.1 through: 2.3.8 - /abitype/0.8.2_typescript@4.9.5: - resolution: {integrity: sha512-B1ViNMGpfx/qjVQi0RTc2HEFHuR9uoCoTEkwELT5Y7pBPtBbctYijz9BK6+Kd0hQ3S70FhYTO2dWWk0QNUEXMA==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.19.1 - peerDependenciesMeta: - zod: - optional: true - dependencies: - typescript: 4.9.5 - dev: false - /abitype/0.8.7_typescript@4.9.5: resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==} peerDependencies: @@ -5426,43 +5761,43 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.5 cosmiconfig: 7.1.0 resolve: 1.22.2 dev: true - /babel-plugin-polyfill-corejs2/0.4.3_@babel+core@7.22.1: + /babel-plugin-polyfill-corejs2/0.4.3_@babel+core@7.22.5: resolution: {integrity: sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.3 - '@babel/core': 7.22.1 - '@babel/helper-define-polyfill-provider': 0.4.0_@babel+core@7.22.1 + '@babel/compat-data': 7.22.5 + '@babel/core': 7.22.5 + '@babel/helper-define-polyfill-provider': 0.4.0_@babel+core@7.22.5 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3/0.8.1_@babel+core@7.22.1: + /babel-plugin-polyfill-corejs3/0.8.1_@babel+core@7.22.5: resolution: {integrity: sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-define-polyfill-provider': 0.4.0_@babel+core@7.22.1 - core-js-compat: 3.30.2 + '@babel/core': 7.22.5 + '@babel/helper-define-polyfill-provider': 0.4.0_@babel+core@7.22.5 + core-js-compat: 3.31.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator/0.5.0_@babel+core@7.22.1: + /babel-plugin-polyfill-regenerator/0.5.0_@babel+core@7.22.5: resolution: {integrity: sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-define-polyfill-provider': 0.4.0_@babel+core@7.22.1 + '@babel/core': 7.22.5 + '@babel/helper-define-polyfill-provider': 0.4.0_@babel+core@7.22.5 transitivePeerDependencies: - supports-color dev: true @@ -5505,21 +5840,21 @@ packages: /babel-preset-react-app/10.0.1: resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} dependencies: - '@babel/core': 7.22.1 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-proposal-decorators': 7.22.3_@babel+core@7.22.1 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.22.1 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-proposal-private-property-in-object': 7.21.11_@babel+core@7.22.1 - '@babel/plugin-transform-flow-strip-types': 7.21.0_@babel+core@7.22.1 - '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.22.1 - '@babel/plugin-transform-runtime': 7.22.4_@babel+core@7.22.1 - '@babel/preset-env': 7.22.4_@babel+core@7.22.1 - '@babel/preset-react': 7.22.3_@babel+core@7.22.1 - '@babel/preset-typescript': 7.21.5_@babel+core@7.22.1 - '@babel/runtime': 7.22.3 + '@babel/core': 7.22.5 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.22.5 + '@babel/plugin-proposal-decorators': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.22.5 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.22.5 + '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.22.5 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.22.5 + '@babel/plugin-proposal-private-property-in-object': 7.21.11_@babel+core@7.22.5 + '@babel/plugin-transform-flow-strip-types': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-react-display-name': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-runtime': 7.22.5_@babel+core@7.22.5 + '@babel/preset-env': 7.22.5_@babel+core@7.22.5 + '@babel/preset-react': 7.22.5_@babel+core@7.22.5 + '@babel/preset-typescript': 7.22.5_@babel+core@7.22.5 + '@babel/runtime': 7.22.5 babel-plugin-macros: 3.1.0 babel-plugin-transform-react-remove-prop-types: 0.4.24 transitivePeerDependencies: @@ -5704,6 +6039,17 @@ packages: update-browserslist-db: 1.0.11_browserslist@4.21.7 dev: true + /browserslist/4.21.8: + resolution: {integrity: sha512-j+7xYe+v+q2Id9qbBeCI8WX5NmZSRe8es1+0xntD/+gaWXznP8tFEkv5IgSaHf5dS1YwVMbX/4W6m937mj+wQw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001502 + electron-to-chromium: 1.4.428 + node-releases: 2.0.12 + update-browserslist-db: 1.0.11_browserslist@4.21.8 + dev: true + /bs-logger/0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -5804,6 +6150,10 @@ packages: resolution: {integrity: sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==} dev: true + /caniuse-lite/1.0.30001502: + resolution: {integrity: sha512-AZ+9tFXw1sS0o0jcpJQIXvFTOB/xGiQ4OQ2t98QX3NDn2EZTSRBC801gxrsGgViuq2ak/NLkNgSNEPtCr5lfKg==} + dev: true + /case/1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} engines: {node: '>= 0.8.0'} @@ -6086,10 +6436,10 @@ packages: toggle-selection: 1.0.6 dev: false - /core-js-compat/3.30.2: - resolution: {integrity: sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA==} + /core-js-compat/3.31.0: + resolution: {integrity: sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==} dependencies: - browserslist: 4.21.7 + browserslist: 4.21.8 dev: true /core-util-is/1.0.3: @@ -6104,7 +6454,7 @@ packages: vary: 1.1.2 dev: false - /cosmiconfig-typescript-loader/4.3.0_lvwppffiyrxnhtsstljkwa2inq: + /cosmiconfig-typescript-loader/4.3.0_f7ftk3vf3beanyfjs3ua3i63me: resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -6113,9 +6463,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.16.16 + '@types/node': 18.16.18 cosmiconfig: 8.2.0 - ts-node: 10.9.1_gbfmtwj2t57hq5iibp7xw5qwjq + ts-node: 10.9.1_uc4mglbmg4gsgxc6hysq56typi typescript: 5.1.3 dev: true @@ -6556,6 +6906,10 @@ packages: resolution: {integrity: sha512-5VXLW4Qw89vM2WTICHua/y8v7fKGDRVa2VPOtBB9IpLvW316B+xd8yD1wTmLPY2ot/00P/qt87xdolj4aG/Lzg==} dev: true + /electron-to-chromium/1.4.428: + resolution: {integrity: sha512-L7uUknyY286of0AYC8CKfgWstD0Smk2DvHDi9F0GWQhSH90Bzi7iDrmCbZKz75tYJxeGSAc7TYeKpmbjMDoh1w==} + dev: true + /elliptic/6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -6742,7 +7096,7 @@ packages: - supports-color dev: false - /eslint-config-react-app/7.0.1_xmrelbdudo5pygtffdtf73abn4: + /eslint-config-react-app/7.0.1_yn5ilqvgwchduzwezxxn64yk7y: resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6752,22 +7106,22 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.22.1 - '@babel/eslint-parser': 7.21.8_x4z5szbpxidodfq6bg2unesv74 + '@babel/core': 7.22.5 + '@babel/eslint-parser': 7.22.5_x2nqc5cansj73pf43kd5o2aydq '@rushstack/eslint-patch': 1.3.1 - '@typescript-eslint/eslint-plugin': 5.59.9_3i5bqcvz3xm47mwpahnwyqmg7m - '@typescript-eslint/parser': 5.59.9_kigkzfftsmftz3xok324pyvzui + '@typescript-eslint/eslint-plugin': 5.59.11_sqfi766b7p7jf53aqxvjxvblnq + '@typescript-eslint/parser': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.42.0 - eslint-plugin-flowtype: 8.0.3_x7gmotf647inwhqzsrebi2ai7q - eslint-plugin-import: 2.27.5_4sfevs3vpuvadhjdwbsynzgtpy - eslint-plugin-jest: 25.7.0_suwqznixrpgzl7s24izvrdolvm + eslint-plugin-flowtype: 8.0.3_fgauhqq7zwahnfqyyrazhsiczq + eslint-plugin-import: 2.27.5_b34cytzsv57k5d564pxz54jodu + eslint-plugin-jest: 25.7.0_v2rl4eksmowc4rsu54jhdgu2fi eslint-plugin-jsx-a11y: 6.7.1_eslint@8.42.0 eslint-plugin-react: 7.32.2_eslint@8.42.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.42.0 - eslint-plugin-testing-library: 5.11.0_kigkzfftsmftz3xok324pyvzui - typescript: 4.9.5 + eslint-plugin-testing-library: 5.11.0_tizxnkcvjrb4cldxgwq5h3lj5u + typescript: 5.1.3 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -6806,7 +7160,7 @@ packages: - supports-color dev: false - /eslint-module-utils/2.8.0_psn6fw4moe3x2es443hwiatkh4: + /eslint-module-utils/2.8.0_aartv3asycikuu35yv36clal7i: resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -6827,14 +7181,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: + '@typescript-eslint/parser': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u debug: 3.2.7 - eslint: 8.40.0 + eslint: 8.42.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: - supports-color - dev: false + dev: true - /eslint-module-utils/2.8.0_z6h35y2edcwahhgxs7hcukw54e: + /eslint-module-utils/2.8.0_psn6fw4moe3x2es443hwiatkh4: resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -6855,15 +7210,14 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.9_kigkzfftsmftz3xok324pyvzui debug: 3.2.7 - eslint: 8.42.0 + eslint: 8.40.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: - supports-color - dev: true + dev: false - /eslint-plugin-flowtype/8.0.3_x7gmotf647inwhqzsrebi2ai7q: + /eslint-plugin-flowtype/8.0.3_fgauhqq7zwahnfqyyrazhsiczq: resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -6871,14 +7225,14 @@ packages: '@babel/plugin-transform-react-jsx': ^7.14.9 eslint: ^8.1.0 dependencies: - '@babel/plugin-syntax-flow': 7.21.4_@babel+core@7.22.1 - '@babel/plugin-transform-react-jsx': 7.22.3_@babel+core@7.22.1 + '@babel/plugin-syntax-flow': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-react-jsx': 7.22.5_@babel+core@7.22.5 eslint: 8.42.0 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.27.5_4sfevs3vpuvadhjdwbsynzgtpy: + /eslint-plugin-import/2.27.5_b34cytzsv57k5d564pxz54jodu: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -6888,7 +7242,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.9_kigkzfftsmftz3xok324pyvzui + '@typescript-eslint/parser': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -6896,7 +7250,7 @@ packages: doctrine: 2.1.0 eslint: 8.42.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0_z6h35y2edcwahhgxs7hcukw54e + eslint-module-utils: 2.8.0_aartv3asycikuu35yv36clal7i has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 @@ -6943,7 +7297,7 @@ packages: - supports-color dev: false - /eslint-plugin-jest/25.7.0_suwqznixrpgzl7s24izvrdolvm: + /eslint-plugin-jest/25.7.0_v2rl4eksmowc4rsu54jhdgu2fi: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -6956,8 +7310,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.9_3i5bqcvz3xm47mwpahnwyqmg7m - '@typescript-eslint/experimental-utils': 5.59.9_kigkzfftsmftz3xok324pyvzui + '@typescript-eslint/eslint-plugin': 5.59.11_sqfi766b7p7jf53aqxvjxvblnq + '@typescript-eslint/experimental-utils': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u eslint: 8.42.0 transitivePeerDependencies: - supports-color @@ -7096,13 +7450,13 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library/5.11.0_kigkzfftsmftz3xok324pyvzui: + /eslint-plugin-testing-library/5.11.0_tizxnkcvjrb4cldxgwq5h3lj5u: resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.9_kigkzfftsmftz3xok324pyvzui + '@typescript-eslint/utils': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u eslint: 8.42.0 transitivePeerDependencies: - supports-color @@ -9950,7 +10304,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.21.4 + '@babel/code-frame': 7.22.5 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -10165,7 +10519,7 @@ packages: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 20.2.5 + '@types/node': 18.16.7 long: 4.0.0 dev: false @@ -10490,7 +10844,7 @@ packages: /regenerator-transform/0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.5 dev: true /regexp.prototype.flags/1.5.0: @@ -10682,7 +11036,7 @@ packages: /rpc-websockets/7.5.1: resolution: {integrity: sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.5 eventemitter3: 4.0.7 uuid: 8.3.2 ws: 8.13.0_3cxu5zja4e2r5wmvge7mdcljwq @@ -11404,6 +11758,37 @@ packages: yn: 3.1.1 dev: true + /ts-node/10.9.1_uc4mglbmg4gsgxc6hysq56typi: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.16.18 + acorn: 8.8.2 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.1.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + /tsconfig-paths/3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: @@ -11429,6 +11814,17 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 + dev: false + + /tsutils/3.21.0_typescript@5.1.3: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.1.3 + dev: true /tsyringe/4.7.0: resolution: {integrity: sha512-ncFDM1jTLsok4ejMvSW5jN1VGPQD48y2tfAR0pdptWRKYX4bkbqPt92k7KJ5RFJ1KV36JEs/+TMh7I6OUgj74g==} @@ -11589,6 +11985,17 @@ packages: picocolors: 1.0.0 dev: true + /update-browserslist-db/1.0.11_browserslist@4.21.8: + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.8 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /uri-js/4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -11698,16 +12105,16 @@ packages: engines: {node: '>= 0.8'} dev: false - /viem/0.3.31_typescript@4.9.5: - resolution: {integrity: sha512-4B7oUQkYCGmnd/W+T/miFudx/pZ3V3mRdv3nl1tPy60W5Zlt2lIH+XN9Q0pkHe+5n2Eto/aFZYwRdqGsj6MHmA==} + /viem/1.0.6_typescript@4.9.5: + resolution: {integrity: sha512-NOVDREj8bWHajuP5Nw6edd0v3auuGWvLHGScmo9OOt1l7g3f1xMQxPA6JlhNmWXzoHjzzxt/5SorBn2DQ6N6Sg==} dependencies: '@adraffy/ens-normalize': 1.9.0 '@noble/curves': 1.0.0 '@noble/hashes': 1.3.0 '@scure/bip32': 1.3.0 '@scure/bip39': 1.2.0 - '@wagmi/chains': 0.2.16_typescript@4.9.5 - abitype: 0.8.2_typescript@4.9.5 + '@wagmi/chains': 1.1.0_typescript@4.9.5 + abitype: 0.8.7_typescript@4.9.5 isomorphic-ws: 5.0.0_ws@8.12.0 ws: 8.12.0 transitivePeerDependencies: @@ -11717,8 +12124,8 @@ packages: - zod dev: false - /wagmi/1.1.1_52rmszrm4bg4m3nhb6mgjy7grm: - resolution: {integrity: sha512-UjLUhISsYIuzPBLfSxeHp6VsTeGs/EGxaS9JBer7OhM/qtMEVKgugzPtNia4aqkMKcA+OBEsSMINY3fHHOafAA==} + /wagmi/1.2.0_sta5t6m4653sw6oxbjskfbw63m: + resolution: {integrity: sha512-VSSBEVDMZAWIcWTlewC1XypHsWa1FdkdYXWdgu5pqTCqnW6JKWGsR5TbQY3poCIQoC7B2okisElZT2oVSYbA5Q==} peerDependencies: react: '>=17.0.0' typescript: '>=5.0.4' @@ -11730,12 +12137,12 @@ packages: '@tanstack/query-sync-storage-persister': 4.29.7 '@tanstack/react-query': 4.29.7_biqbaboplfbrettd7655fr4n2y '@tanstack/react-query-persist-client': 4.29.7_776iqyc7ir26b73sx2hj4bwzwu - '@wagmi/core': 1.1.1_nus464gvkzoi6naqshaakklh74 + '@wagmi/core': 1.2.0_6jfc5y2fmej3fcg7i7iq4eb634 abitype: 0.8.7_typescript@4.9.5 react: 18.2.0 typescript: 4.9.5 use-sync-external-store: 1.2.0_react@18.2.0 - viem: 0.3.31_typescript@4.9.5 + viem: 1.0.6_typescript@4.9.5 transitivePeerDependencies: - '@react-native-async-storage/async-storage' - bufferutil From d73df25f2a6a226c69735cfff66d5786d20813fe Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Thu, 15 Jun 2023 17:35:48 +0800 Subject: [PATCH 049/433] chore: Update Examples (#114) --- examples/nextjs/package.json | 2 +- .../src/components/walletInfo/index.tsx | 3 ++ examples/nextjs/src/config/index.ts | 37 ++++++++++++++++--- examples/nextjs/src/pages/_app.tsx | 15 +++++--- pnpm-lock.yaml | 12 +++--- 5 files changed, 50 insertions(+), 19 deletions(-) diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index b3916698..7608a34b 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -19,7 +19,7 @@ "@ethersproject/signing-key": "^5.7.0", "@metamask/eth-sig-util": "^5.0.2", "@next/font": "13.1.6", - "@rainbow-me/rainbowkit": "^1.0.1", + "@rainbow-me/rainbowkit": "^1.0.2", "@types/node": "^18.7.1", "@types/react": "^18.0.17", "@types/react-dom": "^18.0.6", diff --git a/examples/nextjs/src/components/walletInfo/index.tsx b/examples/nextjs/src/components/walletInfo/index.tsx index 8cc30d0e..bcae491a 100644 --- a/examples/nextjs/src/components/walletInfo/index.tsx +++ b/examples/nextjs/src/components/walletInfo/index.tsx @@ -1,6 +1,9 @@ import { ConnectButton } from '@rainbow-me/rainbowkit'; +import { useDisconnect } from 'wagmi'; export const WalletInfo = () => { + const { disconnect } = useDisconnect(); + return (
diff --git a/examples/nextjs/src/config/index.ts b/examples/nextjs/src/config/index.ts index 6fe1d8ab..0f52e1dd 100644 --- a/examples/nextjs/src/config/index.ts +++ b/examples/nextjs/src/config/index.ts @@ -1,3 +1,4 @@ +import { getWalletConnectConnector, Wallet } from '@rainbow-me/rainbowkit'; import { Chain, configureChains, mainnet } from 'wagmi'; import { CoinbaseWalletConnector } from 'wagmi/connectors/coinbaseWallet'; import { InjectedConnector } from 'wagmi/connectors/injected'; @@ -58,12 +59,11 @@ const bscChain: Chain = { const { chains, publicClient, webSocketPublicClient } = configureChains( [ mainnet, - // { - // ..., - // iconUrl: - // 'https://github.com/wagmi-dev/wagmi/assets/5653652/44446c8c-5c72-4e89-b8eb-3042ef618eed', - // }, - greenFieldChain, + { + ...greenFieldChain, + iconUrl: + 'https://github.com/wagmi-dev/wagmi/assets/5653652/44446c8c-5c72-4e89-b8eb-3042ef618eed', + }, bscChain, ], [publicProvider()], @@ -81,12 +81,36 @@ const trustWalletConnector = new InjectedConnector({ options: { name: 'GN', shimDisconnect: true, + // TODO: rainbowkit conflict getProvider: () => (typeof window !== 'undefined' ? (window as any).trustwallet : undefined), }, }); const metaMaskWalletConnector = new MetaMaskConnector({ chains }); +export interface MyWalletOptions { + projectId: string; + chains: Chain[]; +} + +const RainbowTrustWalletConnector = ({ chains, projectId }: MyWalletOptions): Wallet => ({ + id: '_trust-wallet', + name: 'Trust Wallet', + iconUrl: 'https://my-image.xyz', + iconBackground: '#0c2f78', + downloadUrls: { + android: 'https://play.google.com/store/apps/details?id=my.wallet', + ios: 'https://apps.apple.com/us/app/my-wallet', + chrome: 'https://chrome.google.com/webstore/detail/my-wallet', + qrCode: 'https://my-wallet/qr', + }, + createConnector: () => { + return { + connector: trustWalletConnector, + }; + }, +}); + export { publicClient, webSocketPublicClient, @@ -94,4 +118,5 @@ export { metaMaskWalletConnector, coinbaseWalletConnector, trustWalletConnector, + RainbowTrustWalletConnector, }; diff --git a/examples/nextjs/src/pages/_app.tsx b/examples/nextjs/src/pages/_app.tsx index e0c73bbb..0bc7deed 100644 --- a/examples/nextjs/src/pages/_app.tsx +++ b/examples/nextjs/src/pages/_app.tsx @@ -1,4 +1,4 @@ -import { chains, publicClient, webSocketPublicClient } from '@/config'; +import { chains, publicClient, RainbowTrustWalletConnector, webSocketPublicClient } from '@/config'; import '@/styles/globals.css'; import { connectorsForWallets, @@ -10,7 +10,7 @@ import { trustWallet } from '@rainbow-me/rainbowkit/wallets'; import type { AppProps } from 'next/app'; import { createConfig, WagmiConfig } from 'wagmi'; -const projectId = ''; +const projectId = '9bf3510aab08be54d5181a126967ee71'; const { wallets } = getDefaultWallets({ projectId, appName: 'greenfield js sdk demo', @@ -19,10 +19,13 @@ const { wallets } = getDefaultWallets({ const connectors = connectorsForWallets([ ...wallets, - { - groupName: 'Recommended', - wallets: [trustWallet({ projectId, chains })], - }, + // { + // groupName: 'Recommended', + // wallets: [ + // trustWallet({ projectId, chains, shimDisconnect: true }), + // // RainbowTrustWalletConnector({ projectId, chains }), + // ], + // }, ]); const wagmiConfig = createConfig({ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f443d388..7424866f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -74,7 +74,7 @@ importers: '@ethersproject/signing-key': ^5.7.0 '@metamask/eth-sig-util': ^5.0.2 '@next/font': 13.1.6 - '@rainbow-me/rainbowkit': ^1.0.1 + '@rainbow-me/rainbowkit': ^1.0.2 '@types/node': ^18.7.1 '@types/react': ^18.0.17 '@types/react-dom': ^18.0.6 @@ -101,7 +101,7 @@ importers: '@ethersproject/signing-key': 5.7.0 '@metamask/eth-sig-util': 5.0.2 '@next/font': 13.1.6 - '@rainbow-me/rainbowkit': 1.0.1_osz7gkuvw6gybth6kg2yker4la + '@rainbow-me/rainbowkit': 1.0.2_osz7gkuvw6gybth6kg2yker4la '@types/node': 18.16.7 '@types/react': 18.2.6 '@types/react-dom': 18.2.4 @@ -3981,14 +3981,14 @@ packages: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} dev: false - /@rainbow-me/rainbowkit/1.0.1_osz7gkuvw6gybth6kg2yker4la: - resolution: {integrity: sha512-P+2lgHaN5X84K1e+MARUydyhYRS+nStN4H470QloBBWP5UsidHZpSJGd4qi0WFtfR6zBff96N6kmsfJo7PjFhQ==} + /@rainbow-me/rainbowkit/1.0.2_osz7gkuvw6gybth6kg2yker4la: + resolution: {integrity: sha512-CIcEekBBlYiqg2oNS7LZqqN882OfJ0T1ORe4c46dscSuMCaX9sdbviQR1m8LoA4KocSCzSxOPAnfoVN8eC/HNA==} engines: {node: '>=12.4'} peerDependencies: react: '>=17' react-dom: '>=17' - viem: ~0.3.19 - wagmi: ~1.0.1 + viem: ~0.3.19 || ^1.0.0 + wagmi: ~1.0.1 || ~1.1.0 || ~1.2.0 dependencies: '@vanilla-extract/css': 1.9.1 '@vanilla-extract/dynamic': 2.0.2 From 3adf8d639ded5149721bd5206e78c84e7f3b1125 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Fri, 16 Jun 2023 21:49:58 +0800 Subject: [PATCH 050/433] chore(dep): Add cross-env --- examples/nodejs/package.json | 7 +- pnpm-lock.yaml | 4324 +++++++++++++++++----------------- 2 files changed, 2179 insertions(+), 2152 deletions(-) diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 3a497319..09bd7829 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -7,12 +7,13 @@ "dev": "cross-env NODE_ENV=development next dev", "dev:qa": "cross-env NODE_ENV=test next dev", "build": "cross-env NODE_ENV=development next build", - "build:qa": "cross-env NODE_ENV=test next build", - "start": "next start", - "lint": "next lint" + "build:qa": "cross-env NODE_ENV=test next build" }, "dependencies": { "@bnb-chain/greenfield-chain-sdk": "workspace:*", "@bnb-chain/greenfiled-file-handle": "workspace:*" + }, + "devDependencies": { + "cross-env": "^7.0.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7424866f..e7e852fc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,284 +1,385 @@ -lockfileVersion: 5.4 +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false importers: .: - specifiers: - '@babel/core': ^7.22.5 - '@changesets/changelog-github': ^0.4.8 - '@changesets/cli': ^2.26.1 - '@commitlint/cli': ^17.6.5 - '@commitlint/config-conventional': ^17.6.5 - '@rollup/plugin-alias': ^4.0.4 - '@rollup/plugin-babel': ^5.3.1 - '@rollup/plugin-commonjs': ^22.0.2 - '@rollup/plugin-json': ^4.1.0 - '@rollup/plugin-node-resolve': ^13.3.0 - '@rollup/plugin-strip': ^3.0.2 - '@rollup/plugin-typescript': ^8.5.0 - '@types/chai': ^4.3.5 - '@types/mocha': ^9.1.1 - '@types/node': ^18.16.18 - '@types/react': ^18.2.12 - '@types/react-dom': ^18.2.5 - '@typescript-eslint/eslint-plugin': ^5.59.11 - '@typescript-eslint/parser': ^5.59.11 - chai: ^4.3.7 - conventional-changelog-cmyr-config: ^2.1.0 - eslint: ^8.42.0 - eslint-config-react-app: ^7.0.1 - eslint-plugin-prettier: ^4.2.1 - husky: ^8.0.3 - lint-staged: ^13.2.2 - mocha: ^10.2.0 - prettier: ^2.8.8 - rimraf: ^3.0.2 devDependencies: - '@babel/core': 7.22.5 - '@changesets/changelog-github': 0.4.8 - '@changesets/cli': 2.26.1 - '@commitlint/cli': 17.6.5 - '@commitlint/config-conventional': 17.6.5 - '@rollup/plugin-alias': 4.0.4_rollup@2.79.1 - '@rollup/plugin-babel': 5.3.1_7j3zdoaddfjq5alrlemmlxmxci - '@rollup/plugin-commonjs': 22.0.2_rollup@2.79.1 - '@rollup/plugin-json': 4.1.0_rollup@2.79.1 - '@rollup/plugin-node-resolve': 13.3.0_rollup@2.79.1 - '@rollup/plugin-strip': 3.0.2_rollup@2.79.1 - '@rollup/plugin-typescript': 8.5.0_x5fg2s3voyx5jrtpaswheakfcm - '@types/chai': 4.3.5 - '@types/mocha': 9.1.1 - '@types/node': 18.16.18 - '@types/react': 18.2.12 - '@types/react-dom': 18.2.5 - '@typescript-eslint/eslint-plugin': 5.59.11_sqfi766b7p7jf53aqxvjxvblnq - '@typescript-eslint/parser': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u - chai: 4.3.7 - conventional-changelog-cmyr-config: 2.1.0 - eslint: 8.42.0 - eslint-config-react-app: 7.0.1_yn5ilqvgwchduzwezxxn64yk7y - eslint-plugin-prettier: 4.2.1_eveahbx3r3okkkxu7l44ces2q4 - husky: 8.0.3 - lint-staged: 13.2.2 - mocha: 10.2.0 - prettier: 2.8.8 - rimraf: 3.0.2 + '@babel/core': + specifier: ^7.22.5 + version: 7.22.5 + '@changesets/changelog-github': + specifier: ^0.4.8 + version: 0.4.8 + '@changesets/cli': + specifier: ^2.26.1 + version: 2.26.1 + '@commitlint/cli': + specifier: ^17.6.5 + version: 17.6.5 + '@commitlint/config-conventional': + specifier: ^17.6.5 + version: 17.6.5 + '@rollup/plugin-alias': + specifier: ^4.0.4 + version: 4.0.4(rollup@2.79.1) + '@rollup/plugin-babel': + specifier: ^5.3.1 + version: 5.3.1(@babel/core@7.22.5)(rollup@2.79.1) + '@rollup/plugin-commonjs': + specifier: ^22.0.2 + version: 22.0.2(rollup@2.79.1) + '@rollup/plugin-json': + specifier: ^4.1.0 + version: 4.1.0(rollup@2.79.1) + '@rollup/plugin-node-resolve': + specifier: ^13.3.0 + version: 13.3.0(rollup@2.79.1) + '@rollup/plugin-strip': + specifier: ^3.0.2 + version: 3.0.2(rollup@2.79.1) + '@rollup/plugin-typescript': + specifier: ^8.5.0 + version: 8.5.0(rollup@2.79.1)(typescript@4.9.5) + '@types/chai': + specifier: ^4.3.5 + version: 4.3.5 + '@types/mocha': + specifier: ^9.1.1 + version: 9.1.1 + '@types/node': + specifier: ^18.16.18 + version: 18.16.18 + '@types/react': + specifier: ^18.2.12 + version: 18.2.12 + '@types/react-dom': + specifier: ^18.2.5 + version: 18.2.5 + '@typescript-eslint/eslint-plugin': + specifier: ^5.59.11 + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^5.59.11 + version: 5.59.11(eslint@8.42.0)(typescript@4.9.5) + chai: + specifier: ^4.3.7 + version: 4.3.7 + conventional-changelog-cmyr-config: + specifier: ^2.1.0 + version: 2.1.0 + eslint: + specifier: ^8.42.0 + version: 8.42.0 + eslint-config-react-app: + specifier: ^7.0.1 + version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@4.9.5) + eslint-plugin-prettier: + specifier: ^4.2.1 + version: 4.2.1(eslint@8.42.0)(prettier@2.8.8) + husky: + specifier: ^8.0.3 + version: 8.0.3 + lint-staged: + specifier: ^13.2.2 + version: 13.2.2 + mocha: + specifier: ^10.2.0 + version: 10.2.0 + prettier: + specifier: ^2.8.8 + version: 2.8.8 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 examples/nextjs: - specifiers: - '@bnb-chain/greenfield-chain-sdk': workspace:* - '@bnb-chain/greenfiled-file-handle': workspace:* - '@cosmjs/encoding': ^0.29.5 - '@cosmjs/proto-signing': ^0.29.5 - '@cosmjs/stargate': ^0.29.5 - '@ethersproject/signing-key': ^5.7.0 - '@metamask/eth-sig-util': ^5.0.2 - '@next/font': 13.1.6 - '@rainbow-me/rainbowkit': ^1.0.2 - '@types/node': ^18.7.1 - '@types/react': ^18.0.17 - '@types/react-dom': ^18.0.6 - axios: ^1.3.2 - cors: ^2.8.5 - cross-env: ^7.0.3 - dotenv: ^16.0.3 - eslint: ^8.21.0 - eslint-config-next: 13.1.6 - evmosjs: ^0.2.17 - long: ^5.2.1 - next: 13.1.6 - react: 18.2.0 - react-dom: 18.2.0 - typescript: ^4.7.4 - viem: ^1.0.6 - wagmi: ^1.2.0 dependencies: - '@bnb-chain/greenfield-chain-sdk': link:../../packages/chain-sdk - '@bnb-chain/greenfiled-file-handle': link:../../packages/file-handle - '@cosmjs/encoding': 0.29.5 - '@cosmjs/proto-signing': 0.29.5 - '@cosmjs/stargate': 0.29.5 - '@ethersproject/signing-key': 5.7.0 - '@metamask/eth-sig-util': 5.0.2 - '@next/font': 13.1.6 - '@rainbow-me/rainbowkit': 1.0.2_osz7gkuvw6gybth6kg2yker4la - '@types/node': 18.16.7 - '@types/react': 18.2.6 - '@types/react-dom': 18.2.4 - axios: 1.3.4 - cors: 2.8.5 - eslint: 8.40.0 - eslint-config-next: 13.1.6_jgkqkwom7vrxl4kyi454n2sy2i - evmosjs: 0.2.17 - long: 5.2.1 - next: 13.1.6_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - typescript: 4.9.5 - viem: 1.0.6_typescript@4.9.5 - wagmi: 1.2.0_sta5t6m4653sw6oxbjskfbw63m + '@bnb-chain/greenfield-chain-sdk': + specifier: workspace:* + version: link:../../packages/chain-sdk + '@bnb-chain/greenfiled-file-handle': + specifier: workspace:* + version: link:../../packages/file-handle + '@cosmjs/encoding': + specifier: ^0.29.5 + version: 0.29.5 + '@cosmjs/proto-signing': + specifier: ^0.29.5 + version: 0.29.5 + '@cosmjs/stargate': + specifier: ^0.29.5 + version: 0.29.5 + '@ethersproject/signing-key': + specifier: ^5.7.0 + version: 5.7.0 + '@metamask/eth-sig-util': + specifier: ^5.0.2 + version: 5.0.2 + '@next/font': + specifier: 13.1.6 + version: 13.1.6 + '@rainbow-me/rainbowkit': + specifier: ^1.0.2 + version: 1.0.2(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0) + '@types/node': + specifier: ^18.7.1 + version: 18.16.7 + '@types/react': + specifier: ^18.0.17 + version: 18.2.6 + '@types/react-dom': + specifier: ^18.0.6 + version: 18.2.4 + axios: + specifier: ^1.3.2 + version: 1.3.4 + cors: + specifier: ^2.8.5 + version: 2.8.5 + eslint: + specifier: ^8.21.0 + version: 8.40.0 + eslint-config-next: + specifier: 13.1.6 + version: 13.1.6(eslint@8.40.0)(typescript@4.9.5) + evmosjs: + specifier: ^0.2.17 + version: 0.2.17 + long: + specifier: ^5.2.1 + version: 5.2.1 + next: + specifier: 13.1.6 + version: 13.1.6(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + typescript: + specifier: ^4.7.4 + version: 4.9.5 + viem: + specifier: ^1.0.6 + version: 1.0.6(typescript@4.9.5) + wagmi: + specifier: ^1.2.0 + version: 1.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(viem@1.0.6) devDependencies: - cross-env: 7.0.3 - dotenv: 16.0.3 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + dotenv: + specifier: ^16.0.3 + version: 16.0.3 examples/nodejs: - specifiers: - '@bnb-chain/greenfield-chain-sdk': workspace:* - '@bnb-chain/greenfiled-file-handle': workspace:* dependencies: - '@bnb-chain/greenfield-chain-sdk': link:../../packages/chain-sdk - '@bnb-chain/greenfiled-file-handle': link:../../packages/file-handle + '@bnb-chain/greenfield-chain-sdk': + specifier: workspace:* + version: link:../../packages/chain-sdk + '@bnb-chain/greenfiled-file-handle': + specifier: workspace:* + version: link:../../packages/file-handle + devDependencies: + cross-env: + specifier: ^7.0.3 + version: 7.0.3 packages/chain-sdk: - specifiers: - '@bnb-chain/greenfield-cosmos-types': 0.4.0-alpha.11 - '@bnb-chain/greenfiled-file-handle': workspace:* - '@cosmjs/proto-signing': ^0.30.1 - '@cosmjs/stargate': ^0.30.1 - '@cosmjs/tendermint-rpc': ^0.30.1 - '@ethereumjs/util': ^8.0.5 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/signing-key': ^5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/units': ^5.7.0 - '@jest/globals': ^29.5.0 - '@metamask/eth-sig-util': ^5.0.2 - '@types/jest': ^29.5.1 - '@types/mime': ^3.0.1 - dayjs: ^1.11.7 - ethereum-cryptography: ^2.0.0 - jest: ^29.5.0 - long: ^5.2.1 - mime: ^3.0.0 - reflect-metadata: ^0.1.13 - rollup: ^2.79.1 - rollup-plugin-auto-external: ^2.0.0 - rollup-plugin-node-builtins: ^2.1.2 - rollup-plugin-polyfill-node: ^0.10.2 - rollup-plugin-terser: ^7.0.2 - ts-jest: ^29.1.0 - ts-node: ^10.9.1 - tslib: ^2.5.0 - tsyringe: ^4.7.0 - typescript: ^4.9.5 - dependencies: - '@bnb-chain/greenfield-cosmos-types': 0.4.0-alpha.11 - '@bnb-chain/greenfiled-file-handle': link:../file-handle - '@cosmjs/proto-signing': 0.30.1 - '@cosmjs/stargate': 0.30.1 - '@cosmjs/tendermint-rpc': 0.30.1 - '@ethereumjs/util': 8.0.5 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/units': 5.7.0 - '@metamask/eth-sig-util': 5.0.2 - dayjs: 1.11.7 - ethereum-cryptography: 2.0.0 - long: 5.2.1 - reflect-metadata: 0.1.13 - tsyringe: 4.7.0 + dependencies: + '@bnb-chain/greenfield-cosmos-types': + specifier: 0.4.0-alpha.11 + version: 0.4.0-alpha.11 + '@bnb-chain/greenfiled-file-handle': + specifier: workspace:* + version: link:../file-handle + '@cosmjs/proto-signing': + specifier: ^0.30.1 + version: 0.30.1 + '@cosmjs/stargate': + specifier: ^0.30.1 + version: 0.30.1 + '@cosmjs/tendermint-rpc': + specifier: ^0.30.1 + version: 0.30.1 + '@ethereumjs/util': + specifier: ^8.0.5 + version: 8.0.5 + '@ethersproject/bytes': + specifier: 5.7.0 + version: 5.7.0 + '@ethersproject/signing-key': + specifier: ^5.7.0 + version: 5.7.0 + '@ethersproject/strings': + specifier: 5.7.0 + version: 5.7.0 + '@ethersproject/units': + specifier: ^5.7.0 + version: 5.7.0 + '@metamask/eth-sig-util': + specifier: ^5.0.2 + version: 5.0.2 + dayjs: + specifier: ^1.11.7 + version: 1.11.7 + ethereum-cryptography: + specifier: ^2.0.0 + version: 2.0.0 + long: + specifier: ^5.2.1 + version: 5.2.1 + reflect-metadata: + specifier: ^0.1.13 + version: 0.1.13 + tsyringe: + specifier: ^4.7.0 + version: 4.7.0 devDependencies: - '@jest/globals': 29.5.0 - '@types/jest': 29.5.1 - '@types/mime': 3.0.1 - jest: 29.5.0_u3tjahz4lx2ow4rgesw7wigoy4 - mime: 3.0.0 - rollup: 2.79.1 - rollup-plugin-auto-external: 2.0.0_rollup@2.79.1 - rollup-plugin-node-builtins: 2.1.2 - rollup-plugin-polyfill-node: 0.10.2_rollup@2.79.1 - rollup-plugin-terser: 7.0.2_rollup@2.79.1 - ts-jest: 29.1.0_re3sd25lehf6oiq4fphel37ifq - ts-node: 10.9.1_gbfmtwj2t57hq5iibp7xw5qwjq - tslib: 2.5.0 - typescript: 4.9.5 + '@jest/globals': + specifier: ^29.5.0 + version: 29.5.0 + '@types/jest': + specifier: ^29.5.1 + version: 29.5.1 + '@types/mime': + specifier: ^3.0.1 + version: 3.0.1 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + mime: + specifier: ^3.0.0 + version: 3.0.0 + rollup: + specifier: ^2.79.1 + version: 2.79.1 + rollup-plugin-auto-external: + specifier: ^2.0.0 + version: 2.0.0(rollup@2.79.1) + rollup-plugin-node-builtins: + specifier: ^2.1.2 + version: 2.1.2 + rollup-plugin-polyfill-node: + specifier: ^0.10.2 + version: 0.10.2(rollup@2.79.1) + rollup-plugin-terser: + specifier: ^7.0.2 + version: 7.0.2(rollup@2.79.1) + ts-jest: + specifier: ^29.1.0 + version: 29.1.0(@babel/core@7.22.1)(jest@29.5.0)(typescript@4.9.5) + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + tslib: + specifier: ^2.5.0 + version: 2.5.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 packages/file-handle: - specifiers: - '@jest/globals': ^29.5.0 - '@rollup/plugin-wasm': ^6.1.2 - '@types/jest': ^29.5.1 - jest: ^29.5.0 - rollup: ^2.79.1 - rollup-plugin-auto-external: ^2.0.0 - rollup-plugin-copy: ^3.4.0 - rollup-plugin-node-builtins: ^2.1.2 - rollup-plugin-polyfill-node: ^0.10.2 - rollup-plugin-terser: ^7.0.2 - ts-jest: ^29.1.0 - ts-node: ^10.9.1 - tslib: ^2.5.0 - typescript: ^4.9.5 devDependencies: - '@jest/globals': 29.5.0 - '@rollup/plugin-wasm': 6.1.2_rollup@2.79.1 - '@types/jest': 29.5.1 - jest: 29.5.0_u3tjahz4lx2ow4rgesw7wigoy4 - rollup: 2.79.1 - rollup-plugin-auto-external: 2.0.0_rollup@2.79.1 - rollup-plugin-copy: 3.4.0 - rollup-plugin-node-builtins: 2.1.2 - rollup-plugin-polyfill-node: 0.10.2_rollup@2.79.1 - rollup-plugin-terser: 7.0.2_rollup@2.79.1 - ts-jest: 29.1.0_re3sd25lehf6oiq4fphel37ifq - ts-node: 10.9.1_gbfmtwj2t57hq5iibp7xw5qwjq - tslib: 2.5.0 - typescript: 4.9.5 + '@jest/globals': + specifier: ^29.5.0 + version: 29.5.0 + '@rollup/plugin-wasm': + specifier: ^6.1.2 + version: 6.1.2(rollup@2.79.1) + '@types/jest': + specifier: ^29.5.1 + version: 29.5.1 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + rollup: + specifier: ^2.79.1 + version: 2.79.1 + rollup-plugin-auto-external: + specifier: ^2.0.0 + version: 2.0.0(rollup@2.79.1) + rollup-plugin-copy: + specifier: ^3.4.0 + version: 3.4.0 + rollup-plugin-node-builtins: + specifier: ^2.1.2 + version: 2.1.2 + rollup-plugin-polyfill-node: + specifier: ^0.10.2 + version: 0.10.2(rollup@2.79.1) + rollup-plugin-terser: + specifier: ^7.0.2 + version: 7.0.2(rollup@2.79.1) + ts-jest: + specifier: ^29.1.0 + version: 29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@4.9.5) + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + tslib: + specifier: ^2.5.0 + version: 2.5.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 packages: - /@adraffy/ens-normalize/1.9.0: + /@adraffy/ens-normalize@1.9.0: resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} dev: false - /@ampproject/remapping/2.2.1: + /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 - dev: true - /@babel/code-frame/7.18.6: + /@babel/code-frame@7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 dev: true - /@babel/code-frame/7.21.4: + /@babel/code-frame@7.21.4: resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 dev: true - /@babel/code-frame/7.22.5: + /@babel/code-frame@7.22.5: resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.22.5 - dev: true - /@babel/compat-data/7.22.3: + /@babel/compat-data@7.22.3: resolution: {integrity: sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/compat-data/7.22.5: + /@babel/compat-data@7.22.5: resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} engines: {node: '>=6.9.0'} - dev: true - /@babel/core/7.22.1: + /@babel/core@7.22.1: resolution: {integrity: sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.21.4 '@babel/generator': 7.22.3 - '@babel/helper-compilation-targets': 7.22.1_@babel+core@7.22.1 + '@babel/helper-compilation-targets': 7.22.1(@babel/core@7.22.1) '@babel/helper-module-transforms': 7.22.1 '@babel/helpers': 7.22.3 '@babel/parser': 7.22.4 @@ -286,7 +387,7 @@ packages: '@babel/traverse': 7.22.4 '@babel/types': 7.22.4 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 @@ -294,14 +395,14 @@ packages: - supports-color dev: true - /@babel/core/7.22.5: + /@babel/core@7.22.5: resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.22.5 '@babel/generator': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5_@babel+core@7.22.5 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) '@babel/helper-module-transforms': 7.22.5 '@babel/helpers': 7.22.5 '@babel/parser': 7.22.5 @@ -309,15 +410,14 @@ packages: '@babel/traverse': 7.22.5 '@babel/types': 7.22.5 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true - /@babel/eslint-parser/7.22.5_x2nqc5cansj73pf43kd5o2aydq: + /@babel/eslint-parser@7.22.5(@babel/core@7.22.5)(eslint@8.42.0): resolution: {integrity: sha512-C69RWYNYtrgIRE5CmTd77ZiLDXqgBipahJc/jHP3sLcAGj6AJzxNIuKNpVnICqbyK7X3pFUfEvL++rvtbQpZkQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -331,7 +431,7 @@ packages: semver: 6.3.0 dev: true - /@babel/generator/7.21.5: + /@babel/generator@7.21.5: resolution: {integrity: sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==} engines: {node: '>=6.9.0'} dependencies: @@ -341,7 +441,7 @@ packages: jsesc: 2.5.2 dev: true - /@babel/generator/7.22.3: + /@babel/generator@7.22.3: resolution: {integrity: sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A==} engines: {node: '>=6.9.0'} dependencies: @@ -351,7 +451,7 @@ packages: jsesc: 2.5.2 dev: true - /@babel/generator/7.22.5: + /@babel/generator@7.22.5: resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} engines: {node: '>=6.9.0'} dependencies: @@ -359,23 +459,22 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 - dev: true - /@babel/helper-annotate-as-pure/7.22.5: + /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-builder-binary-assignment-operator-visitor/7.22.5: + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.5: resolution: {integrity: sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-compilation-targets/7.22.1_@babel+core@7.22.1: + /@babel/helper-compilation-targets@7.22.1(@babel/core@7.22.1): resolution: {integrity: sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -389,7 +488,7 @@ packages: semver: 6.3.0 dev: true - /@babel/helper-compilation-targets/7.22.5_@babel+core@7.22.5: + /@babel/helper-compilation-targets@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -401,9 +500,8 @@ packages: browserslist: 4.21.8 lru-cache: 5.1.1 semver: 6.3.0 - dev: true - /@babel/helper-create-class-features-plugin/7.22.5_@babel+core@7.22.5: + /@babel/helper-create-class-features-plugin@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -423,7 +521,7 @@ packages: - supports-color dev: true - /@babel/helper-create-regexp-features-plugin/7.22.5_@babel+core@7.22.5: + /@babel/helper-create-regexp-features-plugin@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==} engines: {node: '>=6.9.0'} peerDependencies: @@ -435,15 +533,15 @@ packages: semver: 6.3.0 dev: true - /@babel/helper-define-polyfill-provider/0.4.0_@babel+core@7.22.5: + /@babel/helper-define-polyfill-provider@0.4.0(@babel/core@7.22.5): resolution: {integrity: sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5_@babel+core@7.22.5 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.2 semver: 6.3.0 @@ -451,17 +549,16 @@ packages: - supports-color dev: true - /@babel/helper-environment-visitor/7.22.1: + /@babel/helper-environment-visitor@7.22.1: resolution: {integrity: sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-environment-visitor/7.22.5: + /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-function-name/7.21.0: + /@babel/helper-function-name@7.21.0: resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} engines: {node: '>=6.9.0'} dependencies: @@ -469,50 +566,47 @@ packages: '@babel/types': 7.22.4 dev: true - /@babel/helper-function-name/7.22.5: + /@babel/helper-function-name@7.22.5: resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.5 '@babel/types': 7.22.5 - dev: true - /@babel/helper-hoist-variables/7.18.6: + /@babel/helper-hoist-variables@7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.4 dev: true - /@babel/helper-hoist-variables/7.22.5: + /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 - dev: true - /@babel/helper-member-expression-to-functions/7.22.5: + /@babel/helper-member-expression-to-functions@7.22.5: resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-module-imports/7.21.4: + /@babel/helper-module-imports@7.21.4: resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.4 dev: true - /@babel/helper-module-imports/7.22.5: + /@babel/helper-module-imports@7.22.5: resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 - dev: true - /@babel/helper-module-transforms/7.22.1: + /@babel/helper-module-transforms@7.22.1: resolution: {integrity: sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==} engines: {node: '>=6.9.0'} dependencies: @@ -528,7 +622,7 @@ packages: - supports-color dev: true - /@babel/helper-module-transforms/7.22.5: + /@babel/helper-module-transforms@7.22.5: resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} engines: {node: '>=6.9.0'} dependencies: @@ -542,26 +636,25 @@ packages: '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color - dev: true - /@babel/helper-optimise-call-expression/7.22.5: + /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-plugin-utils/7.21.5: + /@babel/helper-plugin-utils@7.21.5: resolution: {integrity: sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-plugin-utils/7.22.5: + /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-remap-async-to-generator/7.22.5_@babel+core@7.22.5: + /@babel/helper-remap-async-to-generator@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==} engines: {node: '>=6.9.0'} peerDependencies: @@ -576,7 +669,7 @@ packages: - supports-color dev: true - /@babel/helper-replace-supers/7.22.5: + /@babel/helper-replace-supers@7.22.5: resolution: {integrity: sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==} engines: {node: '>=6.9.0'} dependencies: @@ -590,72 +683,67 @@ packages: - supports-color dev: true - /@babel/helper-simple-access/7.21.5: + /@babel/helper-simple-access@7.21.5: resolution: {integrity: sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.4 dev: true - /@babel/helper-simple-access/7.22.5: + /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 - dev: true - /@babel/helper-skip-transparent-expression-wrappers/7.22.5: + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-split-export-declaration/7.18.6: + /@babel/helper-split-export-declaration@7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.4 dev: true - /@babel/helper-split-export-declaration/7.22.5: + /@babel/helper-split-export-declaration@7.22.5: resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 - dev: true - /@babel/helper-string-parser/7.21.5: + /@babel/helper-string-parser@7.21.5: resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-string-parser/7.22.5: + /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-identifier/7.19.1: + /@babel/helper-validator-identifier@7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-identifier/7.22.5: + /@babel/helper-validator-identifier@7.22.5: resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-option/7.21.0: + /@babel/helper-validator-option@7.21.0: resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option/7.22.5: + /@babel/helper-validator-option@7.22.5: resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-wrap-function/7.22.5: + /@babel/helper-wrap-function@7.22.5: resolution: {integrity: sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==} engines: {node: '>=6.9.0'} dependencies: @@ -667,7 +755,7 @@ packages: - supports-color dev: true - /@babel/helpers/7.22.3: + /@babel/helpers@7.22.3: resolution: {integrity: sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==} engines: {node: '>=6.9.0'} dependencies: @@ -678,7 +766,7 @@ packages: - supports-color dev: true - /@babel/helpers/7.22.5: + /@babel/helpers@7.22.5: resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} engines: {node: '>=6.9.0'} dependencies: @@ -687,9 +775,8 @@ packages: '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color - dev: true - /@babel/highlight/7.18.6: + /@babel/highlight@7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: @@ -698,16 +785,15 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/highlight/7.22.5: + /@babel/highlight@7.22.5: resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.22.5 chalk: 2.4.2 js-tokens: 4.0.0 - dev: true - /@babel/parser/7.22.4: + /@babel/parser@7.22.4: resolution: {integrity: sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==} engines: {node: '>=6.0.0'} hasBin: true @@ -715,15 +801,14 @@ packages: '@babel/types': 7.22.4 dev: true - /@babel/parser/7.22.5: + /@babel/parser@7.22.5: resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} engines: {node: '>=6.0.0'} hasBin: true dependencies: '@babel/types': 7.22.5 - dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.22.5_@babel+core@7.22.5: + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -733,7 +818,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.22.5_@babel+core@7.22.5: + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} engines: {node: '>=6.9.0'} peerDependencies: @@ -742,39 +827,39 @@ packages: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-optional-chaining': 7.22.5(@babel/core@7.22.5) dev: true - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.22.5: + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-decorators/7.22.5_@babel+core@7.22.5: + /@babel/plugin-proposal-decorators@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-h8hlezQ4dl6ixodgXkH8lUfcD7x+WAuIqPUjwGoItynrXOAv4a4Tci1zA/qjzQjjcl0v3QpLdc2LM6ZACQuY7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.5 - '@babel/plugin-syntax-decorators': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-syntax-decorators': 7.22.5(@babel/core@7.22.5) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.22.5: + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -782,10 +867,10 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) dev: true - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.22.5: + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -793,10 +878,10 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) dev: true - /@babel/plugin-proposal-optional-chaining/7.21.0_@babel+core@7.22.5: + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.5): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -805,23 +890,23 @@ packages: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) dev: true - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.22.5: + /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object/7.21.0-placeholder-for-preset-env.2_@babel+core@7.22.5: + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.5): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: @@ -830,7 +915,7 @@ packages: '@babel/core': 7.22.5 dev: true - /@babel/plugin-proposal-private-property-in-object/7.21.11_@babel+core@7.22.5: + /@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.22.5): resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -838,34 +923,34 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.22.5: + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.22.1: + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.1): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.22.5: + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.5): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -874,7 +959,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.22.1: + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.1): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -883,16 +968,16 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.22.1: + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.1): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.22.5: + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.5): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -901,7 +986,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.22.5: + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.5): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -911,7 +996,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-decorators/7.22.5_@babel+core@7.22.5: + /@babel/plugin-syntax-decorators@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-avpUOBS7IU6al8MmF1XpAyj9QYeLPuSDJI5D4pVMSMdL7xQokKqJPYQC67RCT0aCTashUXPiGwMJ0DEXXCEmMA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -921,7 +1006,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.22.5: + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -930,7 +1015,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.22.5: + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -939,7 +1024,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-flow/7.22.5_@babel+core@7.22.5: + /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -949,7 +1034,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions/7.22.5_@babel+core@7.22.5: + /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -959,7 +1044,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes/7.22.5_@babel+core@7.22.5: + /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -969,16 +1054,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.22.1: + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.1): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.22.5: + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.5): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -987,16 +1072,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.22.1: + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.1): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.22.5: + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1005,7 +1090,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-jsx/7.21.4_@babel+core@7.22.1: + /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.22.1): resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1015,7 +1100,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-jsx/7.22.5_@babel+core@7.22.5: + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1025,16 +1110,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.22.1: + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.1): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.22.5: + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.5): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1043,16 +1128,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.22.1: + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.1): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.22.5: + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1061,16 +1146,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.22.1: + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.1): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.22.5: + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.5): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1079,16 +1164,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.22.1: + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.1): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.22.5: + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1097,16 +1182,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.22.1: + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.1): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.22.5: + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1115,16 +1200,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.22.1: + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.1): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.22.5: + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1133,7 +1218,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.22.5: + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.5): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1143,17 +1228,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.22.1: + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.1): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.22.5: + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.5): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1163,7 +1248,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript/7.21.4_@babel+core@7.22.1: + /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.22.1): resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1173,7 +1258,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-typescript/7.22.5_@babel+core@7.22.5: + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1183,18 +1268,18 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-unicode-sets-regex/7.18.6_@babel+core@7.22.5: + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1204,7 +1289,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-async-generator-functions/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-async-generator-functions@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1213,13 +1298,13 @@ packages: '@babel/core': 7.22.5 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-async-to-generator/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1228,12 +1313,12 @@ packages: '@babel/core': 7.22.5 '@babel/helper-module-imports': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.5_@babel+core@7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.22.5) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-block-scoped-functions/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1243,7 +1328,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-block-scoping@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1253,34 +1338,34 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-properties/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-class-static-block/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-class-static-block@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.5) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-classes/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-classes@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1288,7 +1373,7 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5_@babel+core@7.22.5 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-optimise-call-expression': 7.22.5 @@ -1300,7 +1385,7 @@ packages: - supports-color dev: true - /@babel/plugin-transform-computed-properties/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1311,7 +1396,7 @@ packages: '@babel/template': 7.22.5 dev: true - /@babel/plugin-transform-destructuring/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-destructuring@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1321,18 +1406,18 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dotall-regex/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-duplicate-keys/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1342,7 +1427,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dynamic-import/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-dynamic-import@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1350,10 +1435,10 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-exponentiation-operator/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1364,7 +1449,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-export-namespace-from/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-export-namespace-from@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1372,10 +1457,10 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-flow-strip-types/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1383,10 +1468,10 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-flow': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-for-of/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1396,19 +1481,19 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-function-name/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5_@babel+core@7.22.5 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) '@babel/helper-function-name': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-json-strings/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-json-strings@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1416,10 +1501,10 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-literals/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1429,7 +1514,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-logical-assignment-operators/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-logical-assignment-operators@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1437,10 +1522,10 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-member-expression-literals/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1450,7 +1535,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-amd/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1463,7 +1548,7 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1477,7 +1562,7 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-systemjs/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-modules-systemjs@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1492,7 +1577,7 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-umd/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1505,18 +1590,18 @@ packages: - supports-color dev: true - /@babel/plugin-transform-named-capturing-groups-regex/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-new-target/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1526,7 +1611,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-nullish-coalescing-operator/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-nullish-coalescing-operator@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1534,10 +1619,10 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-numeric-separator/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-numeric-separator@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1545,10 +1630,10 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-object-rest-spread/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-object-rest-spread@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1556,13 +1641,13 @@ packages: dependencies: '@babel/compat-data': 7.22.5 '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5_@babel+core@7.22.5 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.22.5 - '@babel/plugin-transform-parameters': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-object-super/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1575,7 +1660,7 @@ packages: - supports-color dev: true - /@babel/plugin-transform-optional-catch-binding/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-optional-catch-binding@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1583,10 +1668,10 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-optional-chaining/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-optional-chaining@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1595,10 +1680,10 @@ packages: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-parameters/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1608,20 +1693,20 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-methods/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-private-property-in-object/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-private-property-in-object@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1629,14 +1714,14 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-property-literals/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1646,7 +1731,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-display-name/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1656,17 +1741,17 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-development/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/plugin-transform-react-jsx': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-react-jsx/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1676,11 +1761,11 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-module-imports': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.5) '@babel/types': 7.22.5 dev: true - /@babel/plugin-transform-react-pure-annotations/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-react-pure-annotations@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1691,7 +1776,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-regenerator/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-regenerator@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1702,7 +1787,7 @@ packages: regenerator-transform: 0.15.1 dev: true - /@babel/plugin-transform-reserved-words/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1712,7 +1797,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-runtime/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-runtime@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-bg4Wxd1FWeFx3daHFTWk1pkSWK/AyQuiyAoeZAOkAOUBjnZPH6KT7eMxouV47tQ6hl6ax2zyAWBdWZXbrvXlaw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1721,15 +1806,15 @@ packages: '@babel/core': 7.22.5 '@babel/helper-module-imports': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.3_@babel+core@7.22.5 - babel-plugin-polyfill-corejs3: 0.8.1_@babel+core@7.22.5 - babel-plugin-polyfill-regenerator: 0.5.0_@babel+core@7.22.5 + babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.5) + babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.5) + babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.5) semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-shorthand-properties/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1739,7 +1824,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-spread/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1750,7 +1835,7 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - /@babel/plugin-transform-sticky-regex/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1760,7 +1845,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-template-literals/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1770,7 +1855,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typeof-symbol/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1780,7 +1865,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typescript/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-typescript@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-SMubA9S7Cb5sGSFFUlqxyClTA9zWJ8qGQrppNUm05LtFuN1ELRFNndkix4zUJrC9F+YivWwa1dHMSyo0e0N9dA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1788,14 +1873,14 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.5) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-unicode-escapes/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-unicode-escapes@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1805,40 +1890,40 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-property-regex/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-sets-regex/7.22.5_@babel+core@7.22.5: + /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5_@babel+core@7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/preset-env/7.22.5_@babel+core@7.22.5: + /@babel/preset-env@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1846,103 +1931,103 @@ packages: dependencies: '@babel/compat-data': 7.22.5 '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5_@babel+core@7.22.5 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2_@babel+core@7.22.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.22.5 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.22.5 - '@babel/plugin-syntax-import-assertions': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-syntax-import-attributes': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.22.5 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.22.5 - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6_@babel+core@7.22.5 - '@babel/plugin-transform-arrow-functions': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-async-generator-functions': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-async-to-generator': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-block-scoped-functions': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-block-scoping': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-class-properties': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-class-static-block': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-classes': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-computed-properties': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-destructuring': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-dotall-regex': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-duplicate-keys': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-dynamic-import': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-exponentiation-operator': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-export-namespace-from': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-for-of': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-function-name': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-json-strings': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-literals': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-logical-assignment-operators': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-member-expression-literals': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-modules-amd': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-modules-commonjs': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-modules-systemjs': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-modules-umd': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-new-target': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-nullish-coalescing-operator': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-numeric-separator': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-object-rest-spread': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-object-super': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-optional-catch-binding': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-optional-chaining': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-parameters': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-private-methods': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-private-property-in-object': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-property-literals': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-regenerator': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-reserved-words': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-shorthand-properties': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-spread': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-sticky-regex': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-template-literals': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-typeof-symbol': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-unicode-escapes': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-unicode-property-regex': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-unicode-regex': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-unicode-sets-regex': 7.22.5_@babel+core@7.22.5 - '@babel/preset-modules': 0.1.5_@babel+core@7.22.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-async-generator-functions': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-class-static-block': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-classes': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-dynamic-import': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-export-namespace-from': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-json-strings': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-logical-assignment-operators': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-modules-systemjs': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-numeric-separator': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-object-rest-spread': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-optional-catch-binding': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-optional-chaining': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-private-property-in-object': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-regenerator': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-unicode-escapes': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.5) + '@babel/preset-modules': 0.1.5(@babel/core@7.22.5) '@babel/types': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.3_@babel+core@7.22.5 - babel-plugin-polyfill-corejs3: 0.8.1_@babel+core@7.22.5 - babel-plugin-polyfill-regenerator: 0.5.0_@babel+core@7.22.5 + babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.5) + babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.5) + babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.5) core-js-compat: 3.31.0 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules/0.1.5_@babel+core@7.22.5: + /@babel/preset-modules@0.1.5(@babel/core@7.22.5): resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.22.5 - '@babel/plugin-transform-dotall-regex': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.5) '@babel/types': 7.22.5 esutils: 2.0.3 dev: true - /@babel/preset-react/7.22.5_@babel+core@7.22.5: + /@babel/preset-react@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1951,13 +2036,13 @@ packages: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-transform-react-display-name': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-react-jsx': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-react-jsx-development': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-react-pure-annotations': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-pure-annotations': 7.22.5(@babel/core@7.22.5) dev: true - /@babel/preset-typescript/7.22.5_@babel+core@7.22.5: + /@babel/preset-typescript@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1966,30 +2051,30 @@ packages: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-modules-commonjs': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-typescript': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-typescript': 7.22.5(@babel/core@7.22.5) transitivePeerDependencies: - supports-color dev: true - /@babel/regjsgen/0.8.0: + /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true - /@babel/runtime/7.22.3: + /@babel/runtime@7.22.3: resolution: {integrity: sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - /@babel/runtime/7.22.5: + /@babel/runtime@7.22.5: resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - /@babel/template/7.21.9: + /@babel/template@7.21.9: resolution: {integrity: sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==} engines: {node: '>=6.9.0'} dependencies: @@ -1998,16 +2083,15 @@ packages: '@babel/types': 7.22.4 dev: true - /@babel/template/7.22.5: + /@babel/template@7.22.5: resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.5 '@babel/parser': 7.22.5 '@babel/types': 7.22.5 - dev: true - /@babel/traverse/7.21.5: + /@babel/traverse@7.21.5: resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==} engines: {node: '>=6.9.0'} dependencies: @@ -2019,13 +2103,13 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.22.4 '@babel/types': 7.22.4 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/traverse/7.22.4: + /@babel/traverse@7.22.4: resolution: {integrity: sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ==} engines: {node: '>=6.9.0'} dependencies: @@ -2037,13 +2121,13 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.22.4 '@babel/types': 7.22.4 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/traverse/7.22.5: + /@babel/traverse@7.22.5: resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} engines: {node: '>=6.9.0'} dependencies: @@ -2055,13 +2139,12 @@ packages: '@babel/helper-split-export-declaration': 7.22.5 '@babel/parser': 7.22.5 '@babel/types': 7.22.5 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true - /@babel/types/7.21.5: + /@babel/types@7.21.5: resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} engines: {node: '>=6.9.0'} dependencies: @@ -2070,7 +2153,7 @@ packages: to-fast-properties: 2.0.0 dev: true - /@babel/types/7.22.4: + /@babel/types@7.22.4: resolution: {integrity: sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==} engines: {node: '>=6.9.0'} dependencies: @@ -2079,37 +2162,36 @@ packages: to-fast-properties: 2.0.0 dev: true - /@babel/types/7.22.5: + /@babel/types@7.22.5: resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.22.5 '@babel/helper-validator-identifier': 7.22.5 to-fast-properties: 2.0.0 - dev: true - /@bcoe/v8-coverage/0.2.3: + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bnb-chain/greenfield-cosmos-types/0.4.0-alpha.11: + /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.11: resolution: {integrity: sha512-59ILIwpifUWUAihTbU+DDEkddH5Xz0lghxUMRGwjvlB8+MF0m5t+R6SAJWk0ZkVMVIWdIGJphjkBJn2ffKbisA==} dependencies: long: 4.0.0 protobufjs: 6.11.3 dev: false - /@chainsafe/as-sha256/0.3.1: + /@chainsafe/as-sha256@0.3.1: resolution: {integrity: sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==} dev: false - /@chainsafe/persistent-merkle-tree/0.4.2: + /@chainsafe/persistent-merkle-tree@0.4.2: resolution: {integrity: sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==} dependencies: '@chainsafe/as-sha256': 0.3.1 dev: false - /@chainsafe/ssz/0.9.4: + /@chainsafe/ssz@0.9.4: resolution: {integrity: sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==} dependencies: '@chainsafe/as-sha256': 0.3.1 @@ -2117,7 +2199,7 @@ packages: case: 1.6.3 dev: false - /@changesets/apply-release-plan/6.1.3: + /@changesets/apply-release-plan@6.1.3: resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} dependencies: '@babel/runtime': 7.22.5 @@ -2135,7 +2217,7 @@ packages: semver: 5.7.1 dev: true - /@changesets/assemble-release-plan/5.2.3: + /@changesets/assemble-release-plan@5.2.3: resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} dependencies: '@babel/runtime': 7.22.5 @@ -2146,13 +2228,13 @@ packages: semver: 5.7.1 dev: true - /@changesets/changelog-git/0.1.14: + /@changesets/changelog-git@0.1.14: resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} dependencies: '@changesets/types': 5.2.1 dev: true - /@changesets/changelog-github/0.4.8: + /@changesets/changelog-github@0.4.8: resolution: {integrity: sha512-jR1DHibkMAb5v/8ym77E4AMNWZKB5NPzw5a5Wtqm1JepAuIF+hrKp2u04NKM14oBZhHglkCfrla9uq8ORnK/dw==} dependencies: '@changesets/get-github-info': 0.5.2 @@ -2162,7 +2244,7 @@ packages: - encoding dev: true - /@changesets/cli/2.26.1: + /@changesets/cli@2.26.1: resolution: {integrity: sha512-XnTa+b51vt057fyAudvDKGB0Sh72xutQZNAdXkCqPBKO2zvs2yYZx5hFZj1u9cbtpwM6Sxtcr02/FQJfZOzemQ==} hasBin: true dependencies: @@ -2201,7 +2283,7 @@ packages: tty-table: 4.2.1 dev: true - /@changesets/config/2.3.0: + /@changesets/config@2.3.0: resolution: {integrity: sha512-EgP/px6mhCx8QeaMAvWtRrgyxW08k/Bx2tpGT+M84jEdX37v3VKfh4Cz1BkwrYKuMV2HZKeHOh8sHvja/HcXfQ==} dependencies: '@changesets/errors': 0.1.4 @@ -2213,13 +2295,13 @@ packages: micromatch: 4.0.5 dev: true - /@changesets/errors/0.1.4: + /@changesets/errors@0.1.4: resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} dependencies: extendable-error: 0.1.7 dev: true - /@changesets/get-dependents-graph/1.3.5: + /@changesets/get-dependents-graph@1.3.5: resolution: {integrity: sha512-w1eEvnWlbVDIY8mWXqWuYE9oKhvIaBhzqzo4ITSJY9hgoqQ3RoBqwlcAzg11qHxv/b8ReDWnMrpjpKrW6m1ZTA==} dependencies: '@changesets/types': 5.2.1 @@ -2229,7 +2311,7 @@ packages: semver: 5.7.1 dev: true - /@changesets/get-github-info/0.5.2: + /@changesets/get-github-info@0.5.2: resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==} dependencies: dataloader: 1.4.0 @@ -2238,7 +2320,7 @@ packages: - encoding dev: true - /@changesets/get-release-plan/3.0.16: + /@changesets/get-release-plan@3.0.16: resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} dependencies: '@babel/runtime': 7.22.5 @@ -2250,11 +2332,11 @@ packages: '@manypkg/get-packages': 1.1.3 dev: true - /@changesets/get-version-range-type/0.3.2: + /@changesets/get-version-range-type@0.3.2: resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} dev: true - /@changesets/git/2.0.0: + /@changesets/git@2.0.0: resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: '@babel/runtime': 7.22.5 @@ -2266,20 +2348,20 @@ packages: spawndamnit: 2.0.0 dev: true - /@changesets/logger/0.0.5: + /@changesets/logger@0.0.5: resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} dependencies: chalk: 2.4.2 dev: true - /@changesets/parse/0.3.16: + /@changesets/parse@0.3.16: resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==} dependencies: '@changesets/types': 5.2.1 js-yaml: 3.14.1 dev: true - /@changesets/pre/1.0.14: + /@changesets/pre@1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: '@babel/runtime': 7.22.5 @@ -2289,7 +2371,7 @@ packages: fs-extra: 7.0.1 dev: true - /@changesets/read/0.5.9: + /@changesets/read@0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: '@babel/runtime': 7.22.5 @@ -2302,15 +2384,15 @@ packages: p-filter: 2.1.0 dev: true - /@changesets/types/4.1.0: + /@changesets/types@4.1.0: resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} dev: true - /@changesets/types/5.2.1: + /@changesets/types@5.2.1: resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} dev: true - /@changesets/write/0.2.3: + /@changesets/write@0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: '@babel/runtime': 7.22.5 @@ -2320,7 +2402,7 @@ packages: prettier: 2.8.8 dev: true - /@coinbase/wallet-sdk/3.6.6: + /@coinbase/wallet-sdk@3.6.6: resolution: {integrity: sha512-vX+epj/Ttjo7XRwlr3TFUUfW5GTRMvORpERPwiu7z2jl3DSVL4rXLmHt5y6LDPlUVreas2gumdcFbu0fLRG9Jg==} engines: {node: '>= 10.0.0'} dependencies: @@ -2348,7 +2430,7 @@ packages: - utf-8-validate dev: false - /@commitlint/cli/17.6.5: + /@commitlint/cli@17.6.5: resolution: {integrity: sha512-3PQrWr/uo6lzF5k7n5QuosCYnzaxP9qGBp3jhWP0Vmsa7XA6wrl9ccPqfQyXpSbQE3zBROVO3TDqgPKe4tfmLQ==} engines: {node: '>=v14'} hasBin: true @@ -2368,14 +2450,14 @@ packages: - '@swc/wasm' dev: true - /@commitlint/config-conventional/17.6.5: + /@commitlint/config-conventional@17.6.5: resolution: {integrity: sha512-Xl9H9KLl86NZm5CYNTNF9dcz1xelE/EbvhWIWcYxG/rn3UWYWdWmmnX2q6ZduNdLFSGbOxzUpIx61j5zxbeXxg==} engines: {node: '>=v14'} dependencies: conventional-changelog-conventionalcommits: 5.0.0 dev: true - /@commitlint/config-validator/17.4.4: + /@commitlint/config-validator@17.4.4: resolution: {integrity: sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg==} engines: {node: '>=v14'} dependencies: @@ -2383,7 +2465,7 @@ packages: ajv: 8.12.0 dev: true - /@commitlint/ensure/17.4.4: + /@commitlint/ensure@17.4.4: resolution: {integrity: sha512-AHsFCNh8hbhJiuZ2qHv/m59W/GRE9UeOXbkOqxYMNNg9pJ7qELnFcwj5oYpa6vzTSHtPGKf3C2yUFNy1GGHq6g==} engines: {node: '>=v14'} dependencies: @@ -2395,12 +2477,12 @@ packages: lodash.upperfirst: 4.3.1 dev: true - /@commitlint/execute-rule/17.4.0: + /@commitlint/execute-rule@17.4.0: resolution: {integrity: sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==} engines: {node: '>=v14'} dev: true - /@commitlint/format/17.4.4: + /@commitlint/format@17.4.4: resolution: {integrity: sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==} engines: {node: '>=v14'} dependencies: @@ -2408,7 +2490,7 @@ packages: chalk: 4.1.2 dev: true - /@commitlint/is-ignored/17.6.5: + /@commitlint/is-ignored@17.6.5: resolution: {integrity: sha512-CQvAPt9gX7cuUbMrIaIMKczfWJqqr6m8IlJs0F2zYwyyMTQ87QMHIj5jJ5HhOaOkaj6dvTMVGx8Dd1I4xgUuoQ==} engines: {node: '>=v14'} dependencies: @@ -2416,7 +2498,7 @@ packages: semver: 7.5.0 dev: true - /@commitlint/lint/17.6.5: + /@commitlint/lint@17.6.5: resolution: {integrity: sha512-BSJMwkE4LWXrOsiP9KoHG+/heSDfvOL/Nd16+ojTS/DX8HZr8dNl8l3TfVr/d/9maWD8fSegRGtBtsyGuugFrw==} engines: {node: '>=v14'} dependencies: @@ -2426,7 +2508,7 @@ packages: '@commitlint/types': 17.4.4 dev: true - /@commitlint/load/17.5.0: + /@commitlint/load@17.5.0: resolution: {integrity: sha512-l+4W8Sx4CD5rYFsrhHH8HP01/8jEP7kKf33Xlx2Uk2out/UKoKPYMOIRcDH5ppT8UXLMV+x6Wm5osdRKKgaD1Q==} engines: {node: '>=v14'} dependencies: @@ -2437,24 +2519,24 @@ packages: '@types/node': 18.16.18 chalk: 4.1.2 cosmiconfig: 8.2.0 - cosmiconfig-typescript-loader: 4.3.0_f7ftk3vf3beanyfjs3ua3i63me + cosmiconfig-typescript-loader: 4.3.0(@types/node@18.16.18)(cosmiconfig@8.2.0)(ts-node@10.9.1)(typescript@5.1.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1_uc4mglbmg4gsgxc6hysq56typi + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) typescript: 5.1.3 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: true - /@commitlint/message/17.4.2: + /@commitlint/message@17.4.2: resolution: {integrity: sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==} engines: {node: '>=v14'} dev: true - /@commitlint/parse/17.6.5: + /@commitlint/parse@17.6.5: resolution: {integrity: sha512-0zle3bcn1Hevw5Jqpz/FzEWNo2KIzUbc1XyGg6WrWEoa6GH3A1pbqNF6MvE6rjuy6OY23c8stWnb4ETRZyN+Yw==} engines: {node: '>=v14'} dependencies: @@ -2463,7 +2545,7 @@ packages: conventional-commits-parser: 3.2.4 dev: true - /@commitlint/read/17.5.1: + /@commitlint/read@17.5.1: resolution: {integrity: sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg==} engines: {node: '>=v14'} dependencies: @@ -2474,7 +2556,7 @@ packages: minimist: 1.2.8 dev: true - /@commitlint/resolve-extends/17.4.4: + /@commitlint/resolve-extends@17.4.4: resolution: {integrity: sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A==} engines: {node: '>=v14'} dependencies: @@ -2486,7 +2568,7 @@ packages: resolve-global: 1.0.0 dev: true - /@commitlint/rules/17.6.5: + /@commitlint/rules@17.6.5: resolution: {integrity: sha512-uTB3zSmnPyW2qQQH+Dbq2rekjlWRtyrjDo4aLFe63uteandgkI+cc0NhhbBAzcXShzVk0qqp8SlkQMu0mgHg/A==} engines: {node: '>=v14'} dependencies: @@ -2497,33 +2579,33 @@ packages: execa: 5.1.1 dev: true - /@commitlint/to-lines/17.4.0: + /@commitlint/to-lines@17.4.0: resolution: {integrity: sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==} engines: {node: '>=v14'} dev: true - /@commitlint/top-level/17.4.0: + /@commitlint/top-level@17.4.0: resolution: {integrity: sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==} engines: {node: '>=v14'} dependencies: find-up: 5.0.0 dev: true - /@commitlint/types/17.4.4: + /@commitlint/types@17.4.4: resolution: {integrity: sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==} engines: {node: '>=v14'} dependencies: chalk: 4.1.2 dev: true - /@confio/ics23/0.6.8: + /@confio/ics23@0.6.8: resolution: {integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==} dependencies: '@noble/hashes': 1.3.1 protobufjs: 6.11.3 dev: false - /@cosmjs/amino/0.28.13: + /@cosmjs/amino@0.28.13: resolution: {integrity: sha512-IHnH2zGwaY69qT4mVAavr/pfzx6YE+ud1NHJbvVePlbGiz68CXTi5LHR+K0lrKB5mQ7E+ZErWz2mw5U/x+V1wQ==} dependencies: '@cosmjs/crypto': 0.28.13 @@ -2532,7 +2614,7 @@ packages: '@cosmjs/utils': 0.28.13 dev: false - /@cosmjs/amino/0.29.5: + /@cosmjs/amino@0.29.5: resolution: {integrity: sha512-Qo8jpC0BiziTSUqpkNatBcwtKNhCovUnFul9SlT/74JUCdLYaeG5hxr3q1cssQt++l4LvlcpF+OUXL48XjNjLw==} dependencies: '@cosmjs/crypto': 0.29.5 @@ -2541,7 +2623,7 @@ packages: '@cosmjs/utils': 0.29.5 dev: false - /@cosmjs/amino/0.30.1: + /@cosmjs/amino@0.30.1: resolution: {integrity: sha512-yNHnzmvAlkETDYIpeCTdVqgvrdt1qgkOXwuRVi8s27UKI5hfqyE9fJ/fuunXE6ZZPnKkjIecDznmuUOMrMvw4w==} dependencies: '@cosmjs/crypto': 0.30.1 @@ -2550,7 +2632,7 @@ packages: '@cosmjs/utils': 0.30.1 dev: false - /@cosmjs/crypto/0.28.13: + /@cosmjs/crypto@0.28.13: resolution: {integrity: sha512-ynKfM0q/tMBQMHJby6ad8lR3gkgBKaelQhIsCZTjClsnuC7oYT9y3ThSZCUWr7Pa9h0J8ahU2YV2oFWFVWJQzQ==} dependencies: '@cosmjs/encoding': 0.28.13 @@ -2562,7 +2644,7 @@ packages: libsodium-wrappers: 0.7.11 dev: false - /@cosmjs/crypto/0.29.5: + /@cosmjs/crypto@0.29.5: resolution: {integrity: sha512-2bKkaLGictaNL0UipQCL6C1afaisv6k8Wr/GCLx9FqiyFkh9ZgRHDyetD64ZsjnWV/N/D44s/esI+k6oPREaiQ==} dependencies: '@cosmjs/encoding': 0.29.5 @@ -2574,7 +2656,7 @@ packages: libsodium-wrappers: 0.7.11 dev: false - /@cosmjs/crypto/0.30.1: + /@cosmjs/crypto@0.30.1: resolution: {integrity: sha512-rAljUlake3MSXs9xAm87mu34GfBLN0h/1uPPV6jEwClWjNkAMotzjC0ab9MARy5FFAvYHL3lWb57bhkbt2GtzQ==} dependencies: '@cosmjs/encoding': 0.30.1 @@ -2586,7 +2668,7 @@ packages: libsodium-wrappers: 0.7.11 dev: false - /@cosmjs/encoding/0.28.13: + /@cosmjs/encoding@0.28.13: resolution: {integrity: sha512-jtXbAYtV77rLHxoIrjGFsvgGjeTKttuHRv6cvuy3toCZzY7JzTclKH5O2g36IIE4lXwD9xwuhGJ2aa6A3dhNkA==} dependencies: base64-js: 1.5.1 @@ -2594,7 +2676,7 @@ packages: readonly-date: 1.0.0 dev: false - /@cosmjs/encoding/0.29.5: + /@cosmjs/encoding@0.29.5: resolution: {integrity: sha512-G4rGl/Jg4dMCw5u6PEZHZcoHnUBlukZODHbm/wcL4Uu91fkn5jVo5cXXZcvs4VCkArVGrEj/52eUgTZCmOBGWQ==} dependencies: base64-js: 1.5.1 @@ -2602,7 +2684,7 @@ packages: readonly-date: 1.0.0 dev: false - /@cosmjs/encoding/0.30.1: + /@cosmjs/encoding@0.30.1: resolution: {integrity: sha512-rXmrTbgqwihORwJ3xYhIgQFfMSrwLu1s43RIK9I8EBudPx3KmnmyAKzMOVsRDo9edLFNuZ9GIvysUCwQfq3WlQ==} dependencies: base64-js: 1.5.1 @@ -2610,39 +2692,39 @@ packages: readonly-date: 1.0.0 dev: false - /@cosmjs/json-rpc/0.29.5: + /@cosmjs/json-rpc@0.29.5: resolution: {integrity: sha512-C78+X06l+r9xwdM1yFWIpGl03LhB9NdM1xvZpQHwgCOl0Ir/WV8pw48y3Ez2awAoUBRfTeejPe4KvrE6NoIi/w==} dependencies: '@cosmjs/stream': 0.29.5 xstream: 11.14.0 dev: false - /@cosmjs/json-rpc/0.30.1: + /@cosmjs/json-rpc@0.30.1: resolution: {integrity: sha512-pitfC/2YN9t+kXZCbNuyrZ6M8abnCC2n62m+JtU9vQUfaEtVsgy+1Fk4TRQ175+pIWSdBMFi2wT8FWVEE4RhxQ==} dependencies: '@cosmjs/stream': 0.30.1 xstream: 11.14.0 dev: false - /@cosmjs/math/0.28.13: + /@cosmjs/math@0.28.13: resolution: {integrity: sha512-PDpL8W/kbyeWi0mQ2OruyqE8ZUAdxPs1xCbDX3WXJwy2oU+X2UTbkuweJHVpS9CIqmZulBoWQAmlf6t6zr1N/g==} dependencies: bn.js: 5.2.1 dev: false - /@cosmjs/math/0.29.5: + /@cosmjs/math@0.29.5: resolution: {integrity: sha512-2GjKcv+A9f86MAWYLUkjhw1/WpRl2R1BTb3m9qPG7lzMA7ioYff9jY5SPCfafKdxM4TIQGxXQlYGewQL16O68Q==} dependencies: bn.js: 5.2.1 dev: false - /@cosmjs/math/0.30.1: + /@cosmjs/math@0.30.1: resolution: {integrity: sha512-yaoeI23pin9ZiPHIisa6qqLngfnBR/25tSaWpkTm8Cy10MX70UF5oN4+/t1heLaM6SSmRrhk3psRkV4+7mH51Q==} dependencies: bn.js: 5.2.1 dev: false - /@cosmjs/proto-signing/0.28.13: + /@cosmjs/proto-signing@0.28.13: resolution: {integrity: sha512-nSl/2ZLsUJYz3Ad0RY3ihZUgRHIow2OnYqKsESMu+3RA/jTi9bDYhiBu8mNMHI0xrEJry918B2CyI56pOUHdPQ==} dependencies: '@cosmjs/amino': 0.28.13 @@ -2654,7 +2736,7 @@ packages: long: 4.0.0 dev: false - /@cosmjs/proto-signing/0.29.5: + /@cosmjs/proto-signing@0.29.5: resolution: {integrity: sha512-QRrS7CiKaoETdgIqvi/7JC2qCwCR7lnWaUsTzh/XfRy3McLkEd+cXbKAW3cygykv7IN0VAEIhZd2lyIfT8KwNA==} dependencies: '@cosmjs/amino': 0.29.5 @@ -2666,7 +2748,7 @@ packages: long: 4.0.0 dev: false - /@cosmjs/proto-signing/0.30.1: + /@cosmjs/proto-signing@0.30.1: resolution: {integrity: sha512-tXh8pPYXV4aiJVhTKHGyeZekjj+K9s2KKojMB93Gcob2DxUjfKapFYBMJSgfKPuWUPEmyr8Q9km2hplI38ILgQ==} dependencies: '@cosmjs/amino': 0.30.1 @@ -2678,11 +2760,11 @@ packages: long: 4.0.0 dev: false - /@cosmjs/socket/0.29.5: + /@cosmjs/socket@0.29.5: resolution: {integrity: sha512-5VYDupIWbIXq3ftPV1LkS5Ya/T7Ol/AzWVhNxZ79hPe/mBfv1bGau/LqIYOm2zxGlgm9hBHOTmWGqNYDwr9LNQ==} dependencies: '@cosmjs/stream': 0.29.5 - isomorphic-ws: 4.0.1_ws@7.5.9 + isomorphic-ws: 4.0.1(ws@7.5.9) ws: 7.5.9 xstream: 11.14.0 transitivePeerDependencies: @@ -2690,11 +2772,11 @@ packages: - utf-8-validate dev: false - /@cosmjs/socket/0.30.1: + /@cosmjs/socket@0.30.1: resolution: {integrity: sha512-r6MpDL+9N+qOS/D5VaxnPaMJ3flwQ36G+vPvYJsXArj93BjgyFB7BwWwXCQDzZ+23cfChPUfhbINOenr8N2Kow==} dependencies: '@cosmjs/stream': 0.30.1 - isomorphic-ws: 4.0.1_ws@7.5.9 + isomorphic-ws: 4.0.1(ws@7.5.9) ws: 7.5.9 xstream: 11.14.0 transitivePeerDependencies: @@ -2702,7 +2784,7 @@ packages: - utf-8-validate dev: false - /@cosmjs/stargate/0.29.5: + /@cosmjs/stargate@0.29.5: resolution: {integrity: sha512-hjEv8UUlJruLrYGJcUZXM/CziaINOKwfVm2BoSdUnNTMxGvY/jC1ABHKeZUYt9oXHxEJ1n9+pDqzbKc8pT0nBw==} dependencies: '@confio/ics23': 0.6.8 @@ -2723,7 +2805,7 @@ packages: - utf-8-validate dev: false - /@cosmjs/stargate/0.30.1: + /@cosmjs/stargate@0.30.1: resolution: {integrity: sha512-RdbYKZCGOH8gWebO7r6WvNnQMxHrNXInY/gPHPzMjbQF6UatA6fNM2G2tdgS5j5u7FTqlCI10stNXrknaNdzog==} dependencies: '@confio/ics23': 0.6.8 @@ -2744,19 +2826,19 @@ packages: - utf-8-validate dev: false - /@cosmjs/stream/0.29.5: + /@cosmjs/stream@0.29.5: resolution: {integrity: sha512-TToTDWyH1p05GBtF0Y8jFw2C+4783ueDCmDyxOMM6EU82IqpmIbfwcdMOCAm0JhnyMh+ocdebbFvnX/sGKzRAA==} dependencies: xstream: 11.14.0 dev: false - /@cosmjs/stream/0.30.1: + /@cosmjs/stream@0.30.1: resolution: {integrity: sha512-Fg0pWz1zXQdoxQZpdHRMGvUH5RqS6tPv+j9Eh7Q953UjMlrwZVo0YFLC8OTf/HKVf10E4i0u6aM8D69Q6cNkgQ==} dependencies: xstream: 11.14.0 dev: false - /@cosmjs/tendermint-rpc/0.29.5: + /@cosmjs/tendermint-rpc@0.29.5: resolution: {integrity: sha512-ar80twieuAxsy0x2za/aO3kBr2DFPAXDmk2ikDbmkda+qqfXgl35l9CVAAjKRqd9d+cRvbQyb5M4wy6XQpEV6w==} dependencies: '@cosmjs/crypto': 0.29.5 @@ -2775,7 +2857,7 @@ packages: - utf-8-validate dev: false - /@cosmjs/tendermint-rpc/0.30.1: + /@cosmjs/tendermint-rpc@0.30.1: resolution: {integrity: sha512-Z3nCwhXSbPZJ++v85zHObeUggrEHVfm1u18ZRwXxFE9ZMl5mXTybnwYhczuYOl7KRskgwlB+rID0WYACxj4wdQ==} dependencies: '@cosmjs/crypto': 0.30.1 @@ -2794,30 +2876,30 @@ packages: - utf-8-validate dev: false - /@cosmjs/utils/0.28.13: + /@cosmjs/utils@0.28.13: resolution: {integrity: sha512-dVeMBiyg+46x7XBZEfJK8yTihphbCFpjVYmLJVqmTsHfJwymQ65cpyW/C+V/LgWARGK8hWQ/aX9HM5Ao8QmMSg==} dev: false - /@cosmjs/utils/0.29.5: + /@cosmjs/utils@0.29.5: resolution: {integrity: sha512-m7h+RXDUxOzEOGt4P+3OVPX7PuakZT3GBmaM/Y2u+abN3xZkziykD/NvedYFvvCCdQo714XcGl33bwifS9FZPQ==} dev: false - /@cosmjs/utils/0.30.1: + /@cosmjs/utils@0.30.1: resolution: {integrity: sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g==} dev: false - /@cspotcode/source-map-support/0.8.1: + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@emotion/hash/0.8.0: + /@emotion/hash@0.8.0: resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} dev: false - /@eslint-community/eslint-utils/4.4.0_eslint@8.40.0: + /@eslint-community/eslint-utils@4.4.0(eslint@8.40.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2827,7 +2909,7 @@ packages: eslint-visitor-keys: 3.4.1 dev: false - /@eslint-community/eslint-utils/4.4.0_eslint@8.42.0: + /@eslint-community/eslint-utils@4.4.0(eslint@8.42.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2835,18 +2917,17 @@ packages: dependencies: eslint: 8.42.0 eslint-visitor-keys: 3.4.1 - dev: true - /@eslint-community/regexpp/4.5.1: + /@eslint-community/regexpp@4.5.1: resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - /@eslint/eslintrc/2.0.3: + /@eslint/eslintrc@2.0.3: resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) espree: 9.5.2 globals: 13.20.0 ignore: 5.2.4 @@ -2857,23 +2938,22 @@ packages: transitivePeerDependencies: - supports-color - /@eslint/js/8.40.0: + /@eslint/js@8.40.0: resolution: {integrity: sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /@eslint/js/8.42.0: + /@eslint/js@8.42.0: resolution: {integrity: sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /@ethereumjs/rlp/4.0.1: + /@ethereumjs/rlp@4.0.1: resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} engines: {node: '>=14'} hasBin: true dev: false - /@ethereumjs/util/8.0.5: + /@ethereumjs/util@8.0.5: resolution: {integrity: sha512-259rXKK3b3D8HRVdRmlOEi6QFvwxdt304hhrEAmpZhsj7ufXEOTIc9JRZPMnXatKjECokdLNBcDOFBeBSzAIaw==} engines: {node: '>=14'} dependencies: @@ -2882,7 +2962,7 @@ packages: ethereum-cryptography: 1.2.0 dev: false - /@ethersproject/abi/5.7.0: + /@ethersproject/abi@5.7.0: resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} dependencies: '@ethersproject/address': 5.7.0 @@ -2896,7 +2976,7 @@ packages: '@ethersproject/strings': 5.7.0 dev: false - /@ethersproject/abstract-provider/5.7.0: + /@ethersproject/abstract-provider@5.7.0: resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} dependencies: '@ethersproject/bignumber': 5.7.0 @@ -2908,7 +2988,7 @@ packages: '@ethersproject/web': 5.7.1 dev: false - /@ethersproject/abstract-signer/5.7.0: + /@ethersproject/abstract-signer@5.7.0: resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} dependencies: '@ethersproject/abstract-provider': 5.7.0 @@ -2918,7 +2998,7 @@ packages: '@ethersproject/properties': 5.7.0 dev: false - /@ethersproject/address/5.7.0: + /@ethersproject/address@5.7.0: resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} dependencies: '@ethersproject/bignumber': 5.7.0 @@ -2928,20 +3008,20 @@ packages: '@ethersproject/rlp': 5.7.0 dev: false - /@ethersproject/base64/5.7.0: + /@ethersproject/base64@5.7.0: resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} dependencies: '@ethersproject/bytes': 5.7.0 dev: false - /@ethersproject/basex/5.7.0: + /@ethersproject/basex@5.7.0: resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/properties': 5.7.0 dev: false - /@ethersproject/bignumber/5.7.0: + /@ethersproject/bignumber@5.7.0: resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} dependencies: '@ethersproject/bytes': 5.7.0 @@ -2949,19 +3029,19 @@ packages: bn.js: 5.2.1 dev: false - /@ethersproject/bytes/5.7.0: + /@ethersproject/bytes@5.7.0: resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} dependencies: '@ethersproject/logger': 5.7.0 dev: false - /@ethersproject/constants/5.7.0: + /@ethersproject/constants@5.7.0: resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} dependencies: '@ethersproject/bignumber': 5.7.0 dev: false - /@ethersproject/contracts/5.7.0: + /@ethersproject/contracts@5.7.0: resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} dependencies: '@ethersproject/abi': 5.7.0 @@ -2976,7 +3056,7 @@ packages: '@ethersproject/transactions': 5.7.0 dev: false - /@ethersproject/hash/5.7.0: + /@ethersproject/hash@5.7.0: resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} dependencies: '@ethersproject/abstract-signer': 5.7.0 @@ -2990,7 +3070,7 @@ packages: '@ethersproject/strings': 5.7.0 dev: false - /@ethersproject/hdnode/5.7.0: + /@ethersproject/hdnode@5.7.0: resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} dependencies: '@ethersproject/abstract-signer': 5.7.0 @@ -3007,7 +3087,7 @@ packages: '@ethersproject/wordlists': 5.7.0 dev: false - /@ethersproject/json-wallets/5.7.0: + /@ethersproject/json-wallets@5.7.0: resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} dependencies: '@ethersproject/abstract-signer': 5.7.0 @@ -3025,37 +3105,37 @@ packages: scrypt-js: 3.0.1 dev: false - /@ethersproject/keccak256/5.7.0: + /@ethersproject/keccak256@5.7.0: resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} dependencies: '@ethersproject/bytes': 5.7.0 js-sha3: 0.8.0 dev: false - /@ethersproject/logger/5.7.0: + /@ethersproject/logger@5.7.0: resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} dev: false - /@ethersproject/networks/5.7.1: + /@ethersproject/networks@5.7.1: resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} dependencies: '@ethersproject/logger': 5.7.0 dev: false - /@ethersproject/pbkdf2/5.7.0: + /@ethersproject/pbkdf2@5.7.0: resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/sha2': 5.7.0 dev: false - /@ethersproject/properties/5.7.0: + /@ethersproject/properties@5.7.0: resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} dependencies: '@ethersproject/logger': 5.7.0 dev: false - /@ethersproject/providers/5.7.2: + /@ethersproject/providers@5.7.2: resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} dependencies: '@ethersproject/abstract-provider': 5.7.0 @@ -3083,21 +3163,21 @@ packages: - utf-8-validate dev: false - /@ethersproject/random/5.7.0: + /@ethersproject/random@5.7.0: resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 dev: false - /@ethersproject/rlp/5.7.0: + /@ethersproject/rlp@5.7.0: resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 dev: false - /@ethersproject/sha2/5.7.0: + /@ethersproject/sha2@5.7.0: resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} dependencies: '@ethersproject/bytes': 5.7.0 @@ -3105,7 +3185,7 @@ packages: hash.js: 1.1.7 dev: false - /@ethersproject/signing-key/5.7.0: + /@ethersproject/signing-key@5.7.0: resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} dependencies: '@ethersproject/bytes': 5.7.0 @@ -3116,7 +3196,7 @@ packages: hash.js: 1.1.7 dev: false - /@ethersproject/solidity/5.7.0: + /@ethersproject/solidity@5.7.0: resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} dependencies: '@ethersproject/bignumber': 5.7.0 @@ -3127,7 +3207,7 @@ packages: '@ethersproject/strings': 5.7.0 dev: false - /@ethersproject/strings/5.7.0: + /@ethersproject/strings@5.7.0: resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} dependencies: '@ethersproject/bytes': 5.7.0 @@ -3135,7 +3215,7 @@ packages: '@ethersproject/logger': 5.7.0 dev: false - /@ethersproject/transactions/5.7.0: + /@ethersproject/transactions@5.7.0: resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} dependencies: '@ethersproject/address': 5.7.0 @@ -3149,7 +3229,7 @@ packages: '@ethersproject/signing-key': 5.7.0 dev: false - /@ethersproject/units/5.7.0: + /@ethersproject/units@5.7.0: resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} dependencies: '@ethersproject/bignumber': 5.7.0 @@ -3157,7 +3237,7 @@ packages: '@ethersproject/logger': 5.7.0 dev: false - /@ethersproject/wallet/5.7.0: + /@ethersproject/wallet@5.7.0: resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} dependencies: '@ethersproject/abstract-provider': 5.7.0 @@ -3177,7 +3257,7 @@ packages: '@ethersproject/wordlists': 5.7.0 dev: false - /@ethersproject/web/5.7.1: + /@ethersproject/web@5.7.1: resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} dependencies: '@ethersproject/base64': 5.7.0 @@ -3187,7 +3267,7 @@ packages: '@ethersproject/strings': 5.7.0 dev: false - /@ethersproject/wordlists/5.7.0: + /@ethersproject/wordlists@5.7.0: resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} dependencies: '@ethersproject/bytes': 5.7.0 @@ -3197,7 +3277,7 @@ packages: '@ethersproject/strings': 5.7.0 dev: false - /@evmos/address-converter/0.1.9: + /@evmos/address-converter@0.1.9: resolution: {integrity: sha512-Sbl4hHo/4UkMgmdwBDN/GNMhDeOlc5CyRCLFMajTVKyT0Sf269RQsuntD+P48EJWIpBjw3q6+laVZ9hrpfB4Nw==} requiresBuild: true dependencies: @@ -3207,7 +3287,7 @@ packages: shx: 0.3.4 dev: false - /@evmos/eip712/0.2.11: + /@evmos/eip712@0.2.11: resolution: {integrity: sha512-8iGZ03PqhxYXZycAvl/GJ6b78qVPkzP7A42a/d3zeZXtzRpRwOpxHmBJr5xmsZur+eqZlgAqkmZ8Q+vEh+ICgA==} requiresBuild: true dependencies: @@ -3220,7 +3300,7 @@ packages: shx: 0.3.4 dev: false - /@evmos/proto/0.1.27: + /@evmos/proto@0.1.27: resolution: {integrity: sha512-lBOZhQFsIUz3on/4H+Rj1aDj2OWaZnz7OJjUFklkPZQ3tEtAATBOQiVCjkPvIX3jh/H5DACahmi8BmhcNF+7UA==} requiresBuild: true dependencies: @@ -3230,7 +3310,7 @@ packages: shx: 0.3.4 dev: false - /@evmos/provider/0.2.8: + /@evmos/provider@0.2.8: resolution: {integrity: sha512-LOml6RtabQafhNn38IaREXB2oClHTUBYF0VttQRB3qxaOEqBy9WbH0Dz7fvqqGFbcanMdQKhBQ4NfNMeslWQgQ==} requiresBuild: true dependencies: @@ -3238,7 +3318,7 @@ packages: shx: 0.3.4 dev: false - /@evmos/transactions/0.2.13: + /@evmos/transactions@0.2.13: resolution: {integrity: sha512-O+SoWUXkg3XoP80PB01BSKBh+HMGZuWbQ2M07yscGfSxgmSsKrTPliOmai3yM8CnDnzUmPSNZk/oWaKaCDl8kw==} requiresBuild: true dependencies: @@ -3248,36 +3328,35 @@ packages: shx: 0.3.4 dev: false - /@humanwhocodes/config-array/0.11.10: + /@humanwhocodes/config-array@0.11.10: resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: true - /@humanwhocodes/config-array/0.11.8: + /@humanwhocodes/config-array@0.11.8: resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color dev: false - /@humanwhocodes/module-importer/1.0.1: + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - /@humanwhocodes/object-schema/1.2.1: + /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - /@istanbuljs/load-nyc-config/1.1.0: + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} dependencies: @@ -3288,12 +3367,12 @@ packages: resolve-from: 5.0.0 dev: true - /@istanbuljs/schema/0.1.3: + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} dev: true - /@jest/console/29.5.0: + /@jest/console@29.5.0: resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3305,7 +3384,7 @@ packages: slash: 3.0.0 dev: true - /@jest/core/29.5.0_ts-node@10.9.1: + /@jest/core@29.5.0(ts-node@10.9.1): resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -3326,7 +3405,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.5.0 - jest-config: 29.5.0_divpegkz2qugvd2racsiwsfxku + jest-config: 29.5.0(@types/node@20.2.5)(ts-node@10.9.1) jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -3347,7 +3426,7 @@ packages: - ts-node dev: true - /@jest/environment/29.5.0: + /@jest/environment@29.5.0: resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3357,14 +3436,14 @@ packages: jest-mock: 29.5.0 dev: true - /@jest/expect-utils/29.5.0: + /@jest/expect-utils@29.5.0: resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.4.3 dev: true - /@jest/expect/29.5.0: + /@jest/expect@29.5.0: resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3374,7 +3453,7 @@ packages: - supports-color dev: true - /@jest/fake-timers/29.5.0: + /@jest/fake-timers@29.5.0: resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3386,7 +3465,7 @@ packages: jest-util: 29.5.0 dev: true - /@jest/globals/29.5.0: + /@jest/globals@29.5.0: resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3398,7 +3477,7 @@ packages: - supports-color dev: true - /@jest/reporters/29.5.0: + /@jest/reporters@29.5.0: resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -3435,14 +3514,14 @@ packages: - supports-color dev: true - /@jest/schemas/29.4.3: + /@jest/schemas@29.4.3: resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.25.24 dev: true - /@jest/source-map/29.4.3: + /@jest/source-map@29.4.3: resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3451,7 +3530,7 @@ packages: graceful-fs: 4.2.11 dev: true - /@jest/test-result/29.5.0: + /@jest/test-result@29.5.0: resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3461,7 +3540,7 @@ packages: collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/29.5.0: + /@jest/test-sequencer@29.5.0: resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3471,7 +3550,7 @@ packages: slash: 3.0.0 dev: true - /@jest/transform/29.5.0: + /@jest/transform@29.5.0: resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3494,7 +3573,7 @@ packages: - supports-color dev: true - /@jest/types/29.5.0: + /@jest/types@29.5.0: resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3506,7 +3585,7 @@ packages: chalk: 4.1.2 dev: true - /@jridgewell/gen-mapping/0.3.2: + /@jridgewell/gen-mapping@0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} dependencies: @@ -3515,67 +3594,61 @@ packages: '@jridgewell/trace-mapping': 0.3.18 dev: true - /@jridgewell/gen-mapping/0.3.3: + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.18 - dev: true - /@jridgewell/resolve-uri/3.1.0: + /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} - dev: true - /@jridgewell/resolve-uri/3.1.1: + /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/set-array/1.1.2: + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - dev: true - /@jridgewell/source-map/0.3.2: + /@jridgewell/source-map@0.3.2: resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} dependencies: '@jridgewell/gen-mapping': 0.3.2 '@jridgewell/trace-mapping': 0.3.17 dev: true - /@jridgewell/sourcemap-codec/1.4.14: + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: true - /@jridgewell/sourcemap-codec/1.4.15: + /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true - /@jridgewell/trace-mapping/0.3.17: + /@jridgewell/trace-mapping@0.3.17: resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@jridgewell/trace-mapping/0.3.18: + /@jridgewell/trace-mapping@0.3.18: resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - /@jridgewell/trace-mapping/0.3.9: + /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@json-rpc-tools/provider/1.7.6: + /@json-rpc-tools/provider@1.7.6: resolution: {integrity: sha512-z7D3xvJ33UfCGv77n40lbzOYjZKVM3k2+5cV7xS8G6SCvKTzMkhkUYuD/qzQUNT4cG/lv0e9mRToweEEVLVVmA==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dependencies: @@ -3589,14 +3662,14 @@ packages: - utf-8-validate dev: false - /@json-rpc-tools/types/1.7.6: + /@json-rpc-tools/types@1.7.6: resolution: {integrity: sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dependencies: keyvaluestorage-interface: 1.0.0 dev: false - /@json-rpc-tools/utils/1.7.6: + /@json-rpc-tools/utils@1.7.6: resolution: {integrity: sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dependencies: @@ -3604,21 +3677,21 @@ packages: '@pedrouid/environment': 1.0.1 dev: false - /@ledgerhq/connect-kit-loader/1.0.2: + /@ledgerhq/connect-kit-loader@1.0.2: resolution: {integrity: sha512-TQ21IjcZOw/scqypaVFY3jHVqI7X7Hta3qN/us6FvTol3AY06UmrhhXGww0E9xHmAbdX241ddwXEiMBSQZFr9g==} dev: false - /@lit-labs/ssr-dom-shim/1.1.1: + /@lit-labs/ssr-dom-shim@1.1.1: resolution: {integrity: sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==} dev: false - /@lit/reactive-element/1.6.2: + /@lit/reactive-element@1.6.2: resolution: {integrity: sha512-rDfl+QnCYjuIGf5xI2sVJWdYIi56CTCwWa+nidKYX6oIuBYwUbT/vX4qbUDlHiZKJ/3FRNQ/tWJui44p6/stSA==} dependencies: '@lit-labs/ssr-dom-shim': 1.1.1 dev: false - /@manypkg/find-root/1.1.0: + /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: '@babel/runtime': 7.22.5 @@ -3627,7 +3700,7 @@ packages: fs-extra: 8.1.0 dev: true - /@manypkg/get-packages/1.1.3: + /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: '@babel/runtime': 7.22.5 @@ -3638,7 +3711,7 @@ packages: read-yaml-file: 1.1.0 dev: true - /@metamask/eth-sig-util/4.0.1: + /@metamask/eth-sig-util@4.0.1: resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} engines: {node: '>=12.0.0'} dependencies: @@ -3649,7 +3722,7 @@ packages: tweetnacl-util: 0.15.1 dev: false - /@metamask/eth-sig-util/5.0.2: + /@metamask/eth-sig-util@5.0.2: resolution: {integrity: sha512-RU6fG/H6/UlBol221uBkq5C7w3TwLK611nEZliO2u+kO0vHKGBXnIPlhI0tzKUigjhUeOd9mhCNbNvhh0LKt9Q==} engines: {node: '>=14.0.0'} dependencies: @@ -3661,23 +3734,23 @@ packages: tweetnacl-util: 0.15.1 dev: false - /@metamask/safe-event-emitter/2.0.0: + /@metamask/safe-event-emitter@2.0.0: resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} dev: false - /@metamask/utils/3.6.0: + /@metamask/utils@3.6.0: resolution: {integrity: sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==} engines: {node: '>=14.0.0'} dependencies: '@types/debug': 4.1.8 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) semver: 7.5.1 superstruct: 1.0.3 transitivePeerDependencies: - supports-color dev: false - /@motionone/animation/10.15.1: + /@motionone/animation@10.15.1: resolution: {integrity: sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==} dependencies: '@motionone/easing': 10.15.1 @@ -3686,7 +3759,7 @@ packages: tslib: 2.5.3 dev: false - /@motionone/dom/10.16.2: + /@motionone/dom@10.16.2: resolution: {integrity: sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg==} dependencies: '@motionone/animation': 10.15.1 @@ -3697,14 +3770,14 @@ packages: tslib: 2.5.3 dev: false - /@motionone/easing/10.15.1: + /@motionone/easing@10.15.1: resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==} dependencies: '@motionone/utils': 10.15.1 tslib: 2.5.3 dev: false - /@motionone/generators/10.15.1: + /@motionone/generators@10.15.1: resolution: {integrity: sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==} dependencies: '@motionone/types': 10.15.1 @@ -3712,18 +3785,18 @@ packages: tslib: 2.5.3 dev: false - /@motionone/svelte/10.16.2: + /@motionone/svelte@10.16.2: resolution: {integrity: sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==} dependencies: '@motionone/dom': 10.16.2 tslib: 2.5.3 dev: false - /@motionone/types/10.15.1: + /@motionone/types@10.15.1: resolution: {integrity: sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==} dev: false - /@motionone/utils/10.15.1: + /@motionone/utils@10.15.1: resolution: {integrity: sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==} dependencies: '@motionone/types': 10.15.1 @@ -3731,28 +3804,28 @@ packages: tslib: 2.5.3 dev: false - /@motionone/vue/10.16.2: + /@motionone/vue@10.16.2: resolution: {integrity: sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==} dependencies: '@motionone/dom': 10.16.2 tslib: 2.5.3 dev: false - /@next/env/13.1.6: + /@next/env@13.1.6: resolution: {integrity: sha512-s+W9Fdqh5MFk6ECrbnVmmAOwxKQuhGMT7xXHrkYIBMBcTiOqNWhv5KbJIboKR5STXxNXl32hllnvKaffzFaWQg==} dev: false - /@next/eslint-plugin-next/13.1.6: + /@next/eslint-plugin-next@13.1.6: resolution: {integrity: sha512-o7cauUYsXjzSJkay8wKjpKJf2uLzlggCsGUkPu3lP09Pv97jYlekTC20KJrjQKmSv5DXV0R/uks2ZXhqjNkqAw==} dependencies: glob: 7.1.7 dev: false - /@next/font/13.1.6: + /@next/font@13.1.6: resolution: {integrity: sha512-AITjmeb1RgX1HKMCiA39ztx2mxeAyxl4ljv2UoSBUGAbFFMg8MO7YAvjHCgFhD39hL7YTbFjol04e/BPBH5RzQ==} dev: false - /@next/swc-android-arm-eabi/13.1.6: + /@next/swc-android-arm-eabi@13.1.6: resolution: {integrity: sha512-F3/6Z8LH/pGlPzR1AcjPFxx35mPqjE5xZcf+IL+KgbW9tMkp7CYi1y7qKrEWU7W4AumxX/8OINnDQWLiwLasLQ==} engines: {node: '>= 10'} cpu: [arm] @@ -3761,7 +3834,7 @@ packages: dev: false optional: true - /@next/swc-android-arm64/13.1.6: + /@next/swc-android-arm64@13.1.6: resolution: {integrity: sha512-cMwQjnB8vrYkWyK/H0Rf2c2pKIH4RGjpKUDvbjVAit6SbwPDpmaijLio0LWFV3/tOnY6kvzbL62lndVA0mkYpw==} engines: {node: '>= 10'} cpu: [arm64] @@ -3770,7 +3843,7 @@ packages: dev: false optional: true - /@next/swc-darwin-arm64/13.1.6: + /@next/swc-darwin-arm64@13.1.6: resolution: {integrity: sha512-KKRQH4DDE4kONXCvFMNBZGDb499Hs+xcFAwvj+rfSUssIDrZOlyfJNy55rH5t2Qxed1e4K80KEJgsxKQN1/fyw==} engines: {node: '>= 10'} cpu: [arm64] @@ -3779,7 +3852,7 @@ packages: dev: false optional: true - /@next/swc-darwin-x64/13.1.6: + /@next/swc-darwin-x64@13.1.6: resolution: {integrity: sha512-/uOky5PaZDoaU99ohjtNcDTJ6ks/gZ5ykTQDvNZDjIoCxFe3+t06bxsTPY6tAO6uEAw5f6vVFX5H5KLwhrkZCA==} engines: {node: '>= 10'} cpu: [x64] @@ -3788,7 +3861,7 @@ packages: dev: false optional: true - /@next/swc-freebsd-x64/13.1.6: + /@next/swc-freebsd-x64@13.1.6: resolution: {integrity: sha512-qaEALZeV7to6weSXk3Br80wtFQ7cFTpos/q+m9XVRFggu+8Ib895XhMWdJBzew6aaOcMvYR6KQ6JmHA2/eMzWw==} engines: {node: '>= 10'} cpu: [x64] @@ -3797,7 +3870,7 @@ packages: dev: false optional: true - /@next/swc-linux-arm-gnueabihf/13.1.6: + /@next/swc-linux-arm-gnueabihf@13.1.6: resolution: {integrity: sha512-OybkbC58A1wJ+JrJSOjGDvZzrVEQA4sprJejGqMwiZyLqhr9Eo8FXF0y6HL+m1CPCpPhXEHz/2xKoYsl16kNqw==} engines: {node: '>= 10'} cpu: [arm] @@ -3806,7 +3879,7 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu/13.1.6: + /@next/swc-linux-arm64-gnu@13.1.6: resolution: {integrity: sha512-yCH+yDr7/4FDuWv6+GiYrPI9kcTAO3y48UmaIbrKy8ZJpi7RehJe3vIBRUmLrLaNDH3rY1rwoHi471NvR5J5NQ==} engines: {node: '>= 10'} cpu: [arm64] @@ -3815,7 +3888,7 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl/13.1.6: + /@next/swc-linux-arm64-musl@13.1.6: resolution: {integrity: sha512-ECagB8LGX25P9Mrmlc7Q/TQBb9rGScxHbv/kLqqIWs2fIXy6Y/EiBBiM72NTwuXUFCNrWR4sjUPSooVBJJ3ESQ==} engines: {node: '>= 10'} cpu: [arm64] @@ -3824,7 +3897,7 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu/13.1.6: + /@next/swc-linux-x64-gnu@13.1.6: resolution: {integrity: sha512-GT5w2mruk90V/I5g6ScuueE7fqj/d8Bui2qxdw6lFxmuTgMeol5rnzAv4uAoVQgClOUO/MULilzlODg9Ib3Y4Q==} engines: {node: '>= 10'} cpu: [x64] @@ -3833,7 +3906,7 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl/13.1.6: + /@next/swc-linux-x64-musl@13.1.6: resolution: {integrity: sha512-keFD6KvwOPzmat4TCnlnuxJCQepPN+8j3Nw876FtULxo8005Y9Ghcl7ACcR8GoiKoddAq8gxNBrpjoxjQRHeAQ==} engines: {node: '>= 10'} cpu: [x64] @@ -3842,7 +3915,7 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc/13.1.6: + /@next/swc-win32-arm64-msvc@13.1.6: resolution: {integrity: sha512-OwertslIiGQluFvHyRDzBCIB07qJjqabAmINlXUYt7/sY7Q7QPE8xVi5beBxX/rxTGPIbtyIe3faBE6Z2KywhQ==} engines: {node: '>= 10'} cpu: [arm64] @@ -3851,7 +3924,7 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc/13.1.6: + /@next/swc-win32-ia32-msvc@13.1.6: resolution: {integrity: sha512-g8zowiuP8FxUR9zslPmlju7qYbs2XBtTLVSxVikPtUDQedhcls39uKYLvOOd1JZg0ehyhopobRoH1q+MHlIN/w==} engines: {node: '>= 10'} cpu: [ia32] @@ -3860,7 +3933,7 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc/13.1.6: + /@next/swc-win32-x64-msvc@13.1.6: resolution: {integrity: sha512-Ls2OL9hi3YlJKGNdKv8k3X/lLgc3VmLG3a/DeTkAd+lAituJp8ZHmRmm9f9SL84fT3CotlzcgbdaCDfFwFA6bA==} engines: {node: '>= 10'} cpu: [x64] @@ -3869,64 +3942,64 @@ packages: dev: false optional: true - /@nicolo-ribaudo/eslint-scope-5-internals/5.1.1-v1: + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} dependencies: eslint-scope: 5.1.1 dev: true - /@noble/curves/1.0.0: + /@noble/curves@1.0.0: resolution: {integrity: sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==} dependencies: '@noble/hashes': 1.3.0 dev: false - /@noble/curves/1.1.0: + /@noble/curves@1.1.0: resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} dependencies: '@noble/hashes': 1.3.1 dev: false - /@noble/hashes/1.2.0: + /@noble/hashes@1.2.0: resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} dev: false - /@noble/hashes/1.3.0: + /@noble/hashes@1.3.0: resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} dev: false - /@noble/hashes/1.3.1: + /@noble/hashes@1.3.1: resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} engines: {node: '>= 16'} dev: false - /@noble/secp256k1/1.7.1: + /@noble/secp256k1@1.7.1: resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} dev: false - /@nodelib/fs.scandir/2.1.5: + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - /@nodelib/fs.stat/2.0.5: + /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - /@nodelib/fs.walk/1.2.8: + /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - /@pedrouid/environment/1.0.1: + /@pedrouid/environment@1.0.1: resolution: {integrity: sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug==} dev: false - /@pkgr/utils/2.3.1: + /@pkgr/utils@2.3.1: resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: @@ -3938,50 +4011,50 @@ packages: tslib: 2.5.3 dev: false - /@protobufjs/aspromise/1.1.2: + /@protobufjs/aspromise@1.1.2: resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} dev: false - /@protobufjs/base64/1.1.2: + /@protobufjs/base64@1.1.2: resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} dev: false - /@protobufjs/codegen/2.0.4: + /@protobufjs/codegen@2.0.4: resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} dev: false - /@protobufjs/eventemitter/1.1.0: + /@protobufjs/eventemitter@1.1.0: resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} dev: false - /@protobufjs/fetch/1.1.0: + /@protobufjs/fetch@1.1.0: resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/inquire': 1.1.0 dev: false - /@protobufjs/float/1.0.2: + /@protobufjs/float@1.0.2: resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} dev: false - /@protobufjs/inquire/1.1.0: + /@protobufjs/inquire@1.1.0: resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} dev: false - /@protobufjs/path/1.1.2: + /@protobufjs/path@1.1.2: resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} dev: false - /@protobufjs/pool/1.1.0: + /@protobufjs/pool@1.1.0: resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} dev: false - /@protobufjs/utf8/1.1.0: + /@protobufjs/utf8@1.1.0: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} dev: false - /@rainbow-me/rainbowkit/1.0.2_osz7gkuvw6gybth6kg2yker4la: + /@rainbow-me/rainbowkit@1.0.2(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0): resolution: {integrity: sha512-CIcEekBBlYiqg2oNS7LZqqN882OfJ0T1ORe4c46dscSuMCaX9sdbviQR1m8LoA4KocSCzSxOPAnfoVN8eC/HNA==} engines: {node: '>=12.4'} peerDependencies: @@ -3992,19 +4065,19 @@ packages: dependencies: '@vanilla-extract/css': 1.9.1 '@vanilla-extract/dynamic': 2.0.2 - '@vanilla-extract/sprinkles': 1.5.0_@vanilla-extract+css@1.9.1 + '@vanilla-extract/sprinkles': 1.5.0(@vanilla-extract/css@1.9.1) clsx: 1.1.1 qrcode: 1.5.0 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - react-remove-scroll: 2.5.4_s3k22s5ab4eu26xuel7hiaraxy - viem: 1.0.6_typescript@4.9.5 - wagmi: 1.2.0_sta5t6m4653sw6oxbjskfbw63m + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.4(@types/react@18.2.6)(react@18.2.0) + viem: 1.0.6(typescript@4.9.5) + wagmi: 1.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(viem@1.0.6) transitivePeerDependencies: - '@types/react' dev: false - /@rollup/plugin-alias/4.0.4_rollup@2.79.1: + /@rollup/plugin-alias@4.0.4(rollup@2.79.1): resolution: {integrity: sha512-0CaAY238SMtYAWEXXptWSR8iz8NYZnH7zNBKuJ14xFJSGwLtPgjvXYsoApAHfzYXXH1ejxpVw7WlHss3zhh9SQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -4017,7 +4090,7 @@ packages: slash: 4.0.0 dev: true - /@rollup/plugin-babel/5.3.1_7j3zdoaddfjq5alrlemmlxmxci: + /@rollup/plugin-babel@5.3.1(@babel/core@7.22.5)(rollup@2.79.1): resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -4030,17 +4103,17 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-module-imports': 7.22.5 - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) rollup: 2.79.1 dev: true - /@rollup/plugin-commonjs/22.0.2_rollup@2.79.1: + /@rollup/plugin-commonjs@22.0.2(rollup@2.79.1): resolution: {integrity: sha512-//NdP6iIwPbMTcazYsiBMbJW7gfmpHom33u1beiIoHDEM0Q9clvtQB1T0efvMqHeKsGohiHo97BCPCkBXdscwg==} engines: {node: '>= 12.0.0'} peerDependencies: rollup: ^2.68.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 7.2.3 @@ -4050,33 +4123,33 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-inject/4.0.4_rollup@2.79.1: + /@rollup/plugin-inject@4.0.4(rollup@2.79.1): resolution: {integrity: sha512-4pbcU4J/nS+zuHk+c+OL3WtmEQhqxlZ9uqfjQMQDOHOPld7PsCd8k5LWs8h5wjwJN7MgnAn768F2sDxEP4eNFQ==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) estree-walker: 2.0.2 magic-string: 0.25.9 rollup: 2.79.1 dev: true - /@rollup/plugin-json/4.1.0_rollup@2.79.1: + /@rollup/plugin-json@4.1.0(rollup@2.79.1): resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) rollup: 2.79.1 dev: true - /@rollup/plugin-node-resolve/13.3.0_rollup@2.79.1: + /@rollup/plugin-node-resolve@13.3.0(rollup@2.79.1): resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^2.42.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) '@types/resolve': 1.17.1 deepmerge: 4.3.1 is-builtin-module: 3.2.1 @@ -4085,7 +4158,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-strip/3.0.2_rollup@2.79.1: + /@rollup/plugin-strip@3.0.2(rollup@2.79.1): resolution: {integrity: sha512-L8Whin/DB5XsLE586+xcud6yX/pMVUlfalA999uAsC+dtwmBHSiUwtAxMl3eVvykX3N5BhdeAjStqDlzMmfUXw==} engines: {node: '>=14.0.0'} peerDependencies: @@ -4094,13 +4167,13 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2_rollup@2.79.1 + '@rollup/pluginutils': 5.0.2(rollup@2.79.1) estree-walker: 2.0.2 magic-string: 0.27.0 rollup: 2.79.1 dev: true - /@rollup/plugin-typescript/8.5.0_x5fg2s3voyx5jrtpaswheakfcm: + /@rollup/plugin-typescript@8.5.0(rollup@2.79.1)(typescript@4.9.5): resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} engines: {node: '>=8.0.0'} peerDependencies: @@ -4111,13 +4184,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) resolve: 1.22.2 rollup: 2.79.1 - typescript: 5.1.3 + typescript: 4.9.5 dev: true - /@rollup/plugin-wasm/6.1.2_rollup@2.79.1: + /@rollup/plugin-wasm@6.1.2(rollup@2.79.1): resolution: {integrity: sha512-YdrQ7zfnZ54Y+6raCev3tR1PrhQGxYKSTajGylhyP0oBacouuNo6KcNCk+pYKw9M98jxRWLFFca/udi76IDXzg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -4129,7 +4202,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/pluginutils/3.1.0_rollup@2.79.1: + /@rollup/pluginutils@3.1.0(rollup@2.79.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -4141,7 +4214,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/pluginutils/5.0.2_rollup@2.79.1: + /@rollup/pluginutils@5.0.2(rollup@2.79.1): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -4156,15 +4229,15 @@ packages: rollup: 2.79.1 dev: true - /@rushstack/eslint-patch/1.2.0: + /@rushstack/eslint-patch@1.2.0: resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} dev: false - /@rushstack/eslint-patch/1.3.1: + /@rushstack/eslint-patch@1.3.1: resolution: {integrity: sha512-RkmuBcqiNioeeBKbgzMlOdreUkJfYaSjwgx9XDgGGpjvWgyaxWvDmZVSN9CS6LjEASadhgPv2BcFp+SeouWXXA==} dev: true - /@safe-global/safe-apps-provider/0.15.2: + /@safe-global/safe-apps-provider@0.15.2: resolution: {integrity: sha512-BaoGAuY7h6jLBL7P+M6b7hd+1QfTv8uMyNF3udhiNUwA0XwfzH2ePQB13IEV3Mn7wdcIMEEUDS5kHbtAsj60qQ==} dependencies: '@safe-global/safe-apps-sdk': 7.9.0 @@ -4175,7 +4248,7 @@ packages: - utf-8-validate dev: false - /@safe-global/safe-apps-sdk/7.11.0: + /@safe-global/safe-apps-sdk@7.11.0: resolution: {integrity: sha512-RDamzPM1Lhhiiz0O+Dn6FkFqIh47jmZX+HCV/BBnBBOSKfBJE//IGD3+02zMgojXHTikQAburdPes9qmH1SA1A==} dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.7.3 @@ -4186,7 +4259,7 @@ packages: - utf-8-validate dev: false - /@safe-global/safe-apps-sdk/7.9.0: + /@safe-global/safe-apps-sdk@7.9.0: resolution: {integrity: sha512-S2EI+JL8ocSgE3uGNaDZCzKmwfhtxXZFDUP76vN0FeaY35itFMyi8F0Vhxu0XnZm3yLzJE3tp5px6GhuQFLU6w==} dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.7.3 @@ -4197,7 +4270,7 @@ packages: - utf-8-validate dev: false - /@safe-global/safe-gateway-typescript-sdk/3.7.3: + /@safe-global/safe-gateway-typescript-sdk@3.7.3: resolution: {integrity: sha512-O6JCgXNZWG0Vv8FnOEjKfcbsP0WxGvoPJk5ufqUrsyBlHup16It6oaLnn+25nXFLBZOHI1bz8429JlqAc2t2hg==} dependencies: cross-fetch: 3.1.6 @@ -4205,11 +4278,11 @@ packages: - encoding dev: false - /@scure/base/1.1.1: + /@scure/base@1.1.1: resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==} dev: false - /@scure/bip32/1.1.5: + /@scure/bip32@1.1.5: resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} dependencies: '@noble/hashes': 1.2.0 @@ -4217,7 +4290,7 @@ packages: '@scure/base': 1.1.1 dev: false - /@scure/bip32/1.3.0: + /@scure/bip32@1.3.0: resolution: {integrity: sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==} dependencies: '@noble/curves': 1.0.0 @@ -4225,44 +4298,44 @@ packages: '@scure/base': 1.1.1 dev: false - /@scure/bip39/1.1.1: + /@scure/bip39@1.1.1: resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} dependencies: '@noble/hashes': 1.2.0 '@scure/base': 1.1.1 dev: false - /@scure/bip39/1.2.0: + /@scure/bip39@1.2.0: resolution: {integrity: sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==} dependencies: '@noble/hashes': 1.3.0 '@scure/base': 1.1.1 dev: false - /@sinclair/typebox/0.25.24: + /@sinclair/typebox@0.25.24: resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} dev: true - /@sinonjs/commons/3.0.0: + /@sinonjs/commons@3.0.0: resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} dependencies: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers/10.2.0: + /@sinonjs/fake-timers@10.2.0: resolution: {integrity: sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==} dependencies: '@sinonjs/commons': 3.0.0 dev: true - /@solana/buffer-layout/4.0.1: + /@solana/buffer-layout@4.0.1: resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} engines: {node: '>=5.10'} dependencies: buffer: 6.0.3 dev: false - /@solana/web3.js/1.77.3: + /@solana/web3.js@1.77.3: resolution: {integrity: sha512-PHaO0BdoiQRPpieC1p31wJsBaxwIOWLh8j2ocXNKX8boCQVldt26Jqm2tZE4KlrvnCIV78owPLv1pEUgqhxZ3w==} dependencies: '@babel/runtime': 7.22.5 @@ -4287,28 +4360,21 @@ packages: - utf-8-validate dev: false - /@stablelib/aead/1.0.1: + /@stablelib/aead@1.0.1: resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} dev: false - /@stablelib/binary/1.0.1: + /@stablelib/binary@1.0.1: resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} dependencies: '@stablelib/int': 1.0.1 dev: false - /@stablelib/bytes/1.0.1: + /@stablelib/bytes@1.0.1: resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} dev: false - /@stablelib/chacha/1.0.1: - resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} - dependencies: - '@stablelib/binary': 1.0.1 - '@stablelib/wipe': 1.0.1 - dev: false - - /@stablelib/chacha20poly1305/1.0.1: + /@stablelib/chacha20poly1305@1.0.1: resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} dependencies: '@stablelib/aead': 1.0.1 @@ -4319,11 +4385,18 @@ packages: '@stablelib/wipe': 1.0.1 dev: false - /@stablelib/constant-time/1.0.1: + /@stablelib/chacha@1.0.1: + resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/constant-time@1.0.1: resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} dev: false - /@stablelib/ed25519/1.0.3: + /@stablelib/ed25519@1.0.3: resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} dependencies: '@stablelib/random': 1.0.2 @@ -4331,11 +4404,11 @@ packages: '@stablelib/wipe': 1.0.1 dev: false - /@stablelib/hash/1.0.1: + /@stablelib/hash@1.0.1: resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} dev: false - /@stablelib/hkdf/1.0.1: + /@stablelib/hkdf@1.0.1: resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} dependencies: '@stablelib/hash': 1.0.1 @@ -4343,7 +4416,7 @@ packages: '@stablelib/wipe': 1.0.1 dev: false - /@stablelib/hmac/1.0.1: + /@stablelib/hmac@1.0.1: resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} dependencies: '@stablelib/constant-time': 1.0.1 @@ -4351,31 +4424,31 @@ packages: '@stablelib/wipe': 1.0.1 dev: false - /@stablelib/int/1.0.1: + /@stablelib/int@1.0.1: resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} dev: false - /@stablelib/keyagreement/1.0.1: + /@stablelib/keyagreement@1.0.1: resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} dependencies: '@stablelib/bytes': 1.0.1 dev: false - /@stablelib/poly1305/1.0.1: + /@stablelib/poly1305@1.0.1: resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} dependencies: '@stablelib/constant-time': 1.0.1 '@stablelib/wipe': 1.0.1 dev: false - /@stablelib/random/1.0.2: + /@stablelib/random@1.0.2: resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} dependencies: '@stablelib/binary': 1.0.1 '@stablelib/wipe': 1.0.1 dev: false - /@stablelib/sha256/1.0.1: + /@stablelib/sha256@1.0.1: resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} dependencies: '@stablelib/binary': 1.0.1 @@ -4383,7 +4456,7 @@ packages: '@stablelib/wipe': 1.0.1 dev: false - /@stablelib/sha512/1.0.1: + /@stablelib/sha512@1.0.1: resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} dependencies: '@stablelib/binary': 1.0.1 @@ -4391,11 +4464,11 @@ packages: '@stablelib/wipe': 1.0.1 dev: false - /@stablelib/wipe/1.0.1: + /@stablelib/wipe@1.0.1: resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} dev: false - /@stablelib/x25519/1.0.3: + /@stablelib/x25519@1.0.3: resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} dependencies: '@stablelib/keyagreement': 1.0.1 @@ -4403,38 +4476,38 @@ packages: '@stablelib/wipe': 1.0.1 dev: false - /@swc/helpers/0.4.14: + /@swc/helpers@0.4.14: resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} dependencies: tslib: 2.5.0 dev: false - /@tanstack/query-core/4.29.7: + /@tanstack/query-core@4.29.7: resolution: {integrity: sha512-GXG4b5hV2Loir+h2G+RXhJdoZhJLnrBWsuLB2r0qBRyhWuXq9w/dWxzvpP89H0UARlH6Mr9DiVj4SMtpkF/aUA==} dev: false - /@tanstack/query-persist-client-core/4.29.7: + /@tanstack/query-persist-client-core@4.29.7: resolution: {integrity: sha512-/QahvSq9/f8hetCsCd9MaOy6fAoPn0YDGDcl6TTobqdr9kHMgrM9laP9yKJFg2hm5/jIsrCMDO/iCnxBiUhrqw==} dependencies: '@tanstack/query-core': 4.29.7 dev: false - /@tanstack/query-sync-storage-persister/4.29.7: + /@tanstack/query-sync-storage-persister@4.29.7: resolution: {integrity: sha512-XWys8hez8eFIb9+oYNs0Jumfjz8afEwN52VSrHJEWg7gZO/Y/8ziI80cNlaDNB+60t7s3TaspKXT5z8DNFsCkQ==} dependencies: '@tanstack/query-persist-client-core': 4.29.7 dev: false - /@tanstack/react-query-persist-client/4.29.7_776iqyc7ir26b73sx2hj4bwzwu: + /@tanstack/react-query-persist-client@4.29.7(@tanstack/react-query@4.29.7): resolution: {integrity: sha512-KYUeESnthjjcfakpAei9Cz5gsIm1uDAVHrKcIAoARQwksk4j0KAo9ieExoIhL9v4mpTOlE9GsuZ/y06ANmaVaQ==} peerDependencies: '@tanstack/react-query': 4.29.7 dependencies: '@tanstack/query-persist-client-core': 4.29.7 - '@tanstack/react-query': 4.29.7_biqbaboplfbrettd7655fr4n2y + '@tanstack/react-query': 4.29.7(react-dom@18.2.0)(react@18.2.0) dev: false - /@tanstack/react-query/4.29.7_biqbaboplfbrettd7655fr4n2y: + /@tanstack/react-query@4.29.7(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-ijBWEzAIo09fB1yd22slRZzprrZ5zMdWYzBnCg5qiXuFbH78uGN1qtGz8+Ed4MuhaPaYSD+hykn+QEKtQviEtg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4448,31 +4521,27 @@ packages: dependencies: '@tanstack/query-core': 4.29.7 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - use-sync-external-store: 1.2.0_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) + use-sync-external-store: 1.2.0(react@18.2.0) dev: false - /@tsconfig/node10/1.0.9: + /@tsconfig/node10@1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} dev: true - /@tsconfig/node12/1.0.11: + /@tsconfig/node12@1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} dev: true - /@tsconfig/node14/1.0.3: + /@tsconfig/node14@1.0.3: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} dev: true - /@tsconfig/node16/1.0.3: + /@tsconfig/node16@1.0.3: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} dev: true - /@tsconfig/node16/1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - dev: true - - /@types/babel__core/7.20.0: + /@types/babel__core@7.20.0: resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} dependencies: '@babel/parser': 7.22.4 @@ -4482,191 +4551,187 @@ packages: '@types/babel__traverse': 7.18.5 dev: true - /@types/babel__generator/7.6.4: + /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: '@babel/types': 7.22.4 dev: true - /@types/babel__template/7.4.1: + /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: '@babel/parser': 7.22.4 '@babel/types': 7.22.4 dev: true - /@types/babel__traverse/7.18.5: + /@types/babel__traverse@7.18.5: resolution: {integrity: sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==} dependencies: '@babel/types': 7.22.4 dev: true - /@types/bn.js/4.11.6: + /@types/bn.js@4.11.6: resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} dependencies: '@types/node': 18.16.7 dev: false - /@types/chai/4.3.5: + /@types/chai@4.3.5: resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} dev: true - /@types/connect/3.4.35: + /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: '@types/node': 18.16.7 dev: false - /@types/debug/4.1.8: + /@types/debug@4.1.8: resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} dependencies: '@types/ms': 0.7.31 dev: false - /@types/estree/0.0.39: + /@types/estree@0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} dev: true - /@types/estree/1.0.1: + /@types/estree@1.0.1: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} dev: true - /@types/fs-extra/8.1.2: + /@types/fs-extra@8.1.2: resolution: {integrity: sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==} dependencies: '@types/node': 18.16.13 dev: true - /@types/glob/7.2.0: + /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 '@types/node': 18.16.13 dev: true - /@types/graceful-fs/4.1.6: + /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: '@types/node': 20.2.5 dev: true - /@types/is-ci/3.0.0: + /@types/is-ci@3.0.0: resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} dependencies: ci-info: 3.8.0 dev: true - /@types/istanbul-lib-coverage/2.0.4: + /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true - /@types/istanbul-lib-report/3.0.0: + /@types/istanbul-lib-report@3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 dev: true - /@types/istanbul-reports/3.0.1: + /@types/istanbul-reports@3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/29.5.1: + /@types/jest@29.5.1: resolution: {integrity: sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==} dependencies: expect: 29.5.0 pretty-format: 29.5.0 dev: true - /@types/json-schema/7.0.12: + /@types/json-schema@7.0.12: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} dev: true - /@types/json5/0.0.29: + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - /@types/long/4.0.2: + /@types/long@4.0.2: resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} dev: false - /@types/mime/3.0.1: + /@types/mime@3.0.1: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} dev: true - /@types/minimatch/5.1.2: + /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/minimist/1.2.2: + /@types/minimist@1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/mocha/9.1.1: + /@types/mocha@9.1.1: resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} dev: true - /@types/ms/0.7.31: + /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false - /@types/node/12.20.55: + /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - /@types/node/18.16.13: + /@types/node@18.16.13: resolution: {integrity: sha512-uZRomboV1vBL61EBXneL4j9/hEn+1Yqa4LQdpGrKmXFyJmVfWc9JV9+yb2AlnOnuaDnb2PDO3hC6/LKmzJxP1A==} dev: true - /@types/node/18.16.16: - resolution: {integrity: sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g==} - dev: true - - /@types/node/18.16.18: + /@types/node@18.16.18: resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} dev: true - /@types/node/18.16.7: + /@types/node@18.16.7: resolution: {integrity: sha512-MFg7ua/bRtnA1hYE3pVyWxGd/r7aMqjNOdHvlSsXV3n8iaeGKkOaPzpJh6/ovf4bEXWcojkeMJpTsq3mzXW4IQ==} dev: false - /@types/node/20.2.5: + /@types/node@20.2.5: resolution: {integrity: sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==} dev: true - /@types/normalize-package-data/2.4.1: + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/parse-json/4.0.0: + /@types/parse-json@4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} dev: true - /@types/pbkdf2/3.1.0: + /@types/pbkdf2@3.1.0: resolution: {integrity: sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==} dependencies: '@types/node': 18.16.7 dev: false - /@types/prettier/2.7.2: + /@types/prettier@2.7.2: resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} dev: true - /@types/prop-types/15.7.5: + /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - /@types/react-dom/18.2.4: + /@types/react-dom@18.2.4: resolution: {integrity: sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==} dependencies: '@types/react': 18.2.9 dev: false - /@types/react-dom/18.2.5: + /@types/react-dom@18.2.5: resolution: {integrity: sha512-sRQsOS/sCLnpQhR4DSKGTtWFE3FZjpQa86KPVbhUqdYMRZ9FEFcfAytKhR/vUG2rH1oFbOOej6cuD7MFSobDRQ==} dependencies: '@types/react': 18.2.12 dev: true - /@types/react/18.2.12: + /@types/react@18.2.12: resolution: {integrity: sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==} dependencies: '@types/prop-types': 15.7.5 @@ -4674,7 +4739,7 @@ packages: csstype: 3.1.2 dev: true - /@types/react/18.2.6: + /@types/react@18.2.6: resolution: {integrity: sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==} dependencies: '@types/prop-types': 15.7.5 @@ -4682,7 +4747,7 @@ packages: csstype: 3.1.2 dev: false - /@types/react/18.2.9: + /@types/react@18.2.9: resolution: {integrity: sha512-pL3JAesUkF7PEQGxh5XOwdXGV907te6m1/Qe1ERJLgomojS6Ne790QiA7GUl434JEkFA2aAaB6qJ5z4e1zJn/w==} dependencies: '@types/prop-types': 15.7.5 @@ -4690,54 +4755,54 @@ packages: csstype: 3.1.2 dev: false - /@types/resolve/1.17.1: + /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: '@types/node': 18.16.18 dev: true - /@types/scheduler/0.16.3: + /@types/scheduler@0.16.3: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} - /@types/secp256k1/4.0.3: + /@types/secp256k1@4.0.3: resolution: {integrity: sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==} dependencies: '@types/node': 18.16.7 dev: false - /@types/semver/6.2.3: + /@types/semver@6.2.3: resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} dev: true - /@types/semver/7.5.0: + /@types/semver@7.5.0: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@types/stack-utils/2.0.1: + /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/trusted-types/2.0.3: + /@types/trusted-types@2.0.3: resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} dev: false - /@types/ws/7.4.7: + /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: '@types/node': 18.16.7 dev: false - /@types/yargs-parser/21.0.0: + /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true - /@types/yargs/17.0.24: + /@types/yargs@17.0.24: resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} dependencies: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin/5.59.11_sqfi766b7p7jf53aqxvjxvblnq: + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4749,36 +4814,36 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u - '@typescript-eslint/utils': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u - debug: 4.3.4 + '@typescript-eslint/type-utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.42.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.1 - tsutils: 3.21.0_typescript@5.1.3 - typescript: 5.1.3 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u: + /@typescript-eslint/experimental-utils@5.59.11(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-GkQGV0UF/V5Ra7gZMBmiD1WrYUFOJNvCZs+XQnUyJoxmqfWMXVNyB2NVCPRKefoQcpvTv9UpJyfCvsJFs8NzzQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) eslint: 8.42.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser/5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u: + /@typescript-eslint/parser@5.59.11(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4790,15 +4855,14 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11_typescript@5.1.3 - debug: 4.3.4 + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.42.0 - typescript: 5.1.3 + typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/parser/5.59.5_jgkqkwom7vrxl4kyi454n2sy2i: + /@typescript-eslint/parser@5.59.5(eslint@8.40.0)(typescript@4.9.5): resolution: {integrity: sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4810,23 +4874,22 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.59.5 '@typescript-eslint/types': 5.59.5 - '@typescript-eslint/typescript-estree': 5.59.5_typescript@4.9.5 - debug: 4.3.4 + '@typescript-eslint/typescript-estree': 5.59.5(typescript@4.9.5) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.40.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/scope-manager/5.59.11: + /@typescript-eslint/scope-manager@5.59.11: resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.59.11 '@typescript-eslint/visitor-keys': 5.59.11 - dev: true - /@typescript-eslint/scope-manager/5.59.5: + /@typescript-eslint/scope-manager@5.59.5: resolution: {integrity: sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -4834,7 +4897,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.5 dev: false - /@typescript-eslint/type-utils/5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u: + /@typescript-eslint/type-utils@5.59.11(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4844,27 +4907,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.11_typescript@5.1.3 - '@typescript-eslint/utils': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u - debug: 4.3.4 + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.42.0 - tsutils: 3.21.0_typescript@5.1.3 - typescript: 5.1.3 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types/5.59.11: + /@typescript-eslint/types@5.59.11: resolution: {integrity: sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /@typescript-eslint/types/5.59.5: + /@typescript-eslint/types@5.59.5: resolution: {integrity: sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /@typescript-eslint/typescript-estree/5.59.11_typescript@5.1.3: + /@typescript-eslint/typescript-estree@5.59.11(typescript@4.9.5): resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4875,17 +4937,16 @@ packages: dependencies: '@typescript-eslint/types': 5.59.11 '@typescript-eslint/visitor-keys': 5.59.11 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.1 - tsutils: 3.21.0_typescript@5.1.3 - typescript: 5.1.3 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/typescript-estree/5.59.5_typescript@4.9.5: + /@typescript-eslint/typescript-estree@5.59.5(typescript@4.9.5): resolution: {integrity: sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4896,28 +4957,28 @@ packages: dependencies: '@typescript-eslint/types': 5.59.5 '@typescript-eslint/visitor-keys': 5.59.5 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.0 - tsutils: 3.21.0_typescript@4.9.5 + tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/utils/5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u: + /@typescript-eslint/utils@5.59.11(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0_eslint@8.42.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11_typescript@5.1.3 + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) eslint: 8.42.0 eslint-scope: 5.1.1 semver: 7.5.1 @@ -4926,15 +4987,14 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys/5.59.11: + /@typescript-eslint/visitor-keys@5.59.11: resolution: {integrity: sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.59.11 eslint-visitor-keys: 3.4.1 - dev: true - /@typescript-eslint/visitor-keys/5.59.5: + /@typescript-eslint/visitor-keys@5.59.5: resolution: {integrity: sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -4942,7 +5002,7 @@ packages: eslint-visitor-keys: 3.4.1 dev: false - /@vanilla-extract/css/1.9.1: + /@vanilla-extract/css@1.9.1: resolution: {integrity: sha512-pu2SFiff5jRhPwvGoj8cM5l/qIyLvigOmy22ss5DGjwV5pJYezRjDLxWumi2luIwioMWvh9EozCjyfH8nq+7fQ==} dependencies: '@emotion/hash': 0.8.0 @@ -4958,17 +5018,17 @@ packages: outdent: 0.8.0 dev: false - /@vanilla-extract/dynamic/2.0.2: + /@vanilla-extract/dynamic@2.0.2: resolution: {integrity: sha512-U4nKaEQ8Kuz+exXEr51DUpyaOuzo24/S/k1YbDPQR06cYcNjQqvwFRnwWtZ+9ImocqM1wTKtzrdUgSTtLGIwAg==} dependencies: '@vanilla-extract/private': 1.0.3 dev: false - /@vanilla-extract/private/1.0.3: + /@vanilla-extract/private@1.0.3: resolution: {integrity: sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ==} dev: false - /@vanilla-extract/sprinkles/1.5.0_@vanilla-extract+css@1.9.1: + /@vanilla-extract/sprinkles@1.5.0(@vanilla-extract/css@1.9.1): resolution: {integrity: sha512-W58f2Rzz5lLmk0jbhgStVlZl5wEiPB1Ur3fRvUaBM+MrifZ3qskmFq/CiH//fEYeG5Dh9vF1qRviMMH46cX9Nw==} peerDependencies: '@vanilla-extract/css': ^1.0.0 @@ -4976,7 +5036,7 @@ packages: '@vanilla-extract/css': 1.9.1 dev: false - /@wagmi/chains/1.1.0_typescript@4.9.5: + /@wagmi/chains@1.1.0(typescript@4.9.5): resolution: {integrity: sha512-pWZlxBk0Ql8E7DV8DwqlbBpOyUdaG9UDlQPBxJNALuEK1I0tbQ3AVvSDnlsEIt06UPmPo5o27gzs3hwPQ/A+UA==} peerDependencies: typescript: '>=5.0.4' @@ -4987,7 +5047,7 @@ packages: typescript: 4.9.5 dev: false - /@wagmi/connectors/2.2.0_ws34o4uwesxlqswlkmfq6xmtfi: + /@wagmi/connectors@2.2.0(@wagmi/chains@1.1.0)(react@18.2.0)(typescript@4.9.5)(viem@1.0.6): resolution: {integrity: sha512-pI1ed2V8dC8Gro0YbXrJedFj5U9HHD/zUe9MMUaV3ews2LY6qziSXZp9Dw6TKyiSJ5ANbRlZcl40AmSPozkZmw==} peerDependencies: '@wagmi/chains': '>=1.0.0' @@ -5003,14 +5063,14 @@ packages: '@ledgerhq/connect-kit-loader': 1.0.2 '@safe-global/safe-apps-provider': 0.15.2 '@safe-global/safe-apps-sdk': 7.11.0 - '@wagmi/chains': 1.1.0_typescript@4.9.5 - '@walletconnect/ethereum-provider': 2.8.0_@walletconnect+modal@2.4.5 + '@wagmi/chains': 1.1.0(typescript@4.9.5) + '@walletconnect/ethereum-provider': 2.8.0(@walletconnect/modal@2.4.5) '@walletconnect/legacy-provider': 2.0.0 - '@walletconnect/modal': 2.4.5_react@18.2.0 - abitype: 0.8.7_typescript@4.9.5 + '@walletconnect/modal': 2.4.5(react@18.2.0) + abitype: 0.8.7(typescript@4.9.5) eventemitter3: 4.0.7 typescript: 4.9.5 - viem: 1.0.6_typescript@4.9.5 + viem: 1.0.6(typescript@4.9.5) transitivePeerDependencies: - '@react-native-async-storage/async-storage' - bufferutil @@ -5023,7 +5083,7 @@ packages: - zod dev: false - /@wagmi/core/1.2.0_6jfc5y2fmej3fcg7i7iq4eb634: + /@wagmi/core@1.2.0(react@18.2.0)(typescript@4.9.5)(viem@1.0.6): resolution: {integrity: sha512-7onf13u0atdXOnoitB+pivnIUPJman7Y8GITKkxwmcwJ3lpE1U/grYE7xHcKN7av7KEu0DozvKPhN7nJ/7OErw==} peerDependencies: typescript: '>=5.0.4' @@ -5032,13 +5092,13 @@ packages: typescript: optional: true dependencies: - '@wagmi/chains': 1.1.0_typescript@4.9.5 - '@wagmi/connectors': 2.2.0_ws34o4uwesxlqswlkmfq6xmtfi - abitype: 0.8.7_typescript@4.9.5 + '@wagmi/chains': 1.1.0(typescript@4.9.5) + '@wagmi/connectors': 2.2.0(@wagmi/chains@1.1.0)(react@18.2.0)(typescript@4.9.5)(viem@1.0.6) + abitype: 0.8.7(typescript@4.9.5) eventemitter3: 4.0.7 typescript: 4.9.5 - viem: 1.0.6_typescript@4.9.5 - zustand: 4.3.8_react@18.2.0 + viem: 1.0.6(typescript@4.9.5) + zustand: 4.3.8(react@18.2.0) transitivePeerDependencies: - '@react-native-async-storage/async-storage' - bufferutil @@ -5052,7 +5112,7 @@ packages: - zod dev: false - /@walletconnect/core/2.8.0: + /@walletconnect/core@2.8.0: resolution: {integrity: sha512-pl7x4sq1nuU0ixA9wF2ecjDecUzIauKr7ZwC29rs9qTcmDpxgJbbOdZwaSl+dJlf1bHC87adVLf5KAkwwo9PzQ==} dependencies: '@walletconnect/heartbeat': 1.2.1 @@ -5078,7 +5138,7 @@ packages: - utf-8-validate dev: false - /@walletconnect/crypto/1.0.3: + /@walletconnect/crypto@1.0.3: resolution: {integrity: sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g==} dependencies: '@walletconnect/encoding': 1.0.2 @@ -5089,7 +5149,7 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/encoding/1.0.2: + /@walletconnect/encoding@1.0.2: resolution: {integrity: sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag==} dependencies: is-typedarray: 1.0.0 @@ -5097,13 +5157,13 @@ packages: typedarray-to-buffer: 3.1.5 dev: false - /@walletconnect/environment/1.0.1: + /@walletconnect/environment@1.0.1: resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} dependencies: tslib: 1.14.1 dev: false - /@walletconnect/ethereum-provider/2.8.0_@walletconnect+modal@2.4.5: + /@walletconnect/ethereum-provider@2.8.0(@walletconnect/modal@2.4.5): resolution: {integrity: sha512-nVVJtZUpoeurFjoEPYlrUHkT3YleCpEC9YAMKJyEIB3MZZInttcGxGyi0vwFQ+trCfuX8RrdKUPQ952NvxvCvw==} peerDependencies: '@walletconnect/modal': '>=2' @@ -5115,7 +5175,7 @@ packages: '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/modal': 2.4.5_react@18.2.0 + '@walletconnect/modal': 2.4.5(react@18.2.0) '@walletconnect/sign-client': 2.8.0 '@walletconnect/types': 2.8.0 '@walletconnect/universal-provider': 2.8.0 @@ -5130,14 +5190,14 @@ packages: - utf-8-validate dev: false - /@walletconnect/events/1.0.1: + /@walletconnect/events@1.0.1: resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} dependencies: keyvaluestorage-interface: 1.0.0 tslib: 1.14.1 dev: false - /@walletconnect/heartbeat/1.2.1: + /@walletconnect/heartbeat@1.2.1: resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==} dependencies: '@walletconnect/events': 1.0.1 @@ -5145,7 +5205,7 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/jsonrpc-http-connection/1.0.7: + /@walletconnect/jsonrpc-http-connection@1.0.7: resolution: {integrity: sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==} dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 @@ -5156,7 +5216,7 @@ packages: - encoding dev: false - /@walletconnect/jsonrpc-provider/1.0.13: + /@walletconnect/jsonrpc-provider@1.0.13: resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==} dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 @@ -5164,14 +5224,14 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/jsonrpc-types/1.0.3: + /@walletconnect/jsonrpc-types@1.0.3: resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==} dependencies: keyvaluestorage-interface: 1.0.0 tslib: 1.14.1 dev: false - /@walletconnect/jsonrpc-utils/1.0.8: + /@walletconnect/jsonrpc-utils@1.0.8: resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} dependencies: '@walletconnect/environment': 1.0.1 @@ -5179,7 +5239,7 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/jsonrpc-ws-connection/1.0.11: + /@walletconnect/jsonrpc-ws-connection@1.0.11: resolution: {integrity: sha512-TiFJ6saasKXD+PwGkm5ZGSw0837nc6EeFmurSPgIT/NofnOV4Tv7CVJqGQN0rQYoJUSYu21cwHNYaFkzNpUN+w==} dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 @@ -5192,7 +5252,7 @@ packages: - utf-8-validate dev: false - /@walletconnect/keyvaluestorage/1.0.2: + /@walletconnect/keyvaluestorage@1.0.2: resolution: {integrity: sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ==} peerDependencies: '@react-native-async-storage/async-storage': 1.x @@ -5207,7 +5267,7 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/legacy-client/2.0.0: + /@walletconnect/legacy-client@2.0.0: resolution: {integrity: sha512-v5L7rYk9loVnfvUf0mF+76bUPFaU5/Vh7mzL6/950CD/yoGdzYZ3Kj+L7mkC6HPMEGeQsBP1+sqBuiVGZ/aODA==} dependencies: '@walletconnect/crypto': 1.0.3 @@ -5222,7 +5282,7 @@ packages: query-string: 6.14.1 dev: false - /@walletconnect/legacy-modal/2.0.0: + /@walletconnect/legacy-modal@2.0.0: resolution: {integrity: sha512-jckNd8lMhm4X7dX9TDdxM3bXKJnaqkRs6K2Mo5j6GmbIF9Eyx40jZ5+q457RVxvM6ciZEDT5s1wBHWdWoOo+9Q==} dependencies: '@walletconnect/legacy-types': 2.0.0 @@ -5232,7 +5292,7 @@ packages: qrcode: 1.5.3 dev: false - /@walletconnect/legacy-provider/2.0.0: + /@walletconnect/legacy-provider@2.0.0: resolution: {integrity: sha512-A8xPebMI1A+50HbWwTpFCbwP7G+1NGKdTKyg8BUUg3h3Y9JucpC1W6w/x0v1Xw7qFEqQnz74LoIN/A3ytH9xrQ==} dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7 @@ -5245,13 +5305,13 @@ packages: - encoding dev: false - /@walletconnect/legacy-types/2.0.0: + /@walletconnect/legacy-types@2.0.0: resolution: {integrity: sha512-sOVrA7HUdbI1OwKyPOQU0/DdvTSVFlsXWpAk2K2WvP2erTkBWPMTJq6cv2BmKdoJ3p6gLApT7sd+jHi3OF71uw==} dependencies: '@walletconnect/jsonrpc-types': 1.0.3 dev: false - /@walletconnect/legacy-utils/2.0.0: + /@walletconnect/legacy-utils@2.0.0: resolution: {integrity: sha512-CPWxSVVXw0kgNCxvU126g4GiV3mzXmC8IPJ15twE46aJ1FX+RHEIfAzFMFz2F2+fEhBxL63A7dwNQKDXorRPcQ==} dependencies: '@walletconnect/encoding': 1.0.2 @@ -5264,23 +5324,23 @@ packages: query-string: 6.14.1 dev: false - /@walletconnect/logger/2.0.1: + /@walletconnect/logger@2.0.1: resolution: {integrity: sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ==} dependencies: pino: 7.11.0 tslib: 1.14.1 dev: false - /@walletconnect/modal/2.4.5_react@18.2.0: + /@walletconnect/modal@2.4.5(react@18.2.0): resolution: {integrity: sha512-t+sII7GIMsKDr0wvSJxzlpcbxw35WthuVpAqPlzMS7roSPmQZT18KO8Iu4ccLkNZF+ioptRTpBUKtk2eeuaqlQ==} dependencies: - '@web3modal/core': 2.4.5_react@18.2.0 - '@web3modal/ui': 2.4.5_react@18.2.0 + '@web3modal/core': 2.4.5(react@18.2.0) + '@web3modal/ui': 2.4.5(react@18.2.0) transitivePeerDependencies: - react dev: false - /@walletconnect/randombytes/1.0.3: + /@walletconnect/randombytes@1.0.3: resolution: {integrity: sha512-35lpzxcHFbTN3ABefC9W+uBpNZl1GC4Wpx0ed30gibfO/y9oLdy1NznbV96HARQKSBV9J9M/rrtIvf6a23jfYw==} dependencies: '@walletconnect/encoding': 1.0.2 @@ -5289,14 +5349,14 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/relay-api/1.0.9: + /@walletconnect/relay-api@1.0.9: resolution: {integrity: sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==} dependencies: '@walletconnect/jsonrpc-types': 1.0.3 tslib: 1.14.1 dev: false - /@walletconnect/relay-auth/1.0.4: + /@walletconnect/relay-auth@1.0.4: resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} dependencies: '@stablelib/ed25519': 1.0.3 @@ -5307,13 +5367,13 @@ packages: uint8arrays: 3.1.1 dev: false - /@walletconnect/safe-json/1.0.2: + /@walletconnect/safe-json@1.0.2: resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} dependencies: tslib: 1.14.1 dev: false - /@walletconnect/sign-client/2.8.0: + /@walletconnect/sign-client@2.8.0: resolution: {integrity: sha512-+l9qwvVeUGk0fBQsgx6yb6hdGYt8uQ3a9jR9GgsJvm8FjFh1oUzTKqFnG7XdhCBnzFnbSoLr41Xe8PbN8qoUSw==} dependencies: '@walletconnect/core': 2.8.0 @@ -5332,13 +5392,13 @@ packages: - utf-8-validate dev: false - /@walletconnect/time/1.0.2: + /@walletconnect/time@1.0.2: resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} dependencies: tslib: 1.14.1 dev: false - /@walletconnect/types/2.8.0: + /@walletconnect/types@2.8.0: resolution: {integrity: sha512-FMeGK3lGXFDwcs5duoN74xL1aLrkgYqnavWE0DnFPt2i1QmSUITU9c8f88EDh8uPXANd2WIYOItm0DVCNxLGGA==} dependencies: '@walletconnect/events': 1.0.1 @@ -5352,7 +5412,7 @@ packages: - lokijs dev: false - /@walletconnect/universal-provider/2.8.0: + /@walletconnect/universal-provider@2.8.0: resolution: {integrity: sha512-BMsGiINI3rT7DRyDJM7miuWG6vDVE0PV6zMcCXIMDYYPay7zFvJxv2VHEx9an4MutrvQR76NTRyG//i1K84VOQ==} dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7 @@ -5374,7 +5434,7 @@ packages: - utf-8-validate dev: false - /@walletconnect/utils/2.8.0: + /@walletconnect/utils@2.8.0: resolution: {integrity: sha512-Q8OwMtUevIn1+64LXyTMLlhH58k3UOAjU5b3smYZ7CEEmwEGpOTfTDAWrB3v+ZDIhjyqP94+8fuvKIbcVLKLWA==} dependencies: '@stablelib/chacha20poly1305': 1.0.1 @@ -5396,32 +5456,32 @@ packages: - lokijs dev: false - /@walletconnect/window-getters/1.0.1: + /@walletconnect/window-getters@1.0.1: resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} dependencies: tslib: 1.14.1 dev: false - /@walletconnect/window-metadata/1.0.1: + /@walletconnect/window-metadata@1.0.1: resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} dependencies: '@walletconnect/window-getters': 1.0.1 tslib: 1.14.1 dev: false - /@web3modal/core/2.4.5_react@18.2.0: + /@web3modal/core@2.4.5(react@18.2.0): resolution: {integrity: sha512-iulOIW2irVaq+xWTzzM2xbRI4TCR0yTnV2Yz+ifIFl+r3OF3ZOC1jsy4jJnKL7/6e7p4NmmKJk0/w951KzCF5g==} dependencies: buffer: 6.0.3 - valtio: 1.10.5_react@18.2.0 + valtio: 1.10.5(react@18.2.0) transitivePeerDependencies: - react dev: false - /@web3modal/ui/2.4.5_react@18.2.0: + /@web3modal/ui@2.4.5(react@18.2.0): resolution: {integrity: sha512-LvGjGL7vyQrUrrQOtFAK0SyxJs1yozOnJjP7s7gWXJa7wFWCE+kVjrhE8VrKbwx7nHe78IFA1rs7V1ncCirqVQ==} dependencies: - '@web3modal/core': 2.4.5_react@18.2.0 + '@web3modal/core': 2.4.5(react@18.2.0) lit: 2.7.5 motion: 10.16.2 qrcode: 1.5.3 @@ -5429,14 +5489,14 @@ packages: - react dev: false - /JSONStream/1.3.5: + /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true dependencies: jsonparse: 1.3.1 through: 2.3.8 - /abitype/0.8.7_typescript@4.9.5: + /abitype@0.8.7(typescript@4.9.5): resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==} peerDependencies: typescript: '>=5.0.4' @@ -5448,49 +5508,49 @@ packages: typescript: 4.9.5 dev: false - /abstract-leveldown/0.12.4: + /abstract-leveldown@0.12.4: resolution: {integrity: sha512-TOod9d5RDExo6STLMGa+04HGkl+TlMfbDnTyN93/ETJ9DpQ0DaYLqcMZlbXvdc4W3vVo1Qrl+WhSp8zvDsJ+jA==} dependencies: xtend: 3.0.0 dev: true - /acorn-jsx/5.3.2_acorn@8.8.2: + /acorn-jsx@5.3.2(acorn@8.8.2): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.8.2 - /acorn-walk/8.2.0: + /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} dev: true - /acorn/8.8.2: + /acorn@8.8.2: resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} engines: {node: '>=0.4.0'} hasBin: true - /aes-js/3.0.0: + /aes-js@3.0.0: resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} dev: false - /aes-js/3.1.2: + /aes-js@3.1.2: resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} dev: false - /agentkeepalive/4.3.0: + /agentkeepalive@4.3.0: resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==} engines: {node: '>= 8.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) depd: 2.0.0 humanize-ms: 1.2.1 transitivePeerDependencies: - supports-color dev: false - /aggregate-error/3.1.0: + /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} dependencies: @@ -5498,11 +5558,11 @@ packages: indent-string: 4.0.0 dev: true - /ahocorasick/1.0.2: + /ahocorasick@1.0.2: resolution: {integrity: sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA==} dev: false - /ajv/6.12.6: + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 @@ -5510,7 +5570,7 @@ packages: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - /ajv/8.12.0: + /ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} dependencies: fast-deep-equal: 3.1.3 @@ -5519,55 +5579,55 @@ packages: uri-js: 4.4.1 dev: true - /ansi-colors/4.1.1: + /ansi-colors@4.1.1: resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} engines: {node: '>=6'} dev: true - /ansi-colors/4.1.3: + /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} dev: true - /ansi-escapes/4.3.2: + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} dependencies: type-fest: 0.21.3 dev: true - /ansi-regex/5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - /ansi-regex/6.0.1: + /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} dev: true - /ansi-styles/3.2.1: + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - /ansi-styles/4.3.0: + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - /ansi-styles/5.2.0: + /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} dev: true - /ansi-styles/6.2.1: + /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} dev: true - /anymatch/3.1.3: + /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} dependencies: @@ -5575,35 +5635,35 @@ packages: picomatch: 2.3.1 dev: true - /arg/4.1.3: + /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true - /argparse/1.0.10: + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 dev: true - /argparse/2.0.1: + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - /aria-query/5.1.3: + /aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.2.1 - /array-buffer-byte-length/1.0.0: + /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: call-bind: 1.0.2 is-array-buffer: 3.0.2 - /array-ify/1.0.0: + /array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true - /array-includes/3.1.6: + /array-includes@3.1.6: resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} dependencies: @@ -5613,11 +5673,11 @@ packages: get-intrinsic: 1.2.1 is-string: 1.0.7 - /array-union/2.1.0: + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - /array.prototype.flat/1.3.1: + /array.prototype.flat@1.3.1: resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} dependencies: @@ -5626,7 +5686,7 @@ packages: es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 - /array.prototype.flatmap/1.3.1: + /array.prototype.flatmap@1.3.1: resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} engines: {node: '>= 0.4'} dependencies: @@ -5635,7 +5695,7 @@ packages: es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 - /array.prototype.tosorted/1.1.1: + /array.prototype.tosorted@1.1.1: resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} dependencies: call-bind: 1.0.2 @@ -5644,12 +5704,12 @@ packages: es-shim-unscopables: 1.0.0 get-intrinsic: 1.2.1 - /arrify/1.0.1: + /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} dev: true - /asn1.js/5.4.1: + /asn1.js@5.4.1: resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} dependencies: bn.js: 4.12.0 @@ -5658,42 +5718,42 @@ packages: safer-buffer: 2.1.2 dev: true - /assertion-error/1.1.0: + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /ast-types-flow/0.0.7: + /ast-types-flow@0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} - /astral-regex/2.0.0: + /astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} dev: true - /async-mutex/0.2.6: + /async-mutex@0.2.6: resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} dependencies: tslib: 2.5.3 dev: false - /asynckit/0.4.0: + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false - /atomic-sleep/1.0.0: + /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} dev: false - /available-typed-arrays/1.0.5: + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} - /axe-core/4.7.2: + /axe-core@4.7.2: resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} engines: {node: '>=4'} - /axios/0.21.4: + /axios@0.21.4: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} dependencies: follow-redirects: 1.15.2 @@ -5701,7 +5761,7 @@ packages: - debug dev: false - /axios/1.3.4: + /axios@1.3.4: resolution: {integrity: sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==} dependencies: follow-redirects: 1.15.2 @@ -5711,12 +5771,12 @@ packages: - debug dev: false - /axobject-query/3.1.1: + /axobject-query@3.1.1: resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} dependencies: deep-equal: 2.2.1 - /babel-jest/29.5.0_@babel+core@7.22.1: + /babel-jest@29.5.0(@babel/core@7.22.1): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -5726,7 +5786,7 @@ packages: '@jest/transform': 29.5.0 '@types/babel__core': 7.20.0 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0_@babel+core@7.22.1 + babel-preset-jest: 29.5.0(@babel/core@7.22.1) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -5734,7 +5794,7 @@ packages: - supports-color dev: true - /babel-plugin-istanbul/6.1.1: + /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: @@ -5747,7 +5807,7 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist/29.5.0: + /babel-plugin-jest-hoist@29.5.0: resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -5757,7 +5817,7 @@ packages: '@types/babel__traverse': 7.18.5 dev: true - /babel-plugin-macros/3.1.0: + /babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: @@ -5766,67 +5826,67 @@ packages: resolve: 1.22.2 dev: true - /babel-plugin-polyfill-corejs2/0.4.3_@babel+core@7.22.5: + /babel-plugin-polyfill-corejs2@0.4.3(@babel/core@7.22.5): resolution: {integrity: sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.22.5 '@babel/core': 7.22.5 - '@babel/helper-define-polyfill-provider': 0.4.0_@babel+core@7.22.5 + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.5) semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3/0.8.1_@babel+core@7.22.5: + /babel-plugin-polyfill-corejs3@0.8.1(@babel/core@7.22.5): resolution: {integrity: sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-define-polyfill-provider': 0.4.0_@babel+core@7.22.5 + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.5) core-js-compat: 3.31.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator/0.5.0_@babel+core@7.22.5: + /babel-plugin-polyfill-regenerator@0.5.0(@babel/core@7.22.5): resolution: {integrity: sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-define-polyfill-provider': 0.4.0_@babel+core@7.22.5 + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.5) transitivePeerDependencies: - supports-color dev: true - /babel-plugin-transform-react-remove-prop-types/0.4.24: + /babel-plugin-transform-react-remove-prop-types@0.4.24: resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.22.1: + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.1): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.22.1 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.22.1 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.22.1 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.22.1 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.22.1 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.22.1 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.22.1 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.22.1 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.22.1 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.22.1 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.22.1 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.22.1 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.22.1 - dev: true - - /babel-preset-jest/29.5.0_@babel+core@7.22.1: + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.1) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.1) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.1) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.1) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.1) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.1) + dev: true + + /babel-preset-jest@29.5.0(@babel/core@7.22.1): resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -5834,26 +5894,26 @@ packages: dependencies: '@babel/core': 7.22.1 babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.22.1 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.1) dev: true - /babel-preset-react-app/10.0.1: + /babel-preset-react-app@10.0.1: resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} dependencies: '@babel/core': 7.22.5 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.22.5 - '@babel/plugin-proposal-decorators': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.22.5 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.22.5 - '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.22.5 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.22.5 - '@babel/plugin-proposal-private-property-in-object': 7.21.11_@babel+core@7.22.5 - '@babel/plugin-transform-flow-strip-types': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-react-display-name': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-runtime': 7.22.5_@babel+core@7.22.5 - '@babel/preset-env': 7.22.5_@babel+core@7.22.5 - '@babel/preset-react': 7.22.5_@babel+core@7.22.5 - '@babel/preset-typescript': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-proposal-decorators': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.5) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.22.5) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-runtime': 7.22.5(@babel/core@7.22.5) + '@babel/preset-env': 7.22.5(@babel/core@7.22.5) + '@babel/preset-react': 7.22.5(@babel/core@7.22.5) + '@babel/preset-typescript': 7.22.5(@babel/core@7.22.5) '@babel/runtime': 7.22.5 babel-plugin-macros: 3.1.0 babel-plugin-transform-react-remove-prop-types: 0.4.24 @@ -5861,40 +5921,40 @@ packages: - supports-color dev: true - /balanced-match/1.0.2: + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /base-x/3.0.9: + /base-x@3.0.9: resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} dependencies: safe-buffer: 5.2.1 dev: false - /base64-js/1.5.1: + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false - /bech32/1.1.4: + /bech32@1.1.4: resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} dev: false - /bech32/2.0.0: + /bech32@2.0.0: resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} dev: false - /better-path-resolve/1.0.0: + /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} dependencies: is-windows: 1.0.2 dev: true - /big-integer/1.6.36: + /big-integer@1.6.36: resolution: {integrity: sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==} engines: {node: '>=0.6'} dev: false - /bigint-buffer/1.1.5: + /bigint-buffer@1.1.5: resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} engines: {node: '>= 10.0.0'} requiresBuild: true @@ -5902,38 +5962,38 @@ packages: bindings: 1.5.0 dev: false - /binary-extensions/2.2.0: + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} dev: true - /bind-decorator/1.0.11: + /bind-decorator@1.0.11: resolution: {integrity: sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg==} dev: false - /bindings/1.5.0: + /bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} dependencies: file-uri-to-path: 1.0.0 dev: false - /bl/0.8.2: + /bl@0.8.2: resolution: {integrity: sha512-pfqikmByp+lifZCS0p6j6KreV6kNU6Apzpm2nKOk+94cZb/jvle55+JxWiByUQ0Wo/+XnDXEy5MxxKMb6r0VIw==} dependencies: readable-stream: 1.0.34 dev: true - /blakejs/1.2.1: + /blakejs@1.2.1: resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} dev: false - /bn.js/4.12.0: + /bn.js@4.12.0: resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - /bn.js/5.2.1: + /bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - /borsh/0.7.0: + /borsh@0.7.0: resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} dependencies: bn.js: 5.2.1 @@ -5941,38 +6001,38 @@ packages: text-encoding-utf-8: 1.0.2 dev: false - /brace-expansion/1.1.11: + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /brace-expansion/2.0.1: + /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 dev: true - /braces/3.0.2: + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - /breakword/1.0.6: + /breakword@1.0.6: resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} dependencies: wcwidth: 1.0.1 dev: true - /brorand/1.1.0: + /brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - /browser-stdout/1.3.1: + /browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} dev: true - /browserify-aes/1.2.0: + /browserify-aes@1.2.0: resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} dependencies: buffer-xor: 1.0.3 @@ -5982,7 +6042,7 @@ packages: inherits: 2.0.4 safe-buffer: 5.2.1 - /browserify-cipher/1.0.1: + /browserify-cipher@1.0.1: resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} dependencies: browserify-aes: 1.2.0 @@ -5990,7 +6050,7 @@ packages: evp_bytestokey: 1.0.3 dev: true - /browserify-des/1.0.2: + /browserify-des@1.0.2: resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} dependencies: cipher-base: 1.0.4 @@ -5999,7 +6059,7 @@ packages: safe-buffer: 5.2.1 dev: true - /browserify-fs/1.0.0: + /browserify-fs@1.0.0: resolution: {integrity: sha512-8LqHRPuAEKvyTX34R6tsw4bO2ro6j9DmlYBhiYWHRM26Zv2cBw1fJOU0NeUQ0RkXkPn/PFBjhA0dm4AgaBurTg==} dependencies: level-filesystem: 1.2.0 @@ -6007,14 +6067,14 @@ packages: levelup: 0.18.6 dev: true - /browserify-rsa/4.1.0: + /browserify-rsa@4.1.0: resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} dependencies: bn.js: 5.2.1 randombytes: 2.1.0 dev: true - /browserify-sign/4.2.1: + /browserify-sign@4.2.1: resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==} dependencies: bn.js: 5.2.1 @@ -6028,7 +6088,7 @@ packages: safe-buffer: 5.2.1 dev: true - /browserslist/4.21.7: + /browserslist@4.21.7: resolution: {integrity: sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -6036,10 +6096,10 @@ packages: caniuse-lite: 1.0.30001489 electron-to-chromium: 1.4.411 node-releases: 2.0.12 - update-browserslist-db: 1.0.11_browserslist@4.21.7 + update-browserslist-db: 1.0.11(browserslist@4.21.7) dev: true - /browserslist/4.21.8: + /browserslist@4.21.8: resolution: {integrity: sha512-j+7xYe+v+q2Id9qbBeCI8WX5NmZSRe8es1+0xntD/+gaWXznP8tFEkv5IgSaHf5dS1YwVMbX/4W6m937mj+wQw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -6047,23 +6107,22 @@ packages: caniuse-lite: 1.0.30001502 electron-to-chromium: 1.4.428 node-releases: 2.0.12 - update-browserslist-db: 1.0.11_browserslist@4.21.8 - dev: true + update-browserslist-db: 1.0.11(browserslist@4.21.8) - /bs-logger/0.2.6: + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} dependencies: fast-json-stable-stringify: 2.1.0 dev: true - /bs58/4.0.1: + /bs58@4.0.1: resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} dependencies: base-x: 3.0.9 dev: false - /bs58check/2.1.2: + /bs58check@2.1.2: resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} dependencies: bs58: 4.0.1 @@ -6071,31 +6130,31 @@ packages: safe-buffer: 5.2.1 dev: false - /bser/2.1.1: + /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 dev: true - /buffer-es6/4.9.3: + /buffer-es6@4.9.3: resolution: {integrity: sha512-Ibt+oXxhmeYJSsCkODPqNpPmyegefiD8rfutH1NYGhMZQhSp95Rz7haemgnJ6dxa6LT+JLLbtgOMORRluwKktw==} dev: true - /buffer-from/1.1.2: + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /buffer-xor/1.0.3: + /buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - /buffer/6.0.3: + /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 dev: false - /bufferutil/4.0.7: + /bufferutil@4.0.7: resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} engines: {node: '>=6.14.2'} requiresBuild: true @@ -6103,28 +6162,28 @@ packages: node-gyp-build: 4.6.0 dev: false - /builtin-modules/3.3.0: + /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} dev: true - /builtins/2.0.1: + /builtins@2.0.1: resolution: {integrity: sha512-XkkVe5QAb6guWPXTzpSrYpSlN3nqEmrrE2TkAr/tp7idSF6+MONh9WvKrAuR3HiKLvoSgmbs8l1U9IPmMrIoLw==} dependencies: semver: 6.3.0 dev: true - /call-bind/1.0.2: + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.2.1 - /callsites/3.1.0: + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - /camelcase-keys/6.2.2: + /camelcase-keys@6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} dependencies: @@ -6133,33 +6192,32 @@ packages: quick-lru: 4.0.1 dev: true - /camelcase/5.3.1: + /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} - /camelcase/6.3.0: + /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001486: + /caniuse-lite@1.0.30001486: resolution: {integrity: sha512-uv7/gXuHi10Whlj0pp5q/tsK/32J2QSqVRKQhs2j8VsDCjgyruAh/eEXHF822VqO9yT6iZKw3nRwZRSPBE9OQg==} dev: false - /caniuse-lite/1.0.30001489: + /caniuse-lite@1.0.30001489: resolution: {integrity: sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==} dev: true - /caniuse-lite/1.0.30001502: + /caniuse-lite@1.0.30001502: resolution: {integrity: sha512-AZ+9tFXw1sS0o0jcpJQIXvFTOB/xGiQ4OQ2t98QX3NDn2EZTSRBC801gxrsGgViuq2ak/NLkNgSNEPtCr5lfKg==} - dev: true - /case/1.6.3: + /case@1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} engines: {node: '>= 0.8.0'} dev: false - /chai/4.3.7: + /chai@4.3.7: resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} dependencies: @@ -6172,7 +6230,7 @@ packages: type-detect: 4.0.8 dev: true - /chalk/2.4.2: + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: @@ -6180,32 +6238,32 @@ packages: escape-string-regexp: 1.0.5 supports-color: 5.5.0 - /chalk/4.1.2: + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk/5.2.0: + /chalk@5.2.0: resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true - /char-regex/1.0.2: + /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} dev: true - /chardet/0.7.0: + /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /check-error/1.0.2: + /check-error@1.0.2: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true - /chokidar/3.5.3: + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: @@ -6220,34 +6278,34 @@ packages: fsevents: 2.3.2 dev: true - /ci-info/3.8.0: + /ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} dev: true - /cipher-base/1.0.4: + /cipher-base@1.0.4: resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 - /cjs-module-lexer/1.2.2: + /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: true - /clean-stack/2.2.0: + /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} dev: true - /cli-cursor/3.1.0: + /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 dev: true - /cli-truncate/2.1.0: + /cli-truncate@2.1.0: resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} engines: {node: '>=8'} dependencies: @@ -6255,7 +6313,7 @@ packages: string-width: 4.2.3 dev: true - /cli-truncate/3.1.0: + /cli-truncate@3.1.0: resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -6263,18 +6321,18 @@ packages: string-width: 5.1.2 dev: true - /client-only/0.0.1: + /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false - /cliui/6.0.0: + /cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - /cliui/7.0.4: + /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: string-width: 4.2.3 @@ -6282,7 +6340,7 @@ packages: wrap-ansi: 7.0.0 dev: true - /cliui/8.0.1: + /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} dependencies: @@ -6291,89 +6349,89 @@ packages: wrap-ansi: 7.0.0 dev: true - /clone/0.1.19: + /clone@0.1.19: resolution: {integrity: sha512-IO78I0y6JcSpEPHzK4obKdsL7E7oLdRVDVOLwr2Hkbjsb+Eoz0dxW6tef0WizoKu0gLC4oZSZuEF4U2K6w1WQw==} dev: true - /clone/1.0.4: + /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} dev: true - /clsx/1.1.1: + /clsx@1.1.1: resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==} engines: {node: '>=6'} dev: false - /clsx/1.2.1: + /clsx@1.2.1: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} dev: false - /co/4.6.0: + /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true - /collect-v8-coverage/1.0.1: + /collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} dev: true - /color-convert/1.9.3: + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - /color-convert/2.0.1: + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - /color-name/1.1.3: + /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - /color-name/1.1.4: + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /colorette/1.4.0: + /colorette@1.4.0: resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} dev: true - /colorette/2.0.20: + /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} dev: true - /combined-stream/1.0.8: + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 dev: false - /commander/10.0.1: + /commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} dev: true - /commander/2.20.3: + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - /commondir/1.0.1: + /commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} dev: true - /compare-func/2.0.0: + /compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} dependencies: array-ify: 1.0.0 dot-prop: 5.3.0 dev: true - /concat-map/0.0.1: + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /concat-stream/1.6.2: + /concat-stream@1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} engines: {'0': node >= 0.8} dependencies: @@ -6383,11 +6441,11 @@ packages: typedarray: 0.0.6 dev: true - /confusing-browser-globals/1.0.11: + /confusing-browser-globals@1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: true - /conventional-changelog-angular/5.0.13: + /conventional-changelog-angular@5.0.13: resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} engines: {node: '>=10'} dependencies: @@ -6395,12 +6453,12 @@ packages: q: 1.5.1 dev: true - /conventional-changelog-cmyr-config/2.1.0: + /conventional-changelog-cmyr-config@2.1.0: resolution: {integrity: sha512-YJxf4Gm2xYCabWhHmrB/RWKDKzEMhDZGyHE8R7/NIflmu31zn9giyhLYWRyB+FAhAWplXulMtMI5VMFLqO0+Aw==} engines: {node: '>=12'} dev: true - /conventional-changelog-conventionalcommits/5.0.0: + /conventional-changelog-conventionalcommits@5.0.0: resolution: {integrity: sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==} engines: {node: '>=10'} dependencies: @@ -6409,7 +6467,7 @@ packages: q: 1.5.1 dev: true - /conventional-commits-parser/3.2.4: + /conventional-commits-parser@3.2.4: resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==} engines: {node: '>=10'} hasBin: true @@ -6422,31 +6480,30 @@ packages: through2: 4.0.2 dev: true - /convert-source-map/1.9.0: + /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true - /convert-source-map/2.0.0: + /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true - /copy-to-clipboard/3.3.3: + /copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} dependencies: toggle-selection: 1.0.6 dev: false - /core-js-compat/3.31.0: + /core-js-compat@3.31.0: resolution: {integrity: sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==} dependencies: browserslist: 4.21.8 dev: true - /core-util-is/1.0.3: + /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cors/2.8.5: + /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} dependencies: @@ -6454,7 +6511,7 @@ packages: vary: 1.1.2 dev: false - /cosmiconfig-typescript-loader/4.3.0_f7ftk3vf3beanyfjs3ua3i63me: + /cosmiconfig-typescript-loader@4.3.0(@types/node@18.16.18)(cosmiconfig@8.2.0)(ts-node@10.9.1)(typescript@5.1.3): resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -6465,11 +6522,11 @@ packages: dependencies: '@types/node': 18.16.18 cosmiconfig: 8.2.0 - ts-node: 10.9.1_uc4mglbmg4gsgxc6hysq56typi + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) typescript: 5.1.3 dev: true - /cosmiconfig/7.1.0: + /cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} dependencies: @@ -6480,7 +6537,7 @@ packages: yaml: 1.10.2 dev: true - /cosmiconfig/8.2.0: + /cosmiconfig@8.2.0: resolution: {integrity: sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==} engines: {node: '>=14'} dependencies: @@ -6490,35 +6547,35 @@ packages: path-type: 4.0.0 dev: true - /cosmjs-types/0.4.1: + /cosmjs-types@0.4.1: resolution: {integrity: sha512-I7E/cHkIgoJzMNQdFF0YVqPlaTqrqKHrskuSTIqlEyxfB5Lf3WKCajSXVK2yHOfOFfSux/RxEdpMzw/eO4DIog==} dependencies: long: 4.0.0 protobufjs: 6.11.3 dev: false - /cosmjs-types/0.5.2: + /cosmjs-types@0.5.2: resolution: {integrity: sha512-zxCtIJj8v3Di7s39uN4LNcN3HIE1z0B9Z0SPE8ZNQR0oSzsuSe1ACgxoFkvhkS7WBasCAFcglS11G2hyfd5tPg==} dependencies: long: 4.0.0 protobufjs: 6.11.3 dev: false - /cosmjs-types/0.7.2: + /cosmjs-types@0.7.2: resolution: {integrity: sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA==} dependencies: long: 4.0.0 protobufjs: 6.11.3 dev: false - /create-ecdh/4.0.4: + /create-ecdh@4.0.4: resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} dependencies: bn.js: 4.12.0 elliptic: 6.5.4 dev: true - /create-hash/1.2.0: + /create-hash@1.2.0: resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} dependencies: cipher-base: 1.0.4 @@ -6527,7 +6584,7 @@ packages: ripemd160: 2.0.2 sha.js: 2.4.11 - /create-hmac/1.1.7: + /create-hmac@1.1.7: resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} dependencies: cipher-base: 1.0.4 @@ -6537,11 +6594,11 @@ packages: safe-buffer: 5.2.1 sha.js: 2.4.11 - /create-require/1.1.1: + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true - /cross-env/7.0.3: + /cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} hasBin: true @@ -6549,7 +6606,7 @@ packages: cross-spawn: 7.0.3 dev: true - /cross-fetch/3.1.6: + /cross-fetch@3.1.6: resolution: {integrity: sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==} dependencies: node-fetch: 2.6.11 @@ -6557,7 +6614,7 @@ packages: - encoding dev: false - /cross-spawn/5.1.0: + /cross-spawn@5.1.0: resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} dependencies: lru-cache: 4.1.5 @@ -6565,7 +6622,7 @@ packages: which: 1.3.1 dev: true - /cross-spawn/7.0.3: + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: @@ -6573,7 +6630,7 @@ packages: shebang-command: 2.0.0 which: 2.0.2 - /crypto-addr-codec/0.1.7: + /crypto-addr-codec@0.1.7: resolution: {integrity: sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg==} dependencies: base-x: 3.0.9 @@ -6585,7 +6642,7 @@ packages: sha3: 2.1.4 dev: false - /crypto-browserify/3.12.0: + /crypto-browserify@3.12.0: resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} dependencies: browserify-cipher: 1.0.1 @@ -6601,33 +6658,33 @@ packages: randomfill: 1.0.4 dev: true - /css-what/5.1.0: + /css-what@5.1.0: resolution: {integrity: sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==} engines: {node: '>= 6'} dev: false - /cssesc/3.0.0: + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true dev: false - /csstype/3.1.2: + /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - /csv-generate/3.4.3: + /csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} dev: true - /csv-parse/4.16.3: + /csv-parse@4.16.3: resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} dev: true - /csv-stringify/5.6.5: + /csv-stringify@5.6.5: resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} dev: true - /csv/5.5.3: + /csv@5.5.3: resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} engines: {node: '>= 0.1.90'} dependencies: @@ -6637,23 +6694,23 @@ packages: stream-transform: 2.1.3 dev: true - /damerau-levenshtein/1.0.8: + /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - /dargs/7.0.0: + /dargs@7.0.0: resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} engines: {node: '>=8'} dev: true - /dataloader/1.4.0: + /dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} dev: true - /dayjs/1.11.7: + /dayjs@1.11.7: resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} dev: false - /debug/3.2.7: + /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' @@ -6663,18 +6720,7 @@ packages: dependencies: ms: 2.1.3 - /debug/4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - - /debug/4.3.4_supports-color@8.1.1: + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -6685,9 +6731,8 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 - dev: true - /decamelize-keys/1.1.1: + /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} dependencies: @@ -6695,32 +6740,32 @@ packages: map-obj: 1.0.1 dev: true - /decamelize/1.2.0: + /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - /decamelize/4.0.0: + /decamelize@4.0.0: resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} engines: {node: '>=10'} dev: true - /decode-uri-component/0.2.2: + /decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} dev: false - /dedent/0.7.0: + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /deep-eql/4.1.3: + /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} dependencies: type-detect: 4.0.8 dev: true - /deep-equal/2.2.1: + /deep-equal@2.2.1: resolution: {integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==} dependencies: array-buffer-byte-length: 1.0.0 @@ -6742,97 +6787,97 @@ packages: which-collection: 1.0.1 which-typed-array: 1.1.9 - /deep-is/0.1.4: + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - /deep-object-diff/1.1.9: + /deep-object-diff@1.1.9: resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} dev: false - /deepmerge/4.3.1: + /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - /defaults/1.0.4: + /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 dev: true - /deferred-leveldown/0.2.0: + /deferred-leveldown@0.2.0: resolution: {integrity: sha512-+WCbb4+ez/SZ77Sdy1iadagFiVzMB89IKOBhglgnUkVxOxRWmmFsz8UDSNWh4Rhq+3wr/vMFlYj+rdEwWUDdng==} dependencies: abstract-leveldown: 0.12.4 dev: true - /define-lazy-prop/2.0.0: + /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} dev: false - /define-properties/1.2.0: + /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} dependencies: has-property-descriptors: 1.0.0 object-keys: 1.1.1 - /delay/5.0.0: + /delay@5.0.0: resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} engines: {node: '>=10'} dev: false - /delayed-stream/1.0.0: + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: false - /depd/2.0.0: + /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} dev: false - /des.js/1.0.1: + /des.js@1.0.1: resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==} dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 dev: true - /detect-browser/5.3.0: + /detect-browser@5.3.0: resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} dev: false - /detect-indent/6.1.0: + /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} dev: true - /detect-newline/3.1.0: + /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} dev: true - /detect-node-es/1.1.0: + /detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} dev: false - /diff-sequences/29.4.3: + /diff-sequences@29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /diff/4.0.2: + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} dev: true - /diff/5.0.0: + /diff@5.0.0: resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} engines: {node: '>=0.3.1'} dev: true - /diffie-hellman/5.0.3: + /diffie-hellman@5.0.3: resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} dependencies: bn.js: 4.12.0 @@ -6840,46 +6885,46 @@ packages: randombytes: 2.1.0 dev: true - /dijkstrajs/1.0.3: + /dijkstrajs@1.0.3: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} dev: false - /dir-glob/3.0.1: + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 - /doctrine/2.1.0: + /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 - /doctrine/3.0.0: + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 - /dot-prop/5.3.0: + /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} dependencies: is-obj: 2.0.0 dev: true - /dotenv/16.0.3: + /dotenv@16.0.3: resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} engines: {node: '>=12'} dev: true - /dotenv/8.6.0: + /dotenv@8.6.0: resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} engines: {node: '>=10'} dev: true - /duplexify/4.1.2: + /duplexify@4.1.2: resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} dependencies: end-of-stream: 1.4.4 @@ -6888,11 +6933,11 @@ packages: stream-shift: 1.0.1 dev: false - /eastasianwidth/0.2.0: + /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /eip1193-provider/1.0.1: + /eip1193-provider@1.0.1: resolution: {integrity: sha512-kSuqwQ26d7CzuS/t3yRXo2Su2cVH0QfvyKbr2H7Be7O5YDyIq4hQGCNTo5wRdP07bt+E2R/8nPCzey4ojBHf7g==} dependencies: '@json-rpc-tools/provider': 1.7.6 @@ -6902,15 +6947,14 @@ packages: - utf-8-validate dev: false - /electron-to-chromium/1.4.411: + /electron-to-chromium@1.4.411: resolution: {integrity: sha512-5VXLW4Qw89vM2WTICHua/y8v7fKGDRVa2VPOtBB9IpLvW316B+xd8yD1wTmLPY2ot/00P/qt87xdolj4aG/Lzg==} dev: true - /electron-to-chromium/1.4.428: + /electron-to-chromium@1.4.428: resolution: {integrity: sha512-L7uUknyY286of0AYC8CKfgWstD0Smk2DvHDi9F0GWQhSH90Bzi7iDrmCbZKz75tYJxeGSAc7TYeKpmbjMDoh1w==} - dev: true - /elliptic/6.5.4: + /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: bn.js: 4.12.0 @@ -6921,28 +6965,28 @@ packages: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - /emittery/0.13.1: + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} dev: true - /emoji-regex/8.0.0: + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - /emoji-regex/9.2.2: + /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - /encode-utf8/1.0.3: + /encode-utf8@1.0.3: resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} dev: false - /end-of-stream/1.4.4: + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 dev: false - /enhanced-resolve/5.12.0: + /enhanced-resolve@5.12.0: resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} engines: {node: '>=10.13.0'} dependencies: @@ -6950,27 +6994,27 @@ packages: tapable: 2.2.1 dev: false - /enquirer/2.3.6: + /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 dev: true - /errno/0.1.8: + /errno@0.1.8: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true dependencies: prr: 1.0.1 dev: true - /error-ex/1.3.2: + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 dev: true - /es-abstract/1.21.2: + /es-abstract@1.21.2: resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} engines: {node: '>= 0.4'} dependencies: @@ -7009,7 +7053,7 @@ packages: unbox-primitive: 1.0.2 which-typed-array: 1.1.9 - /es-get-iterator/1.1.3: + /es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: call-bind: 1.0.2 @@ -7022,7 +7066,7 @@ packages: isarray: 2.0.5 stop-iteration-iterator: 1.0.0 - /es-set-tostringtag/2.0.1: + /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} dependencies: @@ -7030,12 +7074,12 @@ packages: has: 1.0.3 has-tostringtag: 1.0.0 - /es-shim-unscopables/1.0.0: + /es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 - /es-to-primitive/1.2.1: + /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: @@ -7043,35 +7087,34 @@ packages: is-date-object: 1.0.5 is-symbol: 1.0.4 - /es6-promise/4.2.8: + /es6-promise@4.2.8: resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} dev: false - /es6-promisify/5.0.0: + /es6-promisify@5.0.0: resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} dependencies: es6-promise: 4.2.8 dev: false - /escalade/3.1.1: + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - dev: true - /escape-string-regexp/1.0.5: + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - /escape-string-regexp/2.0.0: + /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} dev: true - /escape-string-regexp/4.0.0: + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-config-next/13.1.6_jgkqkwom7vrxl4kyi454n2sy2i: + /eslint-config-next@13.1.6(eslint@8.40.0)(typescript@4.9.5): resolution: {integrity: sha512-0cg7h5wztg/SoLAlxljZ0ZPUQ7i6QKqRiP4M2+MgTZtxWwNKb2JSwNc18nJ6/kXBI6xYvPraTbQSIhAuVw6czw==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -7082,21 +7125,21 @@ packages: dependencies: '@next/eslint-plugin-next': 13.1.6 '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/parser': 5.59.5_jgkqkwom7vrxl4kyi454n2sy2i + '@typescript-eslint/parser': 5.59.5(eslint@8.40.0)(typescript@4.9.5) eslint: 8.40.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3_e43qr7ng6kygh3xxr4conxr2wi - eslint-plugin-import: 2.27.5_eslint@8.40.0 - eslint-plugin-jsx-a11y: 6.7.1_eslint@8.40.0 - eslint-plugin-react: 7.32.2_eslint@8.40.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.40.0 + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.40.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.40.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.40.0) + eslint-plugin-react: 7.32.2(eslint@8.40.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.40.0) typescript: 4.9.5 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color dev: false - /eslint-config-react-app/7.0.1_yn5ilqvgwchduzwezxxn64yk7y: + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7107,21 +7150,21 @@ packages: optional: true dependencies: '@babel/core': 7.22.5 - '@babel/eslint-parser': 7.22.5_x2nqc5cansj73pf43kd5o2aydq + '@babel/eslint-parser': 7.22.5(@babel/core@7.22.5)(eslint@8.42.0) '@rushstack/eslint-patch': 1.3.1 - '@typescript-eslint/eslint-plugin': 5.59.11_sqfi766b7p7jf53aqxvjxvblnq - '@typescript-eslint/parser': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.42.0 - eslint-plugin-flowtype: 8.0.3_fgauhqq7zwahnfqyyrazhsiczq - eslint-plugin-import: 2.27.5_b34cytzsv57k5d564pxz54jodu - eslint-plugin-jest: 25.7.0_v2rl4eksmowc4rsu54jhdgu2fi - eslint-plugin-jsx-a11y: 6.7.1_eslint@8.42.0 - eslint-plugin-react: 7.32.2_eslint@8.42.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.42.0 - eslint-plugin-testing-library: 5.11.0_tizxnkcvjrb4cldxgwq5h3lj5u - typescript: 5.1.3 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.42.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@4.9.5) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.42.0) + eslint-plugin-react: 7.32.2(eslint@8.42.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.42.0) + eslint-plugin-testing-library: 5.11.0(eslint@8.42.0)(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -7131,7 +7174,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-node/0.3.7: + /eslint-import-resolver-node@0.3.7: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: debug: 3.2.7 @@ -7140,17 +7183,17 @@ packages: transitivePeerDependencies: - supports-color - /eslint-import-resolver-typescript/3.5.3_e43qr7ng6kygh3xxr4conxr2wi: + /eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.27.5)(eslint@8.40.0): resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.12.0 eslint: 8.40.0 - eslint-plugin-import: 2.27.5_eslint@8.40.0 + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.40.0) get-tsconfig: 4.5.0 globby: 13.1.3 is-core-module: 2.12.0 @@ -7160,7 +7203,7 @@ packages: - supports-color dev: false - /eslint-module-utils/2.8.0_aartv3asycikuu35yv36clal7i: + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.40.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -7181,15 +7224,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) debug: 3.2.7 - eslint: 8.42.0 + eslint: 8.40.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: - supports-color - dev: true + dev: false - /eslint-module-utils/2.8.0_psn6fw4moe3x2es443hwiatkh4: + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.42.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -7210,14 +7253,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) debug: 3.2.7 - eslint: 8.40.0 + eslint: 8.42.0 eslint-import-resolver-node: 0.3.7 transitivePeerDependencies: - supports-color - dev: false + dev: true - /eslint-plugin-flowtype/8.0.3_fgauhqq7zwahnfqyyrazhsiczq: + /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0): resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -7225,14 +7269,14 @@ packages: '@babel/plugin-transform-react-jsx': ^7.14.9 eslint: ^8.1.0 dependencies: - '@babel/plugin-syntax-flow': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-transform-react-jsx': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) eslint: 8.42.0 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import/2.27.5_b34cytzsv57k5d564pxz54jodu: + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.40.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -7242,15 +7286,15 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.42.0 + eslint: 8.40.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0_aartv3asycikuu35yv36clal7i + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.40.0) has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 @@ -7263,9 +7307,9 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true + dev: false - /eslint-plugin-import/2.27.5_eslint@8.40.0: + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.42.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -7275,14 +7319,15 @@ packages: '@typescript-eslint/parser': optional: true dependencies: + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.40.0 + eslint: 8.42.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0_psn6fw4moe3x2es443hwiatkh4 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.42.0) has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 @@ -7295,9 +7340,9 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: false + dev: true - /eslint-plugin-jest/25.7.0_v2rl4eksmowc4rsu54jhdgu2fi: + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -7310,15 +7355,15 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11_sqfi766b7p7jf53aqxvjxvblnq - '@typescript-eslint/experimental-utils': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) eslint: 8.42.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsx-a11y/6.7.1_eslint@8.40.0: + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.40.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -7343,7 +7388,7 @@ packages: semver: 6.3.0 dev: false - /eslint-plugin-jsx-a11y/6.7.1_eslint@8.42.0: + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.42.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -7368,7 +7413,7 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier/4.2.1_eveahbx3r3okkkxu7l44ces2q4: + /eslint-plugin-prettier@4.2.1(eslint@8.42.0)(prettier@2.8.8): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -7384,7 +7429,7 @@ packages: prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-react-hooks/4.6.0_eslint@8.40.0: + /eslint-plugin-react-hooks@4.6.0(eslint@8.40.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: @@ -7393,7 +7438,7 @@ packages: eslint: 8.40.0 dev: false - /eslint-plugin-react-hooks/4.6.0_eslint@8.42.0: + /eslint-plugin-react-hooks@4.6.0(eslint@8.42.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: @@ -7402,7 +7447,7 @@ packages: eslint: 8.42.0 dev: true - /eslint-plugin-react/7.32.2_eslint@8.40.0: + /eslint-plugin-react@7.32.2(eslint@8.40.0): resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -7426,7 +7471,7 @@ packages: string.prototype.matchall: 4.0.8 dev: false - /eslint-plugin-react/7.32.2_eslint@8.42.0: + /eslint-plugin-react@7.32.2(eslint@8.42.0): resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -7450,20 +7495,20 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library/5.11.0_tizxnkcvjrb4cldxgwq5h3lj5u: + /eslint-plugin-testing-library@5.11.0(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11_tizxnkcvjrb4cldxgwq5h3lj5u + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) eslint: 8.42.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-scope/5.1.1: + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} dependencies: @@ -7471,28 +7516,28 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope/7.2.0: + /eslint-scope@7.2.0: resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - /eslint-visitor-keys/2.1.0: + /eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} dev: true - /eslint-visitor-keys/3.4.1: + /eslint-visitor-keys@3.4.1: resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /eslint/8.40.0: + /eslint@8.40.0: resolution: {integrity: sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0_eslint@8.40.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.40.0) '@eslint-community/regexpp': 4.5.1 '@eslint/eslintrc': 2.0.3 '@eslint/js': 8.40.0 @@ -7502,7 +7547,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.0 @@ -7536,12 +7581,12 @@ packages: - supports-color dev: false - /eslint/8.42.0: + /eslint@8.42.0: resolution: {integrity: sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0_eslint@8.42.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) '@eslint-community/regexpp': 4.5.1 '@eslint/eslintrc': 2.0.3 '@eslint/js': 8.42.0 @@ -7551,7 +7596,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.0 @@ -7582,56 +7627,55 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true - /espree/9.5.2: + /espree@9.5.2: resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.8.2 - acorn-jsx: 5.3.2_acorn@8.8.2 + acorn-jsx: 5.3.2(acorn@8.8.2) eslint-visitor-keys: 3.4.1 - /esprima/4.0.1: + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true dev: true - /esquery/1.5.0: + /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 - /esrecurse/4.3.0: + /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 - /estraverse/4.3.0: + /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} dev: true - /estraverse/5.3.0: + /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - /estree-walker/1.0.1: + /estree-walker@1.0.1: resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} dev: true - /estree-walker/2.0.2: + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true - /esutils/2.0.3: + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - /eth-block-tracker/6.1.0: + /eth-block-tracker@6.1.0: resolution: {integrity: sha512-K9SY8+/xMBi4M5HHTDdxnpEqEEGjbNpzHFqvxyjMZej8InV/B+CkFRKM6W+uvrFJ7m8Zd1E0qUkseU3vdIDFYQ==} engines: {node: '>=14.0.0'} dependencies: @@ -7643,7 +7687,7 @@ packages: - supports-color dev: false - /eth-json-rpc-filters/5.1.0: + /eth-json-rpc-filters@5.1.0: resolution: {integrity: sha512-fos+9xmoa1A2Ytsc9eYof17r81BjdJOUcGcgZn4K/tKdCCTb+a8ytEtwlu1op5qsXFDlgGmstTELFrDEc89qEQ==} engines: {node: '>=14.0.0'} dependencies: @@ -7654,20 +7698,20 @@ packages: pify: 5.0.0 dev: false - /eth-query/2.1.2: + /eth-query@2.1.2: resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==} dependencies: json-rpc-random-id: 1.0.1 xtend: 4.0.2 dev: false - /eth-rpc-errors/4.0.2: + /eth-rpc-errors@4.0.2: resolution: {integrity: sha512-n+Re6Gu8XGyfFy1it0AwbD1x0MUzspQs0D5UiPs1fFPCr6WAwZM+vbIhXheBFrpgosqN9bs5PqlB4Q61U/QytQ==} dependencies: fast-safe-stringify: 2.1.1 dev: false - /ethereum-cryptography/0.1.3: + /ethereum-cryptography@0.1.3: resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} dependencies: '@types/pbkdf2': 3.1.0 @@ -7687,7 +7731,7 @@ packages: setimmediate: 1.0.5 dev: false - /ethereum-cryptography/1.2.0: + /ethereum-cryptography@1.2.0: resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} dependencies: '@noble/hashes': 1.2.0 @@ -7696,7 +7740,7 @@ packages: '@scure/bip39': 1.1.1 dev: false - /ethereum-cryptography/2.0.0: + /ethereum-cryptography@2.0.0: resolution: {integrity: sha512-g25m4EtfQGjstWgVE1aIz7XYYjf3kH5kG17ULWVB5dH6uLahsoltOhACzSxyDV+fhn4gbR4xRrOXGe6r2uh4Bg==} dependencies: '@noble/curves': 1.0.0 @@ -7705,14 +7749,14 @@ packages: '@scure/bip39': 1.2.0 dev: false - /ethereumjs-abi/0.6.8: + /ethereumjs-abi@0.6.8: resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} dependencies: bn.js: 4.12.0 ethereumjs-util: 6.2.1 dev: false - /ethereumjs-util/6.2.1: + /ethereumjs-util@6.2.1: resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} dependencies: '@types/bn.js': 4.11.6 @@ -7724,7 +7768,7 @@ packages: rlp: 2.2.7 dev: false - /ethers/5.7.2: + /ethers@5.7.2: resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} dependencies: '@ethersproject/abi': 5.7.0 @@ -7762,7 +7806,7 @@ packages: - utf-8-validate dev: false - /ethjs-util/0.1.6: + /ethjs-util@0.1.6: resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} engines: {node: '>=6.5.0', npm: '>=3'} dependencies: @@ -7770,16 +7814,16 @@ packages: strip-hex-prefix: 1.0.0 dev: false - /eventemitter3/4.0.7: + /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: false - /events/3.3.0: + /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} dev: false - /evmosjs/0.2.17: + /evmosjs@0.2.17: resolution: {integrity: sha512-VCFZjxpbL2cy/vXKJwjAzFnOVllIo+qiJz4Fqqleoja0dr+cYY4s+ndXxAGIJq0/pOuQL+SqxukOxRDxcTN29w==} requiresBuild: true dependencies: @@ -7792,13 +7836,13 @@ packages: shx: 0.3.4 dev: false - /evp_bytestokey/1.0.3: + /evp_bytestokey@1.0.3: resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} dependencies: md5.js: 1.3.5 safe-buffer: 5.2.1 - /execa/5.1.1: + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} dependencies: @@ -7813,7 +7857,7 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa/7.1.1: + /execa@7.1.1: resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: @@ -7828,12 +7872,12 @@ packages: strip-final-newline: 3.0.0 dev: true - /exit/0.1.2: + /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} dev: true - /expect/29.5.0: + /expect@29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -7844,11 +7888,11 @@ packages: jest-util: 29.5.0 dev: true - /extendable-error/0.1.7: + /extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} dev: true - /external-editor/3.1.0: + /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} dependencies: @@ -7857,19 +7901,19 @@ packages: tmp: 0.0.33 dev: true - /eyes/0.1.8: + /eyes@0.1.8: resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} engines: {node: '> 0.1.90'} dev: false - /fast-deep-equal/3.1.3: + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - /fast-diff/1.3.0: + /fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /fast-glob/3.2.12: + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} dependencies: @@ -7879,94 +7923,94 @@ packages: merge2: 1.4.1 micromatch: 4.0.5 - /fast-json-stable-stringify/2.1.0: + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - /fast-levenshtein/2.0.6: + /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - /fast-redact/3.2.0: + /fast-redact@3.2.0: resolution: {integrity: sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==} engines: {node: '>=6'} dev: false - /fast-safe-stringify/2.1.1: + /fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} dev: false - /fast-stable-stringify/1.0.0: + /fast-stable-stringify@1.0.0: resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} dev: false - /fastq/1.15.0: + /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 - /fb-watchman/2.0.2: + /fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 dev: true - /file-entry-cache/6.0.1: + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 - /file-uri-to-path/1.0.0: + /file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} dev: false - /fill-range/7.0.1: + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - /filter-obj/1.1.0: + /filter-obj@1.1.0: resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} engines: {node: '>=0.10.0'} dev: false - /find-up/4.1.0: + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - /find-up/5.0.0: + /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - /find-yarn-workspace-root2/1.2.16: + /find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: micromatch: 4.0.5 pkg-dir: 4.2.0 dev: true - /flat-cache/3.0.4: + /flat-cache@3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flatted: 3.2.7 rimraf: 3.0.2 - /flat/5.0.2: + /flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true dev: true - /flatted/3.2.7: + /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - /follow-redirects/1.15.2: + /follow-redirects@1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} peerDependencies: @@ -7976,16 +8020,16 @@ packages: optional: true dev: false - /for-each/0.3.3: + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 - /foreach/2.0.6: + /foreach@2.0.6: resolution: {integrity: sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==} dev: true - /form-data/4.0.0: + /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} dependencies: @@ -7994,7 +8038,7 @@ packages: mime-types: 2.1.35 dev: false - /fs-extra/11.1.1: + /fs-extra@11.1.1: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} engines: {node: '>=14.14'} dependencies: @@ -8003,7 +8047,7 @@ packages: universalify: 2.0.0 dev: true - /fs-extra/7.0.1: + /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -8012,7 +8056,7 @@ packages: universalify: 0.1.2 dev: true - /fs-extra/8.1.0: + /fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -8021,10 +8065,10 @@ packages: universalify: 0.1.2 dev: true - /fs.realpath/1.0.0: + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents/2.3.2: + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -8032,10 +8076,10 @@ packages: dev: true optional: true - /function-bind/1.1.1: + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - /function.prototype.name/1.1.5: + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} dependencies: @@ -8044,36 +8088,35 @@ packages: es-abstract: 1.21.2 functions-have-names: 1.2.3 - /functions-have-names/1.2.3: + /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - /fwd-stream/1.0.4: + /fwd-stream@1.0.4: resolution: {integrity: sha512-q2qaK2B38W07wfPSQDKMiKOD5Nzv2XyuvQlrmh1q0pxyHNanKHq8lwQ6n9zHucAwA5EbzRJKEgds2orn88rYTg==} dependencies: readable-stream: 1.0.34 dev: true - /gensync/1.0.0-beta.2: + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - dev: true - /get-caller-file/2.0.5: + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - /get-func-name/2.0.0: + /get-func-name@2.0.0: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true - /get-intrinsic/1.2.0: + /get-intrinsic@1.2.0: resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} dependencies: function-bind: 1.1.1 has: 1.0.3 has-symbols: 1.0.3 - /get-intrinsic/1.2.1: + /get-intrinsic@1.2.1: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: function-bind: 1.1.1 @@ -8081,33 +8124,33 @@ packages: has-proto: 1.0.1 has-symbols: 1.0.3 - /get-nonce/1.0.1: + /get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} dev: false - /get-package-type/0.1.0: + /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} dev: true - /get-stream/6.0.1: + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} dev: true - /get-symbol-description/1.0.0: + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 - /get-tsconfig/4.5.0: + /get-tsconfig@4.5.0: resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} dev: false - /git-raw-commits/2.0.11: + /git-raw-commits@2.0.11: resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} engines: {node: '>=10'} hasBin: true @@ -8119,19 +8162,19 @@ packages: through2: 4.0.2 dev: true - /glob-parent/5.1.2: + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - /glob-parent/6.0.2: + /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 - /glob/7.1.7: + /glob@7.1.7: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} dependencies: fs.realpath: 1.0.0 @@ -8142,7 +8185,7 @@ packages: path-is-absolute: 1.0.1 dev: false - /glob/7.2.0: + /glob@7.2.0: resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} dependencies: fs.realpath: 1.0.0 @@ -8153,7 +8196,7 @@ packages: path-is-absolute: 1.0.1 dev: true - /glob/7.2.3: + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 @@ -8163,35 +8206,34 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /global-dirs/0.1.1: + /global-dirs@0.1.1: resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} engines: {node: '>=4'} dependencies: ini: 1.3.8 dev: true - /globals/11.12.0: + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - dev: true - /globals/13.20.0: + /globals@13.20.0: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 - /globalthis/1.0.3: + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.0 - /globalyzer/0.1.0: + /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} dev: false - /globby/10.0.1: + /globby@10.0.1: resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==} engines: {node: '>=8'} dependencies: @@ -8205,7 +8247,7 @@ packages: slash: 3.0.0 dev: true - /globby/11.1.0: + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: @@ -8216,7 +8258,7 @@ packages: merge2: 1.4.1 slash: 3.0.0 - /globby/13.1.3: + /globby@13.1.3: resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -8227,71 +8269,70 @@ packages: slash: 4.0.0 dev: false - /globrex/0.1.2: + /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} dev: false - /google-protobuf/3.21.2: + /google-protobuf@3.21.2: resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} dev: false - /gopd/1.0.1: + /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.1 - /graceful-fs/4.2.11: + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - /grapheme-splitter/1.0.4: + /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - /graphemer/1.4.0: + /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true - /hard-rejection/2.1.0: + /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} dev: true - /has-bigints/1.0.2: + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - /has-flag/3.0.0: + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - /has-flag/4.0.0: + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - /has-property-descriptors/1.0.0: + /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.2.0 - /has-proto/1.0.1: + /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} - /has-symbols/1.0.3: + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - /has-tostringtag/1.0.0: + /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - /has/1.0.3: + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - /hash-base/3.1.0: + /hash-base@3.1.0: resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} engines: {node: '>=4'} dependencies: @@ -8299,96 +8340,96 @@ packages: readable-stream: 3.6.2 safe-buffer: 5.2.1 - /hash.js/1.1.7: + /hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 - /he/1.2.0: + /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true dev: true - /hey-listen/1.0.8: + /hey-listen@1.0.8: resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} dev: false - /hmac-drbg/1.0.1: + /hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} dependencies: hash.js: 1.1.7 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - /hosted-git-info/2.8.9: + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true - /hosted-git-info/4.1.0: + /hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} dependencies: lru-cache: 6.0.0 dev: true - /html-escaper/2.0.2: + /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /human-id/1.0.2: + /human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} dev: true - /human-signals/2.1.0: + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} dev: true - /human-signals/4.3.1: + /human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} dev: true - /humanize-ms/1.2.1: + /humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} dependencies: ms: 2.1.3 dev: false - /husky/8.0.3: + /husky@8.0.3: resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} hasBin: true dev: true - /iconv-lite/0.4.24: + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: true - /idb-wrapper/1.7.2: + /idb-wrapper@1.7.2: resolution: {integrity: sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg==} dev: true - /ieee754/1.2.1: + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: false - /ignore/5.2.4: + /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} - /import-fresh/3.3.0: + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - /import-local/3.1.0: + /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} hasBin: true @@ -8397,33 +8438,33 @@ packages: resolve-cwd: 3.0.0 dev: true - /imurmurhash/0.1.4: + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - /indent-string/4.0.0: + /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} dev: true - /indexof/0.0.1: + /indexof@0.0.1: resolution: {integrity: sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==} dev: true - /inflight/1.0.6: + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits/2.0.4: + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - /ini/1.3.8: + /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: true - /internal-slot/1.0.5: + /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: @@ -8431,238 +8472,238 @@ packages: has: 1.0.3 side-channel: 1.0.4 - /interpret/1.4.0: + /interpret@1.4.0: resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} engines: {node: '>= 0.10'} dev: false - /invariant/2.2.4: + /invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: loose-envify: 1.4.0 dev: false - /is-arguments/1.1.1: + /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - /is-array-buffer/3.0.2: + /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 is-typed-array: 1.1.10 - /is-arrayish/0.2.1: + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true - /is-bigint/1.0.4: + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 - /is-binary-path/2.1.0: + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 dev: true - /is-boolean-object/1.1.2: + /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - /is-builtin-module/3.2.1: + /is-builtin-module@3.2.1: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} dependencies: builtin-modules: 3.3.0 dev: true - /is-callable/1.2.7: + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - /is-ci/3.0.1: + /is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: ci-info: 3.8.0 dev: true - /is-core-module/2.12.0: + /is-core-module@2.12.0: resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} dependencies: has: 1.0.3 dev: false - /is-core-module/2.12.1: + /is-core-module@2.12.1: resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} dependencies: has: 1.0.3 - /is-date-object/1.0.5: + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - /is-docker/2.2.1: + /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true dev: false - /is-extglob/2.1.1: + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - /is-fullwidth-code-point/3.0.0: + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - /is-fullwidth-code-point/4.0.0: + /is-fullwidth-code-point@4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} dev: true - /is-generator-fn/2.1.0: + /is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} dev: true - /is-generator-function/1.0.10: + /is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: false - /is-glob/4.0.3: + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - /is-hex-prefixed/1.0.0: + /is-hex-prefixed@1.0.0: resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} engines: {node: '>=6.5.0', npm: '>=3'} dev: false - /is-map/2.0.2: + /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - /is-module/1.0.0: + /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true - /is-negative-zero/2.0.2: + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} - /is-number-object/1.0.7: + /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - /is-number/7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - /is-obj/2.0.0: + /is-obj@2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} dev: true - /is-object/0.1.2: + /is-object@0.1.2: resolution: {integrity: sha512-GkfZZlIZtpkFrqyAXPQSRBMsaHAw+CgoKe2HXAkjd/sfoI9+hS8PT4wg2rJxdQyUKr7N2vHJbg7/jQtE5l5vBQ==} dev: true - /is-path-inside/3.0.3: + /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - /is-plain-obj/1.1.0: + /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} dev: true - /is-plain-obj/2.1.0: + /is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} dev: true - /is-plain-object/3.0.1: + /is-plain-object@3.0.1: resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} engines: {node: '>=0.10.0'} dev: true - /is-reference/1.2.1: + /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: '@types/estree': 1.0.1 dev: true - /is-regex/1.1.4: + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - /is-set/2.0.2: + /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - /is-shared-array-buffer/1.0.2: + /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 - /is-stream/2.0.1: + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} dev: true - /is-stream/3.0.0: + /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-string/1.0.7: + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - /is-subdir/1.2.0: + /is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} dependencies: better-path-resolve: 1.0.0 dev: true - /is-symbol/1.0.4: + /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - /is-text-path/1.0.1: + /is-text-path@1.0.1: resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} engines: {node: '>=0.10.0'} dependencies: text-extensions: 1.9.0 dev: true - /is-typed-array/1.1.10: + /is-typed-array@1.1.10: resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} engines: {node: '>= 0.4'} dependencies: @@ -8672,64 +8713,64 @@ packages: gopd: 1.0.1 has-tostringtag: 1.0.0 - /is-typedarray/1.0.0: + /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} dev: false - /is-unicode-supported/0.1.0: + /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} dev: true - /is-weakmap/2.0.1: + /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - /is-weakref/1.0.2: + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 - /is-weakset/2.0.2: + /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 - /is-windows/1.0.2: + /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} dev: true - /is-wsl/2.2.0: + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} dependencies: is-docker: 2.2.1 dev: false - /is/0.2.7: + /is@0.2.7: resolution: {integrity: sha512-ajQCouIvkcSnl2iRdK70Jug9mohIHVX9uKpoWnl115ov0R5mzBvRrXxrnHbsA+8AdwCwc/sfw7HXmd4I5EJBdQ==} dev: true - /isarray/0.0.1: + /isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} dev: true - /isarray/1.0.0: + /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true - /isarray/2.0.5: + /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - /isbuffer/0.0.0: + /isbuffer@0.0.0: resolution: {integrity: sha512-xU+NoHp+YtKQkaM2HsQchYn0sltxMxew0HavMfHbjnucBoTSGbw745tL+Z7QBANleWM1eEQMenEpi174mIeS4g==} dev: true - /isexe/2.0.0: + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /isomorphic-ws/4.0.1_ws@7.5.9: + /isomorphic-ws@4.0.1(ws@7.5.9): resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} peerDependencies: ws: '*' @@ -8737,7 +8778,7 @@ packages: ws: 7.5.9 dev: false - /isomorphic-ws/5.0.0_ws@8.12.0: + /isomorphic-ws@5.0.0(ws@8.12.0): resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} peerDependencies: ws: '*' @@ -8745,12 +8786,12 @@ packages: ws: 8.12.0 dev: false - /istanbul-lib-coverage/3.2.0: + /istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} dev: true - /istanbul-lib-instrument/5.2.1: + /istanbul-lib-instrument@5.2.1: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: @@ -8763,7 +8804,7 @@ packages: - supports-color dev: true - /istanbul-lib-report/3.0.0: + /istanbul-lib-report@3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} engines: {node: '>=8'} dependencies: @@ -8772,18 +8813,18 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps/4.0.1: + /istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: - supports-color dev: true - /istanbul-reports/3.1.5: + /istanbul-reports@3.1.5: resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} engines: {node: '>=8'} dependencies: @@ -8791,7 +8832,7 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jayson/4.1.0: + /jayson@4.1.0: resolution: {integrity: sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==} engines: {node: '>=8'} hasBin: true @@ -8804,7 +8845,7 @@ packages: delay: 5.0.0 es6-promisify: 5.0.0 eyes: 0.1.8 - isomorphic-ws: 4.0.1_ws@7.5.9 + isomorphic-ws: 4.0.1(ws@7.5.9) json-stringify-safe: 5.0.1 uuid: 8.3.2 ws: 7.5.9 @@ -8813,7 +8854,7 @@ packages: - utf-8-validate dev: false - /jest-changed-files/29.5.0: + /jest-changed-files@29.5.0: resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8821,7 +8862,7 @@ packages: p-limit: 3.1.0 dev: true - /jest-circus/29.5.0: + /jest-circus@29.5.0: resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8849,7 +8890,7 @@ packages: - supports-color dev: true - /jest-cli/29.5.0_u3tjahz4lx2ow4rgesw7wigoy4: + /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -8859,14 +8900,14 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0_ts-node@10.9.1 + '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0_u3tjahz4lx2ow4rgesw7wigoy4 + jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -8877,7 +8918,7 @@ packages: - ts-node dev: true - /jest-config/29.5.0_divpegkz2qugvd2racsiwsfxku: + /jest-config@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -8892,8 +8933,8 @@ packages: '@babel/core': 7.22.1 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.2.5 - babel-jest: 29.5.0_@babel+core@7.22.1 + '@types/node': 18.16.18 + babel-jest: 29.5.0(@babel/core@7.22.1) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 @@ -8912,12 +8953,12 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1_gbfmtwj2t57hq5iibp7xw5qwjq + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true - /jest-config/29.5.0_u3tjahz4lx2ow4rgesw7wigoy4: + /jest-config@29.5.0(@types/node@20.2.5)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -8932,8 +8973,8 @@ packages: '@babel/core': 7.22.1 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.16.16 - babel-jest: 29.5.0_@babel+core@7.22.1 + '@types/node': 20.2.5 + babel-jest: 29.5.0(@babel/core@7.22.1) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 @@ -8952,12 +8993,12 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1_gbfmtwj2t57hq5iibp7xw5qwjq + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true - /jest-diff/29.5.0: + /jest-diff@29.5.0: resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8967,14 +9008,14 @@ packages: pretty-format: 29.5.0 dev: true - /jest-docblock/29.4.3: + /jest-docblock@29.4.3: resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each/29.5.0: + /jest-each@29.5.0: resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8985,7 +9026,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-environment-node/29.5.0: + /jest-environment-node@29.5.0: resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8997,12 +9038,12 @@ packages: jest-util: 29.5.0 dev: true - /jest-get-type/29.4.3: + /jest-get-type@29.4.3: resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map/29.5.0: + /jest-haste-map@29.5.0: resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9021,7 +9062,7 @@ packages: fsevents: 2.3.2 dev: true - /jest-leak-detector/29.5.0: + /jest-leak-detector@29.5.0: resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9029,7 +9070,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-matcher-utils/29.5.0: + /jest-matcher-utils@29.5.0: resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9039,7 +9080,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-message-util/29.5.0: + /jest-message-util@29.5.0: resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9054,7 +9095,7 @@ packages: stack-utils: 2.0.6 dev: true - /jest-mock/29.5.0: + /jest-mock@29.5.0: resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9063,7 +9104,7 @@ packages: jest-util: 29.5.0 dev: true - /jest-pnp-resolver/1.2.3_jest-resolve@29.5.0: + /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} peerDependencies: @@ -9075,12 +9116,12 @@ packages: jest-resolve: 29.5.0 dev: true - /jest-regex-util/29.4.3: + /jest-regex-util@29.4.3: resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies/29.5.0: + /jest-resolve-dependencies@29.5.0: resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9090,14 +9131,14 @@ packages: - supports-color dev: true - /jest-resolve/29.5.0: + /jest-resolve@29.5.0: resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 jest-haste-map: 29.5.0 - jest-pnp-resolver: 1.2.3_jest-resolve@29.5.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) jest-util: 29.5.0 jest-validate: 29.5.0 resolve: 1.22.2 @@ -9105,7 +9146,7 @@ packages: slash: 3.0.0 dev: true - /jest-runner/29.5.0: + /jest-runner@29.5.0: resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9134,7 +9175,7 @@ packages: - supports-color dev: true - /jest-runtime/29.5.0: + /jest-runtime@29.5.0: resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9164,14 +9205,14 @@ packages: - supports-color dev: true - /jest-snapshot/29.5.0: + /jest-snapshot@29.5.0: resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.22.1 '@babel/generator': 7.21.5 - '@babel/plugin-syntax-jsx': 7.21.4_@babel+core@7.22.1 - '@babel/plugin-syntax-typescript': 7.21.4_@babel+core@7.22.1 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.1) + '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.1) '@babel/traverse': 7.21.5 '@babel/types': 7.21.5 '@jest/expect-utils': 29.5.0 @@ -9179,7 +9220,7 @@ packages: '@jest/types': 29.5.0 '@types/babel__traverse': 7.18.5 '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.22.1 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.1) chalk: 4.1.2 expect: 29.5.0 graceful-fs: 4.2.11 @@ -9195,7 +9236,7 @@ packages: - supports-color dev: true - /jest-util/29.5.0: + /jest-util@29.5.0: resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9207,7 +9248,7 @@ packages: picomatch: 2.3.1 dev: true - /jest-validate/29.5.0: + /jest-validate@29.5.0: resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9219,7 +9260,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-watcher/29.5.0: + /jest-watcher@29.5.0: resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9233,7 +9274,7 @@ packages: string-length: 4.0.2 dev: true - /jest-worker/26.6.2: + /jest-worker@26.6.2: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: @@ -9242,7 +9283,7 @@ packages: supports-color: 7.2.0 dev: true - /jest-worker/29.5.0: + /jest-worker@29.5.0: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9252,7 +9293,7 @@ packages: supports-color: 8.1.1 dev: true - /jest/29.5.0_u3tjahz4lx2ow4rgesw7wigoy4: + /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -9262,28 +9303,28 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0_ts-node@10.9.1 + '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0_u3tjahz4lx2ow4rgesw7wigoy4 + jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color - ts-node dev: true - /js-sdsl/4.4.0: + /js-sdsl@4.4.0: resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} dev: false - /js-sha3/0.8.0: + /js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} dev: false - /js-tokens/4.0.0: + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-yaml/3.14.1: + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true dependencies: @@ -9291,32 +9332,31 @@ packages: esprima: 4.0.1 dev: true - /js-yaml/4.1.0: + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 - /jsesc/0.5.0: + /jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true dev: true - /jsesc/2.5.2: + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true - dev: true - /json-parse-better-errors/1.0.2: + /json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} dev: true - /json-parse-even-better-errors/2.3.1: + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true - /json-rpc-engine/6.1.0: + /json-rpc-engine@6.1.0: resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} engines: {node: '>=10.0.0'} dependencies: @@ -9324,43 +9364,42 @@ packages: eth-rpc-errors: 4.0.2 dev: false - /json-rpc-random-id/1.0.1: + /json-rpc-random-id@1.0.1: resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} dev: false - /json-schema-traverse/0.4.1: + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - /json-schema-traverse/1.0.0: + /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: true - /json-stable-stringify-without-jsonify/1.0.1: + /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - /json-stringify-safe/5.0.1: + /json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} dev: false - /json5/1.0.2: + /json5@1.0.2: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true dependencies: minimist: 1.2.8 - /json5/2.2.3: + /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - dev: true - /jsonfile/4.0.0: + /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.11 dev: true - /jsonfile/6.1.0: + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.0 @@ -9368,18 +9407,18 @@ packages: graceful-fs: 4.2.11 dev: true - /jsonparse/1.3.1: + /jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} - /jsx-ast-utils/3.3.3: + /jsx-ast-utils@3.3.3: resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} engines: {node: '>=4.0'} dependencies: array-includes: 3.1.6 object.assign: 4.1.4 - /keccak/3.0.3: + /keccak@3.0.3: resolution: {integrity: sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==} engines: {node: '>=10.0.0'} requiresBuild: true @@ -9389,34 +9428,34 @@ packages: readable-stream: 3.6.2 dev: false - /keyvaluestorage-interface/1.0.0: + /keyvaluestorage-interface@1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} dev: false - /kind-of/6.0.3: + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} dev: true - /kleur/3.0.3: + /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} dev: true - /kleur/4.1.5: + /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} dev: true - /language-subtag-registry/0.3.22: + /language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} - /language-tags/1.0.5: + /language-tags@1.0.5: resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} dependencies: language-subtag-registry: 0.3.22 - /level-blobs/0.1.7: + /level-blobs@0.1.7: resolution: {integrity: sha512-n0iYYCGozLd36m/Pzm206+brIgXP8mxPZazZ6ZvgKr+8YwOZ8/PPpYC5zMUu2qFygRN8RO6WC/HH3XWMW7RMVg==} dependencies: level-peek: 1.0.6 @@ -9424,7 +9463,7 @@ packages: readable-stream: 1.1.14 dev: true - /level-filesystem/1.2.0: + /level-filesystem@1.2.0: resolution: {integrity: sha512-PhXDuCNYpngpxp3jwMT9AYBMgOvB6zxj3DeuIywNKmZqFj2djj9XfT2XDVslfqmo0Ip79cAd3SBy3FsfOZPJ1g==} dependencies: concat-stream: 1.6.2 @@ -9438,23 +9477,23 @@ packages: xtend: 2.2.0 dev: true - /level-fix-range/1.0.2: + /level-fix-range@1.0.2: resolution: {integrity: sha512-9llaVn6uqBiSlBP+wKiIEoBa01FwEISFgHSZiyec2S0KpyLUkGR4afW/FCZ/X8y+QJvzS0u4PGOlZDdh1/1avQ==} dev: true - /level-fix-range/2.0.0: + /level-fix-range@2.0.0: resolution: {integrity: sha512-WrLfGWgwWbYPrHsYzJau+5+te89dUbENBg3/lsxOs4p2tYOhCHjbgXxBAj4DFqp3k/XBwitcRXoCh8RoCogASA==} dependencies: clone: 0.1.19 dev: true - /level-hooks/4.5.0: + /level-hooks@4.5.0: resolution: {integrity: sha512-fxLNny/vL/G4PnkLhWsbHnEaRi+A/k8r5EH/M77npZwYL62RHi2fV0S824z3QdpAk6VTgisJwIRywzBHLK4ZVA==} dependencies: string-range: 1.2.2 dev: true - /level-js/2.2.4: + /level-js@2.2.4: resolution: {integrity: sha512-lZtjt4ZwHE00UMC1vAb271p9qzg8vKlnDeXfIesH3zL0KxhHRDjClQLGLWhyR0nK4XARnd4wc/9eD1ffd4PshQ==} dependencies: abstract-leveldown: 0.12.4 @@ -9465,13 +9504,13 @@ packages: xtend: 2.1.2 dev: true - /level-peek/1.0.6: + /level-peek@1.0.6: resolution: {integrity: sha512-TKEzH5TxROTjQxWMczt9sizVgnmJ4F3hotBI48xCTYvOKd/4gA/uY0XjKkhJFo6BMic8Tqjf6jFMLWeg3MAbqQ==} dependencies: level-fix-range: 1.0.2 dev: true - /level-sublevel/5.2.3: + /level-sublevel@5.2.3: resolution: {integrity: sha512-tO8jrFp+QZYrxx/Gnmjawuh1UBiifpvKNAcm4KCogesWr1Nm2+ckARitf+Oo7xg4OHqMW76eAqQ204BoIlscjA==} dependencies: level-fix-range: 2.0.0 @@ -9480,7 +9519,7 @@ packages: xtend: 2.0.6 dev: true - /levelup/0.18.6: + /levelup@0.18.6: resolution: {integrity: sha512-uB0auyRqIVXx+hrpIUtol4VAPhLRcnxcOsd2i2m6rbFIDarO5dnrupLOStYYpEcu8ZT087Z9HEuYw1wjr6RL6Q==} dependencies: bl: 0.8.2 @@ -9492,38 +9531,38 @@ packages: xtend: 3.0.0 dev: true - /leven/3.1.0: + /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} dev: true - /levn/0.4.1: + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - /libsodium-wrappers/0.7.11: + /libsodium-wrappers@0.7.11: resolution: {integrity: sha512-SrcLtXj7BM19vUKtQuyQKiQCRJPgbpauzl3s0rSwD+60wtHqSUuqcoawlMDheCJga85nKOQwxNYQxf/CKAvs6Q==} dependencies: libsodium: 0.7.11 dev: false - /libsodium/0.7.11: + /libsodium@0.7.11: resolution: {integrity: sha512-WPfJ7sS53I2s4iM58QxY3Inb83/6mjlYgcmZs7DJsvDlnmVUwNinBCi5vBT43P6bHRy01O4zsMU2CoVR6xJ40A==} dev: false - /lilconfig/2.1.0: + /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} dev: true - /lines-and-columns/1.2.4: + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true - /link-module-alias/1.2.0: + /link-module-alias@1.2.0: resolution: {integrity: sha512-ahPjXepbSVKbahTB6LxR//VHm8HPfI+QQygCH+E82spBY4HR5VPJTvlhKBc9F7muVxnS6C1rRfoPOXAbWO/fyw==} engines: {node: '> 8.0.0'} hasBin: true @@ -9531,7 +9570,7 @@ packages: chalk: 2.4.2 dev: false - /lint-staged/13.2.2: + /lint-staged@13.2.2: resolution: {integrity: sha512-71gSwXKy649VrSU09s10uAT0rWCcY3aewhMaHyl2N84oBk4Xs9HgxvUp3AYu+bNsK4NrOYYxvSgg7FyGJ+jGcA==} engines: {node: ^14.13.1 || >=16.0.0} hasBin: true @@ -9539,7 +9578,7 @@ packages: chalk: 5.2.0 cli-truncate: 3.1.0 commander: 10.0.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) execa: 7.1.1 lilconfig: 2.1.0 listr2: 5.0.8 @@ -9554,7 +9593,7 @@ packages: - supports-color dev: true - /listr2/5.0.8: + /listr2@5.0.8: resolution: {integrity: sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==} engines: {node: ^14.13.1 || >=16.0.0} peerDependencies: @@ -9573,7 +9612,7 @@ packages: wrap-ansi: 7.0.0 dev: true - /lit-element/3.3.2: + /lit-element@3.3.2: resolution: {integrity: sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ==} dependencies: '@lit-labs/ssr-dom-shim': 1.1.1 @@ -9581,13 +9620,13 @@ packages: lit-html: 2.7.4 dev: false - /lit-html/2.7.4: + /lit-html@2.7.4: resolution: {integrity: sha512-/Jw+FBpeEN+z8X6PJva5n7+0MzCVAH2yypN99qHYYkq8bI+j7I39GH+68Z/MZD6rGKDK9RpzBw7CocfmHfq6+g==} dependencies: '@types/trusted-types': 2.0.3 dev: false - /lit/2.7.5: + /lit@2.7.5: resolution: {integrity: sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ==} dependencies: '@lit/reactive-element': 1.6.2 @@ -9595,7 +9634,7 @@ packages: lit-html: 2.7.4 dev: false - /load-json-file/4.0.0: + /load-json-file@4.0.0: resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} engines: {node: '>=4'} dependencies: @@ -9605,7 +9644,7 @@ packages: strip-bom: 3.0.0 dev: true - /load-yaml-file/0.2.0: + /load-yaml-file@0.2.0: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} engines: {node: '>=6'} dependencies: @@ -9615,74 +9654,74 @@ packages: strip-bom: 3.0.0 dev: true - /locate-path/5.0.0: + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} dependencies: p-locate: 4.1.0 - /locate-path/6.0.0: + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - /lodash.camelcase/4.3.0: + /lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} dev: true - /lodash.debounce/4.0.8: + /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: true - /lodash.isequal/4.5.0: + /lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} dev: false - /lodash.isfunction/3.0.9: + /lodash.isfunction@3.0.9: resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} dev: true - /lodash.isplainobject/4.0.6: + /lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} dev: true - /lodash.kebabcase/4.1.1: + /lodash.kebabcase@4.1.1: resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} dev: true - /lodash.memoize/4.1.2: + /lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} dev: true - /lodash.merge/4.6.2: + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - /lodash.mergewith/4.6.2: + /lodash.mergewith@4.6.2: resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} dev: true - /lodash.snakecase/4.1.1: + /lodash.snakecase@4.1.1: resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} dev: true - /lodash.startcase/4.4.0: + /lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true - /lodash.uniq/4.5.0: + /lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} dev: true - /lodash.upperfirst/4.3.1: + /lodash.upperfirst@4.3.1: resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} dev: true - /lodash/4.17.21: + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true - /log-symbols/4.1.0: + /log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} dependencies: @@ -9690,7 +9729,7 @@ packages: is-unicode-supported: 0.1.0 dev: true - /log-update/4.0.0: + /log-update@4.0.0: resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} engines: {node: '>=10'} dependencies: @@ -9700,103 +9739,102 @@ packages: wrap-ansi: 6.2.0 dev: true - /long/4.0.0: + /long@4.0.0: resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} dev: false - /long/5.2.1: + /long@5.2.1: resolution: {integrity: sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==} dev: false - /loose-envify/1.4.0: + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 - /loupe/2.3.6: + /loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: get-func-name: 2.0.0 dev: true - /lru-cache/4.1.5: + /lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: pseudomap: 1.0.2 yallist: 2.1.2 dev: true - /lru-cache/5.1.1: + /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 - dev: true - /lru-cache/6.0.0: + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 - /ltgt/2.2.1: + /ltgt@2.2.1: resolution: {integrity: sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==} dev: true - /magic-string/0.25.9: + /magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 dev: true - /magic-string/0.27.0: + /magic-string@0.27.0: resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /make-dir/3.1.0: + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: semver: 6.3.0 dev: true - /make-error/1.3.6: + /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true - /makeerror/1.0.12: + /makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 dev: true - /map-obj/1.0.1: + /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} dev: true - /map-obj/4.3.0: + /map-obj@4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} dev: true - /md5.js/1.3.5: + /md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} dependencies: hash-base: 3.1.0 inherits: 2.0.4 safe-buffer: 5.2.1 - /media-query-parser/2.0.2: + /media-query-parser@2.0.2: resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} dependencies: '@babel/runtime': 7.22.3 dev: false - /meow/6.1.1: + /meow@6.1.1: resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} dependencies: @@ -9813,7 +9851,7 @@ packages: yargs-parser: 18.1.3 dev: true - /meow/8.1.2: + /meow@8.1.2: resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} engines: {node: '>=10'} dependencies: @@ -9830,22 +9868,22 @@ packages: yargs-parser: 20.2.9 dev: true - /merge-stream/2.0.0: + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true - /merge2/1.4.1: + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /micromatch/4.0.5: + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 - /miller-rabin/4.0.1: + /miller-rabin@4.0.1: resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} hasBin: true dependencies: @@ -9853,58 +9891,58 @@ packages: brorand: 1.1.0 dev: true - /mime-db/1.52.0: + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} dev: false - /mime-types/2.1.35: + /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: false - /mime/3.0.0: + /mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} hasBin: true dev: true - /mimic-fn/2.1.0: + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} dev: true - /mimic-fn/4.0.0: + /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} dev: true - /min-indent/1.0.1: + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} dev: true - /minimalistic-assert/1.0.1: + /minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - /minimalistic-crypto-utils/1.0.1: + /minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - /minimatch/3.1.2: + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - /minimatch/5.0.1: + /minimatch@5.0.1: resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 dev: true - /minimist-options/4.1.0: + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} dependencies: @@ -9913,15 +9951,15 @@ packages: kind-of: 6.0.3 dev: true - /minimist/1.2.8: + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - /mixme/0.5.9: + /mixme@0.5.9: resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} engines: {node: '>= 8.0.0'} dev: true - /mocha/10.2.0: + /mocha@10.2.0: resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==} engines: {node: '>= 14.0.0'} hasBin: true @@ -9929,7 +9967,7 @@ packages: ansi-colors: 4.1.1 browser-stdout: 1.3.1 chokidar: 3.5.3 - debug: 4.3.4_supports-color@8.1.1 + debug: 4.3.4(supports-color@8.1.1) diff: 5.0.0 escape-string-regexp: 4.0.0 find-up: 5.0.0 @@ -9949,7 +9987,7 @@ packages: yargs-unparser: 2.0.0 dev: true - /motion/10.16.2: + /motion@10.16.2: resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} dependencies: '@motionone/animation': 10.15.1 @@ -9960,36 +9998,36 @@ packages: '@motionone/vue': 10.16.2 dev: false - /ms/2.1.2: + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - /ms/2.1.3: + /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /multiformats/9.9.0: + /multiformats@9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} dev: false - /nanoid/3.3.3: + /nanoid@3.3.3: resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true - /nanoid/3.3.6: + /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: false - /natural-compare-lite/1.4.0: + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true - /natural-compare/1.4.0: + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - /next/13.1.6_biqbaboplfbrettd7655fr4n2y: + /next@13.1.6(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==} engines: {node: '>=14.6.0'} hasBin: true @@ -10012,8 +10050,8 @@ packages: caniuse-lite: 1.0.30001486 postcss: 8.4.14 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - styled-jsx: 5.1.1_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.22.5)(react@18.2.0) optionalDependencies: '@next/swc-android-arm-eabi': 13.1.6 '@next/swc-android-arm64': 13.1.6 @@ -10033,11 +10071,11 @@ packages: - babel-plugin-macros dev: false - /node-addon-api/2.0.2: + /node-addon-api@2.0.2: resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} dev: false - /node-fetch/2.6.11: + /node-fetch@2.6.11: resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} engines: {node: 4.x || >=6.0.0} peerDependencies: @@ -10048,20 +10086,19 @@ packages: dependencies: whatwg-url: 5.0.0 - /node-gyp-build/4.6.0: + /node-gyp-build@4.6.0: resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} hasBin: true dev: false - /node-int64/0.4.0: + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-releases/2.0.12: + /node-releases@2.0.12: resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} - dev: true - /normalize-package-data/2.5.0: + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 @@ -10070,7 +10107,7 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-package-data/3.0.3: + /normalize-package-data@3.0.3: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} engines: {node: '>=10'} dependencies: @@ -10080,40 +10117,40 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-path/3.0.0: + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true - /npm-run-path/4.0.1: + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 dev: true - /npm-run-path/5.1.0: + /npm-run-path@5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 dev: true - /object-assign/4.1.1: + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - /object-inspect/1.12.3: + /object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} - /object-is/1.1.5: + /object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - /object-keys/0.2.0: + /object-keys@0.2.0: resolution: {integrity: sha512-XODjdR2pBh/1qrjPcbSeSgEtKbYo7LqYNq64/TPuCf7j9SfDD3i21yatKoIy39yIWNvVM59iutfQQpCv1RfFzA==} deprecated: Please update to the latest object-keys dependencies: @@ -10122,15 +10159,15 @@ packages: is: 0.2.7 dev: true - /object-keys/0.4.0: + /object-keys@0.4.0: resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} dev: true - /object-keys/1.1.1: + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - /object.assign/4.1.4: + /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: @@ -10139,7 +10176,7 @@ packages: has-symbols: 1.0.3 object-keys: 1.1.1 - /object.entries/1.1.6: + /object.entries@1.1.6: resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} dependencies: @@ -10147,7 +10184,7 @@ packages: define-properties: 1.2.0 es-abstract: 1.21.2 - /object.fromentries/2.0.6: + /object.fromentries@2.0.6: resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} engines: {node: '>= 0.4'} dependencies: @@ -10155,13 +10192,13 @@ packages: define-properties: 1.2.0 es-abstract: 1.21.2 - /object.hasown/1.1.2: + /object.hasown@1.1.2: resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: define-properties: 1.2.0 es-abstract: 1.21.2 - /object.values/1.1.6: + /object.values@1.1.6: resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} engines: {node: '>= 0.4'} dependencies: @@ -10169,34 +10206,34 @@ packages: define-properties: 1.2.0 es-abstract: 1.21.2 - /octal/1.0.0: + /octal@1.0.0: resolution: {integrity: sha512-nnda7W8d+A3vEIY+UrDQzzboPf1vhs4JYVhff5CDkq9QNoZY7Xrxeo/htox37j9dZf7yNHevZzqtejWgy1vCqQ==} dev: true - /on-exit-leak-free/0.2.0: + /on-exit-leak-free@0.2.0: resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} dev: false - /once/1.4.0: + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - /onetime/5.1.2: + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 dev: true - /onetime/6.0.0: + /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 dev: true - /open/8.4.2: + /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} dependencies: @@ -10205,7 +10242,7 @@ packages: is-wsl: 2.2.0 dev: false - /optionator/0.9.1: + /optionator@0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} dependencies: @@ -10216,73 +10253,73 @@ packages: type-check: 0.4.0 word-wrap: 1.2.3 - /os-tmpdir/1.0.2: + /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} dev: true - /outdent/0.5.0: + /outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} dev: true - /outdent/0.8.0: + /outdent@0.8.0: resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==} dev: false - /p-filter/2.1.0: + /p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} dependencies: p-map: 2.1.0 dev: true - /p-limit/2.3.0: + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 - /p-limit/3.1.0: + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - /p-locate/4.1.0: + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 - /p-locate/5.0.0: + /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - /p-map/2.1.0: + /p-map@2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} dev: true - /p-map/4.0.0: + /p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} dependencies: aggregate-error: 3.1.0 dev: true - /p-try/2.2.0: + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - /parent-module/1.0.1: + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 - /parse-asn1/5.1.6: + /parse-asn1@5.1.6: resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} dependencies: asn1.js: 5.4.1 @@ -10292,7 +10329,7 @@ packages: safe-buffer: 5.2.1 dev: true - /parse-json/4.0.0: + /parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} dependencies: @@ -10300,7 +10337,7 @@ packages: json-parse-better-errors: 1.0.2 dev: true - /parse-json/5.2.0: + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: @@ -10310,42 +10347,42 @@ packages: lines-and-columns: 1.2.4 dev: true - /path-exists/4.0.0: + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - /path-is-absolute/1.0.1: + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - /path-key/3.1.1: + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - /path-key/4.0.0: + /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} dev: true - /path-parse/1.0.7: + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-type/3.0.0: + /path-type@3.0.0: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} engines: {node: '>=4'} dependencies: pify: 3.0.0 dev: true - /path-type/4.0.0: + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - /pathval/1.1.1: + /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true - /pbkdf2/3.1.2: + /pbkdf2@3.1.2: resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} engines: {node: '>=0.12'} dependencies: @@ -10355,45 +10392,45 @@ packages: safe-buffer: 5.2.1 sha.js: 2.4.11 - /picocolors/1.0.0: + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - /picomatch/2.3.1: + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /pidtree/0.6.0: + /pidtree@0.6.0: resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} engines: {node: '>=0.10'} hasBin: true dev: true - /pify/3.0.0: + /pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} - /pify/4.0.1: + /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} dev: true - /pify/5.0.0: + /pify@5.0.0: resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} engines: {node: '>=10'} dev: false - /pino-abstract-transport/0.5.0: + /pino-abstract-transport@0.5.0: resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} dependencies: duplexify: 4.1.2 split2: 4.2.0 dev: false - /pino-std-serializers/4.0.0: + /pino-std-serializers@4.0.0: resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} dev: false - /pino/7.11.0: + /pino@7.11.0: resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} hasBin: true dependencies: @@ -10410,24 +10447,24 @@ packages: thread-stream: 0.15.2 dev: false - /pirates/4.0.5: + /pirates@4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} dev: true - /pkg-dir/4.2.0: + /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 dev: true - /pngjs/5.0.0: + /pngjs@5.0.0: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} dev: false - /postcss/8.4.14: + /postcss@8.4.14: resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -10436,11 +10473,11 @@ packages: source-map-js: 1.0.2 dev: false - /preact/10.15.1: + /preact@10.15.1: resolution: {integrity: sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g==} dev: false - /preferred-pm/3.0.3: + /preferred-pm@3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} engines: {node: '>=10'} dependencies: @@ -10450,24 +10487,24 @@ packages: which-pm: 2.0.0 dev: true - /prelude-ls/1.2.1: + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - /prettier-linter-helpers/1.0.0: + /prettier-linter-helpers@1.0.0: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} dependencies: fast-diff: 1.3.0 dev: true - /prettier/2.8.8: + /prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true dev: true - /pretty-format/29.5.0: + /pretty-format@29.5.0: resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10476,19 +10513,19 @@ packages: react-is: 18.2.0 dev: true - /process-es6/0.11.6: + /process-es6@0.11.6: resolution: {integrity: sha512-GYBRQtL4v3wgigq10Pv58jmTbFXlIiTbSfgnNqZLY0ldUPqy1rRxDI5fCjoCpnM6TqmHQI8ydzTBXW86OYc0gA==} dev: true - /process-nextick-args/2.0.1: + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true - /process-warning/1.0.0: + /process-warning@1.0.0: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} dev: false - /prompts/2.4.2: + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: @@ -10496,14 +10533,14 @@ packages: sisteransi: 1.0.5 dev: true - /prop-types/15.8.1: + /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - /protobufjs/6.11.3: + /protobufjs@6.11.3: resolution: {integrity: sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==} hasBin: true requiresBuild: true @@ -10523,27 +10560,27 @@ packages: long: 4.0.0 dev: false - /proxy-compare/2.5.1: + /proxy-compare@2.5.1: resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} dev: false - /proxy-from-env/1.1.0: + /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false - /prr/0.0.0: + /prr@0.0.0: resolution: {integrity: sha512-LmUECmrW7RVj6mDWKjTXfKug7TFGdiz9P18HMcO4RHL+RW7MCOGNvpj5j47Rnp6ne6r4fZ2VzyUWEpKbg+tsjQ==} dev: true - /prr/1.0.1: + /prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} dev: true - /pseudomap/1.0.2: + /pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true - /public-encrypt/4.0.3: + /public-encrypt@4.0.3: resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} dependencies: bn.js: 4.12.0 @@ -10554,20 +10591,20 @@ packages: safe-buffer: 5.2.1 dev: true - /punycode/2.3.0: + /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} - /pure-rand/6.0.2: + /pure-rand@6.0.2: resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} dev: true - /q/1.5.1: + /q@1.5.1: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} dev: true - /qrcode/1.5.0: + /qrcode@1.5.0: resolution: {integrity: sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ==} engines: {node: '>=10.13.0'} hasBin: true @@ -10578,7 +10615,7 @@ packages: yargs: 15.4.1 dev: false - /qrcode/1.5.3: + /qrcode@1.5.3: resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} engines: {node: '>=10.13.0'} hasBin: true @@ -10589,14 +10626,14 @@ packages: yargs: 15.4.1 dev: false - /qs/6.11.2: + /qs@6.11.2: resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} engines: {node: '>=0.6'} dependencies: side-channel: 1.0.4 dev: false - /query-string/6.14.1: + /query-string@6.14.1: resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==} engines: {node: '>=6'} dependencies: @@ -10606,7 +10643,7 @@ packages: strict-uri-encode: 2.0.0 dev: false - /query-string/7.1.3: + /query-string@7.1.3: resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} engines: {node: '>=6'} dependencies: @@ -10616,31 +10653,31 @@ packages: strict-uri-encode: 2.0.0 dev: false - /queue-microtask/1.2.3: + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - /quick-format-unescaped/4.0.4: + /quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} dev: false - /quick-lru/4.0.1: + /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} dev: true - /randombytes/2.1.0: + /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 - /randomfill/1.0.4: + /randomfill@1.0.4: resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} dependencies: randombytes: 2.1.0 safe-buffer: 5.2.1 dev: true - /react-dom/18.2.0_react@18.2.0: + /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: react: ^18.2.0 @@ -10650,14 +10687,14 @@ packages: scheduler: 0.23.0 dev: false - /react-is/16.13.1: + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - /react-is/18.2.0: + /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /react-remove-scroll-bar/2.3.4_s3k22s5ab4eu26xuel7hiaraxy: + /react-remove-scroll-bar@2.3.4(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: @@ -10669,11 +10706,11 @@ packages: dependencies: '@types/react': 18.2.6 react: 18.2.0 - react-style-singleton: 2.2.1_s3k22s5ab4eu26xuel7hiaraxy + react-style-singleton: 2.2.1(@types/react@18.2.6)(react@18.2.0) tslib: 2.5.3 dev: false - /react-remove-scroll/2.5.4_s3k22s5ab4eu26xuel7hiaraxy: + /react-remove-scroll@2.5.4(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==} engines: {node: '>=10'} peerDependencies: @@ -10685,14 +10722,14 @@ packages: dependencies: '@types/react': 18.2.6 react: 18.2.0 - react-remove-scroll-bar: 2.3.4_s3k22s5ab4eu26xuel7hiaraxy - react-style-singleton: 2.2.1_s3k22s5ab4eu26xuel7hiaraxy + react-remove-scroll-bar: 2.3.4(@types/react@18.2.6)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.6)(react@18.2.0) tslib: 2.5.3 - use-callback-ref: 1.3.0_s3k22s5ab4eu26xuel7hiaraxy - use-sidecar: 1.1.2_s3k22s5ab4eu26xuel7hiaraxy + use-callback-ref: 1.3.0(@types/react@18.2.6)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.6)(react@18.2.0) dev: false - /react-style-singleton/2.2.1_s3k22s5ab4eu26xuel7hiaraxy: + /react-style-singleton@2.2.1(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -10709,14 +10746,14 @@ packages: tslib: 2.5.3 dev: false - /react/18.2.0: + /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 dev: false - /read-pkg-up/7.0.1: + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} dependencies: @@ -10725,7 +10762,7 @@ packages: type-fest: 0.8.1 dev: true - /read-pkg/3.0.0: + /read-pkg@3.0.0: resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} engines: {node: '>=4'} dependencies: @@ -10734,7 +10771,7 @@ packages: path-type: 3.0.0 dev: true - /read-pkg/5.2.0: + /read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: @@ -10744,7 +10781,7 @@ packages: type-fest: 0.6.0 dev: true - /read-yaml-file/1.1.0: + /read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} dependencies: @@ -10754,7 +10791,7 @@ packages: strip-bom: 3.0.0 dev: true - /readable-stream/1.0.34: + /readable-stream@1.0.34: resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} dependencies: core-util-is: 1.0.3 @@ -10763,7 +10800,7 @@ packages: string_decoder: 0.10.31 dev: true - /readable-stream/1.1.14: + /readable-stream@1.1.14: resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} dependencies: core-util-is: 1.0.3 @@ -10772,7 +10809,7 @@ packages: string_decoder: 0.10.31 dev: true - /readable-stream/2.3.8: + /readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: core-util-is: 1.0.3 @@ -10784,7 +10821,7 @@ packages: util-deprecate: 1.0.2 dev: true - /readable-stream/3.6.2: + /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} dependencies: @@ -10792,30 +10829,30 @@ packages: string_decoder: 1.3.0 util-deprecate: 1.0.2 - /readdirp/3.6.0: + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 dev: true - /readonly-date/1.0.0: + /readonly-date@1.0.0: resolution: {integrity: sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==} dev: false - /real-require/0.1.0: + /real-require@0.1.0: resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} engines: {node: '>= 12.13.0'} dev: false - /rechoir/0.6.2: + /rechoir@0.6.2: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} dependencies: resolve: 1.22.2 dev: false - /redent/3.0.0: + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} dependencies: @@ -10823,31 +10860,31 @@ packages: strip-indent: 3.0.0 dev: true - /reflect-metadata/0.1.13: + /reflect-metadata@0.1.13: resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} dev: false - /regenerate-unicode-properties/10.1.0: + /regenerate-unicode-properties@10.1.0: resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} engines: {node: '>=4'} dependencies: regenerate: 1.4.2 dev: true - /regenerate/1.4.2: + /regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} dev: true - /regenerator-runtime/0.13.11: + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - /regenerator-transform/0.15.1: + /regenerator-transform@0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: '@babel/runtime': 7.22.5 dev: true - /regexp.prototype.flags/1.5.0: + /regexp.prototype.flags@1.5.0: resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} dependencies: @@ -10855,7 +10892,7 @@ packages: define-properties: 1.2.0 functions-have-names: 1.2.3 - /regexpu-core/5.3.2: + /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} engines: {node: '>=4'} dependencies: @@ -10867,54 +10904,54 @@ packages: unicode-match-property-value-ecmascript: 2.1.0 dev: true - /regjsparser/0.9.1: + /regjsparser@0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true dependencies: jsesc: 0.5.0 dev: true - /require-directory/2.1.1: + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - /require-from-string/2.0.2: + /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} dev: true - /require-main-filename/2.0.0: + /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - /resolve-cwd/3.0.0: + /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 dev: true - /resolve-from/4.0.0: + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - /resolve-from/5.0.0: + /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} dev: true - /resolve-global/1.0.0: + /resolve-global@1.0.0: resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} engines: {node: '>=8'} dependencies: global-dirs: 0.1.1 dev: true - /resolve.exports/2.0.2: + /resolve.exports@2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} dev: true - /resolve/1.22.2: + /resolve@1.22.2: resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true dependencies: @@ -10922,7 +10959,7 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve/2.0.0-next.4: + /resolve@2.0.0-next.4: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: @@ -10930,7 +10967,7 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /restore-cursor/3.1.0: + /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} dependencies: @@ -10938,39 +10975,39 @@ packages: signal-exit: 3.0.7 dev: true - /reusify/1.0.4: + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - /rfdc/1.3.0: + /rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} dev: true - /rimraf/3.0.2: + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 - /ripemd160-min/0.0.6: + /ripemd160-min@0.0.6: resolution: {integrity: sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A==} engines: {node: '>=8'} dev: false - /ripemd160/2.0.2: + /ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} dependencies: hash-base: 3.1.0 inherits: 2.0.4 - /rlp/2.2.7: + /rlp@2.2.7: resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} hasBin: true dependencies: bn.js: 5.2.1 dev: false - /rollup-plugin-auto-external/2.0.0_rollup@2.79.1: + /rollup-plugin-auto-external@2.0.0(rollup@2.79.1): resolution: {integrity: sha512-HQM3ZkZYfSam1uoZtAB9sK26EiAsfs1phrkf91c/YX+S07wugyRXSigBxrIwiLr5EPPilKYmoMxsrnlGBsXnuQ==} engines: {node: '>=6'} peerDependencies: @@ -10983,7 +11020,7 @@ packages: semver: 5.7.1 dev: true - /rollup-plugin-copy/3.4.0: + /rollup-plugin-copy@3.4.0: resolution: {integrity: sha512-rGUmYYsYsceRJRqLVlE9FivJMxJ7X6jDlP79fmFkL8sJs7VVMSVyA2yfyL+PGyO/vJs4A87hwhgVfz61njI+uQ==} engines: {node: '>=8.3'} dependencies: @@ -10994,7 +11031,7 @@ packages: is-plain-object: 3.0.1 dev: true - /rollup-plugin-node-builtins/2.1.2: + /rollup-plugin-node-builtins@2.1.2: resolution: {integrity: sha512-bxdnJw8jIivr2yEyt8IZSGqZkygIJOGAWypXvHXnwKAbUcN4Q/dGTx7K0oAJryC/m6aq6tKutltSeXtuogU6sw==} dependencies: browserify-fs: 1.0.0 @@ -11003,16 +11040,16 @@ packages: process-es6: 0.11.6 dev: true - /rollup-plugin-polyfill-node/0.10.2_rollup@2.79.1: + /rollup-plugin-polyfill-node@0.10.2(rollup@2.79.1): resolution: {integrity: sha512-5GMywXiLiuQP6ZzED/LO/Q0HyDi2W6b8VN+Zd3oB0opIjyRs494Me2ZMaqKWDNbGiW4jvvzl6L2n4zRgxS9cSQ==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/plugin-inject': 4.0.4_rollup@2.79.1 + '@rollup/plugin-inject': 4.0.4(rollup@2.79.1) rollup: 2.79.1 dev: true - /rollup-plugin-terser/7.0.2_rollup@2.79.1: + /rollup-plugin-terser@7.0.2(rollup@2.79.1): resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser peerDependencies: @@ -11025,7 +11062,7 @@ packages: terser: 5.16.6 dev: true - /rollup/2.79.1: + /rollup@2.79.1: resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} engines: {node: '>=10.0.0'} hasBin: true @@ -11033,78 +11070,78 @@ packages: fsevents: 2.3.2 dev: true - /rpc-websockets/7.5.1: + /rpc-websockets@7.5.1: resolution: {integrity: sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==} dependencies: '@babel/runtime': 7.22.5 eventemitter3: 4.0.7 uuid: 8.3.2 - ws: 8.13.0_3cxu5zja4e2r5wmvge7mdcljwq + ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) optionalDependencies: bufferutil: 4.0.7 utf-8-validate: 5.0.10 dev: false - /run-parallel/1.2.0: + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - /rxjs/6.6.7: + /rxjs@6.6.7: resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} engines: {npm: '>=2.0.0'} dependencies: tslib: 1.14.1 dev: false - /rxjs/7.8.1: + /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: tslib: 2.5.3 dev: true - /safe-buffer/5.1.2: + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true - /safe-buffer/5.2.1: + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - /safe-json-utils/1.1.1: + /safe-json-utils@1.1.1: resolution: {integrity: sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ==} dev: false - /safe-regex-test/1.0.0: + /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 is-regex: 1.1.4 - /safe-resolve/1.0.0: + /safe-resolve@1.0.0: resolution: {integrity: sha512-aQpRvfxoi1y0UxKEU0tNO327kb0/LMo8Xrk64M2u172UqOOLCCM0khxN2OTClDiTqTJz5864GMD1X92j4YiHTg==} dev: true - /safe-stable-stringify/2.4.3: + /safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} engines: {node: '>=10'} dev: false - /safer-buffer/2.1.2: + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /scheduler/0.23.0: + /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 dev: false - /scrypt-js/3.0.1: + /scrypt-js@3.0.1: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} dev: false - /secp256k1/4.0.3: + /secp256k1@4.0.3: resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} engines: {node: '>=10.0.0'} requiresBuild: true @@ -11114,89 +11151,89 @@ packages: node-gyp-build: 4.6.0 dev: false - /semver/2.3.2: + /semver@2.3.2: resolution: {integrity: sha512-abLdIKCosKfpnmhS52NCTjO4RiLspDfsn37prjzGrp9im5DPJOgh82Os92vtwGh6XdQryKI/7SREZnV+aqiXrA==} hasBin: true dev: true - /semver/5.7.1: + /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true dev: true - /semver/6.3.0: + /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true - /semver/7.5.0: + /semver@7.5.0: resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 - /semver/7.5.1: + /semver@7.5.1: resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 - /serialize-javascript/4.0.0: + /serialize-javascript@4.0.0: resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} dependencies: randombytes: 2.1.0 dev: true - /serialize-javascript/6.0.0: + /serialize-javascript@6.0.0: resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} dependencies: randombytes: 2.1.0 dev: true - /set-blocking/2.0.0: + /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - /setimmediate/1.0.5: + /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} dev: false - /sha.js/2.4.11: + /sha.js@2.4.11: resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} hasBin: true dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 - /sha3/2.1.4: + /sha3@2.1.4: resolution: {integrity: sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==} dependencies: buffer: 6.0.3 dev: false - /shebang-command/1.2.0: + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 dev: true - /shebang-command/2.0.0: + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - /shebang-regex/1.0.0: + /shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} dev: true - /shebang-regex/3.0.0: + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shelljs/0.8.5: + /shelljs@0.8.5: resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} engines: {node: '>=4'} hasBin: true @@ -11206,7 +11243,7 @@ packages: rechoir: 0.6.2 dev: false - /shx/0.3.4: + /shx@0.3.4: resolution: {integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==} engines: {node: '>=6'} hasBin: true @@ -11215,30 +11252,30 @@ packages: shelljs: 0.8.5 dev: false - /side-channel/1.0.4: + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 object-inspect: 1.12.3 - /signal-exit/3.0.7: + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /sisteransi/1.0.5: + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true - /slash/3.0.0: + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - /slash/4.0.0: + /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} - /slice-ansi/3.0.0: + /slice-ansi@3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} dependencies: @@ -11247,7 +11284,7 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true - /slice-ansi/4.0.0: + /slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} dependencies: @@ -11256,7 +11293,7 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true - /slice-ansi/5.0.0: + /slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} dependencies: @@ -11264,7 +11301,7 @@ packages: is-fullwidth-code-point: 4.0.0 dev: true - /smartwrap/2.0.2: + /smartwrap@2.0.2: resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} engines: {node: '>=6'} hasBin: true @@ -11277,131 +11314,131 @@ packages: yargs: 15.4.1 dev: true - /sonic-boom/2.8.0: + /sonic-boom@2.8.0: resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} dependencies: atomic-sleep: 1.0.0 dev: false - /source-map-js/1.0.2: + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} dev: false - /source-map-support/0.5.13: + /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true - /source-map-support/0.5.21: + /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true - /source-map/0.6.1: + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} dev: true - /sourcemap-codec/1.4.8: + /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead dev: true - /spawndamnit/2.0.0: + /spawndamnit@2.0.0: resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} dependencies: cross-spawn: 5.1.0 signal-exit: 3.0.7 dev: true - /spdx-correct/3.2.0: + /spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.13 dev: true - /spdx-exceptions/2.3.0: + /spdx-exceptions@2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} dev: true - /spdx-expression-parse/3.0.1: + /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.13 dev: true - /spdx-license-ids/3.0.13: + /spdx-license-ids@3.0.13: resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} dev: true - /split-on-first/1.1.0: + /split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} dev: false - /split2/3.2.2: + /split2@3.2.2: resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} dependencies: readable-stream: 3.6.2 dev: true - /split2/4.2.0: + /split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} dev: false - /sprintf-js/1.0.3: + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /stack-utils/2.0.6: + /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 dev: true - /stop-iteration-iterator/1.0.0: + /stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} dependencies: internal-slot: 1.0.5 - /stream-browserify/3.0.0: + /stream-browserify@3.0.0: resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} dependencies: inherits: 2.0.4 readable-stream: 3.6.2 dev: false - /stream-shift/1.0.1: + /stream-shift@1.0.1: resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} dev: false - /stream-transform/2.1.3: + /stream-transform@2.1.3: resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} dependencies: mixme: 0.5.9 dev: true - /strict-uri-encode/2.0.0: + /strict-uri-encode@2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} dev: false - /string-argv/0.3.2: + /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} dev: true - /string-length/4.0.2: + /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} dependencies: @@ -11409,15 +11446,15 @@ packages: strip-ansi: 6.0.1 dev: true - /string-natural-compare/3.0.1: + /string-natural-compare@3.0.1: resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} dev: true - /string-range/1.2.2: + /string-range@1.2.2: resolution: {integrity: sha512-tYft6IFi8SjplJpxCUxyqisD3b+R2CSkomrtJYCkvuf1KuCAWgz7YXt4O0jip7efpfCemwHEzTEAO8EuOYgh3w==} dev: true - /string-width/4.2.3: + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: @@ -11425,7 +11462,7 @@ packages: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string-width/5.1.2: + /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} dependencies: @@ -11434,7 +11471,7 @@ packages: strip-ansi: 7.1.0 dev: true - /string.prototype.matchall/4.0.8: + /string.prototype.matchall@4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.2 @@ -11446,7 +11483,7 @@ packages: regexp.prototype.flags: 1.5.0 side-channel: 1.0.4 - /string.prototype.trim/1.2.7: + /string.prototype.trim@1.2.7: resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} engines: {node: '>= 0.4'} dependencies: @@ -11454,86 +11491,86 @@ packages: define-properties: 1.2.0 es-abstract: 1.21.2 - /string.prototype.trimend/1.0.6: + /string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 - /string.prototype.trimstart/1.0.6: + /string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.21.2 - /string_decoder/0.10.31: + /string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} dev: true - /string_decoder/1.1.1: + /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 dev: true - /string_decoder/1.3.0: + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - /strip-ansi/6.0.1: + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - /strip-ansi/7.1.0: + /strip-ansi@7.1.0: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 dev: true - /strip-bom/3.0.0: + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - /strip-bom/4.0.0: + /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} dev: true - /strip-final-newline/2.0.0: + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} dev: true - /strip-final-newline/3.0.0: + /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} dev: true - /strip-hex-prefix/1.0.0: + /strip-hex-prefix@1.0.0: resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} engines: {node: '>=6.5.0', npm: '>=3'} dependencies: is-hex-prefixed: 1.0.0 dev: false - /strip-indent/3.0.0: + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} dependencies: min-indent: 1.0.1 dev: true - /strip-json-comments/3.1.1: + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - /styled-jsx/5.1.1_react@18.2.0: + /styled-jsx@5.1.1(@babel/core@7.22.5)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -11546,48 +11583,48 @@ packages: babel-plugin-macros: optional: true dependencies: + '@babel/core': 7.22.5 client-only: 0.0.1 react: 18.2.0 dev: false - /superstruct/0.14.2: + /superstruct@0.14.2: resolution: {integrity: sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==} dev: false - /superstruct/1.0.3: + /superstruct@1.0.3: resolution: {integrity: sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==} engines: {node: '>=14.0.0'} dev: false - /supports-color/5.5.0: + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - /supports-color/7.2.0: + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - /supports-color/8.1.1: + /supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - dev: true - /supports-preserve-symlinks-flag/1.0.0: + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /symbol-observable/2.0.3: + /symbol-observable@2.0.3: resolution: {integrity: sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==} engines: {node: '>=0.10'} dev: false - /synckit/0.8.5: + /synckit@0.8.5: resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: @@ -11595,17 +11632,17 @@ packages: tslib: 2.5.0 dev: false - /tapable/2.2.1: + /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} dev: false - /term-size/2.2.1: + /term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} dev: true - /terser/5.16.6: + /terser@5.16.6: resolution: {integrity: sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==} engines: {node: '>=10'} hasBin: true @@ -11616,7 +11653,7 @@ packages: source-map-support: 0.5.21 dev: true - /test-exclude/6.0.0: + /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} dependencies: @@ -11625,75 +11662,74 @@ packages: minimatch: 3.1.2 dev: true - /text-encoding-utf-8/1.0.2: + /text-encoding-utf-8@1.0.2: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} dev: false - /text-extensions/1.9.0: + /text-extensions@1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} dev: true - /text-table/0.2.0: + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - /thread-stream/0.15.2: + /thread-stream@0.15.2: resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} dependencies: real-require: 0.1.0 dev: false - /through/2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - /through2/4.0.2: + /through2@4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} dependencies: readable-stream: 3.6.2 dev: true - /tiny-glob/0.2.9: + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + /tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} dependencies: globalyzer: 0.1.0 globrex: 0.1.2 dev: false - /tmp/0.0.33: + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 dev: true - /tmpl/1.0.5: + /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true - /to-fast-properties/2.0.0: + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - dev: true - /to-regex-range/5.0.1: + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - /toggle-selection/1.0.6: + /toggle-selection@1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} dev: false - /tr46/0.0.3: + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - /trim-newlines/3.0.1: + /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} dev: true - /ts-jest/29.1.0_re3sd25lehf6oiq4fphel37ifq: + /ts-jest@29.1.0(@babel/core@7.22.1)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -11717,7 +11753,7 @@ packages: '@babel/core': 7.22.1 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0_u3tjahz4lx2ow4rgesw7wigoy4 + jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -11727,38 +11763,41 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node/10.9.1_gbfmtwj2t57hq5iibp7xw5qwjq: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + /ts-jest@29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@4.9.5): + resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' peerDependenciesMeta: - '@swc/core': + '@babel/core': optional: true - '@swc/wasm': + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: optional: true dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 18.16.16 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 + '@babel/core': 7.22.5 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-util: 29.5.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 make-error: 1.3.6 + semver: 7.5.1 typescript: 4.9.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 + yargs-parser: 21.1.1 dev: true - /ts-node/10.9.1_uc4mglbmg4gsgxc6hysq56typi: + /ts-node@10.9.1(@types/node@18.16.18)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -11776,7 +11815,7 @@ packages: '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 + '@tsconfig/node16': 1.0.3 '@types/node': 18.16.18 acorn: 8.8.2 acorn-walk: 8.2.0 @@ -11784,12 +11823,12 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.1.3 + typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true - /tsconfig-paths/3.14.2: + /tsconfig-paths@3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: '@types/json5': 0.0.29 @@ -11797,16 +11836,16 @@ packages: minimist: 1.2.8 strip-bom: 3.0.0 - /tslib/1.14.1: + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - /tslib/2.5.0: + /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - /tslib/2.5.3: + /tslib@2.5.3: resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} - /tsutils/3.21.0_typescript@4.9.5: + /tsutils@3.21.0(typescript@4.9.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: @@ -11814,26 +11853,15 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 - dev: false - /tsutils/3.21.0_typescript@5.1.3: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.1.3 - dev: true - - /tsyringe/4.7.0: + /tsyringe@4.7.0: resolution: {integrity: sha512-ncFDM1jTLsok4ejMvSW5jN1VGPQD48y2tfAR0pdptWRKYX4bkbqPt92k7KJ5RFJ1KV36JEs/+TMh7I6OUgj74g==} engines: {node: '>= 6.0.0'} dependencies: tslib: 1.14.1 dev: false - /tty-table/4.2.1: + /tty-table@4.2.1: resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} engines: {node: '>=8.0.0'} hasBin: true @@ -11847,93 +11875,93 @@ packages: yargs: 17.7.2 dev: true - /tweetnacl-util/0.15.1: + /tweetnacl-util@0.15.1: resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} dev: false - /tweetnacl/1.0.3: + /tweetnacl@1.0.3: resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} dev: false - /type-check/0.4.0: + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 - /type-detect/4.0.8: + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} dev: true - /type-fest/0.13.1: + /type-fest@0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} dev: true - /type-fest/0.18.1: + /type-fest@0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} dev: true - /type-fest/0.20.2: + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - /type-fest/0.21.3: + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} dev: true - /type-fest/0.6.0: + /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} dev: true - /type-fest/0.8.1: + /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} dev: true - /typed-array-length/1.0.4: + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.2 for-each: 0.3.3 is-typed-array: 1.1.10 - /typedarray-to-buffer/1.0.4: + /typedarray-to-buffer@1.0.4: resolution: {integrity: sha512-vjMKrfSoUDN8/Vnqitw2FmstOfuJ73G6CrSEKnf11A6RmasVxHqfeBcnTb6RsL4pTMuV5Zsv9IiHRphMZyckUw==} dev: true - /typedarray-to-buffer/3.1.5: + /typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 dev: false - /typedarray/0.0.6: + /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: true - /typescript/4.9.5: + /typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true - /typescript/5.1.3: + /typescript@5.1.3: resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} engines: {node: '>=14.17'} hasBin: true dev: true - /uint8arrays/3.1.1: + /uint8arrays@3.1.1: resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} dependencies: multiformats: 9.9.0 dev: false - /unbox-primitive/1.0.2: + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 @@ -11941,12 +11969,12 @@ packages: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - /unicode-canonical-property-names-ecmascript/2.0.0: + /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} dev: true - /unicode-match-property-ecmascript/2.0.0: + /unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} dependencies: @@ -11954,27 +11982,27 @@ packages: unicode-property-aliases-ecmascript: 2.1.0 dev: true - /unicode-match-property-value-ecmascript/2.1.0: + /unicode-match-property-value-ecmascript@2.1.0: resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} engines: {node: '>=4'} dev: true - /unicode-property-aliases-ecmascript/2.1.0: + /unicode-property-aliases-ecmascript@2.1.0: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} dev: true - /universalify/0.1.2: + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} dev: true - /universalify/2.0.0: + /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} dev: true - /update-browserslist-db/1.0.11_browserslist@4.21.7: + /update-browserslist-db@1.0.11(browserslist@4.21.7): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true peerDependencies: @@ -11985,7 +12013,7 @@ packages: picocolors: 1.0.0 dev: true - /update-browserslist-db/1.0.11_browserslist@4.21.8: + /update-browserslist-db@1.0.11(browserslist@4.21.8): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true peerDependencies: @@ -11994,14 +12022,13 @@ packages: browserslist: 4.21.8 escalade: 3.1.1 picocolors: 1.0.0 - dev: true - /uri-js/4.4.1: + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 - /use-callback-ref/1.3.0_s3k22s5ab4eu26xuel7hiaraxy: + /use-callback-ref@1.3.0(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: @@ -12016,7 +12043,7 @@ packages: tslib: 2.5.3 dev: false - /use-sidecar/1.1.2_s3k22s5ab4eu26xuel7hiaraxy: + /use-sidecar@1.1.2(@types/react@18.2.6)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -12032,7 +12059,7 @@ packages: tslib: 2.5.3 dev: false - /use-sync-external-store/1.2.0_react@18.2.0: + /use-sync-external-store@1.2.0(react@18.2.0): resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -12040,7 +12067,7 @@ packages: react: 18.2.0 dev: false - /utf-8-validate/5.0.10: + /utf-8-validate@5.0.10: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} engines: {node: '>=6.14.2'} requiresBuild: true @@ -12048,10 +12075,10 @@ packages: node-gyp-build: 4.6.0 dev: false - /util-deprecate/1.0.2: + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - /util/0.12.5: + /util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} dependencies: inherits: 2.0.4 @@ -12061,16 +12088,16 @@ packages: which-typed-array: 1.1.9 dev: false - /uuid/8.3.2: + /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true dev: false - /v8-compile-cache-lib/3.0.1: + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true - /v8-to-istanbul/9.1.0: + /v8-to-istanbul@9.1.0: resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} dependencies: @@ -12079,14 +12106,14 @@ packages: convert-source-map: 1.9.0 dev: true - /validate-npm-package-license/3.0.4: + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 dev: true - /valtio/1.10.5_react@18.2.0: + /valtio@1.10.5(react@18.2.0): resolution: {integrity: sha512-jTp0k63VXf4r5hPoaC6a6LCG4POkVSh629WLi1+d5PlajLsbynTMd7qAgEiOSPxzoX5iNvbN7iZ/k/g29wrNiQ==} engines: {node: '>=12.20.0'} peerDependencies: @@ -12097,15 +12124,15 @@ packages: dependencies: proxy-compare: 2.5.1 react: 18.2.0 - use-sync-external-store: 1.2.0_react@18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) dev: false - /vary/1.1.2: + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} dev: false - /viem/1.0.6_typescript@4.9.5: + /viem@1.0.6(typescript@4.9.5): resolution: {integrity: sha512-NOVDREj8bWHajuP5Nw6edd0v3auuGWvLHGScmo9OOt1l7g3f1xMQxPA6JlhNmWXzoHjzzxt/5SorBn2DQ6N6Sg==} dependencies: '@adraffy/ens-normalize': 1.9.0 @@ -12113,9 +12140,9 @@ packages: '@noble/hashes': 1.3.0 '@scure/bip32': 1.3.0 '@scure/bip39': 1.2.0 - '@wagmi/chains': 1.1.0_typescript@4.9.5 - abitype: 0.8.7_typescript@4.9.5 - isomorphic-ws: 5.0.0_ws@8.12.0 + '@wagmi/chains': 1.1.0(typescript@4.9.5) + abitype: 0.8.7(typescript@4.9.5) + isomorphic-ws: 5.0.0(ws@8.12.0) ws: 8.12.0 transitivePeerDependencies: - bufferutil @@ -12124,7 +12151,7 @@ packages: - zod dev: false - /wagmi/1.2.0_sta5t6m4653sw6oxbjskfbw63m: + /wagmi@1.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(viem@1.0.6): resolution: {integrity: sha512-VSSBEVDMZAWIcWTlewC1XypHsWa1FdkdYXWdgu5pqTCqnW6JKWGsR5TbQY3poCIQoC7B2okisElZT2oVSYbA5Q==} peerDependencies: react: '>=17.0.0' @@ -12135,14 +12162,14 @@ packages: optional: true dependencies: '@tanstack/query-sync-storage-persister': 4.29.7 - '@tanstack/react-query': 4.29.7_biqbaboplfbrettd7655fr4n2y - '@tanstack/react-query-persist-client': 4.29.7_776iqyc7ir26b73sx2hj4bwzwu - '@wagmi/core': 1.2.0_6jfc5y2fmej3fcg7i7iq4eb634 - abitype: 0.8.7_typescript@4.9.5 + '@tanstack/react-query': 4.29.7(react-dom@18.2.0)(react@18.2.0) + '@tanstack/react-query-persist-client': 4.29.7(@tanstack/react-query@4.29.7) + '@wagmi/core': 1.2.0(react@18.2.0)(typescript@4.9.5)(viem@1.0.6) + abitype: 0.8.7(typescript@4.9.5) react: 18.2.0 typescript: 4.9.5 - use-sync-external-store: 1.2.0_react@18.2.0 - viem: 1.0.6_typescript@4.9.5 + use-sync-external-store: 1.2.0(react@18.2.0) + viem: 1.0.6(typescript@4.9.5) transitivePeerDependencies: - '@react-native-async-storage/async-storage' - bufferutil @@ -12157,28 +12184,28 @@ packages: - zod dev: false - /walker/1.0.8: + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 dev: true - /wcwidth/1.0.1: + /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 dev: true - /webidl-conversions/3.0.1: + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - /whatwg-url/5.0.0: + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - /which-boxed-primitive/1.0.2: + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 @@ -12187,7 +12214,7 @@ packages: is-string: 1.0.7 is-symbol: 1.0.4 - /which-collection/1.0.1: + /which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: is-map: 2.0.2 @@ -12195,10 +12222,10 @@ packages: is-weakmap: 2.0.1 is-weakset: 2.0.2 - /which-module/2.0.1: + /which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - /which-pm/2.0.0: + /which-pm@2.0.0: resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} engines: {node: '>=8.15'} dependencies: @@ -12206,7 +12233,7 @@ packages: path-exists: 4.0.0 dev: true - /which-typed-array/1.1.9: + /which-typed-array@1.1.9: resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} engines: {node: '>= 0.4'} dependencies: @@ -12217,29 +12244,29 @@ packages: has-tostringtag: 1.0.0 is-typed-array: 1.1.10 - /which/1.3.1: + /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true dependencies: isexe: 2.0.0 dev: true - /which/2.0.2: + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true dependencies: isexe: 2.0.0 - /word-wrap/1.2.3: + /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} - /workerpool/6.2.1: + /workerpool@6.2.1: resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} dev: true - /wrap-ansi/6.2.0: + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} dependencies: @@ -12247,7 +12274,7 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 - /wrap-ansi/7.0.0: + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: @@ -12256,10 +12283,10 @@ packages: strip-ansi: 6.0.1 dev: true - /wrappy/1.0.2: + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /write-file-atomic/4.0.2: + /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: @@ -12267,7 +12294,7 @@ packages: signal-exit: 3.0.7 dev: true - /ws/7.4.6: + /ws@7.4.6: resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} engines: {node: '>=8.3.0'} peerDependencies: @@ -12280,7 +12307,7 @@ packages: optional: true dev: false - /ws/7.5.9: + /ws@7.5.9: resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} peerDependencies: @@ -12293,7 +12320,7 @@ packages: optional: true dev: false - /ws/8.12.0: + /ws@8.12.0: resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} engines: {node: '>=10.0.0'} peerDependencies: @@ -12306,7 +12333,7 @@ packages: optional: true dev: false - /ws/8.13.0_3cxu5zja4e2r5wmvge7mdcljwq: + /ws@8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10): resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} peerDependencies: @@ -12322,14 +12349,14 @@ packages: utf-8-validate: 5.0.10 dev: false - /xstream/11.14.0: + /xstream@11.14.0: resolution: {integrity: sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==} dependencies: globalthis: 1.0.3 symbol-observable: 2.0.3 dev: false - /xtend/2.0.6: + /xtend@2.0.6: resolution: {integrity: sha512-fOZg4ECOlrMl+A6Msr7EIFcON1L26mb4NY5rurSkOex/TWhazOrg6eXD/B0XkuiYcYhQDWLXzQxLMVJ7LXwokg==} engines: {node: '>=0.4'} dependencies: @@ -12337,80 +12364,79 @@ packages: object-keys: 0.2.0 dev: true - /xtend/2.1.2: + /xtend@2.1.2: resolution: {integrity: sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==} engines: {node: '>=0.4'} dependencies: object-keys: 0.4.0 dev: true - /xtend/2.2.0: + /xtend@2.2.0: resolution: {integrity: sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw==} engines: {node: '>=0.4'} dev: true - /xtend/3.0.0: + /xtend@3.0.0: resolution: {integrity: sha512-sp/sT9OALMjRW1fKDlPeuSZlDQpkqReA0pyJukniWbTGoEKefHxhGJynE3PNhUMlcM8qWIjPwecwCw4LArS5Eg==} engines: {node: '>=0.4'} dev: true - /xtend/4.0.2: + /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} dev: false - /y18n/4.0.3: + /y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - /y18n/5.0.8: + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} dev: true - /yallist/2.1.2: + /yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} dev: true - /yallist/3.1.1: + /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true - /yallist/4.0.0: + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yaml/1.10.2: + /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} dev: true - /yaml/2.3.1: + /yaml@2.3.1: resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} engines: {node: '>= 14'} dev: true - /yargs-parser/18.1.3: + /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} dependencies: camelcase: 5.3.1 decamelize: 1.2.0 - /yargs-parser/20.2.4: + /yargs-parser@20.2.4: resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} engines: {node: '>=10'} dev: true - /yargs-parser/20.2.9: + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} dev: true - /yargs-parser/21.1.1: + /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} dev: true - /yargs-unparser/2.0.0: + /yargs-unparser@2.0.0: resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} engines: {node: '>=10'} dependencies: @@ -12420,7 +12446,7 @@ packages: is-plain-obj: 2.1.0 dev: true - /yargs/15.4.1: + /yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} dependencies: @@ -12436,7 +12462,7 @@ packages: y18n: 4.0.3 yargs-parser: 18.1.3 - /yargs/16.2.0: + /yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} dependencies: @@ -12449,7 +12475,7 @@ packages: yargs-parser: 20.2.4 dev: true - /yargs/17.7.2: + /yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} dependencies: @@ -12462,16 +12488,16 @@ packages: yargs-parser: 21.1.1 dev: true - /yn/3.1.1: + /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} dev: true - /yocto-queue/0.1.0: + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - /zustand/4.3.8_react@18.2.0: + /zustand@4.3.8(react@18.2.0): resolution: {integrity: sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg==} engines: {node: '>=12.7.0'} peerDependencies: @@ -12484,5 +12510,5 @@ packages: optional: true dependencies: react: 18.2.0 - use-sync-external-store: 1.2.0_react@18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) dev: false From c2ba16a614b8a4954840116cf0a5374d67020f5e Mon Sep 17 00:00:00 2001 From: rrr523 Date: Fri, 16 Jun 2023 22:07:29 +0800 Subject: [PATCH 051/433] chore(dep): Npm script --- examples/nodejs/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 09bd7829..ef8e20aa 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -6,8 +6,8 @@ "scripts": { "dev": "cross-env NODE_ENV=development next dev", "dev:qa": "cross-env NODE_ENV=test next dev", - "build": "cross-env NODE_ENV=development next build", - "build:qa": "cross-env NODE_ENV=test next build" + "build": "", + "build:qa": "" }, "dependencies": { "@bnb-chain/greenfield-chain-sdk": "workspace:*", From 9876356a34c18e342fd3cdb3a4588c07c88adef2 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Fri, 16 Jun 2023 23:24:13 +0800 Subject: [PATCH 052/433] chore: Pnpm engines --- .npmrc | 1 + package.json | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.npmrc b/.npmrc index fbf7f9a7..8a3e95d9 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1,3 @@ engine-strict=true auto-install-peers=true +strict-peer-dependencies=false diff --git a/package.json b/package.json index 27f86c34..daaab2a0 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", + "packageManager": "pnpm@8.6.1", "version": "0.0.1", "private": true, "description": "Green Field JS SDK", @@ -44,4 +45,4 @@ "prettier": "^2.8.8", "rimraf": "^3.0.2" } -} +} \ No newline at end of file From 485e1f3e3f6ff3de4399d6dae4ceb88abf65d30f Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 16 Jun 2023 23:36:55 +0800 Subject: [PATCH 053/433] chore: Codesandbox Example (#115) --- .codesandbox/ci.json | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .codesandbox/ci.json diff --git a/.codesandbox/ci.json b/.codesandbox/ci.json new file mode 100644 index 00000000..686fb6d5 --- /dev/null +++ b/.codesandbox/ci.json @@ -0,0 +1,11 @@ +{ + "node": 16, + "packages": [ + "./", + "packages/chain-sdk", + "packages/file-handle" + ], + "sandboxes": [ + "examples/nextjs" + ] +} From e6447b8619bb2360801deee8a22030a21dbb1b25 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Sun, 18 Jun 2023 02:01:50 +0800 Subject: [PATCH 054/433] chore(docs): Update stackblitz url (#116) --- README.md | 44 ++++++++++++++++++++++++++++++++++- examples/nextjs/README.md | 48 --------------------------------------- 2 files changed, 43 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 58e6d1ec..78a9f559 100644 --- a/README.md +++ b/README.md @@ -15,11 +15,53 @@ You can find some package documentation below: ## Examples -Support use in browser and node.js +There are runnable examples included in the [examples](./examples/) folder * [Next.js Example(TypeScript)](./examples/nextjs/README.md) * [Nodejs](./examples/nodejs/README.md) +### Try in Stackblitz + +You can try out some examples directly in your browser through Stackblitz: + +* [Next.js Exmaple(Typescript)](https://stackblitz.com/edit/github-kikred?file=src%2Fpages%2Ftx.tsx) + +### Running Examples Locally + +Clone the project and install dependencies: +```bash +> git clone git@github.com:bnb-chain/greenfield-js-sdk.git +> cd greenfield-js-sdk +> pnpm install +``` + +and build package: +```bash +> pnpm run -r build +``` + +and then copy env template file: +```bash +> cp .env.simple .env +``` + +and then enter your own configuration. Take testnet, for example: +```bash +NEXT_PUBLIC_GRPC_URL=https://gnfd-testnet-fullnode-tendermint-us.bnbchain.org +NEXT_PUBLIC_GREENFIELD_RPC_URL=https://gnfd-testnet-fullnode-tendermint-us.bnbchain.org +NEXT_PUBLIC_GREEN_CHAIN_ID=5600 +NEXT_PUBLIC_BSC_RPC_URL=https://gnfd-bsc-testnet-dataseed1.bnbchain.org +NEXT_PUBLIC_BSC_CHAIN_ID=97 +NEXT_PUBLIC_TOKEN_HUB_CONTRACT_ADDRESS=0xf5192b167d11ed87C02123801c0305ef072df04F +NEXT_PUBLIC_CROSS_CHAIN_CONTRACT_ADDRESS=0x24e4b644DF338f9656843E2Ebf1b84715B8c58Ba +``` + + +abd then run example: +```bash +> npx next dev +``` + ## Supported JS environments 1. Modern browsers (Chromium, Firefox, Safari) diff --git a/examples/nextjs/README.md b/examples/nextjs/README.md index 7b3ae7c4..8eb0840e 100644 --- a/examples/nextjs/README.md +++ b/examples/nextjs/README.md @@ -10,51 +10,3 @@ Use [React](https://react.dev/) and [Next.js](https://nextjs.org/) * [bucket](./examples/wallet/src/components/bucket/index.tsx) * [object](./examples/wallet/src/components/object/index.tsx) * [query](./examples/wallet/src/components/withdraw/query.tsx) - -## Getting Started - -### copy env template file - -```bash -# DEV ENV -> cp .env.simple .env.development.local - -# QA ENV -> cp .env.simple .env.test.local -``` - -### Enter your own configuration - -Take testnet, for example: - -``` -NEXT_PUBLIC_GRPC_URL=https://gnfd-testnet-fullnode-tendermint-us.bnbchain.org -NEXT_PUBLIC_GREENFIELD_RPC_URL=https://gnfd-testnet-fullnode-tendermint-us.bnbchain.org -NEXT_PUBLIC_GREEN_CHAIN_ID=5600 -NEXT_PUBLIC_BSC_RPC_URL=https://gnfd-bsc-testnet-dataseed1.bnbchain.org -NEXT_PUBLIC_BSC_CHAIN_ID=97 -NEXT_PUBLIC_TOKEN_HUB_CONTRACT_ADDRESS=0xf5192b167d11ed87C02123801c0305ef072df04F -NEXT_PUBLIC_CROSS_CHAIN_CONTRACT_ADDRESS=0x24e4b644DF338f9656843E2Ebf1b84715B8c58Ba -``` - -## Install and Build - -First, build SDK srouce code: - -```bash -# root dir -> pnpm run install -> pnpm run -r build -``` - -## Start - -```bash -# dev ENV -> npm run dev -``` - -```bash -# qa env -> npm run dev:qa -``` From 9e79bc2b96ea20dc0fd46c1bf5ee8786fe0d371d Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 20 Jun 2023 16:58:10 +0800 Subject: [PATCH 055/433] refactor: CreateFoler API params (#119) --- .changeset/shy-books-tan.md | 5 + .../src/components/object/create/index.tsx | 191 +++++++++++------- packages/chain-sdk/src/api/objectt.ts | 35 +++- 3 files changed, 152 insertions(+), 79 deletions(-) create mode 100644 .changeset/shy-books-tan.md diff --git a/.changeset/shy-books-tan.md b/.changeset/shy-books-tan.md new file mode 100644 index 00000000..bf118ace --- /dev/null +++ b/.changeset/shy-books-tan.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +refactor: CreateFoler API params diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index 61627e67..2a1f073c 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -13,89 +13,128 @@ export const CreateObject = () => { return (
-

Create Object

- bucket name : - { - setCreateObjectInfo({ ...createObjectInfo, bucketName: e.target.value }); - }} - /> -
- object name : - { - setCreateObjectInfo({ ...createObjectInfo, objectName: e.target.value }); - }} - /> -
- ) => { - if (e.target.files) { - setFile(e.target.files[0]); - } - }} - /> -
- + if (uploadRes.code === 0) { + alert('success'); + } + }} + > + create object and upload file + +
+ +
); }; diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 7569e3e7..f08dc0aa 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -89,7 +89,9 @@ export interface IObject { listObjects(configParam: TListObjects): Promise>>; - createFolder(getApprovalParams: TCreateObject): Promise; + createFolder( + getApprovalParams: Omit, + ): Promise; putObjectPolicy( owner: string, @@ -565,14 +567,41 @@ export class Objectt implements IObject { } } - public async createFolder(getApprovalParams: TCreateObject) { + public async createFolder( + getApprovalParams: Omit, + ) { if (!getApprovalParams.objectName.endsWith('/')) { throw new Error( 'failed to create folder. Folder names must end with a forward slash (/) character', ); } - return this.createObject(getApprovalParams); + /** + * const file = new File([], 'scc', { type: 'text/plain' }); + const fileBytes = await file.arrayBuffer(); + console.log('fileBytes', fileBytes); + const hashResult = await FileHandler.getPieceHashRoots(new Uint8Array(fileBytes)); + console.log('hashResult', hashResult); + const { contentLength, expectCheckSums } = hashResult; + */ + + return this.createObject({ + bucketName: getApprovalParams.bucketName, + objectName: getApprovalParams.objectName, + contentLength: 0, + fileType: 'text/plain', + expectCheckSums: [ + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + ], + creator: getApprovalParams.creator, + spInfo: getApprovalParams.spInfo, + }); } public async putObjectPolicy( From 0d0d42805d8828c562d2771c14d251b5c368606e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 20 Jun 2023 16:59:46 +0800 Subject: [PATCH 056/433] chore: [ci] release (alpha) (#120) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index a4a20388..fb8fe404 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -26,6 +26,7 @@ "quiet-planets-shop", "rotten-needles-watch", "rude-tips-rush", + "shy-books-tan", "strong-snails-count", "sweet-feet-hide", "ten-suits-crash", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 2158323a..b5cef744 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.2-alpha.20 + +### Patch Changes + +- Updated dependencies + [[`9e79bc2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/9e79bc2b96ea20dc0fd46c1bf5ee8786fe0d371d)]: + - @bnb-chain/greenfield-chain-sdk@0.2.1-alpha.13 + ## 0.0.2-alpha.19 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 7608a34b..4784506c 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.2-alpha.19", + "version": "0.0.2-alpha.20", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index a348ea8f..06f9f168 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.5-alpha.13 + +### Patch Changes + +- Updated dependencies + [[`9e79bc2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/9e79bc2b96ea20dc0fd46c1bf5ee8786fe0d371d)]: + - @bnb-chain/greenfield-chain-sdk@0.2.1-alpha.13 + ## 0.0.5-alpha.12 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index ef8e20aa..3363664d 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.5-alpha.12", + "version": "0.0.5-alpha.13", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 93f752a3..5345fc0a 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.1-alpha.13 + +### Patch Changes + +- [#119](https://github.com/bnb-chain/greenfield-js-sdk/pull/119) + [`9e79bc2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/9e79bc2b96ea20dc0fd46c1bf5ee8786fe0d371d) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: CreateFoler API params + ## 0.2.1-alpha.12 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 3af8808f..c58b6cb7 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.1-alpha.12", + "version": "0.2.1-alpha.13", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 8fa1aa7f4161ee319cb97b7874f0ca0e52de03fb Mon Sep 17 00:00:00 2001 From: rrr523 Date: Wed, 21 Jun 2023 16:05:23 +0800 Subject: [PATCH 057/433] feat: TimeStamp format --- .changeset/smooth-colts-hope.md | 5 ++ .../components/policy/groupPolicy/index.tsx | 68 +++++++++++++++ .../nextjs/src/components/policy/index.tsx | 13 +++ .../components/policy/objectPolicy/index.tsx | 82 +++++++++++++++++++ examples/nextjs/src/pages/tx.tsx | 3 + packages/chain-sdk/src/api/group.ts | 4 +- packages/chain-sdk/src/api/objectt.ts | 23 ++++-- packages/chain-sdk/src/api/storage.ts | 14 +++- .../greenfield/storage/MsgPutPolicy.ts | 8 ++ packages/chain-sdk/src/types/common.ts | 4 +- 10 files changed, 211 insertions(+), 13 deletions(-) create mode 100644 .changeset/smooth-colts-hope.md create mode 100644 examples/nextjs/src/components/policy/groupPolicy/index.tsx create mode 100644 examples/nextjs/src/components/policy/index.tsx create mode 100644 examples/nextjs/src/components/policy/objectPolicy/index.tsx diff --git a/.changeset/smooth-colts-hope.md b/.changeset/smooth-colts-hope.md new file mode 100644 index 00000000..065cc640 --- /dev/null +++ b/.changeset/smooth-colts-hope.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +fix: Timestamp format diff --git a/examples/nextjs/src/components/policy/groupPolicy/index.tsx b/examples/nextjs/src/components/policy/groupPolicy/index.tsx new file mode 100644 index 00000000..75ab534e --- /dev/null +++ b/examples/nextjs/src/components/policy/groupPolicy/index.tsx @@ -0,0 +1,68 @@ +import { client } from '@/client'; +import { PermissionTypes } from '@bnb-chain/greenfield-chain-sdk'; +import { useState } from 'react'; +import { useAccount } from 'wagmi'; + +export const GroupPolicy = () => { + const { address } = useAccount(); + const [policyGroupInfo, setPolicyGroupInfo] = useState({ + groupName: '', + }); + + return ( + <> +

Group Policy

+ group name : + { + setPolicyGroupInfo({ ...policyGroupInfo, groupName: e.target.value }); + }} + /> +
+ + + ); +}; diff --git a/examples/nextjs/src/components/policy/index.tsx b/examples/nextjs/src/components/policy/index.tsx new file mode 100644 index 00000000..d5234d01 --- /dev/null +++ b/examples/nextjs/src/components/policy/index.tsx @@ -0,0 +1,13 @@ +import { GroupPolicy } from './groupPolicy'; +import { ObjectPolicy } from './objectPolicy'; + +export const Policy = () => { + return ( + <> +

Policy

+ + + + + ); +}; diff --git a/examples/nextjs/src/components/policy/objectPolicy/index.tsx b/examples/nextjs/src/components/policy/objectPolicy/index.tsx new file mode 100644 index 00000000..0a8e78ed --- /dev/null +++ b/examples/nextjs/src/components/policy/objectPolicy/index.tsx @@ -0,0 +1,82 @@ +import { client } from '@/client'; +import { PermissionTypes, TimestampTypes } from '@bnb-chain/greenfield-chain-sdk'; +import { useState } from 'react'; +import { useAccount } from 'wagmi'; + +export const ObjectPolicy = () => { + const { address } = useAccount(); + const [policyObjectInfo, setPolicyObjectInfo] = useState({ + bucketName: '', + objectName: '', + }); + + return ( + <> +

Put Object Policy

+ bucket name : + { + setPolicyObjectInfo({ ...policyObjectInfo, bucketName: e.target.value }); + }} + /> +
+ object name : + { + setPolicyObjectInfo({ ...policyObjectInfo, objectName: e.target.value }); + }} + /> +
+ + + ); +}; diff --git a/examples/nextjs/src/pages/tx.tsx b/examples/nextjs/src/pages/tx.tsx index 9a537c32..9e869407 100644 --- a/examples/nextjs/src/pages/tx.tsx +++ b/examples/nextjs/src/pages/tx.tsx @@ -5,6 +5,7 @@ import { Mirror } from '@/components/mirror'; import { MultiMsg } from '@/components/multimsg'; import { ObjectComponent } from '@/components/object'; import { OffChainAuth } from '@/components/offchainauth'; +import { Policy } from '@/components/policy'; import { Transfer } from '@/components/transfer'; import { WalletInfo } from '@/components/walletInfo'; import { Withdraw } from '@/components/withdraw'; @@ -41,6 +42,8 @@ export default function Tx() {

+ +
)} diff --git a/packages/chain-sdk/src/api/group.ts b/packages/chain-sdk/src/api/group.ts index 5176d346..12c28f97 100644 --- a/packages/chain-sdk/src/api/group.ts +++ b/packages/chain-sdk/src/api/group.ts @@ -101,7 +101,7 @@ export interface IGroup { putGroupPolicy( owner: string, groupName: string, - srcMsg: Omit, + srcMsg: Omit, ): Promise; } @@ -223,7 +223,7 @@ export class Group implements IGroup { public async putGroupPolicy( owner: string, groupName: string, - srcMsg: Omit, + srcMsg: Omit, ) { const resource = GRNToString(newGroupGRN(owner, groupName)); const msg: MsgPutPolicy = { diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index f08dc0aa..0af1aced 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -37,7 +37,11 @@ import { MsgPutPolicy, MsgUpdateObjectInfo, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; +import { + bytesFromBase64, + fromJsonTimestamp, + toTimestamp, +} from '@bnb-chain/greenfield-cosmos-types/helpers'; import { container, delay, inject, singleton } from 'tsyringe'; import { GRNToString, newObjectGRN } from '..'; import { @@ -94,9 +98,10 @@ export interface IObject { ): Promise; putObjectPolicy( - owner: string, - groupName: string, - srcMsg: Omit, + bucketName: string, + objectName: string, + // expirationTime: Date, + srcMsg: Omit, ): Promise; deleteObjectPolicy( @@ -605,14 +610,16 @@ export class Objectt implements IObject { } public async putObjectPolicy( - owner: string, - groupName: string, - srcMsg: Omit, + bucketName: string, + objectName: string, + // expirationTime: Date, + srcMsg: Omit, ) { - const resource = GRNToString(newObjectGRN(owner, groupName)); + const resource = GRNToString(newObjectGRN(bucketName, objectName)); const msg: MsgPutPolicy = { ...srcMsg, resource, + // expirationTime: fromJsonTimestamp(expirationTime), }; return await this.storage.putPolicy(msg); } diff --git a/packages/chain-sdk/src/api/storage.ts b/packages/chain-sdk/src/api/storage.ts index 4717ad70..f88ac17f 100644 --- a/packages/chain-sdk/src/api/storage.ts +++ b/packages/chain-sdk/src/api/storage.ts @@ -6,6 +6,7 @@ import { MsgPutPolicySDKTypeEIP712, MsgPutPolicyTypeUrl, } from '@/messages/greenfield/storage/MsgPutPolicy'; +import { Statement } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; import { QueryParamsResponse, QueryPolicyByIdRequest, @@ -19,8 +20,9 @@ import { MsgDeletePolicy, MsgPutPolicy, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; +import { toTimestamp } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { container, delay, inject, singleton } from 'tsyringe'; -import { TxResponse } from '..'; +import { PermissionTypes, TxResponse } from '..'; import { Basic } from './basic'; import { RpcQueryClient } from './queryclient'; @@ -53,11 +55,19 @@ export class Storage implements IStorage { } public async putPolicy(msg: MsgPutPolicy) { + const toSdk = MsgPutPolicy.toSDK(msg); return await this.basic.tx( MsgPutPolicyTypeUrl, msg.operator, MsgPutPolicySDKTypeEIP712, - MsgPutPolicy.toSDK(msg), + { + ...toSdk, + expiration_time: '', + statements: toSdk.statements.map((e) => { + e.expiration_time = ''; + return e; + }), + }, MsgPutPolicy.encode(msg).finish(), ); } diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts index aa8be3c7..80209604 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts @@ -42,6 +42,14 @@ export const MsgPutPolicySDKTypeEIP712 = { name: 'effect', type: 'string', }, + { + name: 'actions', + type: 'string[]', + }, + { + name: 'resources', + type: 'string[]', + }, { name: 'expiration_time', type: 'string', diff --git a/packages/chain-sdk/src/types/common.ts b/packages/chain-sdk/src/types/common.ts index c94c8498..2c1a07a9 100644 --- a/packages/chain-sdk/src/types/common.ts +++ b/packages/chain-sdk/src/types/common.ts @@ -1,6 +1,8 @@ import * as StorageEnums from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; +import * as PermissionTypes from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; +import * as TimestampTypes from '@bnb-chain/greenfield-cosmos-types/google/protobuf/timestamp'; import Long from 'long'; type TKeyValue = { [key: string]: string }; -export { Long, StorageEnums, TKeyValue }; +export { Long, StorageEnums, PermissionTypes, TimestampTypes, TKeyValue }; From 9341c4efabec40b6caf7a73ca402f4765e8fb802 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 21 Jun 2023 16:08:12 +0800 Subject: [PATCH 058/433] chore: [ci] release (alpha) (#121) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 7 +++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 27 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index fb8fe404..9c53bc0d 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -27,6 +27,7 @@ "rotten-needles-watch", "rude-tips-rush", "shy-books-tan", + "smooth-colts-hope", "strong-snails-count", "sweet-feet-hide", "ten-suits-crash", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index b5cef744..f949dbb9 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.2-alpha.21 + +### Patch Changes + +- Updated dependencies + [[`8fa1aa7`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8fa1aa7f4161ee319cb97b7874f0ca0e52de03fb)]: + - @bnb-chain/greenfield-chain-sdk@0.2.1-alpha.14 + ## 0.0.2-alpha.20 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 4784506c..fb76af39 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.2-alpha.20", + "version": "0.0.2-alpha.21", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 06f9f168..0a04e460 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.5-alpha.14 + +### Patch Changes + +- Updated dependencies + [[`8fa1aa7`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8fa1aa7f4161ee319cb97b7874f0ca0e52de03fb)]: + - @bnb-chain/greenfield-chain-sdk@0.2.1-alpha.14 + ## 0.0.5-alpha.13 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 3363664d..f4532c3e 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.5-alpha.13", + "version": "0.0.5-alpha.14", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 5345fc0a..ef8e8dc5 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,12 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.1-alpha.14 + +### Patch Changes + +- [`8fa1aa7`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8fa1aa7f4161ee319cb97b7874f0ca0e52de03fb) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Timestamp format + ## 0.2.1-alpha.13 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index c58b6cb7..86b40575 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.1-alpha.13", + "version": "0.2.1-alpha.14", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 5161eb36dc779b05ff3cf53778324d1533463ac8 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 21 Jun 2023 16:30:41 +0800 Subject: [PATCH 059/433] Refactor/policy (#122) * refactor: Bucket policy * refactor: Bucket policy --- .changeset/calm-trees-ring.md | 5 +++++ packages/chain-sdk/src/api/bucket.ts | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 .changeset/calm-trees-ring.md diff --git a/.changeset/calm-trees-ring.md b/.changeset/calm-trees-ring.md new file mode 100644 index 00000000..fc8b8f4a --- /dev/null +++ b/.changeset/calm-trees-ring.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +refactor: Bucket policy diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index 12e3e543..e6ff5f72 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -100,7 +100,10 @@ export interface IBucket { updateBucketInfo(msg: MsgUpdateBucketInfo): Promise; - putBucketPolicy(bucketName: string, srcMsg: Omit): Promise; + putBucketPolicy( + bucketName: string, + srcMsg: Omit, + ): Promise; deleteBucketPolicy( operator: string, @@ -480,7 +483,10 @@ export class Bucket implements IBucket { ); } - public async putBucketPolicy(bucketName: string, srcMsg: Omit) { + public async putBucketPolicy( + bucketName: string, + srcMsg: Omit, + ) { const resource = GRNToString(newBucketGRN(bucketName)); const msg: MsgPutPolicy = { ...srcMsg, From 3fd8f4c28b089021875f546623cf0eaeeb645986 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 21 Jun 2023 16:33:31 +0800 Subject: [PATCH 060/433] chore: [ci] release (alpha) (#123) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 9c53bc0d..4b760fec 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -9,6 +9,7 @@ }, "changesets": [ "beige-tables-carry", + "calm-trees-ring", "chatty-cars-pump", "clean-dogs-joke", "cold-suns-accept", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index f949dbb9..6574823f 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.2-alpha.22 + +### Patch Changes + +- Updated dependencies + [[`5161eb3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/5161eb36dc779b05ff3cf53778324d1533463ac8)]: + - @bnb-chain/greenfield-chain-sdk@0.2.1-alpha.15 + ## 0.0.2-alpha.21 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index fb76af39..bff2559a 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.2-alpha.21", + "version": "0.0.2-alpha.22", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 0a04e460..cdb3db17 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.5-alpha.15 + +### Patch Changes + +- Updated dependencies + [[`5161eb3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/5161eb36dc779b05ff3cf53778324d1533463ac8)]: + - @bnb-chain/greenfield-chain-sdk@0.2.1-alpha.15 + ## 0.0.5-alpha.14 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index f4532c3e..466c0602 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.5-alpha.14", + "version": "0.0.5-alpha.15", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index ef8e8dc5..1cfc55eb 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.1-alpha.15 + +### Patch Changes + +- [#122](https://github.com/bnb-chain/greenfield-js-sdk/pull/122) + [`5161eb3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/5161eb36dc779b05ff3cf53778324d1533463ac8) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: Bucket policy + ## 0.2.1-alpha.14 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 86b40575..6892c62e 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.1-alpha.14", + "version": "0.2.1-alpha.15", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From b3daac9fbba1638a9a128ef1085b9f6c8ae25023 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Mon, 26 Jun 2023 18:13:27 +0800 Subject: [PATCH 061/433] chore(example): BucketPolicy (#127) --- .../components/policy/bucketPolicy/index.tsx | 68 +++++++++++++++++++ .../components/policy/groupPolicy/index.tsx | 2 +- .../nextjs/src/components/policy/index.tsx | 4 ++ 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 examples/nextjs/src/components/policy/bucketPolicy/index.tsx diff --git a/examples/nextjs/src/components/policy/bucketPolicy/index.tsx b/examples/nextjs/src/components/policy/bucketPolicy/index.tsx new file mode 100644 index 00000000..70087f7e --- /dev/null +++ b/examples/nextjs/src/components/policy/bucketPolicy/index.tsx @@ -0,0 +1,68 @@ +import { client } from '@/client'; +import { PermissionTypes } from '@bnb-chain/greenfield-chain-sdk'; +import { useState } from 'react'; +import { useAccount } from 'wagmi'; + +export const BucketPolicy = () => { + const { address } = useAccount(); + const [policyBucketInfo, setBucketGroupInfo] = useState({ + bucketName: '', + }); + + return ( + <> +

Bucket Policy

+ bucket name : + { + setBucketGroupInfo({ ...policyBucketInfo, bucketName: e.target.value }); + }} + /> +
+ + + ); +}; diff --git a/examples/nextjs/src/components/policy/groupPolicy/index.tsx b/examples/nextjs/src/components/policy/groupPolicy/index.tsx index 75ab534e..5c76a66c 100644 --- a/examples/nextjs/src/components/policy/groupPolicy/index.tsx +++ b/examples/nextjs/src/components/policy/groupPolicy/index.tsx @@ -15,7 +15,7 @@ export const GroupPolicy = () => { group name : { setPolicyGroupInfo({ ...policyGroupInfo, groupName: e.target.value }); }} diff --git a/examples/nextjs/src/components/policy/index.tsx b/examples/nextjs/src/components/policy/index.tsx index d5234d01..a13f85c8 100644 --- a/examples/nextjs/src/components/policy/index.tsx +++ b/examples/nextjs/src/components/policy/index.tsx @@ -1,3 +1,4 @@ +import { BucketPolicy } from './bucketPolicy'; import { GroupPolicy } from './groupPolicy'; import { ObjectPolicy } from './objectPolicy'; @@ -5,6 +6,9 @@ export const Policy = () => { return ( <>

Policy

+ + + From 27da69616f5859295b1fd5a7a15551948cf32221 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Mon, 26 Jun 2023 18:22:51 +0800 Subject: [PATCH 062/433] Chore/update policy example (#128) * chore(example): BucketPolicy * chore(example): BucketPolicy --- examples/nextjs/src/components/policy/bucketPolicy/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/nextjs/src/components/policy/bucketPolicy/index.tsx b/examples/nextjs/src/components/policy/bucketPolicy/index.tsx index 70087f7e..ac0635b0 100644 --- a/examples/nextjs/src/components/policy/bucketPolicy/index.tsx +++ b/examples/nextjs/src/components/policy/bucketPolicy/index.tsx @@ -1,5 +1,5 @@ import { client } from '@/client'; -import { PermissionTypes } from '@bnb-chain/greenfield-chain-sdk'; +import { GRNToString, newBucketGRN, PermissionTypes } from '@bnb-chain/greenfield-chain-sdk'; import { useState } from 'react'; import { useAccount } from 'wagmi'; @@ -28,7 +28,7 @@ export const BucketPolicy = () => { const statement: PermissionTypes.Statement = { effect: PermissionTypes.Effect.EFFECT_ALLOW, actions: [PermissionTypes.ActionType.ACTION_UPDATE_BUCKET_INFO], - resources: ['grn:b::asdsd'], + resources: [GRNToString(newBucketGRN(policyBucketInfo.bucketName))], }; const tx = await client.bucket.putBucketPolicy(policyBucketInfo.bucketName, { From 16d8860c4fe012ac7e8e58791b0a2e5e06ee2b97 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 27 Jun 2023 15:44:31 +0800 Subject: [PATCH 063/433] Feat/gashub (#129) * feat: Add gas hub API * refactor: TypeUrl as constants --- .changeset/grumpy-gorillas-breathe.md | 5 + .../nextjs/src/components/query/index.tsx | 17 ++ packages/chain-sdk/src/api/account.ts | 16 +- packages/chain-sdk/src/api/bucket.ts | 29 ++- packages/chain-sdk/src/api/challenge.ts | 6 +- packages/chain-sdk/src/api/crosschain.ts | 31 ++- packages/chain-sdk/src/api/feegrant.ts | 12 +- packages/chain-sdk/src/api/gashub.ts | 28 +++ packages/chain-sdk/src/api/group.ts | 34 ++-- packages/chain-sdk/src/api/objectt.ts | 29 ++- packages/chain-sdk/src/api/payment.ts | 17 +- packages/chain-sdk/src/api/queryclient.ts | 6 + packages/chain-sdk/src/api/storage.ts | 14 +- packages/chain-sdk/src/client.ts | 4 + packages/chain-sdk/src/constants/index.ts | 4 +- packages/chain-sdk/src/constants/typeUrl.ts | 29 +++ packages/chain-sdk/src/index.ts | 2 +- .../src/messages/bank/MsgMultiSend.ts | 1 - .../chain-sdk/src/messages/bank/MsgSend.ts | 1 - .../src/messages/cosmos/oracle/MsgClaim.ts | 2 - .../messages/feegrant/MsgGrantAllowance.ts | 2 - .../messages/feegrant/MsgRevokeAllowance.ts | 1 - .../greenfield/bridge/MsgTransferOut.ts | 2 - .../messages/greenfield/chanenge/MsgAttest.ts | 2 - .../messages/greenfield/chanenge/MsgSubmit.ts | 2 - .../src/messages/greenfield/index.ts | 24 +++ .../payment/MsgCreatePaymentAccount.ts | 2 - .../messages/greenfield/payment/MsgDeposit.ts | 1 - .../greenfield/payment/MsgDisableRefund.ts | 1 - .../greenfield/payment/MsgWithdraw.ts | 1 - .../storage/MsgCancelCreateObject.ts | 21 -- .../greenfield/storage/MsgCreateBucket.ts | 2 - .../greenfield/storage/MsgCreateGroup.ts | 2 - .../greenfield/storage/MsgCreateObject.ts | 2 - .../greenfield/storage/MsgDeleteBucket.ts | 2 - .../greenfield/storage/MsgDeleteGroup.ts | 1 - .../greenfield/storage/MsgDeleteObject.ts | 17 -- .../greenfield/storage/MsgDeletePolicy.ts | 2 - .../greenfield/storage/MsgLeaveGroup.ts | 1 - .../greenfield/storage/MsgMirrorBucket.ts | 2 - .../greenfield/storage/MsgMirrorGroup.ts | 2 - .../greenfield/storage/MsgMirrorObject.ts | 2 - .../greenfield/storage/MsgPutPolicy.ts | 2 - .../greenfield/storage/MsgUpdateBucketInfo.ts | 2 - .../greenfield/storage/MsgUpdateGroupExtra.ts | 2 - .../storage/MsgUpdateGroupMember.ts | 2 - .../greenfield/storage/MsgUpdateObjectInfo.ts | 2 - packages/chain-sdk/src/messages/index.ts | 182 +----------------- packages/chain-sdk/src/messages/utils.ts | 173 +++++++++++++++++ packages/chain-sdk/src/tx/baseTx.ts | 71 ------- packages/chain-sdk/src/tx/index.ts | 4 - 51 files changed, 372 insertions(+), 449 deletions(-) create mode 100644 .changeset/grumpy-gorillas-breathe.md create mode 100644 packages/chain-sdk/src/api/gashub.ts create mode 100644 packages/chain-sdk/src/constants/typeUrl.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/index.ts delete mode 100644 packages/chain-sdk/src/tx/baseTx.ts delete mode 100644 packages/chain-sdk/src/tx/index.ts diff --git a/.changeset/grumpy-gorillas-breathe.md b/.changeset/grumpy-gorillas-breathe.md new file mode 100644 index 00000000..7a2ffafe --- /dev/null +++ b/.changeset/grumpy-gorillas-breathe.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +feat: Add Gashub API diff --git a/examples/nextjs/src/components/query/index.tsx b/examples/nextjs/src/components/query/index.tsx index 611a1214..a32bce14 100644 --- a/examples/nextjs/src/components/query/index.tsx +++ b/examples/nextjs/src/components/query/index.tsx @@ -24,6 +24,23 @@ export const QueryComponent = () => { +

tx

+
    +
  • + +
  • +
+

sp

  • diff --git a/packages/chain-sdk/src/api/account.ts b/packages/chain-sdk/src/api/account.ts index 561dd4c8..171ccb4c 100644 --- a/packages/chain-sdk/src/api/account.ts +++ b/packages/chain-sdk/src/api/account.ts @@ -1,9 +1,6 @@ -import { MsgMultiSendSDKTypeEIP712, MsgMultiSendTypeUrl } from '@/messages/bank/MsgMultiSend'; -import { MsgSendSDKTypeEIP712, MsgSendTypeUrl } from '@/messages/bank/MsgSend'; -import { - MsgCreatePaymentAccountSDKTypeEIP712, - MsgCreatePaymentAccountTypeUrl, -} from '@/messages/greenfield/payment/MsgCreatePaymentAccount'; +import { MsgMultiSendSDKTypeEIP712 } from '@/messages/bank/MsgMultiSend'; +import { MsgSendSDKTypeEIP712 } from '@/messages/bank/MsgSend'; +import { MsgCreatePaymentAccountSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgCreatePaymentAccount'; import { BaseAccount } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/auth'; import { QueryModuleAccountByNameResponse, @@ -21,7 +18,12 @@ import { } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; import { MsgCreatePaymentAccount } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/tx'; import { container, delay, inject, singleton } from 'tsyringe'; -import { TxResponse } from '..'; +import { + MsgCreatePaymentAccountTypeUrl, + MsgMultiSendTypeUrl, + MsgSendTypeUrl, + TxResponse, +} from '..'; import { Basic } from './basic'; import { RpcQueryClient } from './queryclient'; diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index e6ff5f72..cee5a0f8 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -1,19 +1,6 @@ -import { - MsgCreateBucketSDKTypeEIP712, - MsgCreateBucketTypeUrl, -} from '@/messages/greenfield/storage/MsgCreateBucket'; -import { - MsgDeleteBucketSDKTypeEIP712, - MsgDeleteBucketTypeUrl, -} from '@/messages/greenfield/storage/MsgDeleteBucket'; -import { - MsgDeletePolicySDKTypeEIP712, - MsgDeletePolicyTypeUrl, -} from '@/messages/greenfield/storage/MsgDeletePolicy'; -import { - MsgUpdateBucketInfoSDKTypeEIP712, - MsgUpdateBucketInfoTypeUrl, -} from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; +import { MsgCreateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCreateBucket'; +import { MsgDeleteBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteBucket'; +import { MsgUpdateBucketInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; import { getAuthorizationAuthTypeV2 } from '@/utils/auth'; import { decodeObjectFromHexString, encodeObjectToHexString } from '@/utils/encoding'; import { fetchWithTimeout, METHOD_GET, NORMAL_ERROR_CODE } from '@/utils/http'; @@ -42,7 +29,15 @@ import { import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import Long from 'long'; import { container, delay, inject, singleton } from 'tsyringe'; -import { GRNToString, newBucketGRN, TKeyValue, TxResponse } from '..'; +import { + GRNToString, + MsgCreateBucketTypeUrl, + MsgDeleteBucketTypeUrl, + MsgUpdateBucketInfoTypeUrl, + newBucketGRN, + TKeyValue, + TxResponse, +} from '..'; import { BucketProps, ICreateBucketMsgType, diff --git a/packages/chain-sdk/src/api/challenge.ts b/packages/chain-sdk/src/api/challenge.ts index 128699b6..9bda5fb5 100644 --- a/packages/chain-sdk/src/api/challenge.ts +++ b/packages/chain-sdk/src/api/challenge.ts @@ -1,5 +1,5 @@ -import { MsgAttestSDKTypeEIP712, MsgAttestTypeUrl } from '@/messages/greenfield/chanenge/MsgAttest'; -import { MsgSubmitSDKTypeEIP712, MsgSubmitTypeUrl } from '@/messages/greenfield/chanenge/MsgSubmit'; +import { MsgAttestSDKTypeEIP712 } from '@/messages/greenfield/chanenge/MsgAttest'; +import { MsgSubmitSDKTypeEIP712 } from '@/messages/greenfield/chanenge/MsgSubmit'; import { QueryInturnAttestationSubmitterResponse, QueryLatestAttestedChallengesResponse, @@ -7,7 +7,7 @@ import { } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/query'; import { MsgAttest, MsgSubmit } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/tx'; import { container, delay, inject, singleton } from 'tsyringe'; -import { TxResponse } from '..'; +import { MsgAttestTypeUrl, MsgSubmitTypeUrl, TxResponse } from '..'; import { Basic } from './basic'; import { RpcQueryClient } from './queryclient'; diff --git a/packages/chain-sdk/src/api/crosschain.ts b/packages/chain-sdk/src/api/crosschain.ts index 077f6dd9..f91acacd 100644 --- a/packages/chain-sdk/src/api/crosschain.ts +++ b/packages/chain-sdk/src/api/crosschain.ts @@ -1,20 +1,8 @@ -import { MsgClaimSDKTypeEIP712, MsgClaimTypeUrl } from '@/messages/cosmos/oracle/MsgClaim'; -import { - MsgTransferOutSDKTypeEIP712, - MsgTransferOutTypeUrl, -} from '@/messages/greenfield/bridge/MsgTransferOut'; -import { - MsgMirrorBucketSDKTypeEIP712, - MsgMirrorBucketTypeUrl, -} from '@/messages/greenfield/storage/MsgMirrorBucket'; -import { - MsgMirrorGroupSDKTypeEIP712, - MsgMirrorGroupTypeUrl, -} from '@/messages/greenfield/storage/MsgMirrorGroup'; -import { - MsgMirrorObjectSDKTypeEIP712, - MsgMirrorObjectTypeUrl, -} from '@/messages/greenfield/storage/MsgMirrorObject'; +import { MsgClaimSDKTypeEIP712 } from '@/messages/cosmos/oracle/MsgClaim'; +import { MsgTransferOutSDKTypeEIP712 } from '@/messages/greenfield/bridge/MsgTransferOut'; +import { MsgMirrorBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMirrorBucket'; +import { MsgMirrorGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMirrorGroup'; +import { MsgMirrorObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMirrorObject'; import { QueryCrossChainPackageResponse, QueryReceiveSequenceResponse, @@ -31,7 +19,14 @@ import { } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import Long from 'long'; import { container, singleton } from 'tsyringe'; -import { TxResponse } from '..'; +import { + MsgClaimTypeUrl, + MsgMirrorBucketTypeUrl, + MsgMirrorGroupTypeUrl, + MsgMirrorObjectTypeUrl, + MsgTransferOutTypeUrl, + TxResponse, +} from '..'; import { Basic } from './basic'; import { RpcQueryClient } from './queryclient'; diff --git a/packages/chain-sdk/src/api/feegrant.ts b/packages/chain-sdk/src/api/feegrant.ts index 0814c65c..6e53ff7c 100644 --- a/packages/chain-sdk/src/api/feegrant.ts +++ b/packages/chain-sdk/src/api/feegrant.ts @@ -1,11 +1,5 @@ -import { - MsgGrantAllowanceSDKTypeEIP712, - MsgGrantAllowanceTypeUrl, -} from '@/messages/feegrant/MsgGrantAllowance'; -import { - MsgRevokeAllowanceSDKTypeEIP712, - MsgRevokeAllowanceTypeUrl, -} from '@/messages/feegrant/MsgRevokeAllowance'; +import { MsgGrantAllowanceSDKTypeEIP712 } from '@/messages/feegrant/MsgGrantAllowance'; +import { MsgRevokeAllowanceSDKTypeEIP712 } from '@/messages/feegrant/MsgRevokeAllowance'; import { QueryAllowanceRequest, QueryAllowanceResponse, @@ -17,7 +11,7 @@ import { MsgRevokeAllowance, } from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/tx'; import { container, singleton } from 'tsyringe'; -import { TxResponse } from '..'; +import { MsgGrantAllowanceTypeUrl, MsgRevokeAllowanceTypeUrl, TxResponse } from '..'; import { Basic } from './basic'; import { RpcQueryClient } from './queryclient'; diff --git a/packages/chain-sdk/src/api/gashub.ts b/packages/chain-sdk/src/api/gashub.ts new file mode 100644 index 00000000..def04f80 --- /dev/null +++ b/packages/chain-sdk/src/api/gashub.ts @@ -0,0 +1,28 @@ +import { container, singleton } from 'tsyringe'; +import { + QueryMsgGasParamsRequest, + QueryMsgGasParamsResponse, + QueryParamsResponse, +} from '@bnb-chain/greenfield-cosmos-types/cosmos/gashub/v1beta1/query'; +import { RpcQueryClient } from './queryclient'; + +export interface IGashub { + getParams(): Promise; + + getMsgGasParams(request: QueryMsgGasParamsRequest): Promise; +} + +@singleton() +export class Gashub implements IGashub { + private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); + + async getMsgGasParams(request: QueryMsgGasParamsRequest): Promise { + const rpc = await this.queryClient.getGashubClient(); + return await rpc.MsgGasParams(request); + } + + async getParams() { + const rpc = await this.queryClient.getGashubClient(); + return await rpc.Params(); + } +} diff --git a/packages/chain-sdk/src/api/group.ts b/packages/chain-sdk/src/api/group.ts index 12c28f97..9d9544e0 100644 --- a/packages/chain-sdk/src/api/group.ts +++ b/packages/chain-sdk/src/api/group.ts @@ -1,23 +1,8 @@ -import { - MsgCreateGroupSDKTypeEIP712, - MsgCreateGroupTypeUrl, -} from '@/messages/greenfield/storage/MsgCreateGroup'; -import { - MsgDeleteGroupSDKTypeEIP712, - MsgDeleteGroupTypeUrl, -} from '@/messages/greenfield/storage/MsgDeleteGroup'; -import { - MsgLeaveGroupSDKTypeEIP712, - MsgLeaveGroupTypeUrl, -} from '@/messages/greenfield/storage/MsgLeaveGroup'; -import { - MsgUpdateGroupExtraSDKTypeEIP712, - MsgUpdateGroupExtraTypeUrl, -} from '@/messages/greenfield/storage/MsgUpdateGroupExtra'; -import { - MsgUpdateGroupMemberSDKTypeEIP712, - MsgUpdateGroupMemberTypeUrl, -} from '@/messages/greenfield/storage/MsgUpdateGroupMember'; +import { MsgCreateGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCreateGroup'; +import { MsgDeleteGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteGroup'; +import { MsgLeaveGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgLeaveGroup'; +import { MsgUpdateGroupExtraSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateGroupExtra'; +import { MsgUpdateGroupMemberSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateGroupMember'; import { GRNToString, newBucketGRN, newGroupGRN, newObjectGRN } from '@/utils/grn'; import { QueryGroupNFTResponse, @@ -38,7 +23,14 @@ import { MsgUpdateGroupMember, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import { container, delay, inject, singleton } from 'tsyringe'; -import { TxResponse } from '..'; +import { + MsgCreateGroupTypeUrl, + MsgDeleteGroupTypeUrl, + MsgLeaveGroupTypeUrl, + MsgUpdateGroupExtraTypeUrl, + MsgUpdateGroupMemberTypeUrl, + TxResponse, +} from '..'; import { Basic } from './basic'; import { RpcQueryClient } from './queryclient'; import { Storage } from './storage'; diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 0af1aced..39e7b203 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -1,19 +1,7 @@ -import { - MsgCancelCreateObjectSDKTypeEIP712, - MsgCancelCreateObjectTypeUrl, -} from '@/messages/greenfield/storage/MsgCancelCreateObject'; -import { - MsgCreateObjectSDKTypeEIP712, - MsgCreateObjectTypeUrl, -} from '@/messages/greenfield/storage/MsgCreateObject'; -import { - MsgDeleteObjectSDKTypeEIP712, - MsgDeleteObjectTypeUrl, -} from '@/messages/greenfield/storage/MsgDeleteObject'; -import { - MsgUpdateObjectInfoSDKTypeEIP712, - MsgUpdateObjectInfoTypeUrl, -} from '@/messages/greenfield/storage/MsgUpdateObjectInfo'; +import { MsgCancelCreateObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCancelCreateObject'; +import { MsgCreateObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCreateObject'; +import { MsgDeleteObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteObject'; +import { MsgUpdateObjectInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateObjectInfo'; import { getAuthorizationAuthTypeV2 } from '@/utils/auth'; import { fetchWithTimeout, METHOD_GET, METHOD_PUT, NORMAL_ERROR_CODE } from '@/utils/http'; import { @@ -43,7 +31,14 @@ import { toTimestamp, } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { container, delay, inject, singleton } from 'tsyringe'; -import { GRNToString, newObjectGRN } from '..'; +import { + GRNToString, + MsgCancelCreateObjectTypeUrl, + MsgCreateObjectTypeUrl, + MsgDeleteObjectTypeUrl, + MsgUpdateObjectInfoTypeUrl, + newObjectGRN, +} from '..'; import { ICreateObjectMsgType, IObjectProps, diff --git a/packages/chain-sdk/src/api/payment.ts b/packages/chain-sdk/src/api/payment.ts index 632290d8..7935feb6 100644 --- a/packages/chain-sdk/src/api/payment.ts +++ b/packages/chain-sdk/src/api/payment.ts @@ -1,15 +1,6 @@ -import { - MsgDepositSDKTypeEIP712, - MsgDepositTypeUrl, -} from '@/messages/greenfield/payment/MsgDeposit'; -import { - MsgDisableRefundSDKTypeEIP712, - MsgDisableRefundTypeUrl, -} from '@/messages/greenfield/payment/MsgDisableRefund'; -import { - MsgWithdrawSDKTypeEIP712, - MsgWithdrawTypeUrl, -} from '@/messages/greenfield/payment/MsgWithdraw'; +import { MsgDepositSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgDeposit'; +import { MsgDisableRefundSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgDisableRefund'; +import { MsgWithdrawSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgWithdraw'; import { QueryGetStreamRecordResponse, QueryParamsResponse, @@ -20,7 +11,7 @@ import { MsgWithdraw, } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/tx'; import { container, singleton } from 'tsyringe'; -import { TxResponse } from '..'; +import { MsgDepositTypeUrl, MsgDisableRefundTypeUrl, MsgWithdrawTypeUrl, TxResponse } from '..'; import { Basic } from './basic'; import { RpcQueryClient } from './queryclient'; diff --git a/packages/chain-sdk/src/api/queryclient.ts b/packages/chain-sdk/src/api/queryclient.ts index e89dfecc..21d60fab 100644 --- a/packages/chain-sdk/src/api/queryclient.ts +++ b/packages/chain-sdk/src/api/queryclient.ts @@ -8,6 +8,7 @@ import { QueryClientImpl as BridgeQueryClientImpl } from '@bnb-chain/greenfield- import { QueryClientImpl as ChallengeQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/query'; import { QueryClientImpl as PaymentQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; import { QueryClientImpl as SpQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/query'; +import { QueryClientImpl as GashubClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/gashub/v1beta1/query'; import { QueryClientImpl as BucketQueryClientImpl, QueryClientImpl as StorageQueryClientImpl, @@ -119,6 +120,11 @@ export class RpcQueryClient { const rpcClient = await this.getRpcClient(); return new MsgClientImpl(rpcClient); } + + public async getGashubClient() { + const rpcClient = await this.getRpcClient(); + return new GashubClientImpl(rpcClient); + } } export const makeClientWithExtension = async ( diff --git a/packages/chain-sdk/src/api/storage.ts b/packages/chain-sdk/src/api/storage.ts index f88ac17f..20e6678d 100644 --- a/packages/chain-sdk/src/api/storage.ts +++ b/packages/chain-sdk/src/api/storage.ts @@ -1,12 +1,5 @@ -import { - MsgDeletePolicySDKTypeEIP712, - MsgDeletePolicyTypeUrl, -} from '@/messages/greenfield/storage/MsgDeletePolicy'; -import { - MsgPutPolicySDKTypeEIP712, - MsgPutPolicyTypeUrl, -} from '@/messages/greenfield/storage/MsgPutPolicy'; -import { Statement } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; +import { MsgDeletePolicySDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeletePolicy'; +import { MsgPutPolicySDKTypeEIP712 } from '@/messages/greenfield/storage/MsgPutPolicy'; import { QueryParamsResponse, QueryPolicyByIdRequest, @@ -20,9 +13,8 @@ import { MsgDeletePolicy, MsgPutPolicy, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { toTimestamp } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { container, delay, inject, singleton } from 'tsyringe'; -import { PermissionTypes, TxResponse } from '..'; +import { MsgDeletePolicyTypeUrl, MsgPutPolicyTypeUrl, TxResponse } from '..'; import { Basic } from './basic'; import { RpcQueryClient } from './queryclient'; diff --git a/packages/chain-sdk/src/client.ts b/packages/chain-sdk/src/client.ts index 11050558..b50a613d 100644 --- a/packages/chain-sdk/src/client.ts +++ b/packages/chain-sdk/src/client.ts @@ -13,6 +13,7 @@ import { ISp, Sp } from './api/sp'; import { IOffChainAuth, OffChainAuth } from './api/offchainauth'; import { IStorage, Storage } from './api/storage'; import { Basic, IBasic } from './api/basic'; +import { Gashub, IGashub } from './api/gashub'; @injectable() export class Client { @@ -27,6 +28,7 @@ export class Client { const crosschain = container.resolve(CrossChain); const distribution = container.resolve(Distribution); const feegrant = container.resolve(FeeGrant); + const gashub = container.resolve(Gashub); const group = container.resolve(Group); const objectt = container.resolve(Objectt); const payment = container.resolve(Payment); @@ -42,6 +44,7 @@ export class Client { crosschain, distribution, feegrant, + gashub, group, objectt, payment, @@ -59,6 +62,7 @@ export class Client { public crosschain: ICrossChain, public distribution: IDistribution, public feegrant: IFeeGrant, + public gashub: IGashub, public group: IGroup, public object: IObject, public payment: IPayment, diff --git a/packages/chain-sdk/src/constants/index.ts b/packages/chain-sdk/src/constants/index.ts index fb13e2b2..fa6e6e53 100644 --- a/packages/chain-sdk/src/constants/index.ts +++ b/packages/chain-sdk/src/constants/index.ts @@ -1,2 +1,4 @@ +export * from './typeUrl'; + export const ZERO_PUBKEY = '0x000000000000000000000000000000000000000000000000000000000000000000'; -export const DEFAULT_DENOM = ' BNB'; +export const DEFAULT_DENOM = 'BNB'; diff --git a/packages/chain-sdk/src/constants/typeUrl.ts b/packages/chain-sdk/src/constants/typeUrl.ts new file mode 100644 index 00000000..85d19925 --- /dev/null +++ b/packages/chain-sdk/src/constants/typeUrl.ts @@ -0,0 +1,29 @@ +export const MsgSendTypeUrl = '/cosmos.bank.v1beta1.MsgSend'; +export const MsgMultiSendTypeUrl = '/cosmos.bank.v1beta1.MsgMultiSend'; +export const MsgClaimTypeUrl = '/cosmos.oracle.v1.MsgClaim'; +export const MsgGrantAllowanceTypeUrl = '/cosmos.feegrant.v1beta1.MsgGrantAllowance'; +export const MsgRevokeAllowanceTypeUrl = '/cosmos.feegrant.v1beta1.MsgRevokeAllowance'; +export const MsgTransferOutTypeUrl = '/greenfield.bridge.MsgTransferOut'; +export const MsgAttestTypeUrl = '/greenfield.challenge.MsgAttest'; +export const MsgSubmitTypeUrl = '/greenfield.challenge.MsgSubmit'; +export const MsgCreatePaymentAccountTypeUrl = '/greenfield.payment.MsgCreatePaymentAccount'; +export const MsgDepositTypeUrl = '/greenfield.payment.MsgDeposit'; +export const MsgDisableRefundTypeUrl = '/greenfield.payment.MsgDisableRefund'; +export const MsgWithdrawTypeUrl = '/greenfield.payment.MsgWithdraw'; +export const MsgCancelCreateObjectTypeUrl = '/greenfield.storage.MsgCancelCreateObject'; +export const MsgCreateBucketTypeUrl = '/greenfield.storage.MsgCreateBucket'; +export const MsgCreateGroupTypeUrl = '/greenfield.storage.MsgCreateGroup'; +export const MsgCreateObjectTypeUrl = '/greenfield.storage.MsgCreateObject'; +export const MsgDeleteBucketTypeUrl = '/greenfield.storage.MsgDeleteBucket'; +export const MsgDeleteGroupTypeUrl = '/greenfield.storage.MsgDeleteGroup'; +export const MsgDeleteObjectTypeUrl = '/greenfield.storage.MsgDeleteObject'; +export const MsgDeletePolicyTypeUrl = '/greenfield.storage.MsgDeletePolicy'; +export const MsgLeaveGroupTypeUrl = '/greenfield.storage.MsgLeaveGroup'; +export const MsgMirrorBucketTypeUrl = '/greenfield.storage.MsgMirrorBucket'; +export const MsgMirrorGroupTypeUrl = '/greenfield.storage.MsgMirrorGroup'; +export const MsgMirrorObjectTypeUrl = '/greenfield.storage.MsgMirrorObject'; +export const MsgPutPolicyTypeUrl = '/greenfield.storage.MsgPutPolicy'; +export const MsgUpdateBucketInfoTypeUrl = '/greenfield.storage.MsgUpdateBucketInfo'; +export const MsgUpdateGroupExtraTypeUrl = '/greenfield.storage.MsgUpdateGroupExtra'; +export const MsgUpdateGroupMemberTypeUrl = '/greenfield.storage.MsgUpdateGroupMember'; +export const MsgUpdateObjectInfoTypeUrl = '/greenfield.storage.MsgUpdateObjectInfo'; diff --git a/packages/chain-sdk/src/index.ts b/packages/chain-sdk/src/index.ts index 4b39c522..8532cf27 100644 --- a/packages/chain-sdk/src/index.ts +++ b/packages/chain-sdk/src/index.ts @@ -1,6 +1,6 @@ export * from './client'; export * from './constants'; export * from './sign'; -export * from './tx'; export * from './types'; +export * from './messages'; export * from './utils'; diff --git a/packages/chain-sdk/src/messages/bank/MsgMultiSend.ts b/packages/chain-sdk/src/messages/bank/MsgMultiSend.ts index 93602625..b0d03d81 100644 --- a/packages/chain-sdk/src/messages/bank/MsgMultiSend.ts +++ b/packages/chain-sdk/src/messages/bank/MsgMultiSend.ts @@ -1,4 +1,3 @@ -export const MsgMultiSendTypeUrl = '/cosmos.bank.v1beta1.MsgMultiSend'; export const MsgMultiSendSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/bank/MsgSend.ts b/packages/chain-sdk/src/messages/bank/MsgSend.ts index 575a4617..37a666bc 100644 --- a/packages/chain-sdk/src/messages/bank/MsgSend.ts +++ b/packages/chain-sdk/src/messages/bank/MsgSend.ts @@ -1,4 +1,3 @@ -export const MsgSendTypeUrl = '/cosmos.bank.v1beta1.MsgSend'; export const MsgSendSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts b/packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts index 941108b8..5c462e8b 100644 --- a/packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts +++ b/packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts @@ -1,5 +1,3 @@ -export const MsgClaimTypeUrl = '/cosmos.oracle.v1.MsgClaim'; - export const MsgClaimSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts b/packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts index 10d2bf00..8fc7eea8 100644 --- a/packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts +++ b/packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts @@ -1,5 +1,3 @@ -export const MsgGrantAllowanceTypeUrl = '/cosmos.feegrant.v1beta1.MsgGrantAllowance'; - export const MsgGrantAllowanceSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts b/packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts index f1afe290..65d4e2c7 100644 --- a/packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts +++ b/packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts @@ -1,4 +1,3 @@ -export const MsgRevokeAllowanceTypeUrl = '/cosmos.feegrant.v1beta1.MsgRevokeAllowance'; export const MsgRevokeAllowanceSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts b/packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts index a9bb4052..55f6c4d5 100644 --- a/packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts +++ b/packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts @@ -1,5 +1,3 @@ -export const MsgTransferOutTypeUrl = '/greenfield.bridge.MsgTransferOut'; - export const MsgTransferOutSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts b/packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts index 1b434879..46771348 100644 --- a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts +++ b/packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts @@ -1,5 +1,3 @@ -export const MsgAttestTypeUrl = '/greenfield.challenge.MsgAttest'; - export const MsgAttestSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts b/packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts index c8734186..19dd1c50 100644 --- a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts +++ b/packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts @@ -1,5 +1,3 @@ -export const MsgSubmitTypeUrl = '/greenfield.challenge.MsgSubmit'; - export const MsgSubmitSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/index.ts b/packages/chain-sdk/src/messages/greenfield/index.ts new file mode 100644 index 00000000..880b316f --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/index.ts @@ -0,0 +1,24 @@ +export * from './bridge/MsgTransferOut'; +export * from './chanenge/MsgAttest'; +export * from './chanenge/MsgSubmit'; +export * from './payment/MsgCreatePaymentAccount'; +export * from './payment/MsgDeposit'; +export * from './payment/MsgDisableRefund'; +export * from './payment/MsgWithdraw'; +export * from './storage/MsgCancelCreateObject'; +export * from './storage/MsgCreateBucket'; +export * from './storage/MsgCreateGroup'; +export * from './storage/MsgCreateObject'; +export * from './storage/MsgDeleteBucket'; +export * from './storage/MsgDeleteGroup'; +export * from './storage/MsgDeleteObject'; +export * from './storage/MsgDeletePolicy'; +export * from './storage/MsgLeaveGroup'; +export * from './storage/MsgMirrorBucket'; +export * from './storage/MsgMirrorGroup'; +export * from './storage/MsgMirrorObject'; +export * from './storage/MsgPutPolicy'; +export * from './storage/MsgUpdateBucketInfo'; +export * from './storage/MsgUpdateGroupExtra'; +export * from './storage/MsgUpdateGroupMember'; +export * from './storage/MsgUpdateObjectInfo'; diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts b/packages/chain-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts index 61ccc3ed..f817b3ec 100644 --- a/packages/chain-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts +++ b/packages/chain-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts @@ -1,5 +1,3 @@ -export const MsgCreatePaymentAccountTypeUrl = '/greenfield.payment'; - export const MsgCreatePaymentAccountSDKTypeEIP712 = { Msg: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts b/packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts index 99b498b8..f9e56508 100644 --- a/packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts +++ b/packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts @@ -1,4 +1,3 @@ -export const MsgDepositTypeUrl = '/greenfield.payment.MsgDeposit'; export const MsgDepositSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts b/packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts index cd4f16ec..a2d9d970 100644 --- a/packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts +++ b/packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts @@ -1,4 +1,3 @@ -export const MsgDisableRefundTypeUrl = '/greenfield.payment.MsgDisableRefund'; export const MsgDisableRefundSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts b/packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts index eaec76e2..f8f9a956 100644 --- a/packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts +++ b/packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts @@ -1,4 +1,3 @@ -export const MsgWithdrawTypeUrl = '/greenfield.payment.MsgWithdraw'; export const MsgWithdrawSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts index 68ad783a..34975dbf 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts @@ -1,5 +1,3 @@ -export const MsgCancelCreateObjectTypeUrl = '/greenfield.storage.MsgCancelCreateObject'; - export const MsgCancelCreateObjectSDKTypeEIP712 = { Msg1: [ { @@ -20,22 +18,3 @@ export const MsgCancelCreateObjectSDKTypeEIP712 = { }, ], }; - -export interface ICancelCreateObjectMsg { - from: string; - bucketName: string; - objectName: string; -} - -export const newMsgCancelCreateObject = ({ - from, - bucketName, - objectName, -}: ICancelCreateObjectMsg) => { - return { - type: MsgCancelCreateObjectTypeUrl, - operator: from, - bucket_name: bucketName, - object_name: objectName, - }; -}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts index 2085a256..54c04e49 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts @@ -1,5 +1,3 @@ -export const MsgCreateBucketTypeUrl = '/greenfield.storage.MsgCreateBucket'; - export const MsgCreateBucketSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts index 1a6dc7a0..26f2a280 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts @@ -1,5 +1,3 @@ -export const MsgCreateGroupTypeUrl = '/greenfield.storage.MsgCreateGroup'; - export const MsgCreateGroupSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts index 9386976c..3df43495 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts @@ -1,5 +1,3 @@ -export const MsgCreateObjectTypeUrl = '/greenfield.storage.MsgCreateObject'; - export const MsgCreateObjectSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts index 97637371..a09c656a 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts @@ -1,5 +1,3 @@ -export const MsgDeleteBucketTypeUrl = '/greenfield.storage.MsgDeleteBucket'; - export const MsgDeleteBucketSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts index eea3a164..7f845a02 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts @@ -1,4 +1,3 @@ -export const MsgDeleteGroupTypeUrl = '/greenfield.storage.MsgDeleteGroup'; export const MsgDeleteGroupSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts index be16002c..ca603f37 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts @@ -1,5 +1,3 @@ -export const MsgDeleteObjectTypeUrl = '/greenfield.storage.MsgDeleteObject'; - export const MsgDeleteObjectSDKTypeEIP712 = { Msg1: [ { @@ -20,18 +18,3 @@ export const MsgDeleteObjectSDKTypeEIP712 = { }, ], }; - -export interface IDeleteObjectMsg { - bucketName: string; - objectName: string; - from: string; -} - -export const newMsgDeleteObject = ({ bucketName, objectName, from }: IDeleteObjectMsg) => { - return { - type: MsgDeleteObjectTypeUrl, - bucket_name: bucketName, - object_name: objectName, - operator: from, - }; -}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts index 52970807..3b349fb0 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts @@ -1,5 +1,3 @@ -export const MsgDeletePolicyTypeUrl = '/greenfield.storage.MsgDeletePolicy'; - export const MsgDeletePolicySDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts index 71ad512e..d5dd3173 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts @@ -1,4 +1,3 @@ -export const MsgLeaveGroupTypeUrl = '/greenfield.storage.MsgLeaveGroup'; export const MsgLeaveGroupSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts index abe65940..013b89d6 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts @@ -1,5 +1,3 @@ -export const MsgMirrorBucketTypeUrl = '/greenfield.storage.MsgMirrorBucket'; - export const MsgMirrorBucketSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts index 4202f6bb..5b41f86f 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts @@ -1,5 +1,3 @@ -export const MsgMirrorGroupTypeUrl = '/greenfield.storage.MsgMirrorGroup'; - export const MsgMirrorGroupSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts index e6a76143..025d4fbd 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts @@ -1,5 +1,3 @@ -export const MsgMirrorObjectTypeUrl = '/greenfield.storage.MsgMirrorObject'; - export const MsgMirrorObjectSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts index 80209604..e9b1a181 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts @@ -1,5 +1,3 @@ -export const MsgPutPolicyTypeUrl = '/greenfield.storage.MsgPutPolicy'; - export const MsgPutPolicySDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts index 97eb5bbb..eaaa5ecf 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts @@ -1,5 +1,3 @@ -export const MsgUpdateBucketInfoTypeUrl = '/greenfield.storage.MsgUpdateBucketInfo'; - export const MsgUpdateBucketInfoSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts index 5ac375d7..a8007ab4 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts @@ -1,5 +1,3 @@ -export const MsgUpdateGroupExtraTypeUrl = '/greenfield.storage.MsgUpdateGroupExtra'; - export const MsgUpdateGroupExtraSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts index edbbb75d..aedde54e 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts @@ -1,5 +1,3 @@ -export const MsgUpdateGroupMemberTypeUrl = '/greenfield.storage.MsgUpdateGroupMember'; - export const MsgUpdateGroupMemberSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts index 7381cbe6..9eef8a13 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts @@ -1,5 +1,3 @@ -export const MsgUpdateObjectInfoTypeUrl = '/greenfield.storage.MsgUpdateObjectInfo'; - export const MsgUpdateObjectInfoSDKTypeEIP712 = { Msg1: [ { diff --git a/packages/chain-sdk/src/messages/index.ts b/packages/chain-sdk/src/messages/index.ts index 8a8a657b..87b002c5 100644 --- a/packages/chain-sdk/src/messages/index.ts +++ b/packages/chain-sdk/src/messages/index.ts @@ -1,172 +1,10 @@ -import { MetaTxInfo } from '..'; - -export const createEIP712 = (types: object, chainId: string, message: object) => { - return { - types, - primaryType: 'Tx', - domain: { - name: 'Greenfield Tx', - version: '1.0.0', - chainId, - verifyingContract: 'greenfield', - salt: '0', - }, - message, - }; -}; - -export const generateMessage = ( - accountNumber: string, - sequence: string, - chainCosmosId: string, - memo: string, - fee: object, - msg: object, - timeoutHeight: string, -) => { - let res: Record = { - account_number: accountNumber, - chain_id: chainCosmosId, - sequence, - memo, - fee, - timeout_height: timeoutHeight, - }; - - if (msg.hasOwnProperty('msg1')) { - res = { - ...res, - ...msg, - }; - } else { - res.msg1 = msg; - } - - return res; -}; - -export const generateTypes = (newTypes: object) => { - const types = { - Coin: [ - { name: 'denom', type: 'string' }, - { name: 'amount', type: 'uint256' }, - ], - EIP712Domain: [ - { name: 'name', type: 'string' }, - { name: 'version', type: 'string' }, - { name: 'chainId', type: 'uint256' }, - { name: 'verifyingContract', type: 'string' }, - { name: 'salt', type: 'string' }, - ], - Fee: [ - { name: 'amount', type: 'Coin[]' }, - { name: 'gas_limit', type: 'uint256' }, - { name: 'payer', type: 'string' }, - { name: 'granter', type: 'string' }, - ], - Tx: [ - { - name: 'account_number', - type: 'uint256', - }, - { - name: 'chain_id', - type: 'uint256', - }, - { - name: 'fee', - type: 'Fee', - }, - { - name: 'memo', - type: 'string', - }, - { - name: 'sequence', - type: 'uint256', - }, - { - name: 'timeout_height', - type: 'uint256', - }, - ], - }; - - if (Array.isArray(newTypes)) { - for (let i = 0; i < newTypes.length; i++) { - types.Tx.push({ - name: `msg${i + 1}`, - type: `Msg${i + 1}`, - }); - } - Object.assign(types, ...newTypes); - } else { - types.Tx.push({ - name: 'msg1', - type: 'Msg1', - }); - Object.assign(types, newTypes); - } - - // sort types by field name - const resTypes: Record = {}; - const unsortedObjArr = [...Object.entries(types)]; - const sortedObjArr = unsortedObjArr.sort(([k1], [k2]) => k1.localeCompare(k2)); - sortedObjArr.forEach(([k, v]) => { - resTypes[k] = v; - }); - - return resTypes; -}; - -export const generateFee = ( - amount: string, - denom: string, - gas_limit: string, - payer: string, - granter: string, -) => { - return { - amount: [ - { - amount, - denom, - }, - ], - gas_limit, - payer, - granter, - }; -}; - -export const mergeMultiEip712 = ( - eip712s: MetaTxInfo['MsgSDKTypeEIP712'][], -): MetaTxInfo['MsgSDKTypeEIP712'][] => { - const res: MetaTxInfo['MsgSDKTypeEIP712'][] = []; - - eip712s.forEach((eip712, index) => { - if (index === 0) { - res.push(eip712); - } else { - const str = JSON.stringify(eip712); - const reStr = str.replaceAll('Msg1', `Msg${index + 1}`); - res.push(JSON.parse(reStr) as MetaTxInfo['MsgSDKTypeEIP712']); - } - }); - - return res; -}; - -export const mergeMultiMessage = (txs: MetaTxInfo[]) => { - const msgs = txs.map((tx) => tx.MsgSDK); - - const res: Record = {}; - msgs.forEach((msg, index) => { - res[`msg${index + 1}`] = { - ...msg, - type: txs[index].typeUrl, - }; - }); - - return res; -}; +export { + createEIP712, + generateFee, + generateMessage, + generateMsg, + generateTypes, + mergeMultiEip712, + mergeMultiMessage, + typeWrapper, +} from './utils'; diff --git a/packages/chain-sdk/src/messages/utils.ts b/packages/chain-sdk/src/messages/utils.ts index 3066b93b..989abc5f 100644 --- a/packages/chain-sdk/src/messages/utils.ts +++ b/packages/chain-sdk/src/messages/utils.ts @@ -13,3 +13,176 @@ export const generateMsg = (typeUrl: string, msgBytes: Uint8Array) => { value: msgBytes, }); }; + +import { MetaTxInfo } from '..'; + +export const createEIP712 = (types: object, chainId: string, message: object) => { + return { + types, + primaryType: 'Tx', + domain: { + name: 'Greenfield Tx', + version: '1.0.0', + chainId, + verifyingContract: 'greenfield', + salt: '0', + }, + message, + }; +}; + +export const generateMessage = ( + accountNumber: string, + sequence: string, + chainCosmosId: string, + memo: string, + fee: object, + msg: object, + timeoutHeight: string, +) => { + let res: Record = { + account_number: accountNumber, + chain_id: chainCosmosId, + sequence, + memo, + fee, + timeout_height: timeoutHeight, + }; + + if (msg.hasOwnProperty('msg1')) { + res = { + ...res, + ...msg, + }; + } else { + res.msg1 = msg; + } + + return res; +}; + +export const generateTypes = (newTypes: object) => { + const types = { + Coin: [ + { name: 'denom', type: 'string' }, + { name: 'amount', type: 'uint256' }, + ], + EIP712Domain: [ + { name: 'name', type: 'string' }, + { name: 'version', type: 'string' }, + { name: 'chainId', type: 'uint256' }, + { name: 'verifyingContract', type: 'string' }, + { name: 'salt', type: 'string' }, + ], + Fee: [ + { name: 'amount', type: 'Coin[]' }, + { name: 'gas_limit', type: 'uint256' }, + { name: 'payer', type: 'string' }, + { name: 'granter', type: 'string' }, + ], + Tx: [ + { + name: 'account_number', + type: 'uint256', + }, + { + name: 'chain_id', + type: 'uint256', + }, + { + name: 'fee', + type: 'Fee', + }, + { + name: 'memo', + type: 'string', + }, + { + name: 'sequence', + type: 'uint256', + }, + { + name: 'timeout_height', + type: 'uint256', + }, + ], + }; + + if (Array.isArray(newTypes)) { + for (let i = 0; i < newTypes.length; i++) { + types.Tx.push({ + name: `msg${i + 1}`, + type: `Msg${i + 1}`, + }); + } + Object.assign(types, ...newTypes); + } else { + types.Tx.push({ + name: 'msg1', + type: 'Msg1', + }); + Object.assign(types, newTypes); + } + + // sort types by field name + const resTypes: Record = {}; + const unsortedObjArr = [...Object.entries(types)]; + const sortedObjArr = unsortedObjArr.sort(([k1], [k2]) => k1.localeCompare(k2)); + sortedObjArr.forEach(([k, v]) => { + resTypes[k] = v; + }); + + return resTypes; +}; + +export const generateFee = ( + amount: string, + denom: string, + gas_limit: string, + payer: string, + granter: string, +) => { + return { + amount: [ + { + amount, + denom, + }, + ], + gas_limit, + payer, + granter, + }; +}; + +export const mergeMultiEip712 = ( + eip712s: MetaTxInfo['MsgSDKTypeEIP712'][], +): MetaTxInfo['MsgSDKTypeEIP712'][] => { + const res: MetaTxInfo['MsgSDKTypeEIP712'][] = []; + + eip712s.forEach((eip712, index) => { + if (index === 0) { + res.push(eip712); + } else { + const str = JSON.stringify(eip712); + const reStr = str.replaceAll('Msg1', `Msg${index + 1}`); + res.push(JSON.parse(reStr) as MetaTxInfo['MsgSDKTypeEIP712']); + } + }); + + return res; +}; + +export const mergeMultiMessage = (txs: MetaTxInfo[]) => { + const msgs = txs.map((tx) => tx.MsgSDK); + + const res: Record = {}; + msgs.forEach((msg, index) => { + res[`msg${index + 1}`] = { + ...msg, + type: txs[index].typeUrl, + }; + }); + + return res; +}; diff --git a/packages/chain-sdk/src/tx/baseTx.ts b/packages/chain-sdk/src/tx/baseTx.ts deleted file mode 100644 index 84c79e4c..00000000 --- a/packages/chain-sdk/src/tx/baseTx.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { makeRpcClient } from '@/api/queryclient'; -import { - ServiceClientImpl, - SimulateRequest, -} from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/service'; -import { AuthInfo, Tx, TxBody } from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/tx'; -import { StargateClient } from '@cosmjs/stargate'; -import { toBuffer } from '@ethereumjs/util'; - -export interface IBaseMsg { - sequence: string; - denom: string; - accountNumber: string; - gasLimit: number; - gasPrice: string; -} - -export interface ISendMsg { - from: string; - to: string; - amount: string; -} - -export interface IRawTxInfo { - bytes: Uint8Array; - hex: string; -} - -export class BaseTx { - readonly rpcUrl: string; - readonly chainId: string; - readonly txType: string; - private static client: StargateClient; - - constructor(rpcUrl: string, chainId: string, txType: string) { - this.rpcUrl = rpcUrl; - this.chainId = chainId; - this.txType = txType; - } - - public async broadcastTx(txRawBytes: Uint8Array) { - const client = await StargateClient.connect(this.rpcUrl); - - if (!BaseTx.client) { - BaseTx.client = client; - } - - return await client.broadcastTx(txRawBytes); - } - - protected getSignture(sign: string) { - return Uint8Array.from(toBuffer(sign)); - } - - public async simulateTx(txBodyBytes: Uint8Array, authInfoBytes: Uint8Array) { - const rpcClient = await makeRpcClient(this.rpcUrl); - const rpc = new ServiceClientImpl(rpcClient); - - const tx = Tx.fromPartial({ - authInfo: AuthInfo.decode(authInfoBytes), - body: TxBody.decode(txBodyBytes), - signatures: [Uint8Array.from([])], - }); - - const request = SimulateRequest.fromPartial({ - txBytes: Tx.encode(tx).finish(), - }); - - return rpc.Simulate(request); - } -} diff --git a/packages/chain-sdk/src/tx/index.ts b/packages/chain-sdk/src/tx/index.ts deleted file mode 100644 index 00ee579d..00000000 --- a/packages/chain-sdk/src/tx/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IRawTxInfo { - bytes: Uint8Array; - hex: string; -} From 6c6152d3448bd9834d6620fb3441546f1a6f0fce Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 27 Jun 2023 15:46:29 +0800 Subject: [PATCH 064/433] chore: [ci] release (alpha) (#130) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 4 +++- examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 30 insertions(+), 4 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 88c5b620..de649afa 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -7,5 +7,7 @@ "@bnb-chain/greenfield-chain-sdk": "0.2.1", "@bnb-chain/greenfiled-file-handle": "0.2.0" }, - "changesets": [] + "changesets": [ + "grumpy-gorillas-breathe" + ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index e6636fad..39895655 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.3-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`16d8860`](https://github.com/bnb-chain/greenfield-js-sdk/commit/16d8860c4fe012ac7e8e58791b0a2e5e06ee2b97)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.0 + ## 0.0.2 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 70e3b9e5..47ed107c 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.2", + "version": "0.0.3-alpha.0", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 4fd1099e..41ec4dbd 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.6-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`16d8860`](https://github.com/bnb-chain/greenfield-js-sdk/commit/16d8860c4fe012ac7e8e58791b0a2e5e06ee2b97)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.0 + ## 0.0.5 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 19289e86..a094c0c1 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.5", + "version": "0.0.6-alpha.0", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index b4173c27..933a7a58 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.2-alpha.0 + +### Patch Changes + +- [#129](https://github.com/bnb-chain/greenfield-js-sdk/pull/129) + [`16d8860`](https://github.com/bnb-chain/greenfield-js-sdk/commit/16d8860c4fe012ac7e8e58791b0a2e5e06ee2b97) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add Gashub API + ## 0.2.1 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 1fea6453..4feb1427 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.1", + "version": "0.2.2-alpha.0", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 82082a90352ba60193e8c109f82782fff14c59f9 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 28 Jun 2023 15:39:04 +0800 Subject: [PATCH 065/433] feat: Export queryClient (#131) * feat: Export queryClient * Create calm-birds-sleep.md --- .changeset/calm-birds-sleep.md | 5 +++++ packages/chain-sdk/src/client.ts | 4 ++++ 2 files changed, 9 insertions(+) create mode 100644 .changeset/calm-birds-sleep.md diff --git a/.changeset/calm-birds-sleep.md b/.changeset/calm-birds-sleep.md new file mode 100644 index 00000000..fdb0e32d --- /dev/null +++ b/.changeset/calm-birds-sleep.md @@ -0,0 +1,5 @@ +--- +"@bnb-chain/greenfield-chain-sdk": patch +--- + +feat: Export queryClient diff --git a/packages/chain-sdk/src/client.ts b/packages/chain-sdk/src/client.ts index b50a613d..4d9ec484 100644 --- a/packages/chain-sdk/src/client.ts +++ b/packages/chain-sdk/src/client.ts @@ -14,6 +14,7 @@ import { IOffChainAuth, OffChainAuth } from './api/offchainauth'; import { IStorage, Storage } from './api/storage'; import { Basic, IBasic } from './api/basic'; import { Gashub, IGashub } from './api/gashub'; +import { RpcQueryClient } from './api/queryclient'; @injectable() export class Client { @@ -32,6 +33,7 @@ export class Client { const group = container.resolve(Group); const objectt = container.resolve(Objectt); const payment = container.resolve(Payment); + const queryClient = container.resolve(RpcQueryClient); const sp = container.resolve(Sp); const storage = container.resolve(Storage); const offchainauth = container.resolve(OffChainAuth); @@ -48,6 +50,7 @@ export class Client { group, objectt, payment, + queryClient, sp, storage, offchainauth, @@ -66,6 +69,7 @@ export class Client { public group: IGroup, public object: IObject, public payment: IPayment, + public queryClient: RpcQueryClient, public sp: ISp, public storage: IStorage, public offchainauth: IOffChainAuth, From 53e907fe0efb678efaded500a527e9d8bfc6328b Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 28 Jun 2023 22:53:54 +0800 Subject: [PATCH 066/433] Update README.md --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 78a9f559..740ce971 100644 --- a/README.md +++ b/README.md @@ -52,10 +52,14 @@ NEXT_PUBLIC_GREENFIELD_RPC_URL=https://gnfd-testnet-fullnode-tendermint-us.bnbch NEXT_PUBLIC_GREEN_CHAIN_ID=5600 NEXT_PUBLIC_BSC_RPC_URL=https://gnfd-bsc-testnet-dataseed1.bnbchain.org NEXT_PUBLIC_BSC_CHAIN_ID=97 -NEXT_PUBLIC_TOKEN_HUB_CONTRACT_ADDRESS=0xf5192b167d11ed87C02123801c0305ef072df04F -NEXT_PUBLIC_CROSS_CHAIN_CONTRACT_ADDRESS=0x24e4b644DF338f9656843E2Ebf1b84715B8c58Ba + +# refer to https://docs.bnbchain.org/greenfield-docs/docs/guide/dapp/contract-list +NEXT_PUBLIC_TOKEN_HUB_CONTRACT_ADDRESS= +NEXT_PUBLIC_CROSS_CHAIN_CONTRACT_ADDRESS= ``` +> The contract address may be outdated due to Greenfield reset, refer to https://docs.bnbchain.org/greenfield-docs/docs/guide/dapp/contract-list get the latest contract address. + abd then run example: ```bash From d8361be80834c76b1522d312f4b7607a2b09b7fb Mon Sep 17 00:00:00 2001 From: randomx999 <84435529+randomx999@users.noreply.github.com> Date: Thu, 29 Jun 2023 14:39:59 +0800 Subject: [PATCH 067/433] fix: Compatiable net error (#133) * fix: Compatiable net error * Create old-roses-play.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> --- .changeset/old-roses-play.md | 5 ++++ packages/chain-sdk/src/offchainauth/fetch.ts | 30 ++++++++++++++------ 2 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 .changeset/old-roses-play.md diff --git a/.changeset/old-roses-play.md b/.changeset/old-roses-play.md new file mode 100644 index 00000000..6ceb79a3 --- /dev/null +++ b/.changeset/old-roses-play.md @@ -0,0 +1,5 @@ +--- +"@bnb-chain/greenfield-chain-sdk": patch +--- + +fix: Compatiable net error diff --git a/packages/chain-sdk/src/offchainauth/fetch.ts b/packages/chain-sdk/src/offchainauth/fetch.ts index 3ddb53ab..7867affc 100644 --- a/packages/chain-sdk/src/offchainauth/fetch.ts +++ b/packages/chain-sdk/src/offchainauth/fetch.ts @@ -8,17 +8,23 @@ export const fetchNonce = async ({ address, domain, }: IFetchNonce) => { + let result; const url = `${spEndpoint}/auth/request_nonce`; const headers = new Headers({ 'X-Gnfd-User-Address': address, 'X-Gnfd-App-Domain': domain, }); - const result = await fetchWithTimeout(url, { - headers, - }); - if (!result.ok) { + try { + result = await fetchWithTimeout(url, { + headers, + }); + if (!result.ok) { + return { code: -1, nonce: null }; + } + } catch (error) { return { code: -1, nonce: null }; } + const res = await result.json(); return { @@ -37,6 +43,7 @@ export const updateOneSpPubKey = async ({ expireDate, authorization, }: IUpdateOneSpPubKeyParams) => { + let result; const url = `${sp.endpoint}/auth/update_key`; const nonce = sp.nonce + ''; const headers = new Headers({ @@ -47,11 +54,16 @@ export const updateOneSpPubKey = async ({ 'X-Gnfd-App-Reg-Expiry-Date': expireDate, Authorization: authorization, }); - const result = await fetchWithTimeout(url, { - headers, - method: 'POST', - }); - if (!result.ok) { + + try { + result = await fetchWithTimeout(url, { + headers, + method: 'POST', + }); + if (!result.ok) { + return { code: -1, data: { address }, message: 'upload sp pubKey error.' }; + } + } catch (error) { return { code: -1, data: { address }, message: 'upload sp pubKey error.' }; } From db9d4ac67413e7159e4f67cf60376da513ae36a7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 29 Jun 2023 14:41:43 +0800 Subject: [PATCH 068/433] chore: [ci] release (alpha) (#132) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 4 +++- examples/nextjs/CHANGELOG.md | 9 +++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 9 +++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 12 ++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 36 insertions(+), 4 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index de649afa..7a00269f 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -8,6 +8,8 @@ "@bnb-chain/greenfiled-file-handle": "0.2.0" }, "changesets": [ - "grumpy-gorillas-breathe" + "calm-birds-sleep", + "grumpy-gorillas-breathe", + "old-roses-play" ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 39895655..d60bc896 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/wallet +## 0.0.3-alpha.1 + +### Patch Changes + +- Updated dependencies + [[`82082a9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/82082a90352ba60193e8c109f82782fff14c59f9), + [`d8361be`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d8361be80834c76b1522d312f4b7607a2b09b7fb)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.1 + ## 0.0.3-alpha.0 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 47ed107c..41742707 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.3-alpha.0", + "version": "0.0.3-alpha.1", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 41ec4dbd..696dd4f5 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/nodejs +## 0.0.6-alpha.1 + +### Patch Changes + +- Updated dependencies + [[`82082a9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/82082a90352ba60193e8c109f82782fff14c59f9), + [`d8361be`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d8361be80834c76b1522d312f4b7607a2b09b7fb)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.1 + ## 0.0.6-alpha.0 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index a094c0c1..64bdb68f 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.6-alpha.0", + "version": "0.0.6-alpha.1", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 933a7a58..0640ef54 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.2-alpha.1 + +### Patch Changes + +- [#131](https://github.com/bnb-chain/greenfield-js-sdk/pull/131) + [`82082a9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/82082a90352ba60193e8c109f82782fff14c59f9) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Export queryClient + +- [#133](https://github.com/bnb-chain/greenfield-js-sdk/pull/133) + [`d8361be`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d8361be80834c76b1522d312f4b7607a2b09b7fb) + Thanks [@randomx999](https://github.com/randomx999)! - fix: Compatiable net error + ## 0.2.2-alpha.0 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 4feb1427..d53351c3 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.2-alpha.0", + "version": "0.2.2-alpha.1", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 535e9b06674102ad197532110f018ebe3310eabd Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Thu, 29 Jun 2023 23:51:19 +0800 Subject: [PATCH 069/433] Test/test case (#134) * feat: Isomorphic fetch * test: Uint test and e2e test --- .changeset/large-humans-bathe.md | 5 + .eslintrc.js | 1 + packages/chain-sdk/config/tsconfig.json | 3 +- packages/chain-sdk/package.json | 6 +- packages/chain-sdk/src/api/bucket.ts | 13 +- packages/chain-sdk/src/api/objectt.spec.ts | 52 ------ packages/chain-sdk/src/api/objectt.ts | 40 +---- packages/chain-sdk/src/api/storage.ts | 1 + packages/chain-sdk/src/config.spec.ts | 25 --- packages/chain-sdk/src/tests/account.spec.ts | 45 ++++++ packages/chain-sdk/src/tests/config.spec.ts | 63 ++++++++ .../src/{api => tests}/group.spec.ts | 4 +- packages/chain-sdk/src/tests/storage.spec.ts | 153 ++++++++++++++++++ .../account.spec.ts => tests/wallet.spec.ts} | 98 +++++------ packages/chain-sdk/src/utils/http.ts | 9 +- pnpm-lock.yaml | 113 +++++++++++-- 16 files changed, 426 insertions(+), 205 deletions(-) create mode 100644 .changeset/large-humans-bathe.md delete mode 100644 packages/chain-sdk/src/api/objectt.spec.ts delete mode 100644 packages/chain-sdk/src/config.spec.ts create mode 100644 packages/chain-sdk/src/tests/account.spec.ts create mode 100644 packages/chain-sdk/src/tests/config.spec.ts rename packages/chain-sdk/src/{api => tests}/group.spec.ts (95%) create mode 100644 packages/chain-sdk/src/tests/storage.spec.ts rename packages/chain-sdk/src/{api/account.spec.ts => tests/wallet.spec.ts} (63%) diff --git a/.changeset/large-humans-bathe.md b/.changeset/large-humans-bathe.md new file mode 100644 index 00000000..5eb12131 --- /dev/null +++ b/.changeset/large-humans-bathe.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +chore: isomorphic-fetch diff --git a/.eslintrc.js b/.eslintrc.js index b318d4ae..4ec1e5db 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -4,6 +4,7 @@ module.exports = { rules: { 'no-console': 2, 'react/react-in-jsx-scope': ['off'], + '@typescript-eslint/ban-ts-comment': 'off', }, plugins: ['prettier', '@typescript-eslint'], }; diff --git a/packages/chain-sdk/config/tsconfig.json b/packages/chain-sdk/config/tsconfig.json index 72acf6d7..9557165c 100644 --- a/packages/chain-sdk/config/tsconfig.json +++ b/packages/chain-sdk/config/tsconfig.json @@ -2,7 +2,6 @@ "compilerOptions": { "lib": [ "es2021", - "DOM" ], "baseUrl": ".", "target": "ESNext", @@ -35,4 +34,4 @@ "exclude": [ "../node_modules" ] -} +} \ No newline at end of file diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index d53351c3..e314477f 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -26,7 +26,7 @@ "dev": "rollup -cw", "prebuild": "rimraf ./dist", "build": "rollup -c", - "test": "jest", + "test": "jest --runInBand", "lint": "prettier --write './src/*.{ts,tsx,js,jsx}' && eslint ./src/ --ext .js,.jsx,.ts,.tsx --fix" }, "keywords": [], @@ -54,7 +54,6 @@ }, "dependencies": { "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.11", - "@bnb-chain/greenfiled-file-handle": "workspace:*", "@cosmjs/proto-signing": "^0.30.1", "@cosmjs/stargate": "^0.30.1", "@cosmjs/tendermint-rpc": "^0.30.1", @@ -64,6 +63,7 @@ "@ethersproject/strings": "5.7.0", "@ethersproject/units": "^5.7.0", "@metamask/eth-sig-util": "^5.0.2", + "cross-fetch": "^3.1.6", "dayjs": "^1.11.7", "ethereum-cryptography": "^2.0.0", "long": "^5.2.1", @@ -86,4 +86,4 @@ "tslib": "^2.5.0", "typescript": "^4.9.5" } -} +} \ No newline at end of file diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index cee5a0f8..0b873460 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -27,6 +27,7 @@ import { MsgUpdateBucketInfo, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; +import { Headers } from 'cross-fetch'; import Long from 'long'; import { container, delay, inject, singleton } from 'tsyringe'; import { @@ -205,18 +206,6 @@ export class Bucket implements IBucket { }; } - const resultContentType = result.headers.get('Content-Type'); - if (resultContentType === 'text/xml' || resultContentType === 'application/xml') { - const xmlText = await result.text(); - const xml = await new window.DOMParser().parseFromString(xmlText, 'text/xml'); - throw { - code: -1, - xml, - message: 'Get create bucket approval error.', - statusCode: status, - }; - } - const signedMsgString = result.headers.get('X-Gnfd-Signed-Msg') || ''; const signedMsg = decodeObjectFromHexString(signedMsgString) as ICreateBucketMsgType; diff --git a/packages/chain-sdk/src/api/objectt.spec.ts b/packages/chain-sdk/src/api/objectt.spec.ts deleted file mode 100644 index 7e787cf4..00000000 --- a/packages/chain-sdk/src/api/objectt.spec.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { describe, expect, test } from '@jest/globals'; -import fs from 'fs'; -import mime from 'mime'; -import path from 'path'; -import { Client } from '../client'; -import { ACCOUNT, GREENFIELD_CHAIN_ID, GRPC_URL } from '../config.spec'; - -const client = Client.create(GRPC_URL, GREENFIELD_CHAIN_ID); - -describe('objectTx', () => { - // test('createObjectTx', async () => { - // // a file - // const filePath = './src/api/account.spec.ts'; - // const fileBuf = fs.readFileSync(filePath); - // const extame = path.extname(filePath); - // const fileType = mime.getType(extame); - // const spInfo = await selectSp(); - // const createObjectTx = await client.object.createObject({ - // bucketName: 'risk1', - // objectName: 'abcdef', - // spInfo, - // fileType: fileType || 'application/octet-stream', - // creator: ACCOUNT.address, - // expectSecondarySpAddresses: [], - // }); - // const rxRes = await createObjectTx.broadcast({ - // denom: 'BNB', - // gasLimit: 210000, - // gasPrice: '50000000000', - // payer: ACCOUNT.address, - // granter: '', - // }); - // expect(rxRes.code).toBe(0); - // }); -}); - -const selectSp = async () => { - const sps = await client.sp.getStorageProviders(); - const finalSps = (sps ?? []).filter((v: any) => v?.description?.moniker !== 'QATest'); - const selectIndex = 0; - const secondarySpAddresses = [ - ...finalSps.slice(0, selectIndex), - ...finalSps.slice(selectIndex + 1), - ].map((item) => item.operatorAddress); - const selectSpInfo = { - endpoint: finalSps[selectIndex].endpoint, - primarySpAddress: finalSps[selectIndex]?.operatorAddress, - sealAddress: finalSps[selectIndex].sealAddress, - secondarySpAddresses, - }; - return selectSpInfo; -}; diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 39e7b203..5b6270b4 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -25,11 +25,8 @@ import { MsgPutPolicy, MsgUpdateObjectInfo, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { - bytesFromBase64, - fromJsonTimestamp, - toTimestamp, -} from '@bnb-chain/greenfield-cosmos-types/helpers'; +import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; +import { Headers } from 'cross-fetch'; import { container, delay, inject, singleton } from 'tsyringe'; import { GRNToString, @@ -210,18 +207,6 @@ export class Objectt implements IObject { error: result, }; } - const resultContentType = result.headers.get('Content-Type'); - // Will receive xml when get object met error - if (resultContentType === 'text/xml' || resultContentType === 'application/xml') { - const xmlText = await result.text(); - const xml = await new window.DOMParser().parseFromString(xmlText, 'text/xml'); - throw { - code: -1, - xml, - message: 'Get create object approval error.', - statusCode: status, - }; - } const signedMsgString = result.headers.get('X-Gnfd-Signed-Msg') || ''; const signedMsg = decodeObjectFromHexString(signedMsgString) as ICreateObjectMsgType; @@ -338,13 +323,7 @@ export class Objectt implements IObject { if (!result.ok) { return { code: -1, message: 'Put object error.', statusCode: status }; } - const resultContentType = result.headers.get('Content-Type'); - // Will receive xml when put object met error - if (resultContentType === 'text/xml' || resultContentType === 'application/xml') { - const xmlText = await result.text(); - const xml = await new window.DOMParser().parseFromString(xmlText, 'text/xml'); - return { code: -1, message: 'Put object error.', xml, statusCode: status }; - } + return { code: 0, message: 'Put object success.', statusCode: status }; } catch (error: any) { return { code: -1, message: error.message, statusCode: NORMAL_ERROR_CODE }; @@ -456,18 +435,7 @@ export class Objectt implements IObject { if (!result.ok) { return { code: -1, message: 'Get object error.', statusCode: status }; } - const resultContentType = result.headers.get('Content-Type'); - // Will receive xml when get object met error - if (resultContentType === 'text/xml' || resultContentType === 'application/xml') { - const xmlText = await result.text(); - const xml = await new window.DOMParser().parseFromString(xmlText, 'text/xml'); - return { - code: -1, - xml, - message: 'Get object error.', - statusCode: status, - }; - } + const fileBlob = await result.blob(); return { code: 0, diff --git a/packages/chain-sdk/src/api/storage.ts b/packages/chain-sdk/src/api/storage.ts index 20e6678d..02fcef5b 100644 --- a/packages/chain-sdk/src/api/storage.ts +++ b/packages/chain-sdk/src/api/storage.ts @@ -56,6 +56,7 @@ export class Storage implements IStorage { ...toSdk, expiration_time: '', statements: toSdk.statements.map((e) => { + // @ts-ignore e.expiration_time = ''; return e; }), diff --git a/packages/chain-sdk/src/config.spec.ts b/packages/chain-sdk/src/config.spec.ts deleted file mode 100644 index 8039dc3c..00000000 --- a/packages/chain-sdk/src/config.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ISimulateGasFee } from './types'; - -export const GRPC_URL = 'https://gnfd.qa.bnbchain.world'; -// export const GRPC_URL = 'http://localhost:26750'; -export const GREENFIELD_URL = 'https://gnfd.qa.bnbchain.world'; -// export const GREENFIELD_URL = 'http://localhost:26750'; -export const GREENFIELD_CHAIN_ID = '9000'; -export const BSC_RPC_URL = 'https://data-seed-prebsc-1-s1.binance.org:8545'; -export const BSC_CHAIN_ID = '97'; -export const ACCOUNT = { - address: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', - privateKey: '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032', -}; -// export const ACCOUNT = { -// address: '0x67c01Cc85Db17E26F279FC588759F266F97d1AB3', -// privateKey: '0x9355300339899ae8df87ba0e2b71e8cc1ca996d65b0520e232d9de54bab11861', -// }; - -export const ZERO_ACCOUNT_ADDRESS = '0x0000000000000000000000000000000000000000'; - -export const DEFAULT_SIMULATE_INFO: ISimulateGasFee = { - gasFee: '0', - gasLimit: BigInt(0), - gasPrice: '0', -}; diff --git a/packages/chain-sdk/src/tests/account.spec.ts b/packages/chain-sdk/src/tests/account.spec.ts new file mode 100644 index 00000000..6f3112c5 --- /dev/null +++ b/packages/chain-sdk/src/tests/account.spec.ts @@ -0,0 +1,45 @@ +import { describe, expect, test } from '@jest/globals'; +import { ACCOUNT, client } from './config.spec'; + +/** + * test account information + */ + +describe('accountQuery', () => { + describe('getAccount', () => { + test('it works', async () => { + const res = await client.account.getAccount(ACCOUNT.address); + + expect(res).not.toBeNull(); + }); + }); + + describe('getAccountBalance', () => { + test('it works', async () => { + const res = await client.account.getAccountBalance({ + address: ACCOUNT.address, + denom: 'BNB', + }); + + expect(res).not.toBeNull(); + }); + }); + + describe('getPaymentAccount', () => { + test('it works', async () => { + const res = await client.account.getPaymentAccount({ + addr: ACCOUNT.address, + }); + + expect(res).not.toBeNull(); + }); + }); + + describe('getModuleAccounts', () => { + test('it works', async () => { + const res = await client.account.getModuleAccounts(); + + expect(res).not.toBeNull(); + }); + }); +}); diff --git a/packages/chain-sdk/src/tests/config.spec.ts b/packages/chain-sdk/src/tests/config.spec.ts new file mode 100644 index 00000000..3924e1ca --- /dev/null +++ b/packages/chain-sdk/src/tests/config.spec.ts @@ -0,0 +1,63 @@ +import { Client } from '..'; +import { ISimulateGasFee } from '../types'; + +export const BSC_RPC_URL = 'https://data-seed-prebsc-1-s1.binance.org:8545'; +export const BSC_CHAIN_ID = '97'; +// export const GRPC_URL = 'https://gnfd.qa.bnbchain.world'; +// export const GREENFIELD_URL = 'https://gnfd.qa.bnbchain.world'; +// export const GREENFIELD_CHAIN_ID = '9000'; + +export const GRPC_URL = 'https://gnfd-testnet-fullnode-tendermint-us.bnbchain.org'; +export const GREENFIELD_URL = 'https://gnfd-testnet-fullnode-tendermint-us.bnbchain.org'; +export const GREENFIELD_CHAIN_ID = '5600'; + +export const client = Client.create(GRPC_URL, GREENFIELD_CHAIN_ID); + +export const ACCOUNT = { + address: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + privateKey: '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032', +}; + +export const ZERO_ACCOUNT_ADDRESS = '0x0000000000000000000000000000000000000000'; + +export const DEFAULT_SIMULATE_INFO: ISimulateGasFee = { + gasFee: '0', + gasLimit: BigInt(0), + gasPrice: '0', +}; + +export function generateString(length: number) { + const characters = 'abcdefghijklmnopqrstuvwxyz'; + + let result = ''; + const charactersLength = characters.length; + for (let i = 0; i < length; i++) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + } + + return result; +} + +export const getSps = async () => { + const sps = await client.sp.getStorageProviders(); + const finalSps = (sps ?? []).filter((v: any) => v?.description?.moniker !== 'QATest'); + + return finalSps; +}; + +export const selectSp = async () => { + const finalSps = await getSps(); + const selectIndex = 0; + const secondarySpAddresses = [ + ...finalSps.slice(0, selectIndex), + ...finalSps.slice(selectIndex + 1), + ].map((item) => item.operatorAddress); + const selectSpInfo = { + endpoint: finalSps[selectIndex].endpoint, + primarySpAddress: finalSps[selectIndex]?.operatorAddress, + sealAddress: finalSps[selectIndex].sealAddress, + secondarySpAddresses, + }; + + return selectSpInfo; +}; diff --git a/packages/chain-sdk/src/api/group.spec.ts b/packages/chain-sdk/src/tests/group.spec.ts similarity index 95% rename from packages/chain-sdk/src/api/group.spec.ts rename to packages/chain-sdk/src/tests/group.spec.ts index 3053dc07..b1a17112 100644 --- a/packages/chain-sdk/src/api/group.spec.ts +++ b/packages/chain-sdk/src/tests/group.spec.ts @@ -1,6 +1,6 @@ -import { describe, test } from '@jest/globals'; +import { describe, expect, test } from '@jest/globals'; import { Client } from '../client'; -import { ACCOUNT, GREENFIELD_CHAIN_ID, GRPC_URL, ZERO_ACCOUNT_ADDRESS } from '../config.spec'; +import { ACCOUNT, GREENFIELD_CHAIN_ID, GRPC_URL, ZERO_ACCOUNT_ADDRESS } from './config.spec'; const client = Client.create(GRPC_URL, GREENFIELD_CHAIN_ID); diff --git a/packages/chain-sdk/src/tests/storage.spec.ts b/packages/chain-sdk/src/tests/storage.spec.ts new file mode 100644 index 00000000..a2988df0 --- /dev/null +++ b/packages/chain-sdk/src/tests/storage.spec.ts @@ -0,0 +1,153 @@ +import { describe, expect, test } from '@jest/globals'; +import { ACCOUNT, client, generateString, selectSp } from './config.spec'; + +const BUCKET_NAME = generateString(10); +const OBJECT_NAME = generateString(10); + +/** + * test storage transcations: + * include bucket and object creation and deletion + */ +describe('storageTx', () => { + describe('bucketTx', () => { + // eslint-disable-next-line no-console + console.log('bucket name', BUCKET_NAME); + + test('create bucket', async () => { + const spInfo = await selectSp(); + const createBucketTx = await client.bucket.createBucket({ + bucketName: BUCKET_NAME, + creator: ACCOUNT.address, + visibility: 'VISIBILITY_TYPE_PUBLIC_READ', + chargedReadQuota: '0', + spInfo, + signType: 'authTypeV2', + }); + + const simulateInfo = await createBucketTx.simulate({ + denom: 'BNB', + }); + + expect(simulateInfo).not.toBeNull(); + + const res = await createBucketTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo?.gasLimit), + gasPrice: simulateInfo?.gasPrice || '5000000000', + payer: ACCOUNT.address, + granter: '', + privateKey: ACCOUNT.privateKey, + }); + + expect(res.code).toEqual(0); + }, 300000); + + test('bucket info', async () => { + const bucketInfo = await client.bucket.headBucket(BUCKET_NAME); + + expect(bucketInfo.bucketInfo?.bucketName).toEqual(BUCKET_NAME); + }, 300000); + }); + + describe('objectTx', () => { + // eslint-disable-next-line no-console + console.log('bucket name', BUCKET_NAME); + // eslint-disable-next-line no-console + console.log('object name', OBJECT_NAME); + + test('create Object', async () => { + const spInfo = await selectSp(); + const createObjectTx = await client.object.createObject({ + bucketName: BUCKET_NAME, + objectName: OBJECT_NAME, + spInfo, + contentLength: 0, + fileType: 'text/plain', + expectCheckSums: [ + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + ], + creator: ACCOUNT.address, + signType: 'authTypeV2', + }); + + const simulateInfo = await createObjectTx.simulate({ + denom: 'BNB', + }); + + expect(simulateInfo).not.toBeNull(); + + const rxRes = await createObjectTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo?.gasLimit), + gasPrice: simulateInfo?.gasPrice || '50000000000', + payer: ACCOUNT.address, + granter: '', + privateKey: ACCOUNT.privateKey, + }); + expect(rxRes.code).toBe(0); + }, 30000); + + test('object info', async () => { + const objInfo = await client.object.headObject(BUCKET_NAME, OBJECT_NAME); + + expect(objInfo.objectInfo?.objectName).toEqual(OBJECT_NAME); + }, 30000); + }); + + describe('delete bucket and object', () => { + test('delete object', async () => { + const deleteObjectTx = await client.object.deleteObject({ + bucketName: BUCKET_NAME, + objectName: OBJECT_NAME, + operator: ACCOUNT.address, + }); + + const simulateInfo = await deleteObjectTx.simulate({ + denom: 'BNB', + }); + + expect(simulateInfo).not.toBeNull(); + + const res = await deleteObjectTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo?.gasLimit), + gasPrice: simulateInfo?.gasPrice || '5000000000', + payer: ACCOUNT.address, + granter: '', + privateKey: ACCOUNT.privateKey, + }); + + expect(res.code).toBe(0); + }, 300000); + + test('delete bucket', async () => { + const deleteBucketTx = await client.bucket.deleteBucket({ + bucketName: BUCKET_NAME, + operator: ACCOUNT.address, + }); + + const simulateInfo = await deleteBucketTx.simulate({ + denom: 'BNB', + }); + + expect(simulateInfo).not.toBeNull(); + + const res = await deleteBucketTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo?.gasLimit), + gasPrice: simulateInfo?.gasPrice || '5000000000', + payer: ACCOUNT.address, + granter: '', + privateKey: ACCOUNT.privateKey, + }); + + expect(res.code).toEqual(0); + }, 300000); + }); +}); diff --git a/packages/chain-sdk/src/api/account.spec.ts b/packages/chain-sdk/src/tests/wallet.spec.ts similarity index 63% rename from packages/chain-sdk/src/api/account.spec.ts rename to packages/chain-sdk/src/tests/wallet.spec.ts index d759781b..e4f2aac3 100644 --- a/packages/chain-sdk/src/api/account.spec.ts +++ b/packages/chain-sdk/src/tests/wallet.spec.ts @@ -1,64 +1,12 @@ import { describe, expect, test } from '@jest/globals'; -import { - GREENFIELD_CHAIN_ID, - GRPC_URL, - ACCOUNT, - ZERO_ACCOUNT_ADDRESS, - DEFAULT_SIMULATE_INFO, -} from '../config.spec'; -import { Client } from '../client'; - -const client = Client.create(GRPC_URL, GREENFIELD_CHAIN_ID); - -describe('accountQuery', () => { - describe('getAccount', () => { - test('it works', async () => { - const res = await client.account.getAccount(ACCOUNT.address); - - expect(res).not.toBeNull(); - }); - }); - - describe('getAccountBalance', () => { - test('it works', async () => { - const res = await client.account.getAccountBalance({ - address: ACCOUNT.address, - denom: 'BNB', - }); - - expect(res).not.toBeNull(); - }); - }); - - describe('getPaymentAccount', () => { - test('it works', async () => { - const res = await client.account.getPaymentAccount({ - addr: ACCOUNT.address, - }); - - expect(res).not.toBeNull(); - }); - }); - - describe('getModuleAccounts', () => { - test('it works', async () => { - const res = await client.account.getModuleAccounts(); - - expect(res).not.toBeNull(); - }); - }); - - // TODO: don't work - // describe('getPaymentAccountsByOwner', () => { - // test('it works', async () => { - // const res = await client.account.getPaymentAccountsByOwner(ACCOUNT.address); - - // expect(res).not.toBeNull(); - // }); - // }); -}); - -describe('accountTx', () => { +import { ACCOUNT, client, DEFAULT_SIMULATE_INFO, ZERO_ACCOUNT_ADDRESS } from './config.spec'; + +/** + * test wallet transaction: + * + * include transfer and withdraw + */ +describe('walletTx', () => { let simulateInfo = DEFAULT_SIMULATE_INFO; describe('transfer', () => { @@ -85,6 +33,36 @@ describe('accountTx', () => { }); }); + describe('withdraw', () => { + test('it works', async () => { + const transferOutTx = await client.crosschain.transferOut({ + from: ACCOUNT.address, + to: '0x0000000000000000000000000000000000000001', + amount: { + amount: '10000000000000000', + denom: 'BNB', + }, + }); + + const simulateGasFee = await transferOutTx.simulate({ + denom: 'BNB', + }); + + expect(simulateGasFee).not.toBeNull(); + + const res = await transferOutTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateGasFee.gasLimit), + gasPrice: simulateGasFee.gasPrice, + payer: ACCOUNT.address, + granter: '', + privateKey: ACCOUNT.privateKey, + }); + + expect(res.code).toEqual(0); + }); + }); + describe('multiTransfer', () => { test('simulate works', async () => { const transferTx = await makeMultiTransferTx(); diff --git a/packages/chain-sdk/src/utils/http.ts b/packages/chain-sdk/src/utils/http.ts index a614f4b1..95cc6ddb 100644 --- a/packages/chain-sdk/src/utils/http.ts +++ b/packages/chain-sdk/src/utils/http.ts @@ -1,3 +1,5 @@ +import fetch from 'cross-fetch'; + const EMPTY_STRING_SHA256 = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'; const MOCK_SIGNATURE = '1234567812345678123456781234567812345678123456781234567812345678'; const NORMAL_ERROR_CODE = 404; @@ -15,8 +17,11 @@ function timeoutAfter(duration: number) { const fetchWithTimeout = async (fetchUrl = '', fetchOptions: any = {}, duration = 30000) => { try { - const response = await Promise.race([timeoutAfter(duration), fetch(fetchUrl, fetchOptions)]); - return response as Promise; + const response = (await Promise.race([ + timeoutAfter(duration), + fetch(fetchUrl, fetchOptions), + ])) as Response; + return response; } catch (error) { return Promise.reject(error); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e7e852fc..d869e1ae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -196,9 +196,6 @@ importers: '@bnb-chain/greenfield-cosmos-types': specifier: 0.4.0-alpha.11 version: 0.4.0-alpha.11 - '@bnb-chain/greenfiled-file-handle': - specifier: workspace:* - version: link:../file-handle '@cosmjs/proto-signing': specifier: ^0.30.1 version: 0.30.1 @@ -226,6 +223,9 @@ importers: '@metamask/eth-sig-util': specifier: ^5.0.2 version: 5.0.2 + cross-fetch: + specifier: ^3.1.6 + version: 3.1.6 dayjs: specifier: ^1.11.7 version: 1.11.7 @@ -253,7 +253,7 @@ importers: version: 3.0.1 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + version: 29.5.0(@types/node@20.2.5)(ts-node@10.9.1) mime: specifier: ^3.0.0 version: 3.0.0 @@ -277,7 +277,7 @@ importers: version: 29.1.0(@babel/core@7.22.1)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + version: 10.9.1(@types/node@20.2.5)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.0 @@ -387,7 +387,7 @@ packages: '@babel/traverse': 7.22.4 '@babel/types': 7.22.4 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 @@ -2103,7 +2103,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.22.4 '@babel/types': 7.22.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2121,7 +2121,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.22.4 '@babel/types': 7.22.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -6720,6 +6720,18 @@ packages: dependencies: ms: 2.1.3 + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -8817,7 +8829,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -8918,6 +8930,34 @@ packages: - ts-node dev: true + /jest-cli@29.5.0(@types/node@20.2.5)(ts-node@10.9.1): + resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.5.0(ts-node@10.9.1) + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.1.0 + jest-config: 29.5.0(@types/node@20.2.5)(ts-node@10.9.1) + jest-util: 29.5.0 + jest-validate: 29.5.0 + prompts: 2.4.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + /jest-config@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8993,7 +9033,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@20.2.5)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true @@ -9313,6 +9353,26 @@ packages: - ts-node dev: true + /jest@29.5.0(@types/node@20.2.5)(ts-node@10.9.1): + resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.5.0(ts-node@10.9.1) + '@jest/types': 29.5.0 + import-local: 3.1.0 + jest-cli: 29.5.0(@types/node@20.2.5)(ts-node@10.9.1) + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + /js-sdsl@4.4.0: resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} dev: false @@ -11753,7 +11813,7 @@ packages: '@babel/core': 7.22.1 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest: 29.5.0(@types/node@20.2.5)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -11828,6 +11888,37 @@ packages: yn: 3.1.1 dev: true + /ts-node@10.9.1(@types/node@20.2.5)(typescript@4.9.5): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 20.2.5 + acorn: 8.8.2 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + /tsconfig-paths@3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: From d47148950e7e82fb0c8f952a6f573f2ae1409298 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 30 Jun 2023 17:16:59 +0800 Subject: [PATCH 070/433] feat: Sync Types (#136) * feat: Sync Types * Create weak-hounds-sell.md --- .changeset/weak-hounds-sell.md | 5 + packages/chain-sdk/package.json | 2 +- pnpm-lock.yaml | 223 +++++++++++++------------------- 3 files changed, 97 insertions(+), 133 deletions(-) create mode 100644 .changeset/weak-hounds-sell.md diff --git a/.changeset/weak-hounds-sell.md b/.changeset/weak-hounds-sell.md new file mode 100644 index 00000000..5c773032 --- /dev/null +++ b/.changeset/weak-hounds-sell.md @@ -0,0 +1,5 @@ +--- +"@bnb-chain/greenfield-chain-sdk": patch +--- + +feat: Sync Types greenfield-cosmos-sdk v0.2.3-alpha.1 and greendfield v0.2.3-alpha.2 diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index e314477f..7d601034 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -53,7 +53,7 @@ ] }, "dependencies": { - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.11", + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.12", "@cosmjs/proto-signing": "^0.30.1", "@cosmjs/stargate": "^0.30.1", "@cosmjs/tendermint-rpc": "^0.30.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d869e1ae..ee05a0e4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,7 +43,7 @@ importers: version: 3.0.2(rollup@2.79.1) '@rollup/plugin-typescript': specifier: ^8.5.0 - version: 8.5.0(rollup@2.79.1)(typescript@4.9.5) + version: 8.5.0(rollup@2.79.1)(typescript@5.1.6) '@types/chai': specifier: ^4.3.5 version: 4.3.5 @@ -61,10 +61,10 @@ importers: version: 18.2.5 '@typescript-eslint/eslint-plugin': specifier: ^5.59.11 - version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6) '@typescript-eslint/parser': specifier: ^5.59.11 - version: 5.59.11(eslint@8.42.0)(typescript@4.9.5) + version: 5.59.11(eslint@8.42.0)(typescript@5.1.6) chai: specifier: ^4.3.7 version: 4.3.7 @@ -76,7 +76,7 @@ importers: version: 8.42.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@4.9.5) + version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@5.1.6) eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.1(eslint@8.42.0)(prettier@2.8.8) @@ -194,8 +194,8 @@ importers: packages/chain-sdk: dependencies: '@bnb-chain/greenfield-cosmos-types': - specifier: 0.4.0-alpha.11 - version: 0.4.0-alpha.11 + specifier: 0.4.0-alpha.12 + version: 0.4.0-alpha.12 '@cosmjs/proto-signing': specifier: ^0.30.1 version: 0.30.1 @@ -253,7 +253,7 @@ importers: version: 3.0.1 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@20.2.5)(ts-node@10.9.1) + version: 29.5.0(@types/node@20.3.2)(ts-node@10.9.1) mime: specifier: ^3.0.0 version: 3.0.0 @@ -277,7 +277,7 @@ importers: version: 29.1.0(@babel/core@7.22.1)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.2.5)(typescript@4.9.5) + version: 10.9.1(@types/node@20.3.2)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.0 @@ -298,7 +298,7 @@ importers: version: 29.5.1 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + version: 29.5.0(@types/node@20.3.2)(ts-node@10.9.1) rollup: specifier: ^2.79.1 version: 2.79.1 @@ -322,7 +322,7 @@ importers: version: 29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + version: 10.9.1(@types/node@20.3.2)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.0 @@ -387,7 +387,7 @@ packages: '@babel/traverse': 7.22.4 '@babel/types': 7.22.4 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 @@ -2103,7 +2103,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.22.4 '@babel/types': 7.22.4 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2121,7 +2121,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.22.4 '@babel/types': 7.22.4 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2174,8 +2174,8 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.11: - resolution: {integrity: sha512-59ILIwpifUWUAihTbU+DDEkddH5Xz0lghxUMRGwjvlB8+MF0m5t+R6SAJWk0ZkVMVIWdIGJphjkBJn2ffKbisA==} + /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.12: + resolution: {integrity: sha512-CenKMlgGw5RjptF/ju2PRL3QUtHhX7QoyUHTlRy13zt/K0lLcyifgNSZFsR/DeSFfX16KoahPQbpzXmpEnW00A==} dependencies: long: 4.0.0 protobufjs: 6.11.3 @@ -2524,7 +2524,7 @@ packages: lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.1.6) typescript: 5.1.3 transitivePeerDependencies: - '@swc/core' @@ -4173,7 +4173,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-typescript@8.5.0(rollup@2.79.1)(typescript@4.9.5): + /@rollup/plugin-typescript@8.5.0(rollup@2.79.1)(typescript@5.1.6): resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} engines: {node: '>=8.0.0'} peerDependencies: @@ -4187,7 +4187,7 @@ packages: '@rollup/pluginutils': 3.1.0(rollup@2.79.1) resolve: 1.22.2 rollup: 2.79.1 - typescript: 4.9.5 + typescript: 5.1.6 dev: true /@rollup/plugin-wasm@6.1.2(rollup@2.79.1): @@ -4698,6 +4698,10 @@ packages: resolution: {integrity: sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==} dev: true + /@types/node@20.3.2: + resolution: {integrity: sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==} + dev: true + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -4802,7 +4806,7 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4814,36 +4818,36 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/type-utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) debug: 4.3.4(supports-color@8.1.1) eslint: 8.42.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.1 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.59.11(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/experimental-utils@5.59.11(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-GkQGV0UF/V5Ra7gZMBmiD1WrYUFOJNvCZs+XQnUyJoxmqfWMXVNyB2NVCPRKefoQcpvTv9UpJyfCvsJFs8NzzQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) eslint: 8.42.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser@5.59.11(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/parser@5.59.11(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4855,10 +4859,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.6) debug: 4.3.4(supports-color@8.1.1) eslint: 8.42.0 - typescript: 4.9.5 + typescript: 5.1.6 transitivePeerDependencies: - supports-color @@ -4897,7 +4901,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.5 dev: false - /@typescript-eslint/type-utils@5.59.11(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/type-utils@5.59.11(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4907,12 +4911,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.6) + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) debug: 4.3.4(supports-color@8.1.1) eslint: 8.42.0 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true @@ -4926,7 +4930,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /@typescript-eslint/typescript-estree@5.59.11(typescript@4.9.5): + /@typescript-eslint/typescript-estree@5.59.11(typescript@5.1.6): resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4941,8 +4945,8 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.1 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color @@ -4967,7 +4971,7 @@ packages: - supports-color dev: false - /@typescript-eslint/utils@5.59.11(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.59.11(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4978,7 +4982,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.6) eslint: 8.42.0 eslint-scope: 5.1.1 semver: 7.5.1 @@ -6522,7 +6526,7 @@ packages: dependencies: '@types/node': 18.16.18 cosmiconfig: 8.2.0 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.1.6) typescript: 5.1.3 dev: true @@ -6720,18 +6724,6 @@ packages: dependencies: ms: 2.1.3 - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -7151,7 +7143,7 @@ packages: - supports-color dev: false - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@4.9.5): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7164,19 +7156,19 @@ packages: '@babel/core': 7.22.5 '@babel/eslint-parser': 7.22.5(@babel/core@7.22.5)(eslint@8.42.0) '@rushstack/eslint-patch': 1.3.1 - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.42.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0) eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.42.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@4.9.5) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@5.1.6) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.42.0) eslint-plugin-react: 7.32.2(eslint@8.42.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.42.0) - eslint-plugin-testing-library: 5.11.0(eslint@8.42.0)(typescript@4.9.5) - typescript: 4.9.5 + eslint-plugin-testing-library: 5.11.0(eslint@8.42.0)(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -7236,7 +7228,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) debug: 3.2.7 eslint: 8.40.0 eslint-import-resolver-node: 0.3.7 @@ -7265,7 +7257,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) debug: 3.2.7 eslint: 8.42.0 eslint-import-resolver-node: 0.3.7 @@ -7298,7 +7290,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -7331,7 +7323,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -7354,7 +7346,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@4.9.5): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -7367,8 +7359,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) - '@typescript-eslint/experimental-utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/experimental-utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) eslint: 8.42.0 transitivePeerDependencies: - supports-color @@ -7507,13 +7499,13 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library@5.11.0(eslint@8.42.0)(typescript@4.9.5): + /eslint-plugin-testing-library@5.11.0(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) eslint: 8.42.0 transitivePeerDependencies: - supports-color @@ -8829,7 +8821,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -8902,7 +8894,7 @@ packages: - supports-color dev: true - /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + /jest-cli@29.5.0(@types/node@20.3.2)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -8919,7 +8911,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@20.3.2)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -8930,35 +8922,7 @@ packages: - ts-node dev: true - /jest-cli@29.5.0(@types/node@20.2.5)(ts-node@10.9.1): - resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.5.0(ts-node@10.9.1) - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - import-local: 3.1.0 - jest-config: 29.5.0(@types/node@20.2.5)(ts-node@10.9.1) - jest-util: 29.5.0 - jest-validate: 29.5.0 - prompts: 2.4.2 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - - /jest-config@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + /jest-config@29.5.0(@types/node@20.2.5)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -8973,7 +8937,7 @@ packages: '@babel/core': 7.22.1 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.16.18 + '@types/node': 20.2.5 babel-jest: 29.5.0(@babel/core@7.22.1) chalk: 4.1.2 ci-info: 3.8.0 @@ -8993,12 +8957,12 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@20.3.2)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true - /jest-config@29.5.0(@types/node@20.2.5)(ts-node@10.9.1): + /jest-config@29.5.0(@types/node@20.3.2)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -9013,7 +8977,7 @@ packages: '@babel/core': 7.22.1 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.2.5 + '@types/node': 20.3.2 babel-jest: 29.5.0(@babel/core@7.22.1) chalk: 4.1.2 ci-info: 3.8.0 @@ -9033,7 +8997,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.2.5)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@20.3.2)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true @@ -9333,27 +9297,7 @@ packages: supports-color: 8.1.1 dev: true - /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.5.0(ts-node@10.9.1) - '@jest/types': 29.5.0 - import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - - /jest@29.5.0(@types/node@20.2.5)(ts-node@10.9.1): + /jest@29.5.0(@types/node@20.3.2)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -9366,7 +9310,7 @@ packages: '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@20.2.5)(ts-node@10.9.1) + jest-cli: 29.5.0(@types/node@20.3.2)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color @@ -11813,7 +11757,7 @@ packages: '@babel/core': 7.22.1 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@20.2.5)(ts-node@10.9.1) + jest: 29.5.0(@types/node@20.3.2)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -11847,7 +11791,7 @@ packages: '@babel/core': 7.22.5 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest: 29.5.0(@types/node@20.3.2)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -11857,7 +11801,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.16.18)(typescript@4.9.5): + /ts-node@10.9.1(@types/node@18.16.18)(typescript@5.1.6): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -11883,12 +11827,12 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.9.5 + typescript: 5.1.6 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true - /ts-node@10.9.1(@types/node@20.2.5)(typescript@4.9.5): + /ts-node@10.9.1(@types/node@20.3.2)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -11907,7 +11851,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 20.2.5 + '@types/node': 20.3.2 acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 @@ -11944,6 +11888,16 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 + dev: false + + /tsutils@3.21.0(typescript@5.1.6): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.1.6 /tsyringe@4.7.0: resolution: {integrity: sha512-ncFDM1jTLsok4ejMvSW5jN1VGPQD48y2tfAR0pdptWRKYX4bkbqPt92k7KJ5RFJ1KV36JEs/+TMh7I6OUgj74g==} @@ -12046,6 +12000,11 @@ packages: hasBin: true dev: true + /typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} + hasBin: true + /uint8arrays@3.1.1: resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} dependencies: From d8bfe6533ceafd0dbac1b79cae702036e652af2d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 17:18:50 +0800 Subject: [PATCH 071/433] chore: [ci] release (alpha) (#135) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 4 +++- examples/nextjs/CHANGELOG.md | 9 +++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 9 +++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 13 +++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 37 insertions(+), 4 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 7a00269f..8108341d 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -10,6 +10,8 @@ "changesets": [ "calm-birds-sleep", "grumpy-gorillas-breathe", - "old-roses-play" + "large-humans-bathe", + "old-roses-play", + "weak-hounds-sell" ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index d60bc896..d009aaed 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/wallet +## 0.0.3-alpha.2 + +### Patch Changes + +- Updated dependencies + [[`535e9b0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/535e9b06674102ad197532110f018ebe3310eabd), + [`d471489`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d47148950e7e82fb0c8f952a6f573f2ae1409298)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.2 + ## 0.0.3-alpha.1 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 41742707..7e6ac352 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.3-alpha.1", + "version": "0.0.3-alpha.2", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 696dd4f5..a19c564a 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/nodejs +## 0.0.6-alpha.2 + +### Patch Changes + +- Updated dependencies + [[`535e9b0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/535e9b06674102ad197532110f018ebe3310eabd), + [`d471489`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d47148950e7e82fb0c8f952a6f573f2ae1409298)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.2 + ## 0.0.6-alpha.1 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 64bdb68f..3dae99e7 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.6-alpha.1", + "version": "0.0.6-alpha.2", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 0640ef54..bc9aeaeb 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,18 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.2-alpha.2 + +### Patch Changes + +- [#134](https://github.com/bnb-chain/greenfield-js-sdk/pull/134) + [`535e9b0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/535e9b06674102ad197532110f018ebe3310eabd) + Thanks [@rrr523](https://github.com/rrr523)! - chore: isomorphic-fetch + +- [#136](https://github.com/bnb-chain/greenfield-js-sdk/pull/136) + [`d471489`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d47148950e7e82fb0c8f952a6f573f2ae1409298) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Sync Types greenfield-cosmos-sdk + v0.2.3-alpha.1 and greendfield v0.2.3-alpha.2 + ## 0.2.2-alpha.1 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 7d601034..dbab9bb5 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.2-alpha.1", + "version": "0.2.2-alpha.2", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 57a8176be1f8a816003db405e7c07f73170db804 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 30 Jun 2023 18:49:41 +0800 Subject: [PATCH 072/433] Fix/sort types (#137) * feat: Sort EIP712 message field * feat: Extra field * Create happy-humans-thank.md --- .changeset/happy-humans-thank.md | 5 + packages/chain-sdk/package.json | 6 +- packages/chain-sdk/src/api/sp.ts | 1 + .../greenfield/storage/MsgUpdateGroupExtra.ts | 2 +- packages/chain-sdk/src/messages/utils.ts | 15 +- packages/chain-sdk/src/offchainauth/fetch.ts | 1 + pnpm-lock.yaml | 1668 ++++++++--------- 7 files changed, 754 insertions(+), 944 deletions(-) create mode 100644 .changeset/happy-humans-thank.md diff --git a/.changeset/happy-humans-thank.md b/.changeset/happy-humans-thank.md new file mode 100644 index 00000000..ccc29ed8 --- /dev/null +++ b/.changeset/happy-humans-thank.md @@ -0,0 +1,5 @@ +--- +"@bnb-chain/greenfield-chain-sdk": patch +--- + +Sort EIP712 message field if send multi messages diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index dbab9bb5..f06b8b10 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.2-alpha.2", + "version": "0.2.1-alpha.9", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", @@ -66,6 +66,8 @@ "cross-fetch": "^3.1.6", "dayjs": "^1.11.7", "ethereum-cryptography": "^2.0.0", + "lodash.mapvalues": "^4.6.0", + "lodash.sortby": "^4.7.0", "long": "^5.2.1", "reflect-metadata": "^0.1.13", "tsyringe": "^4.7.0" @@ -73,6 +75,8 @@ "devDependencies": { "@jest/globals": "^29.5.0", "@types/jest": "^29.5.1", + "@types/lodash.mapvalues": "^4.6.7", + "@types/lodash.sortby": "^4.7.7", "@types/mime": "^3.0.1", "jest": "^29.5.0", "mime": "^3.0.0", diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index bc9b08dc..cb06c5eb 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -1,3 +1,4 @@ +import { Headers } from 'cross-fetch'; import { getAuthorizationAuthTypeV2 } from '@/utils/auth'; import { fetchWithTimeout, METHOD_GET } from '@/utils/http'; import { QueryParamsResponse } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/query'; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts index a8007ab4..3bb090ee 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts @@ -17,7 +17,7 @@ export const MsgUpdateGroupExtraSDKTypeEIP712 = { type: 'string', }, { - name: 'Extra', + name: 'extra', type: 'string', }, ], diff --git a/packages/chain-sdk/src/messages/utils.ts b/packages/chain-sdk/src/messages/utils.ts index 989abc5f..ee01e6e6 100644 --- a/packages/chain-sdk/src/messages/utils.ts +++ b/packages/chain-sdk/src/messages/utils.ts @@ -1,4 +1,7 @@ import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; +import mapValues from 'lodash.mapvalues'; +import sortBy from 'lodash.sortby'; +import { MetaTxInfo } from '..'; export const typeWrapper = (type: string, msg: object) => { return { @@ -14,8 +17,6 @@ export const generateMsg = (typeUrl: string, msgBytes: Uint8Array) => { }); }; -import { MetaTxInfo } from '..'; - export const createEIP712 = (types: object, chainId: string, message: object) => { return { types, @@ -124,15 +125,9 @@ export const generateTypes = (newTypes: object) => { Object.assign(types, newTypes); } - // sort types by field name - const resTypes: Record = {}; - const unsortedObjArr = [...Object.entries(types)]; - const sortedObjArr = unsortedObjArr.sort(([k1], [k2]) => k1.localeCompare(k2)); - sortedObjArr.forEach(([k, v]) => { - resTypes[k] = v; + return mapValues(types, (o) => { + return sortBy(o, ['name']); }); - - return resTypes; }; export const generateFee = ( diff --git a/packages/chain-sdk/src/offchainauth/fetch.ts b/packages/chain-sdk/src/offchainauth/fetch.ts index 7867affc..205daef3 100644 --- a/packages/chain-sdk/src/offchainauth/fetch.ts +++ b/packages/chain-sdk/src/offchainauth/fetch.ts @@ -1,4 +1,5 @@ import { fetchWithTimeout } from '@/utils/http'; +import { Headers } from 'cross-fetch'; import { IFetchNonce, IUpdateOneSpPubKeyParams } from '../types/storage'; export const fetchNonce = async ({ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ee05a0e4..22a61971 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -232,6 +232,12 @@ importers: ethereum-cryptography: specifier: ^2.0.0 version: 2.0.0 + lodash.mapvalues: + specifier: ^4.6.0 + version: 4.6.0 + lodash.sortby: + specifier: ^4.7.0 + version: 4.7.0 long: specifier: ^5.2.1 version: 5.2.1 @@ -248,6 +254,12 @@ importers: '@types/jest': specifier: ^29.5.1 version: 29.5.1 + '@types/lodash.mapvalues': + specifier: ^4.6.7 + version: 4.6.7 + '@types/lodash.sortby': + specifier: ^4.7.7 + version: 4.7.7 '@types/mime': specifier: ^3.0.1 version: 3.0.1 @@ -274,7 +286,7 @@ importers: version: 7.0.2(rollup@2.79.1) ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.22.1)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 version: 10.9.1(@types/node@20.3.2)(typescript@4.9.5) @@ -363,38 +375,10 @@ packages: dependencies: '@babel/highlight': 7.22.5 - /@babel/compat-data@7.22.3: - resolution: {integrity: sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/compat-data@7.22.5: resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} engines: {node: '>=6.9.0'} - /@babel/core@7.22.1: - resolution: {integrity: sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.22.3 - '@babel/helper-compilation-targets': 7.22.1(@babel/core@7.22.1) - '@babel/helper-module-transforms': 7.22.1 - '@babel/helpers': 7.22.3 - '@babel/parser': 7.22.4 - '@babel/template': 7.21.9 - '@babel/traverse': 7.22.4 - '@babel/types': 7.22.4 - convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/core@7.22.5: resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} engines: {node: '>=6.9.0'} @@ -410,15 +394,15 @@ packages: '@babel/traverse': 7.22.5 '@babel/types': 7.22.5 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 transitivePeerDependencies: - supports-color - /@babel/eslint-parser@7.22.5(@babel/core@7.22.5)(eslint@8.42.0): - resolution: {integrity: sha512-C69RWYNYtrgIRE5CmTd77ZiLDXqgBipahJc/jHP3sLcAGj6AJzxNIuKNpVnICqbyK7X3pFUfEvL++rvtbQpZkQ==} + /@babel/eslint-parser@7.21.8(@babel/core@7.22.5)(eslint@8.42.0): + resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': '>=7.11.0' @@ -435,17 +419,7 @@ packages: resolution: {integrity: sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.5 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - jsesc: 2.5.2 - dev: true - - /@babel/generator@7.22.3: - resolution: {integrity: sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.5 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 @@ -460,32 +434,25 @@ packages: '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 - /@babel/helper-annotate-as-pure@7.22.5: - resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + /@babel/helper-annotate-as-pure@7.18.6: + resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-builder-binary-assignment-operator-visitor@7.22.5: - resolution: {integrity: sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==} + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-compilation-targets@7.22.1(@babel/core@7.22.1): - resolution: {integrity: sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==} + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.3: + resolution: {integrity: sha512-ahEoxgqNoYXm0k22TvOke48i1PkavGu0qGCmcq9ugi6gnmvKNaMjKBSrZTnWUi1CFEeNAUiVba0Wtzm03aSkJg==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.22.3 - '@babel/core': 7.22.1 - '@babel/helper-validator-option': 7.21.0 - browserslist: 4.21.7 - lru-cache: 5.1.1 - semver: 6.3.0 + '@babel/types': 7.22.5 dev: true /@babel/helper-compilation-targets@7.22.5(@babel/core@7.22.5): @@ -497,38 +464,38 @@ packages: '@babel/compat-data': 7.22.5 '@babel/core': 7.22.5 '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.8 + browserslist: 4.21.7 lru-cache: 5.1.1 semver: 6.3.0 - /@babel/helper-create-class-features-plugin@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==} + /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.22.5): + resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.3 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-replace-supers': 7.22.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/helper-split-export-declaration': 7.22.5 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-create-regexp-features-plugin@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==} + /@babel/helper-create-regexp-features-plugin@7.22.1(@babel/core@7.22.5): + resolution: {integrity: sha512-WWjdnfR3LPIe+0EY8td7WmjhytxXtjKAEpnAxun/hkNiyOaPlvGK+NZaBFIdi9ndYV3Gav7BpFvtUwnaJlwi1w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.3.2 semver: 6.3.0 dev: true @@ -540,7 +507,7 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.2 @@ -549,23 +516,10 @@ packages: - supports-color dev: true - /@babel/helper-environment-visitor@7.22.1: - resolution: {integrity: sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} - /@babel/helper-function-name@7.21.0: - resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.21.9 - '@babel/types': 7.22.4 - dev: true - /@babel/helper-function-name@7.22.5: resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} @@ -573,21 +527,14 @@ packages: '@babel/template': 7.22.5 '@babel/types': 7.22.5 - /@babel/helper-hoist-variables@7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.4 - dev: true - /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 - /@babel/helper-member-expression-to-functions@7.22.5: - resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} + /@babel/helper-member-expression-to-functions@7.22.3: + resolution: {integrity: sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 @@ -606,22 +553,6 @@ packages: dependencies: '@babel/types': 7.22.5 - /@babel/helper-module-transforms@7.22.1: - resolution: {integrity: sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.22.1 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-simple-access': 7.21.5 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.21.9 - '@babel/traverse': 7.22.4 - '@babel/types': 7.22.4 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-module-transforms@7.22.5: resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} engines: {node: '>=6.9.0'} @@ -637,8 +568,8 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-optimise-call-expression@7.22.5: - resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + /@babel/helper-optimise-call-expression@7.18.6: + resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 @@ -654,28 +585,28 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-remap-async-to-generator@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==} + /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.22.5): + resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-wrap-function': 7.22.5 + '@babel/helper-wrap-function': 7.20.5 '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-replace-supers@7.22.5: - resolution: {integrity: sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==} + /@babel/helper-replace-supers@7.22.1: + resolution: {integrity: sha512-ut4qrkE4AuSfrwHSps51ekR1ZY/ygrP1tp0WFm8oVq6nzc/hvfV/22JylndIbsf2U2M9LOMwiSddr6y+78j+OQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.3 + '@babel/helper-optimise-call-expression': 7.18.6 '@babel/template': 7.22.5 '@babel/traverse': 7.22.5 '@babel/types': 7.22.5 @@ -683,33 +614,19 @@ packages: - supports-color dev: true - /@babel/helper-simple-access@7.21.5: - resolution: {integrity: sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.4 - dev: true - /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 - /@babel/helper-skip-transparent-expression-wrappers@7.22.5: - resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + /@babel/helper-skip-transparent-expression-wrappers@7.20.0: + resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-split-export-declaration@7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.4 - dev: true - /@babel/helper-split-export-declaration@7.22.5: resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} engines: {node: '>=6.9.0'} @@ -734,17 +651,12 @@ packages: resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.21.0: - resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-option@7.22.5: resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} engines: {node: '>=6.9.0'} - /@babel/helper-wrap-function@7.22.5: - resolution: {integrity: sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==} + /@babel/helper-wrap-function@7.20.5: + resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-function-name': 7.22.5 @@ -755,17 +667,6 @@ packages: - supports-color dev: true - /@babel/helpers@7.22.3: - resolution: {integrity: sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.21.9 - '@babel/traverse': 7.22.4 - '@babel/types': 7.22.4 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helpers@7.22.5: resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} engines: {node: '>=6.9.0'} @@ -793,14 +694,6 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.22.4: - resolution: {integrity: sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.22.4 - dev: true - /@babel/parser@7.22.5: resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} engines: {node: '>=6.0.0'} @@ -808,26 +701,26 @@ packages: dependencies: '@babel/types': 7.22.5 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-6r4yRwEnorYByILoDRnEqxtojYKuiIv9FojW2E8GUKo9eWBwbKcd9IiZOZpdyXc64RmyGGyPu3/uAcrz/dq2kQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.22.5(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.22.5) dev: true /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.5): @@ -837,24 +730,24 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-decorators@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-h8hlezQ4dl6ixodgXkH8lUfcD7x+WAuIqPUjwGoItynrXOAv4a4Tci1zA/qjzQjjcl0v3QpLdc2LM6ZACQuY7A==} + /@babel/plugin-proposal-decorators@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-XjTKH3sHr6pPqG+hR1NCdVupwiosfdKM2oSMyKQVQ5Bym9l/p7BuLAqT5U32zZzRCfPq/TPRPzMiiTE9bOXU4w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-replace-supers': 7.22.1 '@babel/helper-split-export-declaration': 7.22.5 - '@babel/plugin-syntax-decorators': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-syntax-decorators': 7.22.3(@babel/core@7.22.5) transitivePeerDependencies: - supports-color dev: true @@ -866,7 +759,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) dev: true @@ -877,7 +770,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) dev: true @@ -888,8 +781,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) dev: true @@ -900,31 +793,22 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.5): - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.22.5): + resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - dev: true - - /@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.22.5): - resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) transitivePeerDependencies: - supports-color @@ -937,17 +821,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.1): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 dev: true /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.5): @@ -956,34 +831,25 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.1): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 + '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.1): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.5): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.5): @@ -993,17 +859,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-decorators@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-avpUOBS7IU6al8MmF1XpAyj9QYeLPuSDJI5D4pVMSMdL7xQokKqJPYQC67RCT0aCTashUXPiGwMJ0DEXXCEmMA==} + /@babel/plugin-syntax-decorators@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-R16Zuge73+8/nLcDjkIpyhi5wIbN7i7fiuLJR8yQX7vPAa/ltUKtd3iLbb4AgP5nrLi91HnNUNosELIGUGH1bg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.5): @@ -1012,7 +878,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.5): @@ -1021,21 +887,21 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} + /@babel/plugin-syntax-flow@7.21.4(@babel/core@7.22.5): + resolution: {integrity: sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1044,23 +910,24 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} + /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.22.5): + resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.1): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + /@babel/plugin-syntax-import-attributes@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-i35jZJv6aO7hxEbIWQ41adVfOzjm9dcYDNeWlBMd8p0ZQRtNUCBrmGwZt+H5lb+oOC9a3svp956KP0oWGA1YsA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.5): @@ -1069,16 +936,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.1): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.5): @@ -1087,16 +945,16 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.22.1): + /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.22.5): resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.1 + '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.21.5 dev: true @@ -1110,31 +968,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.1): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.5): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.1): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.5): @@ -1143,16 +983,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.1): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.5): @@ -1161,16 +992,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.1): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.5): @@ -1179,16 +1001,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.1): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.5): @@ -1197,16 +1010,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.1): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.5): @@ -1215,7 +1019,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.5): @@ -1225,17 +1029,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.1): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.1 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.5): @@ -1245,27 +1039,17 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.22.1): - resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.1 '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} + /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.22.5): + resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.5): @@ -1275,214 +1059,214 @@ packages: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} + /@babel/plugin-transform-arrow-functions@7.21.5(@babel/core@7.22.5): + resolution: {integrity: sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-async-generator-functions@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==} + /@babel/plugin-transform-async-generator-functions@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-36A4Aq48t66btydbZd5Fk0/xJqbpg/v4QWI4AH4cYHBXy9Mu42UOupZpebKFiCFNT9S9rJFcsld0gsv0ayLjtA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.22.5) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} + /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.22.5): + resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.5(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.22.5) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} + /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-block-scoping@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==} + /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.22.5): + resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} + /@babel/plugin-transform-class-properties@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-mASLsd6rhOrLZ5F3WbCxkzl67mmOnqik0zrg5W6D/X0QMW7HtvnoL1dRARLKIbMP3vXwkwziuLesPqWVGIl6Bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-class-static-block@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==} + /@babel/plugin-transform-class-static-block@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-5BirgNWNOx7cwbTJCOmKFJ1pZjwk5MUfMIwiBBvsirCJMZeQgs5pk6i1OlkVg+1Vef5LfBahFOrdCnAWvkVKMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.5) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-classes@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==} + /@babel/plugin-transform-classes@7.21.0(@babel/core@7.22.5): + resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.5 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-replace-supers': 7.22.1 '@babel/helper-split-export-declaration': 7.22.5 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} + /@babel/plugin-transform-computed-properties@7.21.5(@babel/core@7.22.5): + resolution: {integrity: sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/template': 7.22.5 dev: true - /@babel/plugin-transform-destructuring@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==} + /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.22.5): + resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} + /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} + /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.22.5): + resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-dynamic-import@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==} + /@babel/plugin-transform-dynamic-import@7.22.1(@babel/core@7.22.5): + resolution: {integrity: sha512-rlhWtONnVBPdmt+jeewS0qSnMz/3yLFrqAP8hHC6EDcrYRSyuz9f9yQhHvVn2Ad6+yO9fHXac5piudeYrInxwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} + /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.3 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-export-namespace-from@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==} + /@babel/plugin-transform-export-namespace-from@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-5Ti1cHLTDnt3vX61P9KZ5IG09bFXp4cDVFJIAeCZuxu9OXXJJZp5iP0n/rzM2+iAutJY+KWEyyHcRaHlpQ/P5g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} + /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.22.5): + resolution: {integrity: sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-flow': 7.21.4(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} + /@babel/plugin-transform-for-of@7.21.5(@babel/core@7.22.5): + resolution: {integrity: sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} + /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.22.5): + resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1490,80 +1274,80 @@ packages: '@babel/core': 7.22.5 '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) '@babel/helper-function-name': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-json-strings@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==} + /@babel/plugin-transform-json-strings@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-IuvOMdeOOY2X4hRNAT6kwbePtK21BUyrAEgLKviL8pL6AEEVUVcqtRdN/HJXBLGIbt9T3ETmXRnFedRRmQNTYw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} + /@babel/plugin-transform-literals@7.18.9(@babel/core@7.22.5): + resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-logical-assignment-operators@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==} + /@babel/plugin-transform-logical-assignment-operators@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-CbayIfOw4av2v/HYZEsH+Klks3NC2/MFIR3QR8gnpGNNPEaq2fdlVCRYG/paKs7/5hvBLQ+H70pGWOHtlNEWNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} + /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} + /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.22.5): + resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} + /@babel/plugin-transform-modules-commonjs@7.21.5(@babel/core@7.22.5): + resolution: {integrity: sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-simple-access': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-systemjs@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==} + /@babel/plugin-transform-modules-systemjs@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-V21W3bKLxO3ZjcBJZ8biSvo5gQ85uIXW2vJfh7JSWf/4SLUSr1tOoHX3ruN4+Oqa2m+BKfsxTR1I+PsvkIWvNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1571,70 +1355,70 @@ packages: '@babel/core': 7.22.5 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-validator-identifier': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} + /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + /@babel/plugin-transform-named-capturing-groups-regex@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-c6HrD/LpUdNNJsISQZpds3TXvfYIAbo+efE9aWmY/PmSRD0agrJ9cPMt4BmArwUQ7ZymEWTFjTyp+yReLJZh0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} + /@babel/plugin-transform-new-target@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-5RuJdSo89wKdkRTqtM9RVVJzHum9c2s0te9rB7vZC1zKKxcioWIy+xcu4OoIAjyFZhb/bp5KkunuLin1q7Ct+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==} + /@babel/plugin-transform-nullish-coalescing-operator@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-CpaoNp16nX7ROtLONNuCyenYdY/l7ZsR6aoVa7rW7nMWisoNoQNIH5Iay/4LDyRjKMuElMqXiBoOQCDLTMGZiw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-numeric-separator@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==} + /@babel/plugin-transform-numeric-separator@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-+AF88fPDJrnseMh5vD9+SH6wq4ZMvpiTMHh58uLs+giMEyASFVhcT3NkoyO+NebFCNnpHJEq5AXO2txV4AGPDQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-object-rest-spread@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==} + /@babel/plugin-transform-object-rest-spread@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-38bzTsqMMCI46/TQnJwPPpy33EjLCc1Gsm2hRTF6zTMWnKsN61vdrpuzIEGQyKEhDSYDKyZHrrd5FMj4gcUHhw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1642,113 +1426,127 @@ packages: '@babel/compat-data': 7.22.5 '@babel/core': 7.22.5 '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} + /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-replace-supers': 7.22.1 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-optional-catch-binding@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==} + /@babel/plugin-transform-optional-catch-binding@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-bnDFWXFzWY0BsOyqaoSXvMQ2F35zutQipugog/rqotL2S4ciFOKlRYUu9djt4iq09oh2/34hqfRR2k1dIvuu4g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-optional-chaining@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==} + /@babel/plugin-transform-optional-chaining@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-63v3/UFFxhPKT8j8u1jTTGVyITxl7/7AfOqK8C5gz1rHURPUGe3y5mvIf68eYKGoBNahtJnTxBKug4BQOnzeJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} + /@babel/plugin-transform-parameters@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-x7QHQJHPuD9VmfpzboyGJ5aHEr9r7DsAsdxdhJiTB3J3j8dyl+NFZ+rX5Q2RWFDCs61c06qBfS4ys2QYn8UkMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} + /@babel/plugin-transform-private-methods@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-fC7jtjBPFqhqpPAE+O4LKwnLq7gGkD3ZmC2E3i4qWH34mH3gOg2Xrq5YMHUq6DM30xhqM1DNftiRaSqVjEG+ug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-private-property-in-object@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==} + /@babel/plugin-transform-private-property-in-object@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-C7MMl4qWLpgVCbXfj3UW8rR1xeCnisQ0cU7YJHV//8oNBS0aCIVg1vFnZXxOckHhEpQyqNNkWmvSEWnMLlc+Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} + /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + /@babel/plugin-transform-react-jsx-development@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.22.5) + dev: true + + /@babel/plugin-transform-react-jsx@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-JEulRWG2f04a7L8VWaOngWiK6p+JOSpB+DAtwfJgOaej1qdbNxqtK7MwTBHjUA10NeFcszlFNqCdbRcirzh2uQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.5) + '@babel/types': 7.22.5 dev: true /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.5): @@ -1765,47 +1563,47 @@ packages: '@babel/types': 7.22.5 dev: true - /@babel/plugin-transform-react-pure-annotations@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==} + /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-regenerator@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==} + /@babel/plugin-transform-regenerator@7.21.5(@babel/core@7.22.5): + resolution: {integrity: sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 regenerator-transform: 0.15.1 dev: true - /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} + /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-runtime@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-bg4Wxd1FWeFx3daHFTWk1pkSWK/AyQuiyAoeZAOkAOUBjnZPH6KT7eMxouV47tQ6hl6ax2zyAWBdWZXbrvXlaw==} + /@babel/plugin-transform-runtime@7.22.4(@babel/core@7.22.5): + resolution: {integrity: sha512-Urkiz1m4zqiRo17klj+l3nXgiRTFQng91Bc1eiLF7BMQu1e7wE5Gcq9xSv062IF068NHjcutSbIMev60gXxAvA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.5) babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.5) babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.5) @@ -1814,117 +1612,117 @@ packages: - supports-color dev: true - /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} + /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} + /@babel/plugin-transform-spread@7.20.7(@babel/core@7.22.5): + resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 dev: true - /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} + /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} + /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.22.5): + resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} + /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.22.5): + resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-typescript@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-SMubA9S7Cb5sGSFFUlqxyClTA9zWJ8qGQrppNUm05LtFuN1ELRFNndkix4zUJrC9F+YivWwa1dHMSyo0e0N9dA==} + /@babel/plugin-transform-typescript@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-pyjnCIniO5PNaEuGxT28h0HbMru3qCVrMqVgVOz/krComdIrY9W6FCLBq9NWHY8HDGaUlan+UhmZElDENIfCcw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.5) + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.5) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-unicode-escapes@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==} + /@babel/plugin-transform-unicode-escapes@7.21.5(@babel/core@7.22.5): + resolution: {integrity: sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} + /@babel/plugin-transform-unicode-property-regex@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-5ScJ+OmdX+O6HRuMGW4kv7RL9vIKdtdAj9wuWUKy1wbHY3jaM/UlyIiC1G7J6UJiiyMukjjK0QwL3P0vBd0yYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} + /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} + /@babel/plugin-transform-unicode-sets-regex@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-hNufLdkF8vqywRp+P55j4FHXqAX2LRUccoZHH7AFn1pq5ZOO2ISKW9w13bFZVjBoTqeve2HOgoJCcaziJVhGNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/preset-env@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==} + /@babel/preset-env@7.22.4(@babel/core@7.22.5): + resolution: {integrity: sha512-c3lHOjbwBv0TkhYCr+XCR6wKcSZ1QbQTVdSkZUaVpLv8CVWotBMArWUi5UAJrcrQaEnleVkkvaV8F/pmc/STZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1932,18 +1730,18 @@ packages: '@babel/compat-data': 7.22.5 '@babel/core': 7.22.5 '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.5) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.22.5) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.5) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.5) '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.22.5) + '@babel/plugin-syntax-import-attributes': 7.22.3(@babel/core@7.22.5) '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.5) '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) @@ -1955,60 +1753,60 @@ packages: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5) '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-async-generator-functions': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-class-static-block': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-classes': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-dynamic-import': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-export-namespace-from': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-json-strings': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-logical-assignment-operators': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-modules-systemjs': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-numeric-separator': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-object-rest-spread': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-optional-catch-binding': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-optional-chaining': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-private-property-in-object': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-regenerator': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-unicode-escapes': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-arrow-functions': 7.21.5(@babel/core@7.22.5) + '@babel/plugin-transform-async-generator-functions': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.22.5) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.22.5) + '@babel/plugin-transform-class-properties': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-class-static-block': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.22.5) + '@babel/plugin-transform-computed-properties': 7.21.5(@babel/core@7.22.5) + '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.22.5) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.22.5) + '@babel/plugin-transform-dynamic-import': 7.22.1(@babel/core@7.22.5) + '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-transform-export-namespace-from': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-for-of': 7.21.5(@babel/core@7.22.5) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.22.5) + '@babel/plugin-transform-json-strings': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.22.5) + '@babel/plugin-transform-logical-assignment-operators': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-transform-modules-amd': 7.20.11(@babel/core@7.22.5) + '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.22.5) + '@babel/plugin-transform-modules-systemjs': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-new-target': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-numeric-separator': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-object-rest-spread': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-transform-optional-catch-binding': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-private-methods': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-private-property-in-object': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-transform-regenerator': 7.21.5(@babel/core@7.22.5) + '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.22.5) + '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.22.5) + '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.22.5) + '@babel/plugin-transform-unicode-escapes': 7.21.5(@babel/core@7.22.5) + '@babel/plugin-transform-unicode-property-regex': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-transform-unicode-sets-regex': 7.22.3(@babel/core@7.22.5) '@babel/preset-modules': 0.1.5(@babel/core@7.22.5) '@babel/types': 7.22.5 babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.5) babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.5) babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.5) - core-js-compat: 3.31.0 + core-js-compat: 3.30.2 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -2020,40 +1818,40 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.5) '@babel/types': 7.22.5 esutils: 2.0.3 dev: true - /@babel/preset-react@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==} + /@babel/preset-react@7.22.3(@babel/core@7.22.5): + resolution: {integrity: sha512-lxDz1mnZ9polqClBCVBjIVUypoB4qV3/tZUDb/IlYbW1kiiLaXaX+bInbRjl+lNQ/iUZraQ3+S8daEmoELMWug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-react-pure-annotations': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-transform-react-pure-annotations': 7.18.6(@babel/core@7.22.5) dev: true - /@babel/preset-typescript@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==} + /@babel/preset-typescript@7.21.5(@babel/core@7.22.5): + resolution: {integrity: sha512-iqe3sETat5EOrORXiQ6rWfoOg2y68Cs75B9wNxdPW4kixJxh7aXQE1KPdWLDniC24T/6dSnguF33W9j/ZZQcmA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.21.5 '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-typescript': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.5) + '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.22.5) + '@babel/plugin-transform-typescript': 7.22.3(@babel/core@7.22.5) transitivePeerDependencies: - supports-color dev: true @@ -2062,27 +1860,19 @@ packages: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true - /@babel/runtime@7.22.3: - resolution: {integrity: sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==} + /@babel/runtime@7.21.5: + resolution: {integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 + dev: false - /@babel/runtime@7.22.5: - resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==} + /@babel/runtime@7.22.3: + resolution: {integrity: sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - /@babel/template@7.21.9: - resolution: {integrity: sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.21.4 - '@babel/parser': 7.22.4 - '@babel/types': 7.22.4 - dev: true - /@babel/template@7.22.5: resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} @@ -2095,33 +1885,15 @@ packages: resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.22.3 - '@babel/helper-environment-visitor': 7.22.1 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.22.4 - '@babel/types': 7.22.4 - debug: 4.3.4(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/traverse@7.22.4: - resolution: {integrity: sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.22.3 - '@babel/helper-environment-visitor': 7.22.1 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.22.4 - '@babel/types': 7.22.4 - debug: 4.3.4(supports-color@8.1.1) + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2139,7 +1911,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.5 '@babel/parser': 7.22.5 '@babel/types': 7.22.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2148,8 +1920,8 @@ packages: resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.21.5 - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 to-fast-properties: 2.0.0 dev: true @@ -2202,7 +1974,7 @@ packages: /@changesets/apply-release-plan@6.1.3: resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} dependencies: - '@babel/runtime': 7.22.5 + '@babel/runtime': 7.22.3 '@changesets/config': 2.3.0 '@changesets/get-version-range-type': 0.3.2 '@changesets/git': 2.0.0 @@ -2220,7 +1992,7 @@ packages: /@changesets/assemble-release-plan@5.2.3: resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} dependencies: - '@babel/runtime': 7.22.5 + '@babel/runtime': 7.22.3 '@changesets/errors': 0.1.4 '@changesets/get-dependents-graph': 1.3.5 '@changesets/types': 5.2.1 @@ -2248,7 +2020,7 @@ packages: resolution: {integrity: sha512-XnTa+b51vt057fyAudvDKGB0Sh72xutQZNAdXkCqPBKO2zvs2yYZx5hFZj1u9cbtpwM6Sxtcr02/FQJfZOzemQ==} hasBin: true dependencies: - '@babel/runtime': 7.22.5 + '@babel/runtime': 7.22.3 '@changesets/apply-release-plan': 6.1.3 '@changesets/assemble-release-plan': 5.2.3 '@changesets/changelog-git': 0.1.14 @@ -2323,7 +2095,7 @@ packages: /@changesets/get-release-plan@3.0.16: resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} dependencies: - '@babel/runtime': 7.22.5 + '@babel/runtime': 7.22.3 '@changesets/assemble-release-plan': 5.2.3 '@changesets/config': 2.3.0 '@changesets/pre': 1.0.14 @@ -2339,7 +2111,7 @@ packages: /@changesets/git@2.0.0: resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: - '@babel/runtime': 7.22.5 + '@babel/runtime': 7.22.3 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -2364,7 +2136,7 @@ packages: /@changesets/pre@1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: - '@babel/runtime': 7.22.5 + '@babel/runtime': 7.22.3 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -2374,7 +2146,7 @@ packages: /@changesets/read@0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: - '@babel/runtime': 7.22.5 + '@babel/runtime': 7.22.3 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/parse': 0.3.16 @@ -2395,7 +2167,7 @@ packages: /@changesets/write@0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: - '@babel/runtime': 7.22.5 + '@babel/runtime': 7.22.3 '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 @@ -2407,7 +2179,7 @@ packages: engines: {node: '>= 10.0.0'} dependencies: '@metamask/safe-event-emitter': 2.0.0 - '@solana/web3.js': 1.77.3 + '@solana/web3.js': 1.76.0 bind-decorator: 1.0.11 bn.js: 5.2.1 buffer: 6.0.3 @@ -2417,7 +2189,7 @@ packages: eth-rpc-errors: 4.0.2 json-rpc-engine: 6.1.0 keccak: 3.0.3 - preact: 10.15.1 + preact: 10.14.1 qs: 6.11.2 rxjs: 6.6.7 sha.js: 2.4.11 @@ -2436,7 +2208,7 @@ packages: hasBin: true dependencies: '@commitlint/format': 17.4.4 - '@commitlint/lint': 17.6.5 + '@commitlint/lint': 17.6.6 '@commitlint/load': 17.5.0 '@commitlint/read': 17.5.1 '@commitlint/types': 17.4.4 @@ -2490,19 +2262,19 @@ packages: chalk: 4.1.2 dev: true - /@commitlint/is-ignored@17.6.5: - resolution: {integrity: sha512-CQvAPt9gX7cuUbMrIaIMKczfWJqqr6m8IlJs0F2zYwyyMTQ87QMHIj5jJ5HhOaOkaj6dvTMVGx8Dd1I4xgUuoQ==} + /@commitlint/is-ignored@17.6.6: + resolution: {integrity: sha512-4Fw875faAKO+2nILC04yW/2Vy/wlV3BOYCSQ4CEFzriPEprc1Td2LILmqmft6PDEK5Sr14dT9tEzeaZj0V56Gg==} engines: {node: '>=v14'} dependencies: '@commitlint/types': 17.4.4 - semver: 7.5.0 + semver: 7.5.2 dev: true - /@commitlint/lint@17.6.5: - resolution: {integrity: sha512-BSJMwkE4LWXrOsiP9KoHG+/heSDfvOL/Nd16+ojTS/DX8HZr8dNl8l3TfVr/d/9maWD8fSegRGtBtsyGuugFrw==} + /@commitlint/lint@17.6.6: + resolution: {integrity: sha512-5bN+dnHcRLkTvwCHYMS7Xpbr+9uNi0Kq5NR3v4+oPNx6pYXt8ACuw9luhM/yMgHYwW0ajIR20wkPAFkZLEMGmg==} engines: {node: '>=v14'} dependencies: - '@commitlint/is-ignored': 17.6.5 + '@commitlint/is-ignored': 17.6.6 '@commitlint/parse': 17.6.5 '@commitlint/rules': 17.6.5 '@commitlint/types': 17.4.4 @@ -2518,14 +2290,14 @@ packages: '@commitlint/types': 17.4.4 '@types/node': 18.16.18 chalk: 4.1.2 - cosmiconfig: 8.2.0 - cosmiconfig-typescript-loader: 4.3.0(@types/node@18.16.18)(cosmiconfig@8.2.0)(ts-node@10.9.1)(typescript@5.1.3) + cosmiconfig: 8.1.3 + cosmiconfig-typescript-loader: 4.3.0(@types/node@18.16.18)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@4.9.5) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.1.6) - typescript: 5.1.3 + typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -2601,7 +2373,7 @@ packages: /@confio/ics23@0.6.8: resolution: {integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==} dependencies: - '@noble/hashes': 1.3.1 + '@noble/hashes': 1.3.0 protobufjs: 6.11.3 dev: false @@ -2638,7 +2410,7 @@ packages: '@cosmjs/encoding': 0.28.13 '@cosmjs/math': 0.28.13 '@cosmjs/utils': 0.28.13 - '@noble/hashes': 1.3.1 + '@noble/hashes': 1.3.0 bn.js: 5.2.1 elliptic: 6.5.4 libsodium-wrappers: 0.7.11 @@ -2650,7 +2422,7 @@ packages: '@cosmjs/encoding': 0.29.5 '@cosmjs/math': 0.29.5 '@cosmjs/utils': 0.29.5 - '@noble/hashes': 1.3.1 + '@noble/hashes': 1.3.0 bn.js: 5.2.1 elliptic: 6.5.4 libsodium-wrappers: 0.7.11 @@ -3377,7 +3149,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 20.2.5 + '@types/node': 18.16.18 chalk: 4.1.2 jest-message-util: 29.5.0 jest-util: 29.5.0 @@ -3398,14 +3170,14 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.2.5 + '@types/node': 18.16.18 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@20.2.5)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -3432,7 +3204,7 @@ packages: dependencies: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.2.5 + '@types/node': 18.16.18 jest-mock: 29.5.0 dev: true @@ -3459,7 +3231,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@sinonjs/fake-timers': 10.2.0 - '@types/node': 20.2.5 + '@types/node': 18.16.18 jest-message-util: 29.5.0 jest-mock: 29.5.0 jest-util: 29.5.0 @@ -3492,7 +3264,7 @@ packages: '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.18 - '@types/node': 20.2.5 + '@types/node': 18.16.18 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3554,7 +3326,7 @@ packages: resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.1 + '@babel/core': 7.22.5 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.18 babel-plugin-istanbul: 6.1.1 @@ -3580,7 +3352,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.2.5 + '@types/node': 18.16.18 '@types/yargs': 17.0.24 chalk: 4.1.2 dev: true @@ -3685,8 +3457,8 @@ packages: resolution: {integrity: sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==} dev: false - /@lit/reactive-element@1.6.2: - resolution: {integrity: sha512-rDfl+QnCYjuIGf5xI2sVJWdYIi56CTCwWa+nidKYX6oIuBYwUbT/vX4qbUDlHiZKJ/3FRNQ/tWJui44p6/stSA==} + /@lit/reactive-element@1.6.1: + resolution: {integrity: sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA==} dependencies: '@lit-labs/ssr-dom-shim': 1.1.1 dev: false @@ -3694,7 +3466,7 @@ packages: /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.22.5 + '@babel/runtime': 7.22.3 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -3703,7 +3475,7 @@ packages: /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.22.5 + '@babel/runtime': 7.22.3 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -3742,9 +3514,9 @@ packages: resolution: {integrity: sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==} engines: {node: '>=14.0.0'} dependencies: - '@types/debug': 4.1.8 + '@types/debug': 4.1.7 debug: 4.3.4(supports-color@8.1.1) - semver: 7.5.1 + semver: 7.5.2 superstruct: 1.0.3 transitivePeerDependencies: - supports-color @@ -3756,7 +3528,7 @@ packages: '@motionone/easing': 10.15.1 '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 - tslib: 2.5.3 + tslib: 2.5.2 dev: false /@motionone/dom@10.16.2: @@ -3767,14 +3539,14 @@ packages: '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 hey-listen: 1.0.8 - tslib: 2.5.3 + tslib: 2.5.2 dev: false /@motionone/easing@10.15.1: resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==} dependencies: '@motionone/utils': 10.15.1 - tslib: 2.5.3 + tslib: 2.5.2 dev: false /@motionone/generators@10.15.1: @@ -3782,14 +3554,14 @@ packages: dependencies: '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 - tslib: 2.5.3 + tslib: 2.5.2 dev: false /@motionone/svelte@10.16.2: resolution: {integrity: sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==} dependencies: '@motionone/dom': 10.16.2 - tslib: 2.5.3 + tslib: 2.5.2 dev: false /@motionone/types@10.15.1: @@ -3801,14 +3573,14 @@ packages: dependencies: '@motionone/types': 10.15.1 hey-listen: 1.0.8 - tslib: 2.5.3 + tslib: 2.5.2 dev: false /@motionone/vue@10.16.2: resolution: {integrity: sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==} dependencies: '@motionone/dom': 10.16.2 - tslib: 2.5.3 + tslib: 2.5.2 dev: false /@next/env@13.1.6: @@ -3954,12 +3726,6 @@ packages: '@noble/hashes': 1.3.0 dev: false - /@noble/curves@1.1.0: - resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} - dependencies: - '@noble/hashes': 1.3.1 - dev: false - /@noble/hashes@1.2.0: resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} dev: false @@ -3968,11 +3734,6 @@ packages: resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} dev: false - /@noble/hashes@1.3.1: - resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} - engines: {node: '>= 16'} - dev: false - /@noble/secp256k1@1.7.1: resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} dev: false @@ -4008,7 +3769,7 @@ packages: open: 8.4.2 picocolors: 1.0.0 tiny-glob: 0.2.9 - tslib: 2.5.3 + tslib: 2.5.0 dev: false /@protobufjs/aspromise@1.1.2: @@ -4102,7 +3863,7 @@ packages: optional: true dependencies: '@babel/core': 7.22.5 - '@babel/helper-module-imports': 7.22.5 + '@babel/helper-module-imports': 7.21.4 '@rollup/pluginutils': 3.1.0(rollup@2.79.1) rollup: 2.79.1 dev: true @@ -4233,8 +3994,8 @@ packages: resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} dev: false - /@rushstack/eslint-patch@1.3.1: - resolution: {integrity: sha512-RkmuBcqiNioeeBKbgzMlOdreUkJfYaSjwgx9XDgGGpjvWgyaxWvDmZVSN9CS6LjEASadhgPv2BcFp+SeouWXXA==} + /@rushstack/eslint-patch@1.3.0: + resolution: {integrity: sha512-IthPJsJR85GhOkp3Hvp8zFOPK5ynKn6STyHa/WZpioK7E1aYDiBzpqQPrngc14DszIUkIrdd3k9Iu0XSzlP/1w==} dev: true /@safe-global/safe-apps-provider@0.15.2: @@ -4335,12 +4096,12 @@ packages: buffer: 6.0.3 dev: false - /@solana/web3.js@1.77.3: - resolution: {integrity: sha512-PHaO0BdoiQRPpieC1p31wJsBaxwIOWLh8j2ocXNKX8boCQVldt26Jqm2tZE4KlrvnCIV78owPLv1pEUgqhxZ3w==} + /@solana/web3.js@1.76.0: + resolution: {integrity: sha512-aJtF/nTs+9St+KtTK/wgVJ+SinfjYzn+3w1ygYIPw8ST6LH+qHBn8XkodgDTwlv/xzNkaVz1kkUDOZ8BPXyZWA==} dependencies: - '@babel/runtime': 7.22.5 - '@noble/curves': 1.1.0 - '@noble/hashes': 1.3.1 + '@babel/runtime': 7.22.3 + '@noble/curves': 1.0.0 + '@noble/hashes': 1.3.0 '@solana/buffer-layout': 4.0.1 agentkeepalive: 4.3.0 bigint-buffer: 1.1.5 @@ -4349,7 +4110,7 @@ packages: bs58: 4.0.1 buffer: 6.0.3 fast-stable-stringify: 1.0.0 - jayson: 4.1.0 + jayson: 3.7.0 node-fetch: 2.6.11 rpc-websockets: 7.5.1 superstruct: 0.14.2 @@ -4544,8 +4305,8 @@ packages: /@types/babel__core@7.20.0: resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} dependencies: - '@babel/parser': 7.22.4 - '@babel/types': 7.22.4 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.5 @@ -4554,26 +4315,26 @@ packages: /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.5 dev: true /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.22.4 - '@babel/types': 7.22.4 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 dev: true /@types/babel__traverse@7.18.5: resolution: {integrity: sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==} dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.5 dev: true /@types/bn.js@4.11.6: resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} dependencies: - '@types/node': 18.16.7 + '@types/node': 18.16.18 dev: false /@types/chai@4.3.5: @@ -4583,11 +4344,11 @@ packages: /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.16.7 + '@types/node': 18.16.18 dev: false - /@types/debug@4.1.8: - resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} + /@types/debug@4.1.7: + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: '@types/ms': 0.7.31 dev: false @@ -4603,20 +4364,20 @@ packages: /@types/fs-extra@8.1.2: resolution: {integrity: sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==} dependencies: - '@types/node': 18.16.13 + '@types/node': 18.16.18 dev: true /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.16.13 + '@types/node': 18.16.18 dev: true /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 20.2.5 + '@types/node': 18.16.18 dev: true /@types/is-ci@3.0.0: @@ -4655,6 +4416,22 @@ packages: /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + /@types/lodash.mapvalues@4.6.7: + resolution: {integrity: sha512-yGTo9zD60Iw1Q+YBvx4Ad7RDj5rA6EpvYTpVPVsfe6pwHcwDcGChSqL1n2sPBMbCeHJ3R5kcaqpkdlrFe/y4Vg==} + dependencies: + '@types/lodash': 4.14.195 + dev: true + + /@types/lodash.sortby@4.7.7: + resolution: {integrity: sha512-J/4IS+jQopGBrrRetBXDCX0KnSeXJZ0rOTmGAxR9MWGV24YdHxX8IRi9LCGAU9GKWlBov9KRSfQpuup9PReqrw==} + dependencies: + '@types/lodash': 4.14.195 + dev: true + + /@types/lodash@4.14.195: + resolution: {integrity: sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==} + dev: true + /@types/long@4.0.2: resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} dev: false @@ -4682,22 +4459,13 @@ packages: /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - /@types/node@18.16.13: - resolution: {integrity: sha512-uZRomboV1vBL61EBXneL4j9/hEn+1Yqa4LQdpGrKmXFyJmVfWc9JV9+yb2AlnOnuaDnb2PDO3hC6/LKmzJxP1A==} - dev: true - /@types/node@18.16.18: resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} - dev: true /@types/node@18.16.7: resolution: {integrity: sha512-MFg7ua/bRtnA1hYE3pVyWxGd/r7aMqjNOdHvlSsXV3n8iaeGKkOaPzpJh6/ovf4bEXWcojkeMJpTsq3mzXW4IQ==} dev: false - /@types/node@20.2.5: - resolution: {integrity: sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==} - dev: true - /@types/node@20.3.2: resolution: {integrity: sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==} dev: true @@ -4713,7 +4481,7 @@ packages: /@types/pbkdf2@3.1.0: resolution: {integrity: sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==} dependencies: - '@types/node': 18.16.7 + '@types/node': 18.16.18 dev: false /@types/prettier@2.7.2: @@ -4726,7 +4494,7 @@ packages: /@types/react-dom@18.2.4: resolution: {integrity: sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==} dependencies: - '@types/react': 18.2.9 + '@types/react': 18.2.7 dev: false /@types/react-dom@18.2.5: @@ -4751,8 +4519,8 @@ packages: csstype: 3.1.2 dev: false - /@types/react@18.2.9: - resolution: {integrity: sha512-pL3JAesUkF7PEQGxh5XOwdXGV907te6m1/Qe1ERJLgomojS6Ne790QiA7GUl434JEkFA2aAaB6qJ5z4e1zJn/w==} + /@types/react@18.2.7: + resolution: {integrity: sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 @@ -4771,7 +4539,7 @@ packages: /@types/secp256k1@4.0.3: resolution: {integrity: sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==} dependencies: - '@types/node': 18.16.7 + '@types/node': 18.16.18 dev: false /@types/semver@6.2.3: @@ -4793,7 +4561,7 @@ packages: /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: - '@types/node': 18.16.7 + '@types/node': 18.16.18 dev: false /@types/yargs-parser@21.0.0: @@ -4834,13 +4602,13 @@ packages: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.59.11(eslint@8.42.0)(typescript@5.1.6): - resolution: {integrity: sha512-GkQGV0UF/V5Ra7gZMBmiD1WrYUFOJNvCZs+XQnUyJoxmqfWMXVNyB2NVCPRKefoQcpvTv9UpJyfCvsJFs8NzzQ==} + /@typescript-eslint/experimental-utils@5.59.7(eslint@8.42.0)(typescript@5.1.6): + resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.59.7(eslint@8.42.0)(typescript@5.1.6) eslint: 8.42.0 transitivePeerDependencies: - supports-color @@ -4901,6 +4669,14 @@ packages: '@typescript-eslint/visitor-keys': 5.59.5 dev: false + /@typescript-eslint/scope-manager@5.59.7: + resolution: {integrity: sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/visitor-keys': 5.59.7 + dev: true + /@typescript-eslint/type-utils@5.59.11(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4930,6 +4706,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false + /@typescript-eslint/types@5.59.7: + resolution: {integrity: sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@typescript-eslint/typescript-estree@5.59.11(typescript@5.1.6): resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4971,6 +4752,27 @@ packages: - supports-color dev: false + /@typescript-eslint/typescript-estree@5.59.7(typescript@5.1.6): + resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/visitor-keys': 5.59.7 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.2 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@5.59.11(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4991,6 +4793,26 @@ packages: - typescript dev: true + /@typescript-eslint/utils@5.59.7(eslint@8.42.0)(typescript@5.1.6): + resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.59.7 + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.1.6) + eslint: 8.42.0 + eslint-scope: 5.1.1 + semver: 7.5.2 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/visitor-keys@5.59.11: resolution: {integrity: sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5006,6 +4828,14 @@ packages: eslint-visitor-keys: 3.4.1 dev: false + /@typescript-eslint/visitor-keys@5.59.7: + resolution: {integrity: sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.7 + eslint-visitor-keys: 3.4.1 + dev: true + /@vanilla-extract/css@1.9.1: resolution: {integrity: sha512-pu2SFiff5jRhPwvGoj8cM5l/qIyLvigOmy22ss5DGjwV5pJYezRjDLxWumi2luIwioMWvh9EozCjyfH8nq+7fQ==} dependencies: @@ -5068,9 +4898,9 @@ packages: '@safe-global/safe-apps-provider': 0.15.2 '@safe-global/safe-apps-sdk': 7.11.0 '@wagmi/chains': 1.1.0(typescript@4.9.5) - '@walletconnect/ethereum-provider': 2.8.0(@walletconnect/modal@2.4.5) + '@walletconnect/ethereum-provider': 2.8.0(@walletconnect/modal@2.5.9) '@walletconnect/legacy-provider': 2.0.0 - '@walletconnect/modal': 2.4.5(react@18.2.0) + '@walletconnect/modal': 2.5.9(react@18.2.0) abitype: 0.8.7(typescript@4.9.5) eventemitter3: 4.0.7 typescript: 4.9.5 @@ -5167,7 +4997,7 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/ethereum-provider@2.8.0(@walletconnect/modal@2.4.5): + /@walletconnect/ethereum-provider@2.8.0(@walletconnect/modal@2.5.9): resolution: {integrity: sha512-nVVJtZUpoeurFjoEPYlrUHkT3YleCpEC9YAMKJyEIB3MZZInttcGxGyi0vwFQ+trCfuX8RrdKUPQ952NvxvCvw==} peerDependencies: '@walletconnect/modal': '>=2' @@ -5179,7 +5009,7 @@ packages: '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/modal': 2.4.5(react@18.2.0) + '@walletconnect/modal': 2.5.9(react@18.2.0) '@walletconnect/sign-client': 2.8.0 '@walletconnect/types': 2.8.0 '@walletconnect/universal-provider': 2.8.0 @@ -5209,6 +5039,17 @@ packages: tslib: 1.14.1 dev: false + /@walletconnect/jsonrpc-http-connection@1.0.6: + resolution: {integrity: sha512-/3zSqDi7JDN06E4qm0NmVYMitngXfh21UWwy8zeJcBeJc+Jcs094EbLsIxtziIIKTCCbT88lWuTjl1ZujxN7cw==} + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + cross-fetch: 3.1.6 + tslib: 1.14.1 + transitivePeerDependencies: + - encoding + dev: false + /@walletconnect/jsonrpc-http-connection@1.0.7: resolution: {integrity: sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==} dependencies: @@ -5292,14 +5133,14 @@ packages: '@walletconnect/legacy-types': 2.0.0 '@walletconnect/legacy-utils': 2.0.0 copy-to-clipboard: 3.3.3 - preact: 10.15.1 + preact: 10.14.1 qrcode: 1.5.3 dev: false /@walletconnect/legacy-provider@2.0.0: resolution: {integrity: sha512-A8xPebMI1A+50HbWwTpFCbwP7G+1NGKdTKyg8BUUg3h3Y9JucpC1W6w/x0v1Xw7qFEqQnz74LoIN/A3ytH9xrQ==} dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.7 + '@walletconnect/jsonrpc-http-connection': 1.0.6 '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/legacy-client': 2.0.0 '@walletconnect/legacy-modal': 2.0.0 @@ -5335,11 +5176,31 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/modal@2.4.5(react@18.2.0): - resolution: {integrity: sha512-t+sII7GIMsKDr0wvSJxzlpcbxw35WthuVpAqPlzMS7roSPmQZT18KO8Iu4ccLkNZF+ioptRTpBUKtk2eeuaqlQ==} + /@walletconnect/modal-core@2.5.9(react@18.2.0): + resolution: {integrity: sha512-isIebwF9hOknGouhS/Ob4YJ9Sa/tqNYG2v6Ua9EkCqIoLimepkG5eC53tslUWW29SLSfQ9qqBNG2+iE7yQXqgw==} + dependencies: + buffer: 6.0.3 + valtio: 1.10.6(react@18.2.0) + transitivePeerDependencies: + - react + dev: false + + /@walletconnect/modal-ui@2.5.9(react@18.2.0): + resolution: {integrity: sha512-nfBaAT9Ls7RZTBBgAq+Nt/3AoUcinIJ9bcq5UHXTV3lOPu/qCKmUC/0HY3GvUK8ykabUAsjr0OAGmcqkB91qug==} + dependencies: + '@walletconnect/modal-core': 2.5.9(react@18.2.0) + lit: 2.7.5 + motion: 10.16.2 + qrcode: 1.5.3 + transitivePeerDependencies: + - react + dev: false + + /@walletconnect/modal@2.5.9(react@18.2.0): + resolution: {integrity: sha512-Zs2RvPwbBNRdBhb50FuJCxi3FJltt1KSpI7odjU/x9GTpTOcSOkmR66PBCy2JvNA0+ztnS1Xs0LVEr3lu7/Jzw==} dependencies: - '@web3modal/core': 2.4.5(react@18.2.0) - '@web3modal/ui': 2.4.5(react@18.2.0) + '@walletconnect/modal-core': 2.5.9(react@18.2.0) + '@walletconnect/modal-ui': 2.5.9(react@18.2.0) transitivePeerDependencies: - react dev: false @@ -5473,26 +5334,6 @@ packages: tslib: 1.14.1 dev: false - /@web3modal/core@2.4.5(react@18.2.0): - resolution: {integrity: sha512-iulOIW2irVaq+xWTzzM2xbRI4TCR0yTnV2Yz+ifIFl+r3OF3ZOC1jsy4jJnKL7/6e7p4NmmKJk0/w951KzCF5g==} - dependencies: - buffer: 6.0.3 - valtio: 1.10.5(react@18.2.0) - transitivePeerDependencies: - - react - dev: false - - /@web3modal/ui@2.4.5(react@18.2.0): - resolution: {integrity: sha512-LvGjGL7vyQrUrrQOtFAK0SyxJs1yozOnJjP7s7gWXJa7wFWCE+kVjrhE8VrKbwx7nHe78IFA1rs7V1ncCirqVQ==} - dependencies: - '@web3modal/core': 2.4.5(react@18.2.0) - lit: 2.7.5 - motion: 10.16.2 - qrcode: 1.5.3 - transitivePeerDependencies: - - react - dev: false - /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -5737,7 +5578,7 @@ packages: /async-mutex@0.2.6: resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} dependencies: - tslib: 2.5.3 + tslib: 2.5.2 dev: false /asynckit@0.4.0: @@ -5753,9 +5594,15 @@ packages: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} + /axe-core@4.7.1: + resolution: {integrity: sha512-sCXXUhA+cljomZ3ZAwb8i1p3oOlkABzPy08ZDAoGcYuvtBPlQ1Ytde129ArXyHWDhfeewq7rlx9F+cUx2SSlkg==} + engines: {node: '>=4'} + dev: false + /axe-core@4.7.2: resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} engines: {node: '>=4'} + dev: true /axios@0.21.4: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} @@ -5780,17 +5627,17 @@ packages: dependencies: deep-equal: 2.2.1 - /babel-jest@29.5.0(@babel/core@7.22.1): + /babel-jest@29.5.0(@babel/core@7.22.5): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.22.1 + '@babel/core': 7.22.5 '@jest/transform': 29.5.0 '@types/babel__core': 7.20.0 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0(@babel/core@7.22.1) + babel-preset-jest: 29.5.0(@babel/core@7.22.5) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -5815,8 +5662,8 @@ packages: resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.21.9 - '@babel/types': 7.22.4 + '@babel/template': 7.22.5 + '@babel/types': 7.22.5 '@types/babel__core': 7.20.0 '@types/babel__traverse': 7.18.5 dev: true @@ -5825,7 +5672,7 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.22.5 + '@babel/runtime': 7.22.3 cosmiconfig: 7.1.0 resolve: 1.22.2 dev: true @@ -5850,7 +5697,7 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.5) - core-js-compat: 3.31.0 + core-js-compat: 3.30.2 transitivePeerDependencies: - supports-color dev: true @@ -5870,35 +5717,35 @@ packages: resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.1): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.5): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.1 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.1) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.1) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.1) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.1) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.1) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.1) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.1) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.1) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.1) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.1) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.1) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.1) - dev: true - - /babel-preset-jest@29.5.0(@babel/core@7.22.1): + '@babel/core': 7.22.5 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5) + dev: true + + /babel-preset-jest@29.5.0(@babel/core@7.22.5): resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.1 + '@babel/core': 7.22.5 babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.1) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) dev: true /babel-preset-react-app@10.0.1: @@ -5906,19 +5753,19 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-proposal-decorators': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-proposal-decorators': 7.22.3(@babel/core@7.22.5) '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.5) '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.5) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.5) '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.22.5) - '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-runtime': 7.22.5(@babel/core@7.22.5) - '@babel/preset-env': 7.22.5(@babel/core@7.22.5) - '@babel/preset-react': 7.22.5(@babel/core@7.22.5) - '@babel/preset-typescript': 7.22.5(@babel/core@7.22.5) - '@babel/runtime': 7.22.5 + '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.22.5) + '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.22.5) + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-transform-runtime': 7.22.4(@babel/core@7.22.5) + '@babel/preset-env': 7.22.4(@babel/core@7.22.5) + '@babel/preset-react': 7.22.3(@babel/core@7.22.5) + '@babel/preset-typescript': 7.21.5(@babel/core@7.22.5) + '@babel/runtime': 7.22.3 babel-plugin-macros: 3.1.0 babel-plugin-transform-react-remove-prop-types: 0.4.24 transitivePeerDependencies: @@ -6023,8 +5870,8 @@ packages: dependencies: fill-range: 7.0.1 - /breakword@1.0.6: - resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} + /breakword@1.0.5: + resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} dependencies: wcwidth: 1.0.1 dev: true @@ -6101,17 +5948,6 @@ packages: electron-to-chromium: 1.4.411 node-releases: 2.0.12 update-browserslist-db: 1.0.11(browserslist@4.21.7) - dev: true - - /browserslist@4.21.8: - resolution: {integrity: sha512-j+7xYe+v+q2Id9qbBeCI8WX5NmZSRe8es1+0xntD/+gaWXznP8tFEkv5IgSaHf5dS1YwVMbX/4W6m937mj+wQw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001502 - electron-to-chromium: 1.4.428 - node-releases: 2.0.12 - update-browserslist-db: 1.0.11(browserslist@4.21.8) /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -6211,10 +6047,6 @@ packages: /caniuse-lite@1.0.30001489: resolution: {integrity: sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==} - dev: true - - /caniuse-lite@1.0.30001502: - resolution: {integrity: sha512-AZ+9tFXw1sS0o0jcpJQIXvFTOB/xGiQ4OQ2t98QX3NDn2EZTSRBC801gxrsGgViuq2ak/NLkNgSNEPtCr5lfKg==} /case@1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} @@ -6497,10 +6329,10 @@ packages: toggle-selection: 1.0.6 dev: false - /core-js-compat@3.31.0: - resolution: {integrity: sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==} + /core-js-compat@3.30.2: + resolution: {integrity: sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA==} dependencies: - browserslist: 4.21.8 + browserslist: 4.21.7 dev: true /core-util-is@1.0.3: @@ -6515,7 +6347,7 @@ packages: vary: 1.1.2 dev: false - /cosmiconfig-typescript-loader@4.3.0(@types/node@18.16.18)(cosmiconfig@8.2.0)(ts-node@10.9.1)(typescript@5.1.3): + /cosmiconfig-typescript-loader@4.3.0(@types/node@18.16.18)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@4.9.5): resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -6525,9 +6357,9 @@ packages: typescript: '>=3' dependencies: '@types/node': 18.16.18 - cosmiconfig: 8.2.0 + cosmiconfig: 8.1.3 ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.1.6) - typescript: 5.1.3 + typescript: 4.9.5 dev: true /cosmiconfig@7.1.0: @@ -6541,8 +6373,8 @@ packages: yaml: 1.10.2 dev: true - /cosmiconfig@8.2.0: - resolution: {integrity: sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==} + /cosmiconfig@8.1.3: + resolution: {integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==} engines: {node: '>=14'} dependencies: import-fresh: 3.3.0 @@ -6724,6 +6556,17 @@ packages: dependencies: ms: 2.1.3 + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -6953,10 +6796,6 @@ packages: /electron-to-chromium@1.4.411: resolution: {integrity: sha512-5VXLW4Qw89vM2WTICHua/y8v7fKGDRVa2VPOtBB9IpLvW316B+xd8yD1wTmLPY2ot/00P/qt87xdolj4aG/Lzg==} - dev: true - - /electron-to-chromium@1.4.428: - resolution: {integrity: sha512-L7uUknyY286of0AYC8CKfgWstD0Smk2DvHDi9F0GWQhSH90Bzi7iDrmCbZKz75tYJxeGSAc7TYeKpmbjMDoh1w==} /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -7154,8 +6993,8 @@ packages: optional: true dependencies: '@babel/core': 7.22.5 - '@babel/eslint-parser': 7.22.5(@babel/core@7.22.5)(eslint@8.42.0) - '@rushstack/eslint-patch': 1.3.1 + '@babel/eslint-parser': 7.21.8(@babel/core@7.22.5)(eslint@8.42.0) + '@rushstack/eslint-patch': 1.3.0 '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6) '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) babel-preset-react-app: 10.0.1 @@ -7300,7 +7139,7 @@ packages: eslint-import-resolver-node: 0.3.7 eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.40.0) has: 1.0.3 - is-core-module: 2.12.1 + is-core-module: 2.12.0 is-glob: 4.0.3 minimatch: 3.1.2 object.values: 1.1.6 @@ -7360,7 +7199,7 @@ packages: optional: true dependencies: '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6) - '@typescript-eslint/experimental-utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.42.0)(typescript@5.1.6) eslint: 8.42.0 transitivePeerDependencies: - supports-color @@ -7373,12 +7212,12 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.21.5 aria-query: 5.1.3 array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 ast-types-flow: 0.0.7 - axe-core: 4.7.2 + axe-core: 4.7.1 axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 @@ -8799,8 +8638,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.22.1 - '@babel/parser': 7.22.4 + '@babel/core': 7.22.5 + '@babel/parser': 7.22.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -8821,7 +8660,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -8836,8 +8675,8 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jayson@4.1.0: - resolution: {integrity: sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==} + /jayson@3.7.0: + resolution: {integrity: sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==} engines: {node: '>=8'} hasBin: true dependencies: @@ -8851,6 +8690,7 @@ packages: eyes: 0.1.8 isomorphic-ws: 4.0.1(ws@7.5.9) json-stringify-safe: 5.0.1 + lodash: 4.17.21 uuid: 8.3.2 ws: 7.5.9 transitivePeerDependencies: @@ -8874,7 +8714,7 @@ packages: '@jest/expect': 29.5.0 '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.2.5 + '@types/node': 18.16.18 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -8922,7 +8762,7 @@ packages: - ts-node dev: true - /jest-config@29.5.0(@types/node@20.2.5)(ts-node@10.9.1): + /jest-config@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -8934,11 +8774,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.22.1 + '@babel/core': 7.22.5 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.2.5 - babel-jest: 29.5.0(@babel/core@7.22.1) + '@types/node': 18.16.18 + babel-jest: 29.5.0(@babel/core@7.22.5) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 @@ -8974,11 +8814,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.22.1 + '@babel/core': 7.22.5 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 '@types/node': 20.3.2 - babel-jest: 29.5.0(@babel/core@7.22.1) + babel-jest: 29.5.0(@babel/core@7.22.5) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 @@ -9037,7 +8877,7 @@ packages: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.2.5 + '@types/node': 18.16.18 jest-mock: 29.5.0 jest-util: 29.5.0 dev: true @@ -9053,7 +8893,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.6 - '@types/node': 20.2.5 + '@types/node': 18.16.18 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -9104,7 +8944,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 20.2.5 + '@types/node': 18.16.18 jest-util: 29.5.0 dev: true @@ -9159,7 +8999,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.2.5 + '@types/node': 18.16.18 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -9190,7 +9030,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.2.5 + '@types/node': 18.16.18 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -9213,10 +9053,10 @@ packages: resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.1 + '@babel/core': 7.22.5 '@babel/generator': 7.21.5 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.1) - '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.1) + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.5) + '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.5) '@babel/traverse': 7.21.5 '@babel/types': 7.21.5 '@jest/expect-utils': 29.5.0 @@ -9224,7 +9064,7 @@ packages: '@jest/types': 29.5.0 '@types/babel__traverse': 7.18.5 '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.1) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) chalk: 4.1.2 expect: 29.5.0 graceful-fs: 4.2.11 @@ -9245,7 +9085,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 20.2.5 + '@types/node': 18.16.18 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -9270,7 +9110,7 @@ packages: dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.2.5 + '@types/node': 18.16.18 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -9282,7 +9122,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.2.5 + '@types/node': 18.16.18 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -9291,7 +9131,7 @@ packages: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.2.5 + '@types/node': 18.16.18 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -9620,7 +9460,7 @@ packages: resolution: {integrity: sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ==} dependencies: '@lit-labs/ssr-dom-shim': 1.1.1 - '@lit/reactive-element': 1.6.2 + '@lit/reactive-element': 1.6.1 lit-html: 2.7.4 dev: false @@ -9633,7 +9473,7 @@ packages: /lit@2.7.5: resolution: {integrity: sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ==} dependencies: - '@lit/reactive-element': 1.6.2 + '@lit/reactive-element': 1.6.1 lit-element: 3.3.2 lit-html: 2.7.4 dev: false @@ -9694,6 +9534,10 @@ packages: resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} dev: true + /lodash.mapvalues@4.6.0: + resolution: {integrity: sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==} + dev: false + /lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} dev: true @@ -9709,6 +9553,10 @@ packages: resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} dev: true + /lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + dev: false + /lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true @@ -9723,7 +9571,6 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true /log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} @@ -10117,7 +9964,7 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.12.1 - semver: 7.5.1 + semver: 7.5.2 validate-npm-package-license: 3.0.4 dev: true @@ -10345,7 +10192,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.22.5 + '@babel/code-frame': 7.21.4 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -10477,8 +10324,8 @@ packages: source-map-js: 1.0.2 dev: false - /preact@10.15.1: - resolution: {integrity: sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g==} + /preact@10.14.1: + resolution: {integrity: sha512-4XDSnUisk3YFBb3p9WeKeH1mKoxdFUsaXcvxs9wlpYR1wax/TWJVqhwmIWbByX0h7jMEJH6Zc5J6jqc58FKaNQ==} dev: false /preferred-pm@3.0.3: @@ -10560,7 +10407,7 @@ packages: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 18.16.7 + '@types/node': 18.16.18 long: 4.0.0 dev: false @@ -10711,7 +10558,7 @@ packages: '@types/react': 18.2.6 react: 18.2.0 react-style-singleton: 2.2.1(@types/react@18.2.6)(react@18.2.0) - tslib: 2.5.3 + tslib: 2.5.2 dev: false /react-remove-scroll@2.5.4(@types/react@18.2.6)(react@18.2.0): @@ -10728,7 +10575,7 @@ packages: react: 18.2.0 react-remove-scroll-bar: 2.3.4(@types/react@18.2.6)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.2.6)(react@18.2.0) - tslib: 2.5.3 + tslib: 2.5.2 use-callback-ref: 1.3.0(@types/react@18.2.6)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.2.6)(react@18.2.0) dev: false @@ -10747,7 +10594,7 @@ packages: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 - tslib: 2.5.3 + tslib: 2.5.2 dev: false /react@18.2.0: @@ -10885,7 +10732,7 @@ packages: /regenerator-transform@0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: - '@babel/runtime': 7.22.5 + '@babel/runtime': 7.22.3 dev: true /regexp.prototype.flags@1.5.0: @@ -11077,7 +10924,7 @@ packages: /rpc-websockets@7.5.1: resolution: {integrity: sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==} dependencies: - '@babel/runtime': 7.22.5 + '@babel/runtime': 7.22.3 eventemitter3: 4.0.7 uuid: 8.3.2 ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) @@ -11101,7 +10948,7 @@ packages: /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.5.3 + tslib: 2.5.2 dev: true /safe-buffer@5.1.2: @@ -11175,6 +11022,7 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 + dev: false /semver@7.5.1: resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} @@ -11183,6 +11031,13 @@ packages: dependencies: lru-cache: 6.0.0 + /semver@7.5.2: + resolution: {integrity: sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + /serialize-javascript@4.0.0: resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} dependencies: @@ -11311,7 +11166,7 @@ packages: hasBin: true dependencies: array.prototype.flat: 1.3.1 - breakword: 1.0.6 + breakword: 1.0.5 grapheme-splitter: 1.0.4 strip-ansi: 6.0.1 wcwidth: 1.0.1 @@ -11733,40 +11588,6 @@ packages: engines: {node: '>=8'} dev: true - /ts-jest@29.1.0(@babel/core@7.22.1)(jest@29.5.0)(typescript@4.9.5): - resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3 <6' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - dependencies: - '@babel/core': 7.22.1 - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@20.3.2)(ts-node@10.9.1) - jest-util: 29.5.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.5.1 - typescript: 4.9.5 - yargs-parser: 21.1.1 - dev: true - /ts-jest@29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11877,8 +11698,8 @@ packages: /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - /tslib@2.5.3: - resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} + /tslib@2.5.2: + resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==} /tsutils@3.21.0(typescript@4.9.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -11994,12 +11815,6 @@ packages: engines: {node: '>=4.2.0'} hasBin: true - /typescript@5.1.3: - resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} - engines: {node: '>=14.17'} - hasBin: true - dev: true - /typescript@5.1.6: resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} engines: {node: '>=14.17'} @@ -12061,17 +11876,6 @@ packages: browserslist: 4.21.7 escalade: 3.1.1 picocolors: 1.0.0 - dev: true - - /update-browserslist-db@1.0.11(browserslist@4.21.8): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.8 - escalade: 3.1.1 - picocolors: 1.0.0 /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -12090,7 +11894,7 @@ packages: dependencies: '@types/react': 18.2.6 react: 18.2.0 - tslib: 2.5.3 + tslib: 2.5.2 dev: false /use-sidecar@1.1.2(@types/react@18.2.6)(react@18.2.0): @@ -12106,7 +11910,7 @@ packages: '@types/react': 18.2.6 detect-node-es: 1.1.0 react: 18.2.0 - tslib: 2.5.3 + tslib: 2.5.2 dev: false /use-sync-external-store@1.2.0(react@18.2.0): @@ -12163,8 +11967,8 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /valtio@1.10.5(react@18.2.0): - resolution: {integrity: sha512-jTp0k63VXf4r5hPoaC6a6LCG4POkVSh629WLi1+d5PlajLsbynTMd7qAgEiOSPxzoX5iNvbN7iZ/k/g29wrNiQ==} + /valtio@1.10.6(react@18.2.0): + resolution: {integrity: sha512-SxN1bHUmdhW6V8qsQTpCgJEwp7uHbntuH0S9cdLQtiohuevwBksbpXjwj5uDMA7bLwg1WKyq9sEpZrx3TIMrkA==} engines: {node: '>=12.20.0'} peerDependencies: react: '>=16.8' From 1948198fdc83f096f9fccdf0257cce2cc5128eaf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 18:51:10 +0800 Subject: [PATCH 073/433] chore: [ci] release (alpha) (#138) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 8108341d..ae371693 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -10,6 +10,7 @@ "changesets": [ "calm-birds-sleep", "grumpy-gorillas-breathe", + "happy-humans-thank", "large-humans-bathe", "old-roses-play", "weak-hounds-sell" diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index d009aaed..1cdc8a91 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.3-alpha.3 + +### Patch Changes + +- Updated dependencies + [[`57a8176`](https://github.com/bnb-chain/greenfield-js-sdk/commit/57a8176be1f8a816003db405e7c07f73170db804)]: + - @bnb-chain/greenfield-chain-sdk@0.2.1-alpha.10 + ## 0.0.3-alpha.2 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 7e6ac352..17d680fd 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.3-alpha.2", + "version": "0.0.3-alpha.3", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index a19c564a..718b0e25 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.6-alpha.3 + +### Patch Changes + +- Updated dependencies + [[`57a8176`](https://github.com/bnb-chain/greenfield-js-sdk/commit/57a8176be1f8a816003db405e7c07f73170db804)]: + - @bnb-chain/greenfield-chain-sdk@0.2.1-alpha.10 + ## 0.0.6-alpha.2 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 3dae99e7..3eeda617 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.6-alpha.2", + "version": "0.0.6-alpha.3", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index bc9aeaeb..ee2cc6b1 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.1-alpha.10 + +### Patch Changes + +- [#137](https://github.com/bnb-chain/greenfield-js-sdk/pull/137) + [`57a8176`](https://github.com/bnb-chain/greenfield-js-sdk/commit/57a8176be1f8a816003db405e7c07f73170db804) + Thanks [@rrr523](https://github.com/rrr523)! - Sort EIP712 message field if send multi messages + ## 0.2.2-alpha.2 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index f06b8b10..6de68edd 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.1-alpha.9", + "version": "0.2.1-alpha.10", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 2b00e7384e62389feffdd224584d0de1db277ee9 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 30 Jun 2023 18:56:07 +0800 Subject: [PATCH 074/433] feat: Bump version (#139) --- .changeset/little-pugs-peel.md | 5 +++++ packages/chain-sdk/package.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/little-pugs-peel.md diff --git a/.changeset/little-pugs-peel.md b/.changeset/little-pugs-peel.md new file mode 100644 index 00000000..7bdbfe6e --- /dev/null +++ b/.changeset/little-pugs-peel.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +bump version diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 6de68edd..83945d88 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.1-alpha.10", + "version": "0.2.2-alpha.2", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 234efdf598d45a67e49bdb75c0f40d2a65dd1b26 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 18:57:31 +0800 Subject: [PATCH 075/433] chore: [ci] release (alpha) (#140) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index ae371693..f7a78fc3 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -12,6 +12,7 @@ "grumpy-gorillas-breathe", "happy-humans-thank", "large-humans-bathe", + "little-pugs-peel", "old-roses-play", "weak-hounds-sell" ] diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 1cdc8a91..3e7b81d0 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.3-alpha.4 + +### Patch Changes + +- Updated dependencies + [[`2b00e73`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2b00e7384e62389feffdd224584d0de1db277ee9)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.3 + ## 0.0.3-alpha.3 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 17d680fd..949d9d49 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.3-alpha.3", + "version": "0.0.3-alpha.4", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 718b0e25..857b7078 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.6-alpha.4 + +### Patch Changes + +- Updated dependencies + [[`2b00e73`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2b00e7384e62389feffdd224584d0de1db277ee9)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.3 + ## 0.0.6-alpha.3 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 3eeda617..b8b9bb2f 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.6-alpha.3", + "version": "0.0.6-alpha.4", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index ee2cc6b1..f58ed4dd 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.2-alpha.3 + +### Patch Changes + +- [#139](https://github.com/bnb-chain/greenfield-js-sdk/pull/139) + [`2b00e73`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2b00e7384e62389feffdd224584d0de1db277ee9) + Thanks [@rrr523](https://github.com/rrr523)! - bump version + ## 0.2.1-alpha.10 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 83945d88..eb56259c 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.2-alpha.2", + "version": "0.2.2-alpha.3", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 07c143f245a1c44b821a2bc75ef9877da3df5d2f Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Sat, 1 Jul 2023 00:08:49 +0800 Subject: [PATCH 076/433] feat: Split approval and simulate (#141) --- .changeset/beige-trainers-knock.md | 5 + examples/nextjs/src/client/index.ts | 2 +- .../src/components/bucket/create/index.tsx | 23 +++- .../src/components/object/create/index.tsx | 19 ++- packages/chain-sdk/src/api/bucket.ts | 69 +++++----- packages/chain-sdk/src/api/objectt.ts | 118 +++++++++++------- packages/chain-sdk/src/types/storage.ts | 2 +- packages/chain-sdk/src/utils/units.ts | 10 +- 8 files changed, 160 insertions(+), 88 deletions(-) create mode 100644 .changeset/beige-trainers-knock.md diff --git a/.changeset/beige-trainers-knock.md b/.changeset/beige-trainers-knock.md new file mode 100644 index 00000000..d0a1b0c8 --- /dev/null +++ b/.changeset/beige-trainers-knock.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +feat: Split approval and simulate diff --git a/examples/nextjs/src/client/index.ts b/examples/nextjs/src/client/index.ts index 606d073e..fa96e959 100644 --- a/examples/nextjs/src/client/index.ts +++ b/examples/nextjs/src/client/index.ts @@ -12,7 +12,7 @@ export const getSps = async () => { export const selectSp = async () => { const finalSps = await getSps(); - const selectIndex = 0; + const selectIndex = 1; const secondarySpAddresses = [ ...finalSps.slice(0, selectIndex), ...finalSps.slice(selectIndex + 1), diff --git a/examples/nextjs/src/components/bucket/create/index.tsx b/examples/nextjs/src/components/bucket/create/index.tsx index bcbf1533..c404cbb7 100644 --- a/examples/nextjs/src/components/bucket/create/index.tsx +++ b/examples/nextjs/src/components/bucket/create/index.tsx @@ -28,7 +28,8 @@ export const CreateBucket = () => { if (!address) return; const spInfo = await selectSp(); - const createBucketTx = await client.bucket.createBucket({ + + const { body: signedMsg } = await client.bucket.getCreateBucketApproval({ bucketName: createBucketInfo.bucketName, creator: address, visibility: 'VISIBILITY_TYPE_PUBLIC_READ', @@ -37,6 +38,20 @@ export const CreateBucket = () => { signType: 'authTypeV2', }); + if (!signedMsg) throw new Error('failed to get approval message'); + + const createBucketTx = await client.bucket.createBucket( + { + bucketName: createBucketInfo.bucketName, + creator: address, + visibility: 'VISIBILITY_TYPE_PUBLIC_READ', + chargedReadQuota: '0', + spInfo, + signType: 'authTypeV2', + }, + signedMsg.primary_sp_approval, + ); + const simulateInfo = await createBucketTx.simulate({ denom: 'BNB', }); @@ -56,10 +71,10 @@ export const CreateBucket = () => { } }} > - broadcast with simulate with authTypeV2 + broadcast with simulate
    - + */} ); }; diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index 2a1f073c..cbf0974b 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -55,7 +55,7 @@ export const CreateObject = () => { const hashResult = await FileHandler.getPieceHashRoots(new Uint8Array(fileBytes)); const { contentLength, expectCheckSums } = hashResult; - const createObjectTx = await client.object.createObject({ + const { body: signedMsg } = await client.object.getCreateObjectApproval({ bucketName: createObjectInfo.bucketName, objectName: createObjectInfo.objectName, spInfo, @@ -63,9 +63,24 @@ export const CreateObject = () => { expectCheckSums, fileType: file.type, creator: address, - signType: 'authTypeV2', }); + if (!signedMsg) throw new Error('failed to get approval message'); + + const createObjectTx = await client.object.createObject( + { + bucketName: createObjectInfo.bucketName, + objectName: createObjectInfo.objectName, + spInfo, + contentLength, + expectCheckSums, + fileType: file.type, + creator: address, + signType: 'authTypeV2', + }, + signedMsg.primary_sp_approval, + ); + const simulateInfo = await createObjectTx.simulate({ denom: 'BNB', }); diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index 0b873460..01a7c269 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -21,6 +21,7 @@ import { } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/query'; import { MsgCreateBucket, + MsgCreateBucketSDKType, MsgDeleteBucket, MsgDeletePolicy, MsgPutPolicy, @@ -31,6 +32,7 @@ import { Headers } from 'cross-fetch'; import Long from 'long'; import { container, delay, inject, singleton } from 'tsyringe'; import { + getApproval, GRNToString, MsgCreateBucketTypeUrl, MsgDeleteBucketTypeUrl, @@ -57,12 +59,17 @@ export interface IBucket { /** * returns the signature info for the approval of preCreating resources */ - getCreateBucketApproval(params: TCreateBucket): Promise>; + getCreateBucketApproval(params: TCreateBucket): Promise>; /** * get approval of creating bucket and send createBucket txn to greenfield chain + * + * if approval is not supply, it will only simulate the txn */ - createBucket(params: TCreateBucket): Promise; + createBucket( + params: TCreateBucket, + approval?: ICreateBucketMsgType['primary_sp_approval'], + ): Promise; /** * query the bucketInfo on chain, return the bucket info if exists @@ -212,59 +219,47 @@ export class Bucket implements IBucket { return { code: 0, message: 'Get create bucket approval success.', - body: signedMsgString, + body: signedMsg, statusCode: status, - signedMsg: signedMsg, }; } catch (error: any) { return { code: -1, message: error.message, statusCode: NORMAL_ERROR_CODE }; } } - private async createBucketTx(msg: MsgCreateBucket, signedMsg: ICreateBucketMsgType) { + public async createBucket( + params: TCreateBucket, + approval?: ICreateBucketMsgType['primary_sp_approval'], + ) { + const primarySpApproval = approval + ? getApproval(approval.expired_height, approval.sig) + : getApproval(`${Number.MAX_VALUE}`, ''); + + const msg: MsgCreateBucket = { + bucketName: params.bucketName, + creator: params.creator, + visibility: visibilityTypeFromJSON(params.visibility), + primarySpAddress: params.spInfo.primarySpAddress, + primarySpApproval: primarySpApproval, + chargedReadQuota: Long.fromString(params.chargedReadQuota), + paymentAddress: '', + }; + return await this.basic.tx( MsgCreateBucketTypeUrl, msg.creator, MsgCreateBucketSDKTypeEIP712, { - ...signedMsg, + ...MsgCreateBucket.toSDK(msg), type: MsgCreateBucketTypeUrl, - charged_read_quota: signedMsg.charged_read_quota, - visibility: signedMsg.visibility, - primary_sp_approval: { - expired_height: signedMsg.primary_sp_approval.expired_height, - sig: signedMsg.primary_sp_approval.sig, - }, + charged_read_quota: params.chargedReadQuota, + visibility: params.visibility, + primary_sp_approval: approval, }, MsgCreateBucket.encode(msg).finish(), ); } - public async createBucket(params: TCreateBucket) { - const { signedMsg } = await this.getCreateBucketApproval(params); - - if (!signedMsg) { - throw new Error('Get create bucket approval error'); - } - - const msg: MsgCreateBucket = { - bucketName: signedMsg.bucket_name, - creator: signedMsg.creator, - visibility: visibilityTypeFromJSON(signedMsg.visibility), - primarySpAddress: signedMsg.primary_sp_address, - primarySpApproval: { - expiredHeight: Long.fromString(signedMsg.primary_sp_approval.expired_height), - sig: bytesFromBase64(signedMsg.primary_sp_approval.sig), - }, - chargedReadQuota: signedMsg.charged_read_quota - ? Long.fromString('0') - : Long.fromString(signedMsg.charged_read_quota), - paymentAddress: '', - }; - - return await this.createBucketTx(msg, signedMsg); - } - public async deleteBucket(msg: MsgDeleteBucket) { return await this.basic.tx( MsgDeleteBucketTypeUrl, diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 5b6270b4..013e2cb1 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -29,6 +29,7 @@ import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { Headers } from 'cross-fetch'; import { container, delay, inject, singleton } from 'tsyringe'; import { + getApproval, GRNToString, MsgCancelCreateObjectTypeUrl, MsgCreateObjectTypeUrl, @@ -61,9 +62,14 @@ import { RpcQueryClient } from './queryclient'; import { Storage } from './storage'; export interface IObject { - getCreateObjectApproval(getApprovalParams: TCreateObject): Promise>; + getCreateObjectApproval( + getApprovalParams: TCreateObject, + ): Promise>; - createObject(getApprovalParams: TCreateObject): Promise; + createObject( + params: TCreateObject, + approval?: ICreateObjectMsgType['primary_sp_approval'], + ): Promise; uploadObject(configParam: TPutObject): Promise>; @@ -214,9 +220,8 @@ export class Objectt implements IObject { return { code: 0, message: 'Get create object approval success.', - body: result.headers.get('X-Gnfd-Signed-Msg') ?? '', + body: signedMsg, statusCode: status, - signedMsg, }; } catch (error: any) { throw { code: -1, message: error.message, statusCode: NORMAL_ERROR_CODE }; @@ -240,28 +245,53 @@ export class Objectt implements IObject { ); } - public async createObject(getApprovalParams: TCreateObject) { - const { signedMsg } = await this.getCreateObjectApproval(getApprovalParams); - if (!signedMsg) { - throw new Error('Get create object approval error'); - } + public async createObject( + params: TCreateObject, + approval?: ICreateObjectMsgType['primary_sp_approval'], + ) { + const primarySpApproval = approval + ? getApproval(approval.expired_height, approval.sig) + : getApproval(`${Number.MAX_VALUE}`, ''); + + const { + bucketName, + creator, + objectName, + fileType, + contentLength, + expectCheckSums, + visibility = 'VISIBILITY_TYPE_PUBLIC_READ', + redundancyType = 'REDUNDANCY_EC_TYPE', + } = params; + const msg: MsgCreateObject = { - bucketName: signedMsg.bucket_name, - creator: signedMsg.creator, - objectName: signedMsg.object_name, - contentType: signedMsg.content_type, - payloadSize: Long.fromString(signedMsg.payload_size), - visibility: visibilityTypeFromJSON(signedMsg.visibility), - expectChecksums: signedMsg.expect_checksums.map((e: string) => bytesFromBase64(e)), - expectSecondarySpAddresses: signedMsg.expect_secondary_sp_addresses, - redundancyType: redundancyTypeFromJSON(signedMsg.redundancy_type), - primarySpApproval: { - expiredHeight: Long.fromString(signedMsg.primary_sp_approval.expired_height), - sig: bytesFromBase64(signedMsg.primary_sp_approval.sig), - }, + bucketName, + creator, + objectName, + contentType: fileType, + payloadSize: Long.fromString(`${contentLength}`), + visibility: visibilityTypeFromJSON(visibility), + expectChecksums: expectCheckSums.map((e: string) => bytesFromBase64(e)), + expectSecondarySpAddresses: params.spInfo.secondarySpAddresses, + redundancyType: redundancyTypeFromJSON(redundancyType), + primarySpApproval, }; - return await this.createObjectTx(msg, signedMsg); + return await this.basic.tx( + MsgCreateObjectTypeUrl, + msg.creator, + MsgCreateObjectSDKTypeEIP712, + { + ...MsgCreateObject.toSDK(msg), + type: MsgCreateObjectTypeUrl, + primary_sp_approval: approval, + expect_checksums: params.expectCheckSums, + payload_size: params.contentLength, + redundancy_type: params.redundancyType, + visibility: params.visibility, + }, + MsgCreateObject.encode(msg).finish(), + ); } public async uploadObject(configParam: TPutObject): Promise> { @@ -536,9 +566,10 @@ export class Objectt implements IObject { } public async createFolder( - getApprovalParams: Omit, + params: Omit, + approval?: ICreateObjectMsgType['primary_sp_approval'], ) { - if (!getApprovalParams.objectName.endsWith('/')) { + if (!params.objectName.endsWith('/')) { throw new Error( 'failed to create folder. Folder names must end with a forward slash (/) character', ); @@ -553,23 +584,26 @@ export class Objectt implements IObject { const { contentLength, expectCheckSums } = hashResult; */ - return this.createObject({ - bucketName: getApprovalParams.bucketName, - objectName: getApprovalParams.objectName, - contentLength: 0, - fileType: 'text/plain', - expectCheckSums: [ - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - ], - creator: getApprovalParams.creator, - spInfo: getApprovalParams.spInfo, - }); + return this.createObject( + { + bucketName: params.bucketName, + objectName: params.objectName, + contentLength: 0, + fileType: 'text/plain', + expectCheckSums: [ + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + ], + creator: params.creator, + spInfo: params.spInfo, + }, + approval, + ); } public async putObjectPolicy( diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index 5c605dd3..f1bd3b0d 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -28,7 +28,7 @@ export type TCreateBucket = ICreateBucketByOffChainAuth | ICreateBucketByAuthTyp export interface ISpInfo { endpoint: string; - primarySpAddress?: string; + primarySpAddress: string; sealAddress: string; secondarySpAddresses: string[]; } diff --git a/packages/chain-sdk/src/utils/units.ts b/packages/chain-sdk/src/utils/units.ts index 5011d8ba..dc7840d7 100644 --- a/packages/chain-sdk/src/utils/units.ts +++ b/packages/chain-sdk/src/utils/units.ts @@ -1,6 +1,7 @@ import { SimulateResponse } from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/service'; +import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { formatEther } from '@ethersproject/units'; -import { ISimulateGasFee } from '..'; +import { ISimulateGasFee, Long } from '..'; export const getGasFeeBySimulate = ( simulateTxInfo: SimulateResponse, @@ -18,3 +19,10 @@ export const getGasFeeBySimulate = ( gasFee: formatEther(String(gasFee)), }; }; + +export const getApproval = (expiredHeight: string, sig: string) => { + return { + expiredHeight: Long.fromString(expiredHeight), + sig: bytesFromBase64(sig), + }; +}; From f7a1c54df614dd7619488cb1698387b8f8273261 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 1 Jul 2023 00:12:00 +0800 Subject: [PATCH 077/433] chore: [ci] release (alpha) (#142) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index f7a78fc3..a05dd327 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -8,6 +8,7 @@ "@bnb-chain/greenfiled-file-handle": "0.2.0" }, "changesets": [ + "beige-trainers-knock", "calm-birds-sleep", "grumpy-gorillas-breathe", "happy-humans-thank", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 3e7b81d0..7c709829 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.3-alpha.5 + +### Patch Changes + +- Updated dependencies + [[`07c143f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/07c143f245a1c44b821a2bc75ef9877da3df5d2f)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.4 + ## 0.0.3-alpha.4 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 949d9d49..d8aa0904 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.3-alpha.4", + "version": "0.0.3-alpha.5", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 857b7078..2a0150ac 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.6-alpha.5 + +### Patch Changes + +- Updated dependencies + [[`07c143f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/07c143f245a1c44b821a2bc75ef9877da3df5d2f)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.4 + ## 0.0.6-alpha.4 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index b8b9bb2f..a15bd8e1 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.6-alpha.4", + "version": "0.0.6-alpha.5", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index f58ed4dd..f4c0f96f 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.2-alpha.4 + +### Patch Changes + +- [#141](https://github.com/bnb-chain/greenfield-js-sdk/pull/141) + [`07c143f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/07c143f245a1c44b821a2bc75ef9877da3df5d2f) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Split approval and simulate + ## 0.2.2-alpha.3 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index eb56259c..761c3802 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.2-alpha.3", + "version": "0.2.2-alpha.4", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 834b71b824b42817194f9fa698102be2e1c94be1 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 4 Jul 2023 16:12:34 +0800 Subject: [PATCH 078/433] Revert "feat: Split approval and simulate" (#143) * Revert "feat: Split approval and simulate" This reverts commit 76defa7f31b7f2d4683f8ed04e8dc2786dd1ef6c. * Create dirty-parrots-hear.md --- .changeset/dirty-parrots-hear.md | 6 + ...trainers-knock.md => old-trainers-shop.md} | 2 +- .../src/components/bucket/create/index.tsx | 23 +--- .../src/components/object/create/index.tsx | 19 +-- packages/chain-sdk/src/api/bucket.ts | 69 +++++----- packages/chain-sdk/src/api/objectt.ts | 118 +++++++----------- packages/chain-sdk/src/types/storage.ts | 2 +- packages/chain-sdk/src/utils/units.ts | 10 +- 8 files changed, 94 insertions(+), 155 deletions(-) create mode 100644 .changeset/dirty-parrots-hear.md rename .changeset/{beige-trainers-knock.md => old-trainers-shop.md} (51%) diff --git a/.changeset/dirty-parrots-hear.md b/.changeset/dirty-parrots-hear.md new file mode 100644 index 00000000..7e0614ba --- /dev/null +++ b/.changeset/dirty-parrots-hear.md @@ -0,0 +1,6 @@ +--- +"@demo/wallet": patch +"@bnb-chain/greenfield-chain-sdk": patch +--- + +Revert "feat: Split approval and simulate" diff --git a/.changeset/beige-trainers-knock.md b/.changeset/old-trainers-shop.md similarity index 51% rename from .changeset/beige-trainers-knock.md rename to .changeset/old-trainers-shop.md index d0a1b0c8..72cd16c6 100644 --- a/.changeset/beige-trainers-knock.md +++ b/.changeset/old-trainers-shop.md @@ -2,4 +2,4 @@ '@bnb-chain/greenfield-chain-sdk': patch --- -feat: Split approval and simulate +revert: create bucket and object need approval diff --git a/examples/nextjs/src/components/bucket/create/index.tsx b/examples/nextjs/src/components/bucket/create/index.tsx index c404cbb7..bcbf1533 100644 --- a/examples/nextjs/src/components/bucket/create/index.tsx +++ b/examples/nextjs/src/components/bucket/create/index.tsx @@ -28,8 +28,7 @@ export const CreateBucket = () => { if (!address) return; const spInfo = await selectSp(); - - const { body: signedMsg } = await client.bucket.getCreateBucketApproval({ + const createBucketTx = await client.bucket.createBucket({ bucketName: createBucketInfo.bucketName, creator: address, visibility: 'VISIBILITY_TYPE_PUBLIC_READ', @@ -38,20 +37,6 @@ export const CreateBucket = () => { signType: 'authTypeV2', }); - if (!signedMsg) throw new Error('failed to get approval message'); - - const createBucketTx = await client.bucket.createBucket( - { - bucketName: createBucketInfo.bucketName, - creator: address, - visibility: 'VISIBILITY_TYPE_PUBLIC_READ', - chargedReadQuota: '0', - spInfo, - signType: 'authTypeV2', - }, - signedMsg.primary_sp_approval, - ); - const simulateInfo = await createBucketTx.simulate({ denom: 'BNB', }); @@ -71,10 +56,10 @@ export const CreateBucket = () => { } }} > - broadcast with simulate + broadcast with simulate with authTypeV2
    - {/* */} + ); }; diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index cbf0974b..2a1f073c 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -55,7 +55,7 @@ export const CreateObject = () => { const hashResult = await FileHandler.getPieceHashRoots(new Uint8Array(fileBytes)); const { contentLength, expectCheckSums } = hashResult; - const { body: signedMsg } = await client.object.getCreateObjectApproval({ + const createObjectTx = await client.object.createObject({ bucketName: createObjectInfo.bucketName, objectName: createObjectInfo.objectName, spInfo, @@ -63,24 +63,9 @@ export const CreateObject = () => { expectCheckSums, fileType: file.type, creator: address, + signType: 'authTypeV2', }); - if (!signedMsg) throw new Error('failed to get approval message'); - - const createObjectTx = await client.object.createObject( - { - bucketName: createObjectInfo.bucketName, - objectName: createObjectInfo.objectName, - spInfo, - contentLength, - expectCheckSums, - fileType: file.type, - creator: address, - signType: 'authTypeV2', - }, - signedMsg.primary_sp_approval, - ); - const simulateInfo = await createObjectTx.simulate({ denom: 'BNB', }); diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index 01a7c269..0b873460 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -21,7 +21,6 @@ import { } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/query'; import { MsgCreateBucket, - MsgCreateBucketSDKType, MsgDeleteBucket, MsgDeletePolicy, MsgPutPolicy, @@ -32,7 +31,6 @@ import { Headers } from 'cross-fetch'; import Long from 'long'; import { container, delay, inject, singleton } from 'tsyringe'; import { - getApproval, GRNToString, MsgCreateBucketTypeUrl, MsgDeleteBucketTypeUrl, @@ -59,17 +57,12 @@ export interface IBucket { /** * returns the signature info for the approval of preCreating resources */ - getCreateBucketApproval(params: TCreateBucket): Promise>; + getCreateBucketApproval(params: TCreateBucket): Promise>; /** * get approval of creating bucket and send createBucket txn to greenfield chain - * - * if approval is not supply, it will only simulate the txn */ - createBucket( - params: TCreateBucket, - approval?: ICreateBucketMsgType['primary_sp_approval'], - ): Promise; + createBucket(params: TCreateBucket): Promise; /** * query the bucketInfo on chain, return the bucket info if exists @@ -219,47 +212,59 @@ export class Bucket implements IBucket { return { code: 0, message: 'Get create bucket approval success.', - body: signedMsg, + body: signedMsgString, statusCode: status, + signedMsg: signedMsg, }; } catch (error: any) { return { code: -1, message: error.message, statusCode: NORMAL_ERROR_CODE }; } } - public async createBucket( - params: TCreateBucket, - approval?: ICreateBucketMsgType['primary_sp_approval'], - ) { - const primarySpApproval = approval - ? getApproval(approval.expired_height, approval.sig) - : getApproval(`${Number.MAX_VALUE}`, ''); - - const msg: MsgCreateBucket = { - bucketName: params.bucketName, - creator: params.creator, - visibility: visibilityTypeFromJSON(params.visibility), - primarySpAddress: params.spInfo.primarySpAddress, - primarySpApproval: primarySpApproval, - chargedReadQuota: Long.fromString(params.chargedReadQuota), - paymentAddress: '', - }; - + private async createBucketTx(msg: MsgCreateBucket, signedMsg: ICreateBucketMsgType) { return await this.basic.tx( MsgCreateBucketTypeUrl, msg.creator, MsgCreateBucketSDKTypeEIP712, { - ...MsgCreateBucket.toSDK(msg), + ...signedMsg, type: MsgCreateBucketTypeUrl, - charged_read_quota: params.chargedReadQuota, - visibility: params.visibility, - primary_sp_approval: approval, + charged_read_quota: signedMsg.charged_read_quota, + visibility: signedMsg.visibility, + primary_sp_approval: { + expired_height: signedMsg.primary_sp_approval.expired_height, + sig: signedMsg.primary_sp_approval.sig, + }, }, MsgCreateBucket.encode(msg).finish(), ); } + public async createBucket(params: TCreateBucket) { + const { signedMsg } = await this.getCreateBucketApproval(params); + + if (!signedMsg) { + throw new Error('Get create bucket approval error'); + } + + const msg: MsgCreateBucket = { + bucketName: signedMsg.bucket_name, + creator: signedMsg.creator, + visibility: visibilityTypeFromJSON(signedMsg.visibility), + primarySpAddress: signedMsg.primary_sp_address, + primarySpApproval: { + expiredHeight: Long.fromString(signedMsg.primary_sp_approval.expired_height), + sig: bytesFromBase64(signedMsg.primary_sp_approval.sig), + }, + chargedReadQuota: signedMsg.charged_read_quota + ? Long.fromString('0') + : Long.fromString(signedMsg.charged_read_quota), + paymentAddress: '', + }; + + return await this.createBucketTx(msg, signedMsg); + } + public async deleteBucket(msg: MsgDeleteBucket) { return await this.basic.tx( MsgDeleteBucketTypeUrl, diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 013e2cb1..5b6270b4 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -29,7 +29,6 @@ import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { Headers } from 'cross-fetch'; import { container, delay, inject, singleton } from 'tsyringe'; import { - getApproval, GRNToString, MsgCancelCreateObjectTypeUrl, MsgCreateObjectTypeUrl, @@ -62,14 +61,9 @@ import { RpcQueryClient } from './queryclient'; import { Storage } from './storage'; export interface IObject { - getCreateObjectApproval( - getApprovalParams: TCreateObject, - ): Promise>; + getCreateObjectApproval(getApprovalParams: TCreateObject): Promise>; - createObject( - params: TCreateObject, - approval?: ICreateObjectMsgType['primary_sp_approval'], - ): Promise; + createObject(getApprovalParams: TCreateObject): Promise; uploadObject(configParam: TPutObject): Promise>; @@ -220,8 +214,9 @@ export class Objectt implements IObject { return { code: 0, message: 'Get create object approval success.', - body: signedMsg, + body: result.headers.get('X-Gnfd-Signed-Msg') ?? '', statusCode: status, + signedMsg, }; } catch (error: any) { throw { code: -1, message: error.message, statusCode: NORMAL_ERROR_CODE }; @@ -245,53 +240,28 @@ export class Objectt implements IObject { ); } - public async createObject( - params: TCreateObject, - approval?: ICreateObjectMsgType['primary_sp_approval'], - ) { - const primarySpApproval = approval - ? getApproval(approval.expired_height, approval.sig) - : getApproval(`${Number.MAX_VALUE}`, ''); - - const { - bucketName, - creator, - objectName, - fileType, - contentLength, - expectCheckSums, - visibility = 'VISIBILITY_TYPE_PUBLIC_READ', - redundancyType = 'REDUNDANCY_EC_TYPE', - } = params; - + public async createObject(getApprovalParams: TCreateObject) { + const { signedMsg } = await this.getCreateObjectApproval(getApprovalParams); + if (!signedMsg) { + throw new Error('Get create object approval error'); + } const msg: MsgCreateObject = { - bucketName, - creator, - objectName, - contentType: fileType, - payloadSize: Long.fromString(`${contentLength}`), - visibility: visibilityTypeFromJSON(visibility), - expectChecksums: expectCheckSums.map((e: string) => bytesFromBase64(e)), - expectSecondarySpAddresses: params.spInfo.secondarySpAddresses, - redundancyType: redundancyTypeFromJSON(redundancyType), - primarySpApproval, + bucketName: signedMsg.bucket_name, + creator: signedMsg.creator, + objectName: signedMsg.object_name, + contentType: signedMsg.content_type, + payloadSize: Long.fromString(signedMsg.payload_size), + visibility: visibilityTypeFromJSON(signedMsg.visibility), + expectChecksums: signedMsg.expect_checksums.map((e: string) => bytesFromBase64(e)), + expectSecondarySpAddresses: signedMsg.expect_secondary_sp_addresses, + redundancyType: redundancyTypeFromJSON(signedMsg.redundancy_type), + primarySpApproval: { + expiredHeight: Long.fromString(signedMsg.primary_sp_approval.expired_height), + sig: bytesFromBase64(signedMsg.primary_sp_approval.sig), + }, }; - return await this.basic.tx( - MsgCreateObjectTypeUrl, - msg.creator, - MsgCreateObjectSDKTypeEIP712, - { - ...MsgCreateObject.toSDK(msg), - type: MsgCreateObjectTypeUrl, - primary_sp_approval: approval, - expect_checksums: params.expectCheckSums, - payload_size: params.contentLength, - redundancy_type: params.redundancyType, - visibility: params.visibility, - }, - MsgCreateObject.encode(msg).finish(), - ); + return await this.createObjectTx(msg, signedMsg); } public async uploadObject(configParam: TPutObject): Promise> { @@ -566,10 +536,9 @@ export class Objectt implements IObject { } public async createFolder( - params: Omit, - approval?: ICreateObjectMsgType['primary_sp_approval'], + getApprovalParams: Omit, ) { - if (!params.objectName.endsWith('/')) { + if (!getApprovalParams.objectName.endsWith('/')) { throw new Error( 'failed to create folder. Folder names must end with a forward slash (/) character', ); @@ -584,26 +553,23 @@ export class Objectt implements IObject { const { contentLength, expectCheckSums } = hashResult; */ - return this.createObject( - { - bucketName: params.bucketName, - objectName: params.objectName, - contentLength: 0, - fileType: 'text/plain', - expectCheckSums: [ - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - ], - creator: params.creator, - spInfo: params.spInfo, - }, - approval, - ); + return this.createObject({ + bucketName: getApprovalParams.bucketName, + objectName: getApprovalParams.objectName, + contentLength: 0, + fileType: 'text/plain', + expectCheckSums: [ + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + ], + creator: getApprovalParams.creator, + spInfo: getApprovalParams.spInfo, + }); } public async putObjectPolicy( diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index f1bd3b0d..5c605dd3 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -28,7 +28,7 @@ export type TCreateBucket = ICreateBucketByOffChainAuth | ICreateBucketByAuthTyp export interface ISpInfo { endpoint: string; - primarySpAddress: string; + primarySpAddress?: string; sealAddress: string; secondarySpAddresses: string[]; } diff --git a/packages/chain-sdk/src/utils/units.ts b/packages/chain-sdk/src/utils/units.ts index dc7840d7..5011d8ba 100644 --- a/packages/chain-sdk/src/utils/units.ts +++ b/packages/chain-sdk/src/utils/units.ts @@ -1,7 +1,6 @@ import { SimulateResponse } from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/service'; -import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { formatEther } from '@ethersproject/units'; -import { ISimulateGasFee, Long } from '..'; +import { ISimulateGasFee } from '..'; export const getGasFeeBySimulate = ( simulateTxInfo: SimulateResponse, @@ -19,10 +18,3 @@ export const getGasFeeBySimulate = ( gasFee: formatEther(String(gasFee)), }; }; - -export const getApproval = (expiredHeight: string, sig: string) => { - return { - expiredHeight: Long.fromString(expiredHeight), - sig: bytesFromBase64(sig), - }; -}; From a04359525f8cea8181cc3d03c31b166b6ad51089 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 16:15:21 +0800 Subject: [PATCH 079/433] chore: [ci] release (alpha) (#144) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 3 ++- examples/nextjs/CHANGELOG.md | 13 +++++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 9 +++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 12 ++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 39 insertions(+), 4 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index a05dd327..a256debd 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -8,13 +8,14 @@ "@bnb-chain/greenfiled-file-handle": "0.2.0" }, "changesets": [ - "beige-trainers-knock", "calm-birds-sleep", + "dirty-parrots-hear", "grumpy-gorillas-breathe", "happy-humans-thank", "large-humans-bathe", "little-pugs-peel", "old-roses-play", + "old-trainers-shop", "weak-hounds-sell" ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 7c709829..ef4f639c 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,18 @@ # @demo/wallet +## 0.0.3-alpha.6 + +### Patch Changes + +- [#143](https://github.com/bnb-chain/greenfield-js-sdk/pull/143) + [`834b71b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/834b71b824b42817194f9fa698102be2e1c94be1) + Thanks [@rrr523](https://github.com/rrr523)! - Revert "feat: Split approval and simulate" + +- Updated dependencies + [[`834b71b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/834b71b824b42817194f9fa698102be2e1c94be1), + [`834b71b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/834b71b824b42817194f9fa698102be2e1c94be1)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.5 + ## 0.0.3-alpha.5 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index d8aa0904..149891ca 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.3-alpha.5", + "version": "0.0.3-alpha.6", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 2a0150ac..4cfcd764 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/nodejs +## 0.0.6-alpha.6 + +### Patch Changes + +- Updated dependencies + [[`834b71b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/834b71b824b42817194f9fa698102be2e1c94be1), + [`834b71b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/834b71b824b42817194f9fa698102be2e1c94be1)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.5 + ## 0.0.6-alpha.5 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index a15bd8e1..32f5c442 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.6-alpha.5", + "version": "0.0.6-alpha.6", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index f4c0f96f..b0aecad4 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.2-alpha.5 + +### Patch Changes + +- [#143](https://github.com/bnb-chain/greenfield-js-sdk/pull/143) + [`834b71b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/834b71b824b42817194f9fa698102be2e1c94be1) + Thanks [@rrr523](https://github.com/rrr523)! - Revert "feat: Split approval and simulate" + +- [#143](https://github.com/bnb-chain/greenfield-js-sdk/pull/143) + [`834b71b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/834b71b824b42817194f9fa698102be2e1c94be1) + Thanks [@rrr523](https://github.com/rrr523)! - revert: create bucket and object need approval + ## 0.2.2-alpha.4 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 761c3802..ab8ad591 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.2-alpha.4", + "version": "0.2.2-alpha.5", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From ff195a847cffc0e947d0dc3b1cf34288946378be Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 7 Jul 2023 11:25:12 +0800 Subject: [PATCH 080/433] Chore/test case (#145) * chore(test): Remove private key from config * chore: Test CI --- .github/workflows/test.yaml | 16 -- .gitignore | 1 + packages/chain-sdk/package.json | 1 + packages/chain-sdk/src/tests/.env.simple.ts | 7 + packages/chain-sdk/src/tests/config.spec.ts | 15 +- packages/chain-sdk/src/tests/group.spec.ts | 80 ------- packages/chain-sdk/src/tests/policy.spec.ts | 102 +++++++++ pnpm-lock.yaml | 233 ++++++-------------- 8 files changed, 181 insertions(+), 274 deletions(-) delete mode 100644 .github/workflows/test.yaml create mode 100644 packages/chain-sdk/src/tests/.env.simple.ts delete mode 100644 packages/chain-sdk/src/tests/group.spec.ts create mode 100644 packages/chain-sdk/src/tests/policy.spec.ts diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml deleted file mode 100644 index 9fbd6f71..00000000 --- a/.github/workflows/test.yaml +++ /dev/null @@ -1,16 +0,0 @@ -name: Tests -on: [push, pull_request] - -jobs: - run-tests: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: ./.github/actions/ci-setup - - - name: Build - run: pnpm -F "@bnb-chain/**" build - - - run: pnpm install - - run: pnpm -F "@bnb-chain/**" run test diff --git a/.gitignore b/.gitignore index 130bbab7..880b0fcc 100644 --- a/.gitignore +++ b/.gitignore @@ -74,6 +74,7 @@ web_modules/ # dotenv environment variables file .env .env.test +.env.ts # parcel-bundler cache (https://parceljs.org/) .cache diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index ab8ad591..25b4965b 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -65,6 +65,7 @@ "@metamask/eth-sig-util": "^5.0.2", "cross-fetch": "^3.1.6", "dayjs": "^1.11.7", + "dotenv": "^16.0.3", "ethereum-cryptography": "^2.0.0", "lodash.mapvalues": "^4.6.0", "lodash.sortby": "^4.7.0", diff --git a/packages/chain-sdk/src/tests/.env.simple.ts b/packages/chain-sdk/src/tests/.env.simple.ts new file mode 100644 index 00000000..b7dcca0e --- /dev/null +++ b/packages/chain-sdk/src/tests/.env.simple.ts @@ -0,0 +1,7 @@ +export const ACCOUNT_ADDRESS = ''; +export const ACCOUNT_PRIVATEKEY = ''; +export const BSC_RPC_URL = ''; +export const BSC_CHAIN_ID = ''; +export const GRPC_URL = ''; +export const GREENFIELD_URL = ''; +export const GREENFIELD_CHAIN_ID = ''; diff --git a/packages/chain-sdk/src/tests/config.spec.ts b/packages/chain-sdk/src/tests/config.spec.ts index 3924e1ca..fca62505 100644 --- a/packages/chain-sdk/src/tests/config.spec.ts +++ b/packages/chain-sdk/src/tests/config.spec.ts @@ -1,21 +1,12 @@ import { Client } from '..'; import { ISimulateGasFee } from '../types'; - -export const BSC_RPC_URL = 'https://data-seed-prebsc-1-s1.binance.org:8545'; -export const BSC_CHAIN_ID = '97'; -// export const GRPC_URL = 'https://gnfd.qa.bnbchain.world'; -// export const GREENFIELD_URL = 'https://gnfd.qa.bnbchain.world'; -// export const GREENFIELD_CHAIN_ID = '9000'; - -export const GRPC_URL = 'https://gnfd-testnet-fullnode-tendermint-us.bnbchain.org'; -export const GREENFIELD_URL = 'https://gnfd-testnet-fullnode-tendermint-us.bnbchain.org'; -export const GREENFIELD_CHAIN_ID = '5600'; +import { ACCOUNT_ADDRESS, ACCOUNT_PRIVATEKEY, GREENFIELD_CHAIN_ID, GRPC_URL } from './.env'; export const client = Client.create(GRPC_URL, GREENFIELD_CHAIN_ID); export const ACCOUNT = { - address: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', - privateKey: '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032', + address: ACCOUNT_ADDRESS, + privateKey: ACCOUNT_PRIVATEKEY, }; export const ZERO_ACCOUNT_ADDRESS = '0x0000000000000000000000000000000000000000'; diff --git a/packages/chain-sdk/src/tests/group.spec.ts b/packages/chain-sdk/src/tests/group.spec.ts deleted file mode 100644 index b1a17112..00000000 --- a/packages/chain-sdk/src/tests/group.spec.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { describe, expect, test } from '@jest/globals'; -import { Client } from '../client'; -import { ACCOUNT, GREENFIELD_CHAIN_ID, GRPC_URL, ZERO_ACCOUNT_ADDRESS } from './config.spec'; - -const client = Client.create(GRPC_URL, GREENFIELD_CHAIN_ID); - -describe('groupTx', () => { - describe('createGroup', () => { - test('simulate works', async () => { - const createGroupTx = await client.group.createGroup({ - creator: ACCOUNT.address, - extra: 'extra init', - groupName: 'group name', - members: [ACCOUNT.address], - }); - - const simulateInfo = createGroupTx.simulate({ - denom: 'BNB', - }); - - expect(simulateInfo).not.toBeNull(); - - // console.log(simulateInfo); - }); - - // test('broadcast works', async () => { - // const transferTx = await makeTransferTx(); - // const broadcastInfo = await transferTx.broadcast({ - // denom: 'BNB', - // gasLimit: Number(simulateInfo.gasLimit), - // gasPrice: simulateInfo.gasPrice, - // granter: '', - // payer: ACCOUNT.address, - // privateKey: ACCOUNT.privateKey, - // }); - - // expect(broadcastInfo.code).toEqual(0); - // }); - }); -}); - -async function makeMultiTransferTx() { - return await client.account.multiTransfer(ACCOUNT.address, { - inputs: [ - { - address: ACCOUNT.address, - coins: [ - { - amount: '10', - denom: 'BNB', - }, - ], - }, - ], - outputs: [ - { - address: ZERO_ACCOUNT_ADDRESS, - coins: [ - { - amount: '10', - denom: 'BNB', - }, - ], - }, - ], - }); -} - -async function makeTransferTx() { - return await client.account.transfer({ - amount: [ - { - amount: '10', - denom: 'BNB', - }, - ], - fromAddress: ACCOUNT.address, - toAddress: ZERO_ACCOUNT_ADDRESS, - }); -} diff --git a/packages/chain-sdk/src/tests/policy.spec.ts b/packages/chain-sdk/src/tests/policy.spec.ts new file mode 100644 index 00000000..e21f1097 --- /dev/null +++ b/packages/chain-sdk/src/tests/policy.spec.ts @@ -0,0 +1,102 @@ +import { describe, expect, test } from '@jest/globals'; +import { ACCOUNT, client, generateString } from './config.spec'; + +const GROUP_NAME = generateString(10); +const EXTRA = generateString(10); + +describe('groupTx', () => { + describe('createGroupTx', () => { + // eslint-disable-next-line no-console + console.log('group name', GROUP_NAME); + // eslint-disable-next-line no-console + console.log('extra', EXTRA); + + test('create group', async () => { + const createGroupTx = await client.group.createGroup({ + creator: ACCOUNT.address, + extra: EXTRA, + groupName: GROUP_NAME, + members: [ACCOUNT.address], + }); + + const simulateInfo = await createGroupTx.simulate({ + denom: 'BNB', + }); + + expect(simulateInfo).not.toBeNull(); + + const res = await createGroupTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo.gasLimit), + gasPrice: simulateInfo.gasPrice, + granter: '', + payer: ACCOUNT.address, + privateKey: ACCOUNT.privateKey, + }); + + expect(res.code).toEqual(0); + }, 300000); + + test('group info', async () => { + const { groupInfo } = await client.group.headGroup(GROUP_NAME, ACCOUNT.address); + + expect(groupInfo?.groupName).toEqual(GROUP_NAME); + expect(groupInfo?.extra).toEqual(EXTRA); + }, 300000); + }); + + describe('updateGroupTx', () => { + test('update group name', async () => { + const newExtra = generateString(10); + const updateGroupTx = await client.group.updateGroupExtra({ + groupName: GROUP_NAME, + groupOwner: ACCOUNT.address, + operator: ACCOUNT.address, + extra: newExtra, + }); + + const simulateInfo = await updateGroupTx.simulate({ + denom: 'BNB', + }); + + expect(simulateInfo).not.toBeNull(); + + const res = await updateGroupTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo.gasLimit), + gasPrice: simulateInfo.gasPrice, + granter: '', + payer: ACCOUNT.address, + privateKey: ACCOUNT.privateKey, + }); + + expect(res.code).toEqual(0); + }); + }); + + describe('deleteGroupTx', () => { + test('delete group', async () => { + const deleteGroupTx = await client.group.deleteGroup({ + groupName: GROUP_NAME, + operator: ACCOUNT.address, + }); + + const simulateInfo = await deleteGroupTx.simulate({ + denom: 'BNB', + }); + + expect(simulateInfo).not.toBeNull(); + + const res = await deleteGroupTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo.gasLimit), + gasPrice: simulateInfo.gasPrice, + granter: '', + payer: ACCOUNT.address, + privateKey: ACCOUNT.privateKey, + }); + + expect(res.code).toEqual(0); + }, 30000); + }); +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 22a61971..cf96f85f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,7 +43,7 @@ importers: version: 3.0.2(rollup@2.79.1) '@rollup/plugin-typescript': specifier: ^8.5.0 - version: 8.5.0(rollup@2.79.1)(typescript@5.1.6) + version: 8.5.0(rollup@2.79.1)(typescript@4.9.5) '@types/chai': specifier: ^4.3.5 version: 4.3.5 @@ -61,10 +61,10 @@ importers: version: 18.2.5 '@typescript-eslint/eslint-plugin': specifier: ^5.59.11 - version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6) + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) '@typescript-eslint/parser': specifier: ^5.59.11 - version: 5.59.11(eslint@8.42.0)(typescript@5.1.6) + version: 5.59.11(eslint@8.42.0)(typescript@4.9.5) chai: specifier: ^4.3.7 version: 4.3.7 @@ -76,7 +76,7 @@ importers: version: 8.42.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@5.1.6) + version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@4.9.5) eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.1(eslint@8.42.0)(prettier@2.8.8) @@ -229,6 +229,9 @@ importers: dayjs: specifier: ^1.11.7 version: 1.11.7 + dotenv: + specifier: ^16.0.3 + version: 16.0.3 ethereum-cryptography: specifier: ^2.0.0 version: 2.0.0 @@ -265,7 +268,7 @@ importers: version: 3.0.1 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@20.3.2)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) mime: specifier: ^3.0.0 version: 3.0.0 @@ -289,7 +292,7 @@ importers: version: 29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.3.2)(typescript@4.9.5) + version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.0 @@ -310,7 +313,7 @@ importers: version: 29.5.1 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@20.3.2)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) rollup: specifier: ^2.79.1 version: 2.79.1 @@ -334,7 +337,7 @@ importers: version: 29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.3.2)(typescript@4.9.5) + version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.0 @@ -394,7 +397,7 @@ packages: '@babel/traverse': 7.22.5 '@babel/types': 7.22.5 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 @@ -1893,7 +1896,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.5 '@babel/parser': 7.22.5 '@babel/types': 7.22.5 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -1911,7 +1914,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.5 '@babel/parser': 7.22.5 '@babel/types': 7.22.5 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2296,7 +2299,7 @@ packages: lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.1.6) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -3934,7 +3937,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-typescript@8.5.0(rollup@2.79.1)(typescript@5.1.6): + /@rollup/plugin-typescript@8.5.0(rollup@2.79.1)(typescript@4.9.5): resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} engines: {node: '>=8.0.0'} peerDependencies: @@ -3948,7 +3951,7 @@ packages: '@rollup/pluginutils': 3.1.0(rollup@2.79.1) resolve: 1.22.2 rollup: 2.79.1 - typescript: 5.1.6 + typescript: 4.9.5 dev: true /@rollup/plugin-wasm@6.1.2(rollup@2.79.1): @@ -4466,10 +4469,6 @@ packages: resolution: {integrity: sha512-MFg7ua/bRtnA1hYE3pVyWxGd/r7aMqjNOdHvlSsXV3n8iaeGKkOaPzpJh6/ovf4bEXWcojkeMJpTsq3mzXW4IQ==} dev: false - /@types/node@20.3.2: - resolution: {integrity: sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==} - dev: true - /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -4574,7 +4573,7 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6): + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4586,36 +4585,36 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/type-utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) eslint: 8.42.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.1 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.59.7(eslint@8.42.0)(typescript@5.1.6): + /@typescript-eslint/experimental-utils@5.59.7(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.7(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.59.7(eslint@8.42.0)(typescript@4.9.5) eslint: 8.42.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser@5.59.11(eslint@8.42.0)(typescript@5.1.6): + /@typescript-eslint/parser@5.59.11(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4627,10 +4626,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) eslint: 8.42.0 - typescript: 5.1.6 + typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -4677,7 +4676,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.7 dev: true - /@typescript-eslint/type-utils@5.59.11(eslint@8.42.0)(typescript@5.1.6): + /@typescript-eslint/type-utils@5.59.11(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4687,12 +4686,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.6) - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) eslint: 8.42.0 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true @@ -4711,7 +4710,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.59.11(typescript@5.1.6): + /@typescript-eslint/typescript-estree@5.59.11(typescript@4.9.5): resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4726,8 +4725,8 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.1 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -4752,7 +4751,7 @@ packages: - supports-color dev: false - /@typescript-eslint/typescript-estree@5.59.7(typescript@5.1.6): + /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4767,13 +4766,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.2 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.11(eslint@8.42.0)(typescript@5.1.6): + /@typescript-eslint/utils@5.59.11(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4784,7 +4783,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) eslint: 8.42.0 eslint-scope: 5.1.1 semver: 7.5.1 @@ -4793,7 +4792,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.59.7(eslint@8.42.0)(typescript@5.1.6): + /@typescript-eslint/utils@5.59.7(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4804,7 +4803,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.7 '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) eslint: 8.42.0 eslint-scope: 5.1.1 semver: 7.5.2 @@ -6358,7 +6357,7 @@ packages: dependencies: '@types/node': 18.16.18 cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.1.6) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) typescript: 4.9.5 dev: true @@ -6556,17 +6555,6 @@ packages: dependencies: ms: 2.1.3 - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -6764,7 +6752,6 @@ packages: /dotenv@16.0.3: resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} engines: {node: '>=12'} - dev: true /dotenv@8.6.0: resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} @@ -6982,7 +6969,7 @@ packages: - supports-color dev: false - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@5.1.6): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6995,19 +6982,19 @@ packages: '@babel/core': 7.22.5 '@babel/eslint-parser': 7.21.8(@babel/core@7.22.5)(eslint@8.42.0) '@rushstack/eslint-patch': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6) - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.42.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0) eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.42.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@5.1.6) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@4.9.5) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.42.0) eslint-plugin-react: 7.32.2(eslint@8.42.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.42.0) - eslint-plugin-testing-library: 5.11.0(eslint@8.42.0)(typescript@5.1.6) - typescript: 5.1.6 + eslint-plugin-testing-library: 5.11.0(eslint@8.42.0)(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -7067,7 +7054,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) debug: 3.2.7 eslint: 8.40.0 eslint-import-resolver-node: 0.3.7 @@ -7096,7 +7083,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) debug: 3.2.7 eslint: 8.42.0 eslint-import-resolver-node: 0.3.7 @@ -7129,7 +7116,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -7162,7 +7149,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -7185,7 +7172,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@5.1.6): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -7198,8 +7185,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6) - '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.42.0)(typescript@4.9.5) eslint: 8.42.0 transitivePeerDependencies: - supports-color @@ -7338,13 +7325,13 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library@5.11.0(eslint@8.42.0)(typescript@5.1.6): + /eslint-plugin-testing-library@5.11.0(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) eslint: 8.42.0 transitivePeerDependencies: - supports-color @@ -8660,7 +8647,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -8734,7 +8721,7 @@ packages: - supports-color dev: true - /jest-cli@29.5.0(@types/node@20.3.2)(ts-node@10.9.1): + /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -8751,7 +8738,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@20.3.2)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -8797,47 +8784,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.3.2)(typescript@4.9.5) - transitivePeerDependencies: - - supports-color - dev: true - - /jest-config@29.5.0(@types/node@20.3.2)(ts-node@10.9.1): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.22.5 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.3.2 - babel-jest: 29.5.0(@babel/core@7.22.5) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.3.2)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true @@ -9137,7 +9084,7 @@ packages: supports-color: 8.1.1 dev: true - /jest@29.5.0(@types/node@20.3.2)(ts-node@10.9.1): + /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -9150,7 +9097,7 @@ packages: '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@20.3.2)(ts-node@10.9.1) + jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color @@ -11612,7 +11559,7 @@ packages: '@babel/core': 7.22.5 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@20.3.2)(ts-node@10.9.1) + jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -11622,7 +11569,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.16.18)(typescript@5.1.6): + /ts-node@10.9.1(@types/node@18.16.18)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -11648,37 +11595,6 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.1.6 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - - /ts-node@10.9.1(@types/node@20.3.2)(typescript@4.9.5): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 20.3.2 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -11709,16 +11625,6 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 - dev: false - - /tsutils@3.21.0(typescript@5.1.6): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.1.6 /tsyringe@4.7.0: resolution: {integrity: sha512-ncFDM1jTLsok4ejMvSW5jN1VGPQD48y2tfAR0pdptWRKYX4bkbqPt92k7KJ5RFJ1KV36JEs/+TMh7I6OUgj74g==} @@ -11815,11 +11721,6 @@ packages: engines: {node: '>=4.2.0'} hasBin: true - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} - engines: {node: '>=14.17'} - hasBin: true - /uint8arrays@3.1.1: resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} dependencies: From 9e0a0e90646c745b38f5f2fa7a660c0ef45b9a99 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 7 Jul 2023 14:00:36 +0800 Subject: [PATCH 081/433] chore: Update rainkit version (#146) --- examples/nextjs/package.json | 2 +- pnpm-lock.yaml | 363 ++++++++++++++++++++++++++++------- 2 files changed, 295 insertions(+), 70 deletions(-) diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 149891ca..273aab92 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -19,7 +19,7 @@ "@ethersproject/signing-key": "^5.7.0", "@metamask/eth-sig-util": "^5.0.2", "@next/font": "13.1.6", - "@rainbow-me/rainbowkit": "^1.0.2", + "@rainbow-me/rainbowkit": "^1.0.5", "@types/node": "^18.7.1", "@types/react": "^18.0.17", "@types/react-dom": "^18.0.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cf96f85f..a4d9d846 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,7 +43,7 @@ importers: version: 3.0.2(rollup@2.79.1) '@rollup/plugin-typescript': specifier: ^8.5.0 - version: 8.5.0(rollup@2.79.1)(typescript@4.9.5) + version: 8.5.0(rollup@2.79.1)(typescript@5.1.6) '@types/chai': specifier: ^4.3.5 version: 4.3.5 @@ -61,10 +61,10 @@ importers: version: 18.2.5 '@typescript-eslint/eslint-plugin': specifier: ^5.59.11 - version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6) '@typescript-eslint/parser': specifier: ^5.59.11 - version: 5.59.11(eslint@8.42.0)(typescript@4.9.5) + version: 5.59.11(eslint@8.42.0)(typescript@5.1.6) chai: specifier: ^4.3.7 version: 4.3.7 @@ -76,7 +76,7 @@ importers: version: 8.42.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@4.9.5) + version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@5.1.6) eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.1(eslint@8.42.0)(prettier@2.8.8) @@ -123,8 +123,8 @@ importers: specifier: 13.1.6 version: 13.1.6 '@rainbow-me/rainbowkit': - specifier: ^1.0.2 - version: 1.0.2(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0) + specifier: ^1.0.5 + version: 1.0.5(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0) '@types/node': specifier: ^18.7.1 version: 18.16.7 @@ -268,7 +268,7 @@ importers: version: 3.0.1 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + version: 29.5.0(@types/node@20.4.0)(ts-node@10.9.1) mime: specifier: ^3.0.0 version: 3.0.0 @@ -289,10 +289,10 @@ importers: version: 7.0.2(rollup@2.79.1) ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.22.8)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + version: 10.9.1(@types/node@20.4.0)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.0 @@ -313,7 +313,7 @@ importers: version: 29.5.1 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + version: 29.5.0(@types/node@20.4.0)(ts-node@10.9.1) rollup: specifier: ^2.79.1 version: 2.79.1 @@ -334,10 +334,10 @@ importers: version: 7.0.2(rollup@2.79.1) ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.22.8)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + version: 10.9.1(@types/node@20.4.0)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.0 @@ -382,6 +382,11 @@ packages: resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} engines: {node: '>=6.9.0'} + /@babel/compat-data@7.22.6: + resolution: {integrity: sha512-29tfsWTq2Ftu7MXmimyC0C5FDZv5DYxOZkh3XD3+QW4V/BYuv/LyEsjj3c0hqedEaDt6DBfDvexMKU8YevdqFg==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/core@7.22.5: resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} engines: {node: '>=6.9.0'} @@ -404,6 +409,29 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core@7.22.8: + resolution: {integrity: sha512-75+KxFB4CZqYRXjx4NlR4J7yGvKumBuZTmV4NV6v09dVXXkuYVYLT68N6HCzLvfJ+fWCxQsntNzKwwIXL4bHnw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.7 + '@babel/helper-compilation-targets': 7.22.6(@babel/core@7.22.8) + '@babel/helper-module-transforms': 7.22.5 + '@babel/helpers': 7.22.6 + '@babel/parser': 7.22.7 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.8 + '@babel/types': 7.22.5 + '@nicolo-ribaudo/semver-v6': 6.3.3 + convert-source-map: 1.9.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/eslint-parser@7.21.8(@babel/core@7.22.5)(eslint@8.42.0): resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} @@ -437,6 +465,16 @@ packages: '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 + /@babel/generator@7.22.7: + resolution: {integrity: sha512-p+jPjMG+SI8yvIaxGgeW24u7q9+5+TGpZh8/CuB7RhBKd7RCy8FayNEFNNKrNK/eUcY/4ExQqLmyrvBXKsIcwQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 + dev: true + /@babel/helper-annotate-as-pure@7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} @@ -471,6 +509,20 @@ packages: lru-cache: 5.1.1 semver: 6.3.0 + /@babel/helper-compilation-targets@7.22.6(@babel/core@7.22.8): + resolution: {integrity: sha512-534sYEqWD9VfUm3IPn2SLcH4Q3P86XL+QvqdC7ZsFrzyyPF3T4XGiVghF6PTYNdWg6pXuoqXxNQAhbYeEInTzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.22.6 + '@babel/core': 7.22.8 + '@babel/helper-validator-option': 7.22.5 + '@nicolo-ribaudo/semver-v6': 6.3.3 + browserslist: 4.21.9 + lru-cache: 5.1.1 + dev: true + /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.22.5): resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} engines: {node: '>=6.9.0'} @@ -636,6 +688,13 @@ packages: dependencies: '@babel/types': 7.22.5 + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: true + /@babel/helper-string-parser@7.21.5: resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} engines: {node: '>=6.9.0'} @@ -680,6 +739,17 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helpers@7.22.6: + resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.8 + '@babel/types': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/highlight@7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} @@ -704,6 +774,14 @@ packages: dependencies: '@babel/types': 7.22.5 + /@babel/parser@7.22.7: + resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.5 + dev: true + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} @@ -1919,6 +1997,24 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse@7.22.8: + resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.7 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.7 + '@babel/types': 7.22.5 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/types@7.21.5: resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} engines: {node: '>=6.9.0'} @@ -2299,7 +2395,7 @@ packages: lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.1.6) typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -3723,6 +3819,11 @@ packages: eslint-scope: 5.1.1 dev: true + /@nicolo-ribaudo/semver-v6@6.3.3: + resolution: {integrity: sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==} + hasBin: true + dev: true + /@noble/curves@1.0.0: resolution: {integrity: sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==} dependencies: @@ -3818,14 +3919,14 @@ packages: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} dev: false - /@rainbow-me/rainbowkit@1.0.2(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0): - resolution: {integrity: sha512-CIcEekBBlYiqg2oNS7LZqqN882OfJ0T1ORe4c46dscSuMCaX9sdbviQR1m8LoA4KocSCzSxOPAnfoVN8eC/HNA==} + /@rainbow-me/rainbowkit@1.0.5(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0): + resolution: {integrity: sha512-vVXYpX9euFrellK0yiLXBC+tp0NFc0IAR/XzXlFNl3x6eaC+0/S99PGEwRQb66SQ9ioVoHdyvxz1BpeeWlc91w==} engines: {node: '>=12.4'} peerDependencies: react: '>=17' react-dom: '>=17' viem: ~0.3.19 || ^1.0.0 - wagmi: ~1.0.1 || ~1.1.0 || ~1.2.0 + wagmi: ~1.0.1 || ~1.1.0 || ~1.2.0 || ~1.3.0 dependencies: '@vanilla-extract/css': 1.9.1 '@vanilla-extract/dynamic': 2.0.2 @@ -3937,7 +4038,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-typescript@8.5.0(rollup@2.79.1)(typescript@4.9.5): + /@rollup/plugin-typescript@8.5.0(rollup@2.79.1)(typescript@5.1.6): resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} engines: {node: '>=8.0.0'} peerDependencies: @@ -3951,7 +4052,7 @@ packages: '@rollup/pluginutils': 3.1.0(rollup@2.79.1) resolve: 1.22.2 rollup: 2.79.1 - typescript: 4.9.5 + typescript: 5.1.6 dev: true /@rollup/plugin-wasm@6.1.2(rollup@2.79.1): @@ -4469,6 +4570,10 @@ packages: resolution: {integrity: sha512-MFg7ua/bRtnA1hYE3pVyWxGd/r7aMqjNOdHvlSsXV3n8iaeGKkOaPzpJh6/ovf4bEXWcojkeMJpTsq3mzXW4IQ==} dev: false + /@types/node@20.4.0: + resolution: {integrity: sha512-jfT7iTf/4kOQ9S7CHV9BIyRaQqHu67mOjsIQBC3BKZvzvUB6zLxEwJ6sBE3ozcvP8kF6Uk5PXN0Q+c0dfhGX0g==} + dev: true + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -4573,7 +4678,7 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4585,36 +4690,36 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/type-utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) debug: 4.3.4(supports-color@8.1.1) eslint: 8.42.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.1 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.59.7(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/experimental-utils@5.59.7(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.7(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.7(eslint@8.42.0)(typescript@5.1.6) eslint: 8.42.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser@5.59.11(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/parser@5.59.11(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4626,10 +4731,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.6) debug: 4.3.4(supports-color@8.1.1) eslint: 8.42.0 - typescript: 4.9.5 + typescript: 5.1.6 transitivePeerDependencies: - supports-color @@ -4676,7 +4781,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.7 dev: true - /@typescript-eslint/type-utils@5.59.11(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/type-utils@5.59.11(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4686,12 +4791,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.6) + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) debug: 4.3.4(supports-color@8.1.1) eslint: 8.42.0 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true @@ -4710,7 +4815,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.59.11(typescript@4.9.5): + /@typescript-eslint/typescript-estree@5.59.11(typescript@5.1.6): resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4725,8 +4830,8 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.1 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color @@ -4751,7 +4856,7 @@ packages: - supports-color dev: false - /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): + /@typescript-eslint/typescript-estree@5.59.7(typescript@5.1.6): resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4766,13 +4871,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.2 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.11(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.59.11(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4783,7 +4888,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.6) eslint: 8.42.0 eslint-scope: 5.1.1 semver: 7.5.1 @@ -4792,7 +4897,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.59.7(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.59.7(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4803,7 +4908,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.7 '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.1.6) eslint: 8.42.0 eslint-scope: 5.1.1 semver: 7.5.2 @@ -5948,6 +6053,17 @@ packages: node-releases: 2.0.12 update-browserslist-db: 1.0.11(browserslist@4.21.7) + /browserslist@4.21.9: + resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001513 + electron-to-chromium: 1.4.452 + node-releases: 2.0.13 + update-browserslist-db: 1.0.11(browserslist@4.21.9) + dev: true + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -6047,6 +6163,10 @@ packages: /caniuse-lite@1.0.30001489: resolution: {integrity: sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==} + /caniuse-lite@1.0.30001513: + resolution: {integrity: sha512-pnjGJo7SOOjAGytZZ203Em95MRM8Cr6jhCXNF/FAXTpCTRTECnqQWLpiTRqrFtdYcth8hf4WECUpkezuYsMVww==} + dev: true + /case@1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} engines: {node: '>= 0.8.0'} @@ -6357,7 +6477,7 @@ packages: dependencies: '@types/node': 18.16.18 cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.1.6) typescript: 4.9.5 dev: true @@ -6784,6 +6904,10 @@ packages: /electron-to-chromium@1.4.411: resolution: {integrity: sha512-5VXLW4Qw89vM2WTICHua/y8v7fKGDRVa2VPOtBB9IpLvW316B+xd8yD1wTmLPY2ot/00P/qt87xdolj4aG/Lzg==} + /electron-to-chromium@1.4.452: + resolution: {integrity: sha512-ITLyB1brjWat2oEIzbPjewgN6DnJlmW8isz4pMC54FctnaKhkZR1s9cCVgRZzrk7i1kW1n0k2G4hs3ibwFalyw==} + dev: true + /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -6969,7 +7093,7 @@ packages: - supports-color dev: false - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@4.9.5): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6982,19 +7106,19 @@ packages: '@babel/core': 7.22.5 '@babel/eslint-parser': 7.21.8(@babel/core@7.22.5)(eslint@8.42.0) '@rushstack/eslint-patch': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.42.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0) eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.42.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@4.9.5) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@5.1.6) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.42.0) eslint-plugin-react: 7.32.2(eslint@8.42.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.42.0) - eslint-plugin-testing-library: 5.11.0(eslint@8.42.0)(typescript@4.9.5) - typescript: 4.9.5 + eslint-plugin-testing-library: 5.11.0(eslint@8.42.0)(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -7054,7 +7178,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) debug: 3.2.7 eslint: 8.40.0 eslint-import-resolver-node: 0.3.7 @@ -7083,7 +7207,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) debug: 3.2.7 eslint: 8.42.0 eslint-import-resolver-node: 0.3.7 @@ -7116,7 +7240,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -7149,7 +7273,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -7172,7 +7296,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@4.9.5): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -7185,8 +7309,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) - '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.42.0)(typescript@5.1.6) eslint: 8.42.0 transitivePeerDependencies: - supports-color @@ -7325,13 +7449,13 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library@5.11.0(eslint@8.42.0)(typescript@4.9.5): + /eslint-plugin-testing-library@5.11.0(eslint@8.42.0)(typescript@5.1.6): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) eslint: 8.42.0 transitivePeerDependencies: - supports-color @@ -8721,7 +8845,7 @@ packages: - supports-color dev: true - /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + /jest-cli@29.5.0(@types/node@20.4.0)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -8738,7 +8862,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@20.4.0)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -8784,7 +8908,47 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@20.4.0)(typescript@4.9.5) + transitivePeerDependencies: + - supports-color + dev: true + + /jest-config@29.5.0(@types/node@20.4.0)(ts-node@10.9.1): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.22.5 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.4.0 + babel-jest: 29.5.0(@babel/core@7.22.5) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1(@types/node@20.4.0)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true @@ -9084,7 +9248,7 @@ packages: supports-color: 8.1.1 dev: true - /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + /jest@29.5.0(@types/node@20.4.0)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -9097,7 +9261,7 @@ packages: '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-cli: 29.5.0(@types/node@20.4.0)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color @@ -9896,6 +10060,10 @@ packages: /node-releases@2.0.12: resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + dev: true + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -11535,7 +11703,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-jest@29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@4.9.5): + /ts-jest@29.1.0(@babel/core@7.22.8)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -11556,10 +11724,10 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.8 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest: 29.5.0(@types/node@20.4.0)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -11569,7 +11737,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.16.18)(typescript@4.9.5): + /ts-node@10.9.1(@types/node@18.16.18)(typescript@5.1.6): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -11595,6 +11763,37 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 + typescript: 5.1.6 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /ts-node@10.9.1(@types/node@20.4.0)(typescript@4.9.5): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 20.4.0 + acorn: 8.8.2 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -11625,6 +11824,16 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 + dev: false + + /tsutils@3.21.0(typescript@5.1.6): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.1.6 /tsyringe@4.7.0: resolution: {integrity: sha512-ncFDM1jTLsok4ejMvSW5jN1VGPQD48y2tfAR0pdptWRKYX4bkbqPt92k7KJ5RFJ1KV36JEs/+TMh7I6OUgj74g==} @@ -11721,6 +11930,11 @@ packages: engines: {node: '>=4.2.0'} hasBin: true + /typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} + hasBin: true + /uint8arrays@3.1.1: resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} dependencies: @@ -11778,6 +11992,17 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 + /update-browserslist-db@1.0.11(browserslist@4.21.9): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.9 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: From d15ef5d37ae8d3b340b89645a0fb26c5192d14f3 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 7 Jul 2023 19:19:16 +0800 Subject: [PATCH 082/433] feat: Query Lock Fee API (#147) * feat: Query Lock Fee API * Create green-avocados-jump.md --- .changeset/green-avocados-jump.md | 5 +++++ packages/chain-sdk/package.json | 2 +- packages/chain-sdk/src/api/sp.ts | 2 +- packages/chain-sdk/src/api/storage.ts | 9 +++++++++ packages/chain-sdk/src/tests/query.spec.ts | 17 +++++++++++++++++ pnpm-lock.yaml | 14 +++++++------- 6 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 .changeset/green-avocados-jump.md create mode 100644 packages/chain-sdk/src/tests/query.spec.ts diff --git a/.changeset/green-avocados-jump.md b/.changeset/green-avocados-jump.md new file mode 100644 index 00000000..57526b17 --- /dev/null +++ b/.changeset/green-avocados-jump.md @@ -0,0 +1,5 @@ +--- +"@bnb-chain/greenfield-chain-sdk": patch +--- + +feat: Query Lock Fee API diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 25b4965b..9a468bf2 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -53,7 +53,7 @@ ] }, "dependencies": { - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.12", + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.13", "@cosmjs/proto-signing": "^0.30.1", "@cosmjs/stargate": "^0.30.1", "@cosmjs/tendermint-rpc": "^0.30.1", diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index cb06c5eb..57ecab4b 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -1,4 +1,3 @@ -import { Headers } from 'cross-fetch'; import { getAuthorizationAuthTypeV2 } from '@/utils/auth'; import { fetchWithTimeout, METHOD_GET } from '@/utils/http'; import { QueryParamsResponse } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/query'; @@ -10,6 +9,7 @@ import { } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/types'; import { SourceType } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; import { GroupInfo } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/types'; +import { Headers } from 'cross-fetch'; import Long from 'long'; import { container, singleton } from 'tsyringe'; import { RpcQueryClient } from './queryclient'; diff --git a/packages/chain-sdk/src/api/storage.ts b/packages/chain-sdk/src/api/storage.ts index 02fcef5b..20ab33f9 100644 --- a/packages/chain-sdk/src/api/storage.ts +++ b/packages/chain-sdk/src/api/storage.ts @@ -1,6 +1,8 @@ import { MsgDeletePolicySDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeletePolicy'; import { MsgPutPolicySDKTypeEIP712 } from '@/messages/greenfield/storage/MsgPutPolicy'; import { + QueryLockFeeRequest, + QueryLockFeeResponse, QueryParamsResponse, QueryPolicyByIdRequest, QueryPolicyByIdResponse, @@ -34,6 +36,8 @@ export interface IStorage { getQueryPolicyForGroup(request: QueryPolicyForGroupRequest): Promise; getQueryPolicyById(request: QueryPolicyByIdRequest): Promise; + + queryLockFee(request: QueryLockFeeRequest): Promise; } @singleton() @@ -94,4 +98,9 @@ export class Storage implements IStorage { const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.QueryPolicyById(request); } + + public async queryLockFee(request: QueryLockFeeRequest) { + const rpc = await this.queryClient.getStorageQueryClient(); + return await rpc.QueryLockFee(request); + } } diff --git a/packages/chain-sdk/src/tests/query.spec.ts b/packages/chain-sdk/src/tests/query.spec.ts new file mode 100644 index 00000000..1fcd840f --- /dev/null +++ b/packages/chain-sdk/src/tests/query.spec.ts @@ -0,0 +1,17 @@ +import { describe, expect, test } from '@jest/globals'; +import Long from 'long'; +import { client, selectSp } from './config.spec'; + +describe('query storage api', () => { + test('query lock fee', async () => { + const spInfo = await selectSp(); + + const res = await client.storage.queryLockFee({ + createAt: Long.fromInt(0), + primarySpAddress: spInfo.primarySpAddress, + payloadSize: Long.fromInt(1111), + }); + + expect(res).not.toBeNull(); + }); +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a4d9d846..82c96263 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -194,8 +194,8 @@ importers: packages/chain-sdk: dependencies: '@bnb-chain/greenfield-cosmos-types': - specifier: 0.4.0-alpha.12 - version: 0.4.0-alpha.12 + specifier: 0.4.0-alpha.13 + version: 0.4.0-alpha.13 '@cosmjs/proto-signing': specifier: ^0.30.1 version: 0.30.1 @@ -2045,8 +2045,8 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.12: - resolution: {integrity: sha512-CenKMlgGw5RjptF/ju2PRL3QUtHhX7QoyUHTlRy13zt/K0lLcyifgNSZFsR/DeSFfX16KoahPQbpzXmpEnW00A==} + /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.13: + resolution: {integrity: sha512-ClfQzmeO+saqRXx7kx0XPn0Y0ILh7cSG8CF2k22D1f4k3p5XeUhF3lZSpIOtuTf7eRkd3lXsIlNPSjN3AUZHTw==} dependencies: long: 4.0.0 protobufjs: 6.11.3 @@ -6059,7 +6059,7 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001513 - electron-to-chromium: 1.4.452 + electron-to-chromium: 1.4.453 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.9) dev: true @@ -6904,8 +6904,8 @@ packages: /electron-to-chromium@1.4.411: resolution: {integrity: sha512-5VXLW4Qw89vM2WTICHua/y8v7fKGDRVa2VPOtBB9IpLvW316B+xd8yD1wTmLPY2ot/00P/qt87xdolj4aG/Lzg==} - /electron-to-chromium@1.4.452: - resolution: {integrity: sha512-ITLyB1brjWat2oEIzbPjewgN6DnJlmW8isz4pMC54FctnaKhkZR1s9cCVgRZzrk7i1kW1n0k2G4hs3ibwFalyw==} + /electron-to-chromium@1.4.453: + resolution: {integrity: sha512-BU8UtQz6CB3T7RIGhId4BjmjJVXQDujb0+amGL8jpcluFJr6lwspBOvkUbnttfpZCm4zFMHmjrX1QrdPWBBMjQ==} dev: true /elliptic@6.5.4: From e742ca94fecabd70241817f38f0cb2782ca10d61 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 19:21:03 +0800 Subject: [PATCH 083/433] chore: [ci] release (alpha) (#148) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index a256debd..28978130 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -10,6 +10,7 @@ "changesets": [ "calm-birds-sleep", "dirty-parrots-hear", + "green-avocados-jump", "grumpy-gorillas-breathe", "happy-humans-thank", "large-humans-bathe", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index ef4f639c..dd9b2aac 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.3-alpha.7 + +### Patch Changes + +- Updated dependencies + [[`d15ef5d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d15ef5d37ae8d3b340b89645a0fb26c5192d14f3)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.6 + ## 0.0.3-alpha.6 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 273aab92..605971df 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.3-alpha.6", + "version": "0.0.3-alpha.7", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 4cfcd764..6ba49826 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.6-alpha.7 + +### Patch Changes + +- Updated dependencies + [[`d15ef5d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d15ef5d37ae8d3b340b89645a0fb26c5192d14f3)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.6 + ## 0.0.6-alpha.6 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 32f5c442..1fe6a743 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.6-alpha.6", + "version": "0.0.6-alpha.7", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index b0aecad4..77937145 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.2-alpha.6 + +### Patch Changes + +- [#147](https://github.com/bnb-chain/greenfield-js-sdk/pull/147) + [`d15ef5d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d15ef5d37ae8d3b340b89645a0fb26c5192d14f3) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Query Lock Fee API + ## 0.2.2-alpha.5 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 9a468bf2..f0079000 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.2-alpha.5", + "version": "0.2.2-alpha.6", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From b05048118d68abeff0939e09aad21ed6a22c34d3 Mon Sep 17 00:00:00 2001 From: aiden-cao <104969608+aiden-cao@users.noreply.github.com> Date: Mon, 10 Jul 2023 14:16:50 +0800 Subject: [PATCH 084/433] Update bucket.ts (#149) * Update bucket.ts throw error * Create hot-countries-begin.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> --- .changeset/hot-countries-begin.md | 5 +++++ packages/chain-sdk/src/api/bucket.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/hot-countries-begin.md diff --git a/.changeset/hot-countries-begin.md b/.changeset/hot-countries-begin.md new file mode 100644 index 00000000..b1f4559f --- /dev/null +++ b/.changeset/hot-countries-begin.md @@ -0,0 +1,5 @@ +--- +"@bnb-chain/greenfield-chain-sdk": patch +--- + +feat: bucket getApproval replace `return` with `throw` diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index 0b873460..2f282019 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -217,7 +217,7 @@ export class Bucket implements IBucket { signedMsg: signedMsg, }; } catch (error: any) { - return { code: -1, message: error.message, statusCode: NORMAL_ERROR_CODE }; + throw { code: -1, message: error.message, statusCode: NORMAL_ERROR_CODE }; } } From e2f37ace189209935d51dce292849a6b109161b1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 10 Jul 2023 14:19:36 +0800 Subject: [PATCH 085/433] chore: [ci] release (alpha) (#150) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 9 +++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 29 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 28978130..4f58b1ba 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -13,6 +13,7 @@ "green-avocados-jump", "grumpy-gorillas-breathe", "happy-humans-thank", + "hot-countries-begin", "large-humans-bathe", "little-pugs-peel", "old-roses-play", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index dd9b2aac..6391eade 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.3-alpha.8 + +### Patch Changes + +- Updated dependencies + [[`b050481`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b05048118d68abeff0939e09aad21ed6a22c34d3)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.7 + ## 0.0.3-alpha.7 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 605971df..fdeec2f8 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.3-alpha.7", + "version": "0.0.3-alpha.8", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 6ba49826..1c0f0569 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.6-alpha.8 + +### Patch Changes + +- Updated dependencies + [[`b050481`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b05048118d68abeff0939e09aad21ed6a22c34d3)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.7 + ## 0.0.6-alpha.7 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 1fe6a743..8a5c721d 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.6-alpha.7", + "version": "0.0.6-alpha.8", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 77937145..ba1326ae 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,14 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.2-alpha.7 + +### Patch Changes + +- [#149](https://github.com/bnb-chain/greenfield-js-sdk/pull/149) + [`b050481`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b05048118d68abeff0939e09aad21ed6a22c34d3) + Thanks [@aiden-cao](https://github.com/aiden-cao)! - feat: bucket getApproval replace `return` + with `throw` + ## 0.2.2-alpha.6 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index f0079000..51e66a11 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.2-alpha.6", + "version": "0.2.2-alpha.7", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From f248937d3cfb97b4e2085017436aa25bc7fc6c40 Mon Sep 17 00:00:00 2001 From: randomx999 <84435529+randomx999@users.noreply.github.com> Date: Thu, 13 Jul 2023 12:13:18 +0800 Subject: [PATCH 086/433] fix: Return real statuscode when call metaservice (#164) * fix: Return real statuscode when call metaservice * Create kind-eyes-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> --- .changeset/kind-eyes-brake.md | 5 +++++ packages/chain-sdk/src/api/bucket.ts | 18 ++++++++++++--- packages/chain-sdk/src/api/objectt.ts | 26 +++++++++++++++++----- packages/chain-sdk/src/api/offchainauth.ts | 2 +- 4 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 .changeset/kind-eyes-brake.md diff --git a/.changeset/kind-eyes-brake.md b/.changeset/kind-eyes-brake.md new file mode 100644 index 00000000..1d37c12f --- /dev/null +++ b/.changeset/kind-eyes-brake.md @@ -0,0 +1,5 @@ +--- +"@bnb-chain/greenfield-chain-sdk": patch +--- + +fix: Return real statuscode when call metaservice diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index 2f282019..304ee308 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -217,7 +217,11 @@ export class Bucket implements IBucket { signedMsg: signedMsg, }; } catch (error: any) { - throw { code: -1, message: error.message, statusCode: NORMAL_ERROR_CODE }; + throw { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; } } @@ -361,7 +365,11 @@ export class Bucket implements IBucket { body: buckets, }; } catch (error: any) { - return { code: -1, message: error.message, statusCode: NORMAL_ERROR_CODE }; + return { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; } } @@ -453,7 +461,11 @@ export class Bucket implements IBucket { }; } } catch (error: any) { - return { code: -1, message: error.message, statusCode: NORMAL_ERROR_CODE }; + return { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; } } diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 5b6270b4..44485a61 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -219,7 +219,11 @@ export class Objectt implements IObject { signedMsg, }; } catch (error: any) { - throw { code: -1, message: error.message, statusCode: NORMAL_ERROR_CODE }; + throw { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; } } @@ -326,7 +330,11 @@ export class Objectt implements IObject { return { code: 0, message: 'Put object success.', statusCode: status }; } catch (error: any) { - return { code: -1, message: error.message, statusCode: NORMAL_ERROR_CODE }; + return { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; } } @@ -409,7 +417,7 @@ export class Objectt implements IObject { if (code !== 0) { throw { code: -1, - message: message || 'Get create bucket approval error.', + message: message || 'Get create object approval error.', statusCode: statusCode, }; } @@ -444,7 +452,11 @@ export class Objectt implements IObject { statusCode: status, }; } catch (error: any) { - return { code: -1, message: error.message, statusCode: NORMAL_ERROR_CODE }; + return { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; } } @@ -531,7 +543,11 @@ export class Objectt implements IObject { body, }; } catch (error: any) { - return { code: -1, message: error.message, statusCode: NORMAL_ERROR_CODE }; + return { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; } } diff --git a/packages/chain-sdk/src/api/offchainauth.ts b/packages/chain-sdk/src/api/offchainauth.ts index 263a06e6..935852ce 100644 --- a/packages/chain-sdk/src/api/offchainauth.ts +++ b/packages/chain-sdk/src/api/offchainauth.ts @@ -135,7 +135,7 @@ export class OffChainAuth implements IOffChainAuth { return { code: -1, message: error.message || 'Sign with seed string failed', - statusCode: error.status || NORMAL_ERROR_CODE, + statusCode: error?.status || NORMAL_ERROR_CODE, }; } } From 2a271dac98a0de9e3ebe4bd49f4d74d0c6b09534 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 13 Jul 2023 12:15:53 +0800 Subject: [PATCH 087/433] chore: [ci] release (alpha) (#166) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 9 +++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 29 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 4f58b1ba..28ed44cf 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -14,6 +14,7 @@ "grumpy-gorillas-breathe", "happy-humans-thank", "hot-countries-begin", + "kind-eyes-brake", "large-humans-bathe", "little-pugs-peel", "old-roses-play", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 6391eade..e33ebd42 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.3-alpha.9 + +### Patch Changes + +- Updated dependencies + [[`f248937`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f248937d3cfb97b4e2085017436aa25bc7fc6c40)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.8 + ## 0.0.3-alpha.8 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index fdeec2f8..4ebfef8b 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.3-alpha.8", + "version": "0.0.3-alpha.9", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 1c0f0569..e5cdf0bf 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.6-alpha.9 + +### Patch Changes + +- Updated dependencies + [[`f248937`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f248937d3cfb97b4e2085017436aa25bc7fc6c40)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.8 + ## 0.0.6-alpha.8 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 8a5c721d..9f2d82bc 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.6-alpha.8", + "version": "0.0.6-alpha.9", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index ba1326ae..927e2004 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,14 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.2-alpha.8 + +### Patch Changes + +- [#164](https://github.com/bnb-chain/greenfield-js-sdk/pull/164) + [`f248937`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f248937d3cfb97b4e2085017436aa25bc7fc6c40) + Thanks [@randomx999](https://github.com/randomx999)! - fix: Return real statuscode when call + metaservice + ## 0.2.2-alpha.7 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 51e66a11..88479fee 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.2-alpha.7", + "version": "0.2.2-alpha.8", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 3907fc4ce5f7f5888583b737c46e65bf828fd779 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Mon, 17 Jul 2023 22:19:40 +0800 Subject: [PATCH 088/433] feat: Upgrade types version (#167) --- .changeset/metal-ways-crash.md | 5 ++ packages/chain-sdk/package.json | 2 +- pnpm-lock.yaml | 118 ++++++++++++++++++-------------- 3 files changed, 72 insertions(+), 53 deletions(-) create mode 100644 .changeset/metal-ways-crash.md diff --git a/.changeset/metal-ways-crash.md b/.changeset/metal-ways-crash.md new file mode 100644 index 00000000..01088041 --- /dev/null +++ b/.changeset/metal-ways-crash.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +feat: Upgrade types version to 0.4.0-alpha.16 diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 88479fee..e79d4a8e 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -53,7 +53,7 @@ ] }, "dependencies": { - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.13", + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.16", "@cosmjs/proto-signing": "^0.30.1", "@cosmjs/stargate": "^0.30.1", "@cosmjs/tendermint-rpc": "^0.30.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 82c96263..084d14b7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -194,8 +194,8 @@ importers: packages/chain-sdk: dependencies: '@bnb-chain/greenfield-cosmos-types': - specifier: 0.4.0-alpha.13 - version: 0.4.0-alpha.13 + specifier: 0.4.0-alpha.16 + version: 0.4.0-alpha.16 '@cosmjs/proto-signing': specifier: ^0.30.1 version: 0.30.1 @@ -268,7 +268,7 @@ importers: version: 3.0.1 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@20.4.0)(ts-node@10.9.1) + version: 29.5.0(@types/node@20.4.2)(ts-node@10.9.1) mime: specifier: ^3.0.0 version: 3.0.0 @@ -289,10 +289,10 @@ importers: version: 7.0.2(rollup@2.79.1) ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.22.8)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.22.9)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.4.0)(typescript@4.9.5) + version: 10.9.1(@types/node@20.4.2)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.0 @@ -313,7 +313,7 @@ importers: version: 29.5.1 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@20.4.0)(ts-node@10.9.1) + version: 29.5.0(@types/node@20.4.2)(ts-node@10.9.1) rollup: specifier: ^2.79.1 version: 2.79.1 @@ -334,10 +334,10 @@ importers: version: 7.0.2(rollup@2.79.1) ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.22.8)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.22.9)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.4.0)(typescript@4.9.5) + version: 10.9.1(@types/node@20.4.2)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.0 @@ -382,8 +382,8 @@ packages: resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} engines: {node: '>=6.9.0'} - /@babel/compat-data@7.22.6: - resolution: {integrity: sha512-29tfsWTq2Ftu7MXmimyC0C5FDZv5DYxOZkh3XD3+QW4V/BYuv/LyEsjj3c0hqedEaDt6DBfDvexMKU8YevdqFg==} + /@babel/compat-data@7.22.9: + resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} dev: true @@ -409,25 +409,25 @@ packages: transitivePeerDependencies: - supports-color - /@babel/core@7.22.8: - resolution: {integrity: sha512-75+KxFB4CZqYRXjx4NlR4J7yGvKumBuZTmV4NV6v09dVXXkuYVYLT68N6HCzLvfJ+fWCxQsntNzKwwIXL4bHnw==} + /@babel/core@7.22.9: + resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.7 - '@babel/helper-compilation-targets': 7.22.6(@babel/core@7.22.8) - '@babel/helper-module-transforms': 7.22.5 + '@babel/generator': 7.22.9 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) '@babel/helpers': 7.22.6 '@babel/parser': 7.22.7 '@babel/template': 7.22.5 '@babel/traverse': 7.22.8 '@babel/types': 7.22.5 - '@nicolo-ribaudo/semver-v6': 6.3.3 convert-source-map: 1.9.0 debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true @@ -465,8 +465,8 @@ packages: '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 - /@babel/generator@7.22.7: - resolution: {integrity: sha512-p+jPjMG+SI8yvIaxGgeW24u7q9+5+TGpZh8/CuB7RhBKd7RCy8FayNEFNNKrNK/eUcY/4ExQqLmyrvBXKsIcwQ==} + /@babel/generator@7.22.9: + resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 @@ -509,18 +509,18 @@ packages: lru-cache: 5.1.1 semver: 6.3.0 - /@babel/helper-compilation-targets@7.22.6(@babel/core@7.22.8): - resolution: {integrity: sha512-534sYEqWD9VfUm3IPn2SLcH4Q3P86XL+QvqdC7ZsFrzyyPF3T4XGiVghF6PTYNdWg6pXuoqXxNQAhbYeEInTzA==} + /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.22.6 - '@babel/core': 7.22.8 + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.9 '@babel/helper-validator-option': 7.22.5 - '@nicolo-ribaudo/semver-v6': 6.3.3 browserslist: 4.21.9 lru-cache: 5.1.1 + semver: 6.3.1 dev: true /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.22.5): @@ -623,6 +623,20 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.5 + dev: true + /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} @@ -2002,7 +2016,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.7 + '@babel/generator': 7.22.9 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-hoist-variables': 7.22.5 @@ -2045,8 +2059,8 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.13: - resolution: {integrity: sha512-ClfQzmeO+saqRXx7kx0XPn0Y0ILh7cSG8CF2k22D1f4k3p5XeUhF3lZSpIOtuTf7eRkd3lXsIlNPSjN3AUZHTw==} + /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.16: + resolution: {integrity: sha512-lIqo3FCUf+nDo5aj7TdT8YaRXbumPAkY0akP4NuZt7jsDNP8sswV4mhzdeEjVzg4f2JQq7xFwBxDlN3hal0vTg==} dependencies: long: 4.0.0 protobufjs: 6.11.3 @@ -3819,11 +3833,6 @@ packages: eslint-scope: 5.1.1 dev: true - /@nicolo-ribaudo/semver-v6@6.3.3: - resolution: {integrity: sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==} - hasBin: true - dev: true - /@noble/curves@1.0.0: resolution: {integrity: sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==} dependencies: @@ -4570,8 +4579,8 @@ packages: resolution: {integrity: sha512-MFg7ua/bRtnA1hYE3pVyWxGd/r7aMqjNOdHvlSsXV3n8iaeGKkOaPzpJh6/ovf4bEXWcojkeMJpTsq3mzXW4IQ==} dev: false - /@types/node@20.4.0: - resolution: {integrity: sha512-jfT7iTf/4kOQ9S7CHV9BIyRaQqHu67mOjsIQBC3BKZvzvUB6zLxEwJ6sBE3ozcvP8kF6Uk5PXN0Q+c0dfhGX0g==} + /@types/node@20.4.2: + resolution: {integrity: sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==} dev: true /@types/normalize-package-data@2.4.1: @@ -6058,8 +6067,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001513 - electron-to-chromium: 1.4.453 + caniuse-lite: 1.0.30001516 + electron-to-chromium: 1.4.461 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.9) dev: true @@ -6163,8 +6172,8 @@ packages: /caniuse-lite@1.0.30001489: resolution: {integrity: sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==} - /caniuse-lite@1.0.30001513: - resolution: {integrity: sha512-pnjGJo7SOOjAGytZZ203Em95MRM8Cr6jhCXNF/FAXTpCTRTECnqQWLpiTRqrFtdYcth8hf4WECUpkezuYsMVww==} + /caniuse-lite@1.0.30001516: + resolution: {integrity: sha512-Wmec9pCBY8CWbmI4HsjBeQLqDTqV91nFVR83DnZpYyRnPI1wePDsTg0bGLPC5VU/3OIZV1fmxEea1b+tFKe86g==} dev: true /case@1.6.3: @@ -6904,8 +6913,8 @@ packages: /electron-to-chromium@1.4.411: resolution: {integrity: sha512-5VXLW4Qw89vM2WTICHua/y8v7fKGDRVa2VPOtBB9IpLvW316B+xd8yD1wTmLPY2ot/00P/qt87xdolj4aG/Lzg==} - /electron-to-chromium@1.4.453: - resolution: {integrity: sha512-BU8UtQz6CB3T7RIGhId4BjmjJVXQDujb0+amGL8jpcluFJr6lwspBOvkUbnttfpZCm4zFMHmjrX1QrdPWBBMjQ==} + /electron-to-chromium@1.4.461: + resolution: {integrity: sha512-1JkvV2sgEGTDXjdsaQCeSwYYuhLRphRpc+g6EHTFELJXEiznLt3/0pZ9JuAOQ5p2rI3YxKTbivtvajirIfhrEQ==} dev: true /elliptic@6.5.4: @@ -8845,7 +8854,7 @@ packages: - supports-color dev: true - /jest-cli@29.5.0(@types/node@20.4.0)(ts-node@10.9.1): + /jest-cli@29.5.0(@types/node@20.4.2)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -8862,7 +8871,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@20.4.0)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@20.4.2)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -8908,12 +8917,12 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.4.0)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@20.4.2)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true - /jest-config@29.5.0(@types/node@20.4.0)(ts-node@10.9.1): + /jest-config@29.5.0(@types/node@20.4.2)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -8928,7 +8937,7 @@ packages: '@babel/core': 7.22.5 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.4.0 + '@types/node': 20.4.2 babel-jest: 29.5.0(@babel/core@7.22.5) chalk: 4.1.2 ci-info: 3.8.0 @@ -8948,7 +8957,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.4.0)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@20.4.2)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true @@ -9248,7 +9257,7 @@ packages: supports-color: 8.1.1 dev: true - /jest@29.5.0(@types/node@20.4.0)(ts-node@10.9.1): + /jest@29.5.0(@types/node@20.4.2)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -9261,7 +9270,7 @@ packages: '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@20.4.0)(ts-node@10.9.1) + jest-cli: 29.5.0(@types/node@20.4.2)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color @@ -11131,6 +11140,11 @@ packages: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + /semver@7.5.0: resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} engines: {node: '>=10'} @@ -11703,7 +11717,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-jest@29.1.0(@babel/core@7.22.8)(jest@29.5.0)(typescript@4.9.5): + /ts-jest@29.1.0(@babel/core@7.22.9)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -11724,10 +11738,10 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.22.8 + '@babel/core': 7.22.9 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@20.4.0)(ts-node@10.9.1) + jest: 29.5.0(@types/node@20.4.2)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -11768,7 +11782,7 @@ packages: yn: 3.1.1 dev: true - /ts-node@10.9.1(@types/node@20.4.0)(typescript@4.9.5): + /ts-node@10.9.1(@types/node@20.4.2)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -11787,7 +11801,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 20.4.0 + '@types/node': 20.4.2 acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 From 06e254b56052d0d35d48f1fd8e0b865daf96b39d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 22:22:14 +0800 Subject: [PATCH 089/433] chore: [ci] release (alpha) (#168) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 28ed44cf..d5128880 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -17,6 +17,7 @@ "kind-eyes-brake", "large-humans-bathe", "little-pugs-peel", + "metal-ways-crash", "old-roses-play", "old-trainers-shop", "weak-hounds-sell" diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index e33ebd42..5a4e0c61 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.3-alpha.10 + +### Patch Changes + +- Updated dependencies + [[`3907fc4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3907fc4ce5f7f5888583b737c46e65bf828fd779)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.9 + ## 0.0.3-alpha.9 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 4ebfef8b..0a9b5e42 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.3-alpha.9", + "version": "0.0.3-alpha.10", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index e5cdf0bf..0a0e717c 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.6-alpha.10 + +### Patch Changes + +- Updated dependencies + [[`3907fc4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3907fc4ce5f7f5888583b737c46e65bf828fd779)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.9 + ## 0.0.6-alpha.9 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 9f2d82bc..fa69fd14 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.6-alpha.9", + "version": "0.0.6-alpha.10", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 927e2004..232127de 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.2-alpha.9 + +### Patch Changes + +- [#167](https://github.com/bnb-chain/greenfield-js-sdk/pull/167) + [`3907fc4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3907fc4ce5f7f5888583b737c46e65bf828fd779) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Upgrade types version to 0.4.0-alpha.16 + ## 0.2.2-alpha.8 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index e79d4a8e..6d7d5d27 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.2-alpha.8", + "version": "0.2.2-alpha.9", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From d894badd5fcd5ce915dfaec21808a300c15e7783 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 19 Jul 2023 17:44:20 +0800 Subject: [PATCH 090/433] Feat/sp exit (#169) * feat: Add Virtual Group API * feat: Compatibility createBukcet and createObject API * feat: Add Migrate bucket API --- .changeset/forty-otters-scream.md | 5 + .changeset/rare-steaks-repeat.md | 5 + .changeset/serious-lizards-grab.md | 5 + examples/nextjs/src/client/index.ts | 1 + .../nextjs/src/components/bucket/index.tsx | 5 + .../src/components/bucket/migrate/index.tsx | 63 ++++++++ packages/chain-sdk/src/api/bucket.ts | 135 +++++++++++++++++- packages/chain-sdk/src/api/objectt.ts | 12 +- packages/chain-sdk/src/api/queryclient.ts | 10 +- packages/chain-sdk/src/api/virtualGroup.ts | 63 ++++++++ packages/chain-sdk/src/client.ts | 4 + packages/chain-sdk/src/constants/typeUrl.ts | 1 + .../greenfield/storage/MsgCreateBucket.ts | 24 ++-- .../greenfield/storage/MsgCreateObject.ts | 32 ++--- .../greenfield/storage/MsgMigrateBucket.ts | 34 +++++ packages/chain-sdk/src/types/storage.ts | 34 ++++- 16 files changed, 396 insertions(+), 37 deletions(-) create mode 100644 .changeset/forty-otters-scream.md create mode 100644 .changeset/rare-steaks-repeat.md create mode 100644 .changeset/serious-lizards-grab.md create mode 100644 examples/nextjs/src/components/bucket/migrate/index.tsx create mode 100644 packages/chain-sdk/src/api/virtualGroup.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/storage/MsgMigrateBucket.ts diff --git a/.changeset/forty-otters-scream.md b/.changeset/forty-otters-scream.md new file mode 100644 index 00000000..62f0b806 --- /dev/null +++ b/.changeset/forty-otters-scream.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +feat: Add virtual group api diff --git a/.changeset/rare-steaks-repeat.md b/.changeset/rare-steaks-repeat.md new file mode 100644 index 00000000..0c1b8db5 --- /dev/null +++ b/.changeset/rare-steaks-repeat.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +feat: Migrate bucket api diff --git a/.changeset/serious-lizards-grab.md b/.changeset/serious-lizards-grab.md new file mode 100644 index 00000000..133c95c7 --- /dev/null +++ b/.changeset/serious-lizards-grab.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +feat: Compatibility createBucket and createObject API for QA net new protobuf diff --git a/examples/nextjs/src/client/index.ts b/examples/nextjs/src/client/index.ts index fa96e959..7585fa72 100644 --- a/examples/nextjs/src/client/index.ts +++ b/examples/nextjs/src/client/index.ts @@ -18,6 +18,7 @@ export const selectSp = async () => { ...finalSps.slice(selectIndex + 1), ].map((item) => item.operatorAddress); const selectSpInfo = { + id: finalSps[selectIndex].id, endpoint: finalSps[selectIndex].endpoint, primarySpAddress: finalSps[selectIndex]?.operatorAddress, sealAddress: finalSps[selectIndex].sealAddress, diff --git a/examples/nextjs/src/components/bucket/index.tsx b/examples/nextjs/src/components/bucket/index.tsx index 3995a10f..64b9d8b8 100644 --- a/examples/nextjs/src/components/bucket/index.tsx +++ b/examples/nextjs/src/components/bucket/index.tsx @@ -1,6 +1,7 @@ import { CreateBucket } from './create'; import { DeleteBucket } from './delete'; import { BucketInfo } from './info'; +import { MigrateBucket } from './migrate'; export const Bucket = () => { return ( @@ -15,6 +16,10 @@ export const Bucket = () => {
    + + +
    +
    ); diff --git a/examples/nextjs/src/components/bucket/migrate/index.tsx b/examples/nextjs/src/components/bucket/migrate/index.tsx new file mode 100644 index 00000000..dd601d16 --- /dev/null +++ b/examples/nextjs/src/components/bucket/migrate/index.tsx @@ -0,0 +1,63 @@ +import { client, selectSp } from '@/client'; +import { useState } from 'react'; +import { useAccount } from 'wagmi'; + +export const MigrateBucket = () => { + const { address } = useAccount(); + const [bucketName, setBucketName] = useState(''); + + return ( + <> +

    Migrate Bucket

    +
    + bucket name: + { + setBucketName(e.target.value); + }} + /> +
    +
    +
    + + + ); +}; diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index 304ee308..abee01e0 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -1,5 +1,6 @@ import { MsgCreateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCreateBucket'; import { MsgDeleteBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteBucket'; +import { MsgMigrateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMigrateBucket'; import { MsgUpdateBucketInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; import { getAuthorizationAuthTypeV2 } from '@/utils/auth'; import { decodeObjectFromHexString, encodeObjectToHexString } from '@/utils/encoding'; @@ -23,6 +24,7 @@ import { MsgCreateBucket, MsgDeleteBucket, MsgDeletePolicy, + MsgMigrateBucket, MsgPutPolicy, MsgUpdateBucketInfo, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; @@ -34,6 +36,7 @@ import { GRNToString, MsgCreateBucketTypeUrl, MsgDeleteBucketTypeUrl, + MsgMigrateBucketTypeUrl, MsgUpdateBucketInfoTypeUrl, newBucketGRN, TKeyValue, @@ -42,6 +45,8 @@ import { import { BucketProps, ICreateBucketMsgType, + IMigrateBucket, + IMigrateBucketMsgType, IObjectResultType, IQuotaProps, TCreateBucket, @@ -109,7 +114,9 @@ export interface IBucket { getBucketPolicy(request: QueryPolicyForAccountRequest): Promise; - // TODO: getBucketReadQuota(); + getMigrateBucketApproval(params: IMigrateBucket): Promise>; + + migrateBucket(configParams: IMigrateBucket): Promise; } @singleton() @@ -152,6 +159,7 @@ export class Bucket implements IBucket { primary_sp_approval: { expired_height: '0', sig: '', + global_virtual_group_family_id: 0, }, charged_read_quota: chargedReadQuota, payment_address: '', @@ -235,10 +243,7 @@ export class Bucket implements IBucket { type: MsgCreateBucketTypeUrl, charged_read_quota: signedMsg.charged_read_quota, visibility: signedMsg.visibility, - primary_sp_approval: { - expired_height: signedMsg.primary_sp_approval.expired_height, - sig: signedMsg.primary_sp_approval.sig, - }, + primary_sp_approval: signedMsg.primary_sp_approval, }, MsgCreateBucket.encode(msg).finish(), ); @@ -259,6 +264,7 @@ export class Bucket implements IBucket { primarySpApproval: { expiredHeight: Long.fromString(signedMsg.primary_sp_approval.expired_height), sig: bytesFromBase64(signedMsg.primary_sp_approval.sig), + globalVirtualGroupFamilyId: signedMsg.primary_sp_approval.global_virtual_group_family_id, }, chargedReadQuota: signedMsg.charged_read_quota ? Long.fromString('0') @@ -511,4 +517,123 @@ export class Bucket implements IBucket { const rpc = await this.queryClient.getStorageQueryClient(); return rpc.QueryPolicyForAccount(request); } + + public async getMigrateBucketApproval(configParams: IMigrateBucket) { + const { params, spInfo, signType } = configParams; + + try { + const endpoint = spInfo.endpoint; + const url = endpoint + '/greenfield/admin/v1/get-approval?action=MigrateBucket'; + const msg = { + operator: params.operator, + bucket_name: 'asddas', + dst_primary_sp_id: spInfo.id, + dst_primary_sp_approval: { + expired_height: '0', + sig: '', + global_virtual_group_family_id: 0, + }, + }; + const unSignedMessageInHex = encodeObjectToHexString(msg); + + let headerContent: TKeyValue = { + 'X-Gnfd-Unsigned-Msg': unSignedMessageInHex, + }; + + if (!signType || signType === 'authTypeV2') { + const Authorization = getAuthorizationAuthTypeV2(); + headerContent = { + ...headerContent, + Authorization, + }; + } + if (signType === 'offChainAuth') { + const { seedString, domain } = configParams; + const { code, body, statusCode, message } = await this.offChainAuthClient.sign(seedString); + if (code !== 0) { + throw { + code: -1, + message: message || 'Get create bucket approval error.', + statusCode: statusCode, + }; + } + headerContent = { + ...headerContent, + Authorization: body?.authorization as string, + 'X-Gnfd-User-Address': msg.operator, + 'X-Gnfd-App-Domain': domain, + }; + } + + const headers = new Headers(headerContent); + const result = await fetchWithTimeout( + url, + { + headers, + method: METHOD_GET, + }, + 30000, + ); + const { status } = result; + if (!result.ok) { + throw { + code: -1, + message: 'Get create bucket approval error.', + statusCode: status, + }; + } + const signedMsgString = result.headers.get('X-Gnfd-Signed-Msg') || ''; + const signedMsg = decodeObjectFromHexString(signedMsgString) as IMigrateBucketMsgType; + + return { + code: 0, + message: 'Get migrate bucket approval success.', + body: signedMsgString, + statusCode: status, + signedMsg: signedMsg, + }; + } catch (error: any) { + throw { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; + } + } + + public async migrateBucket(configParams: IMigrateBucket) { + const { signedMsg } = await this.getMigrateBucketApproval(configParams); + + if (!signedMsg) { + throw new Error('Get migrate bucket approval error'); + } + + const msg: MsgMigrateBucket = { + bucketName: signedMsg.bucket_name, + operator: signedMsg.operator, + dstPrimarySpId: signedMsg.dst_primary_sp_id, + dstPrimarySpApproval: { + expiredHeight: Long.fromString(signedMsg.dst_primary_sp_approval.expired_height), + globalVirtualGroupFamilyId: + signedMsg.dst_primary_sp_approval.global_virtual_group_family_id, + sig: bytesFromBase64(signedMsg.dst_primary_sp_approval.sig), + }, + }; + + return await this.migrateBucketTx(msg, signedMsg); + } + + private async migrateBucketTx(msg: MsgMigrateBucket, signedMsg: IMigrateBucketMsgType) { + return await this.basic.tx( + MsgMigrateBucketTypeUrl, + msg.operator, + MsgMigrateBucketSDKTypeEIP712, + { + ...signedMsg, + type: MsgMigrateBucketTypeUrl, + primary_sp_approval: signedMsg.dst_primary_sp_approval, + }, + MsgMigrateBucket.encode(msg).finish(), + ); + } } diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 44485a61..505d9b19 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -154,10 +154,13 @@ export class Objectt implements IObject { payload_size: contentLength.toString(), bucket_name: bucketName, visibility, - primary_sp_approval: { expired_height: '0', sig: '' }, + primary_sp_approval: { + expired_height: '0', + sig: '', + global_virtual_group_family_id: 0, + }, expect_checksums: expectCheckSums, redundancy_type: redundancyType, - expect_secondary_sp_addresses: spInfo.secondarySpAddresses, }; const url = spInfo.endpoint + '/greenfield/admin/v1/get-approval?action=CreateObject'; const unSignedMessageInHex = encodeObjectToHexString(msg); @@ -238,6 +241,8 @@ export class Objectt implements IObject { primary_sp_approval: { expired_height: signedMsg.primary_sp_approval.expired_height, sig: signedMsg.primary_sp_approval.sig, + global_virtual_group_family_id: + signedMsg.primary_sp_approval.global_virtual_group_family_id, }, }, MsgCreateObject.encode(msg).finish(), @@ -249,6 +254,7 @@ export class Objectt implements IObject { if (!signedMsg) { throw new Error('Get create object approval error'); } + const msg: MsgCreateObject = { bucketName: signedMsg.bucket_name, creator: signedMsg.creator, @@ -257,11 +263,11 @@ export class Objectt implements IObject { payloadSize: Long.fromString(signedMsg.payload_size), visibility: visibilityTypeFromJSON(signedMsg.visibility), expectChecksums: signedMsg.expect_checksums.map((e: string) => bytesFromBase64(e)), - expectSecondarySpAddresses: signedMsg.expect_secondary_sp_addresses, redundancyType: redundancyTypeFromJSON(signedMsg.redundancy_type), primarySpApproval: { expiredHeight: Long.fromString(signedMsg.primary_sp_approval.expired_height), sig: bytesFromBase64(signedMsg.primary_sp_approval.sig), + globalVirtualGroupFamilyId: signedMsg.primary_sp_approval.global_virtual_group_family_id, }, }; diff --git a/packages/chain-sdk/src/api/queryclient.ts b/packages/chain-sdk/src/api/queryclient.ts index 21d60fab..f8c2049b 100644 --- a/packages/chain-sdk/src/api/queryclient.ts +++ b/packages/chain-sdk/src/api/queryclient.ts @@ -1,18 +1,19 @@ -import { MsgClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/distribution/v1beta1/tx'; import { QueryClientImpl as AuthQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/query'; import { QueryClientImpl as BankQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/bank/v1beta1/query'; import { QueryClientImpl as CrosschainQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/crosschain/v1/query'; +import { MsgClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/distribution/v1beta1/tx'; import { QueryClientImpl as FeeGrantQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/query'; +import { QueryClientImpl as GashubClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/gashub/v1beta1/query'; import { QueryClientImpl as OracleQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/oracle/v1/query'; import { QueryClientImpl as BridgeQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/bridge/query'; import { QueryClientImpl as ChallengeQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/query'; import { QueryClientImpl as PaymentQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; import { QueryClientImpl as SpQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/query'; -import { QueryClientImpl as GashubClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/gashub/v1beta1/query'; import { QueryClientImpl as BucketQueryClientImpl, QueryClientImpl as StorageQueryClientImpl, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/query'; +import { QueryClientImpl as VirtualGroupClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/virtualgroup/query'; import { AuthExtension, BankExtension, @@ -125,6 +126,11 @@ export class RpcQueryClient { const rpcClient = await this.getRpcClient(); return new GashubClientImpl(rpcClient); } + + public async getVirtualGroupClient() { + const rpcClient = await this.getRpcClient(); + return new VirtualGroupClientImpl(rpcClient); + } } export const makeClientWithExtension = async ( diff --git a/packages/chain-sdk/src/api/virtualGroup.ts b/packages/chain-sdk/src/api/virtualGroup.ts new file mode 100644 index 00000000..88d3ab56 --- /dev/null +++ b/packages/chain-sdk/src/api/virtualGroup.ts @@ -0,0 +1,63 @@ +import { + QueryGlobalVirtualGroupByFamilyIDRequest, + QueryGlobalVirtualGroupByFamilyIDResponse, + QueryGlobalVirtualGroupFamiliesRequest, + QueryGlobalVirtualGroupFamiliesResponse, + QueryGlobalVirtualGroupFamilyRequest, + QueryGlobalVirtualGroupFamilyResponse, + QueryGlobalVirtualGroupRequest, + QueryGlobalVirtualGroupResponse, + QueryParamsResponse, +} from '@bnb-chain/greenfield-cosmos-types/greenfield/virtualgroup/query'; +import { container, singleton } from 'tsyringe'; +import { RpcQueryClient } from './queryclient'; + +export interface IVirtualGroup { + params(): Promise; + + getGlobalVirtualGroup( + request: QueryGlobalVirtualGroupRequest, + ): Promise; + + getGlobalVirtualGroupByFamilyID( + request: QueryGlobalVirtualGroupByFamilyIDRequest, + ): Promise; + + getGlobalVirtualGroupFamilies( + request: QueryGlobalVirtualGroupFamiliesRequest, + ): Promise; + + getGlobalVirtualGroupFamily( + request: QueryGlobalVirtualGroupFamilyRequest, + ): Promise; +} + +@singleton() +export class VirtualGroup implements IVirtualGroup { + private queryClient = container.resolve(RpcQueryClient); + + public async params() { + const rpc = await this.queryClient.getVirtualGroupClient(); + return await rpc.Params(); + } + + public async getGlobalVirtualGroup(request: QueryGlobalVirtualGroupRequest) { + const rpc = await this.queryClient.getVirtualGroupClient(); + return await rpc.GlobalVirtualGroup(request); + } + + public async getGlobalVirtualGroupByFamilyID(request: QueryGlobalVirtualGroupByFamilyIDRequest) { + const rpc = await this.queryClient.getVirtualGroupClient(); + return await rpc.GlobalVirtualGroupByFamilyID(request); + } + + public async getGlobalVirtualGroupFamilies(request: QueryGlobalVirtualGroupFamiliesRequest) { + const rpc = await this.queryClient.getVirtualGroupClient(); + return await rpc.GlobalVirtualGroupFamilies(request); + } + + public async getGlobalVirtualGroupFamily(request: QueryGlobalVirtualGroupFamilyRequest) { + const rpc = await this.queryClient.getVirtualGroupClient(); + return await rpc.GlobalVirtualGroupFamily(request); + } +} diff --git a/packages/chain-sdk/src/client.ts b/packages/chain-sdk/src/client.ts index 4d9ec484..2f1b09e9 100644 --- a/packages/chain-sdk/src/client.ts +++ b/packages/chain-sdk/src/client.ts @@ -15,6 +15,7 @@ import { IStorage, Storage } from './api/storage'; import { Basic, IBasic } from './api/basic'; import { Gashub, IGashub } from './api/gashub'; import { RpcQueryClient } from './api/queryclient'; +import { IVirtualGroup, VirtualGroup } from './api/virtualGroup'; @injectable() export class Client { @@ -37,6 +38,7 @@ export class Client { const sp = container.resolve(Sp); const storage = container.resolve(Storage); const offchainauth = container.resolve(OffChainAuth); + const virtualGroup = container.resolve(VirtualGroup); return new Client( account, @@ -54,6 +56,7 @@ export class Client { sp, storage, offchainauth, + virtualGroup, ); } @@ -73,5 +76,6 @@ export class Client { public sp: ISp, public storage: IStorage, public offchainauth: IOffChainAuth, + public virtualGroup: IVirtualGroup, ) {} } diff --git a/packages/chain-sdk/src/constants/typeUrl.ts b/packages/chain-sdk/src/constants/typeUrl.ts index 85d19925..62abf1c8 100644 --- a/packages/chain-sdk/src/constants/typeUrl.ts +++ b/packages/chain-sdk/src/constants/typeUrl.ts @@ -11,6 +11,7 @@ export const MsgDepositTypeUrl = '/greenfield.payment.MsgDeposit'; export const MsgDisableRefundTypeUrl = '/greenfield.payment.MsgDisableRefund'; export const MsgWithdrawTypeUrl = '/greenfield.payment.MsgWithdraw'; export const MsgCancelCreateObjectTypeUrl = '/greenfield.storage.MsgCancelCreateObject'; +export const MsgMigrateBucketTypeUrl = '/greenfield.storage.MsgMigrateBucket'; export const MsgCreateBucketTypeUrl = '/greenfield.storage.MsgCreateBucket'; export const MsgCreateGroupTypeUrl = '/greenfield.storage.MsgCreateGroup'; export const MsgCreateObjectTypeUrl = '/greenfield.storage.MsgCreateObject'; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts index 54c04e49..c56a2136 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts @@ -1,19 +1,15 @@ export const MsgCreateBucketSDKTypeEIP712 = { Msg1: [ { - name: 'type', - type: 'string', - }, - { - name: 'creator', + name: 'bucket_name', type: 'string', }, { - name: 'bucket_name', - type: 'string', + name: 'charged_read_quota', + type: 'uint64', }, { - name: 'visibility', + name: 'creator', type: 'string', }, { @@ -29,8 +25,12 @@ export const MsgCreateBucketSDKTypeEIP712 = { type: 'TypeMsg1PrimarySpApproval', }, { - name: 'charged_read_quota', - type: 'uint64', + name: 'type', + type: 'string', + }, + { + name: 'visibility', + type: 'string', }, ], TypeMsg1PrimarySpApproval: [ @@ -38,6 +38,10 @@ export const MsgCreateBucketSDKTypeEIP712 = { name: 'expired_height', type: 'uint64', }, + { + name: 'global_virtual_group_family_id', + type: 'uint32', + }, { name: 'sig', type: 'bytes', diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts index 3df43495..b1b92a4e 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts @@ -1,17 +1,21 @@ export const MsgCreateObjectSDKTypeEIP712 = { Msg1: [ { - name: 'type', + name: 'bucket_name', type: 'string', }, { - name: 'creator', + name: 'content_type', type: 'string', }, { - name: 'bucket_name', + name: 'creator', type: 'string', }, + { + name: 'expect_checksums', + type: 'bytes[]', + }, { name: 'object_name', type: 'string', @@ -20,29 +24,21 @@ export const MsgCreateObjectSDKTypeEIP712 = { name: 'payload_size', type: 'uint64', }, - { - name: 'visibility', - type: 'string', - }, - { - name: 'content_type', - type: 'string', - }, { name: 'primary_sp_approval', type: 'TypeMsg1PrimarySpApproval', }, { - name: 'expect_checksums', - type: 'bytes[]', + name: 'redundancy_type', + type: 'string', }, { - name: 'redundancy_type', + name: 'type', type: 'string', }, { - name: 'expect_secondary_sp_addresses', - type: 'string[]', + name: 'visibility', + type: 'string', }, ], TypeMsg1PrimarySpApproval: [ @@ -50,6 +46,10 @@ export const MsgCreateObjectSDKTypeEIP712 = { name: 'expired_height', type: 'uint64', }, + { + name: 'global_virtual_group_family_id', + type: 'uint32', + }, { name: 'sig', type: 'bytes', diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMigrateBucket.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgMigrateBucket.ts new file mode 100644 index 00000000..7a45b92c --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgMigrateBucket.ts @@ -0,0 +1,34 @@ +export const MsgMigrateBucketSDKTypeEIP712 = { + Msg1: [ + { + name: 'bucket_name', + type: 'string', + }, + { + name: 'dst_primary_sp_approval', + type: 'TypeMsg1DstPrimarySpApproval', + }, + { + name: 'dst_primary_sp_id', + type: 'uint32', + }, + { + name: 'operator', + type: 'string', + }, + { + name: 'type', + type: 'string', + }, + ], + TypeMsg1DstPrimarySpApproval: [ + { + name: 'expired_height', + type: 'uint64', + }, + { + name: 'global_virtual_group_family_id', + type: 'uint32', + }, + ], +}; diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index 5c605dd3..ff9242b0 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -2,6 +2,7 @@ import { RedundancyType, VisibilityType, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; +import { MsgMigrateBucket } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; export type SignType = 'authTypeV2' | 'offChainAuth'; @@ -27,6 +28,7 @@ export interface ICreateBucketByAuthTypeV2 extends IBaseGetCreateBucket { export type TCreateBucket = ICreateBucketByOffChainAuth | ICreateBucketByAuthTypeV2; export interface ISpInfo { + id: number; endpoint: string; primarySpAddress?: string; sealAddress: string; @@ -51,6 +53,7 @@ export interface ICreateBucketMsgType { primary_sp_approval: { expired_height: string; sig: string; + global_virtual_group_family_id: number; }; charged_read_quota: string; } @@ -165,9 +168,10 @@ export interface ICreateObjectMsgType { primary_sp_approval: { expired_height: string; sig: string; + global_virtual_group_family_id: number; }; expect_checksums: string[]; - expect_secondary_sp_addresses: string[]; + // expect_secondary_sp_addresses: string[]; redundancy_type: keyof typeof RedundancyType; // charged_read_quota: string; } @@ -353,3 +357,31 @@ export interface TGetCurrentSeedStringParams { chainId: number; provider: any; } + +export interface IBaseMigrateBucket { + params: MsgMigrateBucket; + spInfo: ISpInfo; +} + +export interface IMigrateBucketByOffChainAuth extends IBaseMigrateBucket { + signType: 'offChainAuth'; + domain: string; + seedString: string; +} + +export interface IMigrateBucketByAuthTypeV2 extends IBaseMigrateBucket { + signType?: 'authTypeV2'; +} + +export type IMigrateBucket = IMigrateBucketByOffChainAuth | IMigrateBucketByAuthTypeV2; + +export interface IMigrateBucketMsgType { + operator: string; + bucket_name: string; + dst_primary_sp_id: number; + dst_primary_sp_approval: { + expired_height: string; + sig: string; + global_virtual_group_family_id: number; + }; +} From e2ebac6470c883013ff7dfaf610649b5e38f47bd Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Thu, 20 Jul 2023 17:03:05 +0800 Subject: [PATCH 091/433] Feat/batch upload (#171) * feat: Feegrant * feat: Feegrant * Create angry-horses-enjoy.md --- .changeset/angry-horses-enjoy.md | 6 + examples/nextjs/package.json | 1 + .../nextjs/src/components/batch/index.tsx | 87 +++++++ examples/nextjs/src/pages/tx.tsx | 3 + packages/chain-sdk/src/api/account.ts | 3 + packages/chain-sdk/src/api/basic.ts | 11 +- packages/chain-sdk/src/api/feegrant.ts | 65 +++++- packages/chain-sdk/src/utils/allowance.ts | 17 ++ pnpm-lock.yaml | 213 ++++++------------ 9 files changed, 252 insertions(+), 154 deletions(-) create mode 100644 .changeset/angry-horses-enjoy.md create mode 100644 examples/nextjs/src/components/batch/index.tsx create mode 100644 packages/chain-sdk/src/utils/allowance.ts diff --git a/.changeset/angry-horses-enjoy.md b/.changeset/angry-horses-enjoy.md new file mode 100644 index 00000000..4648bbaf --- /dev/null +++ b/.changeset/angry-horses-enjoy.md @@ -0,0 +1,6 @@ +--- +"@demo/wallet": patch +"@bnb-chain/greenfield-chain-sdk": patch +--- + +feat: Feegrant `grantAllowance` API diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 0a9b5e42..7a4252d9 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -17,6 +17,7 @@ "@cosmjs/proto-signing": "^0.29.5", "@cosmjs/stargate": "^0.29.5", "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/wallet": "^5.7.0", "@metamask/eth-sig-util": "^5.0.2", "@next/font": "13.1.6", "@rainbow-me/rainbowkit": "^1.0.5", diff --git a/examples/nextjs/src/components/batch/index.tsx b/examples/nextjs/src/components/batch/index.tsx new file mode 100644 index 00000000..4e3d72dd --- /dev/null +++ b/examples/nextjs/src/components/batch/index.tsx @@ -0,0 +1,87 @@ +import { client, selectSp } from '@/client'; +import { GRNToString, newBucketGRN, PermissionTypes } from '@bnb-chain/greenfield-chain-sdk'; +import { Wallet } from '@ethersproject/wallet'; +import { useState } from 'react'; +import { useAccount, useNetwork } from 'wagmi'; + +export const FeeGrant = () => { + const { address } = useAccount(); + const [bucketName, setBucketName] = useState(''); + + return ( + <> +

    Feegrant

    + bucket name : + { + setBucketName(e.target.value); + }} + /> +
    + + + ); +}; diff --git a/examples/nextjs/src/pages/tx.tsx b/examples/nextjs/src/pages/tx.tsx index 9e869407..8bbb6e7d 100644 --- a/examples/nextjs/src/pages/tx.tsx +++ b/examples/nextjs/src/pages/tx.tsx @@ -1,3 +1,4 @@ +import { FeeGrant } from '@/components/batch'; import { Bucket } from '@/components/bucket'; import { Deposit } from '@/components/deposit'; import { Group } from '@/components/group'; @@ -44,6 +45,8 @@ export default function Tx() {

    + +
    )} diff --git a/packages/chain-sdk/src/api/account.ts b/packages/chain-sdk/src/api/account.ts index 171ccb4c..f1374b63 100644 --- a/packages/chain-sdk/src/api/account.ts +++ b/packages/chain-sdk/src/api/account.ts @@ -17,8 +17,11 @@ import { QueryGetPaymentAccountsByOwnerResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; import { MsgCreatePaymentAccount } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/tx'; +import { toBuffer } from '@ethereumjs/util'; +import { hexlify } from '@ethersproject/bytes'; import { container, delay, inject, singleton } from 'tsyringe'; import { + Long, MsgCreatePaymentAccountTypeUrl, MsgMultiSendTypeUrl, MsgSendTypeUrl, diff --git a/packages/chain-sdk/src/api/basic.ts b/packages/chain-sdk/src/api/basic.ts index b7bba165..60e2d380 100644 --- a/packages/chain-sdk/src/api/basic.ts +++ b/packages/chain-sdk/src/api/basic.ts @@ -23,7 +23,7 @@ import { import { makeAuthInfoBytes } from '@cosmjs/proto-signing'; import { DeliverTxResponse, StargateClient } from '@cosmjs/stargate'; import { Tendermint37Client } from '@cosmjs/tendermint-rpc'; -import { toBuffer } from '@ethereumjs/util'; +import { bufferToHex, toBuffer } from '@ethereumjs/util'; import Long from 'long'; import { container, inject, singleton } from 'tsyringe'; import { BroadcastOptions, ISimulateGasFee, MetaTxInfo, SimulateOptions, TxResponse } from '..'; @@ -366,6 +366,9 @@ export class Basic implements IBasic { txOption, ); + // console.log('txOption', txOption); + // console.log('msgEIP712', msgEIP712); + let signature, pubKey = undefined; @@ -388,8 +391,14 @@ export class Basic implements IBasic { messageHash, }); pubKey = makeCosmsPubKey(pk); + + // console.log('messageHash', bufferToHex(messageHash)); + // console.log('signature', signature); + // console.log('pubKey', pubKey, bufferToHex(Buffer.from(pubKey.value))); } + // console.log('eip712', eip712, JSON.stringify(eip712)); + const authInfoBytes = this.getAuthInfoBytes({ denom, sequence: accountInfo.sequence + '', diff --git a/packages/chain-sdk/src/api/feegrant.ts b/packages/chain-sdk/src/api/feegrant.ts index 6e53ff7c..682e6147 100644 --- a/packages/chain-sdk/src/api/feegrant.ts +++ b/packages/chain-sdk/src/api/feegrant.ts @@ -1,5 +1,9 @@ import { MsgGrantAllowanceSDKTypeEIP712 } from '@/messages/feegrant/MsgGrantAllowance'; import { MsgRevokeAllowanceSDKTypeEIP712 } from '@/messages/feegrant/MsgRevokeAllowance'; +import { + AllowedMsgAllowance, + BasicAllowance, +} from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/feegrant'; import { QueryAllowanceRequest, QueryAllowanceResponse, @@ -10,8 +14,16 @@ import { MsgGrantAllowance, MsgRevokeAllowance, } from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/tx'; +import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; +import { Timestamp } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/timestamp'; +import { + base64FromBytes, + bytesFromBase64, + toTimestamp, +} from '@bnb-chain/greenfield-cosmos-types/helpers'; +import { toBuffer } from '@ethereumjs/util'; import { container, singleton } from 'tsyringe'; -import { MsgGrantAllowanceTypeUrl, MsgRevokeAllowanceTypeUrl, TxResponse } from '..'; +import { encodeToHex, MsgGrantAllowanceTypeUrl, MsgRevokeAllowanceTypeUrl, TxResponse } from '..'; import { Basic } from './basic'; import { RpcQueryClient } from './queryclient'; @@ -31,12 +43,59 @@ export class FeeGrant implements IFeeGrant { private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); public async grantAllowance(msg: MsgGrantAllowance) { + const basicAllowance: BasicAllowance = { + spendLimit: [ + { + amount: '111', + denom: 'BNB', + }, + ], + }; + + const allowedMsgAllowance: AllowedMsgAllowance = { + allowedMessages: ['/greenfield.storage.MsgCreateObject'], + allowance: Any.fromPartial({ + typeUrl: '/cosmos.feegrant.v1beta1.BasicAllowance', + value: BasicAllowance.encode(basicAllowance).finish(), + }), + }; + + const grantAllowance: MsgGrantAllowance = { + ...msg, + allowance: Any.fromPartial({ + typeUrl: '/cosmos.feegrant.v1beta1.AllowedMsgAllowance', + value: AllowedMsgAllowance.encode(allowedMsgAllowance).finish(), + }), + }; + + const marshal = { + '@type': '/cosmos.feegrant.v1beta1.AllowedMsgAllowance', + allowed_messages: ['/greenfield.storage.MsgCreateObject'], + allowance: Any.fromPartial({ + typeUrl: '/cosmos.feegrant.v1beta1.BasicAllowance', + value: BasicAllowance.encode(basicAllowance).finish(), + }), + // expiration: null, + // spend_limit: [ + // { + // amount: '111', + // denom: 'BNB', + // }, + // ], + }; + return await this.basic.tx( MsgGrantAllowanceTypeUrl, msg.granter, MsgGrantAllowanceSDKTypeEIP712, - MsgGrantAllowance.toSDK(msg), - MsgGrantAllowance.encode(msg).finish(), + { + ...MsgGrantAllowance.toSDK(grantAllowance), + allowance: { + type: grantAllowance.allowance?.typeUrl, + value: toBuffer('0x' + encodeToHex(JSON.stringify(marshal))), + }, + }, + MsgGrantAllowance.encode(grantAllowance).finish(), ); } diff --git a/packages/chain-sdk/src/utils/allowance.ts b/packages/chain-sdk/src/utils/allowance.ts new file mode 100644 index 00000000..eb7143eb --- /dev/null +++ b/packages/chain-sdk/src/utils/allowance.ts @@ -0,0 +1,17 @@ +// import { AllowedMsgAllowance } from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/feegrant'; +// import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; + +// const myAny: Any = { +// typeUrl: '/cosmos.feegrant.v1beta1.MsgAllowance', +// // value: +// }; + +// const x: AllowedMsgAllowance = { +// allowedMessages: [], +// allowance: myAny, +// }; + +// export const NewAllowedMsgAllowance = ( +// allowance: any, +// allowedMsgs: string[], +// ): AllowedMsgAllowance => {}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 084d14b7..c5bbf66b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,7 +43,7 @@ importers: version: 3.0.2(rollup@2.79.1) '@rollup/plugin-typescript': specifier: ^8.5.0 - version: 8.5.0(rollup@2.79.1)(typescript@5.1.6) + version: 8.5.0(rollup@2.79.1)(typescript@4.9.5) '@types/chai': specifier: ^4.3.5 version: 4.3.5 @@ -61,10 +61,10 @@ importers: version: 18.2.5 '@typescript-eslint/eslint-plugin': specifier: ^5.59.11 - version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6) + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) '@typescript-eslint/parser': specifier: ^5.59.11 - version: 5.59.11(eslint@8.42.0)(typescript@5.1.6) + version: 5.59.11(eslint@8.42.0)(typescript@4.9.5) chai: specifier: ^4.3.7 version: 4.3.7 @@ -76,7 +76,7 @@ importers: version: 8.42.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@5.1.6) + version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@4.9.5) eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.1(eslint@8.42.0)(prettier@2.8.8) @@ -116,6 +116,9 @@ importers: '@ethersproject/signing-key': specifier: ^5.7.0 version: 5.7.0 + '@ethersproject/wallet': + specifier: ^5.7.0 + version: 5.7.0 '@metamask/eth-sig-util': specifier: ^5.0.2 version: 5.0.2 @@ -268,7 +271,7 @@ importers: version: 3.0.1 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@20.4.2)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) mime: specifier: ^3.0.0 version: 3.0.0 @@ -292,7 +295,7 @@ importers: version: 29.1.0(@babel/core@7.22.9)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.4.2)(typescript@4.9.5) + version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.0 @@ -313,7 +316,7 @@ importers: version: 29.5.1 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@20.4.2)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) rollup: specifier: ^2.79.1 version: 2.79.1 @@ -337,7 +340,7 @@ importers: version: 29.1.0(@babel/core@7.22.9)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.4.2)(typescript@4.9.5) + version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.0 @@ -2409,7 +2412,7 @@ packages: lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.1.6) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -4047,7 +4050,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-typescript@8.5.0(rollup@2.79.1)(typescript@5.1.6): + /@rollup/plugin-typescript@8.5.0(rollup@2.79.1)(typescript@4.9.5): resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} engines: {node: '>=8.0.0'} peerDependencies: @@ -4061,7 +4064,7 @@ packages: '@rollup/pluginutils': 3.1.0(rollup@2.79.1) resolve: 1.22.2 rollup: 2.79.1 - typescript: 5.1.6 + typescript: 4.9.5 dev: true /@rollup/plugin-wasm@6.1.2(rollup@2.79.1): @@ -4579,10 +4582,6 @@ packages: resolution: {integrity: sha512-MFg7ua/bRtnA1hYE3pVyWxGd/r7aMqjNOdHvlSsXV3n8iaeGKkOaPzpJh6/ovf4bEXWcojkeMJpTsq3mzXW4IQ==} dev: false - /@types/node@20.4.2: - resolution: {integrity: sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==} - dev: true - /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -4687,7 +4686,7 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6): + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4699,36 +4698,36 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/type-utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) eslint: 8.42.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.1 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.59.7(eslint@8.42.0)(typescript@5.1.6): + /@typescript-eslint/experimental-utils@5.59.7(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.7(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.59.7(eslint@8.42.0)(typescript@4.9.5) eslint: 8.42.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser@5.59.11(eslint@8.42.0)(typescript@5.1.6): + /@typescript-eslint/parser@5.59.11(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4740,10 +4739,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) eslint: 8.42.0 - typescript: 5.1.6 + typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -4790,7 +4789,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.7 dev: true - /@typescript-eslint/type-utils@5.59.11(eslint@8.42.0)(typescript@5.1.6): + /@typescript-eslint/type-utils@5.59.11(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4800,12 +4799,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.6) - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) eslint: 8.42.0 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true @@ -4824,7 +4823,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.59.11(typescript@5.1.6): + /@typescript-eslint/typescript-estree@5.59.11(typescript@4.9.5): resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4839,8 +4838,8 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.1 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -4865,7 +4864,7 @@ packages: - supports-color dev: false - /@typescript-eslint/typescript-estree@5.59.7(typescript@5.1.6): + /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4880,13 +4879,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.2 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.11(eslint@8.42.0)(typescript@5.1.6): + /@typescript-eslint/utils@5.59.11(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4897,7 +4896,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) eslint: 8.42.0 eslint-scope: 5.1.1 semver: 7.5.1 @@ -4906,7 +4905,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.59.7(eslint@8.42.0)(typescript@5.1.6): + /@typescript-eslint/utils@5.59.7(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4917,7 +4916,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.7 '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) eslint: 8.42.0 eslint-scope: 5.1.1 semver: 7.5.2 @@ -6486,7 +6485,7 @@ packages: dependencies: '@types/node': 18.16.18 cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.1.6) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) typescript: 4.9.5 dev: true @@ -7102,7 +7101,7 @@ packages: - supports-color dev: false - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@5.1.6): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7115,19 +7114,19 @@ packages: '@babel/core': 7.22.5 '@babel/eslint-parser': 7.21.8(@babel/core@7.22.5)(eslint@8.42.0) '@rushstack/eslint-patch': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6) - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.42.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0) eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.42.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@5.1.6) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@4.9.5) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.42.0) eslint-plugin-react: 7.32.2(eslint@8.42.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.42.0) - eslint-plugin-testing-library: 5.11.0(eslint@8.42.0)(typescript@5.1.6) - typescript: 5.1.6 + eslint-plugin-testing-library: 5.11.0(eslint@8.42.0)(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -7187,7 +7186,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) debug: 3.2.7 eslint: 8.40.0 eslint-import-resolver-node: 0.3.7 @@ -7216,7 +7215,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) debug: 3.2.7 eslint: 8.42.0 eslint-import-resolver-node: 0.3.7 @@ -7249,7 +7248,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -7282,7 +7281,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -7305,7 +7304,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@5.1.6): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -7318,8 +7317,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@5.1.6) - '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.42.0)(typescript@4.9.5) eslint: 8.42.0 transitivePeerDependencies: - supports-color @@ -7458,13 +7457,13 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-testing-library@5.11.0(eslint@8.42.0)(typescript@5.1.6): + /eslint-plugin-testing-library@5.11.0(eslint@8.42.0)(typescript@4.9.5): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) eslint: 8.42.0 transitivePeerDependencies: - supports-color @@ -8854,7 +8853,7 @@ packages: - supports-color dev: true - /jest-cli@29.5.0(@types/node@20.4.2)(ts-node@10.9.1): + /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -8871,7 +8870,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@20.4.2)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -8917,47 +8916,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.4.2)(typescript@4.9.5) - transitivePeerDependencies: - - supports-color - dev: true - - /jest-config@29.5.0(@types/node@20.4.2)(ts-node@10.9.1): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.22.5 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.4.2 - babel-jest: 29.5.0(@babel/core@7.22.5) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.4.2)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true @@ -9257,7 +9216,7 @@ packages: supports-color: 8.1.1 dev: true - /jest@29.5.0(@types/node@20.4.2)(ts-node@10.9.1): + /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -9270,7 +9229,7 @@ packages: '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@20.4.2)(ts-node@10.9.1) + jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color @@ -11741,7 +11700,7 @@ packages: '@babel/core': 7.22.9 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@20.4.2)(ts-node@10.9.1) + jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -11751,7 +11710,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.16.18)(typescript@5.1.6): + /ts-node@10.9.1(@types/node@18.16.18)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -11777,37 +11736,6 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.1.6 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - - /ts-node@10.9.1(@types/node@20.4.2)(typescript@4.9.5): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 20.4.2 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -11838,16 +11766,6 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 - dev: false - - /tsutils@3.21.0(typescript@5.1.6): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.1.6 /tsyringe@4.7.0: resolution: {integrity: sha512-ncFDM1jTLsok4ejMvSW5jN1VGPQD48y2tfAR0pdptWRKYX4bkbqPt92k7KJ5RFJ1KV36JEs/+TMh7I6OUgj74g==} @@ -11944,11 +11862,6 @@ packages: engines: {node: '>=4.2.0'} hasBin: true - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} - engines: {node: '>=14.17'} - hasBin: true - /uint8arrays@3.1.1: resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} dependencies: From 4d8866501f1693ebe2593c51fc9c74bd728fba70 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 21 Jul 2023 00:42:59 +0800 Subject: [PATCH 092/433] Feat/batch upload (#174) * feat: Feegrant * feat: Feegrant * feat: Feegrant grantAllowance API * feat: CreateObject example * feat: CreateBucket example * feat: Transfer example * feat: AuthInfoBytes add feePayer and feeGranter --- .changeset/selfish-pianos-try.md | 5 + .../nextjs/src/components/batch/index.tsx | 143 +++++++++++++----- packages/chain-sdk/src/api/basic.ts | 22 ++- packages/chain-sdk/src/api/feegrant.ts | 73 +++------ packages/chain-sdk/src/constants/typeUrl.ts | 2 + packages/chain-sdk/src/keymanage/index.ts | 4 +- packages/chain-sdk/src/utils/allowance.ts | 90 +++++++++-- packages/chain-sdk/src/utils/index.ts | 3 +- 8 files changed, 226 insertions(+), 116 deletions(-) create mode 100644 .changeset/selfish-pianos-try.md diff --git a/.changeset/selfish-pianos-try.md b/.changeset/selfish-pianos-try.md new file mode 100644 index 00000000..64fc4384 --- /dev/null +++ b/.changeset/selfish-pianos-try.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +feat: AuthInfoBytes add feePayer and feeGranter diff --git a/examples/nextjs/src/components/batch/index.tsx b/examples/nextjs/src/components/batch/index.tsx index 4e3d72dd..21781c17 100644 --- a/examples/nextjs/src/components/batch/index.tsx +++ b/examples/nextjs/src/components/batch/index.tsx @@ -1,12 +1,20 @@ import { client, selectSp } from '@/client'; -import { GRNToString, newBucketGRN, PermissionTypes } from '@bnb-chain/greenfield-chain-sdk'; +import { + GRNToString, + MsgCreateObjectTypeUrl, + newBucketGRN, + PermissionTypes, +} from '@bnb-chain/greenfield-chain-sdk'; import { Wallet } from '@ethersproject/wallet'; import { useState } from 'react'; -import { useAccount, useNetwork } from 'wagmi'; +import { parseEther } from 'viem'; +import { useAccount } from 'wagmi'; export const FeeGrant = () => { const { address } = useAccount(); const [bucketName, setBucketName] = useState(''); + const [objectName, setObjectName] = useState(''); + const [wallet, setWallet] = useState(null); return ( <> @@ -19,68 +27,123 @@ export const FeeGrant = () => { setBucketName(e.target.value); }} /> + object name : + { + setObjectName(e.target.value); + }} + />
    +
    + +
    + ); diff --git a/packages/chain-sdk/src/api/basic.ts b/packages/chain-sdk/src/api/basic.ts index 60e2d380..f6a3c3f0 100644 --- a/packages/chain-sdk/src/api/basic.ts +++ b/packages/chain-sdk/src/api/basic.ts @@ -183,6 +183,8 @@ export class Basic implements IBasic { opts, ); + // console.log('txRaw', bufferToHex(Buffer.from(rawTxBytes))); + return await this.broadcastRawTx(rawTxBytes); }, metaTxInfo: { @@ -211,6 +213,8 @@ export class Basic implements IBasic { gasLimit: 0, gasPrice: '0', pubKey: makeCosmsPubKey(ZERO_PUBKEY), + granter: '', + payer: '', }); const tx = Tx.fromPartial({ authInfo: AuthInfo.decode(authInfoBytes), @@ -255,6 +259,7 @@ export class Basic implements IBasic { gasPrice, privateKey, payer, + granter, signTypedDataCallback = defaultSignTypedData, } = opts; @@ -264,7 +269,7 @@ export class Basic implements IBasic { denom, String(gasLimit), payer, - '', + granter, ); const wrapperTypes = generateTypes(types); const multiMessages = mergeMultiMessage(txs); @@ -294,6 +299,8 @@ export class Basic implements IBasic { gasLimit, gasPrice, pubKey, + granter, + payer, }); const txRaw = TxRaw.fromPartial({ @@ -308,12 +315,12 @@ export class Basic implements IBasic { } private getAuthInfoBytes( - params: Pick & { + params: Pick & { pubKey: BaseAccount['pubKey']; sequence: string; }, ) { - const { pubKey, denom = DEFAULT_DENOM, sequence, gasLimit, gasPrice } = params; + const { pubKey, denom = DEFAULT_DENOM, sequence, gasLimit, gasPrice, granter, payer } = params; if (!pubKey) throw new Error('pubKey is required'); const feeAmount: Coin[] = [ @@ -322,8 +329,8 @@ export class Basic implements IBasic { amount: String(BigInt(gasLimit) * BigInt(gasPrice)), }, ]; - const feeGranter = undefined; - const feePayer = undefined; + const feeGranter = granter; + const feePayer = payer; const authInfoBytes = makeAuthInfoBytes( [{ pubkey: pubKey, sequence: Number(sequence) }], feeAmount, @@ -355,6 +362,8 @@ export class Basic implements IBasic { gasPrice, privateKey, signTypedDataCallback = defaultSignTypedData, + granter, + payer, } = txOption; const eip712 = this.getEIP712Struct( typeUrl, @@ -383,6 +392,7 @@ export class Basic implements IBasic { msgEIP712, txOption, ); + // console.log('signature', signature); } else { signature = await signTypedDataCallback(accountInfo.address, JSON.stringify(eip712)); const messageHash = eip712Hash(JSON.stringify(eip712)); @@ -405,6 +415,8 @@ export class Basic implements IBasic { gasLimit, gasPrice, pubKey, + granter, + payer, }); const txRaw = TxRaw.fromPartial({ diff --git a/packages/chain-sdk/src/api/feegrant.ts b/packages/chain-sdk/src/api/feegrant.ts index 682e6147..b1fc6c20 100644 --- a/packages/chain-sdk/src/api/feegrant.ts +++ b/packages/chain-sdk/src/api/feegrant.ts @@ -1,9 +1,5 @@ import { MsgGrantAllowanceSDKTypeEIP712 } from '@/messages/feegrant/MsgGrantAllowance'; import { MsgRevokeAllowanceSDKTypeEIP712 } from '@/messages/feegrant/MsgRevokeAllowance'; -import { - AllowedMsgAllowance, - BasicAllowance, -} from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/feegrant'; import { QueryAllowanceRequest, QueryAllowanceResponse, @@ -14,21 +10,24 @@ import { MsgGrantAllowance, MsgRevokeAllowance, } from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/tx'; -import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; -import { Timestamp } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/timestamp'; -import { - base64FromBytes, - bytesFromBase64, - toTimestamp, -} from '@bnb-chain/greenfield-cosmos-types/helpers'; import { toBuffer } from '@ethereumjs/util'; import { container, singleton } from 'tsyringe'; -import { encodeToHex, MsgGrantAllowanceTypeUrl, MsgRevokeAllowanceTypeUrl, TxResponse } from '..'; +import { + encodeToHex, + IGrantAllowance, + MsgGrantAllowanceTypeUrl, + MsgRevokeAllowanceTypeUrl, + newAllowedMsgAllowance, + newBasicAllowance, + newMarshal, + newMsgGrantAllowance, + TxResponse, +} from '..'; import { Basic } from './basic'; import { RpcQueryClient } from './queryclient'; export interface IFeeGrant { - grantAllowance(msg: MsgGrantAllowance): Promise; + grantAllowance(msg: IGrantAllowance): Promise; revokeAllowance(msg: MsgRevokeAllowance): Promise; @@ -42,51 +41,17 @@ export class FeeGrant implements IFeeGrant { private basic: Basic = container.resolve(Basic); private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); - public async grantAllowance(msg: MsgGrantAllowance) { - const basicAllowance: BasicAllowance = { - spendLimit: [ - { - amount: '111', - denom: 'BNB', - }, - ], - }; + public async grantAllowance(params: IGrantAllowance) { + const { amount, denom, allowedMessages, grantee, granter } = params; - const allowedMsgAllowance: AllowedMsgAllowance = { - allowedMessages: ['/greenfield.storage.MsgCreateObject'], - allowance: Any.fromPartial({ - typeUrl: '/cosmos.feegrant.v1beta1.BasicAllowance', - value: BasicAllowance.encode(basicAllowance).finish(), - }), - }; - - const grantAllowance: MsgGrantAllowance = { - ...msg, - allowance: Any.fromPartial({ - typeUrl: '/cosmos.feegrant.v1beta1.AllowedMsgAllowance', - value: AllowedMsgAllowance.encode(allowedMsgAllowance).finish(), - }), - }; - - const marshal = { - '@type': '/cosmos.feegrant.v1beta1.AllowedMsgAllowance', - allowed_messages: ['/greenfield.storage.MsgCreateObject'], - allowance: Any.fromPartial({ - typeUrl: '/cosmos.feegrant.v1beta1.BasicAllowance', - value: BasicAllowance.encode(basicAllowance).finish(), - }), - // expiration: null, - // spend_limit: [ - // { - // amount: '111', - // denom: 'BNB', - // }, - // ], - }; + const basicAllowance = newBasicAllowance(amount, denom); + const allowedMsgAllowance = newAllowedMsgAllowance(allowedMessages, basicAllowance); + const grantAllowance = newMsgGrantAllowance(grantee, granter, allowedMsgAllowance); + const marshal = newMarshal(amount, denom, allowedMessages); return await this.basic.tx( MsgGrantAllowanceTypeUrl, - msg.granter, + granter, MsgGrantAllowanceSDKTypeEIP712, { ...MsgGrantAllowance.toSDK(grantAllowance), diff --git a/packages/chain-sdk/src/constants/typeUrl.ts b/packages/chain-sdk/src/constants/typeUrl.ts index 62abf1c8..b7b52313 100644 --- a/packages/chain-sdk/src/constants/typeUrl.ts +++ b/packages/chain-sdk/src/constants/typeUrl.ts @@ -28,3 +28,5 @@ export const MsgUpdateBucketInfoTypeUrl = '/greenfield.storage.MsgUpdateBucketIn export const MsgUpdateGroupExtraTypeUrl = '/greenfield.storage.MsgUpdateGroupExtra'; export const MsgUpdateGroupMemberTypeUrl = '/greenfield.storage.MsgUpdateGroupMember'; export const MsgUpdateObjectInfoTypeUrl = '/greenfield.storage.MsgUpdateObjectInfo'; +export const BasicAllowanceTypeUrl = '/cosmos.feegrant.v1beta1.BasicAllowance'; +export const AllowedMsgAllowanceTypeUrl = '/cosmos.feegrant.v1beta1.AllowedMsgAllowance'; diff --git a/packages/chain-sdk/src/keymanage/index.ts b/packages/chain-sdk/src/keymanage/index.ts index 441b2ccf..cc21589f 100644 --- a/packages/chain-sdk/src/keymanage/index.ts +++ b/packages/chain-sdk/src/keymanage/index.ts @@ -25,13 +25,13 @@ export const createEIP712Data = ( MsgSDK: object, txOption: BroadcastOptions, ) => { - const { gasLimit, gasPrice, denom, payer } = txOption; + const { gasLimit, gasPrice, denom, payer, granter } = txOption; const fee = generateFee( String(BigInt(gasLimit) * BigInt(gasPrice)), denom, String(gasLimit), payer, - '', + granter, ); const wrapperTypes = generateTypes(MsgSDKTypeEIP712); const wrapperMsg = typeWrapper(typeUrl, MsgSDK); diff --git a/packages/chain-sdk/src/utils/allowance.ts b/packages/chain-sdk/src/utils/allowance.ts index eb7143eb..d35fc54b 100644 --- a/packages/chain-sdk/src/utils/allowance.ts +++ b/packages/chain-sdk/src/utils/allowance.ts @@ -1,17 +1,79 @@ -// import { AllowedMsgAllowance } from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/feegrant'; -// import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; +import { + AllowedMsgAllowance, + BasicAllowance, +} from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/feegrant'; +import { MsgGrantAllowance } from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/tx'; +import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; +import { AllowedMsgAllowanceTypeUrl, BasicAllowanceTypeUrl, DEFAULT_DENOM } from '..'; -// const myAny: Any = { -// typeUrl: '/cosmos.feegrant.v1beta1.MsgAllowance', -// // value: -// }; +export interface IGrantAllowance { + amount: string; + denom: string; + allowedMessages: string[]; + granter: MsgGrantAllowance['granter']; + grantee: MsgGrantAllowance['grantee']; +} -// const x: AllowedMsgAllowance = { -// allowedMessages: [], -// allowance: myAny, -// }; +export const newBasicAllowance = ( + amount: string, + denom: string = DEFAULT_DENOM, +): BasicAllowance => { + return { + spendLimit: [ + { + amount, + denom, + }, + ], + // expiration: null, + }; +}; -// export const NewAllowedMsgAllowance = ( -// allowance: any, -// allowedMsgs: string[], -// ): AllowedMsgAllowance => {}; +export const newAllowedMsgAllowance = ( + allowedMessages: string[], + basicAllowance: BasicAllowance, +): AllowedMsgAllowance => { + return { + allowedMessages, + allowance: Any.fromPartial({ + typeUrl: BasicAllowanceTypeUrl, + value: BasicAllowance.encode(basicAllowance).finish(), + }), + }; +}; + +export const newMsgGrantAllowance = ( + grantee: string, + granter: string, + allowedMsgAllowance: AllowedMsgAllowance, +): MsgGrantAllowance => { + return { + grantee, + granter, + allowance: Any.fromPartial({ + typeUrl: AllowedMsgAllowanceTypeUrl, + value: AllowedMsgAllowance.encode(allowedMsgAllowance).finish(), + }), + }; +}; + +export const newMarshal = ( + amount: string, + denom: string = DEFAULT_DENOM, + allowed_messages: string[], +) => { + return { + '@type': AllowedMsgAllowanceTypeUrl, + allowance: { + '@type': BasicAllowanceTypeUrl, + expiration: null, + spend_limit: [ + { + amount, + denom, + }, + ], + }, + allowed_messages, + }; +}; diff --git a/packages/chain-sdk/src/utils/index.ts b/packages/chain-sdk/src/utils/index.ts index 939bfa5d..f04608fd 100644 --- a/packages/chain-sdk/src/utils/index.ts +++ b/packages/chain-sdk/src/utils/index.ts @@ -1,5 +1,6 @@ +export * from './allowance'; export * from './encoding'; export * from './grn'; export * from './s3'; -export * from './units'; export * from './time'; +export * from './units'; From dc877833ed400166fd1384b315c9ac068d6a80f5 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Mon, 24 Jul 2023 18:01:46 +0800 Subject: [PATCH 093/433] feat: Add Two Apis (#179) * feat: Add Two Apis * Create mean-wombats-remain.md --- .changeset/mean-wombats-remain.md | 5 ++++ packages/chain-sdk/src/api/objectt.ts | 42 ++++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 .changeset/mean-wombats-remain.md diff --git a/.changeset/mean-wombats-remain.md b/.changeset/mean-wombats-remain.md new file mode 100644 index 00000000..8cbc9e87 --- /dev/null +++ b/.changeset/mean-wombats-remain.md @@ -0,0 +1,5 @@ +--- +"@bnb-chain/greenfield-chain-sdk": patch +--- + +feat: Add `getObjectPolicy` and `isObjectPermissionAllowed` diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 505d9b19..77448f87 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -5,6 +5,7 @@ import { MsgUpdateObjectInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/ import { getAuthorizationAuthTypeV2 } from '@/utils/auth'; import { fetchWithTimeout, METHOD_GET, METHOD_PUT, NORMAL_ERROR_CODE } from '@/utils/http'; import { + ActionType, Principal, PrincipalType, } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; @@ -16,6 +17,8 @@ import { QueryHeadObjectResponse, QueryNFTRequest, QueryObjectNFTResponse, + QueryPolicyForAccountResponse, + QueryVerifyPermissionResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/query'; import { MsgCancelCreateObject, @@ -103,7 +106,18 @@ export interface IObject { principalAddr: string, ): Promise; - // TODO: IsObjectPermissionAllowed + isObjectPermissionAllowed( + bucketName: string, + objectName: string, + actionType: ActionType, + operator: string, + ): Promise; + + getObjectPolicy( + bucketName: string, + objectName: string, + principalAddr: string, + ): Promise; // TODO: GetObjectUploadProgress // TODO: getObjectStatusFromSP } @@ -609,6 +623,32 @@ export class Objectt implements IObject { return await this.storage.putPolicy(msg); } + public async isObjectPermissionAllowed( + bucketName: string, + objectName: string, + actionType: ActionType, + operator: string, + ) { + const rpc = await this.queryClient.getStorageQueryClient(); + return await rpc.VerifyPermission({ + bucketName, + objectName, + actionType, + operator, + }); + } + + public async getObjectPolicy(bucketName: string, objectName: string, principalAddr: string) { + const rpc = await this.queryClient.getStorageQueryClient(); + + const resource = GRNToString(newObjectGRN(bucketName, objectName)); + + return await rpc.QueryPolicyForAccount({ + resource, + principalAddress: principalAddr, + }); + } + public async deleteObjectPolicy( operator: string, bucketName: string, From f67dd055207e2b0a3d26ea285bde54174ae7dde2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 18:08:02 +0800 Subject: [PATCH 094/433] chore: [ci] release (alpha) (#170) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 6 ++++++ examples/nextjs/CHANGELOG.md | 17 +++++++++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 13 +++++++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 30 ++++++++++++++++++++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 69 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index d5128880..fd1254af 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -8,8 +8,10 @@ "@bnb-chain/greenfiled-file-handle": "0.2.0" }, "changesets": [ + "angry-horses-enjoy", "calm-birds-sleep", "dirty-parrots-hear", + "forty-otters-scream", "green-avocados-jump", "grumpy-gorillas-breathe", "happy-humans-thank", @@ -17,9 +19,13 @@ "kind-eyes-brake", "large-humans-bathe", "little-pugs-peel", + "mean-wombats-remain", "metal-ways-crash", "old-roses-play", "old-trainers-shop", + "rare-steaks-repeat", + "selfish-pianos-try", + "serious-lizards-grab", "weak-hounds-sell" ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 5a4e0c61..06fd9502 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,22 @@ # @demo/wallet +## 0.0.3-alpha.11 + +### Patch Changes + +- [#171](https://github.com/bnb-chain/greenfield-js-sdk/pull/171) + [`e2ebac6`](https://github.com/bnb-chain/greenfield-js-sdk/commit/e2ebac6470c883013ff7dfaf610649b5e38f47bd) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Feegrant `grantAllowance` API + +- Updated dependencies + [[`e2ebac6`](https://github.com/bnb-chain/greenfield-js-sdk/commit/e2ebac6470c883013ff7dfaf610649b5e38f47bd), + [`d894bad`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d894badd5fcd5ce915dfaec21808a300c15e7783), + [`dc87783`](https://github.com/bnb-chain/greenfield-js-sdk/commit/dc877833ed400166fd1384b315c9ac068d6a80f5), + [`d894bad`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d894badd5fcd5ce915dfaec21808a300c15e7783), + [`4d88665`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4d8866501f1693ebe2593c51fc9c74bd728fba70), + [`d894bad`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d894badd5fcd5ce915dfaec21808a300c15e7783)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.10 + ## 0.0.3-alpha.10 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 7a4252d9..b638b550 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.3-alpha.10", + "version": "0.0.3-alpha.11", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 0a0e717c..7a0634c9 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,18 @@ # @demo/nodejs +## 0.0.6-alpha.11 + +### Patch Changes + +- Updated dependencies + [[`e2ebac6`](https://github.com/bnb-chain/greenfield-js-sdk/commit/e2ebac6470c883013ff7dfaf610649b5e38f47bd), + [`d894bad`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d894badd5fcd5ce915dfaec21808a300c15e7783), + [`dc87783`](https://github.com/bnb-chain/greenfield-js-sdk/commit/dc877833ed400166fd1384b315c9ac068d6a80f5), + [`d894bad`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d894badd5fcd5ce915dfaec21808a300c15e7783), + [`4d88665`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4d8866501f1693ebe2593c51fc9c74bd728fba70), + [`d894bad`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d894badd5fcd5ce915dfaec21808a300c15e7783)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.10 + ## 0.0.6-alpha.10 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index fa69fd14..d94c7933 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.6-alpha.10", + "version": "0.0.6-alpha.11", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 232127de..9d924514 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,35 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.2-alpha.10 + +### Patch Changes + +- [#171](https://github.com/bnb-chain/greenfield-js-sdk/pull/171) + [`e2ebac6`](https://github.com/bnb-chain/greenfield-js-sdk/commit/e2ebac6470c883013ff7dfaf610649b5e38f47bd) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Feegrant `grantAllowance` API + +- [#169](https://github.com/bnb-chain/greenfield-js-sdk/pull/169) + [`d894bad`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d894badd5fcd5ce915dfaec21808a300c15e7783) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add virtual group api + +- [#179](https://github.com/bnb-chain/greenfield-js-sdk/pull/179) + [`dc87783`](https://github.com/bnb-chain/greenfield-js-sdk/commit/dc877833ed400166fd1384b315c9ac068d6a80f5) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add `getObjectPolicy` and + `isObjectPermissionAllowed` + +- [#169](https://github.com/bnb-chain/greenfield-js-sdk/pull/169) + [`d894bad`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d894badd5fcd5ce915dfaec21808a300c15e7783) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Migrate bucket api + +- [#174](https://github.com/bnb-chain/greenfield-js-sdk/pull/174) + [`4d88665`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4d8866501f1693ebe2593c51fc9c74bd728fba70) + Thanks [@rrr523](https://github.com/rrr523)! - feat: AuthInfoBytes add feePayer and feeGranter + +- [#169](https://github.com/bnb-chain/greenfield-js-sdk/pull/169) + [`d894bad`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d894badd5fcd5ce915dfaec21808a300c15e7783) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Compatibility createBucket and createObject + API for QA net new protobuf + ## 0.2.2-alpha.9 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 6d7d5d27..018cfbc6 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.2-alpha.9", + "version": "0.2.2-alpha.10", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 1b803da579469ffab9fa670973fd1414dfa88d2d Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 25 Jul 2023 01:32:18 +0800 Subject: [PATCH 095/433] feat AuthV1 (#182) * chore: Update example * chore: Update Example * feat: V1Auth * feat: V1Auth generate * feat: V1Auth createObject Approval * Create shaggy-experts-approve.md --- .changeset/shaggy-experts-approve.md | 6 + .../nextjs/src/components/batch/index.tsx | 65 ++++++-- .../src/components/object/create/index.tsx | 5 +- packages/chain-sdk/src/api/objectt.ts | 64 ++++++-- packages/chain-sdk/src/types/storage.ts | 12 +- packages/chain-sdk/src/utils/auth.ts | 153 +++++++++++++++++- 6 files changed, 282 insertions(+), 23 deletions(-) create mode 100644 .changeset/shaggy-experts-approve.md diff --git a/.changeset/shaggy-experts-approve.md b/.changeset/shaggy-experts-approve.md new file mode 100644 index 00000000..8ad66068 --- /dev/null +++ b/.changeset/shaggy-experts-approve.md @@ -0,0 +1,6 @@ +--- +"@demo/wallet": patch +"@bnb-chain/greenfield-chain-sdk": patch +--- + +feat: Add AuthV1 for SP API (createObject) diff --git a/examples/nextjs/src/components/batch/index.tsx b/examples/nextjs/src/components/batch/index.tsx index 21781c17..5390a070 100644 --- a/examples/nextjs/src/components/batch/index.tsx +++ b/examples/nextjs/src/components/batch/index.tsx @@ -6,12 +6,15 @@ import { PermissionTypes, } from '@bnb-chain/greenfield-chain-sdk'; import { Wallet } from '@ethersproject/wallet'; +import { ChangeEvent } from 'react'; +import { FileHandler } from '@bnb-chain/greenfiled-file-handle'; import { useState } from 'react'; import { parseEther } from 'viem'; import { useAccount } from 'wagmi'; export const FeeGrant = () => { const { address } = useAccount(); + const [file, setFile] = useState(); const [bucketName, setBucketName] = useState(''); const [objectName, setObjectName] = useState(''); const [wallet, setWallet] = useState(null); @@ -36,6 +39,16 @@ export const FeeGrant = () => { }} />
    + ) => { + if (e.target.files) { + setFile(e.target.files[0]); + } + }} + /> +

  • +
  • + +
); diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 0dee851a..75693356 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -53,7 +53,7 @@ ] }, "dependencies": { - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.17", + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.18", "@cosmjs/proto-signing": "^0.30.1", "@cosmjs/stargate": "^0.30.1", "@cosmjs/tendermint-rpc": "^0.30.1", @@ -91,4 +91,4 @@ "tslib": "^2.5.0", "typescript": "^4.9.5" } -} \ No newline at end of file +} diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index bde9f2c5..f35f663a 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -2,9 +2,9 @@ import { MsgCreateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgC import { MsgDeleteBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteBucket'; import { MsgMigrateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMigrateBucket'; import { MsgUpdateBucketInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; -import { getAuthorizationAuthTypeV2 } from '@/utils/auth'; +import { getAuthorizationAuthTypeV1, getAuthorizationAuthTypeV2, ReqMeta } from '@/utils/auth'; import { decodeObjectFromHexString, encodeObjectToHexString } from '@/utils/encoding'; -import { fetchWithTimeout, METHOD_GET, NORMAL_ERROR_CODE } from '@/utils/http'; +import { EMPTY_STRING_SHA256, fetchWithTimeout, METHOD_GET, NORMAL_ERROR_CODE } from '@/utils/http'; import { generateUrlByBucketName, isValidAddress, isValidBucketName, isValidUrl } from '@/utils/s3'; import { ActionType, @@ -56,7 +56,9 @@ import { import { Basic } from './basic'; import { OffChainAuth } from './offchainauth'; import { RpcQueryClient } from './queryclient'; +import { Sp } from './sp'; import { Storage } from './storage'; +import { VirtualGroup } from './virtualGroup'; export interface IBucket { /** @@ -123,6 +125,7 @@ export interface IBucket { export class Bucket implements IBucket { constructor( @inject(delay(() => Basic)) private basic: Basic, + @inject(delay(() => Sp)) private sp: Sp, @inject(delay(() => Storage)) private storage: Storage, ) {} @@ -150,7 +153,7 @@ export class Bucket implements IBucket { throw new Error('Empty creator address'); } - const endpoint = spInfo.endpoint; + const endpoint = await this.sp.getSPUrlByPrimaryAddr(spInfo.primarySpAddress); const msg: ICreateBucketMsgType = { bucket_name: bucketName, creator, @@ -164,17 +167,37 @@ export class Bucket implements IBucket { charged_read_quota: chargedReadQuota, payment_address: '', }; - const url = endpoint + '/greenfield/admin/v1/get-approval?action=CreateBucket'; + const path = '/greenfield/admin/v1/get-approval'; + const query = 'action=CreateBucket'; + const url = `${endpoint}${path}?${query}`; const unSignedMessageInHex = encodeObjectToHexString(msg); let headerContent: TKeyValue = { 'X-Gnfd-Unsigned-Msg': unSignedMessageInHex, }; - if (!configParam.signType || configParam.signType === 'authTypeV2') { - const Authorization = getAuthorizationAuthTypeV2(); + + if (configParam.signType === 'authTypeV1') { + const reqMeta: Partial = { + contentSHA256: EMPTY_STRING_SHA256, + txnMsg: unSignedMessageInHex, + method: METHOD_GET, + url: { + hostname: new URL(endpoint).hostname, + query, + path, + }, + date: '', + // contentType: fileType, + }; + const v1Auth = getAuthorizationAuthTypeV1(reqMeta, configParam.privateKey); + headerContent = { - ...headerContent, - Authorization, + 'X-Gnfd-Unsigned-Msg': unSignedMessageInHex, + // 'Content-Type': fileType, + 'Content-Type': 'application/octet-stream', + 'X-Gnfd-Content-Sha256': EMPTY_STRING_SHA256, + 'X-Gnfd-Date': '', + Authorization: v1Auth, }; } if (configParam.signType === 'offChainAuth') { diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 85b8df48..fe9f692c 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -68,8 +68,10 @@ import { isValidUrl, } from '../utils/s3'; import { Basic } from './basic'; +import { Bucket } from './bucket'; import { OffChainAuth } from './offchainauth'; import { RpcQueryClient } from './queryclient'; +import { Sp } from './sp'; import { Storage } from './storage'; export interface IObject { @@ -137,6 +139,7 @@ export class Objectt implements IObject { constructor( @inject(delay(() => Basic)) private basic: Basic, @inject(delay(() => Storage)) private storage: Storage, + @inject(delay(() => Sp)) private sp: Sp, ) {} private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); @@ -148,7 +151,6 @@ export class Objectt implements IObject { creator, objectName, visibility = 'VISIBILITY_TYPE_PUBLIC_READ', - spInfo, duration = 3000, fileType = 'application/octet-stream', redundancyType = 'REDUNDANCY_EC_TYPE', @@ -157,10 +159,6 @@ export class Objectt implements IObject { } = configParam; try { - if (!isValidUrl(spInfo.endpoint)) { - throw new Error('Invalid endpoint'); - } - if (!isValidBucketName(bucketName)) { throw new Error('Error bucket name'); } @@ -188,9 +186,11 @@ export class Objectt implements IObject { redundancy_type: redundancyType, visibility, }; + + const endpoint = await this.sp.getSPUrlByBucket(bucketName); const path = '/greenfield/admin/v1/get-approval'; const query = 'action=CreateObject'; - const url = `${spInfo.endpoint}${path}?${query}`; + const url = `${endpoint}${path}?${query}`; const unSignedMessageInHex = encodeObjectToHexString(msg); @@ -207,7 +207,7 @@ export class Objectt implements IObject { txnMsg: unSignedMessageInHex, method: METHOD_GET, url: { - hostname: new URL(spInfo.endpoint).hostname, + hostname: new URL(endpoint).hostname, query, path, }, @@ -620,7 +620,6 @@ export class Objectt implements IObject { '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', ], creator: getApprovalParams.creator, - spInfo: getApprovalParams.spInfo, ...signParams, }; diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index 2fe9854a..94deae49 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -11,8 +11,10 @@ import { SourceType } from '@bnb-chain/greenfield-cosmos-types/greenfield/storag import { GroupInfo } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/types'; import { Headers } from 'cross-fetch'; import Long from 'long'; -import { container, singleton } from 'tsyringe'; +import { container, delay, inject, singleton } from 'tsyringe'; +import { Bucket } from './bucket'; import { RpcQueryClient } from './queryclient'; +import { VirtualGroup } from './virtualGroup'; export interface ISp { /** @@ -24,7 +26,7 @@ export interface ISp { /** * return the sp info with the sp chain address */ - getStorageProviderInfo(spAddress: string): Promise; + getStorageProviderInfo(spId: number): Promise; /** * returns the storage price for a particular storage provider, including update time, read price, store price and .etc. @@ -39,11 +41,17 @@ export interface ISp { params(): Promise; listGroup(groupName: string, prefix: string, opts: ListGroupsOptions): Promise; + + getSPUrlByBucket(bucketName: string): Promise; + + getSPUrlByPrimaryAddr(parimaryAddr: string): Promise; } @singleton() export class Sp implements ISp { + private bucket = container.resolve(Bucket); private queryClient = container.resolve(RpcQueryClient); + private virtualGroup = container.resolve(VirtualGroup); public async getStorageProviders() { const rpc = await this.queryClient.getSpQueryClient(); @@ -51,14 +59,34 @@ export class Sp implements ISp { return res.sps; } - public async getStorageProviderInfo(spAddress: string) { + public async getStorageProviderInfo(spId: number) { const rpc = await this.queryClient.getSpQueryClient(); const res = await rpc.StorageProvider({ - spAddress, + id: spId, }); return res.storageProvider; } + public async getSPUrlByBucket(bucketName: string) { + const { bucketInfo } = await this.bucket.headBucket(bucketName); + + if (!bucketInfo) throw new Error('Get bucket info error'); + + const familyResp = await this.virtualGroup.getGlobalVirtualGroupFamily({ + familyId: bucketInfo.globalVirtualGroupFamilyId, + }); + + const spList = await this.getStorageProviders(); + const spId = familyResp.globalVirtualGroupFamily?.primarySpId; + + return spList.filter((sp) => sp.id === spId)[0].endpoint; + } + + public async getSPUrlByPrimaryAddr(parimaryAddr: string) { + const sps = await this.getStorageProviders(); + return sps.filter((sp) => sp.operatorAddress === parimaryAddr)[0].endpoint; + } + public async getStoragePriceByTime(spAddress: string) { const rpc = await this.queryClient.getSpQueryClient(); const res = await rpc.QueryGetSpStoragePriceByTime({ diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index cabbc797..b63cff3c 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -11,7 +11,9 @@ export interface IBaseGetCreateBucket { creator: string; visibility: keyof typeof VisibilityType; chargedReadQuota: string; - spInfo: ISpInfo; + spInfo: { + primarySpAddress: string; + }; duration?: number; } @@ -26,14 +28,7 @@ export interface ICreateBucketByAuthV1 extends IBaseGetCreateBucket { privateKey: string; } -export interface ICreateBucketByAuthTypeV2 extends IBaseGetCreateBucket { - signType?: 'authTypeV2'; -} - -export type TCreateBucket = - | ICreateBucketByOffChainAuth - | ICreateBucketByAuthV1 - | ICreateBucketByAuthTypeV2; +export type TCreateBucket = ICreateBucketByOffChainAuth | ICreateBucketByAuthV1; export interface ISpInfo { id: number; @@ -132,13 +127,9 @@ export type TBaseGetCreateObject = { visibility?: keyof typeof VisibilityType; fileType: string; redundancyType?: keyof typeof RedundancyType; - // expectSecondarySpAddresses: string[]; - // endpoint?: string; - spInfo: ISpInfo; duration?: number; contentLength: number; expectCheckSums: string[]; - // hashResult?: any; }; export type SignTypeV1 = { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 280091ff..ada018f3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -197,8 +197,8 @@ importers: packages/chain-sdk: dependencies: '@bnb-chain/greenfield-cosmos-types': - specifier: 0.4.0-alpha.17 - version: 0.4.0-alpha.17 + specifier: 0.4.0-alpha.18 + version: 0.4.0-alpha.18 '@cosmjs/proto-signing': specifier: ^0.30.1 version: 0.30.1 @@ -2062,8 +2062,8 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.17: - resolution: {integrity: sha512-nPMb+xy5bGpjg9shDvYt9Yyqa/jLPupA09H04n+i1m347PqfOxm9UItD7QVlUjaIm6PmLDiksLAJMvW8Ggp+og==} + /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.18: + resolution: {integrity: sha512-UOdpZ8NCZZhJ5j7q5SUGW2TjgbBhnPjMG5beNk6QYQs7SjnY45ljFf3e9KicW77WvLCQDqUCpQLIgGE+y99AdQ==} dependencies: long: 4.0.0 protobufjs: 6.11.3 @@ -6071,7 +6071,7 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001517 - electron-to-chromium: 1.4.471 + electron-to-chromium: 1.4.473 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.9) dev: true @@ -6916,8 +6916,8 @@ packages: /electron-to-chromium@1.4.411: resolution: {integrity: sha512-5VXLW4Qw89vM2WTICHua/y8v7fKGDRVa2VPOtBB9IpLvW316B+xd8yD1wTmLPY2ot/00P/qt87xdolj4aG/Lzg==} - /electron-to-chromium@1.4.471: - resolution: {integrity: sha512-GpmGRC1vTl60w/k6YpQ18pSiqnmr0j3un//5TV1idPi6aheNfkT1Ye71tMEabWyNDO6sBMgAR+95Eb0eUUr1tA==} + /electron-to-chromium@1.4.473: + resolution: {integrity: sha512-aVfC8+440vGfl06l8HKKn8/PD5jRfSnLkTTD65EFvU46igbpQRri1gxSzW9/+TeUlwYzrXk1sw867T96zlyECA==} dev: true /elliptic@6.5.4: From d176bb08d7c945b0d5282c93fab96035f0ee5d02 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 27 Jul 2023 18:27:57 +0800 Subject: [PATCH 103/433] chore: [ci] release (alpha) (#192) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 5 ++++- examples/nextjs/CHANGELOG.md | 10 ++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 10 ++++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 16 ++++++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 43 insertions(+), 4 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 9e25d98f..31408565 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -20,6 +20,7 @@ "grumpy-gorillas-breathe", "happy-humans-thank", "hot-countries-begin", + "hungry-lemons-talk", "kind-eyes-brake", "large-humans-bathe", "little-pugs-peel", @@ -32,7 +33,9 @@ "selfish-pianos-try", "serious-lizards-grab", "shaggy-experts-approve", + "warm-ads-think", "warm-planets-exercise", - "weak-hounds-sell" + "weak-hounds-sell", + "witty-cows-buy" ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 99392611..4f2a179d 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,15 @@ # @demo/wallet +## 0.0.3-alpha.15 + +### Patch Changes + +- Updated dependencies + [[`1d9808f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1d9808f54b3bb2d934e09f34a2f49b0a644a12f1), + [`1d9808f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1d9808f54b3bb2d934e09f34a2f49b0a644a12f1), + [`1d9808f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1d9808f54b3bb2d934e09f34a2f49b0a644a12f1)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.14 + ## 0.0.3-alpha.14 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index efee00fe..b8168644 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.3-alpha.14", + "version": "0.0.3-alpha.15", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index d423a27e..2f394efb 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,15 @@ # @demo/nodejs +## 0.0.6-alpha.15 + +### Patch Changes + +- Updated dependencies + [[`1d9808f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1d9808f54b3bb2d934e09f34a2f49b0a644a12f1), + [`1d9808f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1d9808f54b3bb2d934e09f34a2f49b0a644a12f1), + [`1d9808f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1d9808f54b3bb2d934e09f34a2f49b0a644a12f1)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.14 + ## 0.0.6-alpha.14 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index f9b51ef2..9bc7f99f 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.6-alpha.14", + "version": "0.0.6-alpha.15", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 0edb95c7..65c0831e 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,21 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.2-alpha.14 + +### Patch Changes + +- [#191](https://github.com/bnb-chain/greenfield-js-sdk/pull/191) + [`1d9808f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1d9808f54b3bb2d934e09f34a2f49b0a644a12f1) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Remove Create object and create bucket + +- [#191](https://github.com/bnb-chain/greenfield-js-sdk/pull/191) + [`1d9808f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1d9808f54b3bb2d934e09f34a2f49b0a644a12f1) + Thanks [@rrr523](https://github.com/rrr523)! - feat: getStorageProviderInfo params update + +- [#191](https://github.com/bnb-chain/greenfield-js-sdk/pull/191) + [`1d9808f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1d9808f54b3bb2d934e09f34a2f49b0a644a12f1) + Thanks [@rrr523](https://github.com/rrr523)! - feat: GetSpURLfrom bucket + ## 0.2.2-alpha.13 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 75693356..e549ee57 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.2-alpha.13", + "version": "0.2.2-alpha.14", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 776003d7830355094c92cb09e266e0d163123d0b Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 28 Jul 2023 13:45:26 +0800 Subject: [PATCH 104/433] feat: Change Allwance value type (#193) * chore: Test config update * feat: Change Allowance Type --- .changeset/chatty-cows-destroy.md | 5 +++++ examples/nextjs/src/components/batch/index.tsx | 10 ++++------ packages/chain-sdk/config/tsconfig.json | 3 ++- packages/chain-sdk/src/api/feegrant.ts | 3 ++- 4 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 .changeset/chatty-cows-destroy.md diff --git a/.changeset/chatty-cows-destroy.md b/.changeset/chatty-cows-destroy.md new file mode 100644 index 00000000..d6a24c22 --- /dev/null +++ b/.changeset/chatty-cows-destroy.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +feat: Change allowance value type as base64 diff --git a/examples/nextjs/src/components/batch/index.tsx b/examples/nextjs/src/components/batch/index.tsx index 5390a070..7b488ef2 100644 --- a/examples/nextjs/src/components/batch/index.tsx +++ b/examples/nextjs/src/components/batch/index.tsx @@ -63,7 +63,7 @@ export const FeeGrant = () => { granter: address, grantee: wallet.address, allowedMessages: [MsgCreateObjectTypeUrl], - amount: parseEther('0.1').toString(), + amount: parseEther('0.09').toString(), denom: 'BNB', }); @@ -114,9 +114,6 @@ export const FeeGrant = () => { const granteeAddr = wallet.address; const privateKey = wallet.privateKey; - const spInfo = await selectSp(); - - console.log('spInfo', spInfo); console.log('temp account', granteeAddr, privateKey); const fileBytes = await file.arrayBuffer(); @@ -126,12 +123,13 @@ export const FeeGrant = () => { const createObjectTx = await client.object.createObject({ bucketName: bucketName, objectName: objectName, - spInfo, + visibility: 'VISIBILITY_TYPE_PUBLIC_READ', + redundancyType: 'REDUNDANCY_EC_TYPE', contentLength, expectCheckSums, fileType: file.type, - creator: granteeAddr, signType: 'authTypeV1', + creator: granteeAddr, privateKey: privateKey, }); diff --git a/packages/chain-sdk/config/tsconfig.json b/packages/chain-sdk/config/tsconfig.json index 9557165c..c052eca9 100644 --- a/packages/chain-sdk/config/tsconfig.json +++ b/packages/chain-sdk/config/tsconfig.json @@ -32,6 +32,7 @@ "../types/*.d.ts" ], "exclude": [ - "../node_modules" + "../node_modules", + "../src/tests" ] } \ No newline at end of file diff --git a/packages/chain-sdk/src/api/feegrant.ts b/packages/chain-sdk/src/api/feegrant.ts index b1fc6c20..e1674f2e 100644 --- a/packages/chain-sdk/src/api/feegrant.ts +++ b/packages/chain-sdk/src/api/feegrant.ts @@ -10,6 +10,7 @@ import { MsgGrantAllowance, MsgRevokeAllowance, } from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/tx'; +import { base64FromBytes, bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { toBuffer } from '@ethereumjs/util'; import { container, singleton } from 'tsyringe'; import { @@ -57,7 +58,7 @@ export class FeeGrant implements IFeeGrant { ...MsgGrantAllowance.toSDK(grantAllowance), allowance: { type: grantAllowance.allowance?.typeUrl, - value: toBuffer('0x' + encodeToHex(JSON.stringify(marshal))), + value: base64FromBytes(toBuffer('0x' + encodeToHex(JSON.stringify(marshal)))), }, }, MsgGrantAllowance.encode(grantAllowance).finish(), From b2ea6ecddc78bac5b211dc8faed69938376c4120 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Jul 2023 13:47:03 +0800 Subject: [PATCH 105/433] chore: [ci] release (alpha) (#194) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 31408565..e163c87c 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -10,6 +10,7 @@ "changesets": [ "angry-horses-enjoy", "calm-birds-sleep", + "chatty-cows-destroy", "chatty-ladybugs-listen", "dirty-parrots-hear", "empty-pens-sing", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 4f2a179d..b697659a 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.3-alpha.16 + +### Patch Changes + +- Updated dependencies + [[`776003d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/776003d7830355094c92cb09e266e0d163123d0b)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.15 + ## 0.0.3-alpha.15 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index b8168644..8f04fd7c 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.3-alpha.15", + "version": "0.0.3-alpha.16", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 2f394efb..30a152a3 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.6-alpha.16 + +### Patch Changes + +- Updated dependencies + [[`776003d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/776003d7830355094c92cb09e266e0d163123d0b)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.15 + ## 0.0.6-alpha.15 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 9bc7f99f..7e69d6d3 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.6-alpha.15", + "version": "0.0.6-alpha.16", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 65c0831e..ec84082a 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.2-alpha.15 + +### Patch Changes + +- [#193](https://github.com/bnb-chain/greenfield-js-sdk/pull/193) + [`776003d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/776003d7830355094c92cb09e266e0d163123d0b) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Change allowance value type as base64 + ## 0.2.2-alpha.14 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index e549ee57..710168e5 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.2-alpha.14", + "version": "0.2.2-alpha.15", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 1880084ac21c17c73c553ce4256dc4e8dca24d5b Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 28 Jul 2023 14:34:05 +0800 Subject: [PATCH 106/433] feat: MultiTx support private key (#195) --- .changeset/hip-panthers-impress.md | 5 ++++ .../nextjs/src/components/multimsg/index.tsx | 2 ++ packages/chain-sdk/src/api/basic.ts | 30 ++++++++++++++----- 3 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 .changeset/hip-panthers-impress.md diff --git a/.changeset/hip-panthers-impress.md b/.changeset/hip-panthers-impress.md new file mode 100644 index 00000000..950f80f2 --- /dev/null +++ b/.changeset/hip-panthers-impress.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +feat: Multi tx support private key diff --git a/examples/nextjs/src/components/multimsg/index.tsx b/examples/nextjs/src/components/multimsg/index.tsx index ea232050..cab665f4 100644 --- a/examples/nextjs/src/components/multimsg/index.tsx +++ b/examples/nextjs/src/components/multimsg/index.tsx @@ -1,4 +1,5 @@ import { client } from '@/client'; +import { ACCOUNT_PRIVATEKEY } from '@/config/env'; import { parseEther } from 'viem'; import { useAccount } from 'wagmi'; @@ -50,6 +51,7 @@ export const MultiMsg = () => { gasPrice: '5000000000', payer: address, granter: '', + privateKey: ACCOUNT_PRIVATEKEY, }); if (res.code === 0) { diff --git a/packages/chain-sdk/src/api/basic.ts b/packages/chain-sdk/src/api/basic.ts index f51c5f13..2ba97c62 100644 --- a/packages/chain-sdk/src/api/basic.ts +++ b/packages/chain-sdk/src/api/basic.ts @@ -24,6 +24,7 @@ import { makeAuthInfoBytes } from '@cosmjs/proto-signing'; import { DeliverTxResponse, StargateClient } from '@cosmjs/stargate'; import { Tendermint37Client } from '@cosmjs/tendermint-rpc'; import { toBuffer } from '@ethereumjs/util'; +import { signTypedData, SignTypedDataVersion } from '@metamask/eth-sig-util'; import Long from 'long'; import { container, inject, singleton } from 'tsyringe'; import { BroadcastOptions, ISimulateGasFee, MetaTxInfo, SimulateOptions, TxResponse } from '..'; @@ -263,6 +264,8 @@ export class Basic implements IBasic { signTypedDataCallback = defaultSignTypedData, } = opts; + let signature, + pubKey = undefined; const types = mergeMultiEip712(txs.map((tx) => tx.MsgSDKTypeEIP712)); const fee = generateFee( String(BigInt(gasLimit) * BigInt(gasPrice)), @@ -284,14 +287,25 @@ export class Basic implements IBasic { ); const eip712 = createEIP712(wrapperTypes, this.chainId, messages); - const signature = await signTypedDataCallback(accountInfo.address, JSON.stringify(eip712)); - const messageHash = eip712Hash(JSON.stringify(eip712)); - - const pk = recoverPk({ - signature, - messageHash, - }); - const pubKey = makeCosmsPubKey(pk); + if (privateKey) { + pubKey = getPubKeyByPriKey(privateKey); + signature = signTypedData({ + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + data: eip712, + version: SignTypedDataVersion.V4, + privateKey: toBuffer(privateKey), + }); + } else { + signature = await signTypedDataCallback(accountInfo.address, JSON.stringify(eip712)); + const messageHash = eip712Hash(JSON.stringify(eip712)); + + const pk = recoverPk({ + signature, + messageHash, + }); + pubKey = makeCosmsPubKey(pk); + } const authInfoBytes = this.getAuthInfoBytes({ denom, From b483901d95048250d4b12e6ea34efd43550d9109 Mon Sep 17 00:00:00 2001 From: randomx999 <84435529+randomx999@users.noreply.github.com> Date: Fri, 28 Jul 2023 17:20:30 +0800 Subject: [PATCH 107/433] fix: Throw sp error code and message (#197) * fix: Throw sp error code and message * Create good-bobcats-hang.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> --- .changeset/good-bobcats-hang.md | 5 +++++ packages/chain-sdk/src/api/bucket.ts | 32 +++++++++++++++++++++------ packages/chain-sdk/src/api/objectt.ts | 28 ++++++++++++++++++----- packages/chain-sdk/src/api/sp.ts | 7 +++--- packages/chain-sdk/src/utils/http.ts | 13 +++++++++++ 5 files changed, 70 insertions(+), 15 deletions(-) create mode 100644 .changeset/good-bobcats-hang.md diff --git a/.changeset/good-bobcats-hang.md b/.changeset/good-bobcats-hang.md new file mode 100644 index 00000000..161bd404 --- /dev/null +++ b/.changeset/good-bobcats-hang.md @@ -0,0 +1,5 @@ +--- +"@bnb-chain/greenfield-chain-sdk": patch +--- + +fix: Throw sp error code and message diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index f35f663a..5cbef10a 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -4,7 +4,13 @@ import { MsgMigrateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/Msg import { MsgUpdateBucketInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; import { getAuthorizationAuthTypeV1, getAuthorizationAuthTypeV2, ReqMeta } from '@/utils/auth'; import { decodeObjectFromHexString, encodeObjectToHexString } from '@/utils/encoding'; -import { EMPTY_STRING_SHA256, fetchWithTimeout, METHOD_GET, NORMAL_ERROR_CODE } from '@/utils/http'; +import { + EMPTY_STRING_SHA256, + fetchWithTimeout, + METHOD_GET, + NORMAL_ERROR_CODE, + parseErrorXml, +} from '@/utils/http'; import { generateUrlByBucketName, isValidAddress, isValidBucketName, isValidUrl } from '@/utils/s3'; import { ActionType, @@ -230,9 +236,10 @@ export class Bucket implements IBucket { const { status } = result; if (!result.ok) { + const { code, message } = await parseErrorXml(result); throw { - code: -1, - message: 'Get create bucket approval error.', + code: code || -1, + message: message || 'Get create bucket approval error.', statusCode: status, }; } @@ -362,7 +369,12 @@ export class Bucket implements IBucket { ); const { status } = result; if (!result.ok) { - return { code: -1, message: 'Get bucket error.', statusCode: status }; + const { code, message } = await parseErrorXml(result); + throw { + code: code || -1, + message: message || 'Get bucket error.', + statusCode: status, + }; } const { buckets } = await result.json(); @@ -437,7 +449,12 @@ export class Bucket implements IBucket { ); const { status } = result; if (!result.ok) { - return { code: -1, message: 'Get Bucket Quota error.', statusCode: status }; + const { code, message } = await parseErrorXml(result); + return { + code: +(code || 0) || -1, + message: message || 'Get Bucket Quota error.', + statusCode: status, + }; } const resultContentType = result.headers.get('Content-Type'); // Will receive xml when get object met error @@ -578,9 +595,10 @@ export class Bucket implements IBucket { ); const { status } = result; if (!result.ok) { + const { code, message } = await parseErrorXml(result); throw { - code: -1, - message: 'Get create bucket approval error.', + code: code || -1, + message: message || 'Get create bucket approval error.', statusCode: status, }; } diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index fe9f692c..19e7e609 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -9,6 +9,7 @@ import { METHOD_GET, METHOD_PUT, NORMAL_ERROR_CODE, + parseErrorXml, } from '@/utils/http'; import { ActionType, @@ -255,9 +256,10 @@ export class Objectt implements IObject { const { status } = result; if (!result.ok) { + const { code, message } = await parseErrorXml(result); throw { - code: -1, - message: 'Get create object approval error.', + code: code || -1, + message: message || 'Get create object approval error.', statusCode: status, error: result, }; @@ -383,7 +385,12 @@ export class Objectt implements IObject { ); const { status } = result; if (!result.ok) { - return { code: -1, message: 'Put object error.', statusCode: status }; + const { code, message } = await parseErrorXml(result); + return { + code: +(code || 0) || -1, + message: message || 'Put object error.', + statusCode: status, + }; } return { code: 0, message: 'Put object success.', statusCode: status }; @@ -499,7 +506,13 @@ export class Objectt implements IObject { ); const { status } = result; if (!result.ok) { - return { code: -1, message: 'Get object error.', statusCode: status }; + const { code, message } = await parseErrorXml(result); + + return { + code: code || -1, + message: message || 'Get object error.', + statusCode: status, + }; } const fileBlob = await result.blob(); @@ -568,7 +581,12 @@ export class Objectt implements IObject { ); const { status } = result; if (!result.ok) { - return { code: -1, message: 'List object error.', statusCode: status }; + const { code, message } = await parseErrorXml(result); + return { + code: code || -1, + message: message || 'List object error.', + statusCode: status, + }; } const body = await result.json(); return { diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index 94deae49..4b5dbc54 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -1,5 +1,5 @@ import { getAuthorizationAuthTypeV2 } from '@/utils/auth'; -import { fetchWithTimeout, METHOD_GET } from '@/utils/http'; +import { fetchWithTimeout, METHOD_GET, parseErrorXml } from '@/utils/http'; import { QueryParamsResponse } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/query'; import { SecondarySpStorePrice, @@ -157,9 +157,10 @@ export class Sp implements ISp { const { status } = result; if (!result.ok) { + const { code, message } = await parseErrorXml(result); throw { - code: -1, - message: 'Get group list error.', + code: code || -1, + message: message || 'Get group list error.', statusCode: status, }; } diff --git a/packages/chain-sdk/src/utils/http.ts b/packages/chain-sdk/src/utils/http.ts index 95cc6ddb..a2d83b47 100644 --- a/packages/chain-sdk/src/utils/http.ts +++ b/packages/chain-sdk/src/utils/http.ts @@ -27,6 +27,18 @@ const fetchWithTimeout = async (fetchUrl = '', fetchOptions: any = {}, duration } }; +const parseErrorXml = async (result: Response) => { + const xmlText = await result.text(); + const xml = await new window.DOMParser().parseFromString(xmlText, 'text/xml'); + const code = (xml as XMLDocument).getElementsByTagName('Code')[0].textContent; + const message = (xml as XMLDocument).getElementsByTagName('Message')[0].textContent; + + return { + code, + message, + }; +}; + export { EMPTY_STRING_SHA256, MOCK_SIGNATURE, @@ -35,4 +47,5 @@ export { METHOD_POST, METHOD_PUT, fetchWithTimeout, + parseErrorXml, }; From a5f07a17c8a0983c06967e183053b21f0d742bc4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Jul 2023 17:21:51 +0800 Subject: [PATCH 108/433] chore: [ci] release (alpha) (#196) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 2 ++ examples/nextjs/CHANGELOG.md | 9 +++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 9 +++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 11 +++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 34 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index e163c87c..dba27ed1 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -17,9 +17,11 @@ "flat-plants-buy", "forty-otters-scream", "gold-ants-serve", + "good-bobcats-hang", "green-avocados-jump", "grumpy-gorillas-breathe", "happy-humans-thank", + "hip-panthers-impress", "hot-countries-begin", "hungry-lemons-talk", "kind-eyes-brake", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index b697659a..f2385dc3 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/wallet +## 0.0.3-alpha.17 + +### Patch Changes + +- Updated dependencies + [[`b483901`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b483901d95048250d4b12e6ea34efd43550d9109), + [`1880084`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1880084ac21c17c73c553ce4256dc4e8dca24d5b)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.16 + ## 0.0.3-alpha.16 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 8f04fd7c..66794ad6 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.3-alpha.16", + "version": "0.0.3-alpha.17", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 30a152a3..a85fabc8 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/nodejs +## 0.0.6-alpha.17 + +### Patch Changes + +- Updated dependencies + [[`b483901`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b483901d95048250d4b12e6ea34efd43550d9109), + [`1880084`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1880084ac21c17c73c553ce4256dc4e8dca24d5b)]: + - @bnb-chain/greenfield-chain-sdk@0.2.2-alpha.16 + ## 0.0.6-alpha.16 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 7e69d6d3..2f6a82d3 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.6-alpha.16", + "version": "0.0.6-alpha.17", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index ec84082a..426ab35a 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,16 @@ # @bnb-chain/greenfield-chain-sdk +## 0.2.2-alpha.16 + +### Patch Changes + +- [`b483901`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b483901d95048250d4b12e6ea34efd43550d9109) + Thanks [@randomx999](https://github.com/randomx999)! - fix: Throw sp error code and message + +- [#195](https://github.com/bnb-chain/greenfield-js-sdk/pull/195) + [`1880084`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1880084ac21c17c73c553ce4256dc4e8dca24d5b) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Multi tx support private key + ## 0.2.2-alpha.15 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 710168e5..6f7bc30f 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-chain-sdk", - "version": "0.2.2-alpha.15", + "version": "0.2.2-alpha.16", "description": "greenfield js chain sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 61c7a9ca56f03c6a8994b0dc22857777fe7fac46 Mon Sep 17 00:00:00 2001 From: randomx999 <84435529+randomx999@users.noreply.github.com> Date: Mon, 31 Jul 2023 11:23:04 +0800 Subject: [PATCH 109/433] fix: No sp available error (#200) * fix: No sp available error * Create khaki-ducks-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> --- .changeset/khaki-ducks-brake.md | 5 +++++ packages/chain-sdk/src/api/offchainauth.ts | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/khaki-ducks-brake.md diff --git a/.changeset/khaki-ducks-brake.md b/.changeset/khaki-ducks-brake.md new file mode 100644 index 00000000..9ea9ed6c --- /dev/null +++ b/.changeset/khaki-ducks-brake.md @@ -0,0 +1,5 @@ +--- +"@bnb-chain/greenfield-chain-sdk": patch +--- + +fix: No sp available error diff --git a/packages/chain-sdk/src/api/offchainauth.ts b/packages/chain-sdk/src/api/offchainauth.ts index 935852ce..fb0b22fe 100644 --- a/packages/chain-sdk/src/api/offchainauth.ts +++ b/packages/chain-sdk/src/api/offchainauth.ts @@ -49,7 +49,7 @@ export class OffChainAuth implements IOffChainAuth { .filter((item: ISp) => item.nonce === null) .map((item: ISp) => item.address); if (fetchSpsNonceFailed.length === spsNonceRaw.length) { - throw new Error(`No Sp service available, Please try again later.`); + throw new Error(`No SP service is available. Please try again later.`); } const spsWithNonce = spsNonceRaw.filter((item: ISp) => item.nonce !== null); // 2. generate signature key pair @@ -87,7 +87,7 @@ export class OffChainAuth implements IOffChainAuth { .filter((item: any) => item.code !== 0) .map((item: any) => item.data.address); if (uploadSpsPubkeyFailed.length === spsWithNonce.length) { - throw new Error(`No Sp service available, Please try again later.`); + throw new Error(`No SP service is available. Please try again later.`); } const successSps: string[] = []; res.forEach((item: any) => { From c3af3729ecc69b65e2af12773028fcdb956bb827 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Mon, 31 Jul 2023 11:31:37 +0800 Subject: [PATCH 110/433] Opt (#198) * chore: Update Example * refactor: Replace @ethereumjs/util with @ethersproject/bytes * feat: Upload Object V1 auth * fix: CreateObjectTx content-type msg --- .changeset/late-ducks-add.md | 5 + .changeset/late-trainers-kick.md | 5 + .changeset/spicy-poets-pull.md | 5 + .../index.tsx => feegrant/createObj.tsx} | 56 +++---- .../nextjs/src/components/feegrant/delObj.tsx | 139 ++++++++++++++++++ .../nextjs/src/components/feegrant/index.tsx | 37 +++++ .../src/components/object/create/index.tsx | 43 +++--- examples/nextjs/src/pages/tx.tsx | 2 +- packages/chain-sdk/package.json | 1 - packages/chain-sdk/src/api/account.ts | 3 - packages/chain-sdk/src/api/basic.ts | 16 +- packages/chain-sdk/src/api/feegrant.ts | 6 +- packages/chain-sdk/src/api/objectt.ts | 49 ++++-- packages/chain-sdk/src/keymanage/index.ts | 10 +- packages/chain-sdk/src/sign/pubKey.ts | 6 +- packages/chain-sdk/src/types/storage.ts | 10 +- packages/chain-sdk/src/utils/auth.ts | 18 ++- pnpm-lock.yaml | 58 +++++++- 18 files changed, 355 insertions(+), 114 deletions(-) create mode 100644 .changeset/late-ducks-add.md create mode 100644 .changeset/late-trainers-kick.md create mode 100644 .changeset/spicy-poets-pull.md rename examples/nextjs/src/components/{batch/index.tsx => feegrant/createObj.tsx} (84%) create mode 100644 examples/nextjs/src/components/feegrant/delObj.tsx create mode 100644 examples/nextjs/src/components/feegrant/index.tsx diff --git a/.changeset/late-ducks-add.md b/.changeset/late-ducks-add.md new file mode 100644 index 00000000..99df9340 --- /dev/null +++ b/.changeset/late-ducks-add.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +feat: Upload object V1 auth diff --git a/.changeset/late-trainers-kick.md b/.changeset/late-trainers-kick.md new file mode 100644 index 00000000..d0fd3a26 --- /dev/null +++ b/.changeset/late-trainers-kick.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +fix: CreateObject Tx content type field diff --git a/.changeset/spicy-poets-pull.md b/.changeset/spicy-poets-pull.md new file mode 100644 index 00000000..4c6393b3 --- /dev/null +++ b/.changeset/spicy-poets-pull.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +refactor: Replace @ethereumjs/util with @ethersproject/bytes diff --git a/examples/nextjs/src/components/batch/index.tsx b/examples/nextjs/src/components/feegrant/createObj.tsx similarity index 84% rename from examples/nextjs/src/components/batch/index.tsx rename to examples/nextjs/src/components/feegrant/createObj.tsx index 7b488ef2..d0678d15 100644 --- a/examples/nextjs/src/components/batch/index.tsx +++ b/examples/nextjs/src/components/feegrant/createObj.tsx @@ -1,18 +1,20 @@ -import { client, selectSp } from '@/client'; +import { client } from '@/client'; import { GRNToString, MsgCreateObjectTypeUrl, newBucketGRN, PermissionTypes, } from '@bnb-chain/greenfield-chain-sdk'; -import { Wallet } from '@ethersproject/wallet'; -import { ChangeEvent } from 'react'; import { FileHandler } from '@bnb-chain/greenfiled-file-handle'; -import { useState } from 'react'; +import { Wallet } from '@ethersproject/wallet'; +import { ChangeEvent, useState } from 'react'; import { parseEther } from 'viem'; import { useAccount } from 'wagmi'; -export const FeeGrant = () => { +/** + * fee grant for creat object + */ +export const CreateObj = () => { const { address } = useAccount(); const [file, setFile] = useState(); const [bucketName, setBucketName] = useState(''); @@ -21,7 +23,7 @@ export const FeeGrant = () => { return ( <> -

Feegrant

+

grant account for creating object

bucket name : { setBucketName(e.target.value); }} /> +
object name : { } }} > - feegrant + 1. feegrant
-
- ); diff --git a/examples/nextjs/src/components/feegrant/delObj.tsx b/examples/nextjs/src/components/feegrant/delObj.tsx new file mode 100644 index 00000000..a5093a86 --- /dev/null +++ b/examples/nextjs/src/components/feegrant/delObj.tsx @@ -0,0 +1,139 @@ +import { client } from '@/client'; +import { + GRNToString, + MsgDeleteObjectTypeUrl, + newObjectGRN, + PermissionTypes, +} from '@bnb-chain/greenfield-chain-sdk'; +import { Wallet } from '@ethersproject/wallet'; +import { useState } from 'react'; +import { parseEther } from 'viem'; +import { useAccount } from 'wagmi'; + +export const DelObj = () => { + const { address } = useAccount(); + const [bucketName, setBucketName] = useState(''); + const [objectName, setObjectName] = useState(''); + const [wallet, setWallet] = useState(null); + + return ( + <> +

grant account for deleting object

+ bucket name : + { + setBucketName(e.target.value); + }} + /> +
+ object name : + { + setObjectName(e.target.value); + }} + /> +
+ +
+ + + ); +}; diff --git a/examples/nextjs/src/components/feegrant/index.tsx b/examples/nextjs/src/components/feegrant/index.tsx new file mode 100644 index 00000000..a3a15031 --- /dev/null +++ b/examples/nextjs/src/components/feegrant/index.tsx @@ -0,0 +1,37 @@ +import { client } from '@/client'; +import { useState } from 'react'; +import { CreateObj } from './createObj'; +import { DelObj } from './delObj'; + +export const FeeGrant = () => { + const [account, setAccount] = useState(''); + + return ( + <> +

fee grant

+

Query grant of account

+ account: + { + setAccount(e.target.value); + }} + /> + + + + + ); +}; diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index 997625e0..da32183e 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -7,6 +7,7 @@ import { useAccount } from 'wagmi'; export const CreateObject = () => { const { address } = useAccount(); const [file, setFile] = useState(); + const [txHash, setTxHash] = useState(); const [createObjectInfo, setCreateObjectInfo] = useState({ bucketName: '', objectName: '', @@ -51,9 +52,6 @@ export const CreateObject = () => { return; } - /* const spInfo = await selectSp(); - console.log('spInfo', spInfo); */ - const fileBytes = await file.arrayBuffer(); const hashResult = await FileHandler.getPieceHashRoots(new Uint8Array(fileBytes)); const { contentLength, expectCheckSums } = hashResult; @@ -89,24 +87,35 @@ export const CreateObject = () => { if (res.code === 0) { alert('create object tx success'); + + setTxHash(res.transactionHash); } + }} + > + 1. create object tx + +
+
+
+ +
+ +
+ payment account: + { + setPaymentAccount(e.target.value); + }} + /> +

payment account deposit

+ +
+

payment account withdraw

+ +
+

payment account disableRefund

+ + + ); +}; diff --git a/examples/nextjs/src/pages/tx.tsx b/examples/nextjs/src/pages/tx.tsx index 9b2029c4..4d216441 100644 --- a/examples/nextjs/src/pages/tx.tsx +++ b/examples/nextjs/src/pages/tx.tsx @@ -12,6 +12,7 @@ import { WalletInfo } from '@/components/walletInfo'; import { Withdraw } from '@/components/withdraw'; import { useIsMounted } from '@/hooks/useIsMounted'; import { useAccount } from 'wagmi'; +import { PaymentComponent } from '@/components/payment'; export default function Tx() { const isMounted = useIsMounted(); @@ -39,6 +40,8 @@ export default function Tx() {

+ +

diff --git a/packages/chain-sdk/src/api/payment.ts b/packages/chain-sdk/src/api/payment.ts index 7935feb6..55d0bbdb 100644 --- a/packages/chain-sdk/src/api/payment.ts +++ b/packages/chain-sdk/src/api/payment.ts @@ -2,7 +2,25 @@ import { MsgDepositSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgDeposi import { MsgDisableRefundSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgDisableRefund'; import { MsgWithdrawSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgWithdraw'; import { + QueryAllAutoSettleRecordRequest, + QueryAllAutoSettleRecordResponse, + QueryAllPaymentAccountCountRequest, + QueryAllPaymentAccountCountResponse, + QueryAllPaymentAccountRequest, + QueryAllPaymentAccountResponse, + QueryAllStreamRecordRequest, + QueryAllStreamRecordResponse, + QueryDynamicBalanceRequest, + QueryDynamicBalanceResponse, + QueryGetPaymentAccountCountRequest, + QueryGetPaymentAccountCountResponse, + QueryGetPaymentAccountRequest, + QueryGetPaymentAccountResponse, + QueryGetPaymentAccountsByOwnerRequest, + QueryGetPaymentAccountsByOwnerResponse, QueryGetStreamRecordResponse, + QueryParamsByTimestampRequest, + QueryParamsByTimestampResponse, QueryParamsResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; import { @@ -21,6 +39,8 @@ export interface IPayment { */ getStreamRecord(account: string): Promise; + getStreamRecordAll(request: QueryAllStreamRecordRequest): Promise; + /** * deposits BNB to a stream account. */ @@ -37,6 +57,38 @@ export interface IPayment { disableRefund(msg: MsgDisableRefund): Promise; params(): Promise; + + paramsByTimestamp( + request: QueryParamsByTimestampRequest, + ): Promise; + + paymentAccount(request: QueryGetPaymentAccountRequest): Promise; + + paymentAccountAll( + request: QueryAllPaymentAccountRequest, + ): Promise; + + /** Queries a PaymentAccountCount by index. */ + paymentAccountCount( + request: QueryGetPaymentAccountCountRequest, + ): Promise; + + /** Queries a list of PaymentAccountCount items. */ + paymentAccountCountAll( + request: QueryAllPaymentAccountCountRequest, + ): Promise; + + /** Queries a list of DynamicBalance items. */ + dynamicBalance(request: QueryDynamicBalanceRequest): Promise; + + /** Queries a list of GetPaymentAccountsByOwner items. */ + getPaymentAccountsByOwner( + request: QueryGetPaymentAccountsByOwnerRequest, + ): Promise; + + autoSettleRecordAll( + request: QueryAllAutoSettleRecordRequest, + ): Promise; } @singleton() @@ -51,11 +103,56 @@ export class Payment implements IPayment { }); } + public async getStreamRecordAll(request: QueryAllStreamRecordRequest) { + const rpc = await this.queryClient.getPaymentQueryClient(); + return await rpc.StreamRecordAll(request); + } + public async params() { const rpc = await this.queryClient.getPaymentQueryClient(); return await rpc.Params(); } + public async paramsByTimestamp(request: QueryParamsByTimestampRequest) { + const rpc = await this.queryClient.getPaymentQueryClient(); + return await rpc.ParamsByTimestamp(request); + } + + public async paymentAccountCount(request: QueryGetPaymentAccountCountRequest) { + const rpc = await this.queryClient.getPaymentQueryClient(); + return await rpc.PaymentAccountCount(request); + } + + public async paymentAccountCountAll(request: QueryAllPaymentAccountCountRequest) { + const rpc = await this.queryClient.getPaymentQueryClient(); + return await rpc.PaymentAccountCountAll(request); + } + + public async paymentAccount(request: QueryGetPaymentAccountRequest) { + const rpc = await this.queryClient.getPaymentQueryClient(); + return await rpc.PaymentAccount(request); + } + + public async paymentAccountAll(request: QueryAllPaymentAccountRequest) { + const rpc = await this.queryClient.getPaymentQueryClient(); + return await rpc.PaymentAccountAll(request); + } + + public async dynamicBalance(request: QueryDynamicBalanceRequest) { + const rpc = await this.queryClient.getPaymentQueryClient(); + return await rpc.DynamicBalance(request); + } + + public async getPaymentAccountsByOwner(request: QueryGetPaymentAccountsByOwnerRequest) { + const rpc = await this.queryClient.getPaymentQueryClient(); + return await rpc.GetPaymentAccountsByOwner(request); + } + + public async autoSettleRecordAll(request: QueryAllAutoSettleRecordRequest) { + const rpc = await this.queryClient.getPaymentQueryClient(); + return await rpc.AutoSettleRecordAll(request); + } + public async deposit(msg: MsgDeposit) { return await this.basic.tx( MsgDepositTypeUrl, @@ -79,7 +176,7 @@ export class Payment implements IPayment { public async disableRefund(msg: MsgDisableRefund) { return await this.basic.tx( MsgDisableRefundTypeUrl, - msg.addr, + msg.owner, MsgDisableRefundSDKTypeEIP712, MsgDisableRefund.toSDK(msg), MsgDisableRefund.encode(msg).finish(), diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts b/packages/chain-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts index f817b3ec..d8101703 100644 --- a/packages/chain-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts +++ b/packages/chain-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts @@ -1,11 +1,11 @@ export const MsgCreatePaymentAccountSDKTypeEIP712 = { - Msg: [ + Msg1: [ { name: 'type', type: 'string', }, { - name: 'creaator', + name: 'creator', type: 'string', }, ], From 2ace378ac76a5d2b868f19adfc5ea5525b412263 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 8 Aug 2023 15:28:52 +0800 Subject: [PATCH 116/433] chore: [ci] release (alpha) (#211) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 8 ++++++-- examples/nextjs/CHANGELOG.md | 10 ++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 10 ++++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 16 ++++++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 45 insertions(+), 5 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index fbb3ebc8..dc71a51a 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -7,5 +7,9 @@ "@bnb-chain/greenfield-js-sdk": "0.2.3", "@bnb-chain/greenfiled-file-handle": "0.2.0" }, - "changesets": [] -} \ No newline at end of file + "changesets": [ + "flat-mugs-collect", + "mean-horses-change", + "quiet-numbers-camp" + ] +} diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 103a4c7a..3edfebdb 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,15 @@ # @demo/wallet +## 0.0.5-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28), + [`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28), + [`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.0 + ## 0.0.4 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 92e06222..c3544eb0 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.4", + "version": "0.0.5-alpha.0", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 209e51dc..9713bef9 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,15 @@ # @demo/nodejs +## 0.0.8-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28), + [`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28), + [`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.0 + ## 0.0.7 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 5be665e3..503a4c82 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.7", + "version": "0.0.8-alpha.0", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 238d2b16..ef0859f3 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,21 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.4-alpha.0 + +### Patch Changes + +- [#210](https://github.com/bnb-chain/greenfield-js-sdk/pull/210) + [`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Payment disableRefund api addr + +- [#210](https://github.com/bnb-chain/greenfield-js-sdk/pull/210) + [`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add payment API + +- [#210](https://github.com/bnb-chain/greenfield-js-sdk/pull/210) + [`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Create Payment Account eip712 struct + ## 0.2.3 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index d8f4dea6..2bd91918 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.3", + "version": "0.2.4-alpha.0", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From bc6420aee3b4a5254c9845e0500ff4f7a06f484b Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 15 Aug 2023 14:14:17 +0800 Subject: [PATCH 117/433] chore: Update README link (#214) --- examples/nextjs/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/nextjs/README.md b/examples/nextjs/README.md index 8eb0840e..7e9681db 100644 --- a/examples/nextjs/README.md +++ b/examples/nextjs/README.md @@ -5,8 +5,8 @@ Use [React](https://react.dev/) and [Next.js](https://nextjs.org/) ## Usage case * tx - * [transfer](./examples/wallet/src/components/transfer/index.tsx) - * [withdraw](./examples/wallet/src/components/withdraw/index.tsx) - * [bucket](./examples/wallet/src/components/bucket/index.tsx) - * [object](./examples/wallet/src/components/object/index.tsx) -* [query](./examples/wallet/src/components/withdraw/query.tsx) + * [transfer](./src/components/transfer/index.tsx) + * [withdraw](./src/components/withdraw/index.tsx) + * [bucket](./src/components/bucket/index.tsx) + * [object](./src/components/object/index.tsx) +* [query](./src/components/withdraw/query.tsx) From e586e7738e42581a9103e6157caad558896a8c63 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 16 Aug 2023 01:13:03 +0800 Subject: [PATCH 118/433] fix: Return Types (#213) --- .changeset/seven-toys-fry.md | 5 +++++ packages/chain-sdk/src/types/storage.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/seven-toys-fry.md diff --git a/.changeset/seven-toys-fry.md b/.changeset/seven-toys-fry.md new file mode 100644 index 00000000..49497cca --- /dev/null +++ b/.changeset/seven-toys-fry.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-chain-sdk': patch +--- + +fix: Return Types diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index 82f47420..3b5700fa 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -37,7 +37,7 @@ export interface ISpInfo { } export interface IObjectResultType { - code: number; + code: number | string; xml?: Document; message?: string; statusCode?: number; From ab9d20036dda8e972db029025a6140e43c19464d Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 16 Aug 2023 01:13:18 +0800 Subject: [PATCH 119/433] chore: Update withdraw example params (#212) * chore: Update withdraw example params * feat: Zk crypto wasm package * chore: Nodejs example update package * chore: Add comment * chore: Update UMD name * feat: Upgrade file handle package * chore: Update OffchainAuth example * feat: New Zk package --- .changeset/five-mice-whisper.md | 5 + .changeset/plenty-squids-walk.md | 5 + .changeset/soft-phones-give.md | 5 + examples/nextjs/src/client/index.ts | 18 +- .../src/components/bucket/create/index.tsx | 59 +- .../nextjs/src/components/multimsg/index.tsx | 2 - .../src/components/object/create/index.tsx | 55 +- .../src/components/offchainauth/index.tsx | 43 - .../nextjs/src/components/withdraw/index.tsx | 4 +- examples/nextjs/src/pages/_app.tsx | 3 +- examples/nextjs/src/pages/_document.tsx | 6 + examples/nextjs/src/pages/tx.tsx | 3 - examples/nextjs/src/utils/offchainAuth.ts | 40 + examples/nodejs/index.js | 2 +- packages/chain-sdk/package.json | 3 +- packages/chain-sdk/src/api/offchainauth.ts | 20 +- packages/chain-sdk/src/api/payment.ts | 1 + packages/chain-sdk/src/client.ts | 18 +- packages/chain-sdk/src/offchainauth/sign.ts | 17 +- packages/file-handle/config/tsconfig-cjs.json | 10 - packages/file-handle/config/tsconfig-esm.json | 7 - .../file-handle/config/tsconfig-test.json | 10 - packages/file-handle/config/tsconfig.json | 31 - packages/file-handle/package.json | 59 +- packages/file-handle/rollup.config.js | 120 --- packages/file-handle/src/browser/index.js | 28 + packages/file-handle/src/browser/init.js | 47 + packages/file-handle/src/browser/wasm_exec.js | 608 +++++++++++++ packages/file-handle/src/constants.js | 3 + .../src/files-handle-wasm/main.wasm | Bin 3079990 -> 0 bytes .../file-handle/src/files-handle-wasm/node.js | 16 - .../src/files-handle-wasm/wasm_exec.js | 626 ------------- .../src/files-handle-wasm/wasm_exec_node.js | 47 - .../src/files-handle-wasm/web.d.ts | 13 - .../file-handle/src/files-handle-wasm/web.js | 31 - packages/file-handle/src/go-wasm/main.go | 3 +- packages/file-handle/src/index.ts | 25 - packages/file-handle/src/node/index.js | 33 + packages/file-handle/src/node/init.js | 32 + packages/file-handle/src/node/wasm_exec.js | 608 +++++++++++++ .../file-handle/src/wasm/file-handle.wasm | Bin 0 -> 474223 bytes packages/file-handle/tsconfig.json | 3 - packages/file-handle/types/expose.d.ts | 10 + packages/file-handle/types/index.d.ts | 3 + packages/file-handle/webpack.config.js | 141 +++ packages/zk-crypto/README.md | 50 ++ packages/zk-crypto/package.json | 39 + packages/zk-crypto/src/browser/index.js | 29 + packages/zk-crypto/src/browser/init.js | 47 + packages/zk-crypto/src/browser/wasm_exec.js | 608 +++++++++++++ packages/zk-crypto/src/node/index.js | 33 + packages/zk-crypto/src/node/init.js | 32 + packages/zk-crypto/src/node/wasm_exec.js | 608 +++++++++++++ packages/zk-crypto/src/wasm/zk-crypto.wasm | Bin 0 -> 469810 bytes packages/zk-crypto/types/expose.d.ts | 3 + packages/zk-crypto/types/index.d.ts | 3 + packages/zk-crypto/webpack.config.js | 141 +++ pnpm-lock.yaml | 841 +++++++++++++++--- 58 files changed, 4018 insertions(+), 1239 deletions(-) create mode 100644 .changeset/five-mice-whisper.md create mode 100644 .changeset/plenty-squids-walk.md create mode 100644 .changeset/soft-phones-give.md delete mode 100644 examples/nextjs/src/components/offchainauth/index.tsx create mode 100644 examples/nextjs/src/utils/offchainAuth.ts delete mode 100644 packages/file-handle/config/tsconfig-cjs.json delete mode 100644 packages/file-handle/config/tsconfig-esm.json delete mode 100644 packages/file-handle/config/tsconfig-test.json delete mode 100644 packages/file-handle/config/tsconfig.json delete mode 100644 packages/file-handle/rollup.config.js create mode 100644 packages/file-handle/src/browser/index.js create mode 100644 packages/file-handle/src/browser/init.js create mode 100644 packages/file-handle/src/browser/wasm_exec.js create mode 100644 packages/file-handle/src/constants.js delete mode 100755 packages/file-handle/src/files-handle-wasm/main.wasm delete mode 100644 packages/file-handle/src/files-handle-wasm/node.js delete mode 100644 packages/file-handle/src/files-handle-wasm/wasm_exec.js delete mode 100644 packages/file-handle/src/files-handle-wasm/wasm_exec_node.js delete mode 100644 packages/file-handle/src/files-handle-wasm/web.d.ts delete mode 100644 packages/file-handle/src/files-handle-wasm/web.js delete mode 100644 packages/file-handle/src/index.ts create mode 100644 packages/file-handle/src/node/index.js create mode 100644 packages/file-handle/src/node/init.js create mode 100644 packages/file-handle/src/node/wasm_exec.js create mode 100755 packages/file-handle/src/wasm/file-handle.wasm delete mode 100644 packages/file-handle/tsconfig.json create mode 100644 packages/file-handle/types/expose.d.ts create mode 100644 packages/file-handle/types/index.d.ts create mode 100644 packages/file-handle/webpack.config.js create mode 100644 packages/zk-crypto/README.md create mode 100644 packages/zk-crypto/package.json create mode 100644 packages/zk-crypto/src/browser/index.js create mode 100644 packages/zk-crypto/src/browser/init.js create mode 100644 packages/zk-crypto/src/browser/wasm_exec.js create mode 100644 packages/zk-crypto/src/node/index.js create mode 100644 packages/zk-crypto/src/node/init.js create mode 100644 packages/zk-crypto/src/node/wasm_exec.js create mode 100644 packages/zk-crypto/src/wasm/zk-crypto.wasm create mode 100644 packages/zk-crypto/types/expose.d.ts create mode 100644 packages/zk-crypto/types/index.d.ts create mode 100644 packages/zk-crypto/webpack.config.js diff --git a/.changeset/five-mice-whisper.md b/.changeset/five-mice-whisper.md new file mode 100644 index 00000000..be328093 --- /dev/null +++ b/.changeset/five-mice-whisper.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/zk-crypto': patch +--- + +feat: New Zk package diff --git a/.changeset/plenty-squids-walk.md b/.changeset/plenty-squids-walk.md new file mode 100644 index 00000000..2ea58fab --- /dev/null +++ b/.changeset/plenty-squids-walk.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfiled-file-handle': patch +--- + +feat: Using tinygo reduce size diff --git a/.changeset/soft-phones-give.md b/.changeset/soft-phones-give.md new file mode 100644 index 00000000..12cd327c --- /dev/null +++ b/.changeset/soft-phones-give.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Zk crypto package diff --git a/examples/nextjs/src/client/index.ts b/examples/nextjs/src/client/index.ts index 2e152da3..4c5c4b52 100644 --- a/examples/nextjs/src/client/index.ts +++ b/examples/nextjs/src/client/index.ts @@ -1,15 +1,29 @@ import { GREEN_CHAIN_ID, GRPC_URL } from '@/config'; import { Client } from '@bnb-chain/greenfield-js-sdk'; -export const client = Client.create(GRPC_URL, String(GREEN_CHAIN_ID)); +export const client = Client.create(GRPC_URL, String(GREEN_CHAIN_ID), { + zkCryptoUrl: 'https://dcellar.io/static/dcellar-web-ui/wasm/zk.wasm', +}); export const getSps = async () => { const sps = await client.sp.getStorageProviders(); - const finalSps = (sps ?? []).filter((v: any) => v?.description?.moniker !== 'QATest'); + const finalSps = (sps ?? []).filter((v: any) => v.endpoint.includes('bnbchain')); return finalSps; }; +export const getAllSps = async () => { + const sps = await getSps(); + + return sps.map((sp) => { + return { + address: sp.operatorAddress, + endpoint: sp.endpoint, + name: sp.description?.moniker, + }; + }); +}; + export const selectSp = async () => { const finalSps = await getSps(); diff --git a/examples/nextjs/src/components/bucket/create/index.tsx b/examples/nextjs/src/components/bucket/create/index.tsx index 87904a32..5bda86e7 100644 --- a/examples/nextjs/src/components/bucket/create/index.tsx +++ b/examples/nextjs/src/components/bucket/create/index.tsx @@ -1,11 +1,10 @@ import { client, selectSp } from '@/client'; -import { ACCOUNT_PRIVATEKEY } from '@/config/env'; +import { getOffchainAuthKeys } from '@/utils/offchainAuth'; import { useState } from 'react'; -import { useAccount, useNetwork } from 'wagmi'; +import { useAccount } from 'wagmi'; export const CreateBucket = () => { - const { address } = useAccount(); - const { chain } = useNetwork(); + const { address, connector } = useAccount(); const [createBucketInfo, setCreateBucketInfo] = useState<{ bucketName: string; }>({ @@ -31,6 +30,13 @@ export const CreateBucket = () => { const spInfo = await selectSp(); console.log('spInfo', spInfo); + const provider = await connector?.getProvider(); + const offChainData = await getOffchainAuthKeys(address, provider); + if (!offChainData) { + alert('No offchain, please create offchain pairs first'); + return; + } + const createBucketTx = await client.bucket.createBucket({ bucketName: createBucketInfo.bucketName, creator: address, @@ -39,48 +45,9 @@ export const CreateBucket = () => { spInfo: { primarySpAddress: spInfo.primarySpAddress, }, - signType: 'authTypeV1', - privateKey: ACCOUNT_PRIVATEKEY, - }); - - const simulateInfo = await createBucketTx.simulate({ - denom: 'BNB', - }); - - console.log('simulateInfo', simulateInfo); - - const res = await createBucketTx.broadcast({ - denom: 'BNB', - gasLimit: Number(simulateInfo?.gasLimit), - gasPrice: simulateInfo?.gasPrice || '5000000000', - payer: address, - granter: '', - }); - - if (res.code === 0) { - alert('success'); - } - }} - > - broadcast with simulate with authTypeV1 - -
- ); diff --git a/examples/nextjs/src/components/multimsg/index.tsx b/examples/nextjs/src/components/multimsg/index.tsx index cab665f4..ea232050 100644 --- a/examples/nextjs/src/components/multimsg/index.tsx +++ b/examples/nextjs/src/components/multimsg/index.tsx @@ -1,5 +1,4 @@ import { client } from '@/client'; -import { ACCOUNT_PRIVATEKEY } from '@/config/env'; import { parseEther } from 'viem'; import { useAccount } from 'wagmi'; @@ -51,7 +50,6 @@ export const MultiMsg = () => { gasPrice: '5000000000', payer: address, granter: '', - privateKey: ACCOUNT_PRIVATEKEY, }); if (res.code === 0) { diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index da32183e..63b9b803 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -1,11 +1,10 @@ -import { client, selectSp } from '@/client'; -import { ACCOUNT_PRIVATEKEY } from '@/config/env'; -import { FileHandler } from '@bnb-chain/greenfiled-file-handle'; +import { client } from '@/client'; +import { getOffchainAuthKeys } from '@/utils/offchainAuth'; import { ChangeEvent, useState } from 'react'; import { useAccount } from 'wagmi'; export const CreateObject = () => { - const { address } = useAccount(); + const { address, connector } = useAccount(); const [file, setFile] = useState(); const [txHash, setTxHash] = useState(); const [createObjectInfo, setCreateObjectInfo] = useState({ @@ -52,10 +51,22 @@ export const CreateObject = () => { return; } + const provider = await connector?.getProvider(); + const offChainData = await getOffchainAuthKeys(address, provider); + if (!offChainData) { + alert('No offchain, please create offchain pairs first'); + return; + } + const fileBytes = await file.arrayBuffer(); - const hashResult = await FileHandler.getPieceHashRoots(new Uint8Array(fileBytes)); + const hashResult = await (window as any).FileHandle.getCheckSums( + new Uint8Array(fileBytes), + ); const { contentLength, expectCheckSums } = hashResult; + console.log('offChainData', offChainData); + console.log('hashResult', hashResult); + const createObjectTx = await client.object.createObject({ bucketName: createObjectInfo.bucketName, objectName: createObjectInfo.objectName, @@ -64,9 +75,10 @@ export const CreateObject = () => { fileType: file.type, redundancyType: 'REDUNDANCY_EC_TYPE', contentLength, - expectCheckSums, - signType: 'authTypeV1', - privateKey: ACCOUNT_PRIVATEKEY, + expectCheckSums: JSON.parse(expectCheckSums), + signType: 'offChainAuth', + domain: window.location.origin, + seedString: offChainData.seedString, }); const simulateInfo = await createObjectTx.simulate({ @@ -97,16 +109,25 @@ export const CreateObject = () => {
- - ); -}; diff --git a/examples/nextjs/src/components/withdraw/index.tsx b/examples/nextjs/src/components/withdraw/index.tsx index 14a31f68..e0327925 100644 --- a/examples/nextjs/src/components/withdraw/index.tsx +++ b/examples/nextjs/src/components/withdraw/index.tsx @@ -69,8 +69,8 @@ export const Withdraw = () => { const relayFee = relayFeeInfo.params ? getRelayFeeBySimulate( - relayFeeInfo.params.transferOutAckRelayerFee, - relayFeeInfo.params.transferOutRelayerFee, + relayFeeInfo.params.bscTransferOutAckRelayerFee, + relayFeeInfo.params.bscTransferOutRelayerFee, ) : '0'; setTransferOutRelayFee(relayFee.toString()); diff --git a/examples/nextjs/src/pages/_app.tsx b/examples/nextjs/src/pages/_app.tsx index 0bc7deed..5d96ff63 100644 --- a/examples/nextjs/src/pages/_app.tsx +++ b/examples/nextjs/src/pages/_app.tsx @@ -1,4 +1,4 @@ -import { chains, publicClient, RainbowTrustWalletConnector, webSocketPublicClient } from '@/config'; +import { chains, publicClient, webSocketPublicClient } from '@/config'; import '@/styles/globals.css'; import { connectorsForWallets, @@ -6,7 +6,6 @@ import { RainbowKitProvider, } from '@rainbow-me/rainbowkit'; import '@rainbow-me/rainbowkit/styles.css'; -import { trustWallet } from '@rainbow-me/rainbowkit/wallets'; import type { AppProps } from 'next/app'; import { createConfig, WagmiConfig } from 'wagmi'; diff --git a/examples/nextjs/src/pages/_document.tsx b/examples/nextjs/src/pages/_document.tsx index e1e9cbbb..8a201d20 100644 --- a/examples/nextjs/src/pages/_document.tsx +++ b/examples/nextjs/src/pages/_document.tsx @@ -8,6 +8,12 @@ export default function Document() {
+ + ); } diff --git a/examples/nextjs/src/pages/tx.tsx b/examples/nextjs/src/pages/tx.tsx index 4d216441..c5e05b00 100644 --- a/examples/nextjs/src/pages/tx.tsx +++ b/examples/nextjs/src/pages/tx.tsx @@ -5,7 +5,6 @@ import { Group } from '@/components/group'; import { Mirror } from '@/components/mirror'; import { MultiMsg } from '@/components/multimsg'; import { ObjectComponent } from '@/components/object'; -import { OffChainAuth } from '@/components/offchainauth'; import { Policy } from '@/components/policy'; import { Transfer } from '@/components/transfer'; import { WalletInfo } from '@/components/walletInfo'; @@ -34,8 +33,6 @@ export default function Tx() {

- -

diff --git a/examples/nextjs/src/utils/offchainAuth.ts b/examples/nextjs/src/utils/offchainAuth.ts new file mode 100644 index 00000000..5567b078 --- /dev/null +++ b/examples/nextjs/src/utils/offchainAuth.ts @@ -0,0 +1,40 @@ +import { client, getAllSps } from '@/client'; +import { GREEN_CHAIN_ID } from '@/config/env'; +import { IReturnOffChainAuthKeyPairAndUpload } from '@bnb-chain/greenfield-js-sdk'; + +/** + * generate off-chain auth key pair and upload public key to sp + */ +export const getOffchainAuthKeys = async (address: string, provider: any) => { + const storageResStr = localStorage.getItem(address); + + if (storageResStr) { + const storageRes = JSON.parse(storageResStr) as IReturnOffChainAuthKeyPairAndUpload; + if (storageRes.expirationTime < Date.now()) { + alert('Your auth key has expired, please generate a new one'); + return; + } + + return storageRes; + } + + const allSps = await getAllSps(); + const offchainAuthRes = await client.offchainauth.genOffChainAuthKeyPairAndUpload( + { + sps: allSps, + chainId: GREEN_CHAIN_ID, + expirationMs: 5 * 24 * 60 * 60 * 1000, + domain: window.location.origin, + address, + }, + provider, + ); + + const { code, body: offChainData } = offchainAuthRes; + if (code !== 0 || !offChainData) { + throw offchainAuthRes; + } + + localStorage.setItem(address, JSON.stringify(offChainData)); + return offChainData; +}; diff --git a/examples/nodejs/index.js b/examples/nodejs/index.js index b57a8a1f..72ffadd1 100644 --- a/examples/nodejs/index.js +++ b/examples/nodejs/index.js @@ -1,4 +1,4 @@ -const { Client } = require('@bnb-chain/greenfield-chain-sdk'); +const { Client } = require('@bnb-chain/greenfield-js-sdk'); const { getCheckSums } = require('@bnb-chain/greenfiled-file-handle/files'); const fs = require('fs'); diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 2bd91918..08851dec 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -53,6 +53,7 @@ ] }, "dependencies": { + "@bnb-chain/zk-crypto": "workspace:*", "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.18", "@cosmjs/proto-signing": "^0.30.1", "@cosmjs/stargate": "^0.30.1", @@ -90,4 +91,4 @@ "tslib": "^2.5.0", "typescript": "^4.9.5" } -} \ No newline at end of file +} diff --git a/packages/chain-sdk/src/api/offchainauth.ts b/packages/chain-sdk/src/api/offchainauth.ts index fb0b22fe..f5da923c 100644 --- a/packages/chain-sdk/src/api/offchainauth.ts +++ b/packages/chain-sdk/src/api/offchainauth.ts @@ -1,13 +1,3 @@ -import { NORMAL_ERROR_CODE } from '@/utils/http'; -import { singleton } from 'tsyringe'; -import { convertTimeStampToDate, getUtcZeroTimestamp } from '..'; -import { - IGenOffChainAuthKeyPairAndUpload, - IObjectResultType, - IReturnOffChainAuthKeyPairAndUpload, - IReturnSignWithSeedString, - ISp, -} from '../types/storage'; import { fetchNonces, genLocalSignMsg, @@ -19,7 +9,17 @@ import { signSignatureByEddsa, updateSpsPubKey, } from '@/offchainauth'; +import { NORMAL_ERROR_CODE } from '@/utils/http'; import { hexlify } from '@ethersproject/bytes'; +import { singleton } from 'tsyringe'; +import { convertTimeStampToDate, getUtcZeroTimestamp } from '..'; +import { + IGenOffChainAuthKeyPairAndUpload, + IObjectResultType, + IReturnOffChainAuthKeyPairAndUpload, + IReturnSignWithSeedString, + ISp, +} from '../types/storage'; export interface IOffChainAuth { /** diff --git a/packages/chain-sdk/src/api/payment.ts b/packages/chain-sdk/src/api/payment.ts index 55d0bbdb..38cf7139 100644 --- a/packages/chain-sdk/src/api/payment.ts +++ b/packages/chain-sdk/src/api/payment.ts @@ -36,6 +36,7 @@ import { RpcQueryClient } from './queryclient'; export interface IPayment { /** * retrieves stream record information for a given stream address. + * the account must actions: deposit, withdraw */ getStreamRecord(account: string): Promise; diff --git a/packages/chain-sdk/src/client.ts b/packages/chain-sdk/src/client.ts index 2f1b09e9..1354212d 100644 --- a/packages/chain-sdk/src/client.ts +++ b/packages/chain-sdk/src/client.ts @@ -19,9 +19,25 @@ import { IVirtualGroup, VirtualGroup } from './api/virtualGroup'; @injectable() export class Client { - static create(rpcUrl: string, chainId: string): Client { + /** + * @rpcUrl string + * @chaidId string + * @wasmURL optional, need setting only used for browser + */ + static create( + rpcUrl: string, + chainId: string, + wasmURL?: { + zkCryptoUrl?: string; + }, + ): Client { container.register('RPC_URL', { useValue: rpcUrl }); container.register('CHAIN_ID', { useValue: chainId }); + container.register('ZK_CRYPTO', { useValue: wasmURL?.zkCryptoUrl }); + + if (wasmURL?.zkCryptoUrl) { + (globalThis as any).__PUBLIC_ZKCRYPTO_WASM_PATH__ = wasmURL.zkCryptoUrl; + } const account = container.resolve(Account); const basic = container.resolve(Basic); diff --git a/packages/chain-sdk/src/offchainauth/sign.ts b/packages/chain-sdk/src/offchainauth/sign.ts index 8c4517df..87f84e8f 100644 --- a/packages/chain-sdk/src/offchainauth/sign.ts +++ b/packages/chain-sdk/src/offchainauth/sign.ts @@ -1,12 +1,21 @@ import { hexlify, arrayify } from '@ethersproject/bytes'; import { toUtf8Bytes } from '@ethersproject/strings'; import { TGetCurrentSeedStringParams } from '../types/storage'; +import { getEddsaCompressedPublicKey, eddsaSign } from '@bnb-chain/zk-crypto'; -const getCurrentAccountPublicKey = (seedString: string) => - (window as any).getEddsaCompressedPublicKey(seedString); +const getCurrentAccountPublicKey = async (seedString: string) => { + if ((window as any).getEddsaCompressedPublicKey) { + return (window as any).getEddsaCompressedPublicKey(seedString); + } + return await getEddsaCompressedPublicKey(seedString); +}; -const signSignatureByEddsa = (seedString: string, message: string) => - (window as any).eddsaSign(seedString, message); +const signSignatureByEddsa = async (seedString: string, message: string) => { + if ((window as any).eddsaSign) { + return (window as any).eddsaSign(seedString, message); + } + return await eddsaSign(seedString, message); +}; const signMessagePersonalAPI = async ( provider: any, diff --git a/packages/file-handle/config/tsconfig-cjs.json b/packages/file-handle/config/tsconfig-cjs.json deleted file mode 100644 index cb04ce46..00000000 --- a/packages/file-handle/config/tsconfig-cjs.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "target": "ES2015", - "module": "ESNext", - "outDir": "../dist/cjs/", - "esModuleInterop": true, - "moduleResolution": "node" - } -} diff --git a/packages/file-handle/config/tsconfig-esm.json b/packages/file-handle/config/tsconfig-esm.json deleted file mode 100644 index 3f112c77..00000000 --- a/packages/file-handle/config/tsconfig-esm.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../dist/esm/", - "moduleResolution": "node" - } -} diff --git a/packages/file-handle/config/tsconfig-test.json b/packages/file-handle/config/tsconfig-test.json deleted file mode 100644 index 7a0229c2..00000000 --- a/packages/file-handle/config/tsconfig-test.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "target": "ES6", - "module": "CommonJS", - "outDir": "./dist/test", - "esModuleInterop": true, - "moduleResolution": "node" - } -} diff --git a/packages/file-handle/config/tsconfig.json b/packages/file-handle/config/tsconfig.json deleted file mode 100644 index 772fb487..00000000 --- a/packages/file-handle/config/tsconfig.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "baseUrl": ".", - "lib": [ - "dom", - "esnext", - "es6" - ], - "compilerOptions": { - "target": "esnext", - "module": "esnext", - "moduleResolution": "NodeNext", - "strict": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "declaration": true, - "declarationDir": "../dist/types", - "outDir": "../dist", - "emitDeclarationOnly": false, - "allowUmdGlobalAccess": true, - "allowJs": true - }, - "include": [ - "../src", - "../typing/*.d.ts" - ], - "exclude": [ - "../node_modules", - "../src/files-handle-wasm", - "../wasm" - ] -} diff --git a/packages/file-handle/package.json b/packages/file-handle/package.json index 5307d354..e20a3667 100644 --- a/packages/file-handle/package.json +++ b/packages/file-handle/package.json @@ -1,38 +1,25 @@ { "name": "@bnb-chain/greenfiled-file-handle", "version": "0.2.0", - "description": "greenfield js chain sdk", - "main": "./dist/cjs/index.js", - "module": "./dist/esm/index.js", - "types": "./dist/esm/index.d.ts", + "description": "checksums wasm package", + "module": "./dist/browser/esm/index.js", + "main": "./dist/node/index.js", + "types": "./types/index.d.ts", "exports": { ".": { - "import": { - "types": "./dist/esm/**.d.ts", - "default": "./dist/esm/index.js" - }, - "require": { - "types": "./dist/cjs/**.d.ts", - "default": "./dist/cjs/index.js" - } + "import": "./dist/browser/esm/index.js", + "main": "./dist/node/index.js", + "default": "./dist/node/index.js", + "types": "./types/index.d.ts" }, - "./files": { - "default": "./dist/files-handle-wasm/cjs/node.js" - } - }, - "browser": { - "./dist/cjs/index.js": "./dist/cjs/index.js", - "./dist/esm/index.js": "./dist/esm/index.js", - "./dist/files-handle-wasm/cjs/node.js": "./dist/files-handle-wasm/web/index.js", - "./dist/files-handle-wasm/esm/node.js": "./dist/files-handle-wasm/web/index.js" + "./file-handle.wasm": "./dist/node/file-handle.wasm" }, "scripts": { "predev": "rimraf ./dist", - "dev": "rollup -cw", + "dev": "weboack -w", "prebuild": "rimraf ./dist", - "build": "rollup -c", - "test": "jest", - "lint": "prettier --write './src/*.{ts,tsx,js,jsx}' && eslint ./src/ --ext .js,.jsx,.ts,.tsx --fix" + "build": "webpack", + "test": "" }, "keywords": [], "author": "", @@ -58,19 +45,11 @@ ] }, "devDependencies": { - "@jest/globals": "^29.5.0", - "@rollup/plugin-wasm": "^6.1.2", - "@types/jest": "^29.5.1", - "jest": "^29.5.0", - "rollup": "^2.79.1", - "rollup-plugin-auto-external": "^2.0.0", - "rollup-plugin-copy": "^3.4.0", - "rollup-plugin-node-builtins": "^2.1.2", - "rollup-plugin-polyfill-node": "^0.10.2", - "rollup-plugin-terser": "^7.0.2", - "ts-jest": "^29.1.0", - "ts-node": "^10.9.1", - "tslib": "^2.5.0", - "typescript": "^4.9.5" + "clean-webpack-plugin": "^4.0.0", + "copy-webpack-plugin": "^11.0.0", + "rimraf": "^3.0.2", + "typescript": "^5.1.6", + "webpack": "^5.88.1", + "webpack-cli": "^5.1.4" } -} +} \ No newline at end of file diff --git a/packages/file-handle/rollup.config.js b/packages/file-handle/rollup.config.js deleted file mode 100644 index 4f04f215..00000000 --- a/packages/file-handle/rollup.config.js +++ /dev/null @@ -1,120 +0,0 @@ -import resolve from '@rollup/plugin-node-resolve'; -import commonjs from '@rollup/plugin-commonjs'; -import typescript from '@rollup/plugin-typescript'; -import json from '@rollup/plugin-json'; -import autoExternal from 'rollup-plugin-auto-external'; -import { terser } from 'rollup-plugin-terser'; -import { babel } from '@rollup/plugin-babel'; -import builtins from 'rollup-plugin-node-builtins'; -import nodePolyfills from 'rollup-plugin-polyfill-node'; -import wasm from '@rollup/plugin-wasm'; -import copy from 'rollup-plugin-copy'; - -const buildConfig = ({ - input = './src/index.ts', - es5, - browser = true, - minifiedVersion = true, - ...config -}) => { - const build = ({ minified }) => ({ - input, - ...config, - output: { - ...config.output, - }, - plugins: [ - json(), - resolve({ browser }), - commonjs(), - minified && terser(), - ...(es5 - ? [ - babel({ - // babelHelpers: 'bundled', - // presets: ['@babel/preset-env'], - }), - ] - : []), - ...(config.plugins || []), - ], - }); - - const configs = [build({ minified: false })]; - - if (minifiedVersion) { - build({ minified: true }); - } - - return configs; -}; - -export default async () => { - return [ - ...buildConfig({ - input: './src/index.ts', - es5: true, - output: { - dir: './dist/esm', - format: 'esm', - }, - plugins: [ - builtins(), - nodePolyfills(), - wasm({ - targetEnv: 'auto-inline', - }), - resolve({ - preferBuiltins: true, - browser: true, - }), - typescript({ - tsconfig: './config/tsconfig-esm.json', - declarationDir: './dist/esm', - }), - ], - }), - ...buildConfig({ - input: './src/index.ts', - output: { - dir: './dist/cjs', - format: 'cjs', - }, - plugins: [ - autoExternal(), - resolve({ - preferBuiltins: false, - browser: false, - }), - wasm({ - targetEnv: 'node', - }), - commonjs(), - nodePolyfills(), - typescript({ - tsconfig: './config/tsconfig-cjs.json', - declarationDir: './dist/cjs', - }), - ], - }), - { - input: ['./src/files-handle-wasm/node.js', './src/files-handle-wasm/web.js'], - output: [ - { dir: './dist/files-handle-wasm/cjs', format: 'cjs', sourcemap: true }, - { dir: './dist/files-handle-wasm/esm', format: 'esm', sourcemap: true }, - ], - plugins: [ - wasm({ - targetEnv: 'auto-inline', - }), - copy({ - targets: [ - { src: 'src/files-handle-wasm/main.wasm', dest: 'dist/files-handle-wasm/cjs' }, - { src: 'src/files-handle-wasm/wasm_exec_node.js', dest: 'dist/files-handle-wasm/cjs' }, - { src: 'src/files-handle-wasm/wasm_exec.js', dest: 'dist/files-handle-wasm/cjs' }, - ], - }), - ], - }, - ]; -}; diff --git a/packages/file-handle/src/browser/index.js b/packages/file-handle/src/browser/index.js new file mode 100644 index 00000000..bd30832a --- /dev/null +++ b/packages/file-handle/src/browser/index.js @@ -0,0 +1,28 @@ +import { ensureServiceIsRunning, initialize, instantiateWASM } from './init'; +import { DEFAULT_DATA_BLOCKS, DEFAULT_PARITY_BLOCKS, DEFAULT_SEGMENT_SIZE } from '../constants'; + +// 1. modify method of `exports` and `globalThis` export. +export const startRunningService = async (wasmURL) => { + const module = await instantiateWASM(wasmURL); + module.instance.exports; + + // `exports` is a map to `//export` way of TinyGo way. + // const { add } = exports; + + // `globalThis` is a map to complex way of `syscall/js` way. + const { getCheckSums } = globalThis; + + return { + getCheckSums, + }; +}; + +export const getCheckSums = async ( + bytes, + segmentSize = DEFAULT_SEGMENT_SIZE, + dataBlocks = DEFAULT_DATA_BLOCKS, + parityBlocks = DEFAULT_PARITY_BLOCKS, +) => { + await initialize(); + return ensureServiceIsRunning().getCheckSums(bytes, segmentSize, dataBlocks, parityBlocks); +}; diff --git a/packages/file-handle/src/browser/init.js b/packages/file-handle/src/browser/init.js new file mode 100644 index 00000000..c753ec0f --- /dev/null +++ b/packages/file-handle/src/browser/init.js @@ -0,0 +1,47 @@ +import { startRunningService } from '.'; +import Go from './wasm_exec.js'; + +export const initialize = async () => { + if (!initializePromise) { + const input = window.__PUBLIC_FILE_HANDLE_WASM_PATH__; + initializePromise = startRunningService(input).catch((err) => { + // Let the caller try again if this fails. + initializePromise = void 0; + // But still, throw the error back up the caller. + throw err; + }); + } + longLivedService = longLivedService || (await initializePromise); +}; + +export const instantiateWASM = async (wasmURL) => { + let module = undefined; + const go = new Go(); + + if (!WebAssembly.instantiateStreaming) { + WebAssembly.instantiateStreaming = async (resp, importObject) => { + const source = await (await resp).arrayBuffer(); + return await WebAssembly.instantiate(source, importObject); + }; + } + + const fetchAndInstantiateTask = async () => { + return WebAssembly.instantiateStreaming(fetch(wasmURL), go.importObject); + }; + module = await fetchAndInstantiateTask(); + go.run(module.instance); + + return module; +}; + +let initializePromise; +let longLivedService; + +export const ensureServiceIsRunning = () => { + if (!initializePromise) throw new Error('You need to call "initialize" before calling this'); + if (!longLivedService) + throw new Error( + 'You need to wait for the promise returned from "initialize" to be resolved before calling this', + ); + return longLivedService; +}; diff --git a/packages/file-handle/src/browser/wasm_exec.js b/packages/file-handle/src/browser/wasm_exec.js new file mode 100644 index 00000000..56d7352b --- /dev/null +++ b/packages/file-handle/src/browser/wasm_exec.js @@ -0,0 +1,608 @@ +/* eslint-disable */ +// @ts-nocheck +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// +// This file has been modified for use by the TinyGo compiler. + +// Map multiple JavaScript environments to a single common API, +// preferring web standards over Node.js API. +// +// Environments considered: +// - Browsers +// - Node.js +// - Electron +// - Parcel + +if (typeof global !== 'undefined') { + // global already exists +} else if (typeof window !== 'undefined') { + window.global = window; +} else if (typeof self !== 'undefined') { + self.global = self; +} else { + throw new Error('cannot export Go (neither global, window nor self is defined)'); +} + +if (!global.require && typeof require !== 'undefined') { + global.require = require; +} + +if (!global.fs && global.require) { + global.fs = require('fs'); +} + +const enosys = () => { + const err = new Error('not implemented'); + err.code = 'ENOSYS'; + return err; +}; + +if (!global.fs) { + let outputBuf = ''; + global.fs = { + constants: { O_WRONLY: -1, O_RDWR: -1, O_CREAT: -1, O_TRUNC: -1, O_APPEND: -1, O_EXCL: -1 }, // unused + writeSync(fd, buf) { + outputBuf += decoder.decode(buf); + const nl = outputBuf.lastIndexOf('\n'); + if (nl != -1) { + console.log(outputBuf.substr(0, nl)); + outputBuf = outputBuf.substr(nl + 1); + } + return buf.length; + }, + write(fd, buf, offset, length, position, callback) { + if (offset !== 0 || length !== buf.length || position !== null) { + callback(enosys()); + return; + } + const n = this.writeSync(fd, buf); + callback(null, n); + }, + chmod(path, mode, callback) { + callback(enosys()); + }, + chown(path, uid, gid, callback) { + callback(enosys()); + }, + close(fd, callback) { + callback(enosys()); + }, + fchmod(fd, mode, callback) { + callback(enosys()); + }, + fchown(fd, uid, gid, callback) { + callback(enosys()); + }, + fstat(fd, callback) { + callback(enosys()); + }, + fsync(fd, callback) { + callback(null); + }, + ftruncate(fd, length, callback) { + callback(enosys()); + }, + lchown(path, uid, gid, callback) { + callback(enosys()); + }, + link(path, link, callback) { + callback(enosys()); + }, + lstat(path, callback) { + callback(enosys()); + }, + mkdir(path, perm, callback) { + callback(enosys()); + }, + open(path, flags, mode, callback) { + callback(enosys()); + }, + read(fd, buffer, offset, length, position, callback) { + callback(enosys()); + }, + readdir(path, callback) { + callback(enosys()); + }, + readlink(path, callback) { + callback(enosys()); + }, + rename(from, to, callback) { + callback(enosys()); + }, + rmdir(path, callback) { + callback(enosys()); + }, + stat(path, callback) { + callback(enosys()); + }, + symlink(path, link, callback) { + callback(enosys()); + }, + truncate(path, length, callback) { + callback(enosys()); + }, + unlink(path, callback) { + callback(enosys()); + }, + utimes(path, atime, mtime, callback) { + callback(enosys()); + }, + }; +} + +if (!global.process) { + global.process = { + getuid() { + return -1; + }, + getgid() { + return -1; + }, + geteuid() { + return -1; + }, + getegid() { + return -1; + }, + getgroups() { + throw enosys(); + }, + pid: -1, + ppid: -1, + umask() { + throw enosys(); + }, + cwd() { + throw enosys(); + }, + chdir() { + throw enosys(); + }, + }; +} + +if (!global.crypto) { + const nodeCrypto = require('crypto'); + global.crypto = { + getRandomValues(b) { + nodeCrypto.randomFillSync(b); + }, + }; +} + +if (!global.performance) { + global.performance = { + now() { + const [sec, nsec] = process.hrtime(); + return sec * 1000 + nsec / 1000000; + }, + }; +} + +if (!global.TextEncoder) { + global.TextEncoder = require('util').TextEncoder; +} + +if (!global.TextDecoder) { + global.TextDecoder = require('util').TextDecoder; +} + +// End of polyfills for common API. + +const encoder = new TextEncoder('utf-8'); +const decoder = new TextDecoder('utf-8'); +var logLine = []; + +export default class Go { + importObject; + constructor() { + this._callbackTimeouts = new Map(); + this._nextCallbackTimeoutID = 1; + + const mem = () => { + // The buffer may change when requesting more memory. + return new DataView(this._inst.exports.memory.buffer); + }; + + const setInt64 = (addr, v) => { + mem().setUint32(addr + 0, v, true); + mem().setUint32(addr + 4, Math.floor(v / 4294967296), true); + }; + + const getInt64 = (addr) => { + const low = mem().getUint32(addr + 0, true); + const high = mem().getInt32(addr + 4, true); + return low + high * 4294967296; + }; + + const loadValue = (addr) => { + const f = mem().getFloat64(addr, true); + if (f === 0) { + return undefined; + } + if (!isNaN(f)) { + return f; + } + + const id = mem().getUint32(addr, true); + return this._values[id]; + }; + + const storeValue = (addr, v) => { + const nanHead = 0x7ff80000; + + if (typeof v === 'number') { + if (isNaN(v)) { + mem().setUint32(addr + 4, nanHead, true); + mem().setUint32(addr, 0, true); + return; + } + if (v === 0) { + mem().setUint32(addr + 4, nanHead, true); + mem().setUint32(addr, 1, true); + return; + } + mem().setFloat64(addr, v, true); + return; + } + + switch (v) { + case undefined: + mem().setFloat64(addr, 0, true); + return; + case null: + mem().setUint32(addr + 4, nanHead, true); + mem().setUint32(addr, 2, true); + return; + case true: + mem().setUint32(addr + 4, nanHead, true); + mem().setUint32(addr, 3, true); + return; + case false: + mem().setUint32(addr + 4, nanHead, true); + mem().setUint32(addr, 4, true); + return; + } + + let id = this._ids.get(v); + if (id === undefined) { + id = this._idPool.pop(); + if (id === undefined) { + id = this._values.length; + } + this._values[id] = v; + this._goRefCounts[id] = 0; + this._ids.set(v, id); + } + this._goRefCounts[id]++; + let typeFlag = 1; + switch (typeof v) { + case 'string': + typeFlag = 2; + break; + case 'symbol': + typeFlag = 3; + break; + case 'function': + typeFlag = 4; + break; + } + mem().setUint32(addr + 4, nanHead | typeFlag, true); + mem().setUint32(addr, id, true); + }; + + const loadSlice = (array, len, cap) => { + return new Uint8Array(this._inst.exports.memory.buffer, array, len); + }; + + const loadSliceOfValues = (array, len, cap) => { + const a = new Array(len); + for (let i = 0; i < len; i++) { + a[i] = loadValue(array + i * 8); + } + return a; + }; + + const loadString = (ptr, len) => { + return decoder.decode(new DataView(this._inst.exports.memory.buffer, ptr, len)); + }; + + const timeOrigin = Date.now() - performance.now(); + this.importObject = { + wasi_snapshot_preview1: { + // https://github.com/WebAssembly/WASI/blob/main/phases/snapshot/docs.md#fd_write + fd_write: function (fd, iovs_ptr, iovs_len, nwritten_ptr) { + let nwritten = 0; + if (fd == 1) { + for (let iovs_i = 0; iovs_i < iovs_len; iovs_i++) { + let iov_ptr = iovs_ptr + iovs_i * 8; // assuming wasm32 + let ptr = mem().getUint32(iov_ptr + 0, true); + let len = mem().getUint32(iov_ptr + 4, true); + nwritten += len; + for (let i = 0; i < len; i++) { + let c = mem().getUint8(ptr + i); + if (c == 13) { + // CR + // ignore + } else if (c == 10) { + // LF + // write line + let line = decoder.decode(new Uint8Array(logLine)); + logLine = []; + console.log(line); + } else { + logLine.push(c); + } + } + } + } else { + console.error('invalid file descriptor:', fd); + } + mem().setUint32(nwritten_ptr, nwritten, true); + return 0; + }, + fd_close: () => 0, // dummy + fd_fdstat_get: () => 0, // dummy + fd_seek: () => 0, // dummy + proc_exit: (code) => { + if (global.process) { + // Node.js + process.exit(code); + } else { + // Can't exit in a browser. + throw 'trying to exit with code ' + code; + } + }, + random_get: (bufPtr, bufLen) => { + crypto.getRandomValues(loadSlice(bufPtr, bufLen)); + return 0; + }, + }, + env: { + // func ticks() float64 + 'runtime.ticks': () => { + return timeOrigin + performance.now(); + }, + + // func sleepTicks(timeout float64) + 'runtime.sleepTicks': (timeout) => { + // Do not sleep, only reactivate scheduler after the given timeout. + setTimeout(this._inst.exports.go_scheduler, timeout); + }, + + // func finalizeRef(v ref) + 'syscall/js.finalizeRef': (v_addr) => { + // Note: TinyGo does not support finalizers so this is only called + // for one specific case, by js.go:jsString. + const id = mem().getUint32(v_addr, true); + this._goRefCounts[id]--; + if (this._goRefCounts[id] === 0) { + const v = this._values[id]; + this._values[id] = null; + this._ids.delete(v); + this._idPool.push(id); + } + }, + + // func stringVal(value string) ref + 'syscall/js.stringVal': (ret_ptr, value_ptr, value_len) => { + const s = loadString(value_ptr, value_len); + storeValue(ret_ptr, s); + }, + + // func valueGet(v ref, p string) ref + 'syscall/js.valueGet': (retval, v_addr, p_ptr, p_len) => { + let prop = loadString(p_ptr, p_len); + let value = loadValue(v_addr); + let result = Reflect.get(value, prop); + storeValue(retval, result); + }, + + // func valueSet(v ref, p string, x ref) + 'syscall/js.valueSet': (v_addr, p_ptr, p_len, x_addr) => { + const v = loadValue(v_addr); + const p = loadString(p_ptr, p_len); + const x = loadValue(x_addr); + Reflect.set(v, p, x); + }, + + // func valueDelete(v ref, p string) + 'syscall/js.valueDelete': (v_addr, p_ptr, p_len) => { + const v = loadValue(v_addr); + const p = loadString(p_ptr, p_len); + Reflect.deleteProperty(v, p); + }, + + // func valueIndex(v ref, i int) ref + 'syscall/js.valueIndex': (ret_addr, v_addr, i) => { + storeValue(ret_addr, Reflect.get(loadValue(v_addr), i)); + }, + + // valueSetIndex(v ref, i int, x ref) + 'syscall/js.valueSetIndex': (v_addr, i, x_addr) => { + Reflect.set(loadValue(v_addr), i, loadValue(x_addr)); + }, + + // func valueCall(v ref, m string, args []ref) (ref, bool) + 'syscall/js.valueCall': (ret_addr, v_addr, m_ptr, m_len, args_ptr, args_len, args_cap) => { + const v = loadValue(v_addr); + const name = loadString(m_ptr, m_len); + const args = loadSliceOfValues(args_ptr, args_len, args_cap); + try { + const m = Reflect.get(v, name); + storeValue(ret_addr, Reflect.apply(m, v, args)); + mem().setUint8(ret_addr + 8, 1); + } catch (err) { + storeValue(ret_addr, err); + mem().setUint8(ret_addr + 8, 0); + } + }, + + // func valueInvoke(v ref, args []ref) (ref, bool) + 'syscall/js.valueInvoke': (ret_addr, v_addr, args_ptr, args_len, args_cap) => { + try { + const v = loadValue(v_addr); + const args = loadSliceOfValues(args_ptr, args_len, args_cap); + storeValue(ret_addr, Reflect.apply(v, undefined, args)); + mem().setUint8(ret_addr + 8, 1); + } catch (err) { + storeValue(ret_addr, err); + mem().setUint8(ret_addr + 8, 0); + } + }, + + // func valueNew(v ref, args []ref) (ref, bool) + 'syscall/js.valueNew': (ret_addr, v_addr, args_ptr, args_len, args_cap) => { + const v = loadValue(v_addr); + const args = loadSliceOfValues(args_ptr, args_len, args_cap); + try { + storeValue(ret_addr, Reflect.construct(v, args)); + mem().setUint8(ret_addr + 8, 1); + } catch (err) { + storeValue(ret_addr, err); + mem().setUint8(ret_addr + 8, 0); + } + }, + + // func valueLength(v ref) int + 'syscall/js.valueLength': (v_addr) => { + return loadValue(v_addr).length; + }, + + // valuePrepareString(v ref) (ref, int) + 'syscall/js.valuePrepareString': (ret_addr, v_addr) => { + const s = String(loadValue(v_addr)); + const str = encoder.encode(s); + storeValue(ret_addr, str); + setInt64(ret_addr + 8, str.length); + }, + + // valueLoadString(v ref, b []byte) + 'syscall/js.valueLoadString': (v_addr, slice_ptr, slice_len, slice_cap) => { + const str = loadValue(v_addr); + loadSlice(slice_ptr, slice_len, slice_cap).set(str); + }, + + // func valueInstanceOf(v ref, t ref) bool + 'syscall/js.valueInstanceOf': (v_addr, t_addr) => { + return loadValue(v_addr) instanceof loadValue(t_addr); + }, + + // func copyBytesToGo(dst []byte, src ref) (int, bool) + 'syscall/js.copyBytesToGo': (ret_addr, dest_addr, dest_len, dest_cap, source_addr) => { + let num_bytes_copied_addr = ret_addr; + let returned_status_addr = ret_addr + 4; // Address of returned boolean status variable + + const dst = loadSlice(dest_addr, dest_len); + const src = loadValue(source_addr); + if (!(src instanceof Uint8Array || src instanceof Uint8ClampedArray)) { + mem().setUint8(returned_status_addr, 0); // Return "not ok" status + return; + } + const toCopy = src.subarray(0, dst.length); + dst.set(toCopy); + setInt64(num_bytes_copied_addr, toCopy.length); + mem().setUint8(returned_status_addr, 1); // Return "ok" status + }, + + // copyBytesToJS(dst ref, src []byte) (int, bool) + // Originally copied from upstream Go project, then modified: + // https://github.com/golang/go/blob/3f995c3f3b43033013013e6c7ccc93a9b1411ca9/misc/wasm/wasm_exec.js#L404-L416 + 'syscall/js.copyBytesToJS': (ret_addr, dest_addr, source_addr, source_len, source_cap) => { + let num_bytes_copied_addr = ret_addr; + let returned_status_addr = ret_addr + 4; // Address of returned boolean status variable + + const dst = loadValue(dest_addr); + const src = loadSlice(source_addr, source_len); + if (!(dst instanceof Uint8Array || dst instanceof Uint8ClampedArray)) { + mem().setUint8(returned_status_addr, 0); // Return "not ok" status + return; + } + const toCopy = src.subarray(0, dst.length); + dst.set(toCopy); + setInt64(num_bytes_copied_addr, toCopy.length); + mem().setUint8(returned_status_addr, 1); // Return "ok" status + }, + }, + }; + } + + async run(instance) { + this._inst = instance; + this._values = [ + // JS values that Go currently has references to, indexed by reference id + NaN, + 0, + null, + true, + false, + global, + this, + ]; + this._goRefCounts = []; // number of references that Go has to a JS value, indexed by reference id + this._ids = new Map(); // mapping from JS values to reference ids + this._idPool = []; // unused ids that have been garbage collected + this.exited = false; // whether the Go program has exited + + const mem = new DataView(this._inst.exports.memory.buffer); + + while (true) { + const callbackPromise = new Promise((resolve) => { + this._resolveCallbackPromise = () => { + if (this.exited) { + throw new Error('bad callback: Go program has already exited'); + } + setTimeout(resolve, 0); // make sure it is asynchronous + }; + }); + this._inst.exports._start(); + if (this.exited) { + break; + } + await callbackPromise; + } + } + + _resume() { + if (this.exited) { + throw new Error('Go program has already exited'); + } + this._inst.exports.resume(); + if (this.exited) { + this._resolveExitPromise(); + } + } + + _makeFuncWrapper(id) { + const go = this; + return function () { + const event = { id: id, this: this, args: arguments }; + go._pendingEvent = event; + go._resume(); + return event.result; + }; + } +} + +// if ( +// global.require && +// global.require.main === module && +// global.process && +// global.process.versions && +// !global.process.versions.electron +// ) { +// if (process.argv.length != 3) { +// console.error("usage: go_js_wasm_exec [wasm binary] [arguments]"); +// process.exit(1); +// } + +// const go = new Go(); +// WebAssembly.instantiate(fs.readFileSync(process.argv[2]), go.importObject).then((result) => { +// return go.run(result.instance); +// }).catch((err) => { +// console.error(err); +// process.exit(1); +// }); +// } diff --git a/packages/file-handle/src/constants.js b/packages/file-handle/src/constants.js new file mode 100644 index 00000000..93d69989 --- /dev/null +++ b/packages/file-handle/src/constants.js @@ -0,0 +1,3 @@ +export const DEFAULT_SEGMENT_SIZE = 16 * 1024 * 1024; +export const DEFAULT_DATA_BLOCKS = 4; +export const DEFAULT_PARITY_BLOCKS = 2; diff --git a/packages/file-handle/src/files-handle-wasm/main.wasm b/packages/file-handle/src/files-handle-wasm/main.wasm deleted file mode 100755 index 10a82571bba18447469841d79e723959bba5bf2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3079990 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

#_e!e0ez`B@*V0d6 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

!)k&`G3`SP%_DU+#1 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

RnLmNRa2|w7a8# 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�ZO$XvThzk3HsgXQdl!^1s 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

E*SZRhZLG!Jk6z)N@LzX%E5M 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

); diff --git a/examples/nextjs/src/components/group/update/index.tsx b/examples/nextjs/src/components/group/update/index.tsx new file mode 100644 index 00000000..988c7069 --- /dev/null +++ b/examples/nextjs/src/components/group/update/index.tsx @@ -0,0 +1,52 @@ +import { client } from '@/client'; +import { useState } from 'react'; +import { zeroAddress } from 'viem'; +import { useAccount } from 'wagmi'; + +export const GroupUpdate = () => { + const { address } = useAccount(); + const [groupName, setGroupName] = useState(''); + + return ( +
+

group update

+ { + setGroupName(e.target.value); + }} + /> + +
+ ); +}; diff --git a/packages/chain-sdk/src/api/group.ts b/packages/chain-sdk/src/api/group.ts index 9d9544e0..dc11b159 100644 --- a/packages/chain-sdk/src/api/group.ts +++ b/packages/chain-sdk/src/api/group.ts @@ -2,7 +2,7 @@ import { MsgCreateGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCr import { MsgDeleteGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteGroup'; import { MsgLeaveGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgLeaveGroup'; import { MsgUpdateGroupExtraSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateGroupExtra'; -import { MsgUpdateGroupMemberSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateGroupMember'; +import { getMsgUpdateGroupMemberSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateGroupMember'; import { GRNToString, newBucketGRN, newGroupGRN, newObjectGRN } from '@/utils/grn'; import { QueryGroupNFTResponse, @@ -138,7 +138,10 @@ export class Group implements IGroup { return await this.basic.tx( MsgUpdateGroupMemberTypeUrl, msg.operator, - MsgUpdateGroupMemberSDKTypeEIP712, + getMsgUpdateGroupMemberSDKTypeEIP712({ + membersToAdd: msg.membersToAdd, + membersToDelete: msg.membersToDelete, + }), MsgUpdateGroupMember.toSDK(msg), MsgUpdateGroupMember.encode(msg).finish(), ); diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts index aedde54e..2fcc72e0 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts @@ -1,4 +1,29 @@ -export const MsgUpdateGroupMemberSDKTypeEIP712 = { +export const getMsgUpdateGroupMemberSDKTypeEIP712 = ({ + membersToAdd, + membersToDelete, +}: { + membersToAdd: string[]; + membersToDelete: string[]; +}) => { + const res = MsgUpdateGroupMemberSDKTypeEIP712; + if (membersToAdd.length > 0) { + res.Msg1.push({ + name: 'members_to_add', + type: 'string[]', + }); + } + + if (membersToDelete.length > 0) { + res.Msg1.push({ + name: 'members_to_delete', + type: 'string[]', + }); + } + + return res; +}; + +const MsgUpdateGroupMemberSDKTypeEIP712 = { Msg1: [ { name: 'type', @@ -16,13 +41,13 @@ export const MsgUpdateGroupMemberSDKTypeEIP712 = { name: 'group_name', type: 'string', }, - { - name: 'members_to_add', - type: 'string[]', - }, - { - name: 'members_to_delete', - type: 'string[]', - }, + // { + // name: 'members_to_add', + // type: 'string[]', + // }, + // { + // name: 'members_to_delete', + // type: 'string[]', + // }, ], }; diff --git a/packages/zk-crypto/package.json b/packages/zk-crypto/package.json index 0e5c2819..e47fcaf8 100644 --- a/packages/zk-crypto/package.json +++ b/packages/zk-crypto/package.json @@ -1,5 +1,5 @@ { - "name": "@bnb-chain/zk-crypto", + "name": "@bnb-chain/greenfield-zk-crypto", "version": "0.0.2-alpha.0", "description": "Zk crypto wasm module", "scripts": { @@ -36,4 +36,4 @@ "webpack": "^5.88.1", "webpack-cli": "^5.1.4" } -} +} \ No newline at end of file From 139c30ab9119c3a45c5182d6f24636f842d457c8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 16 Aug 2023 17:08:22 +0800 Subject: [PATCH 123/433] chore: [ci] release (alpha) (#218) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 6 ++++-- examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- packages/zk-crypto/CHANGELOG.md | 8 ++++++++ packages/zk-crypto/package.json | 2 +- 9 files changed, 40 insertions(+), 6 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index d9bb21d8..150cdc98 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -11,10 +11,12 @@ "changesets": [ "five-mice-whisper", "flat-mugs-collect", + "large-jokes-fly", "mean-horses-change", "plenty-squids-walk", "quiet-numbers-camp", "seven-toys-fry", - "soft-phones-give" + "soft-phones-give", + "yellow-plums-cheat" ] -} \ No newline at end of file +} diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index e00d148e..ae19bb19 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.5-alpha.2 + +### Patch Changes + +- Updated dependencies + [[`8d08848`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8d08848490d98fb774a8542d226647e8e5d65652)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.2 + ## 0.0.5-alpha.1 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 6180e738..40fc8cf3 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.5-alpha.1", + "version": "0.0.5-alpha.2", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index befb0f75..6e3427d2 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.8-alpha.2 + +### Patch Changes + +- Updated dependencies + [[`8d08848`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8d08848490d98fb774a8542d226647e8e5d65652)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.2 + ## 0.0.8-alpha.1 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 9c686951..5893eb3c 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.8-alpha.1", + "version": "0.0.8-alpha.2", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 308907a8..95a7ea49 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.4-alpha.2 + +### Patch Changes + +- [#217](https://github.com/bnb-chain/greenfield-js-sdk/pull/217) + [`8d08848`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8d08848490d98fb774a8542d226647e8e5d65652) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Dynamic add and delete members string array + ## 0.2.4-alpha.1 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 44876e20..3b966b5c 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.4-alpha.1", + "version": "0.2.4-alpha.2", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", diff --git a/packages/zk-crypto/CHANGELOG.md b/packages/zk-crypto/CHANGELOG.md index 16583989..a826fb20 100644 --- a/packages/zk-crypto/CHANGELOG.md +++ b/packages/zk-crypto/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/zk-crypto +## 0.0.2-alpha.1 + +### Patch Changes + +- [#217](https://github.com/bnb-chain/greenfield-js-sdk/pull/217) + [`8d08848`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8d08848490d98fb774a8542d226647e8e5d65652) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Release + ## 0.0.2-alpha.0 ### Patch Changes diff --git a/packages/zk-crypto/package.json b/packages/zk-crypto/package.json index e47fcaf8..3735502f 100644 --- a/packages/zk-crypto/package.json +++ b/packages/zk-crypto/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-zk-crypto", - "version": "0.0.2-alpha.0", + "version": "0.0.2-alpha.1", "description": "Zk crypto wasm module", "scripts": { "predev": "rimraf ./dist", From 2715b171dd8b0984e2515e7c77975ffc15e258f8 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 16 Aug 2023 17:14:34 +0800 Subject: [PATCH 124/433] chore: Release zk crypto (#219) --- .changeset/nice-geckos-think.md | 5 +++++ packages/zk-crypto/package.json | 4 ++++ 2 files changed, 9 insertions(+) create mode 100644 .changeset/nice-geckos-think.md diff --git a/.changeset/nice-geckos-think.md b/.changeset/nice-geckos-think.md new file mode 100644 index 00000000..21f37fc6 --- /dev/null +++ b/.changeset/nice-geckos-think.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-zk-crypto': patch +--- + +chore: Release diff --git a/packages/zk-crypto/package.json b/packages/zk-crypto/package.json index 3735502f..698d05e2 100644 --- a/packages/zk-crypto/package.json +++ b/packages/zk-crypto/package.json @@ -9,6 +9,10 @@ "build": "webpack", "test": "" }, + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, "module": "./dist/browser/esm/index.js", "main": "./dist/node/index.js", "types": "./types/index.d.ts", From 5423afebd3d4d25e1335e262ddead60eec8566cf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 16 Aug 2023 17:18:40 +0800 Subject: [PATCH 125/433] chore: [ci] release (alpha) (#220) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/zk-crypto/CHANGELOG.md | 8 ++++++++ packages/zk-crypto/package.json | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 150cdc98..c97fbffc 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -13,6 +13,7 @@ "flat-mugs-collect", "large-jokes-fly", "mean-horses-change", + "nice-geckos-think", "plenty-squids-walk", "quiet-numbers-camp", "seven-toys-fry", diff --git a/packages/zk-crypto/CHANGELOG.md b/packages/zk-crypto/CHANGELOG.md index a826fb20..d9e33875 100644 --- a/packages/zk-crypto/CHANGELOG.md +++ b/packages/zk-crypto/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/zk-crypto +## 0.0.2-alpha.2 + +### Patch Changes + +- [#219](https://github.com/bnb-chain/greenfield-js-sdk/pull/219) + [`2715b17`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2715b171dd8b0984e2515e7c77975ffc15e258f8) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Release + ## 0.0.2-alpha.1 ### Patch Changes diff --git a/packages/zk-crypto/package.json b/packages/zk-crypto/package.json index 698d05e2..ffc2a307 100644 --- a/packages/zk-crypto/package.json +++ b/packages/zk-crypto/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-zk-crypto", - "version": "0.0.2-alpha.1", + "version": "0.0.2-alpha.2", "description": "Zk crypto wasm module", "scripts": { "predev": "rimraf ./dist", From 8ba4cc735cbd72b07d8d0a9fadae2c4bda1dea53 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 16 Aug 2023 18:16:00 +0800 Subject: [PATCH 126/433] fix: Zk version bump (#221) --- .changeset/stupid-spies-poke.md | 6 + packages/chain-sdk/package.json | 4 +- packages/chain-sdk/src/offchainauth/sign.ts | 2 +- packages/zk-crypto/README.md | 10 +- pnpm-lock.yaml | 134 +++++--------------- 5 files changed, 48 insertions(+), 108 deletions(-) create mode 100644 .changeset/stupid-spies-poke.md diff --git a/.changeset/stupid-spies-poke.md b/.changeset/stupid-spies-poke.md new file mode 100644 index 00000000..bcedabf4 --- /dev/null +++ b/.changeset/stupid-spies-poke.md @@ -0,0 +1,6 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +'@bnb-chain/greenfield-zk-crypto': patch +--- + +fix: Zk crypto version diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 3b966b5c..5dedf1b7 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -53,7 +53,7 @@ ] }, "dependencies": { - "@bnb-chain/zk-crypto": "workspace:*", + "@bnb-chain/greenfield-zk-crypto": "workspace:*", "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.18", "@cosmjs/proto-signing": "^0.30.1", "@cosmjs/stargate": "^0.30.1", @@ -91,4 +91,4 @@ "tslib": "^2.5.0", "typescript": "^4.9.5" } -} +} \ No newline at end of file diff --git a/packages/chain-sdk/src/offchainauth/sign.ts b/packages/chain-sdk/src/offchainauth/sign.ts index 87f84e8f..ab8efdf3 100644 --- a/packages/chain-sdk/src/offchainauth/sign.ts +++ b/packages/chain-sdk/src/offchainauth/sign.ts @@ -1,7 +1,7 @@ import { hexlify, arrayify } from '@ethersproject/bytes'; import { toUtf8Bytes } from '@ethersproject/strings'; import { TGetCurrentSeedStringParams } from '../types/storage'; -import { getEddsaCompressedPublicKey, eddsaSign } from '@bnb-chain/zk-crypto'; +import { getEddsaCompressedPublicKey, eddsaSign } from '@bnb-chain/greenfield-zk-crypto'; const getCurrentAccountPublicKey = async (seedString: string) => { if ((window as any).getEddsaCompressedPublicKey) { diff --git a/packages/zk-crypto/README.md b/packages/zk-crypto/README.md index b37d4dca..0ab7a576 100644 --- a/packages/zk-crypto/README.md +++ b/packages/zk-crypto/README.md @@ -5,7 +5,7 @@ NPM Wrap for [zkbnb-js-sdk](https://github.com/bnb-chain/zkbnb-js-sdk). ## Usage ``` -> npm i @bnb-chain/zk-crypto +> npm i @bnb-chain/greenfield-zk-crypto ``` ### Browsers @@ -13,7 +13,7 @@ NPM Wrap for [zkbnb-js-sdk](https://github.com/bnb-chain/zkbnb-js-sdk). #### ESM ```js -import {getEddsaCompressedPublicKey} from "@bnb-chain/zk-crypto" +import {getEddsaCompressedPublicKey} from "@bnb-chain/greenfield-zk-crypto" // set wasm path: CDN or your server path window.__PUBLIC_ZKCRYPTO_WASM_PATH__ = 'zk wasm path'; @@ -27,10 +27,10 @@ window.__PUBLIC_ZKCRYPTO_WASM_PATH__ = 'zk wasm path'; #### UMD ```html - + + diff --git a/examples/nodejs/index.js b/examples/nodejs/index.js index 72ffadd1..32390f6f 100644 --- a/examples/nodejs/index.js +++ b/examples/nodejs/index.js @@ -1,28 +1,43 @@ const { Client } = require('@bnb-chain/greenfield-js-sdk'); -const { getCheckSums } = require('@bnb-chain/greenfiled-file-handle/files'); -const fs = require('fs'); +// const { getCheckSums } = require('@bnb-chain/greenfiled-file-handle/files'); +// const fs = require('fs'); + +// const client = Client.create('https://gnfd-dev.qa.bnbchain.world', '8981'); const client = Client.create('https://gnfd.qa.bnbchain.world', '9000'); -// (async () => { -// const filePath = './package.json'; -// const fileBuf = fs.readFileSync(filePath); -// const DEFAULT_SEGMENT_SIZE = 16 * 1024 * 1024; -// const DEFAULT_DATA_BLOCKS = 4; -// const DEFAULT_PARITY_BLOCKS = 2; -// const bytes = new Uint8Array(fileBuf); +(async () => { + const createBucketTx = await client.bucket.createBucket({ + bucketName: 'foo', + creator: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + visibility: 'VISIBILITY_TYPE_PUBLIC_READ', + chargedReadQuota: '0', + spInfo: { + primarySpAddress: '0x66d06FFe266B46C6F0730cC9Ec2fc5B811cdA085', + }, + signType: 'authTypeV1', + privateKey: '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032', + // signType: 'offChainAuth', + // domain: window.location.origin, + // seedString: offChainData.seedString, + }); + + const simulateInfo = await createBucketTx.simulate({ + denom: 'BNB', + }); -// const hashResult = await getCheckSums( -// Buffer.from(bytes).toString('hex'), -// DEFAULT_SEGMENT_SIZE, -// DEFAULT_DATA_BLOCKS, -// DEFAULT_PARITY_BLOCKS, -// ); -// console.log('hashResult', hashResult); -// })(); + console.log('simulateInfo', simulateInfo); -(async () => { - const account = await client.account.getAccount('0x1C893441AB6c1A75E01887087ea508bE8e07AAae'); + const res = await createBucketTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo?.gasLimit), + gasPrice: simulateInfo?.gasPrice || '5000000000', + payer: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + granter: '', + privateKey: '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032', + }); - console.log(account); + if (res.code === 0) { + console.log('success'); + } })(); diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 561fac2f..44c82bff 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -53,8 +53,8 @@ ] }, "dependencies": { + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.22", "@bnb-chain/greenfield-zk-crypto": "workspace:*", - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.21", "@cosmjs/proto-signing": "^0.30.1", "@cosmjs/stargate": "^0.30.1", "@cosmjs/tendermint-rpc": "^0.30.1", @@ -67,6 +67,7 @@ "dayjs": "^1.11.7", "dotenv": "^16.0.3", "ethereum-cryptography": "^2.0.0", + "fast-xml-parser": "^4.2.7", "lodash.clonedeep": "^4.5.0", "lodash.mapvalues": "^4.6.0", "lodash.sortby": "^4.7.0", diff --git a/packages/chain-sdk/src/api/basic.ts b/packages/chain-sdk/src/api/basic.ts index 4c69efa6..b6c77088 100644 --- a/packages/chain-sdk/src/api/basic.ts +++ b/packages/chain-sdk/src/api/basic.ts @@ -1,4 +1,4 @@ -import { getPubKeyByPriKey, signEIP712Data } from '@/keymanage'; +import { getPubKeyByPriKey } from '@/keymanage'; import { defaultSignTypedData } from '@/sign/signTx'; import { getGasFeeBySimulate } from '@/utils/units'; import { BaseAccount } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/auth'; @@ -27,7 +27,14 @@ import { arrayify } from '@ethersproject/bytes'; import { signTypedData, SignTypedDataVersion } from '@metamask/eth-sig-util'; import Long from 'long'; import { container, inject, singleton } from 'tsyringe'; -import { BroadcastOptions, ISimulateGasFee, MetaTxInfo, SimulateOptions, TxResponse } from '..'; +import { + BroadcastOptions, + ISimulateGasFee, + MetaTxInfo, + SignOptions, + SimulateOptions, + TxResponse, +} from '..'; import { DEFAULT_DENOM, ZERO_PUBKEY } from '../constants'; import { createEIP712, @@ -37,7 +44,7 @@ import { mergeMultiEip712, mergeMultiMessage, } from '../messages'; -import { generateMsg, typeWrapper } from '../messages/utils'; +import { generateMsg } from '../messages/utils'; import { eip712Hash, makeCosmsPubKey, recoverPk } from '../sign'; import { Account } from './account'; import { RpcQueryClient } from './queryclient'; @@ -104,7 +111,7 @@ export interface IBasic { /** * */ - multiTx(txResList: TxResponse[]): Promise>; + multiTx(txResList: Pick[]): Promise>; } @singleton() @@ -167,32 +174,36 @@ export class Basic implements IBasic { MsgSDK: MetaTxInfo['MsgSDK'], msgBytes: MetaTxInfo['msgBytes'], ) { - const accountInfo = await this.account.getAccount(address); - const bodyBytes = this.getSingleBodyBytes(typeUrl, msgBytes); - - return { - simulate: async (opts: SimulateOptions) => { - return await this.simulateRawTx(bodyBytes, accountInfo, opts); + const txBodyBytes = this.getBodyBytes([ + { + typeUrl, + msgBytes, }, - broadcast: async (opts: BroadcastOptions) => { - const rawTxBytes = await this.getRawTxBytes( + ]); + + const tx = await this.multiTx([ + { + metaTxInfo: { typeUrl, + address, MsgSDKTypeEIP712, MsgSDK, - bodyBytes, - accountInfo, - opts, - ); - - return await this.broadcastRawTx(rawTxBytes); + msgBytes, + bodyBytes: txBodyBytes, + }, }, + ]); + + return { + simulate: tx.simulate, + broadcast: tx.broadcast, metaTxInfo: { typeUrl, address, MsgSDKTypeEIP712, MsgSDK, msgBytes, - bodyBytes, + bodyBytes: txBodyBytes, }, }; } @@ -236,16 +247,10 @@ export class Basic implements IBasic { return await client.broadcastTx(txRawBytes); } - public async multiTx(txResList: TxResponse[]) { + public async multiTx(txResList: Pick[]) { const txs = txResList.map((txRes) => txRes.metaTxInfo); const accountInfo = await this.account.getAccount(txs[0].address); - const multiMsgBytes = txs.map((tx) => { - return generateMsg(tx.typeUrl, tx.msgBytes); - }); - const txBody = TxBody.fromPartial({ - messages: multiMsgBytes, - }); - const txBodyBytes = TxBody.encode(txBody).finish(); + const txBodyBytes = this.getBodyBytes(txs); return { simulate: async (opts: SimulateOptions) => { @@ -256,14 +261,12 @@ export class Basic implements IBasic { denom, gasLimit, gasPrice, - privateKey, payer, granter, + privateKey, signTypedDataCallback = defaultSignTypedData, } = opts; - let signature, - pubKey = undefined; const types = mergeMultiEip712(txs.map((tx) => tx.MsgSDKTypeEIP712)); const fee = generateFee( String(BigInt(gasLimit) * BigInt(gasPrice)), @@ -285,25 +288,9 @@ export class Basic implements IBasic { ); const eip712 = createEIP712(wrapperTypes, this.chainId, messages); - if (privateKey) { - pubKey = getPubKeyByPriKey(privateKey); - signature = signTypedData({ - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - data: eip712, - version: SignTypedDataVersion.V4, - privateKey: Buffer.from(arrayify(privateKey)), - }); - } else { - signature = await signTypedDataCallback(accountInfo.address, JSON.stringify(eip712)); - const messageHash = eip712Hash(JSON.stringify(eip712)); - - const pk = recoverPk({ - signature, - messageHash, - }); - pubKey = makeCosmsPubKey(pk); - } + const { pubKey, signature } = privateKey + ? this.getSignByPriKey(eip712, privateKey) + : await this.getSignByWallet(eip712, accountInfo.address, signTypedDataCallback); const authInfoBytes = this.getAuthInfoBytes({ denom, @@ -341,130 +328,67 @@ export class Basic implements IBasic { amount: String(BigInt(gasLimit) * BigInt(gasPrice)), }, ]; - const feeGranter = granter; - const feePayer = payer; + const authInfoBytes = makeAuthInfoBytes( [{ pubkey: pubKey, sequence: Number(sequence) }], feeAmount, gasLimit, - feeGranter, - feePayer, + granter, + payer, 712, ); return authInfoBytes; } - /** - * Get the body bytes of a transaction - * - * EIP712 sign or private key sign - */ - protected async getRawTxBytes( - typeUrl: string, - msgEIP712Structor: object, - msgEIP712: object, - bodyBytes: Uint8Array, - accountInfo: BaseAccount, - txOption: BroadcastOptions, - ): Promise { - const { - denom, - gasLimit, - gasPrice, - privateKey, - signTypedDataCallback = defaultSignTypedData, - granter, - payer, - } = txOption; - - // console.log('txOption', txOption); - // console.log('msgEIP712', msgEIP712); - - let signature, - pubKey = undefined; - - if (privateKey) { - pubKey = getPubKeyByPriKey(privateKey); - signature = signEIP712Data( - this.chainId, - accountInfo.accountNumber + '', - accountInfo.sequence + '', - typeUrl, - msgEIP712Structor, - msgEIP712, - txOption, - ); - // console.log('signature', signature); - } else { - const eip712 = this.getEIP712Struct( - typeUrl, - msgEIP712Structor, - accountInfo.accountNumber + '', - accountInfo.sequence + '', - this.chainId, - msgEIP712, - txOption, - ); - signature = await signTypedDataCallback(accountInfo.address, JSON.stringify(eip712)); - const messageHash = eip712Hash(JSON.stringify(eip712)); - const pk = recoverPk({ - signature, - messageHash, - }); - pubKey = makeCosmsPubKey(pk); - } - - const authInfoBytes = this.getAuthInfoBytes({ - denom, - sequence: accountInfo.sequence + '', - gasLimit, - gasPrice, - pubKey, - granter, - payer, + private getBodyBytes(params: { typeUrl: string; msgBytes: Uint8Array }[]) { + const multiMsgBytes = params.map((tx) => { + return generateMsg(tx.typeUrl, tx.msgBytes); }); - const txRaw = TxRaw.fromPartial({ - bodyBytes, - authInfoBytes, - signatures: [arrayify(signature)], + const txBody = TxBody.fromPartial({ + messages: multiMsgBytes, }); - - return TxRaw.encode(txRaw).finish(); + const txBodyBytes = TxBody.encode(txBody).finish(); + return txBodyBytes; } - protected getSingleBodyBytes(typeUrl: string, msgBytes: Uint8Array): Uint8Array { - const msgWrapped = generateMsg(typeUrl, msgBytes); - - const txBody = TxBody.fromPartial({ - messages: [msgWrapped], + private getSignByPriKey( + eip712: ReturnType, + privateKey: SignOptions['privateKey'], + ) { + const pubKey = getPubKeyByPriKey(privateKey); + const signature = signTypedData({ + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + data: eip712, + version: SignTypedDataVersion.V4, + privateKey: Buffer.from(arrayify(privateKey)), }); - return TxBody.encode(txBody).finish(); + return { + pubKey, + signature, + }; } - protected getEIP712Struct( - typeUrl: string, - types: object, - accountNumber: string, - sequence: string, - chainId: string, - msg: object, - txOption: BroadcastOptions, + private async getSignByWallet( + eip712: ReturnType, + address: string, + signTypedDataCallback: SignOptions['signTypedDataCallback'], ) { - const { gasLimit, gasPrice, denom = DEFAULT_DENOM, payer, granter } = txOption; + const signature = await signTypedDataCallback(address, JSON.stringify(eip712)); + const messageHash = eip712Hash(JSON.stringify(eip712)); - const fee = generateFee( - String(BigInt(gasLimit) * BigInt(gasPrice)), - denom, - String(gasLimit), - payer, - granter, - ); - const wrapperTypes = generateTypes(types); - const wrapperMsg = typeWrapper(typeUrl, msg); - const messages = generateMessage(accountNumber, sequence, chainId, '', fee, wrapperMsg, '0'); - return createEIP712(wrapperTypes, chainId, messages); + const pk = recoverPk({ + signature, + messageHash, + }); + const pubKey = makeCosmsPubKey(pk); + + return { + pubKey, + signature, + }; } } diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index 5cbef10a..cd12f0b9 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -2,7 +2,12 @@ import { MsgCreateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgC import { MsgDeleteBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteBucket'; import { MsgMigrateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMigrateBucket'; import { MsgUpdateBucketInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; -import { getAuthorizationAuthTypeV1, getAuthorizationAuthTypeV2, ReqMeta } from '@/utils/auth'; +import { + getAuthorization, + getAuthorizationAuthTypeV2, + newRequestHeadersByMeta, + ReqMeta, +} from '@/utils/auth'; import { decodeObjectFromHexString, encodeObjectToHexString } from '@/utils/encoding'; import { EMPTY_STRING_SHA256, @@ -50,6 +55,7 @@ import { } from '..'; import { BucketProps, + IBaseGetCreateBucket, ICreateBucketMsgType, IMigrateBucket, IMigrateBucketMsgType, @@ -63,19 +69,22 @@ import { Basic } from './basic'; import { OffChainAuth } from './offchainauth'; import { RpcQueryClient } from './queryclient'; import { Sp } from './sp'; +import { AuthType, SpClient } from './spclient'; import { Storage } from './storage'; -import { VirtualGroup } from './virtualGroup'; export interface IBucket { /** * returns the signature info for the approval of preCreating resources */ - getCreateBucketApproval(params: TCreateBucket): Promise>; + getCreateBucketApproval( + configParam: IBaseGetCreateBucket, + authType: AuthType, + ): Promise>; /** * get approval of creating bucket and send createBucket txn to greenfield chain */ - createBucket(params: TCreateBucket): Promise; + createBucket(params: IBaseGetCreateBucket, authType: AuthType): Promise; /** * query the bucketInfo on chain, return the bucket info if exists @@ -109,10 +118,7 @@ export interface IBucket { updateBucketInfo(msg: MsgUpdateBucketInfo): Promise; - putBucketPolicy( - bucketName: string, - srcMsg: Omit, - ): Promise; + putBucketPolicy(bucketName: string, srcMsg: Omit): Promise; deleteBucketPolicy( operator: string, @@ -137,8 +143,9 @@ export class Bucket implements IBucket { private queryClient = container.resolve(RpcQueryClient); private offChainAuthClient = container.resolve(OffChainAuth); + private spClient = container.resolve(SpClient); - public async getCreateBucketApproval(configParam: TCreateBucket) { + public async getCreateBucketApproval(params: IBaseGetCreateBucket, authType: AuthType) { const { bucketName, creator, @@ -146,7 +153,7 @@ export class Bucket implements IBucket { chargedReadQuota, spInfo, duration, - } = configParam; + } = params; try { if (!spInfo.primarySpAddress) { @@ -178,72 +185,62 @@ export class Bucket implements IBucket { const url = `${endpoint}${path}?${query}`; const unSignedMessageInHex = encodeObjectToHexString(msg); - let headerContent: TKeyValue = { + const reqMeta: Partial = { + contentSHA256: EMPTY_STRING_SHA256, + txnMsg: unSignedMessageInHex, + method: METHOD_GET, + url: { + hostname: new URL(endpoint).hostname, + query, + path, + }, + contentType: '', + }; + + const metaHeaders: Headers = newRequestHeadersByMeta(reqMeta); + + let headerObj: Record = { + 'Content-Type': '', + 'X-Gnfd-Date': metaHeaders.get('X-Gnfd-Date'), + 'X-Gnfd-Expiry-Timestamp': metaHeaders.get('X-Gnfd-Expiry-Timestamp'), 'X-Gnfd-Unsigned-Msg': unSignedMessageInHex, + 'X-Gnfd-Content-Sha256': EMPTY_STRING_SHA256, }; - if (configParam.signType === 'authTypeV1') { - const reqMeta: Partial = { - contentSHA256: EMPTY_STRING_SHA256, - txnMsg: unSignedMessageInHex, - method: METHOD_GET, - url: { - hostname: new URL(endpoint).hostname, - query, - path, - }, - date: '', - // contentType: fileType, - }; - const v1Auth = getAuthorizationAuthTypeV1(reqMeta, configParam.privateKey); + if (authType.type === 'OffChainAuth') { + const { domain } = authType; + metaHeaders.append('X-Gnfd-User-Address', creator); + metaHeaders.append('X-Gnfd-App-Domain', domain); - headerContent = { - 'X-Gnfd-Unsigned-Msg': unSignedMessageInHex, - // 'Content-Type': fileType, - 'Content-Type': 'application/octet-stream', - 'X-Gnfd-Content-Sha256': EMPTY_STRING_SHA256, - 'X-Gnfd-Date': '', - Authorization: v1Auth, - }; - } - if (configParam.signType === 'offChainAuth') { - const { seedString, domain } = configParam; - const { code, body, statusCode, message } = await this.offChainAuthClient.sign(seedString); - if (code !== 0) { - throw { - code: -1, - message: message || 'Get create bucket approval error.', - statusCode: statusCode, - }; - } - headerContent = { - ...headerContent, - Authorization: body?.authorization as string, + headerObj = { + ...headerObj, 'X-Gnfd-User-Address': creator, 'X-Gnfd-App-Domain': domain, }; } - const headers = new Headers(headerContent); - const result = await fetchWithTimeout( + const auth = await getAuthorization(reqMeta, metaHeaders, authType); + + headerObj = { + ...headerObj, + Authorization: auth, + }; + + const headers = new Headers(headerObj); + + const result = await this.spClient.callApi( url, { headers, method: METHOD_GET, }, duration, + { + code: -1, + message: 'Get create bucket approval error.', + }, ); - const { status } = result; - if (!result.ok) { - const { code, message } = await parseErrorXml(result); - throw { - code: code || -1, - message: message || 'Get create bucket approval error.', - statusCode: status, - }; - } - const signedMsgString = result.headers.get('X-Gnfd-Signed-Msg') || ''; const signedMsg = decodeObjectFromHexString(signedMsgString) as ICreateBucketMsgType; @@ -251,7 +248,7 @@ export class Bucket implements IBucket { code: 0, message: 'Get create bucket approval success.', body: signedMsgString, - statusCode: status, + statusCode: result.status, signedMsg: signedMsg, }; } catch (error: any) { @@ -279,8 +276,8 @@ export class Bucket implements IBucket { ); } - public async createBucket(params: TCreateBucket) { - const { signedMsg } = await this.getCreateBucketApproval(params); + public async createBucket(params: TCreateBucket, authType: AuthType) { + const { signedMsg } = await this.getCreateBucketApproval(params, authType); if (!signedMsg) { throw new Error('Get create bucket approval error'); @@ -504,10 +501,7 @@ export class Bucket implements IBucket { ); } - public async putBucketPolicy( - bucketName: string, - srcMsg: Omit, - ) { + public async putBucketPolicy(bucketName: string, srcMsg: Omit) { const resource = GRNToString(newBucketGRN(bucketName)); const msg: MsgPutPolicy = { ...srcMsg, diff --git a/packages/chain-sdk/src/api/crosschain.ts b/packages/chain-sdk/src/api/crosschain.ts index f91acacd..83ad6393 100644 --- a/packages/chain-sdk/src/api/crosschain.ts +++ b/packages/chain-sdk/src/api/crosschain.ts @@ -4,8 +4,11 @@ import { MsgMirrorBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgM import { MsgMirrorGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMirrorGroup'; import { MsgMirrorObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMirrorObject'; import { + QueryCrossChainPackageRequest, QueryCrossChainPackageResponse, + QueryReceiveSequenceRequest, QueryReceiveSequenceResponse, + QuerySendSequenceRequest, QuerySendSequenceResponse, } from '@bnb-chain/greenfield-cosmos-types/cosmos/crosschain/v1/query'; import { QueryInturnRelayerResponse } from '@bnb-chain/greenfield-cosmos-types/cosmos/oracle/v1/query'; @@ -17,7 +20,6 @@ import { MsgMirrorGroup, MsgMirrorObject, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import Long from 'long'; import { container, singleton } from 'tsyringe'; import { MsgClaimTypeUrl, @@ -44,12 +46,14 @@ export interface ICrossChain { /** * gets the next send sequence for a channel */ - getChannelSendSequence(channelId: number): Promise; + getChannelSendSequence(request: QuerySendSequenceRequest): Promise; /** * gets the next receive sequence for a channel */ - getChannelReceiveSequence(channelId: number): Promise; + getChannelReceiveSequence( + request: QueryReceiveSequenceRequest, + ): Promise; /** * gets the in-turn relayer bls public key and its relay interval @@ -57,8 +61,7 @@ export interface ICrossChain { getInturnRelayer(): Promise; getCrosschainPackage( - channelId: number, - sequence: number, + request: QueryCrossChainPackageRequest, ): Promise; /** @@ -104,18 +107,14 @@ export class CrossChain implements ICrossChain { ); } - public async getChannelSendSequence(channelId: number) { + public async getChannelSendSequence(request: QuerySendSequenceRequest) { const rpc = await this.queryClient.getCrosschainQueryClient(); - return await rpc.SendSequence({ - channelId, - }); + return await rpc.SendSequence(request); } - public async getChannelReceiveSequence(channelId: number) { + public async getChannelReceiveSequence(request: QueryReceiveSequenceRequest) { const rpc = await this.queryClient.getCrosschainQueryClient(); - return await rpc.ReceiveSequence({ - channelId, - }); + return await rpc.ReceiveSequence(request); } public async getInturnRelayer() { @@ -123,12 +122,9 @@ export class CrossChain implements ICrossChain { return await rpc.InturnRelayer(); } - public async getCrosschainPackage(channelId: number, sequence: number) { + public async getCrosschainPackage(request: QueryCrossChainPackageRequest) { const rpc = await this.queryClient.getCrosschainQueryClient(); - return await rpc.CrossChainPackage({ - channelId, - sequence: Long.fromNumber(sequence), - }); + return await rpc.CrossChainPackage(request); } public async mirrorGroup(msg: MsgMirrorGroup) { diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 5dde9de6..4d756a2d 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -2,7 +2,13 @@ import { MsgCancelCreateObjectSDKTypeEIP712 } from '@/messages/greenfield/storag import { MsgCreateObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCreateObject'; import { MsgDeleteObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteObject'; import { MsgUpdateObjectInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateObjectInfo'; -import { getAuthorizationAuthTypeV1, getAuthorizationAuthTypeV2, ReqMeta } from '@/utils/auth'; +import { + getAuthorization, + getAuthorizationAuthTypeV1, + getAuthorizationAuthTypeV2, + newRequestHeadersByMeta, + ReqMeta, +} from '@/utils/auth'; import { EMPTY_STRING_SHA256, fetchWithTimeout, @@ -74,12 +80,16 @@ import { Bucket } from './bucket'; import { OffChainAuth } from './offchainauth'; import { RpcQueryClient } from './queryclient'; import { Sp } from './sp'; +import { AuthType, SpClient } from './spclient'; import { Storage } from './storage'; export interface IObject { - getCreateObjectApproval(getApprovalParams: TCreateObject): Promise>; + getCreateObjectApproval( + configParam: TBaseGetCreateObject, + authType: AuthType, + ): Promise>; - createObject(getApprovalParams: TCreateObject): Promise; + createObject(getApprovalParams: TBaseGetCreateObject, authType: AuthType): Promise; uploadObject(configParam: TPutObject): Promise>; @@ -103,7 +113,7 @@ export interface IObject { createFolder( getApprovalParams: Omit, - signParams: SignTypeOffChain | SignTypeV1, + authType: AuthType, ): Promise; putObjectPolicy( @@ -146,8 +156,9 @@ export class Objectt implements IObject { private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); private offChainAuthClient = container.resolve(OffChainAuth); + private spClient = container.resolve(SpClient); - public async getCreateObjectApproval(configParam: TCreateObject) { + public async getCreateObjectApproval(configParam: TBaseGetCreateObject, authType: AuthType) { const { bucketName, creator, @@ -196,74 +207,60 @@ export class Objectt implements IObject { const unSignedMessageInHex = encodeObjectToHexString(msg); - let headerContent: TKeyValue = { - 'X-Gnfd-Unsigned-Msg': unSignedMessageInHex, + const reqMeta: Partial = { + contentSHA256: EMPTY_STRING_SHA256, + txnMsg: unSignedMessageInHex, + method: METHOD_GET, + url: { + hostname: new URL(endpoint).hostname, + query, + path, + }, + contentType: fileType, }; - if (configParam.signType === 'authTypeV1') { - // const date = new Date().toISOString(); - const reqMeta: Partial = { - contentSHA256: EMPTY_STRING_SHA256, - txnMsg: unSignedMessageInHex, - method: METHOD_GET, - url: { - hostname: new URL(endpoint).hostname, - query, - path, - }, - date: '', - contentType: fileType, - }; + const metaHeaders: Headers = newRequestHeadersByMeta(reqMeta); - const Authorization = getAuthorizationAuthTypeV1(reqMeta, configParam.privateKey); + let headerObj: Record = { + 'X-Gnfd-Unsigned-Msg': unSignedMessageInHex, + 'Content-Type': fileType, + 'X-Gnfd-Content-Sha256': EMPTY_STRING_SHA256, + 'X-Gnfd-Date': metaHeaders.get('X-Gnfd-Date'), + 'X-Gnfd-Expiry-Timestamp': metaHeaders.get('X-Gnfd-Expiry-Timestamp'), + }; - headerContent = { - 'X-Gnfd-Unsigned-Msg': unSignedMessageInHex, - 'Content-Type': fileType, - // 'Content-Type': 'application/octet-stream', - 'X-Gnfd-Content-Sha256': EMPTY_STRING_SHA256, - 'X-Gnfd-Date': '', - Authorization, - }; - // console.log(x) - } else if (configParam.signType === 'offChainAuth') { - const { seedString, domain } = configParam; - const { code, body, statusCode } = await this.offChainAuthClient.sign(seedString); - if (code !== 0) { - throw { - code: -1, - message: 'Get create bucket approval error.', - statusCode: statusCode, - }; - } - headerContent = { - ...headerContent, - Authorization: body?.authorization as string, + if (authType.type === 'EDDSA') { + const { domain } = authType; + metaHeaders.append('X-Gnfd-User-Address', creator); + metaHeaders.append('X-Gnfd-App-Domain', domain); + + headerObj = { + ...headerObj, 'X-Gnfd-User-Address': creator, 'X-Gnfd-App-Domain': domain, }; } - const headers = new Headers(headerContent); - const result = await fetchWithTimeout( + + const auth = await getAuthorization(reqMeta, metaHeaders, authType); + headerObj = { + ...headerObj, + Authorization: auth, + }; + + const headers = new Headers(headerObj); + const result = await this.spClient.callApi( url, { headers, method: METHOD_GET, }, duration, + { + code: -1, + message: 'Get create object approval error.', + }, ); - const { status } = result; - if (!result.ok) { - const { code, message } = await parseErrorXml(result); - throw { - code: code || -1, - message: message || 'Get create object approval error.', - statusCode: status, - error: result, - }; - } - const signedMsgString = result.headers.get('X-Gnfd-Signed-Msg') || ''; const signedMsg = decodeObjectFromHexString(signedMsgString) as ICreateObjectMsgType; @@ -271,7 +268,7 @@ export class Objectt implements IObject { code: 0, message: 'Get create object approval success.', body: result.headers.get('X-Gnfd-Signed-Msg') ?? '', - statusCode: status, + statusCode: result.status, signedMsg, }; } catch (error: any) { @@ -302,8 +299,8 @@ export class Objectt implements IObject { ); } - public async createObject(getApprovalParams: TCreateObject) { - const { signedMsg } = await this.getCreateObjectApproval(getApprovalParams); + public async createObject(getApprovalParams: TBaseGetCreateObject, authType: AuthType) { + const { signedMsg } = await this.getCreateObjectApproval(getApprovalParams, authType); if (!signedMsg) { throw new Error('Get create object approval error'); } @@ -357,12 +354,12 @@ export class Objectt implements IObject { query, path, }, - date: date, + // date: date, // contentType: '', txnHash: txnHash, }; - const Authorization = getAuthorizationAuthTypeV1(reqMeta, configParam.privateKey); + const Authorization = getAuthorizationAuthTypeV1(reqMeta, null, configParam.privateKey); headerContent = { ...headerContent, 'Content-Type': 'application/octet-stream', @@ -623,7 +620,7 @@ export class Objectt implements IObject { public async createFolder( getApprovalParams: Omit, - signParams: SignTypeOffChain | SignTypeV1, + authType: AuthType, ) { if (!getApprovalParams.objectName.endsWith('/')) { throw new Error( @@ -640,7 +637,7 @@ export class Objectt implements IObject { const { contentLength, expectCheckSums } = hashResult; */ - const params: TCreateObject = { + const params: TBaseGetCreateObject = { bucketName: getApprovalParams.bucketName, objectName: getApprovalParams.objectName, contentLength: 0, @@ -655,10 +652,9 @@ export class Objectt implements IObject { '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', ], creator: getApprovalParams.creator, - ...signParams, }; - return this.createObject(params); + return this.createObject(params, authType); } public async putObjectPolicy( diff --git a/packages/chain-sdk/src/api/offchainauth.ts b/packages/chain-sdk/src/api/offchainauth.ts index f5da923c..950e6ddf 100644 --- a/packages/chain-sdk/src/api/offchainauth.ts +++ b/packages/chain-sdk/src/api/offchainauth.ts @@ -9,8 +9,10 @@ import { signSignatureByEddsa, updateSpsPubKey, } from '@/offchainauth'; +import { getMsgToSign } from '@/utils/auth'; import { NORMAL_ERROR_CODE } from '@/utils/http'; import { hexlify } from '@ethersproject/bytes'; +import { utf8ToBytes } from 'ethereum-cryptography/utils'; import { singleton } from 'tsyringe'; import { convertTimeStampToDate, getUtcZeroTimestamp } from '..'; import { @@ -54,9 +56,11 @@ export class OffChainAuth implements IOffChainAuth { const spsWithNonce = spsNonceRaw.filter((item: ISp) => item.nonce !== null); // 2. generate signature key pair const seedMsg = genLocalSignMsg(spsWithNonce, domain); + // Uint8Array const seed = await getCurrentSeedString({ message: seedMsg, address, chainId, provider }); const seedString = hexlify(seed); const pubKey = await getCurrentAccountPublicKey(seedString); + // 3. second sign for upload public key to server const curUtcZeroTimestamp = getUtcZeroTimestamp(); const expirationTime = curUtcZeroTimestamp + expirationMs; @@ -73,7 +77,7 @@ export class OffChainAuth implements IOffChainAuth { }); const signRes = await personalSign({ message: signMsg, address, provider }); const jsonSignMsg = JSON.stringify(signMsg).replace(/\"/g, ''); - const authorization = `PersonalSign ECDSA-secp256k1,SignedMsg=${jsonSignMsg},Signature=${signRes}`; + const authorization = `GNFD1-ETH-PERSONAL_SIGN,SignedMsg=${jsonSignMsg},Signature=${signRes}`; // 4. upload signature and pubKey to server const res = await updateSpsPubKey({ address, @@ -115,17 +119,20 @@ export class OffChainAuth implements IOffChainAuth { public async sign(seedString: string) { try { // NOTICE: Smoothing local and server time gap - const expirationMs = 300000 - 100000; - const timestamp = getUtcZeroTimestamp(); - const expireTimestamp = timestamp + expirationMs; - const signMsg = genSeedSignMsg(expireTimestamp); - const signRes = await signSignatureByEddsa(seedString, signMsg); - const authorization = `OffChainAuth EDDSA,SignedMsg=${signMsg},Signature=${signRes}`; + // const expirationMs = 300000 - 100000; + // const timestamp = getUtcZeroTimestamp(); + // const expireTimestamp = timestamp + expirationMs; + // const signMsg = genSeedSignMsg(expireTimestamp); + + const unsignedMsg = ''; + + const signRes = await signSignatureByEddsa(seedString, unsignedMsg); + const authorization = `GNFD1-EDDSA,Signature=${signRes}`; return { code: 0, body: { - unSignedMsg: signMsg, + unSignedMsg: unsignedMsg, signature: signRes, authorization, }, diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index 4b5dbc54..18c17816 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -1,17 +1,20 @@ -import { getAuthorizationAuthTypeV2 } from '@/utils/auth'; import { fetchWithTimeout, METHOD_GET, parseErrorXml } from '@/utils/http'; -import { QueryParamsResponse } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/query'; import { - SecondarySpStorePrice, - SpStoragePrice, - Status, - StorageProvider, -} from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/types'; + QueryGlobalSpStorePriceByTimeRequest, + QueryGlobalSpStorePriceByTimeResponse, + QueryParamsResponse, + QuerySpStoragePriceRequest, + QuerySpStoragePriceResponse, + QueryStorageProviderByOperatorAddressRequest, + QueryStorageProviderByOperatorAddressResponse, + QueryStorageProviderMaintenanceRecordsRequest, + QueryStorageProviderMaintenanceRecordsResponse, +} from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/query'; +import { Status, StorageProvider } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/types'; import { SourceType } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; import { GroupInfo } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/types'; import { Headers } from 'cross-fetch'; -import Long from 'long'; -import { container, delay, inject, singleton } from 'tsyringe'; +import { container, singleton } from 'tsyringe'; import { Bucket } from './bucket'; import { RpcQueryClient } from './queryclient'; import { VirtualGroup } from './virtualGroup'; @@ -29,14 +32,30 @@ export interface ISp { getStorageProviderInfo(spId: number): Promise; /** - * returns the storage price for a particular storage provider, including update time, read price, store price and .etc. + * get the latest storage price of specific sp */ - getStoragePriceByTime(spAddress: string): Promise; + getQuerySpStoragePrice(request: QuerySpStoragePriceRequest): Promise; /** - * returns the secondary storage price, including update time and store price + * get global store price by time */ - getSecondarySpStorePrice(): Promise; + getQueryGlobalSpStorePriceByTime( + request: QueryGlobalSpStorePriceByTimeRequest, + ): Promise; + + /** + * Queries a StorageProvider by specify operator address. + */ + getStorageProviderByOperatorAddress( + request: QueryStorageProviderByOperatorAddressRequest, + ): Promise; + + /** + * Queries a StorageProvider by specify operator address. + */ + getStorageProviderMaintenanceRecordsByOperatorAddress( + request: QueryStorageProviderMaintenanceRecordsRequest, + ): Promise; params(): Promise; @@ -67,6 +86,30 @@ export class Sp implements ISp { return res.storageProvider; } + public async getQuerySpStoragePrice(request: QuerySpStoragePriceRequest) { + const rpc = await this.queryClient.getSpQueryClient(); + return await rpc.QuerySpStoragePrice(request); + } + + public async getQueryGlobalSpStorePriceByTime(request: QueryGlobalSpStorePriceByTimeRequest) { + const rpc = await this.queryClient.getSpQueryClient(); + return await rpc.QueryGlobalSpStorePriceByTime(request); + } + + public async getStorageProviderByOperatorAddress( + request: QueryStorageProviderByOperatorAddressRequest, + ) { + const rpc = await this.queryClient.getSpQueryClient(); + return await rpc.StorageProviderByOperatorAddress(request); + } + + public async getStorageProviderMaintenanceRecordsByOperatorAddress( + request: QueryStorageProviderMaintenanceRecordsRequest, + ) { + const rpc = await this.queryClient.getSpQueryClient(); + return await rpc.StorageProviderMaintenanceRecordsByOperatorAddress(request); + } + public async getSPUrlByBucket(bucketName: string) { const { bucketInfo } = await this.bucket.headBucket(bucketName); @@ -87,23 +130,6 @@ export class Sp implements ISp { return sps.filter((sp) => sp.operatorAddress === parimaryAddr)[0].endpoint; } - public async getStoragePriceByTime(spAddress: string) { - const rpc = await this.queryClient.getSpQueryClient(); - const res = await rpc.QueryGetSpStoragePriceByTime({ - timestamp: Long.fromNumber(0), - spAddr: spAddress, - }); - return res.spStoragePrice; - } - - public async getSecondarySpStorePrice() { - const rpc = await this.queryClient.getSpQueryClient(); - const res = await rpc.QueryGetSecondarySpStorePriceByTime({ - timestamp: Long.fromNumber(0), - }); - return res.secondarySpStorePrice; - } - public async params() { const rpc = await this.queryClient.getSpQueryClient(); return await rpc.Params(); diff --git a/packages/chain-sdk/src/api/spclient.ts b/packages/chain-sdk/src/api/spclient.ts new file mode 100644 index 00000000..b5a71bb7 --- /dev/null +++ b/packages/chain-sdk/src/api/spclient.ts @@ -0,0 +1,69 @@ +import { delayMs, parseErrorXML } from '@/utils/http'; +import { singleton } from 'tsyringe'; + +/** + * V1 + */ +export type ECDSA = { + type: 'ECDSA'; + privateKey: string; +}; +/** + * OffChainAuth + */ +export type EDDSA = { + type: 'EDDSA'; + seed: string; + domain: string; +}; +export type AuthType = ECDSA | EDDSA; + +@singleton() +export class SpClient { + public async callApi( + url: string, + options: RequestInit, + duration = 30000, + customError?: { + message: string; + code: number; + }, + ) { + try { + const response = (await Promise.race([delayMs(duration), fetch(url, options)])) as Response; + const { status } = response; + + if (!response.ok) { + const { code, message } = await parseErrorXML(response); + throw { + code: code || customError?.code, + message: message || customError?.message, + statusCode: status, + }; + } + + return response; + } catch (error) { + return Promise.reject(error); + } + // 1. make headers (makeAuth) + // 2. fetchWithTimeout + // 3. parse XML response + // 4. return response + } + + /* public makeAuthHeader(type: AuthType, meta: Partial) { + // TODO + const auth = 'some operates'; + // if (type === 'AuthV1') { + // return auth + // } + + // if (type === 'OffChainAuth') { + // // 1. Add two headers + // // 2. offchain.sign + // } + + return auth; + } */ +} diff --git a/packages/chain-sdk/src/api/storage.ts b/packages/chain-sdk/src/api/storage.ts index 47b6f65e..83b42c99 100644 --- a/packages/chain-sdk/src/api/storage.ts +++ b/packages/chain-sdk/src/api/storage.ts @@ -1,6 +1,11 @@ import { MsgDeletePolicySDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeletePolicy'; import { MsgPutPolicySDKTypeEIP712 } from '@/messages/greenfield/storage/MsgPutPolicy'; import { + QueryGroupMembersExistRequest, + QueryGroupMembersExistResponse, + QueryGroupsExistByIdRequest, + QueryGroupsExistRequest, + QueryGroupsExistResponse, QueryLockFeeRequest, QueryLockFeeResponse, QueryParamsResponse, @@ -38,6 +43,14 @@ export interface IStorage { getQueryPolicyById(request: QueryPolicyByIdRequest): Promise; queryLockFee(request: QueryLockFeeRequest): Promise; + + queryGroupMembersExist( + request: QueryGroupMembersExistRequest, + ): Promise; + + queryGroupExist(request: QueryGroupsExistRequest): Promise; + + queryGroupsExistById(request: QueryGroupsExistByIdRequest): Promise; } @singleton() @@ -103,4 +116,19 @@ export class Storage implements IStorage { const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.QueryLockFee(request); } + + public async queryGroupMembersExist(request: QueryGroupMembersExistRequest) { + const rpc = await this.queryClient.getStorageQueryClient(); + return await rpc.QueryGroupMembersExist(request); + } + + public async queryGroupExist(request: QueryGroupsExistRequest) { + const rpc = await this.queryClient.getStorageQueryClient(); + return await rpc.QueryGroupsExist(request); + } + + public async queryGroupsExistById(request: QueryGroupsExistByIdRequest) { + const rpc = await this.queryClient.getStorageQueryClient(); + return await rpc.QueryGroupsExistById(request); + } } diff --git a/packages/chain-sdk/src/messages/utils.ts b/packages/chain-sdk/src/messages/utils.ts index ee01e6e6..c6aa1d81 100644 --- a/packages/chain-sdk/src/messages/utils.ts +++ b/packages/chain-sdk/src/messages/utils.ts @@ -29,7 +29,7 @@ export const createEIP712 = (types: object, chainId: string, message: object) => salt: '0', }, message, - }; + } as const; }; export const generateMessage = ( diff --git a/packages/chain-sdk/src/offchainauth/fetch.ts b/packages/chain-sdk/src/offchainauth/fetch.ts index 37b6f65c..39678234 100644 --- a/packages/chain-sdk/src/offchainauth/fetch.ts +++ b/packages/chain-sdk/src/offchainauth/fetch.ts @@ -1,7 +1,16 @@ import { fetchWithTimeout } from '@/utils/http'; import { Headers } from 'cross-fetch'; import { IFetchNonce, IUpdateOneSpPubKeyParams } from '../types/storage'; +import { XMLParser } from 'fast-xml-parser'; +interface RequestNonceResponse { + RequestNonceResp: { + CurrentNonce: number; + CurrentPublicKey: string; + ExpiryDate: string; + NextNonce: number; + }; +} export const fetchNonce = async ({ spEndpoint, spName, @@ -23,7 +32,12 @@ export const fetchNonce = async ({ if (!result.ok) { return { code: -1, nonce: null }; } - res = await result.json(); + + const xmlParser = new XMLParser(); + const xmlData = await result.text(); + res = xmlParser.parse(xmlData) as RequestNonceResponse; + + // res = await result.json(); } catch (error) { return { code: -1, nonce: null }; } @@ -32,7 +46,7 @@ export const fetchNonce = async ({ endpoint: spEndpoint, address: spAddress, name: spName, - nonce: res.next_nonce, + nonce: res.RequestNonceResp.NextNonce, }; }; @@ -52,7 +66,7 @@ export const updateOneSpPubKey = async ({ 'X-Gnfd-App-Domain': domain, 'X-Gnfd-App-Reg-Nonce': nonce, 'X-Gnfd-App-Reg-Public-Key': pubKey, - 'X-Gnfd-App-Reg-Expiry-Date': expireDate, + 'X-Gnfd-Expiry-Timestamp': expireDate, Authorization: authorization, }); diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index 3b5700fa..9b80bed4 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -349,7 +349,7 @@ export interface TGetCurrentSeedStringParams { } export interface IBaseMigrateBucket { - params: MsgMigrateBucket; + params: Omit; spInfo: ISpInfo; } diff --git a/packages/chain-sdk/src/utils/auth.ts b/packages/chain-sdk/src/utils/auth.ts index 23edbaff..b7a804de 100644 --- a/packages/chain-sdk/src/utils/auth.ts +++ b/packages/chain-sdk/src/utils/auth.ts @@ -1,8 +1,9 @@ +import { AuthType } from '@/api/spclient'; +import { signSignatureByEddsa } from '@/offchainauth'; import { hexlify, joinSignature } from '@ethersproject/bytes'; import { SigningKey } from '@ethersproject/signing-key'; import { Headers } from 'cross-fetch'; import { keccak256 } from 'ethereum-cryptography/keccak.js'; -import { sha256 } from 'ethereum-cryptography/sha256.js'; import { utf8ToBytes } from 'ethereum-cryptography/utils.js'; import { METHOD_GET, METHOD_POST, METHOD_PUT, MOCK_SIGNATURE } from './http'; @@ -41,11 +42,46 @@ const getSignedHeaders = (reqHeaders: Headers) => { return sortedHeaders.join(';'); }; -export const getAuthorizationAuthTypeV1 = (reqMeta: Partial, privateKey: string) => { - const reqHeaders = newRequestHeadersByMeta(reqMeta); - +export const getAuthorization = async ( + reqMeta: Partial, + reqHeaders: Headers, + authType: AuthType, +) => { const canonicalHeaders = getCanonicalHeaders(reqMeta, reqHeaders); + const signedHeaders = getSignedHeaders(reqHeaders); + const canonicalRequestArr = [ + reqMeta.method, + reqMeta.url?.path, + reqMeta.url?.query, + canonicalHeaders, + signedHeaders, + ]; + + const canonicalRequest = canonicalRequestArr.join('\n'); + // console.log('canonicalRequest', canonicalRequest); + + const unsignedMsg = getMsgToSign(utf8ToBytes(canonicalRequest)); + let authorization = ''; + if (authType.type === 'ECDSA') { + const sig = secpSign(unsignedMsg, authType.privateKey); + authorization = `GNFD1-ECDSA, Signature=${sig.slice(2)}`; + } else { + const sig = await signSignatureByEddsa(authType.seed, hexlify(unsignedMsg).slice(2)); + authorization = `GNFD1-EDDSA,Signature=${sig}`; + } + + // console.log('authorization', authorization); + return authorization; +}; + +// TO BE deprecated +export const getAuthorizationAuthTypeV1 = ( + reqMeta: Partial, + reqHeaders: Headers | null, + privateKey: string, +) => { + const canonicalHeaders = getCanonicalHeaders(reqMeta, reqHeaders); const signedHeaders = getSignedHeaders(reqHeaders); const canonicalRequestArr = [ @@ -62,21 +98,14 @@ export const getAuthorizationAuthTypeV1 = (reqMeta: Partial, privateKey const unsignedMsg = getMsgToSign(utf8ToBytes(canonicalRequest)); const sig = secpSign(unsignedMsg, privateKey); - const authorization = `authTypeV1 ECDSA-secp256k1, SignedMsg=${hexlify( - Buffer.from(unsignedMsg), - ).slice(2)}, Signature=${sig.slice(2)}`; + const authorization = `GNFD1-ECDSA, Signature=${sig.slice(2)}`; return authorization; }; -const newRequestHeadersByMeta = (meta: Partial) => { +export const newRequestHeadersByMeta = (meta: Partial) => { const headers = new Headers(); - // console.log('meta', meta); - if (meta.contentType || meta.contentType === '') { - headers.set(HTTPHeaderContentType, meta.contentType); - } else { - headers.set(HTTPHeaderContentType, 'application/octet-stream'); - } + headers.set(HTTPHeaderContentType, meta.contentType || ''); if (meta.txnHash && meta.txnHash !== '') { headers.set(HTTPHeaderTransactionHash, meta.txnHash); @@ -90,11 +119,26 @@ const newRequestHeadersByMeta = (meta: Partial) => { headers.set(HTTPHeaderUnsignedMsg, meta.txnMsg); } - headers.set(HTTPHeaderDate, meta.date!); + const date = new Date(); + // console.log('date', formatDate(date)); + headers.set(HTTPHeaderDate, formatDate(date)); + + // date.setSeconds(date.getSeconds() + 1000); + date.setDate(date.getDate() + 6); + headers.set(HTTPHeaderExpiryTimestamp, formatDate(date)); return headers; }; +function formatDate(date: Date): string { + const res = date.toISOString(); + // console.log(res); + + return res.replace(/\.\d{3}/gi, ''); + + // return res.slice(0, 18) + 'Z'; +} + export const getAuthorizationAuthTypeV2 = () => { const signature = MOCK_SIGNATURE; const authorization = `authTypeV2 ECDSA-secp256k1, Signature=${signature}`; @@ -108,12 +152,14 @@ const HTTPHeaderObjectID = 'X-Gnfd-Object-ID'.toLocaleLowerCase(); const HTTPHeaderRedundancyIndex = 'X-Gnfd-Redundancy-Index'.toLocaleLowerCase(); const HTTPHeaderResource = 'X-Gnfd-Resource'.toLocaleLowerCase(); const HTTPHeaderDate = 'X-Gnfd-Date'.toLocaleLowerCase(); +const HTTPHeaderExpiryTimestamp = 'X-Gnfd-Expiry-Timestamp'.toLocaleLowerCase(); const HTTPHeaderRange = 'Range'.toLocaleLowerCase(); const HTTPHeaderPieceIndex = 'X-Gnfd-Piece-Index'.toLocaleLowerCase(); const HTTPHeaderContentType = 'Content-Type'.toLocaleLowerCase(); const HTTPHeaderContentMD5 = 'Content-MD5'.toLocaleLowerCase(); const HTTPHeaderUnsignedMsg = 'X-Gnfd-Unsigned-Msg'.toLocaleLowerCase(); const HTTPHeaderUserAddress = 'X-Gnfd-User-Address'.toLocaleLowerCase(); +const HTTPHeaderAppDomain = 'X-Gnfd-App-Domain'.toLocaleLowerCase(); const SUPPORTED_HEADERS = [ HTTPHeaderContentSHA256, @@ -122,12 +168,14 @@ const SUPPORTED_HEADERS = [ HTTPHeaderRedundancyIndex, HTTPHeaderResource, HTTPHeaderDate, + HTTPHeaderExpiryTimestamp, HTTPHeaderRange, HTTPHeaderPieceIndex, HTTPHeaderContentType, HTTPHeaderContentMD5, HTTPHeaderUnsignedMsg, HTTPHeaderUserAddress, + // HTTPHeaderAppDomain, ]; const secpSign = (digestBz: Uint8Array, privateKey: string) => { @@ -142,10 +190,14 @@ const secpSign = (digestBz: Uint8Array, privateKey: string) => { return res; }; -const getMsgToSign = (unsignedBytes: Uint8Array): Uint8Array => { - const signBytes = sha256(unsignedBytes); - const res = keccak256(signBytes); +export const getMsgToSign = (unsignedBytes: Uint8Array): Uint8Array => { + // const signBytes = sha256(unsignedBytes); + const res = keccak256(unsignedBytes); return res; + + // const signBytes = sha256(unsignedBytes); + // const res = keccak256(signBytes); + // return res; }; export interface ReqMeta { @@ -158,7 +210,7 @@ export interface ReqMeta { query: string; path: string; }; - date: string; + // date: string; contentSHA256: string; txnMsg: string; txnHash: string; diff --git a/packages/chain-sdk/src/utils/http.ts b/packages/chain-sdk/src/utils/http.ts index a2d83b47..76395e20 100644 --- a/packages/chain-sdk/src/utils/http.ts +++ b/packages/chain-sdk/src/utils/http.ts @@ -1,4 +1,5 @@ import fetch from 'cross-fetch'; +import { XMLParser } from 'fast-xml-parser'; const EMPTY_STRING_SHA256 = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'; const MOCK_SIGNATURE = '1234567812345678123456781234567812345678123456781234567812345678'; @@ -7,7 +8,7 @@ const METHOD_GET = 'GET'; const METHOD_POST = 'POST'; const METHOD_PUT = 'PUT'; -function timeoutAfter(duration: number) { +export function delayMs(duration: number) { return new Promise((resolve, reject) => { setTimeout(() => { reject(new Error('request time out')); @@ -18,7 +19,7 @@ function timeoutAfter(duration: number) { const fetchWithTimeout = async (fetchUrl = '', fetchOptions: any = {}, duration = 30000) => { try { const response = (await Promise.race([ - timeoutAfter(duration), + delayMs(duration), fetch(fetchUrl, fetchOptions), ])) as Response; return response; @@ -27,15 +28,20 @@ const fetchWithTimeout = async (fetchUrl = '', fetchOptions: any = {}, duration } }; -const parseErrorXml = async (result: Response) => { - const xmlText = await result.text(); - const xml = await new window.DOMParser().parseFromString(xmlText, 'text/xml'); - const code = (xml as XMLDocument).getElementsByTagName('Code')[0].textContent; - const message = (xml as XMLDocument).getElementsByTagName('Message')[0].textContent; +export interface RequestErrorResponse { + Error: { + Code: string; + Message: string; + }; +} +export const parseErrorXML = async (result: Response) => { + const xmlParser = new XMLParser(); + const xmlData = await result.text(); + const res = xmlParser.parse(xmlData) as RequestErrorResponse; return { - code, - message, + code: res.Error.Code, + message: res.Error.Message, }; }; @@ -47,5 +53,5 @@ export { METHOD_POST, METHOD_PUT, fetchWithTimeout, - parseErrorXml, + parseErrorXML as parseErrorXml, }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2a7a746f..b68fa1fd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -197,8 +197,8 @@ importers: packages/chain-sdk: dependencies: '@bnb-chain/greenfield-cosmos-types': - specifier: 0.4.0-alpha.21 - version: 0.4.0-alpha.21 + specifier: 0.4.0-alpha.22 + version: 0.4.0-alpha.22 '@bnb-chain/greenfield-zk-crypto': specifier: workspace:* version: link:../zk-crypto @@ -238,6 +238,9 @@ importers: ethereum-cryptography: specifier: ^2.0.0 version: 2.0.0 + fast-xml-parser: + specifier: ^4.2.7 + version: 4.2.7 lodash.clonedeep: specifier: ^4.5.0 version: 4.5.0 @@ -2065,8 +2068,8 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.21: - resolution: {integrity: sha512-aXITAQTlN12E4BnAim1ReO+tWC61FT+KlcWOODPQjTWbGA/fbzY3/sKcicF7NoZkJ/8a+O3LjcFslMGWD132LA==} + /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.22: + resolution: {integrity: sha512-j1UQRaw1sHzq+6x+l2dH1zP0bYAYySfJBgGtxgByl5tCWoNxRxuEOZ0JWrmO9w0dZwgzCKaIsGRqFyjmMliP+A==} dependencies: long: 4.0.0 protobufjs: 6.11.4 @@ -6765,7 +6768,7 @@ packages: resolution: {integrity: sha512-I7E/cHkIgoJzMNQdFF0YVqPlaTqrqKHrskuSTIqlEyxfB5Lf3WKCajSXVK2yHOfOFfSux/RxEdpMzw/eO4DIog==} dependencies: long: 4.0.0 - protobufjs: 6.11.3 + protobufjs: 6.11.4 dev: false /cosmjs-types@0.5.2: @@ -6779,7 +6782,7 @@ packages: resolution: {integrity: sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA==} dependencies: long: 4.0.0 - protobufjs: 6.11.3 + protobufjs: 6.11.4 dev: false /create-ecdh@4.0.4: @@ -8185,6 +8188,13 @@ packages: resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} dev: false + /fast-xml-parser@4.2.7: + resolution: {integrity: sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig==} + hasBin: true + dependencies: + strnum: 1.0.5 + dev: false + /fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -11930,6 +11940,10 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + dev: false + /styled-jsx@5.1.1(@babel/core@7.22.5)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} From aed427c3bdf23b10ca96f44a221cc5e4fcafb57c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 21 Aug 2023 23:54:24 +0800 Subject: [PATCH 137/433] chore: [ci] release (alpha) (#237) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 7 +++++++ examples/nextjs/CHANGELOG.md | 14 +++++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 14 +++++++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 37 +++++++++++++++++++++++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 75 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 7a06db19..ac027a4b 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -10,11 +10,16 @@ }, "changesets": [ "blue-bugs-whisper", + "brave-avocados-impress", "clever-deers-turn", + "eighty-parrots-tap", + "eleven-numbers-cover", "five-mice-whisper", "flat-mugs-collect", "grumpy-tables-drop", + "itchy-candles-fold", "large-jokes-fly", + "many-fans-decide", "mean-horses-change", "mighty-deers-build", "nice-geckos-think", @@ -23,6 +28,8 @@ "quiet-numbers-camp", "seven-toys-fry", "soft-phones-give", + "spicy-lizards-think", + "strong-wombats-help", "stupid-spies-poke", "swift-pigs-travel", "tender-sloths-shake", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 63d09ec9..fd218511 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,19 @@ # @demo/wallet +## 0.0.5-alpha.7 + +### Patch Changes + +- Updated dependencies + [[`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`53fa253`](https://github.com/bnb-chain/greenfield-js-sdk/commit/53fa253423a47ef190457eec980c895a1d035ab0), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.7 + ## 0.0.5-alpha.6 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 773e00c0..f923bd8f 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.5-alpha.6", + "version": "0.0.5-alpha.7", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 8eae4d80..9515010a 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,19 @@ # @demo/nodejs +## 0.0.8-alpha.7 + +### Patch Changes + +- Updated dependencies + [[`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`53fa253`](https://github.com/bnb-chain/greenfield-js-sdk/commit/53fa253423a47ef190457eec980c895a1d035ab0), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.7 + ## 0.0.8-alpha.6 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 481aee74..e542f694 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.8-alpha.6", + "version": "0.0.8-alpha.7", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 1033b064..bbd51355 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,42 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.4-alpha.7 + +### Patch Changes + +- [#236](https://github.com/bnb-chain/greenfield-js-sdk/pull/236) + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: Tx + +- [#236](https://github.com/bnb-chain/greenfield-js-sdk/pull/236) + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Changet auth type: `OffChainAuth` -> `EDDSA`, + `V1` -> `ECDSA` + +- [#235](https://github.com/bnb-chain/greenfield-js-sdk/pull/235) + [`53fa253`](https://github.com/bnb-chain/greenfield-js-sdk/commit/53fa253423a47ef190457eec980c895a1d035ab0) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Feegrant add expiration time + +- [#236](https://github.com/bnb-chain/greenfield-js-sdk/pull/236) + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Upgrade types and update SP API: + `getQueryGlobalSpStorePriceByTime` `getQuerySpStoragePrice` + +- [#236](https://github.com/bnb-chain/greenfield-js-sdk/pull/236) + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a) + Thanks [@rrr523](https://github.com/rrr523)! - feat: `getCreateBucketApproval` and `createBucket` + add `authType` params + +- [#236](https://github.com/bnb-chain/greenfield-js-sdk/pull/236) + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a) + Thanks [@rrr523](https://github.com/rrr523)! - feat: `getCreateObjectApproval` and `createObject` + add `authType` params + +- [#236](https://github.com/bnb-chain/greenfield-js-sdk/pull/236) + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Group Exist API: `queryGroupMembersExist` + `queryGroupExist` `queryGroupsExistById` + ## 0.2.4-alpha.6 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 44c82bff..a993d872 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.4-alpha.6", + "version": "0.2.4-alpha.7", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From a823e615266973639ff3101e6bec7e3cf88891db Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 22 Aug 2023 17:22:44 +0800 Subject: [PATCH 138/433] Fix/read quota (#238) * fix: CreateBucketApproval * feat: ReadQuota * chore(example): Update Example --- .changeset/gorgeous-penguins-invite.md | 5 + .changeset/ninety-jokes-study.md | 5 + .../src/components/bucket/create/index.tsx | 1 + .../nextjs/src/components/bucket/index.tsx | 5 + .../src/components/bucket/quota/index.tsx | 47 ++++++++ .../src/components/feegrant/createObj.tsx | 29 +++-- .../nextjs/src/components/mirror/index.tsx | 2 + .../src/components/object/create/index.tsx | 2 + .../nextjs/src/components/query/index.tsx | 8 ++ packages/chain-sdk/src/api/bucket.ts | 108 ++++++++++++++++-- packages/chain-sdk/src/api/objectt.ts | 2 +- packages/chain-sdk/src/api/spclient.ts | 1 + packages/chain-sdk/src/offchainauth/fetch.ts | 9 +- packages/chain-sdk/src/types/spXML.ts | 25 ++++ packages/chain-sdk/src/types/storage.ts | 2 +- packages/chain-sdk/src/utils/auth.ts | 5 +- packages/chain-sdk/src/utils/http.ts | 7 +- 17 files changed, 223 insertions(+), 40 deletions(-) create mode 100644 .changeset/gorgeous-penguins-invite.md create mode 100644 .changeset/ninety-jokes-study.md create mode 100644 examples/nextjs/src/components/bucket/quota/index.tsx create mode 100644 packages/chain-sdk/src/types/spXML.ts diff --git a/.changeset/gorgeous-penguins-invite.md b/.changeset/gorgeous-penguins-invite.md new file mode 100644 index 00000000..6f6aac8f --- /dev/null +++ b/.changeset/gorgeous-penguins-invite.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: ReadQuota diff --git a/.changeset/ninety-jokes-study.md b/.changeset/ninety-jokes-study.md new file mode 100644 index 00000000..d4640f05 --- /dev/null +++ b/.changeset/ninety-jokes-study.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +fix: CreateBucketApproval diff --git a/examples/nextjs/src/components/bucket/create/index.tsx b/examples/nextjs/src/components/bucket/create/index.tsx index 4b8f69f0..e57fb829 100644 --- a/examples/nextjs/src/components/bucket/create/index.tsx +++ b/examples/nextjs/src/components/bucket/create/index.tsx @@ -54,6 +54,7 @@ export const CreateBucket = () => { type: 'EDDSA', domain: window.location.origin, seed: offChainData.seedString, + address, }, ); diff --git a/examples/nextjs/src/components/bucket/index.tsx b/examples/nextjs/src/components/bucket/index.tsx index 64b9d8b8..22b42bce 100644 --- a/examples/nextjs/src/components/bucket/index.tsx +++ b/examples/nextjs/src/components/bucket/index.tsx @@ -2,6 +2,7 @@ import { CreateBucket } from './create'; import { DeleteBucket } from './delete'; import { BucketInfo } from './info'; import { MigrateBucket } from './migrate'; +import { BucketQuota } from './quota'; export const Bucket = () => { return ( @@ -16,6 +17,10 @@ export const Bucket = () => { ); diff --git a/examples/nextjs/src/components/group/update/index.tsx b/examples/nextjs/src/components/group/update/index.tsx index ec51a2bc..479f97c8 100644 --- a/examples/nextjs/src/components/group/update/index.tsx +++ b/examples/nextjs/src/components/group/update/index.tsx @@ -1,5 +1,5 @@ import { client } from '@/client'; -import { toTimestamp } from '@bnb-chain/greenfield-js-sdk'; +import { GRNToString, newBucketGRN, newGroupGRN, toTimestamp } from '@bnb-chain/greenfield-js-sdk'; import { useState } from 'react'; import { zeroAddress } from 'viem'; import { useAccount } from 'wagmi'; @@ -17,6 +17,7 @@ export const GroupUpdate = () => { setGroupName(e.target.value); }} /> +
+
+
+
+ ); }; diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index 93858841..ee9a8efb 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -83,6 +83,18 @@ export const CreateObject = () => { redundancyType: 'REDUNDANCY_EC_TYPE', contentLength, expectCheckSums: JSON.parse(expectCheckSums), + // empty tags + // tags: { + // tags: [], + // }, + tags: { + tags: [ + { + key: 'test', + value: 'test', + }, + ], + }, }, { type: 'EDDSA', @@ -172,6 +184,18 @@ export const CreateObject = () => { bucketName: createObjectInfo.bucketName, objectName: createObjectInfo.objectName + '/', creator: address, + // empty tags + // tags: { + // tags: [], + // }, + tags: { + tags: [ + { + key: 'test', + value: 'test', + }, + ], + }, }, { type: 'EDDSA', diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 68e64a72..c9a398ce 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -63,7 +63,7 @@ ] }, "dependencies": { - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.23", + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.25", "@bnb-chain/greenfield-zk-crypto": "workspace:*", "@cosmjs/proto-signing": "^0.32.0", "@cosmjs/stargate": "^0.32.0", diff --git a/packages/js-sdk/src/api/bucket.ts b/packages/js-sdk/src/api/bucket.ts index 1ddd2d44..ec5b8ec8 100644 --- a/packages/js-sdk/src/api/bucket.ts +++ b/packages/js-sdk/src/api/bucket.ts @@ -23,6 +23,7 @@ import { MsgPutPolicy, MsgUpdateBucketInfo, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; +import { ResourceTags } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/types'; import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { Headers } from 'cross-fetch'; import { bytesToUtf8, hexToBytes } from 'ethereum-cryptography/utils'; @@ -68,7 +69,7 @@ import { import { AuthType, SpClient } from '../clients/spclient/spClient'; import { TxClient } from '../clients/txClient'; import { METHOD_GET, NORMAL_ERROR_CODE } from '../constants/http'; -import { MsgCreateBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateBucket'; +import { getMsgCreateBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateBucket'; import { MsgDeleteBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgDeleteBucket'; import { MsgMigrateBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgMigrateBucket'; import { MsgUpdateBucketInfoSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateBucketInfo'; @@ -212,6 +213,7 @@ export class Bucket implements IBucket { spInfo, duration, paymentAddress, + tags, } = params; try { @@ -240,6 +242,7 @@ export class Bucket implements IBucket { }, charged_read_quota: chargedReadQuota, payment_address: paymentAddress, + tags: tags, }); const signHeaders = await this.spClient.signHeaders(reqMeta, authType); @@ -271,6 +274,10 @@ export class Bucket implements IBucket { } private async createBucketTx(msg: MsgCreateBucket, signedMsg: CreateBucketApprovalResponse) { + const isTagsEmpty = msg?.tags?.tags?.length === 0; + + const MsgCreateBucketSDKTypeEIP712 = getMsgCreateBucketSDKTypeEIP712(isTagsEmpty); + return await this.txClient.tx( MsgCreateBucketTypeUrl, msg.creator, @@ -307,6 +314,7 @@ export class Bucket implements IBucket { }, chargedReadQuota: Long.fromString(signedMsg.charged_read_quota), paymentAddress: signedMsg.payment_address, + tags: ResourceTags.fromJSON(signedMsg.tags), }; return await this.createBucketTx(msg, signedMsg); diff --git a/packages/js-sdk/src/api/group.ts b/packages/js-sdk/src/api/group.ts index a4525871..4404d0f7 100644 --- a/packages/js-sdk/src/api/group.ts +++ b/packages/js-sdk/src/api/group.ts @@ -1,10 +1,3 @@ -import { TxClient } from '../clients/txClient'; -import { MsgCreateGroupSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateGroup'; -import { MsgDeleteGroupSDKTypeEIP712 } from '../messages/greenfield/storage/MsgDeleteGroup'; -import { MsgLeaveGroupSDKTypeEIP712 } from '../messages/greenfield/storage/MsgLeaveGroup'; -import { MsgUpdateGroupExtraSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateGroupExtra'; -import { getMsgUpdateGroupMemberSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateGroupMember'; -import { GRNToString, newBucketGRN, newGroupGRN, newObjectGRN } from '../utils/grn'; import { QueryGroupNFTResponse, QueryHeadGroupMemberResponse, @@ -34,6 +27,13 @@ import { TxResponse, } from '..'; import { RpcQueryClient } from '../clients/queryclient'; +import { TxClient } from '../clients/txClient'; +import { getMsgCreateGroupSDKTypeWithTagEIP712 } from '../messages/greenfield/storage/MsgCreateGroup'; +import { MsgDeleteGroupSDKTypeEIP712 } from '../messages/greenfield/storage/MsgDeleteGroup'; +import { MsgLeaveGroupSDKTypeEIP712 } from '../messages/greenfield/storage/MsgLeaveGroup'; +import { MsgUpdateGroupExtraSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateGroupExtra'; +import { getMsgUpdateGroupMemberSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateGroupMember'; +import { GRNToString, newBucketGRN, newGroupGRN, newObjectGRN } from '../utils/grn'; import { Storage } from './storage'; export interface IGroup { @@ -111,6 +111,10 @@ export class Group implements IGroup { private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); public async createGroup(msg: MsgCreateGroup) { + const isTagsEmpty = msg?.tags?.tags?.length === 0; + + const MsgCreateGroupSDKTypeEIP712 = getMsgCreateGroupSDKTypeWithTagEIP712(isTagsEmpty); + return await this.txClient.tx( MsgCreateGroupTypeUrl, msg.creator, diff --git a/packages/js-sdk/src/api/objectt.ts b/packages/js-sdk/src/api/objects.ts similarity index 97% rename from packages/js-sdk/src/api/objectt.ts rename to packages/js-sdk/src/api/objects.ts index 6b924ec1..1d1969b5 100644 --- a/packages/js-sdk/src/api/objectt.ts +++ b/packages/js-sdk/src/api/objects.ts @@ -19,7 +19,7 @@ import { getPutObjectMetaInfo } from '../clients/spclient/spApis/putObject'; import { TxClient } from '../clients/txClient'; import { METHOD_GET, NORMAL_ERROR_CODE } from '../constants/http'; import { MsgCancelCreateObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCancelCreateObject'; -import { MsgCreateObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateObject'; +import { getMsgCreateObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateObject'; import { MsgDeleteObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgDeleteObject'; import { MsgUpdateObjectInfoSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateObjectInfo'; import { signSignatureByEddsa } from '../offchainauth'; @@ -88,6 +88,7 @@ import { } from '../utils/s3'; import { Sp } from './sp'; import { Storage } from './storage'; +import { ResourceTags } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/types'; export interface IObject { getCreateObjectApproval( @@ -176,7 +177,7 @@ export interface IObject { } @injectable() -export class Objectt implements IObject { +export class Objects implements IObject { constructor( @inject(delay(() => TxClient)) private txClient: TxClient, @inject(delay(() => Storage)) private storage: Storage, @@ -197,6 +198,7 @@ export class Objectt implements IObject { redundancyType = 'REDUNDANCY_EC_TYPE', contentLength, expectCheckSums, + tags, } = params; try { @@ -229,6 +231,7 @@ export class Objectt implements IObject { }, redundancy_type: redundancyType, visibility, + tags, }); const signHeaders = await this.spClient.signHeaders(reqMeta, authType); @@ -268,6 +271,10 @@ export class Objectt implements IObject { } private async createObjectTx(msg: MsgCreateObject, signedMsg: CreateObjectApprovalResponse) { + const isTagsEmpty = msg?.tags?.tags?.length === 0; + + const MsgCreateObjectSDKTypeEIP712 = getMsgCreateObjectSDKTypeEIP712(isTagsEmpty); + return await this.txClient.tx( MsgCreateObjectTypeUrl, msg.creator, @@ -306,6 +313,7 @@ export class Objectt implements IObject { sig: bytesFromBase64(signedMsg.primary_sp_approval.sig || ''), globalVirtualGroupFamilyId: signedMsg.primary_sp_approval.global_virtual_group_family_id, }, + tags: ResourceTags.fromJSON(signedMsg.tags), }; return await this.createObjectTx(msg, signedMsg); @@ -621,6 +629,7 @@ export class Objectt implements IObject { '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', ], creator: getApprovalParams.creator, + tags: getApprovalParams.tags, }; return this.createObject(params, authType); diff --git a/packages/js-sdk/src/api/storage.ts b/packages/js-sdk/src/api/storage.ts index 8dbc518c..4f53cf95 100644 --- a/packages/js-sdk/src/api/storage.ts +++ b/packages/js-sdk/src/api/storage.ts @@ -20,10 +20,18 @@ import { import { MsgDeletePolicy, MsgPutPolicy, + MsgSetTag, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import { container, delay, inject, injectable } from 'tsyringe'; -import { fromTimestamp, MsgDeletePolicyTypeUrl, MsgPutPolicyTypeUrl, TxResponse } from '..'; +import { + fromTimestamp, + MsgDeletePolicyTypeUrl, + MsgPutPolicyTypeUrl, + MsgSetTagTypeUrl, + TxResponse, +} from '..'; import { RpcQueryClient } from '../clients/queryclient'; +import { MsgSetTagSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgSetTag'; export interface IStorage { params(): Promise; @@ -32,6 +40,8 @@ export interface IStorage { deletePolicy(msg: MsgDeletePolicy): Promise; + setTag(msg: MsgSetTag): Promise; + getPolicyForGroup(request: QueryPolicyForGroupRequest): Promise; getQueryPolicyForAccount( @@ -97,6 +107,16 @@ export class Storage implements IStorage { ); } + public async setTag(msg: MsgSetTag) { + return await this.txClient.tx( + MsgSetTagTypeUrl, + msg.operator, + MsgSetTagSDKTypeEIP712, + MsgSetTag.toSDK(msg), + MsgSetTag.encode(msg).finish(), + ); + } + public async getPolicyForGroup(request: QueryPolicyForGroupRequest) { const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.QueryPolicyForGroup(request); diff --git a/packages/js-sdk/src/client.ts b/packages/js-sdk/src/client.ts index 776f1711..b87185b7 100644 --- a/packages/js-sdk/src/client.ts +++ b/packages/js-sdk/src/client.ts @@ -9,7 +9,7 @@ import { Distribution, IDistribution } from './api/distribution'; import { FeeGrant, IFeeGrant } from './api/feegrant'; import { Gashub, IGashub } from './api/gashub'; import { Group, IGroup } from './api/group'; -import { IObject, Objectt } from './api/objectt'; +import { IObject, Objects } from './api/objects'; import { IOffChainAuth, OffChainAuth } from './api/offchainauth'; import { IPayment, Payment } from './api/payment'; import { IProposal, Proposal } from './api/proposal'; @@ -51,7 +51,7 @@ export class Client { const feegrant = container.resolve(FeeGrant); const gashub = container.resolve(Gashub); const group = container.resolve(Group); - const objectt = container.resolve(Objectt); + const objects = container.resolve(Objects); const payment = container.resolve(Payment); const proposal = container.resolve(Proposal); const queryClient = container.resolve(RpcQueryClient); @@ -73,7 +73,7 @@ export class Client { feegrant, gashub, group, - objectt, + objects, payment, proposal, queryClient, diff --git a/packages/js-sdk/src/constants/typeUrl.ts b/packages/js-sdk/src/constants/typeUrl.ts index 690027a3..e76e990b 100644 --- a/packages/js-sdk/src/constants/typeUrl.ts +++ b/packages/js-sdk/src/constants/typeUrl.ts @@ -19,6 +19,7 @@ export const MsgDeleteBucketTypeUrl = '/greenfield.storage.MsgDeleteBucket'; export const MsgDeleteGroupTypeUrl = '/greenfield.storage.MsgDeleteGroup'; export const MsgDeleteObjectTypeUrl = '/greenfield.storage.MsgDeleteObject'; export const MsgDeletePolicyTypeUrl = '/greenfield.storage.MsgDeletePolicy'; +export const MsgSetTagTypeUrl = '/greenfield.storage.MsgSetTag'; export const MsgLeaveGroupTypeUrl = '/greenfield.storage.MsgLeaveGroup'; export const MsgMirrorBucketTypeUrl = '/greenfield.storage.MsgMirrorBucket'; export const MsgMirrorGroupTypeUrl = '/greenfield.storage.MsgMirrorGroup'; diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts index c56a2136..c669f51b 100644 --- a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts @@ -1,4 +1,49 @@ -export const MsgCreateBucketSDKTypeEIP712 = { +import type { EIP712Msg } from '@/messages/utils'; +import cloneDeep from 'lodash.clonedeep'; + +export const getMsgCreateBucketSDKTypeEIP712 = (isTagsEmpty: boolean) => { + const res: EIP712Msg = cloneDeep(MsgCreateBucketSDKTypeEIP712); + + if (!isTagsEmpty) { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'TypeMsg1TagsTags[]', + }, + ]; + res.TypeMsg1TagsTags = [ + { + name: 'key', + type: 'string', + }, + { + name: 'value', + type: 'string', + }, + ]; + } else { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'string[]', + }, + ]; + } + + return res; +}; + +const MsgCreateBucketSDKTypeEIP712 = { Msg1: [ { name: 'bucket_name', diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts index 6badab86..212bf1d7 100644 --- a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts @@ -1,4 +1,7 @@ -export const MsgCreateGroupSDKTypeEIP712 = { +import type { EIP712Msg } from '@/messages/utils'; +import cloneDeep from 'lodash.clonedeep'; + +const MsgCreateGroupSDKTypeEIP712 = { Msg1: [ { name: 'creator', @@ -18,3 +21,45 @@ export const MsgCreateGroupSDKTypeEIP712 = { }, ], }; + +export const getMsgCreateGroupSDKTypeWithTagEIP712 = (isTagsEmpty: boolean) => { + const res: EIP712Msg = cloneDeep(MsgCreateGroupSDKTypeEIP712); + + if (!isTagsEmpty) { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'TypeMsg1TagsTags[]', + }, + ]; + res.TypeMsg1TagsTags = [ + { + name: 'key', + type: 'string', + }, + { + name: 'value', + type: 'string', + }, + ]; + } else { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'string[]', + }, + ]; + } + + return res; +}; diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts index b1b92a4e..489ec21a 100644 --- a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts @@ -1,4 +1,49 @@ -export const MsgCreateObjectSDKTypeEIP712 = { +import type { EIP712Msg } from '@/messages/utils'; +import cloneDeep from 'lodash.clonedeep'; + +export const getMsgCreateObjectSDKTypeEIP712 = (isTagsEmpty: boolean) => { + const res: EIP712Msg = cloneDeep(MsgCreateObjectSDKTypeEIP712); + + if (!isTagsEmpty) { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'TypeMsg1TagsTags[]', + }, + ]; + res.TypeMsg1TagsTags = [ + { + name: 'key', + type: 'string', + }, + { + name: 'value', + type: 'string', + }, + ]; + } else { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'string[]', + }, + ]; + } + + return res; +}; + +const MsgCreateObjectSDKTypeEIP712 = { Msg1: [ { name: 'bucket_name', diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts new file mode 100644 index 00000000..47a9e343 --- /dev/null +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts @@ -0,0 +1,36 @@ +export const MsgSetTagSDKTypeEIP712 = { + Msg1: [ + { + name: 'operator', + type: 'string', + }, + { + name: 'resource', + type: 'string', + }, + { + name: 'tags', + type: 'TypeMsg1Tags', + }, + { + name: 'type', + type: 'string', + }, + ], + TypeMsg1Tags: [ + { + name: 'tags', + type: 'TypeMsg1TagsTags[]', + }, + ], + TypeMsg1TagsTags: [ + { + name: 'key', + type: 'string', + }, + { + name: 'value', + type: 'string', + }, + ], +}; diff --git a/packages/js-sdk/src/types/sp/BucketApproval.ts b/packages/js-sdk/src/types/sp/BucketApproval.ts index 1ca043ba..eb8304c0 100644 --- a/packages/js-sdk/src/types/sp/BucketApproval.ts +++ b/packages/js-sdk/src/types/sp/BucketApproval.ts @@ -1,4 +1,5 @@ import { VisibilityType } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; +import { TagsInCreateTxApproval } from './Common'; export type CreateBucketApprovalRequest = { bucketName: string; @@ -10,6 +11,7 @@ export type CreateBucketApprovalRequest = { }; duration?: number; paymentAddress: string; + tags: TagsInCreateTxApproval; }; export interface CreateBucketApprovalResponse { @@ -24,4 +26,5 @@ export interface CreateBucketApprovalResponse { global_virtual_group_family_id: number; }; charged_read_quota: string; + tags: TagsInCreateTxApproval; } diff --git a/packages/js-sdk/src/types/sp/Common.ts b/packages/js-sdk/src/types/sp/Common.ts index a1436bb7..fc2a85ee 100644 --- a/packages/js-sdk/src/types/sp/Common.ts +++ b/packages/js-sdk/src/types/sp/Common.ts @@ -180,3 +180,10 @@ export interface PolicyMeta { */ ExpirationTime: number; } + +/** + * create bucket / object approval's tags + */ +export type TagsInCreateTxApproval = { + tags: string[] | { key: string; value: string }[]; +}; diff --git a/packages/js-sdk/src/types/sp/ObjectApproval.ts b/packages/js-sdk/src/types/sp/ObjectApproval.ts index da504c2c..f3c2ba91 100644 --- a/packages/js-sdk/src/types/sp/ObjectApproval.ts +++ b/packages/js-sdk/src/types/sp/ObjectApproval.ts @@ -2,6 +2,7 @@ import { RedundancyType, VisibilityType, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; +import { TagsInCreateTxApproval } from './Common'; export type CreateObjectApprovalRequest = { bucketName: string; @@ -13,6 +14,7 @@ export type CreateObjectApprovalRequest = { duration?: number; contentLength: number; expectCheckSums: string[]; + tags: TagsInCreateTxApproval; endpoint?: string; }; @@ -32,4 +34,5 @@ export type CreateObjectApprovalResponse = { // expect_secondary_sp_addresses: string[]; redundancy_type: keyof typeof RedundancyType; // charged_read_quota: string; + tags: TagsInCreateTxApproval; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6b6f5fa7..ba6d3c39 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,7 +43,7 @@ importers: version: 3.0.2(rollup@2.79.1) '@rollup/plugin-typescript': specifier: ^11.1.3 - version: 11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5) + version: 11.1.3(rollup@2.79.1)(typescript@5.3.2) '@types/chai': specifier: ^4.3.5 version: 4.3.5 @@ -61,10 +61,10 @@ importers: version: 18.2.5 '@typescript-eslint/eslint-plugin': specifier: ^5.59.11 - version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.2) '@typescript-eslint/parser': specifier: ^5.59.11 - version: 5.59.11(eslint@8.48.0)(typescript@4.9.5) + version: 5.59.11(eslint@8.48.0)(typescript@5.3.2) chai: specifier: ^4.3.7 version: 4.3.7 @@ -76,7 +76,7 @@ importers: version: 8.48.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5) + version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.3.2) eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.1(eslint@8.48.0)(prettier@2.8.8) @@ -112,13 +112,13 @@ importers: dependencies: '@docusaurus/core': specifier: 3.0.0 - version: 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + version: 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) '@docusaurus/preset-classic': specifier: 3.0.0 - version: 3.0.0(@algolia/client-search@4.20.0)(@types/react@18.2.38)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5) + version: 3.0.0(@algolia/client-search@4.20.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.2) '@mdx-js/react': specifier: ^3.0.0 - version: 3.0.0(@types/react@18.2.38)(react@18.2.0) + version: 3.0.0(@types/react@18.2.41)(react@18.2.0) clsx: specifier: ^1.2.1 version: 1.2.1 @@ -139,8 +139,8 @@ importers: examples/nextjs: dependencies: '@bnb-chain/greenfield-cosmos-types': - specifier: 0.4.0-alpha.23 - version: 0.4.0-alpha.23 + specifier: 0.4.0-alpha.25 + version: 0.4.0-alpha.25 '@bnb-chain/greenfield-js-sdk': specifier: workspace:* version: link:../../packages/js-sdk @@ -322,8 +322,8 @@ importers: packages/js-sdk: dependencies: '@bnb-chain/greenfield-cosmos-types': - specifier: 0.4.0-alpha.23 - version: 0.4.0-alpha.23 + specifier: 0.4.0-alpha.25 + version: 0.4.0-alpha.25 '@bnb-chain/greenfield-zk-crypto': specifier: workspace:* version: link:../zk-crypto @@ -426,16 +426,16 @@ importers: version: 16.0.3 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + version: 29.5.0(@types/node@20.10.3)(ts-node@10.9.1) mime: specifier: ^3.0.0 version: 3.0.0 ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.23.3)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.23.5)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + version: 10.9.1(@types/node@20.10.3)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.2 @@ -626,6 +626,14 @@ packages: '@babel/highlight': 7.22.13 chalk: 2.4.2 + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + dev: true + /@babel/compat-data@7.22.9: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} @@ -657,6 +665,29 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core@7.23.5: + resolution: {integrity: sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.5 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) + '@babel/helpers': 7.23.5 + '@babel/parser': 7.23.5 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.5 + '@babel/types': 7.23.5 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/eslint-parser@7.21.8(@babel/core@7.23.3)(eslint@8.48.0): resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} @@ -690,6 +721,16 @@ packages: '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 + /@babel/generator@7.23.5: + resolution: {integrity: sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.5 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + dev: true + /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} @@ -889,6 +930,20 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.5): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} @@ -1038,6 +1093,17 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helpers@7.23.5: + resolution: {integrity: sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.5 + '@babel/types': 7.23.5 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/highlight@7.22.13: resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} @@ -1046,6 +1112,15 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + /@babel/parser@7.22.15: resolution: {integrity: sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==} engines: {node: '>=6.0.0'} @@ -1061,6 +1136,14 @@ packages: dependencies: '@babel/types': 7.23.3 + /@babel/parser@7.23.5: + resolution: {integrity: sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.5 + dev: true + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.23.3): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} @@ -2419,7 +2502,7 @@ packages: '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.3) - '@babel/types': 7.23.4 + '@babel/types': 7.23.5 dev: true /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.23.3): @@ -3058,6 +3141,24 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse@7.23.5: + resolution: {integrity: sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/types@7.22.15: resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} engines: {node: '>=6.9.0'} @@ -3074,8 +3175,8 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - /@babel/types@7.23.4: - resolution: {integrity: sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==} + /@babel/types@7.23.5: + resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.23.4 @@ -3087,8 +3188,8 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.23: - resolution: {integrity: sha512-VAuk5CxTSbiOa8HvlEY/uf8zoTvgyRvQMwQs0S/7wjoloE0I7hSZXWPUEeFmypB1xZuggDtyCfizS2faL/NKeg==} + /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.25: + resolution: {integrity: sha512-A/v0X/rhwmWN8cNmkFCRIzT0sHQn2sb/mPrdwdIgUbjEV49s9KncSAKxRMIz3+ph0KeROmxjUWaDsJ9/KGU2tQ==} dependencies: long: 4.0.0 protobufjs: 6.11.4 @@ -3444,7 +3545,7 @@ packages: lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.3.2) typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -3704,7 +3805,7 @@ packages: resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0): + /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0): resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -3724,7 +3825,7 @@ packages: '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0) '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) '@docsearch/css': 3.5.2 - '@types/react': 18.2.38 + '@types/react': 18.2.41 algoliasearch: 4.20.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3733,7 +3834,7 @@ packages: - '@algolia/client-search' dev: false - /@docusaurus/core@3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/core@3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): resolution: {integrity: sha512-bHWtY55tJTkd6pZhHrWz1MpWuwN4edZe0/UWgFF7PW/oJeDZvLSXKqwny3L91X1/LGGoypBGkeZn8EOuKeL4yQ==} engines: {node: '>=18.0'} hasBin: true @@ -3788,10 +3889,10 @@ packages: lodash: 4.17.21 mini-css-extract-plugin: 2.7.6(webpack@5.89.0) postcss: 8.4.31 - postcss-loader: 7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0) + postcss-loader: 7.3.3(postcss@8.4.31)(typescript@5.3.2)(webpack@5.89.0) prompts: 2.4.2 react: 18.2.0 - react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) + react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@5.3.2)(webpack@5.89.0) react-dom: 18.2.0(react@18.2.0) react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) @@ -3916,14 +4017,14 @@ packages: - uglify-js - webpack-cli - /@docusaurus/plugin-content-blog@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-content-blog@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): resolution: {integrity: sha512-iA8Wc3tIzVnROJxrbIsU/iSfixHW16YeW9RWsBw7hgEk4dyGsip9AsvEDXobnRq3lVv4mfdgoS545iGWf1Ip9w==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) '@docusaurus/logger': 3.0.0 '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) @@ -3960,14 +4061,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-content-docs@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): resolution: {integrity: sha512-MFZsOSwmeJ6rvoZMLieXxPuJsA9M9vn7/mUZmfUzSUTeHAeq+fEqvLltFOxcj4DVVDTYlQhgWYd+PISIWgamKw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) '@docusaurus/logger': 3.0.0 '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.0(react-dom@18.2.0)(react@18.2.0) @@ -4002,14 +4103,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-content-pages@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): resolution: {integrity: sha512-EXYHXK2Ea1B5BUmM0DgSwaOYt8EMSzWtYUToNo62Q/EoWxYOQFdWglYnw3n7ZEGyw5Kog4LHaRwlazAdmDomvQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) @@ -4037,17 +4138,17 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@3.0.0(@types/react@18.2.38)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-debug@3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): resolution: {integrity: sha512-gSV07HfQgnUboVEb3lucuVyv5pEoy33E7QXzzn++3kSc/NLEimkjXh3sSnTGOishkxCqlFV9BHfY/VMm5Lko5g==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@microlink/react-json-view': 1.23.0(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) + '@microlink/react-json-view': 1.23.0(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) fs-extra: 11.1.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4072,14 +4173,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-google-analytics@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): resolution: {integrity: sha512-0zcLK8w+ohmSm1fjUQCqeRsjmQc0gflvXnaVA/QVVCtm2yCiBtkrSGQXqt4MdpD7Xq8mwo3qVd5nhIcvrcebqw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) react: 18.2.0 @@ -4103,14 +4204,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-google-gtag@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): resolution: {integrity: sha512-asEKavw8fczUqvXu/s9kG2m1epLnHJ19W6CCCRZEmpnkZUZKiM8rlkDiEmxApwIc2JDDbIMk+Y2TMkJI8mInbQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) '@types/gtag.js': 0.0.12 @@ -4135,14 +4236,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-google-tag-manager@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): resolution: {integrity: sha512-lytgu2eyn+7p4WklJkpMGRhwC29ezj4IjPPmVJ8vGzcSl6JkR1sADTHLG5xWOMuci420xZl9dGEiLTQ8FjCRyA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) react: 18.2.0 @@ -4166,14 +4267,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-sitemap@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): resolution: {integrity: sha512-cfcONdWku56Oi7Hdus2uvUw/RKRRlIGMViiHLjvQ21CEsEqnQ297MRoIgjU28kL7/CXD/+OiANSq3T1ezAiMhA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) '@docusaurus/logger': 3.0.0 '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) @@ -4202,25 +4303,25 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.0.0(@algolia/client-search@4.20.0)(@types/react@18.2.38)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5): + /@docusaurus/preset-classic@3.0.0(@algolia/client-search@4.20.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.2): resolution: {integrity: sha512-90aOKZGZdi0+GVQV+wt8xx4M4GiDrBRke8NO8nWwytMEXNrxrBxsQYFRD1YlISLJSCiHikKf3Z/MovMnQpnZyg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-debug': 3.0.0(@types/react@18.2.38)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-analytics': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-gtag': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-tag-manager': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-sitemap': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-classic': 3.0.0(@types/react@18.2.38)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-search-algolia': 3.0.0(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.0)(@types/react@18.2.38)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/plugin-debug': 3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/plugin-google-analytics': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/plugin-google-gtag': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/plugin-google-tag-manager': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/plugin-sitemap': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/theme-classic': 3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/theme-search-algolia': 3.0.0(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.2) '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4251,30 +4352,30 @@ packages: peerDependencies: react: '*' dependencies: - '@types/react': 18.2.38 + '@types/react': 18.2.37 prop-types: 15.8.1 react: 18.2.0 - /@docusaurus/theme-classic@3.0.0(@types/react@18.2.38)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/theme-classic@3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): resolution: {integrity: sha512-wWOHSrKMn7L4jTtXBsb5iEJ3xvTddBye5PjYBnWiCkTAlhle2yMdc4/qRXW35Ot+OV/VXu6YFG8XVUJEl99z0A==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) '@docusaurus/theme-translations': 3.0.0 '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) - '@mdx-js/react': 3.0.0(@types/react@18.2.38)(react@18.2.0) + '@mdx-js/react': 3.0.0(@types/react@18.2.41)(react@18.2.0) clsx: 1.2.1 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.43 @@ -4308,7 +4409,7 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/theme-common@3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): resolution: {integrity: sha512-PahRpCLRK5owCMEqcNtUeTMOkTUCzrJlKA+HLu7f+8osYOni617YurXvHASCsSTxurjXaLz/RqZMnASnqATxIA==} engines: {node: '>=18.0'} peerDependencies: @@ -4317,9 +4418,9 @@ packages: dependencies: '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) '@types/history': 4.7.11 @@ -4351,18 +4452,18 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.0.0(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.0)(@types/react@18.2.38)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5): + /@docusaurus/theme-search-algolia@3.0.0(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.2): resolution: {integrity: sha512-PyMUNIS9yu0dx7XffB13ti4TG47pJq3G2KE/INvOFb6M0kWh+wwCnucPg4WAOysHOPh+SD9fjlXILoLQstgEIA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0) - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) '@docusaurus/logger': 3.0.0 - '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) '@docusaurus/theme-translations': 3.0.0 '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) @@ -5352,14 +5453,14 @@ packages: - supports-color dev: false - /@mdx-js/react@3.0.0(@types/react@18.2.38)(react@18.2.0): + /@mdx-js/react@3.0.0(@types/react@18.2.41)(react@18.2.0): resolution: {integrity: sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ==} peerDependencies: '@types/react': '>=16' react: '>=16' dependencies: '@types/mdx': 2.0.10 - '@types/react': 18.2.38 + '@types/react': 18.2.41 react: 18.2.0 dev: false @@ -5402,7 +5503,7 @@ packages: - supports-color dev: false - /@microlink/react-json-view@1.23.0(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): + /@microlink/react-json-view@1.23.0(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-HYJ1nsfO4/qn8afnAMhuk7+5a1vcjEaS8Gm5Vpr1SqdHDY0yLBJGpA+9DvKyxyVKaUkXzKXt3Mif9RcmFSdtYg==} peerDependencies: react: '>= 15' @@ -5413,7 +5514,7 @@ packages: react-base16-styling: 0.6.0 react-dom: 18.2.0(react@18.2.0) react-lifecycles-compat: 3.0.4 - react-textarea-autosize: 8.3.4(@types/react@18.2.38)(react@18.2.0) + react-textarea-autosize: 8.3.4(@types/react@18.2.41)(react@18.2.0) transitivePeerDependencies: - '@types/react' - encoding @@ -5780,6 +5881,7 @@ packages: picocolors: 1.0.0 tiny-glob: 0.2.9 tslib: 2.5.2 + dev: false /@pnpm/config.env-replace@1.1.0: resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} @@ -5990,6 +6092,25 @@ packages: typescript: 4.9.5 dev: true + /@rollup/plugin-typescript@11.1.3(rollup@2.79.1)(typescript@5.3.2): + resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@2.79.1) + resolve: 1.22.2 + rollup: 2.79.1 + typescript: 5.3.2 + dev: true + /@rollup/pluginutils@3.1.0(rollup@2.79.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} @@ -6581,7 +6702,7 @@ packages: resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} dependencies: '@types/connect': 3.4.35 - '@types/node': 18.16.18 + '@types/node': 20.10.3 dev: false /@types/bonjour@3.5.11: @@ -6604,7 +6725,7 @@ packages: /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.3 dev: false /@types/connect@3.4.38: @@ -6734,7 +6855,7 @@ packages: /@types/http-proxy@1.17.12: resolution: {integrity: sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.3 dev: false /@types/is-ci@3.0.0: @@ -6894,6 +7015,11 @@ packages: /@types/node@18.16.18: resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} + /@types/node@20.10.3: + resolution: {integrity: sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg==} + dependencies: + undici-types: 5.26.5 + /@types/node@20.6.0: resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} dev: false @@ -6934,6 +7060,7 @@ packages: /@types/prop-types@15.7.11: resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} + dev: false /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} @@ -6969,7 +7096,7 @@ packages: resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.38 + '@types/react': 18.2.37 /@types/react@18.2.12: resolution: {integrity: sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==} @@ -6985,12 +7112,13 @@ packages: '@types/scheduler': 0.16.6 csstype: 3.1.2 - /@types/react@18.2.38: - resolution: {integrity: sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw==} + /@types/react@18.2.41: + resolution: {integrity: sha512-CwOGr/PiLiNBxEBqpJ7fO3kocP/2SSuC9fpH5K7tusrg4xPSRT/193rzolYwQnTN02We/ATXKnb6GqA5w4fRxw==} dependencies: '@types/prop-types': 15.7.11 '@types/scheduler': 0.16.8 csstype: 3.1.2 + dev: false /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} @@ -7022,6 +7150,7 @@ packages: /@types/scheduler@0.16.8: resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + dev: false /@types/secp256k1@4.0.3: resolution: {integrity: sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==} @@ -7126,7 +7255,7 @@ packages: '@types/yargs-parser': 21.0.3 dev: false - /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.2): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7138,29 +7267,29 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.2) '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@5.3.2) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.2) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.2 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.3.2) + typescript: 5.3.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@5.3.2): resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@5.3.2) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -7185,6 +7314,26 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: false + + /@typescript-eslint/parser@5.59.11(eslint@8.48.0)(typescript@5.3.2): + resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.59.11 + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.2) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.48.0 + typescript: 5.3.2 + transitivePeerDependencies: + - supports-color /@typescript-eslint/scope-manager@5.59.11: resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} @@ -7201,7 +7350,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.7 dev: true - /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@5.3.2): resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7211,12 +7360,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.2) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.2) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.3.2) + typescript: 5.3.2 transitivePeerDependencies: - supports-color dev: true @@ -7249,8 +7398,29 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: false + + /@typescript-eslint/typescript-estree@5.59.11(typescript@5.3.2): + resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/visitor-keys': 5.59.11 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.2 + tsutils: 3.21.0(typescript@5.3.2) + typescript: 5.3.2 + transitivePeerDependencies: + - supports-color - /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): + /@typescript-eslint/typescript-estree@5.59.7(typescript@5.3.2): resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7265,13 +7435,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.2 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.3.2) + typescript: 5.3.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@5.3.2): resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7282,7 +7452,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.2) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.2 @@ -7291,7 +7461,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@5.3.2): resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7302,7 +7472,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.7 '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.3.2) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.2 @@ -9725,7 +9895,7 @@ packages: dependencies: '@types/node': 18.16.18 cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.3.2) typescript: 4.9.5 dev: true @@ -9760,7 +9930,7 @@ packages: path-type: 4.0.0 dev: true - /cosmiconfig@8.3.6(typescript@4.9.5): + /cosmiconfig@8.3.6(typescript@5.3.2): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -9773,7 +9943,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 4.9.5 + typescript: 5.3.2 dev: false /cosmjs-types@0.4.1: @@ -10315,6 +10485,7 @@ packages: /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} + dev: false /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} @@ -10859,7 +11030,7 @@ packages: eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) @@ -10869,7 +11040,7 @@ packages: - supports-color dev: false - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.3.2): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -10882,19 +11053,19 @@ packages: '@babel/core': 7.23.3 '@babel/eslint-parser': 7.21.8(@babel/core@7.23.3)(eslint@8.48.0) '@rushstack/eslint-patch': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.2) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.2) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.48.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.3.2) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) - eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@4.9.5) - typescript: 4.9.5 + eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@5.3.2) + typescript: 5.3.2 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -10923,7 +11094,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.15.0 eslint: 8.48.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) get-tsconfig: 4.5.0 globby: 13.1.3 is-core-module: 2.12.1 @@ -10931,8 +11102,9 @@ packages: synckit: 0.8.5 transitivePeerDependencies: - supports-color + dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -10953,11 +11125,10 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.2) debug: 3.2.7 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) transitivePeerDependencies: - supports-color @@ -10976,7 +11147,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -10986,7 +11157,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.2) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -10994,7 +11165,7 @@ packages: doctrine: 2.1.0 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0) has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 @@ -11008,7 +11179,7 @@ packages: - eslint-import-resolver-webpack - supports-color - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.3.2): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -11021,8 +11192,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.2) + '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@5.3.2) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -11100,13 +11271,13 @@ packages: semver: 6.3.1 string.prototype.matchall: 4.0.8 - /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@4.9.5): + /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@5.3.2): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.2) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -11848,7 +12019,7 @@ packages: dependencies: is-callable: 1.2.7 - /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@5.3.2)(webpack@5.89.0): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -11876,7 +12047,7 @@ packages: schema-utils: 2.7.0 semver: 7.5.4 tapable: 1.1.3 - typescript: 4.9.5 + typescript: 5.3.2 webpack: 5.89.0 dev: false @@ -12077,6 +12248,7 @@ packages: /get-tsconfig@4.5.0: resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} + dev: false /git-clone@0.1.0: resolution: {integrity: sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==} @@ -12193,6 +12365,7 @@ packages: /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: false /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -12228,6 +12401,7 @@ packages: /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: false /google-protobuf@3.21.2: resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} @@ -13022,6 +13196,7 @@ packages: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true + dev: false /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} @@ -13307,6 +13482,7 @@ packages: engines: {node: '>=8'} dependencies: is-docker: 2.2.1 + dev: false /is-yarn-global@0.4.1: resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} @@ -13459,7 +13635,7 @@ packages: - supports-color dev: true - /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + /jest-cli@29.5.0(@types/node@20.10.3)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -13476,7 +13652,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@20.10.3)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -13522,7 +13698,47 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@20.10.3)(typescript@4.9.5) + transitivePeerDependencies: + - supports-color + dev: true + + /jest-config@29.5.0(@types/node@20.10.3)(ts-node@10.9.1): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.23.3 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.10.3 + babel-jest: 29.5.0(@babel/core@7.23.3) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1(@types/node@20.10.3)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true @@ -13852,7 +14068,7 @@ packages: supports-color: 8.1.1 dev: false - /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + /jest@29.5.0(@types/node@20.10.3)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -13865,7 +14081,7 @@ packages: '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-cli: 29.5.0(@types/node@20.10.3)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color @@ -15711,6 +15927,7 @@ packages: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 + dev: false /opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} @@ -16223,14 +16440,14 @@ packages: postcss-selector-parser: 6.0.13 dev: false - /postcss-loader@7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0): + /postcss-loader@7.3.3(postcss@8.4.31)(typescript@5.3.2)(webpack@5.89.0): resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} engines: {node: '>= 14.15.0'} peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 dependencies: - cosmiconfig: 8.3.6(typescript@4.9.5) + cosmiconfig: 8.3.6(typescript@5.3.2) jiti: 1.21.0 postcss: 8.4.31 semver: 7.5.4 @@ -16677,7 +16894,7 @@ packages: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 18.16.18 + '@types/node': 20.10.3 long: 4.0.0 dev: false @@ -16865,7 +17082,7 @@ packages: pure-color: 1.3.0 dev: false - /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): + /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@5.3.2)(webpack@5.89.0): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -16884,7 +17101,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@5.3.2)(webpack@5.89.0) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -16899,7 +17116,7 @@ packages: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - typescript: 4.9.5 + typescript: 5.3.2 webpack: 5.89.0 transitivePeerDependencies: - eslint @@ -17055,7 +17272,7 @@ packages: tslib: 2.6.2 dev: false - /react-textarea-autosize@8.3.4(@types/react@18.2.38)(react@18.2.0): + /react-textarea-autosize@8.3.4(@types/react@18.2.41)(react@18.2.0): resolution: {integrity: sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==} engines: {node: '>=10'} peerDependencies: @@ -17064,7 +17281,7 @@ packages: '@babel/runtime': 7.23.2 react: 18.2.0 use-composed-ref: 1.3.0(react@18.2.0) - use-latest: 1.2.1(@types/react@18.2.38)(react@18.2.0) + use-latest: 1.2.1(@types/react@18.2.41)(react@18.2.0) transitivePeerDependencies: - '@types/react' dev: false @@ -18494,6 +18711,7 @@ packages: dependencies: '@pkgr/utils': 2.3.1 tslib: 2.5.2 + dev: false /tapable@1.1.3: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} @@ -18640,6 +18858,7 @@ packages: dependencies: globalyzer: 0.1.0 globrex: 0.1.2 + dev: false /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} @@ -18710,7 +18929,7 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false - /ts-jest@29.1.0(@babel/core@7.23.3)(jest@29.5.0)(typescript@4.9.5): + /ts-jest@29.1.0(@babel/core@7.23.5)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -18731,10 +18950,10 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest: 29.5.0(@types/node@20.10.3)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -18744,7 +18963,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.16.18)(typescript@4.9.5): + /ts-node@10.9.1(@types/node@18.16.18)(typescript@5.3.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -18770,6 +18989,37 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 + typescript: 5.3.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /ts-node@10.9.1(@types/node@20.10.3)(typescript@4.9.5): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 20.10.3 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -18801,6 +19051,16 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 + dev: false + + /tsutils@3.21.0(typescript@5.3.2): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.3.2 /tsyringe@4.8.0: resolution: {integrity: sha512-YB1FG+axdxADa3ncEtRnQCFq/M0lALGLxSZeVNbTU8NqhOVc51nnv2CISTcvc1kyv6EGPtXVr0v6lWeDxiijOA==} @@ -18918,6 +19178,11 @@ packages: hasBin: true dev: true + /typescript@5.3.2: + resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} + engines: {node: '>=14.17'} + hasBin: true + /ua-parser-js@1.0.37: resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} dev: false @@ -18961,7 +19226,6 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - dev: false /unenv@1.8.0: resolution: {integrity: sha512-uIGbdCWZfhRRmyKj1UioCepQ0jpq638j/Cf0xFTn4zD1nGJ2lSdzYHLzfdXN791oo/0juUiSWW1fBklXMTsuqg==} @@ -19248,7 +19512,7 @@ packages: react: 18.2.0 dev: false - /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.38)(react@18.2.0): + /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.41)(react@18.2.0): resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} peerDependencies: '@types/react': '*' @@ -19257,11 +19521,11 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.38 + '@types/react': 18.2.41 react: 18.2.0 dev: false - /use-latest@1.2.1(@types/react@18.2.38)(react@18.2.0): + /use-latest@1.2.1(@types/react@18.2.41)(react@18.2.0): resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} peerDependencies: '@types/react': '*' @@ -19270,9 +19534,9 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.38 + '@types/react': 18.2.41 react: 18.2.0 - use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.38)(react@18.2.0) + use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.41)(react@18.2.0) dev: false /use-sidecar@1.1.2(@types/react@18.2.12)(react@18.2.0): From 67430c802a1e7626ec2f810d48848658ba488e65 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 7 Dec 2023 21:55:23 +0800 Subject: [PATCH 327/433] chore: [ci] release (alpha) (#414) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 4 +++- examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 9 +++++++++ packages/js-sdk/package.json | 2 +- 7 files changed, 31 insertions(+), 4 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 0928f446..904db04c 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -10,5 +10,7 @@ "@bnb-chain/greenfield-js-sdk": "1.0.6", "@bnb-chain/greenfield-zk-crypto": "1.0.0" }, - "changesets": [] + "changesets": [ + "tricky-chicken-knock" + ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 15a2297c..a3e462fc 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.17-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`47d59a1`](https://github.com/bnb-chain/greenfield-js-sdk/commit/47d59a1355b0a7788727daaf077a644206ffcc05)]: + - @bnb-chain/greenfield-js-sdk@1.1.0-alpha.0 + ## 0.0.16 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index eef9d2f1..6dfdc8a6 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.16", + "version": "0.0.17-alpha.0", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 34edfee1..f89431c1 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.20-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`47d59a1`](https://github.com/bnb-chain/greenfield-js-sdk/commit/47d59a1355b0a7788727daaf077a644206ffcc05)]: + - @bnb-chain/greenfield-js-sdk@1.1.0-alpha.0 + ## 0.0.19 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 0eda40ce..71e2a190 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.19", + "version": "0.0.20-alpha.0", "type": "commonjs", "private": true, "scripts": {}, diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index f568dbbf..89c87e44 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,14 @@ # @bnb-chain/greenfield-js-sdk +## 1.1.0-alpha.0 + +### Minor Changes + +- [#413](https://github.com/bnb-chain/greenfield-js-sdk/pull/413) + [`47d59a1`](https://github.com/bnb-chain/greenfield-js-sdk/commit/47d59a1355b0a7788727daaf077a644206ffcc05) + Thanks [@rrr523](https://github.com/rrr523)! - feat(BREAKING CHANGE): create group / bucket / + object must have `tags` arguments and supply `setMsg` method to update tags. + ## 1.0.6 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index c9a398ce..62b54d58 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.0.6", + "version": "1.1.0-alpha.0", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 9d09047223a02611349d3e6bc4672444c4d06377 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Thu, 7 Dec 2023 22:04:15 +0800 Subject: [PATCH 328/433] Chore/update create tags (#415) * chore(example): Nodejs example update new create tx * docs: Update Docs - new create tx --- doc-site/docs/api/bucket.mdx | 4 ++++ doc-site/docs/api/object.mdx | 8 ++++++++ examples/nodejs/cases/policy.js | 3 +++ examples/nodejs/cases/storage.js | 6 ++++++ 4 files changed, 21 insertions(+) diff --git a/doc-site/docs/api/bucket.mdx b/doc-site/docs/api/bucket.mdx index b3e7a457..c9749123 100644 --- a/doc-site/docs/api/bucket.mdx +++ b/doc-site/docs/api/bucket.mdx @@ -19,6 +19,7 @@ for creating bucket and sends the createBucket transaction to the Greenfield. | chargedReadQuota | defines the traffic quota that you read from primary sp | | spInfo | primary sp address | | paymentAddress | payment address | +| tags | defines a list of tags which will be set to the bucket | | authType | [AuthType](/client/sp-client#authtype) | ```jsx title="example" @@ -32,6 +33,9 @@ const tx = await client.bucket.createBucket( primarySpAddress: 'primary_sp_address', }, paymentAddress: address, + tags: { + tags: [], + }, }, { type: 'EDDSA', diff --git a/doc-site/docs/api/object.mdx b/doc-site/docs/api/object.mdx index 933507b6..7dda6181 100644 --- a/doc-site/docs/api/object.mdx +++ b/doc-site/docs/api/object.mdx @@ -27,6 +27,7 @@ Send create empty object txn to greenfield chain. | bucketName | bucket name | | objectName | object name | | creator | the creator of object | +| tags | defines a list of tags which will be set to the object | | authType | [AuthType](/client/sp-client#authtype) | ```jsx title="example" @@ -35,6 +36,9 @@ const tx = await client.object.createFolder( bucketName: createObjectInfo.bucketName, objectName: createObjectInfo.objectName + '/', creator: address, + tags: { + tags: [], + }, }, { type: 'EDDSA', @@ -60,6 +64,7 @@ Get approval of creating object and send createObject txn to greenfield chain. | authType | [AuthType](/client/sp-client#authtype) | | contentLength | file content length | | expectCheckSums | file's expectCheckSums | +| tags | defines a list of tags which will be set to the object | ```jsx title="example" const tx = await client.object.createObject( @@ -72,6 +77,9 @@ const tx = await client.object.createObject( redundancyType: 'REDUNDANCY_EC_TYPE', contentLength: 13311, expectCheckSums: JSON.parse(expectCheckSums), + tags: { + tags: [], + }, }, { type: 'EDDSA', diff --git a/examples/nodejs/cases/policy.js b/examples/nodejs/cases/policy.js index d24209a8..9ce4570e 100644 --- a/examples/nodejs/cases/policy.js +++ b/examples/nodejs/cases/policy.js @@ -11,6 +11,9 @@ const { ACCOUNT_ADDRESS, ACCOUNT_PRIVATEKEY } = require('../env'); creator: ACCOUNT_ADDRESS, extra: EXTRA, groupName: GROUP_NAME, + tags: { + tags: [], + }, }); const createGroupTxSimulateInfo = await createGroupTx.simulate({ diff --git a/examples/nodejs/cases/storage.js b/examples/nodejs/cases/storage.js index eaaa9ee2..5503c2b4 100644 --- a/examples/nodejs/cases/storage.js +++ b/examples/nodejs/cases/storage.js @@ -30,6 +30,9 @@ console.log('objectName', objectName); primarySpAddress: spInfo.primarySpAddress, }, paymentAddress: ACCOUNT_ADDRESS, + tags: { + tags: [], + }, }, { type: 'ECDSA', @@ -68,6 +71,9 @@ console.log('objectName', objectName); redundancyType: 'REDUNDANCY_EC_TYPE', contentLength, expectCheckSums: JSON.parse(expectCheckSums), + tags: { + tags: [], + }, }, { type: 'ECDSA', From 54e2c4d6ddae656f0d78f82071e38c9b681e5aed Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Fri, 8 Dec 2023 11:01:12 +0800 Subject: [PATCH 329/433] chore(example): Create folder on Nodejs (#416) --- examples/nodejs/cases/storage.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/examples/nodejs/cases/storage.js b/examples/nodejs/cases/storage.js index eaaa9ee2..02e76140 100644 --- a/examples/nodejs/cases/storage.js +++ b/examples/nodejs/cases/storage.js @@ -106,4 +106,33 @@ console.log('objectName', objectName); if (uploadRes.code === 0) { console.log('upload object success', uploadRes); } + + // create folder example: + const createFolderTx = await client.object.createFolder( + { + bucketName: bucketName, + objectName: objectName + '/', + creator: ACCOUNT_ADDRESS, + }, + { + type: 'ECDSA', + privateKey: ACCOUNT_PRIVATEKEY, + }, + ); + const simulateInfo = await createFolderTx.simulate({ + denom: 'BNB', + }); + + const res = await createFolderTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo?.gasLimit), + gasPrice: simulateInfo?.gasPrice || '5000000000', + payer: ACCOUNT_ADDRESS, + granter: '', + privateKey: ACCOUNT_PRIVATEKEY, + }); + + if (res.code === 0) { + console.log('create folder success', res); + } })(); From f914c3f9eee50399edceef466df7c4563c42d887 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Fri, 8 Dec 2023 11:49:53 +0800 Subject: [PATCH 330/433] docs: Doc site add Nodejs Tab (#417) --- doc-site/docs/api/object.mdx | 131 ++++++++++++++++++++++++++-- doc-site/docs/client/greenfield.mdx | 4 +- doc-site/docs/client/sp-client.mdx | 24 ++++- doc-site/docs/client/tx-client.mdx | 33 +++++-- doc-site/src/css/custom.css | 8 +- 5 files changed, 177 insertions(+), 23 deletions(-) diff --git a/doc-site/docs/api/object.mdx b/doc-site/docs/api/object.mdx index 933507b6..79947cca 100644 --- a/doc-site/docs/api/object.mdx +++ b/doc-site/docs/api/object.mdx @@ -5,6 +5,8 @@ title: 'Object' import ApiTypes from '../../src/components/snippers/api-types.tsx'; import Tx from '../../src/components/snippers/tx.mdx'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; ## cancelCreateObject @@ -29,22 +31,51 @@ Send create empty object txn to greenfield chain. | creator | the creator of object | | authType | [AuthType](/client/sp-client#authtype) | -```jsx title="example" + + + +```jsx const tx = await client.object.createFolder( { bucketName: createObjectInfo.bucketName, objectName: createObjectInfo.objectName + '/', creator: address, }, + // highlight-start { type: 'EDDSA', domain: window.location.origin, seed: offChainData.seedString, address, }, + // highlight-end +); +``` + + + + +```js +const tx = await client.object.createFolder( + { + bucketName: bucketName, + objectName: objectName + '/', + creator: ACCOUNT_ADDRESS, + }, + // highlight-start + { + type: 'ECDSA', + privateKey: ACCOUNT_PRIVATEKEY, + }, + // highlight-end ); ``` + + + + + ## createObject Get approval of creating object and send createObject txn to greenfield chain. @@ -61,7 +92,11 @@ Get approval of creating object and send createObject txn to greenfield chain. | contentLength | file content length | | expectCheckSums | file's expectCheckSums | -```jsx title="example" + + + +```jsx +// https://github.com/bnb-chain/greenfield-js-sdk/blob/main/examples/nextjs/src/components/object/create/index.tsx#L76-L95 const tx = await client.object.createObject( { bucketName: 'bucket_name', @@ -73,15 +108,44 @@ const tx = await client.object.createObject( contentLength: 13311, expectCheckSums: JSON.parse(expectCheckSums), }, + // highlight-start { type: 'EDDSA', domain: window.location.origin, seed: offChainData.seedString, address, }, + // highlight-end +); +``` + + + +```js +// https://github.com/bnb-chain/greenfield-js-sdk/blob/main/examples/nodejs/cases/storage.js#L61-L76 +const tx = await client.object.createObject( + { + bucketName: bucketName, + objectName: objectName, + creator: ACCOUNT_ADDRESS, + visibility: 'VISIBILITY_TYPE_PRIVATE', + fileType: fileType, + redundancyType: 'REDUNDANCY_EC_TYPE', + contentLength, + expectCheckSums: JSON.parse(expectCheckSums), + }, + // highlight-start + { + type: 'ECDSA', + privateKey: ACCOUNT_PRIVATEKEY, + }, + // highlight-end ); ``` + + + ## deleteObject @@ -94,7 +158,7 @@ Send DeleteObject msg to greenfield chain and return txn hash. | bucketName | the name of the bucket where the object which to be deleted is stored | | objectName | the name of the object which to be deleted | -```jsx title="example" +```jsx title="Browser / Nodejs Example" const tx = await client.object.deleteObject({ bucketName: 'bucket_name', objectName: 'object_name', @@ -116,7 +180,7 @@ Delete the object policy of the principal. | principalAddr | principal address | | principal | [PrincipalType](/types/principal) | -```jsx title="example" +```jsx title="Browser / Nodejs Example" const tx = await client.object.deleteObjectPolicy( '0x000..', // operator 'bucket_name', // bucket name @@ -137,20 +201,45 @@ Download s3 object payload and return the related object info. | bucketName | bucket name | | objectName | object name | -```jsx title="example" + + + +```jsx await client.object.downloadFile( { bucketName, objectName, }, + // highlight-start { type: 'EDDSA', address, domain: window.location.origin, seed: offChainData.seedString, }, + // highlight-end +); +``` + + + + +```js +await client.object.downloadFile( + { + bucketName, + objectName, + }, + // highlight-start + { + type: 'ECDSA', + privateKey: ACCOUNT_PRIVATEKEY, + }, + // highlight-end ); ``` + + ## getObjectPolicy @@ -170,7 +259,7 @@ const tx = await client.object.getObjectPolicy('bucket_name', 'object_name', '0x Get the object preview url. -```jsx title="example" +```jsx title="Browser" const res = await client.object.getObjectPreviewUrl( { bucketName: 'bucket_name', @@ -322,7 +411,10 @@ Uploading the object to bucket. | txnHash | [createObject](#createobject) 's hash | | authType | [AuthType](/client/sp-client#authtype) | -```jsx title="example" + + + +```jsx const uploadRes = await client.object.uploadObject( { bucketName: createObjectInfo.bucketName, @@ -330,11 +422,36 @@ const uploadRes = await client.object.uploadObject( body: file, txnHash: txHash, }, + // highlight-start { type: 'EDDSA', domain: window.location.origin, seed: offChainData.seedString, address, }, + // highlight-end +); +``` + + + + +```js +const uploadRes = await client.object.uploadObject( + { + bucketName: bucketName, + objectName: objectName, + body: fileBuffer, + txnHash: createObjectTxRes.transactionHash, + }, + // highlight-start + { + type: 'ECDSA', + privateKey: ACCOUNT_PRIVATEKEY, + }, + // highlight-end ); ``` + + + diff --git a/doc-site/docs/client/greenfield.mdx b/doc-site/docs/client/greenfield.mdx index ca4d8a66..2db85d11 100644 --- a/doc-site/docs/client/greenfield.mdx +++ b/doc-site/docs/client/greenfield.mdx @@ -20,7 +20,7 @@ const client = Client.create(GRPC_URL, GREEN_CHAIN_ID); // Browser const client = Client.create(GRPC_URL, String(GREEN_CHAIN_ID), { zkCryptoUrl: - 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto@1.0.0/dist/node/zk-crypto.wasm', + 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto/dist/node/zk-crypto.wasm', }); ``` @@ -30,8 +30,6 @@ Browser need load wasm manually. ::: -## Usage - The JS SDK consists of two parts: - Chain: https://docs.bnbchain.org/greenfield-docs/docs/api/blockchain-rest diff --git a/doc-site/docs/client/sp-client.mdx b/doc-site/docs/client/sp-client.mdx index 34aebdc2..abed83b0 100644 --- a/doc-site/docs/client/sp-client.mdx +++ b/doc-site/docs/client/sp-client.mdx @@ -4,6 +4,9 @@ sidebar_position: 3 title: 'Storage Provider Client' --- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + The api related to storage provider are some troublesome. ## AuthType @@ -45,9 +48,9 @@ browser). --> ## Sp Api Example -`getBucketReadQuota` as example: +Take `getBucketReadQuota` as a complete example: -```jsx title="browser" +```js title="offchainAuth" const getAllSps = async () => { const sps = await getSps(); @@ -72,30 +75,45 @@ const offchainAuthRes = await client.offchainauth.genOffChainAuthKeyPairAndUploa }, provider: 'wallet provider', ); +``` + + + +```jsx title="browser" // request sp api const bucketQuota = await client.bucket.getBucketReadQuota( { bucketName, }, + // highlight-start { type: 'EDDSA', seed: offchainAuthRes.seedString, domain: window.location.origin, - address: 'your address', + address: '0x...', }, + // highlight-end ); ``` + + + ```jsx title="Nodejs" // request sp api const bucketQuota = await client.bucket.getBucketReadQuota( { bucketName, }, + // highlight-start { type: 'ECDSA', privateKey: '0x....', }, + // highlight-end ); ``` + + + diff --git a/doc-site/docs/client/tx-client.mdx b/doc-site/docs/client/tx-client.mdx index bc8f1a48..bb55f0b7 100644 --- a/doc-site/docs/client/tx-client.mdx +++ b/doc-site/docs/client/tx-client.mdx @@ -4,6 +4,9 @@ sidebar_position: 1 title: 'Tx Client' --- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + ## About Tx A transaction contains at least: @@ -41,8 +44,10 @@ Broadcast the transaction to the chain. | signTypedDataCallback | broadcast use `window.ethereum` as signature provider by default. | | privateKey | If you broadcast in Nodejs, you can broadcast a tx by privateKey | -```jsx title="broadcast tx" -// broadcast tx + + + +```js title="broadcast tx" const broadcastRes = await transferTx.broadcast({ denom: 'BNB', gasLimit: Number(simulateInfo.gasLimit), @@ -56,7 +61,7 @@ const broadcastRes = await transferTx.broadcast({ If you want to use others wallet, you can set `signTypedDataCallback`: -```jsx +```js // trustwallet: const broadcastRes = await transferTx.broadcast({ // ... @@ -68,21 +73,31 @@ const broadcastRes = await transferTx.broadcast({ }, }); ``` +::: -If you broadcast in Nodejs, you can broadcast a tx by privateKey: + + -```jsx +If you broadcast in Nodejs, you can broadcast a tx by `privateKey`: + +```js title="broadcast tx" const broadcastRes = await transferTx.broadcast({ - // ... + denom: 'BNB', + gasLimit: Number(simulateInfo.gasLimit), + gasPrice: simulateInfo.gasPrice, + payer: '0x0000000000000000000000000000000000000001', + granter: '', + // highlight-start privateKey: '0x.......', + // highlight-end }); ``` - -::: + + ## Example -Take `transfer` tx as an example. +Take `transfer` tx as a complete example: ### 1. construct a transaction diff --git a/doc-site/src/css/custom.css b/doc-site/src/css/custom.css index 2bc6a4cf..090eab85 100644 --- a/doc-site/src/css/custom.css +++ b/doc-site/src/css/custom.css @@ -14,7 +14,13 @@ --ifm-color-primary-lighter: #359962; --ifm-color-primary-lightest: #3cad6e; --ifm-code-font-size: 95%; - --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); + --docusaurus-highlighted-code-line-bg: rgb(233,233,233); +} + +/* If you have a different syntax highlighting theme for dark mode. */ +[data-theme='dark'] { + /* Color which works with dark mode syntax highlighting theme */ + --docusaurus-highlighted-code-line-bg: rgb(100, 100, 100); } /* For readability concerns, you should choose a lighter palette in dark mode. */ From a940e065954aadd021c76bcb59be69254f50735e Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Fri, 8 Dec 2023 18:20:27 +0800 Subject: [PATCH 331/433] chore: Remove engines filed (#418) --- .changeset/eighty-foxes-train.md | 5 +++++ packages/js-sdk/package.json | 4 ---- 2 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 .changeset/eighty-foxes-train.md diff --git a/.changeset/eighty-foxes-train.md b/.changeset/eighty-foxes-train.md new file mode 100644 index 00000000..d8ee3988 --- /dev/null +++ b/.changeset/eighty-foxes-train.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +chore: Remove engines filed in package.json diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 62b54d58..cf66e4a5 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -42,10 +42,6 @@ ], "author": "", "license": "GPLv3", - "engines": { - "yarn": "please use pnpm", - "npm": "please use pnpm" - }, "files": [ "dist", "types" From 8626132b3e2f7ebf20c6a043a6e4e78441297c94 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Fri, 15 Dec 2023 17:33:59 +0800 Subject: [PATCH 332/433] chore(docs): Quick start doc (#420) --- doc-site/docs/getting-started/quick-start.md | 16 - doc-site/docs/getting-started/quick-start.mdx | 115 + doc-site/docusaurus.config.js | 12 + doc-site/package.json | 5 +- .../static/img/quick-start/create-bucket.png | Bin 0 -> 16696 bytes doc-site/static/img/quick-start/details.png | Bin 0 -> 53499 bytes .../static/img/quick-start/gnfd-template.gif | Bin 0 -> 539184 bytes doc-site/static/img/quick-start/init.png | Bin 0 -> 65094 bytes .../static/img/quick-start/select-wallet.png | Bin 0 -> 61694 bytes .../src/components/object/create/index.tsx | 6 +- pnpm-lock.yaml | 3143 ++++++++++------- 11 files changed, 2087 insertions(+), 1210 deletions(-) delete mode 100644 doc-site/docs/getting-started/quick-start.md create mode 100644 doc-site/docs/getting-started/quick-start.mdx create mode 100644 doc-site/static/img/quick-start/create-bucket.png create mode 100644 doc-site/static/img/quick-start/details.png create mode 100644 doc-site/static/img/quick-start/gnfd-template.gif create mode 100644 doc-site/static/img/quick-start/init.png create mode 100644 doc-site/static/img/quick-start/select-wallet.png diff --git a/doc-site/docs/getting-started/quick-start.md b/doc-site/docs/getting-started/quick-start.md deleted file mode 100644 index 858d8c46..00000000 --- a/doc-site/docs/getting-started/quick-start.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: quick-start -sidebar_position: 3 ---- - -# Quick Start - -We provide templates that can run `React` (Next.js, Vite and CRA(Legacy) etc) directly. - -You can use [`create-gnfd-app`](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/create-gnfd-app) to create a app quickly: - -```bash -> npx @bnb-chain/create-gnfd-app -``` - -![](https://github.com/bnb-chain/greenfield-js-sdk/raw/alpha/packages/create-gnfd-app/example.gif) diff --git a/doc-site/docs/getting-started/quick-start.mdx b/doc-site/docs/getting-started/quick-start.mdx new file mode 100644 index 00000000..20d7a751 --- /dev/null +++ b/doc-site/docs/getting-started/quick-start.mdx @@ -0,0 +1,115 @@ +--- +id: quick-start +sidebar_position: 3 +--- + +import Image from '@theme/IdealImage'; + +# Quick Start + +We provide templates that can run `React` ([Next.js](https://nextjs.org/), [Vite](https://vitejs.dev/) and [CRA](https://create-react-app.dev/) etc) directly. + +You can use [`create-gnfd-app`](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/create-gnfd-app) to create a app quickly: + +```bash +> npx @bnb-chain/create-gnfd-app +``` + +![create-gnfd-app](/img/quick-start/gnfd-template.gif) + +## Using Template + +### 1. Fill Application name + +Here I take `my-gnfd-app` as an example: + +```bash +> npx @bnb-chain/create-gnfd-app +# highlight-start +? What is your project named? my-gnfd-app +# highlight-end +``` + +### 2. Select a template + +Here I take `nextjs` as an example: + +```bash +> npx @bnb-chain/create-gnfd-app +? What is your project named? my-gnfd-app +? select a template? (Use arrow keys) +# highlight-start +❯ nextjs + create-react-app + vite +# highlight-end +``` + +### 3. Select a package manager + +Here I take `pnpm` as an example: + +```bash +> npx @bnb-chain/create-gnfd-app +? What is your project named? my-gnfd-app +? select a template? nextjs +# highlight-start +? select a package manager? + npm + yarn +❯ pnpm +# highlight-end +``` + +### 4. Download template + +Now downloading template: + +```bash +? What is your project named? my-gnfd-app +? select a template? nextjs +? select a package manager? pnpm +# highlight-start +Creating a new Greenfield app in my-gnfd-app. +🎉 download template - nextjs success + +⠧ Installing dependencies with pnpm...... +# highlight-end +``` + +After a while you will see this line: + +```bash +? What is your project named? my-gnfd-app +? select a template? nextjs +? select a package manager? pnpm +Creating a new Greenfield app in my-gnfd-app. +# highlight-start +🎉 download template - nextjs success + +🎉 Install dependencies successfully. +# highlight-end +``` + +## Run Application + +```bash +> cd my-gnfd-app +> npm run dev +``` + +### 1. You can see `Connect Wallet` button + + ![init](/img/quick-start/init.png) + +### 2. Click the button and select a wallet + + + +### 3. You can this page + + + +### 4. Create a Bucket + + diff --git a/doc-site/docusaurus.config.js b/doc-site/docusaurus.config.js index 79aec213..b6f78775 100644 --- a/doc-site/docusaurus.config.js +++ b/doc-site/docusaurus.config.js @@ -11,6 +11,7 @@ const config = { title: 'Greenfield JavaScript SDK', tagline: `An easy-to-use tool designed to help developers build decentralized applications (DApps) on the Greenfield blockchain.`, favicon: 'img/favicon.ico', + staticDirectories: ['static'], // Set the production url of your site here url: 'https://greenfield-js-sdk.netlify.app', @@ -26,6 +27,17 @@ const config = { onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', + plugins: [ + '@docusaurus/plugin-ideal-image', + // { + // quality: 70, + // max: 1030, // max resized image's size. + // min: 640, // min resized image's size. if original is lower, use that size. + // steps: 2, // the max number of images generated between min and max (inclusive) + // disableInDev: false, + // }, + ], + // Even if you don't use internalization, you can use this field to set useful // metadata like html lang. For example, if your site is Chinese, you may want // to replace "en" with "zh-Hans". diff --git a/doc-site/package.json b/doc-site/package.json index 39229fef..5669a053 100644 --- a/doc-site/package.json +++ b/doc-site/package.json @@ -14,8 +14,9 @@ "write-heading-ids": "docusaurus write-heading-ids" }, "dependencies": { - "@docusaurus/core": "3.0.0", - "@docusaurus/preset-classic": "3.0.0", + "@docusaurus/core": "3.0.1", + "@docusaurus/plugin-ideal-image": "^3.0.1", + "@docusaurus/preset-classic": "3.0.1", "@mdx-js/react": "^3.0.0", "clsx": "^1.2.1", "prism-react-renderer": "^2.2.0", diff --git a/doc-site/static/img/quick-start/create-bucket.png b/doc-site/static/img/quick-start/create-bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..53610f089411091f0ac9e29456fee01a0413d693 GIT binary patch literal 16696 zcmeIaWl)@5v?kiXN04A45F~hjAi>=ef@>hS6WrZ3(6|Tp;1B`?cX#*T?(S}P^PM?W zb8gkG`)BIZOx3*Aq5JhMOP;l!y%O|AMidnp9~lCHpo)tL$wMHp#SjQgC?YI467#D1 z1biV`i>cZ{Aa5w1|G|jMlOIDMBoJ|-PYTW{2MbQ_iW@5e$6G1&Mu%dSm*hy1jF?q{ zWI4ehReu#}zg-kMR5?zk%cm$dtEt2ARCrbv71gMznRI?vdsPY>PX7Djic?-t%nF9h$;r7|@_KS=zFQdA z#0Nte<-C&lJj!dd1ZYdP{dB|pcjmSsHa^IYTLMov zadhe`aj6Mo;DSJe{xY+vV$>JDZkPMw-aP^%ekc+_ykC7NWYsF8{90pR80F~Gjr!9UlABybUt*oIOss8DXyy1y zkiMQ|Z$D?Vji6E?2};ZdfiPgLCh_nR9}-VrD&df3SA4k>P~JSb!apx-_@KCI6d@o4 zlc1ED^pCOI$6VpsmA^lJz)EAjd;!5I%;rLWl0wh_6#wLfuf70{ERRo$RwjUWzs?GvcJ0Z829)g} z%RyvtR_fY(FG)zV8AVeYRw0lSTt2DM&u=LFDaKyG>yV9Hz%gn=Ae3CL37B&~-UmLL z-Aw;yB_c8XU%NA=k3$k(S67#jks)-IoBi*Wm&Y456Q z6sT#UqM;p5m+EZ|r3zfPq8B%u_UYriN2;=zbG$y*ecUXnUNkLL`JqAtfh1(+nqvL* zXVBD2MN(3d(~?Jgv&$gc6bbN3E#e8Vaz8UO1q&y~nj?q>78e%i z8sgV#fU$C&{H6FIgftQ~SC1V&vqjePG&+&R=#=B_+qc@DHyeaJj>qb=b93tI>Mviu zjF#h0Fpd(-uB?p3$ec7C9~=9jnR5LC0byrkDkX&=Q7Ud9%uc92ve0*`&d$!a9G1U- z{o38#UFEpEygZd#J{uMgaNNiBn%bQ#WMO88mW)hHR5%@JJsKJq7^teM?uT=R7ykOi z?S5@-WmVF?!k8#EGc!Z0Tpa3JIl8^QJ>BS5ZQbv(m5QSnhKhm$EH8qlrlyC7M?paW zi{U^5lU~zpU3pq;bmJ)cQ1Ii&kNm#7 z?a{2}n?bAVD`q9QueyIkqyA-=15x1&boj4z>O6=(r#;XH>w zD{(3v57cxC4a;ZPEoRRj?~VclGxE2Tl$0!||9s+$Rr+u^x&G)B0 z5nQ(GJq}ZvTh^R1*QODCmnw>i*k0v7e=d)T5^uy4Sl4PeExH)V%0?Vh%e}<>2lo45 zG6&cqE>VG`g?3_XlQ>^YDoazoeyA@j3~^i>PsR*d_kU|yv;IS}%S`*=;6Rq|BF4IZ zwKIgFZab69Zj(U3^B%ZfO*c251t7o=)y)qF;0D~4$tuf*+uOa8GmbEkHJ}I%+=R_w zROs3W{#dWH?UgipE;hJ){`{HP^LhoG_H890CC5eKzunFn<~>7cXGHc}?ZnY0hnmmV z$T`zrFZ-g8mBJd9-(c~BredU0W55Hq99A<|0u<3gG1X!5I&EKl!>{g3X z0UjHho15$F8Xgyu_l-PGhXka^?$;{;&0y4Sl5K16m78xBm6YBzckb99&eujab9p`9 zODD6B5-n9!R7f&3PMEVVfzdo)ghN2vU#NGwIooh^h5FCifTMBC={$bA=x zM8+2}`gqxvCfM)Z3N(C0XUZnXDLteC1l@ju8B7OE7>Fqy2t>$!Dsj^1JMg}rf`piF zhuI0x0@_!CZWdv33qf}`|J8~el|yL-*V%q&as_uPT!QRCGjuoOH%Cr|qs z1TF|?%-IVk`<5n5D@)C=?{BA?i3TMXT=$A93^Og8ZZ_?P`8al&E-o(Gk`)yd!8prB zydqL(V*L=ebR=NC?7eifRV_po1-cEk`}_Nb2Hq9l&l!kFK>I z^0-;xdKSOYsVQYGE&BbZ;Mvj9EYSl;o+rZv%Pa8H&d%;7GO{_lIzYF?sqdl!$9L?x zQ!T6O!340Qo?l+Fv$7tG2R8le-}qHhag#dB|szQb&gar!3^p!W=)c!j5AoU zbdr^oWyIaz-#>S4%t~xm)z+4^`{?NCC?^+nTDKP0E5L80Qu1 z1ew&0JMYueQ=e8HM%;B}^;M$*5yh@|X2!<2xVVhCDAd%{_+edJXBSsjJOpUrYe~t; z(v;DRp<{i?7;TIw4=t0X4ve@JGv?>}_sgxm*x1-W`W!`pD4+$rV`H1tXBH-l0wR8U zXJuujOcQ%vof;Qs$cT&UZ^ND1*w`2))?rxA#=#+a;eK&>IfgsP7^+pmfggtK*9KZ> zUiFb=*_soLm|sIq?t2xC_h>S#97(W5PTlot2sUyjaBQEetqH32y2HOlz|zM{IqXRLBpPwHvBNe6~c#)Qrwg>sQ~=6*?LkHvw9smO$Iy#MIPypO%W@W8+A@KC>#gbO|Lc zHg?0Y9-V;mB4HT(s53*{?kURLCMg~!zDZ7eJ-+OUQq z66xsa-xNQ3f(@i)%wapq8JCc@_ zPfIBqTB2K#euoo@A`~J$htxv=lfd)VJ)Rf9jt-NrQQmS`ksn zsnlDMET&&F6wvkcb7fTYScKUSHD#66*CJ9fOfvE%OfLS_Uqq0w?GKBxo2R&+{!91m4}Oq%N=d` zDrbC$01ZKa?E5oN%3k0Q78aKK%u0?a?&9L&;J{{)_X!Jv+gN}PkA>_fn6aGYJ+)_H zVv>OxB=?=<7hxI(nMRxnl_|5JsHi9-Zs@K(ukE@Ru;gB6Z7&%@-NsZE6zmrqrWSxL zypIFEwM3&h?e*ZxXuz$=o9CYA;lg;LG@-C?*rH(?m8jruYxKB@;>$y9%YZgxAqN*uOK z*9tWja{0{s`1ofxFy%Sd(x5Bp5}hqE0h%tkc0c8%a*45NoQMF1n+6!@yA-7R@jwBHa51> zlCSFOZtFc!RaNZCgKwO;1a(bBYn;@6h>@3m{!3k}A=8XsJvWFh!ozj19A_-VN7|vo zm@v4Rf2O7dtgeMJ6+L}8kK=c323pJUx?}p4;})AJV;vZapTR<8dJmeN>}_Fx-tkv< z530ELY-+P$AdXa*j2dI2!Y>Q7mpZn<1kPX?KL`Hq(M?N7)oMi`M{%>K{Y2v~Wok;} z^@EVj733~7y>7?T{}!pgkMCDkQzP=c)?Mj*nF&CVe^rNkGP^|*ixHaF?#--O2@(!3 zJuR)IJ#VJp%}IpUeee79V~=~_D4Xv$7>HfgU%8%zvJ8#v*t`F90cr$7A0Dqq_eWtg zB3|clX^s=NnMq~shj!w}$Yze+X*D3SYHCT_9@3KUt`hPmP1QPI__mH}Gm^boI%O5) zSS<#XJ_Z#kG!`cmAb1hdqFm)B(&_R>pBSuU!qM6`_w+ zDqN_sStE3sZ?$p(5J0I|LtK=zPrvM9Z|bZcoL0drsK8ja|pCzecg&c%)3%?xgv5rS!A+FUQbdbe*` zQc{x6W~Q{S2d#8dxVrB_PjfCRDq7?8H~igo{wZue_yt4|V3U-QHoupCA&{~UZUC1H z-0hdQbwk^Ali(&yFS^1&AUBVDm7_p2`2aFtdqvf!-BDuXw#zNw0bmv4I~|i`ARHVM z0igTtZ*^0p$DN~RKTruRRaNm4sT#|Lx<6B_6ObW$Yon~(00uIP=GyNi4zkq? zSQyuhjd!BqDGq;C-+!29CDD-4fx2bAxDCU8vQHo8u)P+0j9xG<@lonA4& zr~mLqGE?h?R@rScS9oDj5g`EqIaG`slY96J@Z!%PFzqm*&55dK{OiH=cDtTkMzaT%GQMR_4VOs zyPtrVDMHi3aVUigSgh@BfRBWVl$L-IZj*z*yF8eyvUvNTo+Hn9+Vc)Xc++D!l3BN3 z$H&K&i#2Y5;dbBRSqkEzS^?_)Fj?ZMsG>sk`yex}Fu4mLs?0~7NBSK3-gJr6boor9 z&I9(CLc1Dey$>ri-bW_6|VI)R8(-2;kLhd<<+Ag z`}rK=e};wWn$kDN{%JIj7icg8R0L#D7LTr~D=SC+2DUXpmLZ7p)$xGgnKZ|O{aV;_ zq5*8&sWMrk3Bb7)zQm!QueMr3L|3T&^0y= zbacti%{`5ZLJxdB!Z6ewUqeWLFZ^1D)?atP&<-FsDy-e3qX_9;Cn)u_dwaTAU)HZ>)R z;K_{gu0fJMe%zn{ z)k!xRAhUIU z?_Q+TU-r9uZRg;ia>m@Xk^c~x3m}s7U>Ev$kUa|47F)8c23T?ok}+v2%efk%o1j{5 zI5{!V@o!gl_x9|#Q~A?Na&x=P+4HiqsbVEcrg%6x#b^cmbu;6X^i|{7-~Z#=3KCZp z6|6-{g`>tY-7}0&hd>zSEjct%N7ha_3BnH#E#nLTD(->f>h_b#>+kK|+1>^M6o5_) zeD(|9PaxaI<_936$(oR*mhxI&sEFRYs*jB}@D9Iob15-{ zSUEV(J|pgs-2=c10+K7B%WP1EawtY`2XKFk-GEL)sBKe}Ajmd-h%b=-*&5 z8v0#Qvc)-MT8Uf|*jlzfUu&0~ltf8_j3J1OjJ*A0Y{i=M7rBC^rR98Q1Pn=30f#w; zciyP+8+r{~#j^s1UmzC-@`PRCmHN23AW-Au)12l3^aHqAq_`hMDIlSzrIlu#Y7%Eq zsb=Bn>FMHfvpxLjh7=0LSium)=L`-G&g?=KBmV)gyKu;xPQpAOkA}l((#aems@~Ct zr7FO67LM;g@0b&%Vq;^o@TQoxaQ&(2=>d`mK^8f84Fcg$=_?F~$Q!TH2BGpIh{(}$ zDZ}ueBiG+?7^i>F`enwO$f5$L_E7xB_@<3ANJT6+^Q3)n}B4Dn|B6}>n~TJU{eCat}B=UWH+x+j5=0A zBLTOo6Mkt<6!B(b!Qej5rJT}|FCzOsbo3Ks9HzfaPZL*#GP<*>Ivt~(k(Dp>B1lhA zlr#K7HK;g{=@8dn-2TJ|Nko}L!jT%1%WIDTa!rBwnc%N?KIt=&_}{YABBZ10kAaD7 z(@T#CX%XAj4JInlc+D3RtSbuGX@#y z$;qb4ALDf8@%uV90%W=4-`lBHGR*4)vAoBH3m;FPhJCnR2=-J}*Ws(p_tL%s?*KpM z7I(?o13pOnCrKba>M_$6mtLf%WI_(*y;Xn%^q7<&D&3)Ix+w`1@Ew~*h1UmdpJ(i` zn_oiL7#m)8eNvB~Iz&9>c)B)K_b3m+umzNY5d#~}W`5@g5&|Szm8yfy$(es%;Nu*e z#LLPjI|CxGl1~i%{qhu^m)Cj;W9377et0)S2A&_?}N+u2Z z(z(|C17t;l{27B=fv}9IsIzc{eEchMe`TyDb=~v|-A0H)g^nfRy!F4ScIiiAZ<)Or zU_!iuMQ>ddh}cPA*;pe@tODzz~`i7vei{ozl;a88{-9_p`_|cVL6v#PETrd5Qex6>=RZe^ywL^0S zyC-K{#9lywpDJ?>3xR9Lto3bhe2+Me+c%Bhvf3F;uLRS!c@}Yy$?G{G7}5=LKNX5= zX^Rpt#xRei)~F)iE00#2pd-A3m)Umxx|nLhf=F79HTy&FNEDId_Wh9ZuG{CwY@zSb z^p_pib?g`66J&xtXTAr3dW(*9&VoqE2-{YQlf8!$TynW<==)sJ8{ystgzDn@BNk5F zNHm7(`f99u4>PsqaA&*<<{PBKa}1Z4MZ`lv_;*4Obdo+|dG~I3u^4Kb^pHUZisu{# zj*^xe1$d^FGDqU5E6`Q<+UJ!`CsKv`$8v%fBL%W9Q<3N=k;1<0o8*2heymvkAlOrQ zS$tICkp>7Vsn?)o+GPR0OGliM`|_bPSaj?VDa-^w`Tk27j!I#w1`DzOH7ZaMFP5Sp zJS+<%(@ii>lnK#fOPUFMAaoN%>##d3+l%@c8A1S zDx+z$*~02s?rYIp@ePio(-OALp~ylCl+TEze!f;bMa{&1}iC>*YxgDpa=^@Cnwnz{CQN}H^ zWW!PTB_D(GcC|*W`HUsv!9n!MQB-z5PbE9pZCvtAAIZCUe;yub!>zt1m}K2uU}V2a~fCOGd*WHC_D?(WTtl#5)8- z5X|_?_>>Ep2Q`izGa@SIy?rk@y7*DafDN|-cpnmqRc4cm8Ea*>W>=ls=lCs9s zi=z3vJqAAX6RPy)i%V}$MGuVA50 zf8WS%vk*Sr!e1dOLz+i9`7$i#+-%OQ&X->>Fg$ilHddKR`8|zG%sc+~9)}V|s<@qq zr1(mB{CzG+XHtViZz7Pfb{ChGpEis z$w>txG`Lmo*N1;lJH4SFBnVeERVtH6zBTDpjj!^&tjoGuJRj4}9$rt6C5uYUljM<& zH;n2d-Y>#wT1Kg*)Go%)m=?CZkn(ekLDeaczxg_2#~|Aq?CM8Wdpj00kYn18N{ArX z-rOQst9C7n=*4(jQbqAWA!naTgXZ2*r46fh65U{+Zc@WquK#`3(;J8otep3NaxQNi zlX`2}9bXkk>R*v&w@UU4*i?$IxeDb!yl_77pIv(iTukewI~Ue2pT_*ou(nR`ehlh< zLz->r+;JzU*yj~I^pow2UCUW``4QaJ$5IWCw4pL7i%6z@*>S^sm0pX~04RfVa_#Z= z^F(Omck5-k0Eg!8MWXY~Ud6pIt`G%(_+K%NowSCN2gr!I(*}Jp!~-gpF+GT+m)6IG zMoV)tg>p3YU*bLEx+#D*UlOEA%MR+xQ#o7{Mp zza)(4!kZ<<5XIe=@ig^S^61wER~FH4o$2^99QvaN(Z;DWt}nNw=fjeK?HZLz;_& zN@32J-Gt$qcwig*S|G+L^N0pAt4HcT{pDzgj(aUd9_U;FwF4a2|jB6S^wry7pj{+lvbUsE4yDt z7oVqp;E3*?weec?ns#uA+5f@L629pBBj>cEua5Cm`(OVJ({TirAs~Eon?4qxYZ?#t z<=Zq&#bVog(r#uA+DiG&2Ueb3R;^AbGk&%gz~WBV{-G`p-Slqf-zw|kI~2PPIq;A+ zkXU$J#jap@_g62m+(deO*@?k&o`pQ$(rdw~Ay?m^Ny8zE-=lW6V~XSLn8Y@5wLQ^# zL>n}6>&2WU`<6f|pKPbZ-`#OPx#hHTc|oy+wKp7|Jx;{?SJUiQ90zHo_b8Po8WywW zewX=6lbFZ6EF%(#syX60a?6TtQ&jI?bHB@o;H!$oKa&XK+AThFFo9x(V;EjrWyGqn zkdpTZFA_h#`R1{Ym!00?yTfuJw7bz(kz#{KUS_q+QfyJ;`6*J&b9||R&TCZ7!!=2v zNh$qt?s4;VQx+|%>iL{Y>)+C*#w1JLb-Vk)#f!M{+Y%oN6jA{xy89Xn1v#B!`6V3W z4_5d2HZ|(HU%ke)ZD~u`_0_Y3^UAj>5gLt%pAt$4z2=tgoAJtl=R_netTf4^MvkF& zSeh`x5H$4|+US0wy@!9yZLa-wzW=Ru6Vu~`X8(7LGK>6V3}(p;(9fEs*LT8ypf2=A z{DUyS!aqAgORt$l@w#3h#Z5*7lci(eby|$y;$M4D>#(AdLU~8ji5;|hUfD{!u@O@J z`4TI*7fL1SK6I9RDZBvz-iy0mBPR_5NFb5JqAcRgG|P2X@jEDnKSmuIi9t-y;Q^PU zrrY3DQxaT$Kmd=oU!^9H;vCXsj8(*driEMTbhv!A^t0Q`>(>JVm^XvDu!4cKn046~ z;~6Dsj&tpw_?za_)IL7xAkM7pHx@T;zNJe?w1Zp(d{?RqPC51+`}2dWHVNZ2Xo`p} zl%z+P-s)k$?lNg_)@=F&7ge;m3DeKt3NCMGN)?gR$&q*kkvg(a5*vS|@x1+hS}%m~ zv-KEJIeWwLWLyvg=SKAk2Nj8RBV~j)C+)Fxa`BbJ)L!^vC0)A4l-8N6Pb-0q=A707 z6|NS>X3d>j6T!x@zyU($&=2A=_K~KH&Mewv@kq?g+kf8=!Xn~}m-Zrp>bFUVq^3&D zxv(j~!F;wLhu-&(o{bmJ=DRg7*+kOUxHJth?-e%6LC6BAK63ju1vJl+O3bvky19jq zHa8c@MtHPMl8=qr&#J;G*3{k>#wLcz>RI zQP-F(EpyASk&J@S+B@6dUp7zr~Ke~om6qa2~!Zr_EedzY?8r!dlB z_fB@&N++zP5u2Bsphd0df6Nin$EM-KD|K2X-?#2?spM`B5y=t$6*Jl(Hg~+-U4y;y zHhdAZlwp=fRF&MT!7ySCrkZX2J@lWN9#JMj)J3rx{$)yN46Q@fe7_3eIoCEiiDUMA z;PVXWGvkCEU4g{ffNVf8ul>*!(K4EzCj(q%DYvCX`ZZphxw$)jY0? z_zrAfFmzN`;v(jKp%~>tO(o8qivH#oDwMS0y)Y%dXdf^{VAM{Iu4Z4ff8uV_z=c;b zma>;wkTF_v#(vjfGud?gdCd4Ajbk-|hv;b>0L;J9s&+D^{QS!f9bwsNVjx;0ICgHH zO%u9!@c_l>qm9-7pPkm<{7pD=91m}i1-So557zW}G3M9%5if`k7g&82Hej;NN)2GHv zBwchjYf=b!ovzaD;gs0U!xy<6$OQ}fC1jzJ%dV7vZW!cV<2+X5+hujct57_F-OmPM z#`x1W&hJ(LA`UqG&XLlX-eGpnX+l7H#CiAktsRsP%go*c8p%PZbbABz@j( z?2L@}>m_*2C+l!4ALmVDF@6}kX|QQ^`=@0^7!Ks>!FndBO%oiuZxda&upK958Ep%# zQDr%$E(i35)=>U42+89?6vNHc$jB177OYKrjFVSUHEnpZc^^Zqh$*Pj=C08|b_l26 zZbkKw9k&EY01H>e=5rlrdW6+r7cu?1cz5BVlVV52gTmgS$ypLC792;$lSNq!7Bz5c z83}3F*Aj(C=BsWBqMjVCrgP@LtYd`oCh(u7osW$wqZ58w>RTgznwPhYC7mOWDp2X= zQab}5kDVORhvKal>ec6L5mN@|i;ikjZ|w|eE8Y~e;h*;7UYgA+2qIcc|FnRk4B9sj zyU|o8#tVl914U`r>$w@?C3?5QXJ}!Ly zf4+8_`#HL`{>X4!P-73a~6Q0PX3L%ARmTNlN33USGA2@J&tjPnSxZG%FtYg zEKQ8FMR*;Br>!6J)8|r;>sUL3Urr%$qXlDhFvAFk-$k111ql8G_*Pku5TPA1@YC)J z`;&bVMEookE){ERt1$mURlI6RUZM@v{ z4tSifSkdv5coH(aNzfX>K^kZ073^VaAE*CT3WahFF?qrX!{ovU!7y{2APGfjNY_{E z;auWFjQl|k&lqibW4Af`qI{ZtSI<*9iFGItxo=pwipO=k;?cg~ zTPo9*mZW&FkYgpOTYTYD1k+bc89^_q<60x*(%C=qW{d0-(gE-d8x^PNYsoTuAff_Y z<*7Ftp1{pPc}+@SL7FfCaOL~kaDh>$6p8`lFq5pDbzaS+Ph@v)kD2pXN0d2YWgUCh zyA)Y`+4mnT{KI4YxeiaOhPw=!$VA1gs3PBey{+j1Lu=C;4#JW(vy$-Pv6#u> z{rLD7!;aA@yBKak#P_%-qDGB8?=nyqM!CGnaYYB?O`)tT42zogHEZvw>*q(%z9)NU&jlKbU8;0v!E>zis{4{rHAGS?q^`3g zd$o5^TIF3^eTmzIVZP4~8Pw${7Eo*AIs|&t8CgB;a4FRf#Ob*gqgl~t%&+Y$Xz|#M zI=UFsf@4#PfGGs(wzlb=<0H%{8u1wMh1ooD)n3{ik`M=Uzf|M1@}CGYqv`qpoXMLh zl}+m>kNo6En}{58%i&{=3%m;d$7#N4wt1Q_Y^nACZHTGXsd3i+07u}2bXCr_Ij!r)k)WBB$xA~r2`&{XTw zU`(hSnqSWknphM`L_9IZe@@9-HPA_0hu_JZwO6eWPljza)W~v(=>w?+pO9{5(N{XN zpRq`wkplX|g@IfJ3qKTrl_!C+!t)-58Z^yZW)N{J-jaFT0;48(6-UGBHCU7_IBuOX8_Xx>(H;3v?i})h{d&Q^$vIr=#&)qS-$ffwzH{mHO_xPK&|~c~2TVZ# z)vE4=gG=~DTK|CfJDcxa^C8cp@QHt3wdNZZQnzCHCwEKXeXS4jH+%4sS_~?uA}jI+ zQcTxD3v%sC*Q%RFrd{q@HA`mY0lp}t&AmzO7-ds>A*Li& zj1=u@hc3nhqypk}u8lgqAb=@h)fZkU)K}sD!zx%a9UCFb;d${`4_~M!r^>vsmS~XW zp1KCZk*ayaX7TH!a3`2zVDtAW3)=}#GPe(Z68xKd`EOndVA2m!ZV^eVlV5tJs9`yj z_~V1<4d&pNr;Cq|V9Xvj#pLmX*dhxhkn_+0=O9~h{tIeXe>)HLuHK*oo+$b%B9T+&L+PjdABoOU#obOZ!IMiotSzXdUs)9Tp$n5~dz@}d? z-E(f&wLo@`%SY87&wY%bwrcLK`k)oPbC4QfDxutm=Lj+a<*VgS2iq=lCTtS=IJ@J` zIm10M)F6xax6|zGT5c-J&cOs^ZpdO+KJN5Q`MWxDx+#Y0gZs!Ha0)4uTmr7Su6P1u ze-aNS@W~c~)zEE+aW^lm5%F%@4Se0j$(MJ;dT!YC0ns+n zjS+Rl5|jP|tHTS@j$vW;D~}BtB(N4ytZScwW)0*NwR@h@J6^)Q^y50@Q+_g_PP9LS z6kYp)tQWCZx_Ak;J~~1->wfXyqs*eepu--Mix+8y&2-yA_2%sbcMBg`JYISY6eQ$~ z96F+d0BsO+1~zu3bYP~!Z}X=0GOZLv7Z2yj=A!?T{C~5(Et&<;(XVRipk!x{gp-VEoyvoT{46W#kZ;`71 z;q|kv6#kV@qj~eAC~J0$bK7C$=VmC>@{sr1wG~sa=e6p_mhs?G{fo;Q1pD9iKz`RM z$Zkg)4=S2CcDe&0QshD~r%i=VbO9H#wb)bmb|8m~e6)&q^Jy!C1M_zYhfj6tUk3}t z;SD7!yf`go#$A{v+jEWa%h*ptC1?(G#Ec7u^o)}0PT6l3NICNg&gwy0PC&)eb3Z)% zRx`fB{r2i!*i=bAV@x^!yv;GN`wkyuCDyHR2;G4d&0qi3KBz7Sv61r?F=Z zPAMMBl^#P&`zW`6tCa=fS+s}#R0PE~_rFH+$}(6gDewDcM5{5b^zd!bhf89?)MD4v zf(EaN05XYntTA)zGEvj1yszn$gB?%pAmQIQ7U_^fS~zr+q*zURN!M{vHQraP-hfwr zyktbgqpjSywHrYg&E)fRU{TW-S){KLqHy9n(MFv82Jk}?3>mD4k8BfnU#uR6=_v4( z1mov%JS_=GlW)VVaJ7)_$k?tI;wwEbk9<0r{Tn|}e4Q4;S|{6LSL91qXX>N+lX15V z0FYl7t7OK5@U7HJ&MWOoCq97vVE(}hU+4BS0t_kie&%n}>a|zao5q;~qHEXj z#ieeIGLIOo3MYD#=`$R4w~5sb#l?)hIWu~bn~96bUU=Q``o^;nbZ&Iwi~4J1nik=- zeJi!a>nOUDU(8nAMMkWi=MgK1UcZ=@A07AdoE(S=GoT23js zdqwqs47?^V#Tll#hsBm0C|4NGjYVp6)qJ;y-WS zZ+h^gdWe4j)oIjfS(0w`)~aQaFkjK5Lo;%t3l+Ux>#gx-UqEzr>v~fn2q0g3o)>}r z&m?n(_?PE$NHM%zv0|+p>BheaA)YXtCgLX82@U_!;^rgIgdXJe|7JC*|KH7_^Ta|7 zXn(DN23j2@skHG{02wUMLZU|i%zh6=;b|B#d^iCYbL+;lDAejJHl1X(6l>N~)_@XB z2wD8^zWAW}N>ES)inx420B25O_#exB(m}zl6?T3}i5DnWrmT6ci_E+LOExJe5F&+& zV4;y?V`HUhI0A=(9$aYL*L;`hmfczPuWO~9VcZ%SP>lJ|u0 zh+t_6q(wz)h~T3P1u{l9=&tu@Vg;9X$~P<$F;El@dC!~(8hAnVF%m4%fM6!Cb9skK z{*QAfQjY{5yJ(T!Pt*|q0cW9+)R?gOCnXK9fb4%9$o+!&Q%1Qm>?1h!jb%d+!uATA z{Tq0Nl=9b#Tb!hA3H(xUD!0z$%fn0Q-C(?0aE`KzwQvD^|Hqblbf61jD#8j!t1ZVuPE{>;FBJMjDFzl zy|aw28v+78&A(qnSvBel1Oy5MS&9ENyt7Z&y!>(Y$lqNY)UUepFej&~LD!S(n+thA zQne#xNQ#MM@M(u=nAm5wq9%V5Em1BhQan+`6N>c zlo5hUY*OS>l9O?9aNJH7s-p;4a|L~_mO)k%HQHpG5^sY|zn9qj_?xf6m?z|ikB8T2 z()+WljNVFn#6%9>Tp?Bv9v*%;TdJ(1lMXt0r9vVpEq%UJXEs}+$iTobQ4^)fn}C>q zug;h<7)zSPZZQITy2~+4`_4FyXzJ{Iu{)dud>*xc6l^ff+39{X6Z(Mwzxl0X_7H-~ zwn4imGdp{|1P^`c3M-h9!*VQFh*%ppSg^pxcYiFy?O?*gQ_|>f1S$f}Vx8F_zZc~6 zRBuhqyWC*GMD8=Klc2&veq$+6Wzfpb&OUSXXItU$6oq%D zF9JuqO6OY?is)Ze+NN=S)K(RA7D zk##11ganwi&T>4H%Vx&>33{efWn`3+Te}&7L-%qst2|MIBx=K9GxJL_3LkHIbPKrD zjc=z^(SHWW#n_Un>=_D7_-;IqWl*W#9b}?H%_t=izwhGW0`IdHZ#zChvC3kNA-PDP zKkV_A%9}ZR$RbRyTFM={_@m;iZ)a|ajbpS9$Z|Y5I5_C#VK4#@WNc&opFJ?U{ZRzd zlt?Nv)|u#NXw0X4pLr8TV^2@*fBfA%)kDBVN|4z-J|0=aCL=SV+OJCfdAqKp+sMs<@mnx|L*JV5R>^BIW-M4GkSnXDhlG z0cKpvnv+N(Ol9FC>f0EpUSW4PHv!+9GMp2$(!{mzA4y0^aBzMIGXztK&brIU$e2`t zzT>n;Po3P_Hm)o;A~>TH5D-AT`%;kQL`CHcTwe}XQc^;Kw@Cq*TSSl+%5~TPv*YM# zwNfcZhQe+m(g*x_(`Z*uq$>Bmddtroz8I8l!1MV&mm)L1tmh zc&lmB{YG>c8y_E^gyghrCURfmZK;_hi$EvrZF7sqBeNHNcUG3ZNh!wX@I)etCZ~-q zmC>LQ+51yS&);TC{NqZ5WC?V^CzL0NpWA<|Ioa22$B+ZS+f7UxnF_Q;(=tZH?B>V} zH4=c&5DxwM6W?gdjl4GJ!J0<#5E6K{9K(?5{vUiu^>g!JlL+!zRx5qVRgpr9a& z$H`Me6`kQ-BuCNoP(uy^0%e~yCrW57K0nI@b2tr`XqA4mqY17b-}OX#yNHw(xWV6c z@_MIt!r#n_Z#=Y-MX-ASe6C-*`mCfbCit3EOCF)rb#qx;hK?QgGZ>1Eu$ha6PExny zOw$;}M@`+gW#JgRK|myw&cn|X4qsc>w$Lpd=kXM1(m}9t0nYmfoW}#U$wK%e^a%_G zXY1gs%Gm}Vo}ZsDy&@1=BXV)0RkR+&AI-PnH=Uf5oIXJ*at@~2{{x!b0?rg4oBE9K z)p-&*q3qssH+2p{l_gE!cY~yIvr-!z^!mdt*U^xFU$_bi@5QOxX#{FN&MOH776_qg zcGv-M^z^s9qy75;Nla39TGEWTE=&3&5^pHp0jo4ZaDCOUx8bp_z&vbbfg-Q)-krm? zT|0h+@%;JW%*g^ zPIo&l-`uSSJz)^ByNskQ)@(R?8X}C8ZU6p`tBBr%wFdvCuD{7G%(p9>9B&ReQ2f?f~EVL^W7a+C9>;-ljP^DMG9sKZ1~qi*67l zRyu28RoU4g7}ZF;SwbLH4ZA%f zoTv~jcR7LPU=5SF5B#+;%Nxn1|$)`0s8r4z$ms&>i ze4Eo++qf3j7fcZhlJlWyv$U6X)5%Q)oE0_6Q*CzbBN zX0P?8OV@4|7_)x0C4|Ru>G#R1;ZkXn&oyeaoiEb` zNjQ&;K1Uf;j}_;6ljt^0fsjNo$K1yisd+FXbn zU0t=?zp+_cKg%2?{)|l&vwuPeipvx1Un^59hk!f14j`S4#N4niPL4%VXe3XCv`IFz zsScysHPa`zrvp-G#5x}^6=`Q@Hnbd9yTnUpGaQtalpee`z6ITpmT7_pcxJmRG(kVj zDl_TA;>cDzZoQye`_Fh(GUe&ZUsS$75v^BrWm3yu5>r_@)vDB^Yf+xpER2;gX zx~E!rYg-$>nxavc0^EOQPQdG2>7&R*YmAX?qvdnoa2kug1D=wS5+O%mPi+(dx5Lbm zDk~8&fr!~ccBOXhYHPPz`Lpfg80etT{@n9!9d<$4+nobL<1uG7eTPoQy?V7Rc{;A& z?C`w)B`K#`*yFKkdBAK?S>egFUdKR3v2_#I!Z$H;_N)c8v8+kIJhq?1q{kcd72f4> zGKXHHldw#M9kD-=>GE<@XBKvMdosI9=n+D7%f9v((bUv*W(uq5U?S^$>2OMt*6ihd zs2Hd;S0w0i__wMhnyRH~u5cFY><+!^r^3K&W2fsazoT7}I+MW-2M<4Pgv59zHw0Y% zLu_l*QKOOzr_?_qAz>?C``K?&1ol>9iJTN$tR#?Yjs4%TWDtlYag5YXw65Evv?M`8 z>O*3By8A8BU_~FP&U^ z`U@bU`uby^Ev^RKy2B4?=>jI>S$MzWzbC6?yS(o6sMPlMPB$*l4GfGlkoUW}cj-p_ z!NJb4%#0n;=Xq!u$6BI50v-Ok-=$R<6WQgwy?Z3`veKWLot@~qd+4$%)Y0yFZZli4 z_wL+l)Qii&z@Wx3&`mYy@pL&NsniSJc?WFN(}4~6-QecMw}-%pSHAZbSYCgEYvU$s zMOdp0D`_buil)b2pie()KV?-h?TyTzlqlt@{Ly}PeEBZo)ulTs3P8Q~bf2?FKPQbF zNk}SpwSFv#aD&pB-m7n${ZUKs8lxwRVfH46)vsU1GI-$U-JZDXQ?hpGWWqfH;@cMq zML2_TjiB=Td`V*Joj(P=q$|zLDzHfWr`{sn+2>{Wr%AxT)!uuTKyFgM~uVgICfabT5xa1+WYETzD3lRg5RP!)R&hL_U`lv zGPH{KW7eFmrF8`UkD(fj4jVNNPo55+-y)40U*NREwu+=%$pqXcnq!E$P*G5rzLI`S z`TpZw7{+s%Rh*Z|VM2O(pS}O%P5HESgZ(}e(dWe~03V+AI+X+sON51BW+-sm4K%cS zoeKp(vzM<9Cf3BmB)%|5P3CnEsWC3UhT)=sHeTB{?#n8mKB=&zX`|H0Ah*IdDckD; zJKHuUUP^-Q<4;euIReA`jrCJ+MQPrE#^tfNkHD>ZhN00q^^bGte>LQ*w}3*Sk%!bdC2zTAvrK zkWS|5c3Aei$SGrHj{_Cf>p(hEfW_U3un4-|@ZME|G)M74mI@!jT!MnAgTZCP(gVG^43b8<%OiwJ|F6hf_6c z1nRUuLo~Ll^~FrL<313O3%d86S~VN6oKM4k4C4rM==&|!Yc)iWahmHWjHyE$0o3v2 zIiWzi|0(3T{rpe!2J9d!o}>-xUw^3g|{%8%Z58Py(m_G^_Jv^r!hfCGN1*}%KVCyjrHFI#{4IFTE7{PNc? zB>oA5OzGju4!UHkS!ut~mhhf7-Aub$x83EM+cV7RU<|b!cWeO&>@g%S!&8)4mY47P zBQP^umGXo~N#7b)S_1KLs4EQx5fNmiME>#8vhSe|r!*Y_0AjNLK|}(e&yY1gd!#mZ zh&OCs(X(dw?~kwyglSJc>A0LPA5q6r|NKEA@7i!!zS1l&FAu?tk#f75JMwDlvN+Sx z^n@1ncfWMr8AH526^V)dxx2Pptkq7tTl%bB%dFpZTrcVQ-F5Hz-R(I~eh~RL(fGy5 zkeD-MO5p4E=ZzH2(X5Nytz_@3lr4Hli73&Z(9!XKj6ec@jSIvWO=aE zdaWApR^oT}lUwnano{l~9uL1cP3bSx=#Onc@ET-pZS#w%uC{im2u;P0AdA`+T-fCHjR#6Ozz&aB@bqI-wONBE0;=9)wUq_E6nMmM_ z)6^z_J~Ch)0Q}tW+T6SkdGk)=u@Q(#Jz=P30yz#J$l0TbN%2+cV6pPbLDwP+i-Uud z7ASANt9}ZDHJTBx${5Sc*>m7ghQv=?gNgaxw_6h;T(R?&D2TDSI6M;*Tjn0Vr0U;9p``kgD(Br-8~a{G0k&W zrm9*MZ~_6~?)`F$}Dg^>hrF#EeBt`_KpW( zZ-F>gYvC?~91#^qj>Ts=De}Y=2eUhXBoqzmN`-~Q_x1hC3w-gonzON;fG>3f3P;PQ z)kc#DLAQ(Hr+l8fhjrk?-xRg_W0a!q^&c&&U;-z%kCU_t0A$(<;1&`Jc>cw3Iw`PP z;{V{mRC=Cb!JaXooNmhf&^tOBwfZqBrI_UIVYhTL*X2%DNtW>T$O`Nq(zi_oJG|Uc z9#s5|br2wI!|3#gAtnR(o`G@w>h1zTH<{2@1=`t=VPl=BX%2Swftb8s3)WYLTP|i) z<4sFApICI8I;3)bratMUYN2%aKO}aZpPYyz1Cx~1{32{}ML>Q__{Cjfw~FuDyOwj| zp25G_K~Ds5za$^2b$emwhCqJu_V#4iXY-irWPIQcUSF?tTq_7o_@%5=JaT-{7H82_ zsr2j0%Q#e(-oI6`da-8hYhDht-`vsb;3~x~{ah-tP^(67R0$M6Y(876Xc6~VrhT{3 zTve;yj^9o**iNy38{Osntz8`U=;6>&^l-gjrQhklR)up{6T+_Sz%TmkIN9cu#r8w}TFVGAm09T{8LEo0|+b zY~G>>WJ=4T0C#>E@Q~@4F+x!Pn^322c!HlQ4)PlySb$#xSpRl*+xYs?CYs13S0p3? zi`B5pbf+w(a*^9+eZ^G?R)!^Bmx#h^lt?@NlGALz_HuuT14#wIgQxYzgmM9|8x;Ia zJgk*)!oEFlhnDh}>t6iN+mp}`jgg_DDjl|P%zBGesC?SSbL8<{9qb@4rd+p3Dpk$r z^nSS3YRr^qbEvg6Y$u6p77uQ!P@FvF6|Z^HoG=}ePhlayK(mD*~#yLOxew%KhZ?!-O^sG z*OlDrq>OGGrjZU5+8I_!UY$aF> zLX@D%Imu=?C&UMCdL!o{q%kYTYnX`J*2 z_6}pY&QY%T>LF^W+Y=J&E7Tyrb<%FzueM4k9!vJz{3IQaE_encQC9@UFwm1SD{Jjy zV}0dMfRL>IIc%;VC--tb(pcRMXB800TIRLg{e8FL$3yNkr6#PEC8Iccxu!F*k>@oD zINIf0Oj;hUb|Kf@i~jD8N2TyM<)zDm2}IbVV1&;|&i$3mZg}w3-g1$!cP;UGQdm z?g^_88DGTTG84a&jwKsKrEd_l?XTcUeM(w_33NoMV8Mhmaqdo7`8k&j3 z?2;Og;NrGe?C6D_SH8hN_YA0XTfCc@G2;5r-``J&`W7H!5AJM-_;_jyWSDGc`ql-P zVk^EZioo|}^yZ4y2QB3BIYjWEphu*50b5C1MbT2Z5WJ@tVvaT+YwLT=>**;4TxbR6&Q?ua?_HwHWX z_EtoU>P)AqoVs!aZ|B()0UU1}AmsK?Z){I)aRh@r+vK&oLpXm2OPkN>0x$@PNx6>vl!K`S5-P&X?zPk z&(gnj6&zh#W(uj+D|W4OAmMkvr}yj5?iQJqkV8J2>LMkk$Q2CGtDGM(*9u#4TcucS zaO~%-95t`UHz}Y~$_<2xNedq@ubqk(t39}!8;!w;<}09qYfJ!si6NS=Bo*@fjz&%{ z95@#Evs5WhR>60clEVuc-Q4bO30bUCg$Ik{q5B@Yw(0TwzmcpvFjv!3gfX` zF_+lY0i6Me<5Nf^Nyd(yXMaVbR$;G+rC%!Tp(zVnVv>5x5uNQ^nXrXvY&N=w?P4bT z@H!L5>&M%=XmqEI)=^jrpZ_6dTDCF1ke~mMlv7ANu&3F)prpJ*FilR!DxYUI(OBSU_zr0O5Rc=pXoh|ieJ3Fky851v1xko!#_Lor% z01lqaYrChz($m>$S8LuszG6V|HFwl-DQy1_G+T_v!4Gaw*JJ9*xQ_?BtOdq+*%9xh} zDM+O@lY=E&fZyJ6BlwSt#O_i`rH|#C8l$=fTz=Q+GlRXj^zY22*ZI58XsYW91MXIlS}R{N!Ge4$)U_zV8kdxyOM^0S?@ z`MA(QcwW}026i4|*Ow}G%3D{b4Va+)+~sq;w=)AR<+v0^htu?KgKDlR|kx#PL18@xcog} zsY&tkH_<;0qnQdN;?l9`hl_)rDFD?qIW{sjqQ;mqVn(M_zuGF!3t8))To1aU9;kX9 zgXwy=o<+(@q^PE*CafmRWw#PyBfT42O%-C$_H4W}1&o-RZFPcv4K0l6O}NrNE6A(H zLT>_sx?bB9FGtCqF_&v(xgMG_R?-aw?Ez29h}tavG4$uF6DNCe>*|a8p7vJ(Rglz};W(|MK4j+A9o??R=v zSMN%Skl&qI^K++Ft@nD%NvHe!_tb8(+~4?iz8rxL4ko0T0YdDWG%+EA&wQz@I%`3*dOKJm zS3ofhC<^?aS^%GZ^m21*8d{EC%yDY!{q)DLtLSQQ*`!{=c~$`c0eJv4FY$8HmjW(CfqkbJgnYdh?9-UE71% z8pBGvCp$YQJ0O#@4DV%&X`A4>?N4Hz!3)mYhUDGBhAO zHlY>P=;-8Nm7^4Nb1zGqM!onWEUsk>VCO;y3IqdGqKSE&I>Tc=jPR*DpPa*=9u_S; zX_qNNtT{6c7JsvuEu>~^D~t`Uri^KN7K(pIm_9o8UCuHX=Q*gIZ|4(`B~&&wZ5a>q zi79Du6Go=o8IaH$NU)6=nBUVJjLh4poEEY4xe$TdM_X)xUlViL$2Vv4W%hnPJ<9lW zErx2mTcB3%eV~9F(rELUX&o`jLKi?-%Lr^V%YTDnzhj~xoqPC&p#kiR>NJ7tzxUoS zbUr_p$efA16Yph%`C4rr>R;FbB+K9U+^_oVW%6|8Da9-2UEk&Y)Tl6TRn|(q3JQ9* zXu7P;X%~4ZlTH~y8Zl(WM6S?4H-QUeD3qj^D%)us90`2|lHka!|Cn5NzYueXk?i&K zkDdyO_>u5>FR_aXezous0ys+kF^5maH=~K;`mRjJhMj;3XfpbF13kG4{Uoj|M!oTGJ8081k5s7u7TVI%$2-8ujykGaR+p?zC;H6L*gw;;J0 zDgAW7&u_q|(u#ICUs6&20#GNRJ#RLLldyoxai`-slaX~7S&>xH z9{1K#5-W&4gX_gd7qt{LFsaNIv<_Cyi*=LX;v_l)*ya{}L09g00yGg3$y-~^WkFg1 zr};dvuT^dM0O?9A2D8->%xiC@X7Nb{m&^LANE5@!$h=+q%latw*=Tcfo4a1!v0~|N zo`6@-ePHuS?YkaVfP-N5@~vG?bD*3)x&bp#gv2Yq#i$3L^_6p+Mwqc@pp)}0)G9kc zmx*~CGm7IjnayDX%%?D5c0~Md(sh5lEL01CwbqrTW4;i}`}U4(BcmNJTD|UD^*W#7 zG&I)@(W=!Mc@wUHo^Pp0oc4dtwiU{?9VQdTP(b&hFk~(1-%TG zCCX2;mSYC(wtPIp;GIF`f!I6%W2e6k(!1z{eUQX`8>X#8kK1H3YrFBHJ?g`d zQsJ^g=djw5OFGi&@PxiT=Y`%U5n}O$#hlA_DY$cjl-Ij#RlsoLcqSr1t8_MoR3t&* z?GE!q$hg}<(SpO0|Mf!kU3;g1=@Omf##hg+?PB9JmIKFf!_OGAVFI4k1j4`JK;7-2 zt5T6M#de^o6+AE$A1}v(1bJ`aD{|%gbSW*={bWL^{#~gwj|V;&D&jwwiXX5=m1Ps< zoSJ7MKV|E&5y+G0&=dsk^rDL;_j-aFdUE9$r!t*P)l}Ek#>Mb21+r>ZY8)*UtX%@E zV=3xe@!h4%5BrlJ?8ru#O#rM{xlnb0Kl85y>6$C-*JZM^zeA_Q<+N_^eE+A-!`3ZN z2p|(u9pHZV7pl#Uh9VKjKn24zkBcZqzsX^v(JxMi39=09MT9*$p9JlL`5^a45qWVR z$d@**grs6g)@#(Yp;s=On_ED2-7;@)!k9M1ezl=SDQ6`$PxC~JIV{e1me%)TYRk4r zS`{}XBgO2`T~hi-%TB`mvcnGq=Q^lqrnv!kIn7H**gHEof%+LwJq>J1$&hX zn3+={sl(>_+*JuO)DKU2mOjKQRSbS7W$X^{ZpNQLa;ly;;&fmGHxg=tUoNshTp13E z3R_Q>d2D75p=ScngOMgqAba2zF>rMqq3iwh=`ETy7Cs|(1W?88+-=5-Gse)wM?o^= z_cDk0`Fh_Rt=XNN*J5u=OB$2h9<}7IiP$ex$x2B{Y25T%bXS`ngaQd{k73dr14>a3 zP-3urEg?3P(|*^Z=Y?#y&O|}635d5`E(Jdje>amvCHnnz-Z_?5J8eyLy&RG&By7J- z#gy;=0F*FE1znTdh-m{dqBHPfw_P+PRBs&{Bz3WzbgDPSt|-_73($P8@qyPyaJA zQ~q-`e7e%=&H?`P5m%}G! z7VOIazG7=fBNB|x&`r$9X#6@oxe+9=Dn;rVz-k=Cx7Q7?sVCR7v|K1t7O?}Dnf!RX z6%+)YulYG&FF1f^y8~9a6^VGZQ$d@hd6T&U%E)~FyGsBz@Pu6oJXOgRXFkrO(h^|L zKJ&Re^Fo(rttRR#`=9S;w}Da`H-LEq7OH|;1KPPe&Q+-r8j$S*ujVT4jTfE3(NR$t z$n?sy4a4UAL$dW}=Lg!AT8itF6{@{&0b=d+z!@+@wj$|i&b41IpAuyHl$0MF`j71! z+bp8?kB$g|NWW0EYW={+p|973T&dbgBw%1Q-iAh)k#V-#R0B|C_6FdBUg_rZ`=lJo z8`Vk3*w?;inDXbxRqO(wE+|*j7Uksj1T8je9A^IyV&}#-V_xx_v1w)>OAJ|(sv^rO zdvXssQV)8v4X8YvaZ>AFeSX7ad^Ngy9;gzJaJg3FMD7E>Utf$W5%Iz1@Pl}D_yzKL zu!AJ<%#M>ItR{2fd>$ETRx>~cli5N}KFNR#PsB;dMaSvS7M>&4LI)trX!+sc&cAlV z;UpE>l*{!HB=#D)7 zc6<>@w!l71s>ra(KP85AB<*vv|1ztO;UNGnSd8w)YvZ1l;b>pmi9+JT|9k!R<|M1s z_JZB+KND`frmA!Yf(VJ(?o575@SC%f+bLkQ!d}8F_0Je0-nBl~9FBZ|U_!Usg`>R} zDDo;yTIQ@YuAf6$vNYl{lK!F^HE5BK-t|v90~?VQzbZhOaEcA!vOjaukg zb_UoLpmtn?4hH)KJKgS#fb-L@;z&ix_jildy5UoOmpe;DFQ9XT<_p+6^nclr54Zlm z%D&?E3E)(LZ1cOYNo!S&rQZCV(w^(DYCkD$(l z$8p_Or8_q&O1|hP+7e|zgsiLxlTIJ(3+x%!(r0j~`^9Txf(%nQWIPx)m?r?gcPrhK zCL%F#0esUbJV;Zai6F?rmj+KcK|fM>tt*J|n_BnhjJwlk?e%e1J+DD%_x=kSE_N;0 zE+Yvja;L`F(M6M=lzMX@7}F-9qm#E>$DLWecE37!a2Bo zG_O}AURZ*J-8y^0Ev9<_Sc2b?h@|}yFIU7VwvlW-KmSi2zCUXUE+^>i61U0o5_wma zoj^n4=$;7keQwr6M
X?EKqktu2&*biV@Fp+T^^YR8TWi_#_VaTY6a|tC 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 literal 0 HcmV?d00001 diff --git a/doc-site/static/img/quick-start/gnfd-template.gif b/doc-site/static/img/quick-start/gnfd-template.gif new file mode 100644 index 0000000000000000000000000000000000000000..217e10c3cb6147f4c30fbcbc04fdec31d9f6675e GIT binary patch literal 539184 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%0Di^I{j*0{$#<7kZ$K1PI!H>B=$*Js-5VpqD< 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
    5x~CDeXj31T*v%K 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

    C#t^RPE*C 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

    G>imvUR|I(N$gkug9s?p81;_ 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

    VNBKzOVjo`H3TS_G%a?;Xa*YYRc6f`C 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 literal 0 HcmV?d00001 diff --git a/doc-site/static/img/quick-start/select-wallet.png b/doc-site/static/img/quick-start/select-wallet.png new file mode 100644 index 0000000000000000000000000000000000000000..38a73896224d67d14e69be94dd155a3f4229e292 GIT binary patch literal 61694 zcmeFZby$?q*ETv9s0aumA}L5o3P_hyN=r8=odeQ2s7RNzFqAYyj5G`-Ee+B+bayk< zxAAx0bH4YS^Y8iReBWFb*T6H+?7jBdYp->$d##7S_X=-u?~~q#Kp?o%?YBJQ<>E=?blJAsYb}kW z{Ye}B@GkcO9x;NEF_k8VF*aqfujE+2cWc$n#oayGJ)7LDN~I{3@k9D^$;kINzmfiZ zMon!qaen#Z*I1IC7-6IwkDD;nc|=lD{DmHPe}A0eTE3Jvl&fsr#*y`NgYH`wKD+|QEuF$~nb5*JuRFzvu(ZkOSQ-)pI{z98)X#k8 z9V$9w_82yMKzPe;o}I1_p?TI-c2pf=U^BCz>aj#~c7z|wcI$QUZ?tS`%*&Re2c(X- zHXpv$s|?%vW#iVVR@%8D1|bPyd{BzDR5nf#HhdNQ)vpFI7m@h*?DvmqdE<8^=A1!Q6B6lGkUmc!@8=@0 zEvVb6-18a_%vHdJXG)EPa+~gCdUyH~;>Qn{=J-=Lp8+wNiO}d3!q3Cu2Cx2)3*>N1 z$9u2W+t^9_oFDprd7UQV#0^F|oPUCAF8H63#>w<<_F;B|u}Ud`0N)uK`laF^rLgm~ z8#dTLR@xxC=KnUPZwvQl)8Ak~^@qMUAdo&Og8%lW6~YF2Eo;Upt@O3_0l=j@P`G{+D`-Kt$X?}RFv0CO*w zv(C)v16$$u$6AQ(T>9h4h$%}y>$uIG62;Ewgl8N-hYThXixSQ*^e|QEFW#>4Veh8InE3>S+?b@-D0JehB9c~ z!FXX@^7$R)avZ}Vd|EJG?(~Bj4jFQIaf7waK6*l$SPW`U3{~Njh@a{^U(65T zW+R_rz|KQNt7FF8EU6YFsk@aPmoK?a$;tO^e}DMm9)Z3N#^vw!0GsZ(uUq2&OAA5> z$zv=#v1O7f*IycVBAP5zHp;vdMAa&3Vzk_E*eLTenuj**`d^!L>mR;Wa)=urHeL!s z1liBE?1na4P59!@#P=7k6CLj@*WB*I@h&DMQF)JR9CFVUQtJhxXiuNLW*;ck|@<*-9Ku(`~IHHl15V??YKX((<(l9JN}#lEsc zlCUNj(Q?RyO&EJeY_La0294jhdYPw%MK5#qE)X}06Hfjjs!Nw&I}6Q9qdERIDBzox z)pUkdbVByryLfV|g!?y22_!y3XlOPYGY$L`N^elEMDnIevI z`d3<0dMi#F-08-Bfoy*hjqI1REwve{9KO!=w9%v?_9Ri5e)><9=bqb-lucS8nJUq+ zvt+ST^Agl)YKpi7Ez3JLGI}#d4KbgZ@;n5&5WTlf?$(j{a;-<&UutDMnogUmPGdG1>^`eb+{ZtS`iy0?yOIHbM{62`+X>NqFh zq*hb%L^b1tby|t$YMqv8XyB`tbWyTIxxXN2(4WvlSPSK_>241-2xXK^dS=yS{dwrN zbiNjf!)$TUiqR~;(c zsfb4$5%7V(zJBk(F|$^YZ7^O`ImJhk_JwwGVxePL?&fcB_WWJ&hzTSkp5BUv_Y7`Z z^R(m6FSLGw+5Za2XzuiiipIe{tzv#5mCSDt|5qo)r>t#_@OgMrUWh_rK@SFzsaL6@ zD*wpNx4^X8Y~))zt*{U&tq_^-ne+EJ(-)6CPTL!3A|FzRE2#A-*tjkx8;UI!ImE=@ zI^frokPCXSopwI!X=1nB>c#@e!AW}wA=piTsyFxEzLPAX7}pk;v*ley+2mS+-MOHj z{o`|*RsJNGQc;2;s;Ts{V^HK$(NKLMh=4)(C6mM!Jnh?Avr6~qR#2hzOk@Km$I$v0 z1i9fp$*ek2yr9HW_?(mKcgd}U_gvNS25(HOHmyzMj>nI3<0ww`echx!_HG4u7iuIi zC_@w4j(Ruxd+wR7mf8GI`C59M33; zXN;=l9hrWpLAgG`|uNZ1TT#y%~unvFqCP^ zLX6C@v;FLAB*C0?t?@`;G+J1})KwL(!(>~a?6MRXaIp3ar*%lxW6FH7LVRr(u?8=} zmQH&+VhhXljQnKoW0SdF(9Buwe{3@D!pDoZFnvg@gz%i~`1 z^I0jUA^mptn8MA4e4_a2`mFI6wRH0bg{AQE3e?MPB=#UaZ~G<9J)FpoNsFzYf`$>4 z))8cFFBDmnB#k?%-K+zdXfz&ZOrpgsVroijFfW*Mnwq;H@Bdjw#7bWRG6_L0GWvYKQR{VLs+O`(E zyT^3uR`G+#so^Piua05q0(n%V%!^zif)^#Z_J%FO{&}!oGRWZ9fA*Mc)%iFYQ(u$s zY#J3Jb3|gy8gT{P9j87E@T@JMmzDJU1KBQoP=R}!0LbB!L%E#mp z!f$EMa$wVb14Tnd?|GVOw0j+we0kg;F^QSu>Y-JG94k=6%=ivOo?yVtH~C_DZ?Ot{$=AAVa{2MK}^jf zd_If@-kR_ok^4$bGi4Z4qH-vn-2RDsmxBZ4F88Y6L#%X4BvU|dZ^Okt;Z_dJgernl zr#mV!;n`WZJ8NbU-CGH;HuAiDg+hy@XhojfpKtUXhE5gImtHVQH2To8Xg20^HqK9d zMF+2~u~j8qn*QnyUWqSv>g9sGBDi*O5px|0jO3KGML(5QdsnrMnrfhwdn1NFCrBPG znNbn&&vDgT`ySt&Yd2i#w--HDbCtWdoNUI+Gia5fznQ6VHeRgnm=i#g=8k(W_|>nd zjE|~noOpR#4I6{EwaUdYDdt3M1p*vS2~72iIc8amG?Aq24eF}|8jp;bDPVr88m7z2*-)jsgvM}r3{IX~RFE@9MlvD2JT;;p5==QZW_H7$3$G%k64FgEx`B@k zceQzYW{D!!@+v3C-=1haFIaUgj7=n=yAT*Gb+g`etu0>|WEo5x?#~;0T`|4)`1!*5 zrT#X{(UbND!?G@V6P|ePnFAD!P_%n}3C1`$%_Xn(FdeekGgU0T$JAVk^36Yu**yp!7Ae7Fx4|kEBjXXsV5w^9AiaOMW?K( zE}Z9+_Q#~jQs0-AQlm3Q_1%$@bl@X`r~PWXh5%B@AKS? z?n=+CSdh1cAR?2-%CNZs{1TyFA_?WqyttZcdMs>0i?4Q>K3_ zjG=NbJ1!xd_)d$2m$5JOXM{z&Inid93Z52DJ9diTAH?5&KFZYFtE!)pUL*3>%}Bw< zsz>rwj;OJfLN^)FF_8s!&_OrDxHTcoUk-%n!ii?424oW;+rWjl@Pp@*xx1k}O!*!K zDszg(1{B}4Gjk{SA*B@OE;nCGNT@BAplh(cAW45Fjws4aUr9e$X9`bQE)(0Xm{26o z>_BWJa5aDHC`+#mqv%)bIUw<2;bYS}4OR8Jl~ZhKD_=J6&gkPgd{%3jQR5!5w-<-SV>{9n>)tbvZ@5{kUL2K>C=^f~AU%p>XXHK}3~!Oyyl9#aEWS9o7EiO$~PS zp3P+^!cIo_%M%?&Anl9ga{_cB&j>Oq{72!w`BkLTYSCXfu@Pr6vg}997_7Vrb0y=NANP=NvlGvn=f4Iq~2REuYk3}Gl1UaxJt6x@`s&-!@m?Rf5{Cf&*3AM%c z;R0-#7;3`w#qs`2@6u@lq=BYKwu`r<`S%c6rPe@}$y7q$8;N+Nw2;9+%n{i2$}WS{ zI^=8-qAY617?zhs*8VjmQUzW`D5tYQ(aSy>(+=%Am1(Vc?_INsQ0zg`D_Ruu-K&Fi zYrgjryzgCgDKE4SZTv1LI#h)Cor;F4d#SlJ$^n+MJLei?1*1>sXk;rodu}>u8$6xTyT|DJG-q?h2-E*&+5&ahwPakHpOoKi`OMjTigl<29^Rj4{I<>7e85PI($Z3xr2cp?KCcEX_ynPO>jk4Y&e(7Q5vM_bID*_R3~r!_Lp6l zmj^UOmAmT2eL=cvm1*4qj`%EBi~Hm4!thyWAxpe8gnJ^MWnTOH%)d=n&f|69o+& zn_NEe3#O>A^Q`X0qYv{O10pM5DiO7_M${1I&hOY*=QO{SvHlUQ`e!;_Uxgq=`MacU zAxh-EN^tOZ=Z}#ZYog7(sGRo}RMa5rY@`R0zl(>h)Dj2LydloDe>H1{vv>s`Q_aTe zi@YX_{&p#mn3n*Si0lpWC16s=89@yH&)Y-I$^c4ptZS0!&NWGdNZ%V2yul~@f3ilF zL(=pKH~U;qByWx50Uqq#puPI=%>?p#^Vbt^06`b1UHpHesC&cEsW0%u&wH1K$y|9 zq#Oi4b?EHJ|8TVvei}m^=~5auf4iR7-u{2*c`e<(^v6KVU!2I^D^&oTC15CJ|MIC+ zPfLy5Bg{?a zB21=i?T2D|3X~-|6c0<*1-SP!2eSNsZ}qeoR;1wB3NJwaCXxP})RG^-hwnKUY@_|-OZPVF9OH1q1r%!L*H2f6zKiZmt$Hc_M z$5*-SFB!FkJ=J?g8ur5^vh( zX=rMiJM!mHrP-Cp$jK!NdmQC!mC(!m_~6J2fuu$hXcoIYJAU5*u z?wECC{beheEs5S;g&@YsZ^SH`cD=&Kj@#2ypc)4G{IR&C#K3b`^5&;b2_h&Vn8NjZ zx6S{-Q$t5;Ac^E?sl~v2xTr#>gseCb)HpCOuvhfz{IQ1a$A6!GmQVWUM0jFuV zWmetFmpnYf*UNbQ`2`bG0szK_KS1 zS&AtNq&&BkDyf%xQ+iziFfo@H$X3i&Njv>CrdyljGVNyIeNhGiCgiia`FN>?uH;B! zK;z*+g)KUUS%cF6Y>4@NNlD51)=(qAGE;G)!jv+r5l-*xkp$L<3yc=WO~sLR!ZoK$ zaIg*kG}D(r2VV5_u+zmjsV9HwANsCaUY?&Sie8ldn`qc}^w&pSu@NEj?>SM;&CLe~ zj@sXDKwj@NGBL@>%67K5bD+Mf_ZU0g_%eICoWg*83-a0Y5gFOp`F<~%p5%I4&Q5Ok z503f$UQyobo#)xvwxZOCT~qu|3`7@z`#_Ll|u^ChUSW^#=)09lRtn!9t_rc z9N)nqCef43Yss;*DThua#KxLBJ_bf7FRQ3X_432#ezj7CkozfvAy2vfG(aG~?Z9Em zcbSj~Xk>6Y9MS-FM4;=tMH%gV&t?q_4d=j_1P~1jpslP-7~IP(Amw`j7xpOcr>hQT z@&B)00N@1%pC!J!llIHI#I&0e1@`4L>9?q?*FN8dhd|KG+3{^S zS5HA*_{iDfIv4FNCLT+2#LLk~wHp>`0@pBP$pe2ZsT562`W<+T`#3nEg=uOw3UN5}W?-)Ck%1h@PplnMxB4DC62QkDt4BpVwW z&-HG<#|LvE5C|{?v?32-$r;~e>fnRzSoUheQ9zF^E{#z=PYtKpw4|z^8HxPyR%sWggBfR9v3hY1k0BhPWvxD9E;6XQ|3$ulXJU0VdplnK`dc3zGyjLJlThV2=2c z1n`%aw#IAQ9AsxBo^K(6c{&~k1$3G${Ka~i$V1CQBQId9O<^J5!~>U?U9OSFc@Me| zp4pr@%^T=@I~*pIp_qB@hm*e$vZsCSFfqqo9~2f=x7xanOb`wKIY+_1N})SFyYJB)N9x+yWK4?md+=vCr;}ndeubUv-x4{j=lII1tjv`ej=H zH9lEn{-u=qqkq#!YpZVz1%%lHKsOeu^PCDQ!6(u;-?LwNde6pa7*tpuCX6F>MVvQA zOW121#~y1?3AyHsSz7rddt%~YxBT5MtLFosF{?`MMQqSDp97i|FUtb+mg>$=C6jmuH@krUG+y8{HqJ(x092sy!)&&uC6DkUvBY0 z$2Y1tglnNnqt$L2QSnvs6?A20_^`CTu73`5q);Poo|=pYdJb#3PY^Hkv2o|8xD~o8 zKi|4@xBy&dVP#F?aa#LaT8i?NNM#I4V^qiHKctZ#;$}z29w?$~RHr1i<%{L%aJnV`IwlDl0WB`dw6AyH=D!mFVAVXuC*wg=1hX zL6iSpEe2kP>sj(;8$jWwod~rn5c@W2J#g;h@Y;+igNt$geFA>KX-z?qBX*qHcR>>T za&K=h#T}!C-UO!_Q|dtFwsN_g;fFf=#Y%Z9h#eyGa6N^;eE*=@$pp!0>M-un0BKrHagm~%DBC?8-9^B)PX?6 zVy*Ha7NIGXL_RpsX9c1oO=DSmbo zm?RJ?de(*0lR`{EvFY)rC^C|F`n(!CFJE6x&BR$;S$TrKI$fE_L{kYl{;@6x3+-nv zTjtg<7%P)~GIeR-b44=(rM-;69s=BlUpFxnrsE0vnIza&EnB zeRy&42@w&IKvGy`Wu*dzV6xLvr9*FgWa4DE!}20COt<2rPk{AgjigKRrl7OX@m%Nl zNRvNaypVJ>$=OcvL!t*xeJCUqt(Nx*q^ z(hcLLk}a2rM87-lCJwA- zyrr43%S}(FUJtyLyIUUkSKj-Rt_VAuI%YU)uh1^g=&C+Q7PK9~{Z1|r&GoUv4VC1rduapCdrO>do$VED zO7G*xkN8vGy>un)dy}qcpKwpim|-t#346j}*MOquFT4IIZ`YoR9~|j#Yj-vVC(c5AY%F3wvgL5v6i?h?(ikzI227fA@@;Uz~ibBSY#kiiTv!02` zbs=G}!P_-w$f(V2o~xivD%eh)%9gsaHfF99d3o%eGGxCfuWXp@Pgz;9)qqJ@hgH}Q zSt40A^iF?!adRE&UwHFkyjtClw+>sfsj6-3>h1bfrrFzm->^vWtnBl0Xu%h~o?=Yo zc^fn+tt-K;!RL6Yz(dDrUcMs#WR{_qb>s@oeLU$@edOdWwIms*n3_S34 zL9;O=oX4xmSXxOb!np(hqGh>+=wW1vb27kNG1L5f0!(X(?NR>t6l*RszuDE)%JgUd z{Q0w_bw4bZiIf1B@bw4HD$6o9?BG8@QM+&-N#o1M`<`!09G{5VOw<_-OFDpnsK>eu z*>pau-mdjtt;qwhQc)|Ta}@8#YswWrIW$xYM6I-Y@ zm$R&H9aBA_ileCQu_!O_?aSlU!2uk>?uzNtMGe_CS8cTOY{4qG(T+m4LsYM8x#@BbORw|ngA}VJq3Y+; zXCv74)u+SSpzkFIfmt;RMpnVz07o@tiOg$!{+6wNFTwZfQjt}0s>rBqtM=;WTPp9M zh_KID-21Pd-NYl~T=;4+FwQ`0&g?ZOY8de73usBJ5yiE!Pzt_{bmk zDJYL`XvK6c&b6`303!1DFY8nMIx?^9K&Rk+Yh4)s#1T88vI^rnqtX82?RrTPT~qy;b2?4Hqpc24Rx1JlijzqPUA z`kt5ZHafg+muK_A+*A&tm{Ape|BJ*D*|?s~@fHl!paRx}M#CzOXuL5dCYyrB#?XQ8 zoy@4@2)6@srA-F6D<8>ZUMkpzbT3_pM6)p`?o%Q2hR_iMyUSNo$8(MX+cnFuUcB)q z1~8|qFSqK#BOg+sGiA-to1N+WD<<5O^Io?(VYE)i!< zR76Ct>|T#|;bggNCvWKdZM(WCCGa1*I&7%-61~4NE$nvrIL?4$yLbVr=j3v+J0!Y2 zT2xX*NzuLGNN@HsUhWp=Sk&xqMzcavDJzID?0V%J*#@vr^}AtVK?$#5=K&v^0L4Id z1i(xVLWT&BPnQS#HWvEJZxGP@e0{k$tg-RPb@w(wC}-0XsK@N#-1>_VOzKI2>AOuN zxvaCH+>Z^m4UWAvMqsB$T4u?gPBR_cGmj=CVh%SP*iW;%HfqoOa4D2KpMrU8>kpSc z8MX0|hxOKJqWMpK`dXtvj{`?f@N3-j| zE)Vu4GK!1W272rJC@9Iu_LtVZDPP%rPGi&oCg!>tZZ+a2Uv_rcDCvWZTeI9Vv0bxC zOyIVM-@9sB3Fma1V`djddU%# za#<12{k@NCNA{zVi{z~k{gSh0$*}YD_$Pu%Ll#C;m^BZVjmccH3@T37??+>w)YM|O zLggJD54?%%mZ9UP7Nxq$E$qR}%kf;q+C-jLzb{wHSyR*&yaMgC zJtAA@gm&a3r((hE8I*ovUiGdbtZw% zK_<>UB(j#%%Wq`SJ;m$Nm)O_)eANuSHPl84v)f7iGCl%?5Ouw(pYYFI-?Tvqu`$f``9I4vl84fi)rhh0{U;GBO;!*LL3uRR|sXXY<%zcJB{_)5+F( zEi{~c{ra`^$)D}cg}NuKK?p>)TY)AJ?DOSCXGcdYn~wAO$){uI;1-qE^HHC|=mWNPqxgRhh^YRO;EH8Cz>+^JMX4_I=g>?4~V5{W4 z5Bkew) z*gC53^Y%vlcnrvOtA&t_CusJtQArL)ZWwKr8#V~Oi?YVE>ONohR>@ro6IX0eRn5n8NyE6v!I$J5H zrE~t9DPK11CyM5x#RLa#6}~~+E*w>F)m{{OSh?LL$j!-TdBGYQ6mmdewLPwe{=h^7 z@J!Gn9%3~$fTNFf+(FVI7!(u?=muHYaHLjsVFSZPMC9K(FEJSGi$}2YV&azY@5&-= zBFeK7Udya>{c32_g7hP&fwvM8-|*kb?w@I9X0~y0a#duRk%LV3;AA&4@-JX~My5$& z0-gpKNh(;)N>lj7*2W8V_Hc0I6udDnZG@{*)C&j8CXcN!!^H9>W!k8CVsV^Gb>ja6Hx*6&onf(a?)-XJ*`)>Skrq7QJOz|o7 z<8=F`C2j|Q2)0gRTue<0bguHCb^258J;3!B*1{S9;7Z6j(T+aTVJu{0%0npBKGLRS zz0bR$S-;-iEp+7>hhRHBniwBR%M&bs$1{@KU3n~8CtPpRhS4+AG(!|EeSdPqjt6ws1-nwmLzLiF@f z5_9wOjvkZ;lI@2p*cpqN8z zCCAqFiJt6yTOGP<&M4|$x-z~FTdv*<9<$yW{pn?Ftm^2P0o@CgTF~ccVCCaGsd4D- zw>j`yohlK3_Dhq6xO!^(vm&KJd2*t2lJ57RHT__=`qbBO)6rUDy(tS{K=-EE{RUt3VajWmuL9oJDVI%1`E-EGJWKG!9q~c%RuE~j_jpswM5rl z?9S_l(u^3mZ01BXt-Ds*7LVx7XM$n{8#3piTFj%UYkr@{RhdB%9FwclOR=d|<|RF6 zz_X#2BLLn%1=L=2@c=n8Bj=q;Z>xA)Uso18`_?f1WCxw4er2L1?8#dS)R z`S}}hYI#CuG=@fo^r2MS`ijue@6t@hHhM(jR@mfU9mC-i4oyR zuoT_6?MM0IMXh`08V_``^0e05Yo^*k(qwUQPoAFUUS0^~Uqe zr}39vm31P^(#HWM$THQk(LRL|alEQc-p}34b&{V)?dW|OV`bvxEb#8;Hg0d9vW)LB z9Lym|MxV6GW1Qf&XBYCz^1^LNK6-2;tGbg~)gqLN5%gRR)o9`Myav5L=E~XwVqOee z-P6^_XN%nX_b_^jJ=@xjU|VxMMEwv5?MM4BmI>bCNPsSn*2J+Vr%=zOswW1Xr$c~~ z*~~&9fIl$cxEiN|4fb-z#tx%}^|tOTr({?2va?^c#2ElwQl*P8a{gn>!A(*rOK|}C z_5%w#Gy7_HOVr5$M^#O2%DGKAuBUqKubW19t>@)r=dyvr)OM-uX5xz|M}G}9HQ~Kc zm1G?e%tAftP#$xi>W>yWJxyTIlaeb;8~XO;(n{eU(>x|F|(;~jMD)9a^Qs`I4tP0m2y*K)uHSH zT@WpF=kKzB&XXHP(8K>Htw9GF8JW6s4B3?bJPoIP^ULFuAmX_VuHL@xr->;Bc2l^# z7h8VoQlX?DIpYEQcQT*nJzZzyzpND3T`SS)og~PBOaA?6LLJ#MalNXlxZV^Y3o&Ek z1s4E&Yo*X;X*hj)Ui3-t)tuH2;-9~Lptv>c^ym8b4z0sKcDhCmqK@ic&E4>#Qh%(v;N-2z`c3n zyUjuUs6QwjDwn-9Eo@A@=Y3r?EPWEE!6svPFo1&P?3>8g<#3F+qMCk z?P7XA2OOrYmK_ON9-h{UsdMiXSe^4Gs>nzxI8EsMcP*~I-;+>TrD#Cu1O?rX>r^{# z*3weTyjU2iOHKsV3Q9|1O}(Hzl%$YmHv@vnjV5az;o~k9F7}#?Mzd+3ppK4%gAnbo zB(MJbd-J{a=u+(hMUkUFtQF|Rs&E9tYPis##JLvD_3hhj(W5`&xCOPjnk=!|$)1i4 z-4$+7K!L3T+Ddecnt)(-M4t=owf_@)tMx$s2(Zb6!hHQt1(sJ zaz0?Jk6UxuN*t_mh+K~CPnSAh_wn|CzF=hZ+z8AjOJ5LhTlwNKQmAJz$HC`y?mG5J zQBHO!`a9J6eyXV-vINCLD7 z7B2aZVWa`;y1BVkzgEGp@YooLF<$P+g=aKf2tA~KmBHFl zQCREu1|KM93fDfevhSu6>_xWa}!jfl8M_iU?pOpYoc@0Sv$P!;0dX zeS8J)#)W^y^?MEs#}v@$DX^NHirz&-7*NavwCWV(A#=QJLYFJz_>&&TFP=OE39tJ+ z(mP?`>!T)c?X2(Caq=G7>R{2l6|%;2=_y8kR0pcRGx{7qdCzhe)c-_l_vXw~BuGdJ z_p&wggF-`dZO0O~On*vQu^2gVnIU6E=NTktqTi!lzG* z%x6WTs!z326swOnd9TL#U$k%6hAvJzWYwG<>Fj>ONbfp|iHkw27nde%YsZcYgV_?@ z#wKMGvIJgnMzs@>lW#!Z<;*KlQv>TIaMFD-WmxnLu)ufj40+MqwFwYlWDH;=PX$P3 zW_6N(wVsO2bJf?(51-7v*o)@*^J^Saas_kU|4L?gN@mwRqyfY1rggF>%~yB918AMs zN@rTv>rc+3q#w2N$}Gw+Bbb-Hj@rH1;2zS^^<`q?6^fPnM>=&E?z_?Lk1i-hwu`G$ zV0$TUaRzI={jF^+dVq7Vtvj~{r7ak~;^x?Vn~Cgol4&FrE~BtTOi5X26CQ9kd_R6+ zbR?Ab9F5Z}BJ4hRx3_oBBO{|`@9(~%&^Vv`i|2m$`xhL2@<~fYQ;HHtqJ@d07X6Lh z`i`@5z5OP6Ljo>68|)%y%_Yngt09!!hP!4|Xv`Vh@q#Sj&!2#?C*7DWIJ>RBT~m8w z_oHy(^F_0it|YE%khN@1Fqm(Xb(^XfW-Gvuc|J-+lK1Z2E7D{+Bqf0=J6G$G5sEB+ z=h9{|tsk)J@fH6v5SLWT3#w?K!q-&gmPtqVY4;Na;Wz_>3mLDoV{KMI#hA5ViSy#( z^78T%;AikQ9|<_Gd`}qXnpygj531xH<1z4*6adyK9>*k37F56G5vKERDl#%thrvLt z^h?v~HR{ifP1Etz11R$%15zFI6Gl`Bi0T5{86#Rg@iydl!3PuutG3n2dnqGS!RbjY)a zO5i?xj-q2;U_;AXWYBh$5vK4 z%q4_k+`%&}kedMmt1N76+`|)-VAj-d@d$}dw2 zpd~Iz#vnkbH#IetoraLr?qQizo0Q`HmmtwV5N76qrReu+L!hvI-Kmjb(l-7m10Xpp zaEKQTT&o;Xs`UT$+qtO6F$JYs%<+wLm#u>Xv3H+U zpWRF9gBzODq~$O=kDv;XkE;s{Z8S7SrZqH_2wG&=gB-srnE%B3d+Xk6JMF+$?efJu zJuh#R^xcPqey6bHPst9wHfC6^=SvHd4xU8+y1OAKjQ&n zIT!f*b2#X*zW#v97aTJ161jhEyAa6#uLkgX%M0-w&tlc#45L)*coIrE1&WhlHuzwj zCqxn-ZHqly?&l39Bt?l!fZh@&PUYN@RmU4QZX`XYai^n;?_R>QnP1HX5Kv1uKiY;z zr;X=YXP&rezjy(7VnpV=?*NXvy;(bNq%cXqM8@9Gu$mVa-17VEL;lVk$;gZr**Hoe z&&qT%&>;euxzoqIQ9vW$6cir(oJNVLlbOkWf6rKpo~GyY?_y^+y^5HpCpPc(zdV^a z_hZ~BP;LuTOZ$~p3bM)5eb9Un5a3W}(}owWRGF2PRdd~wlpvS&`}c2!*;z{VEk}W& z;(qhNWUE)C;$mVUSUwXkidllwa-#3N>02ke7$THZl3tU@7+JqF`wB(@yqv6ztd*5j zQ)6SJn7DBAI-#V#x0g@DZ<6O}+VFzPN04+SqpP8A7zH!SB_i38(+o3Zm?|dQ>BgL*nExYp*1h-X? zLb58;p}W^rofmu6iJ=eu!)z+P9dH}tBFKalllhc98ZtZMsB%+Y%&l1r5PBT&Eix$I zyy(%ZwzRYylu1%}(w{r9ARQ&}R>B%gf6|SU<`^#CBH9 z22Y(r#NPO(L9bRrdk+t;U%|oy*2}vo0-UyqLF3Ph?fU>EZ>bgY_(kHO;xXzAT z^pjZiQxcMQ5{V8rU7>+t$((NXcJIFrEXqujSv942GadSelee#;McH`DS52%eE!~e+ zILv2$2Ph;(D-qLWW_A=hk@3(n(A~L%RlbS+iI0308;@}jxs2uQMYtb*h+_)iO{E9>hj|!IdYiFg%sAKv98{a*oQ7XT2+#f@hw0%O;cYfA|hhev1+guB#%n>`4dd|2^YJE9a`OCGW(1FDgNPZAta6P<4AH4F?5#eH!1C0tI6pMUNA+Wa79_kgau ze~3)YiyJ|2zG|<`muAQ-Z$+c)S6A-RC=*)`3?~jg2wG7U^%V2iYNt=9SFmy}2{CFL z1nhKQ>TaBFn!eDpXaCRcpF=}J3LQRFj9;9K`^qRIO`-*X<-=G#+ zTJG*BRBjk8-jL9Wy5nAk^Zy|4Exe-qqP}kx0RaIC36XGU>25IS6zP`kp}Pd6lF!SHX6Wu1kZ#_??_T$MpS9lq;C*Jz0%cv-%(+hPv-f9z&o@yQ5s`80`DX`_&Ue?R zqyGEzx3^O|kAwWTA?S;>)A0mV`qMl1jB3@=39qM(Dl9Kgh70#C&i)EExw$od0^a{y zKQv5ZgJ>1S{h1o8`*y$CKkp%YPRgjWG2uL0VEzUisV!(X&-+F{G($D0N0Kjl%1Fb- zzWne)lku>(FS3RgG5EgkvAW+o5kpxxT~<4F@aeyBhNW@;o7|rPs|E)L$Lzlb57)Dw zAwmC~{Ypzqljk)p<%;sXmYU5hINpFf9o=1D=nW>xybh@bq5l2-{qAXZE-pS!h0~H? zb|aU-owcZ_!PXG)URH5x(3L#a{m2_I_KzIo#0k<8^R;4U%&N@ntUtNmW})Elr}h&h zc}^;cW|r*~1FB)7OuvdlMbopc2e@H~ri!HErnqX2!$=lzuqR{!IwF$dRLm<7pFa;a zcNcqnk_vB{eH?!v=me(Fi~Z5hM1eth3eK0E|JF*HuFb-*l(F7m+s?^wQFeCy(RU0H zT`PU}8QKWvwOdPofw@Z4VeJd+;DX6Iy z+4V&~L|rXEKFUyh03m|=ys6C1hQnJ7F+;=bs+?{ERzxHu&KjfRq{HTd|5-2oL~DWZ ztPN!+0FkYENEK0TzY-w(ITOG_b!yDjUovS{HFE%r_jm?ivV2&v>89pp3&d~kGGKLp zYd&PnnX+!5%^I(%e`6;|Byw@DfA;Lz2+pIGv-JW={IMkehxPLmd)b@!1xjWF`1A5J z|KDryc25fo@SjFv-u&5D|DWsse{3!Nuf=#B3Vo9NS|ZXwO?h!{#nFds+n#r$i5U7g z+^l8GLZPiL0d|X{GA6Gd>Fqk+(x*tiZQq#fzdhOs?l}5?tt^prvKvl>Q2WaPRU1>T zU7}KNI=7{RxTU%C15ZT$4@=UZ&v#u;aQOkUd@cG)fxT0zn65V`JPR?vzIU{am`#uxN4;TeQb%F)_t|HJ!=3 z;IiOww{Rh}{u(zg>7R`am$uge?eO)#T%B@T+lj&LVlAttjU2nNW(6L5?zNGX4#^qN z&%}v9;fJ08Lr}h3guSn=T=-MN#owtVMN|LroyxfbPft%v&$JXir@?Ep>T09QQeAu< z_WF&A#fPJ)O09+}j<8|(TA9ayn;VFtMuRx8prMqy)xYu$Q&V(H&IIW=xrDd41k>%b zlao^_IuBtB@Gs^_*)R9=9y{Q2_A9?8|KspvP_uSN!w;56H55El8Bsd0BBWTu--1eBtvyWr$jBVQLyKIxiZQ(RrEVd=j}Kf zGq>SSuRe}X-;9lzYp#mw`Wcm8Pr_4ms@<+)rRR!00`z~bW7Y7UA!UwbIsR%dP%bGd z%tysQHG_Y5LBmhk+9jdUH85qXRIXov zj@hJ>$RQ+`JzjSz&BnVNZDU(s?b0NCc=FJZWdBB5l#~;z>hhJgdz!?^kX~!#un2J_ z1s-F-Z6_4>KDP%2vgE+_Ku!V0j;4@Mu6^91``TIR99=&e9;09`x(S!tMK-BG>`aB2 zQ;>2tc=cZvUm4fB1boh&kh}IK>{Dg$KI5}b9 zh%CYtVG;0X`5L;5JxR+ye*io)5eYF4r_*Hv1N+O%zt^)m*VnU-N=v6e?#`{BoWQ@l zEiE*>>U&;cMKvXdeG{YZ(abAE#LuW5-7n);;`vidqmw9mq(%1@G_ACg%Bw5b2*- zKCp4MI>p1Gu|=SdoDkV_m93eH1|LiG#+f(7r<0q2r&fB#KS;ohec^2H7O|)i_(E=v*5te{cVLemg(g|* ztWe^c)2Ohno}NE3<}fSwvXF4Q3HP$zOl`VJghx`iOeR*%Iqo}O6mfNHyN?o9+TDbv$O+!f|HGl?hcnP{ zd(IJGG#;;>jF;5qa~x>4=&sdHltItDpo{Z;Lx+c;mO~yIEemwQMSj^e12}I7wsg7^ zaCo){Q)w`7Ywu!eKF%LBGIx!okT}_7ny)ZkLOyKT_?H`zLDtc6sQ^LU4>7+CSyP$Cs4(Aq(vyA83)%UoVMkoh-*=4g)>R;9Cp?9J+ zO(&bM>~1iQn>}2)oFaIZ9>8{t*>j%q*XBdz*>IHxSJA`pUP->hC;*}FuHvGPyYxjL zn75KhH{GLHt-rhKiHiq*z3ND|Dz0_^`LzzPyp|ZArxD01_ss@N#g=GWclKKcHKs`{ z7XfKW=IPo1n%z*$Zgd^22V0hd#Yc+%EM-YWwyDt%Xfm}V6)>i3Z*5)NH&{UzYmF{K z2bTt}-SIxT3`i}ljv9)LR%${^EX**! z#V^hCtP+orb?e4I4_2bHIPAXlr+@M@>!;qy!b=-MDs|KrDHY3WF5 z=@$sCxcFDCK*zbFUbF-6!qUBK+>Awje*RapN{?Qd?1R~&d-{*UIMl&jJEW>1 zgkaJIQlHwr-&lLji6a}ljQay#uWt^sI_x{yc`0&EYB*=v zTO0~mhX-yB>g0vA?@}Lt=t8bj30}rgRM@ZuRK?w0GYpOb+J)0nT2V3Ux^h00*iD5ZZDOiK+0=y)L_-*nOfoj{AkT!<4H#-9h<`@&Tf1$s+X=a z{BHAYI_SKR{|&gL5^nw#=hBxp_qGRpX(}EmYc~#sl&@S(L!Ghv< z#`c~@pa(3pz5#D!f~>bkblsu?Ix6d!0o_bbq^Yc|{g~gS1zt^h*+ve$LrFqGfhN}+ zDzx&Kt!FF*91ISgT$B>FAWyAoQvLBht)k6ukk!QQm&B~j zXNeAyb(Mt{v!{CsUy%S2XtvyXk8pE=hJhit5mIfrWOMi+pbGp?7TsOl_ZLx^(p2N7 zRd`@4>j7*H%BE4=6n^HC$ubUxI}>^Pn&|HtZ72v1U2t+z3I%b|1lppBD^Qjs=bM75onsAD%lFx^fvx%Di2kml z=2~!hPcFB2>2vFo9ncxobI!F;MK@P%qT%VOES0G;-2Bv1#KRd5jOxCU^e!g3JB=-ESuGI|9(pYMo$kfd}`qGn6>( zW}|~^WzTSsjzzC=??#6Se7h#b+po`+Z9D`5V({$urbK#v1;uN46n25gmtxz$cDse| zoTIf3_8(!$a0Rb)p@W})Ts@?`vKLm@K*Sbi@4}z709R@81aX&6)2f3ruBFtoNefFE z5PjAgCTRmPwvXNbJKZqVI+!&t*8bP?9`c^4M77B%rR|%E;a1IR>>ONr$?L6+c|DrE^-OE124$b0#^VNgN5$Qv5XP1S`D zQ`|7B?|oW^T|K%L4tHO6kDGPRprN1;3c(|nR0=6FfE!y(L?mCzDw&n6USzH}ipnev zg-@!SepsheeBmvd>qLu=hgw5$#iaU4iqZW~g*R^h;(=GXZ+b&#b5LbV1`QKUirCGj ze~U!WT{y}2uxYFK2Hr$X_FEUa{MxIqkK47-kB)+(Q%LY+rN>xMQ$r)E`JwfvkTQd2 zWmdW8^$Ur}SjL;8I-1)HzJI}n_3p3ozUyJ^Q27G?~hM|xw%&zmQAp{&hZuOfLIuK3YwC{FF% zc0o#)1zUtm>IfHFrCpVxhgauYn zF8Aq?t%v*5zSmL+2t=t3^AVda1}?crM|}6Tdu(z7qfKr;>UCgs8g4l%6@&mMN6#nR zbID+ox*fh_%v3#;mtD)+EaV8s(vptH+*VJiA*?&51|Jr|AB*aY?$Z|{>GRP()>M?? zhnZeaE1So%hW-kfWMlsxbdL#5OC3=1#bSs>44>ncH{J`^641<=v5@gNs!KE4d{ANU53k2L|1+`{h#^wyd61=bY;5^XL%Z zSux=v0I{K$q6+u#Fk8~6&BxG`!@w6~}>&T6Nrg#o2>3E)n)blVp6xPp+_UA}9+i$!!$752T}oFoPMV-Q-fBw0E(lqXc1*F?fzdwV~Pq;QkYPWSrx z>wj5*ng#dF`o+|a6=$$N!;uGFy!_Z!4SMPJ3LEe*+_Io&+ zB`Uew+n90(!x^k0+PYST%xa8v|2~3Tl-v(ET0&I2-WuHk9E;&^Qi)#Yp&1%aBN#j4 ziXrZP?XXL$wfWnjkWt)VrujW6II#|o{^`4emS%rtF#FzdEM$`)W3z89J-A-g@2J#R zf0xa5+xEUmEH32K)!dEljjOg^O|oi?ovsMz(ZU2-0D!sHSQ4Lnt&mF);xJ70=CSL^ znhvTNRqS}Bc@z@Q7L4tkk$N3L?d`e3sI~3RD&w@Bhb*z00mW#EK>|#fj4Pok{;JYX zuYPbXIVUqB*XgTJC2I3Wr`1 zWf=GUndf1SsF*DV`yxd`qbBUl=OuAM_sa|NeWd%DoScsir)xCjJf zP}aW29ADbR{rFLt|JWrkiLMv+)c|8NCdkZXwjM~@d}9QtZiZy%lMonF^1}(ZR#=!F zwE_67ol4ddFoli|U^?{zSkpd?^72eAmyOk%q)d%pRTU@t#=*vM=ufE2{*JpN5(4j> z_i=+o3l--3nTy-@xFHMIMj3ovx|5>@=WZGb&RC`Od=7r@VhB^uS^%ei&+|YRnLUS# zLJmjxj`EBq+OS==p&`hu^YasV`t%+sQfOsBG=x^-==%XyVZrIGw**ios7SRQBdn9 zJMJprbg3~QLWsB!jooE*}VjOIU zoC`p0<;k)Lv-0$>-h{n%ANH_@XLnhFi?pepCI&vuqldM1JkcCi8&C9cN8P^sP7_c4 zi)gxDnkpX!8sW(hd0_kEfT1}wY%wvLj_2*DTVSMr0fN3)SuS^n>$ZJx!`oT%x_&rm zl;(o|svE~2KY9F!NZ*^6lQD0{G?HA7LjP7>Wpdttjoy&b`}EsVvTZ&Qd)L-*n~M=>!cZUs zqH;sk&jbdFsk{J|Ott(7^TDS}I@C^FO7Z5Xo#Da-MUp0hU@_M${l!-Z)Y-sCHWDI< zJJa#Ft|{M`E!jKB%QJH>KZdRM;2>y%4 zcd~3J0D>S-j-a64dX?yMJnZ^1e;j|-v|wjdEx}0~YSkOzx;Ags!bsm={xe7RV!e>( zOc&hnWQ*=)_>tsS)6jzaU_T05Mx3oq9-9OlY6*L8O&^}X+5y9a+N=_qk^6US#&tKO zyyTlSFy-3!vfOtWK|AqeuW$_9vU?3EQc|(Vsb1-K66pKbJ6DZd@Or?WZo&0K?>-1> z&*X`Io5;jL57H%H-R|>@S9-(^hEOv~Rj@zlTYRE69vaGNNZ$N=Ope~+?zIS(J4$cEXb2HhB~J+R(Pk+n?@-s2E>g7*|sSi(|M~?UqQ=oTMrG zYp#UKqP#>-!+)4TP$JPoIb&X?+pg|k{Z}vz9xP%{ZRWK!vPa9N?IEBEn+=g*&7a#& zKv>teh=z=JG%+pR0z@=9m^yG5yM(4c#MB9QIg|=$a5mXDIj7yK|dQcdH53oEkZ>z17c)&=<6U{FnMKh z;ZGji;Igvm@+6J<(P(Fh8~SJ656EIxtTFoAi>s?Rv!dzRaO zJg#8DBzc%2c>O0yaO~%(rSW}zfr0S_@LtXY1rbkp{&74k)?k+%h4YWwUn!h5zSjm= zB|=U2(chm$jYw~03uYy;I9d~VM2{P>jOd7!<>J{S{c_wK{d?)JwNZ82GUzVPJ4{C{ zM1B@(;1qhqpI_S;>&f?*%V?}ynvq#D$S8Al2OdEps#(a_C$uE&7IuP4BoZ)^WpM6= zU&i<`B(%;FqojQNQrOjm{>B+WC+cIvu?y_mn>k+rCt5V-Nn%cOG@W=^!Y+rUvtTvN zS9w;rO^$vSXO>`Zq4@*^B3`py5v>M*@V;Ro<^W8fb9-CXt||9CNY6fVT(Vv6p7t~X4-nRch<dEXvnVu9%h6W<*Tvg}*6DqNp2WM89m znOS-+q@StGun4l1jj7Atu~f1|c}lNQ=YugJs6L#Q+#0w&6k+iRdvNxX6s9#K(T$I7 zm!{L_Q9^2j1+-{>lWq1vOj%##$joe;FY6XXyxejSw-VPv@i8i=~6 z(C!J=sD}_R9zN@B=kg_t74iM1BN~a3xk+oJOWWLEz6gaz>lI%H^qwB6 zPCYo(bxW9sjYZ)E21Y_?XnpQ%YK!%q-LX4f0%e~k#4jF5&-Di08U&NBaL<eDD_A{Yc6HL@Byj|1!m9)Cg*{)f9)dX_PFBa3WwCuw6t27GY zd)ajdUTDa~%ym(BcP8ErOmd2SaW--P>ebTv4T4RN1ZG?ChL_tJ7m=G6oJ><0-$RYz zjQRs)MwKQdtvo7kTo?s!BEuO*k{hvpzZ=xWHzBEX!{G+ow-P+?_@&I__2#7 zfdZ=V1ocmpka5%S1n8TwFWGNJg@29FHkFQY)EMAkWpC6W&);h;oIn-Hu;hzQaMK>w zE8fS*%E*p=IemXQfQBm1?tOD^FcZ?zej12+nHkNpNqw^(_9kb$IOO*nII-=kPJFK+ zqg0Zv&*u;_xw9blgv~dBa3I!Gf!>2@ZRpLPU5eg}IhJyIx)A=3Fj&U)mwE@21+lpV zu@=%*Vf#Z9uzSyt4*0p-XH{%FJoppA&wlU;wqYL)6=ZjG2lqloNM7aAA#4lH2ser* z%5l<6A<9ec*|iU_ONR7;4e)WtI)!S;^wH<1*hJbSN0(J38-t<)IMoqbj2b|!@`t7y>?EYF^aAjyA3 z1e3UiN<)vF1Xaoh0bZ7kztFa54OyrZFV|#|=gYr6Y^u&{Gpx~Q*pZCDij4b=dyXOb z3{PbA8*}L_&O_aa1fe9*lG569FNu*-l*7NsB$E8+-cyg4y7_T={4>Lqoc)`b16T->_ z2ra}H1%oc=zHJ|b8RNFDAnI;dKvbTqwrPk8xj^P?A`FA1HlCJv+^S^7unPU`vtD4} zIqt|xR7fb(pY)RIV>JzDFa`#f2_PB!tm?^&ChHwA4VQI0+liCoHV7m`J4M1p9iFQN zw^VhB_o|9vn%;9+?xg+W(L0lE?D%LAnh*hp`RCrm44U^^rCTUf0ta}0cOj>p&Z5Ff z=b{}x##yC#AIg8(AJDtlaR#wsje38oUom&tNgB@Axw2p2i1euR-ijH= zPr6#_F1=)iWNg2>K7;D^d2KY>*6%CKEQuo#D@_LmzT~}L6~$9s>Mm|O?bm9Le&~zg ztUuF$j@d~R{~Ag`*j`fMymh|}>n$w(2`0zG;tlYY_g2*W94ReqZ-aThUCZ{CgXLWi zp~F1w=zNMhTvqUXs^^W+?UzTr!ly?<->e`ne0mKa5J1t}^TyB)@IK$tG)2Hlkj}9? zZPm03=Doh55EYgU(!MWRk=lm&c{WKAM12reT+2cwLJ6j#st|(XGn(^%ueHJ*Y>=wW z;{)|WA)oUNO$OdIB|!f&6lz~`QDVrZpq599C9lgN!7B26q(81A?U4UulEqbIY=3UL z6>2bnCBK04pT%~6#2ns$F%VZo(Okj&%T zTArdQ$!O!o<3PJ|-oHyf5@0jDQ?>F-EH`iKs_7hd6f+~d^<>-tehNOBdG|Lv-y zdf_vMvVd`t1G?LHu}2t1C!6o^XZvGgo4@j#8*$<4do%<8bL~IUG5-g6^nVLTR5z(n zA(+~ruOlj981gI7Mm9JQhedQNOS&@<`G)A4+R=46Cw)zf!u}Nhv8Jq*RmHfL8#{Oo zx2ck6cZ<}*TI!CS%TjQRJ9*ceG=412$;o~o`_EM${H~>n&^-n|^gwg#RYHH|Fv;>Y zvG;lRbG^c*dm0{_p*m?zDu|x_!4HzOW^0j#`A1$d5Ht(!V=KGhHal+05sii7V6k|k z)Q8^StZT+be{lb|T-?&^0Y3^wsKf^bmIybRDiDv7m>cp-gE)fxK#ZClYc!6l@gEiwJ9 z`p@EA?k=D6mMrqb3Eg_`T}CVn-+l%@*e8`tfZ-^;u$I3&F`F2n)nFQ17V2x!sM@dW zhhX(PC}YW|RzwEwlG>Q(Tka8JEjiWZIix+}@5_zf0ig4~;6S)<6|a1bA7kOP8~IZ^ z!3;N6L~D?ZRIRknK)rZYT)a(F6%9-+Wv|da=`Oua?cGpm>IrH=rf&-s_>}MCzz0lh zka4ZVzFTiJ`SgSf`RLWvk2f+rD9O(g>{-X@1@L)UD>HE{U0#_Vw_n zD{2i|Xzx97o*|V~$KI-?to=(gR(q_3BUG@q`1B_Sic{I@>_fi1e`z#yy%sMW93^}3 z8ZSZKKr|vjOA+5MWnj4TmblQUJk87J9nZMwO$G1GKK}f&rXXzTagF*g2ORr&nl2`x z+y!*77UX`BwgGLS7KF7|a{O7`# znDNs-<5SOf;!<;WXZt)GuQ#|BoI5t+v}Q*KA7>;xMEPkx>tbo@fh5^oA|kKOPGQI@ zBh_Z&MtxbkYtRlQtK`789#up_ih(1G5Kaa6k0;1iM9v}JlLYZH)YD8Sm_NDBwKW_d zFnP~z9JCYvYL}YX*;zMu!;)FiyNsea$Ifoyi@mw6{SucOt&995m=2dmx5N1GaUys$ z>vK@Iewaw0VyqhxLzlqIU&4$KyHZH`O8nT%9;8g zI+YT6+fu#J)of!@KM{%93a7Msp7T`}W0#Mh940ux0!xRcvdUG&OkNY+-A2H2N|Il< zgD`u=jwNb#D5b&3gX1PTzyY{euX2ds4HwX+X7qbOOj1t8+;NG>EQ`>$EVuh5k6xgy zT+TfyU%Ozg8&on>MeV}ok?k(mNY7}x<@2#{Pimj_C~sSva81pNA*p8@kx#U-$>NZX zSiQ7)d1%&Gmw&`Uoqnny)6g>9EoaIVH>|`0GNYnJUD05@LQV*aaAsy{=^-}BO1f!% zwc@{#m7E5$Oo*dh{3KkQG>!(-6uwjW+Cu8?DX}GlArXK7_WEIEJpBG@r*3HJnwL6f zKTy1e;mw1{$okQM0xK@?L<*sUTW(7*k_;_BB4;aaHiIL+<9$uCPii^%SxUQ)hP~%4AcbQ92N2F zZ?8RhcI!vVSgpzHJ6QpI2a4TViocN`l2L?{BL=9D{kEq2Z4Wkf8()#Y_v-H7UT@zy z0ZEw{u;BOi4P7}7%@gyDPaxa_o^yPY0l1lYZ`^=+vi=Qpb~F;OC0I^oTTSloqi9Z? zmRgs?{n9d>T&}T6fg{maETtOMjs(FcN1zrUC*BF*^>I#zw$QwQkSDMtOwhh3SfiL9 zuY=)>1laCpJ2;uz>Rh-E&G3+r0ofZxcg@2389E-9zI7>5kJX**eoqCuEe6$f7Sy?e z(1F6j%$`s~BO@RbNl8sfMNRD&;OD}Bygiz^Yh-U<6CVC5J2@rFyr@{YkE(*F%or1r zUsQCbKbbf`uL+r|Fuw5gxCTSB<``$jqWTfUcq`Byn3354q_;rQTb29IN%acTlUNXC zOXgR5i;GL}nlORY`h&ZB@|<0euw|yf2>d$C2H^(XJuVe~QMp;HtSqOfFZ$xTz95f4;1{dun`u>}? z6J*?G%%(W5&eL6dK*f)8a1mx#*CcRtDQ$@>=s0kf&;qhQV2jRsfIKjm@xTiIf5AF4 zx{C6OTpcfP4&`-0iFC{6`|R6cm4_zXHLC37@K+BvV}40B79K|tJ^2MiyZ?O1=Ivm_ zkC9Xm0#BbwKDk1}YdRac0qH7ch9)L|7n~OFVGW0;+})X3m8V5ci#pA>P9Vx&Z4Q)I z9&bBGX<=$fy*pt#iMIXl{b8uc%dF&Tux82QwAXldbM;Dynwt7g65qJv!^V)?#9-Q{ zXOhpO?S)Un&$&g(y`{OCx`@mZ;2)FaAD0!H|K>ij;6_TXUCMS|{qu_}J5;jct@V;d zyW{ajdSSdF(ZBaNQqTBaUrQKzeoYWztPtP8tDC2fOWNqu7OiJ6GqJlkyIj22k%lp9 zJwrg47>uI+RpnN5IL+fQTP5_sT4IVpmEq&FRJdcoE1(IGltnGJ_n39KhK*<{Z?o z!CO4eThz=3~D_5&XJ3932Y zOG0@YrNZ&{K$8OBYIPo#p!ic%J8Ziq0@v^2o-AZZ$-+nw1agmsCn#fBD8bM5Pz-b@ z$4Eto5Qp}zeGQ?}weqXo+Bt#TQmUavl{+3u(R@bNFLKBKggz(B7#Z=umy(D~bHA-R&TDQ6oQq}t1*rf=0!=uNoFP*XiwYt9l z@xwVA$ktRwy~P|MbbSj~~rGWvz54cU+R}(sF*t z>a$6Pz5#CP1eORkYMf*yeB_9sq0eW+t5WwfSzB4;V>Z|mOUTTt$*X_8J_R*OQb)-` ze8rI>f+2(=Mz*~%NJwAM&d+_ca@aKuY+WRs+ zfyC>Y0+WQS>}<8=O`-!4&?K5fc*Mv7$hHCqM2qI5RiP@LTA+JYvtT?D{6;==F4;>nHd)HN@asMS)Q~>9 zeEj4CzTDG0$?QAVKgB}R6t)$A2N{ia4B>B$ccS&_O#h%4rjOSPSkBag^Z&Fbr=%N> zZL2huv^+pmkZuD&j!95JPk;i-N=n~)bV+j1koIy*=2`)uPw;+OAbZ^YG%o_=bv57T z%uO`$)VVMu&jG@Wv?a}wH6d^tM01Uew=~(-auO5kmEZv3;JmMM0pwlKwy^HXZq?od z4j_w!9uCD)+B<@1G8A%wm@1HA0N}~jb7d6`d?vNW{->0fCAxBYhde=7i>L#6Ps=da z*C#6;NS$$f{1Xh>-Qv+iZ-8k%!6$j7p9hFPDhid9I+Ey$J?A3Wbu}iWjtmT<;Fhos z|EB+m0d~cbvXQ;I!W4I*OHU}I) zTdI34+nyK1uBQ(-@AE9`LuM?qb4k1u`JBlBp$a$yfaQIe85lI@L`{;;30w3M>uvja zd07jh)bQTihvKQirBeBz_Wsz1Vy)i89cmH<+tOVfrj}9wpax_XXF35azzp|ZZwe;4 z0TQ4nB>+d571VyQrx^!NCtJd4I*Tfme0;6Bu6%y8#gEi#C+{ zm)R@teEydOh??g5nxGudGL-N){%?XW3dY!sc%H5;dM{qLjBxiqzdua=hn}NMNvd~~ z>(}h`QM#q$57a1CEJi>gFk1smqVzX(R>jKf6n;UA1&IYCK?#?{qVQv2~Cb5UVmr0m)h0w5<(N}5aJNJ0LY77%^YChR~1CO_#NT-DY#lA_nN!HEtz zm{7p>!P^%oxRYfZ@Qp!h?|C7Ta#n%unPQnzU>C*+M7$Qg?TTe@3Ka7Wuayw>R$J>W zscXd@+28R5?~A+@34Y`H4S!D;PX~C zy?8iRJP9p98pP!-5x3O--Ng(%Bd2im!}+4|S}mDo`&BkM!NnpCSWW}RTmDM3vssUw z9gxou7ZX!6NzCUIYQnpb(9)8o4%HoOSikoBRQc@LZG+=ZM(7L;U5WW_?<)2gfp6O@ zoCDplRT7kcX1LXJ#DG<5ZGBQP!|wd0FSckd`WoPX;0zZ4HDnpsSIk7STDRt5b?jwY zYpIl-C)AA+{I{fnBzi0PGzShB1zNN^kJa`5TU73=;Og z-T1~lnCyHsp^Qaa_2uk{G!n5c(cMhjbB3|>kwOP!uT?sDjS&)`C^tY zMG=#4*3}Uv->4qcj&zoo$(kL`<+;O+!!Kd|Os4?0rv)1Dv@B)DVavaNxBhM&7JN8PuC7Mp2?^jXsH}JZr&ZATm5zL=IySH= z19CKPLZH-UaiQcHrKR->-N7VR=We7lh8w+g2YkCze@J-r2(ZrJF>l}EW=W&ec=X6- zj;d-dp`=7dZ*$TB`gpnBmu8=Xy`VQG!$P$t5{D30?2w&PPlfTWcz~LoxjWE6j}=E4 zyHll5K*853TpXQlj4()(LfB49IHrl>uQ(@p4PmblS%de!D{FNQ`oY>_%i^O_W8R(& zy?WzmiPO>_Ep64<4PgHLNdlJr^+f@b7|4d^P&OZQT6!3PqEGQ^3MH!)R2E9}d485@ zO(Ey~6H`uaytPh6d2Y{lp{g9Kj`8BCCVo(|PA+Y+t*xz(-4dX?AkCR?d^h7LaHS(q z{MC<@j)40zTMjJCr7|{VnlDX51okN4{1(jC^($>3x=cUAA)YwHA;auK4=eQ&oeK4b z9;mIKjS5ZBJI$Ayddxu|HD5wltSx2s)k!{yLJ+8ZkBf1|hYygTY}QGsb9>t50;8+= z#ybONd z_$TwG9|Nr?mM>t^c~mBdTUO)(Q8o${h4D{Kx(B2=OrAzxLGh(u>V9RG_$ZA^!SmhV zK_x%(uQ)hH!oc8*wlETF7B{*9S9r$<36S&Rzi)F zP5cexx;@{#!xS1F@}d8^sxK!%ClRS`*R`Qg2_pnTit3(w2NyBzBW=FXL6hP*es(9v zKxa%PyAZY)fKF`dPl^dF61Q*Pe>mkOsi=l)#J8u{ImO24Ufv>aHNk8*Ax6|~qMsOW z%xjlxs&nRMTf-GS5O@B-vkQCYV@~IbqYhll_u@ZO^VtuiugQA%pRv8=s*6)!(gte3 z(1tUrgYc!ArMquKTn_&NSRAtFFlh@5)Se<&U?V#bs2+HQHkrJ{QlpQ3=c`Z+olD;bItH#Aldwq~Lj4pz zF|f0ozqh2yu=%53W4WZJpiseP2^*@^lEJ*}v6C}5{^`8=r-#dOF)>QxqEri{Qv+i3 z?!2K6YK-D@lm^pr_*GiQ!m?2BFv& z*Ec3+Qt@#J%?1OOPUeOzWvT;nQOISi({8cZ=oEONCRMa8co|r*K#BUK9;~G@0Lyp| zdm!Te?S%$=iTd*PH1k3r)NCX)f-Ix8^*hK6H#ZmMknR5A4IK8%Y`|NED0CBNT^MeF zwuVQg5tu~Cg~e4=;h;t5H*to#N3fFz*CG=L;>C8Lpk?x=AeP9jmvU=ZJD>A;Mzkrw z4Q%V#Hp170S9i%Jxmqk$c3Usbz5{E^X~}iX`=OzxiD-6uLxJkyXn|{1Y(CHgaB(1o zW(nwb!%i;&{kG(FGif(0IB9F``;fq3~oMUuI_Gaaf+DR-9zId3Lc>_J{~=OI!n2L(bohGedkVySMjNVqQwA zDKzxp1(d~5Fwyq5tJ%K-EIT2g>-jq>D)potjW5=>ok2L%vUqXN5s^eiL_j_Rz;o>u zWPwA-3micSNhS<_eU6Q8u9ke&5FYb!{%@^!fr3bQYJ_JBIlGe1$7kd#4>Jvir8LDH zFPE40$FLNm-;When|`Hd5y=$Q4;t-c=NQc!&1304)n?Bj;z-og2!0dtlhRQ?H$U*V z&zRexq1trHP0up(z_T&kgo}$KXJez`fz%Ygd8gsjPf9|Z!NKzV;tbcY(P`FV?xHDU z(~?54@ibRkE3zacB>cDMKcRq0v`4}@#h~~o10?Yg8ReigGSTqL)R(AbP?)l`FnPi@ zHm1ysu#8pD5dXE2ux7YnP&)Dhc1KEkevlGQ|JMys1{gI**)C_31o(s}=)N?C4635F zgPe{UDsk@!JO0*s)!}_Z>mlTR%z*+e|rk3 z#V1dSzANhxlFUG{(L^PcRL;vZIw5O*HSWh3V(IDisRm z9|LFKH@#^Ji8Yb=QtRw}RXJERKYM>dg5IQ!Wz7q3TfF)&J~4qUq3=qvtT|D|%e}nT-t2(A5 zhC&70UMW?#puTaLYvU|{#J)Xn4JKBz)IFWn5?NvP|=n)gbr|Se^ICCnMhBDyNtRK4JONr>}epLfO z2Xxw==O~a^aS;oiviA@Up%$xx+q@tpEDhN#h@Os%BfTw<^8#nHy63+#-zsWPW>bOF zyL)L^xI?7qKT9Xw?ipBJ%)#t>Lf?)|aXrR^)JNXW2V2v1RYFkhhBWI=?ntSj^FN1r z>An=aSB*6!(A#N)yd7+o2@ciFH8)m(r8g-zb3T0sEQQ}PWT;%^^O7tK|3xdwJ_fcA zzVHC5Sm0AL{zoe6|DNCWv-RMRV^7^(%bwRxtM5^NDZS^A>a0G(VYMaH*P|z0{>|o; z;XVA#J@hefcFuR)>^zrgHv5+YL3@x){0|Dc&K z1T8x2f}7e>-N{rK9Y~OXK|XHT;1q5+xuHpRPH1s?W0uL84?5!a^~XkZZzz&koXc&`$D<)FqklzHOIWn#(Y0cnrimVaLuWojO8OAgxpU6vI=i73^eSz^nO2(DqL! zlk~#W{uU{02*f5cAd?oUv? zg1#)C7~lgdkupjhYjIRQ3U~e`RW3!+ywze?iklm$473k4iLye(vOHz5lD;G0kry$f zd@Nt(bE>sh=4nxX&|P>`vX%SoUlLu%T6(CoR6o~Dl4*X8j@emQpP|SYwJO;pj)+(bP&F!-vvp1i)B6yzR%T1!sL8nK6-Tfd>Y45%u*}z=qYho#({>?#KbaO3YQUDm45 zOc8{=DW|ioB3kphJuXE+pM#SufefoUoVNO4`mDc%C}?|VA#i%Sc900hb(c8j1i!wx zl<;(VSk#hfp<-7&s@hxfydZD6+36vD`F450at;02lkhjfD;Rn<2jfUwXkqu|T?!6F zJbTt`LBHgtfzFJQ&_ndZL`H@lWNduAqO96=zl3A`Jw_5YqnI!^ zEh3;Gor-|8N-5nP(%msMD%}Fo4bt5)z{t?u4TA^_-3-mlx%vK{=UMBV|2pTzd2?R; z56dMeF!A}^_rCYOu50gW^PI?<*dMrpE_z{>F>KmI0~f{0Ov`@>L0a12JU1A;+~sw= zGWD*ng;PGu z$(-pgB-NIHdS;))s+7jepH4qQ!bgL7h%PEU9W%;YW{&(qLqj8S_wGn*O3HjgSu;Xg zWZuf!!)oT(vK+H|_tM3q9?I3nmDAG&WvY#fi$g$t^psz`;E=CRPK|Ng^ZuDHZDv;E zjU$B69nb_Lets}iV_P=6b3eqA$S)Ji-(ncHaBKX~a%N$z>cS0Uj_=cR^`17C z$y6+$-dn)zU3K6la~CNymA-d(?@X#$#9S>mA`8C;f6hZT{xov)@IaqWQF@=6th276 zul@eHbJtfa?+okS$x#*GiN(}-p{hOzCv~%i7vJLcha+&wz52E|{r9s98e2;y zB&g43Q8ZoXRmiHt%<0yo^mF0e)>6-}j+onn*9+Q#tU9%o8Rb9ty$_EQ`5`p--hacyIfA)U%aj_1~>52e>@>`6Q<>wfWxzV7KLPGBb?*a z7f~VFUR1MknwbotV7gqBk1(51W?;C?qEIuKLUS}6WeOad z)UNLk#6$zfOBosIV(VhC6|^)oCy#RQqw)d+wb_&kn1qA<5!fEylU49Lx1TAzd+}mD zHeUA$C4Pj7qk}_rb@h|fXg&ES6vU3gOiYZtGqnyPN(7EpJd^D;Uww;pl^=k&$ zwDa=`;(rfD?i8QQ=U^R;!M688XCgGgAG`pZZ1e2^?}A|GnpW`W|>e) zL$W9HrelF6{$`-~(&Y9F`;}??rQOh~^fkxwA9e9-S^h^;rI+94j5SWS8!(~@@0j^7 z!T53^`@hNsA7An<3``i$jCSazwTX326=dVRJq zdmtB~(`ZGjm$1CDQg1V$23&56FS&Am<$710K$Y@_u<;_EFI^)xRlqdpQ5HQA6;ZQ$ zkDni_6m?i%3A#^TmD_~(m1icI5|fa4ogJ9w4W+FfF$_%@PeUwWwP1a^#VHnmK^0>N zFRa6(BmXY2d;qhdR_0z*D~C@_N0)jZ?^!#~R>&-5nUDZ%Td}-*I#9Z8MG#u{#6=Gy zL)<0W>0dRSw$e|PEnQv@>P`X?&X4=&rq z_;8LH@s_*v!mI*VMgd>F;8MHukVRmfH-FOV1;rBF<^f5nCea19WgWK$R;hEEa*kp; zuSdip@W%=zWy>$w4>Qeus5K?3zXkS2!B9V+>w38fU;wvxJ|degE|80L+>M2L-bW=2 zAbdzmZ-eXENJXsE6%0Z!d(&IBpT5ECy(*X)_Q8>q31+Z$^3uFbFv3_|pb46mKCkKR zT8(euHm~t)WBmhPn`p2(XqrHm2b3{qz2tm+r z&MFhVM$eoGHTqYN$|@@CJqd+Ws9tsPD3FqnEVMWV3VW~F_;I*n^Hc31pnDqyLl)ps z4K%pH3)tXHU(?c0W&oT0m~4pZ^3?CZ_t5VQ#R~!#eRGZ2 ztgFDan3uQVs>#w3MVMkkY>P@qlKU2AWj~i3WL|y$zG_?YH;>{4b*yBw1qzF?V4`%E|%|H1*OIFup$acIr3N7cu{!zZ6oZwnj>{FEMU`sw6HF z)o7B6XM-nFVdI3xvH2vY+m_nE_j@ag?H*~rmp9&f5TGyQj?qEa!+a*x`SfL091`;a zvFa#DNij2|dZ9u~LA#$poRo500~c;0FU`68-}jOXPumiGwfU2Pg0RYU13O1?rhN^J z{#Es5cmz<)bAG`pP1ll&y07vezAR|#)Ke`vkb}`O{&obVz>cZ-`XaO_e$e`Ixo%@D z_d(e{cq)K$zO7EHgTwiglLmd9cd3$ju8!LpCB!2Mgxog{WBE*~_wgQ#PfU0j9p}pl zdD_m5@__zK7SFf5w9c1AwJuQ=ZCKp4+CHei4HQ~+>+8xVr3y^3aFt1y9R#zLsn_<1M8xx1QdiW+jKv(= zDbEhm0WfjflIo|uG`_vx`_jz}u@%+v4 zQD{y>lb!CPz2>ueHDHP6ueAYW$~_-RU;@7^wD!OY;D2szDzHzXy6HX#FeS9wpx!%( z1G>oZd>I(%V66M7=1;z#AD!&ZRzRj6qs8!}BI`&Yc6+51csoQOyJW@n^3P1|?d>Pn z6?%(3#lXe71H&Ob*Ws)x)$+asbi9qI5u*9>0o5LG>lia-g6b2IkWdJ^cnSU0`A|x5_EHz zC%mdAKW>nHdGe^Jn%^fa`xq zny+2*HSMar(j$Xv7?Xt%vch#L-<6F@Vh`|?($r_+YPf$hC+8YNd6za{dK z5SF8mrwq-EDGYc`_V+5)i4*(TmBjmNn%UhZJ7+rf~--|-E;M*Abrre;5d z1Y?Z=eLo6+iSXl>StB$Ob_(j53^)yLeU6~DQns|*H;@CnOtYb>HqX(nd~bE-De6lp zo?Mx~*uP1KVW1S?dji%R$ODLWk=QNCrLgX9 z54a8~slBCkJev+kR?ZEQii8DzBA?^CxCr_~#l$*lQu$8~B*Y}ZdJ~U0#(!KJ8X8(= zjjRO89~gZ29ZWlf!^ghA40!dxdUtoi;Nq}O^&0qrB}j;axl~5$KUxK?in-W5c&IaV=%xj+0j(i20$>Pg2{&lJ+>%8+i z)BNz^-@hkv0vO-CV~XVi-p}Rv`Cw>ec{zt9$6Bgc&u#$0pxy^jQg&SuVQ190u-6s# zH^ZbgZ!4%n|B=WiaUSLwY4WIfSiYGSlF3c>U6-V>5s>`WTz$t5PJgn?KPsrItB+?G zbG>yetguI&8+uqsv{+*d0 z+r!Nr_ul2jQtr&n#r2wNrfJouMled7?Q%N?FP_zF zc^XU_kH=5M&EyH z0rY6nHx<WmJXbCg$8CIke1MnP&^NRO zW2P)DD)qR>R}^FNLZ_c;}Q$coF*tXk^ilpBE=62rQEk2{3SE40@k;%rM0= z9U`v#)UHl2j`H=C?MpOW^$aW_wQ><&S)CEj!(Uj9g*QRc^<;)y5wi93so=zd$sgqo zz>bvefb*cE!3S2zEQ$bU^gm?-TJ?XpmiR{VhEgoGVb5gXdcW9o8pll&UVzO0pMK_I z6!&=uY0K!!h#pDpg581g0-twnOVJ{BjrETMIaMtaHxT#COFhL!S^8|QN;EIiFMaW) zvQ&b&)FeQRA+5!(b1+0KUg8D0D;ce=r0}ZM>?dopfjz~JzkrQHIvCMpwPBz@Wjv6x zVL=n$hxP8%#|z!WNgwH64?XB2Bp_@sagNuYu=zN>gVZPt4+2H%@wUc{j#iH1LFn&r zqW;^`qTmD*p=!d1Bk;la2eRD4HI%=U${uj7O@{>JxujqY>p)KJU$jl*3N%lV_qTo5P_a=Twec^U3zLWwbCce?lrAY$oaKI8h96&Q|+JRgN_=q2v zs~0G@piZE0d`+8DHtnv}@0(sKpz!m9qHlkz`)4OxAkH|R#bc{OO?TBBShmOPD+K6^ zj{UY@+?$)5!6lFmJ!q5L5|f&bWg;r;*W$2&uT(74M^Xr%55Z2xF|?t4mkxf-G?dTD zGBu=~O83)%`Lv0V(E};2{hT?ebh-8A{fY;aF?(P3lE2#Z7-{lDi18VUk)zN)62SD zRlEk7u89UW%a!bU35Npb++TkjX&LGIoxxOo;89*J=%ZHJqN=LOZHoB*aJeh|`4WH( z#(R|VY!@5)(x=-x-LGN{wa~^YM_Zi(K70He7UMx+a8nWbcGkluY0134bNhCXv5}Fb zuIB5jzRuC;(I^^E2M5Qpi+`+UuROwI{9ivB8=H*N6M4mOmZZ(*V{$>{!OtHn=>;x2 z>{N|)ZD}5sUSV%sw0Whr#-ddbGB*e?p37Nyyk5%A>PBXEHX)_A>2>F#fdP|8Z1-v< z{o7o>BHzfmwZ-pTqCub3)YKdit2g#VP2Rqp4HJMOjbGct%yn89DQ`~fc^$)#s?AmBWi+N;fa|Yi<)jq>GVIw#)jH}N zg!4fvg#u-;Q8R4K+-!9Ae|_EvXfL678aII zER**3V7+2FQ9}c`=}vl%gF1UuDYj%hARxe|wCyZy43wkkJ~aXCJse^F{%+xft^*)J ztEKQc%*OMXJM6O6La)!(NC9A^Tt|s5zQog#4936IV{b~IDtwW_Zfj*VZ>s01vn=I$ znp(G|E+rQ;wZHVJ?SU^ed5c3t+wGw$3g>8fsZFD^IPlSj?W`9f&7R! zAc6^F_EYl%`S6GJ));{i|N^loZEUZf^nAT-yRwLcpr@KquM zYmRNu6cxy7g|U{x;1dyQk#H`THh;r6Ck~3VwAeP-5csYM7~!)!i#^0&KunbQGyP^{V|(1-#tcTN z({j}`HD!66+JH(0fk^XQ`x7WB`&mXtW}v$tJaa{5Wp&-w`S1x+^>-yee=RiK8*}{q zYieSV0xi@90RJ=J01393{dp!BX=||jmw+G|%(Mcw^(sS&%ax7}Ae$N+9R)|c3ve*2 ztt1lPJb7QDD$&)>6f244!Qay57z!|DSs5wNaZvlVt{hTsIZUpgt6QpAfct26A%*o; z2CFD5(J)bctbrzlzu-lmrh#m=n`JNM?8-dfzjH&L_$Mn|TFickencKA;G<5GD0L((#f8c_ta%A;r5@kfY^Vl z`XL}ne)QG@6Ax3M_7szM6#biknei$HyPcm->vB>#{-iP=o$OT-zD5-{~#rg-y1 z)!UM3(VU%9N1t7*4$$GhqeZ&0`rjFqw?0|2|h<*7V zO0^^i{v5`Es$CA@wf_k9$@g(PU4a7kvQ?Y>Z|{A#?rRAC6Cdi zrx)e-w>k)lOOy?OiIcA%WoLJFqk$56~QsVlE&3=49J^5qTF4vg9u_PyDtx6JTG^>?29 zYa>4UpC-sPhvsD2ujp>>OYJW$IM98H({p(}q%PhCjiB5$7F9%HJOGfn<%P$dbr@qtmt~MTj zZmr1)qrc9vF*3RtBkr_J_mhpKr@n5+-J}Px+{PxYr6moZ(Q}g^sAUL>5XJeq*}Ng$ z>SbX0YtVMhE+VQ`R;5)|7q9W6cIS*!kj8gWr`D(QY<(18BBHxY;}^nGN7;fui&|{7ribxc_Zmq^U@0U@#g{(l^E}v)7|{(SwHN_xNS~~)ufJfTu_{|-oAY$G(f|po*6FpJ3bZTo-Mi^2^~3%d3_|zX8yue$YRv5H zdVp$KWmc=h*j7bFDR55Jh-jTm&S8s@)d_+NB3!IBR*SlQ>#K>Mz9Yrt#pm#z))Y6J z{)^AnSI{M{d0%`MMuKPVQdQDlzWlJ`$+)mt4gStxWjU8^DmRBLGKAXgT!iQJsaYWZ zfa0WY^)Jr>;77o`UNvRqYSkUE&Str)u_4l1^gVC+#q91b*CM{0Ta%J^b|hu?#{IF- zwn{+77)eFeXv~!-YD}T8FA(AR+sVup^R!v*?Y{sWyA<{H_m>(?))=r?G64RE>iSq;R5Jp;8%A6oB(@Leliyj6D`+ zx=|+q1x-xcnLUT;%F51{f~?vO?{tZBcX05!<$6~lt|aA^(Q+;;XRaJ^#MLrw-Y;F4 zJq;I^ps+9uK;f#Bs-QrJy6h+}GdFszvB73*HF!A5EiI`fWu*9hmJ|W%0uW61Q-^17 zT+5Lgpk~?luC}&4uLoQlCpM+x%f!VI%uI|f4tDEfd8Z;Ct0rqJ_wL=x`IU=AA`_D# zd-{f)4t}R1P@i%Z4{+ZT5~h#C9yMs24!>Xf28P`3P0Adpt{_*QL}}`9HAsT$%=OIL z2CBBF3!rOfVIV)Lb_{}3$bZ6y9w#L2Ej@{b+cY2SH;mTmsu8M4wOLQU>OVL*`AZ*k z({`o>XL$aUAp$PCLiL0p3=Xd~0&s5$a7uGuD_syqUlo~5-2v$0L=nQ>1{szMyN3|Q z@~XS4;M#4~wrcv|d!J3O(G_$XT}2gdZ*Op#TI%ZeRMyppzm5!>t=v$v(VCu@64moO z!B6+~*G;{Y{35>(27NXx^cNTZNUm!V5cD&Kx7lL$kKBbZ@Ab(!@i#U%g$|~(i&WX_ zYIa^WZWqt6GsjBWfNFtL2y>i00JFW`h}TnLBG&61Z(qsATTFg)&bSl|>cVq$SNiz^ zpn@taPC9tYLUxC;4aI%V&*_m1P|KFA>f>Wz*?s_+h1Jzn_;P1wCorM)_UK6F8l>*3 z+y=NG;OcEgP9KUInVTOVqdSI#IKzc2|BJ~C(P{Y$ISnQNUvoX?VrFAQpN#=$)I)OpUzXJXEyEMKIKGjA_qU1?QF?oz;k4vF zbE84b65rv2_i zQ~3X0Qh7gYanU)`PErcHuJPC_BloeqC^}o6lF8~66A=+vBHd!?Lm&4A7-G`Q)?>@g z&T(!ID@BQ=D4M2IKy8^$x$K(4{p_zq)UL0DuT~rf+8Kc>TlvZWF;}kJVEB*ZqQ%P} zd%iCZkJ!mWLPIV2A?Ll2GhHm|o*qVi^p%wBE5QAtI&1*~frID5$w{~?-qp^c+xYP~ z1oVn*ft@?9iZw{3Rp*0V<#CP&;XDGksrsr5e|9nc)|A%lp<|W6jI-kWlXUeF>ol zn|o=(9*0$OLPREi!4Yd~a1G$5OCX6lgr2y#@Yh}2v;H}(`OOTz8p#gC#SG`A`^2WF z%ZUQi{XYa>#LUnDk?v-ovt|AAUX#v@(svBUZ{TpPM!}{3v~$8aA-M?W)Nrbb9@11@ z?S#6ddPuWQcg>0QVuq@UH^$ z(%+GO4aQejD0I4usa?hMJ{^rMYLSRIfP$jlmQ7>ZCncYa~K-KZ_MSLnX??Qf-}ZTarZm8GSnflzWlQBw&Y zwZgko`J6RtonDjrcucDc3vbPAO^KX6t_O7d3@>jMN!NX#zNU&TJd6NP*+Qjxb9VOK zx~sBTaB{5Wp7@%^o~i0f6PC z4;yb2ocFm{(qik7b+>>6mP#&-n}(Oy-{TmZ?NI!vB$4ZPwy>HoyzIybGHV+fw(Tb= zKYqwBYls?I&KXWcU=Hq1(FyRL9MGrt_Vlc}C@Cs}PELT$1ThE-E*HO09Qt24O3HUD zeH1f3e}Lg8qSF8YNjKkpppz0DX)@=M&F%yUy!g*4f#w`s&j9*ys?ZC6 z@dZ=tCWz5jyMQw0=i_^TbG$Ql88xDE7YQ)mg^Vpzm9k_dROnPpzG3IAZ3|H?(q+@= zswZ%7N+E5kS&K(Mn*~1@X({#TQ(?*DBfV7Sl;5q>)2_W^F=sj;mq<}e?1)Skptbs~ z+h`QknS&zmp?8fMkjTHb)0w@ZK6;yNM(f?WPEQ!(nJ zVoyizY}D+myCqH~E)$hvTTnL1tN14fVQIK(s1~Ma; zcbpH8$*8d#$O`3ul099=$u5tC=x}0_5)-c>ktBdnCm~4{_E9*Kw@%gD0_ld#nTogQ zO7o3erFXu8yw$d=vy*H6qI1F&w{KverkumpjFyI`$ROR{zrilzaYSealp9~nqIjpD z?CmFk1C2b{PH?}@I~TJ4X3cJLs2h&HZNZ4IHi*Suhn@GJ-jP!E2e&GzP#pt`eGR!8 z4HEf6`F$*`$+r@7g|U5>MU=pfb@<;wu15jra zAP;I48ME`^;})p)OkVj?m}U?Y9bM(NT4d-mX=zdP?GFL>1Fn<_{v(Wf z)nxMi%Wz0+(Yfo?M{I0ta%J5dMMffQ5s^0cIG#OSYn7l&g%MnLK59h{@D!`8}Zo?~fH&1b#x_n&z73+im^xn>L2(HC%72Jww@ z)V*XHl0dk}*%pDb5(Lh;I1;cL=WRZ94`lr5bsH8B+egmfl(4V@HC{)@2h7*^OX_t? zySol<6U=-byD(4_9A?kdJAyqn-{5GfL>Tk+cgFr4Bq;|8ZoWShpp%00I%39>Qd0g! z+2(^As#s{lTY0+-+M1ddfVS|=b#kUSX*Y~~20osyGZPulw}N`$*^rE6DWA<`jb*s8 zX5jivJnTHcBvH{HzTVpP(B?bu2zgY3`cWS!I{^l>`_4kDjVrdezb45LxyiPu3cye= zJgU`NkR^sEJB0;_hwtN)kaGdj5^Hb1nOR_WS*Zllp4ldG{@e=4N+uV19$pfs2zVg} zR&9BtY6glRUtEE1Ml`!7$?SMN3ZxL8?9*UoO>R!!)U?94ARvRgzV?|rTNv6Aa+m*n z)ZX5E+xj(^vnrrR2x<#86L{+R9XKnW%#Q*VkVUsXL&(&*tVLHx&27ulRnJ zOigH&2|ImTE!5UZ&v`p5fTe^IBDf+lf7BMXe?US)E?DW{q8}?sL8o5%;hjloQ`7vA z@Q+2W^BhvqYfG>W@)OlHG&Qv}4xsuq#ncLNZg@hs_8;Ls>J)gBw5Y<++j4=Ndqyh7 z%*Z%X>lnWu1P2NqyxOH8O=cWLoXBy^8hjM<{Y0 zzwGsQMXE4Nx1n5wx6^#SM3*;epsq%TNpD#PR8}QmzV*m>Y53!-GP7 zbl|tUDPnq_P-p|Tn*Fl6rslDO!(T|OWX{JYzFB~(^H)+-!U%d-l37TLf{qvIl>JvQ zkK^eBDYep&UQh4@%XHF|Jo<;z2Qi>oeYV>8{)ArNIZphiwyP;55DIvog0Q^jyFEsj_|6`a65VLB1A$jvUEO_5bU-VaA9*<{zSBKOD-SlB8Wj4q_10PYg%kW5vN<>oZna>&a(`2JiD3Omg=t}(< zvxx6>fNIe2KqH3y>0>2P$iq6lbm1YObP2CPUFWaw@IxNP-_fmgs@T`Yy0pNtusS!~ zDk--cTH37@beDFwxC5~RqUo|`KGUN(%t41I9@X_83}?Ah$i~(*J~f8W`%+f@Y^SpF zP0LqlI;|Rqe_;F;zvLEMymkc>s9D+AygU162s?#&U59UBerEus0FEyzW;w0AW@p6o ztp@LZYXOeuM$JI|Z915Mo=Sr?EPVa_XNr_Pm3!430-3tHx&r^kCFeO3*?LYv0aTvd z);Eca*CpP5gWJ&JrPA0arH_*|C{fvT8(Fj;4$U_~&06p!usqPv2me<}kNmX<1*j*P zK^%=Sc~;6lWs$pd664DYgi%=xEGcik-$^ zYy%M8O|Xj{JmK?{IaWr-^Mf@#OBP<6?PWNf5w(NMF8%YdT*ZRYi*r5H5!F#QgAg|1 z$Y=+S?E>~GUj8OZL0$Jcs1 z7HO6slB}hB9uLRQk0LZslR&p$f7V;GRjQ4Gftsi);oCQKQkl@2gbI)fUk>n)cwxra zJ-^|Qvg-{e#3clgu)4~;>jsmT06ABxosblFvZm(|Wabx13Jl`E){0;SKbD$S$`Wc& z1%EfMei?mwF0ox}W@Tr3R-3jZNtPx@_jY0)FSWGIl4 zI7`o2eaXO#oi4WIzpg$Qpbd3DskW9(y?rZV0fg)B`nTE`ZRoLjTW=km93Gy2o;tgn z+!EUm5L%q!db88h54iB_=qymRXhB_?%0PdF0Xu(FM%nfsVvbVrx ze5eF6clfeHgB6%AG>1O3KI%ke1)dRtdh9ho5z_>%8}2-6OGrux3F%oqloN9InWKUU zqSv1)gwl0^WE@%_*XIiAf1f+_r-aoLy8DoSMf!z=pc$%o47{yauZ)OOB3&1PRjS>#0HO ztN^!&ii(OoVISDhNeGb50}+n{j1wFypsECK)g@_F?Vbfb?h`SFtD@Z?*8~RAF7d*r&#cJnGi_!jt+4eA)LTJ zlc?m|JmM8CEogW#Ha68t(wgRDgt_3J{lOfy9Y!>c>cb%w!6?Mc$I<$45&dX z#kUW*RNy?&l(?Rv^$&!X5Qz}kJZBAugCjx{*u;`$`reRTw>}Yp75snxT<-Fv9$#mt zl8RHoxFaEs%H@VR8xH%SQ|(*uEhR|3c45H2bLoE&?ibjWf!;_5YU-N85@to5nvgR| z0DjyudkElljybWwAa!Rkk8PUPO29`^D*p!+zxkb|+AwEQL23h)RnQgnx>Ryf=Qv=_ zAW7ur$>>04X$aT{YS7eGT$oj|rRcAsVkZOFMuG3%s(t`Eu%6oVg+aJqQLE-y(VHiz zsFX9&;)g@HMgNP#YA3BYY1n^bdp>fQ;rb8$>o*kQrBc>4$JBk5g$|{HuJz5Waxul3wRb%=fGs=r6#X6n$;2^UWpDc&4`WW^unS`L`o6L*@UO#`(Xa zcmDtX|9^MgB=bs`0l|ND_bw+VXD~Q^<#;%&YD*srXouU*H0S3B1wEkN1P+xjA+Om= zZ?L5vgFqAGNXoXdvhrkvCRhIsG--dvy~7P7pk7F z8q1qH`u@46$Nu0zbY=7J=&z&?mIVi_eLX$FO+M*C{gxOU3$F$@Hz2nzxKT%J+`oSx zFj_!c((HkX?%D51t<`Kwm+2{+M_b+DRF=fh4zlH{otCrUi-?N)7H{a@j)!CEWna} z{HN57jO+Y#5txypKY_kNd{lK!DxX{Bw{IT^i?FTX!g1j}rSrNc4+Mk!qvcgUtnC4a zCC5yYFR9{fLCqDiXrlM>o#eXi2am6GSS3GGQ@sujS8GefmKPd4PEE|#2ZrVSKaPwJ zNB*Z(GzP1%V+vJ4?t;3hB=>g6msah4L%N)sFTK-1SA6%+`ZpWoTJd zA7w#92}JLKR;JDB<}GDkRee^MzsDP(<)Skcn5%<^iH1M?Gbh2uGoX{fMQaG;;&COm z9^wTbM}|p+VkK4P7@1-V!7`IlV3jCQol?CGno(-^aQZ4cXlYrUSCN-n3}yKYK>K}= z39$6-Z7b?cbIZQ9FVvM4wJv1bVRI3|!RB!mUuzjy^M1VIdp3yn2*j1ib(mtUwF zyyGM2M9AdL8W@}N6342b^C^G!Fy)2<7bO=Ra2aGf6Usni`Ng-v$SFOH1KG(3hE+0KIuZ z4dJQN7YTSEcPi-qmYF#;C@qPjb+$J|7-)H1wr6uxi*O%3()C22KTGH1=f50|qPbbg z=ZoV$o?feO$nXULo!gv}auy8;xXe161#G;b!JehcT)>Ee{R+@PFhy%LV@it(Y(}j6 z{~T0QDrcS<&T-p#oH!1Vkv$9P1v9vGP^WUAr2G4OM<*s~YAZJZp`*px25#Y)Z>dgb zc(_VjJYiH?nl3wi9sokJzC{8pxyQ*4P1cQUli$l-)X3;8mH+eS&#T15oat_zpbvvt zRaXK32H_xyOOEfVWNG6tF)BQ z(OZwn;%CfH$Vo{Fo+Tyx{H4q!!{>Zx=jiBcum4oML{$%JPxI<+bwZ$;bz+r_%S@(4dUNW(nO8r zlzR)p9gLGCR1GuM@Q$A_b5SXp2#ll%mCLvK%fQYKmaX(BX=Mf?nxksnrj@0P5w6wT1T}8!1 zfa59bG(z@tm9+uNq^qdO6aqipU0h2$)m8qhWcX8F%5*`B1JWIZkrB}Q zfgcq`m&(T_RkjXZsz@MSveRa}43e0fG(IZvvnV*L``H;jeUh%OF1K^C1L80r1`r74 z_7I+9HFOQyh_Oj-I__FJ1yPUq{Ym0}CjnhD9mne-~LL%4yWT+N_mJ3@%V~#vSsSXTLB@u~ecArp4JoEG0 zdiiqxQDe zCT|KfsIx{Ll3?)^Q|YhAOO_fCeC@d;0>6Z8x67=oCS%pMe&Hv6;Qv0Y*1Snhs7KX$ z)={Ys$Y;qexQ4z7Yf*-ejcUt^o+*bEy5MEGYW_wntZ?-U;oUc!S!XG|3!@I2)sZ{4 zJ&!6U1(Iv;k6%gR5FhtX7CyH!cu(^@amABcAXYt2Jq~de$n`qo^WCTbTF_Ib#mmdr z_=w^e!81)=UGMF)1JX2)(p|<+W1Mef(}ZMhfU+UkbQ?pR^K@J)_A;;*D(vk+-b>1+ z^LO^d=uM)|P#U0J05t%7L-%UQ=pQ}4( zm@je9Rs#XHZg2i2wV=*IyvYzU9cXf3m~;Bqj0G7PfBr1BvBUO13fd~$=psP2{)}qV z#H6#N>5HMYwV}0+yu3V_zq8ZkS*I{P59F{t*mL>xf$iQk79JfPEj|D`sHyz>`uZ@u zPC*`tV5Xr9#CbIW+R%9a-hJJZBLJoIx}NPf#p{vi=oKixdBh1$XG-pgmOoAQN63_ivpl1ETVY5hgu3Fn|D1N+tsdt+X(F1Om&` ztD#PakIp2c>Ztu-xglCeSNHPq^FN4-@$qrKEDn6$**QmEAzt3ZNH`G4Y4hL#O(T4^PKaVx7b{v-;C zKlhijt$kbX&rRRItBUjT$(z3%cV77wzCZPnioKMOEKpYY%=GZX!;Q;_Xof;Xl`_TH zoOqZg?38>{i*j`2wc&*mK4ZOun3O*aHT82LR&Xh1!|6%b#^p#^gM$z3?ZLF^g2KY{ zcs5i#c2QwcZ0hxCm1&LRV8g~na10$TYUfYXk!-|;tSp2&;VGRSX8uXqJQ zxFmiQ#!*rynwr^^iCS@r8fy?@E6gYzvG=CqzU5rsm`|mp%=|1LEmU1cXrg1uu1@!_ z$ZCzWvCVgazs%t~Y#*5{fB0w=HpLaR-|w55JCxg-K`E@Tm-Y(dDiTa|)t>jlC{@Lb zd`g=V5FVHj=7pRW<`vPDWkL0y{7=(Vh9G+W1Y%LJredp<5?3%yTyUngj6dFbFItbH z(vpjEaBtl7`_);#Hq#$pduM_)AM4K3qd0oqXeVg1bZV(jW5> zePjr!v_V;vTx)2!xoISlql~Gk9hQ*;a*@yN&-c2vrULQxLCEWL8nfayWzo)GXfX}i zR8>&$67da^P884>^5v2{X7N%~QOSut;#043$PuArp(Z^#sv+N+Dn)VrWXHO9uh@H+ zcjqJr-{S7+Hs{c~PSJo#mF~A}hTgHh_^o7_1df-iTq;m6NcmzAI+%$|+hX|5wz*QS zSqFCqZF9Uws$41ZR~}|FoW~p0N$yTrocNS5n^>f-rpCOl4|hU7GU8h-s{IMUbE_s{ zTHf<1CrTJze!TEBV&tGsPN=7MP*r8Z=nbn@<9L1D>j1L6h@Cl`QLX)e%Rc@& zcZ@X5C-X8OGTvy1Tj#1|fs!|v(UvQq>y=eq$GTtB;ahIU#GBr!P;I@zo+ zhrbRFpLfi$P)GAApttCoouAEgC~EKg?P?x494YGcDOOe;R5p?MX`0I%LLF|Mh4;Jb zUe8>aQy@L{5#g$^steZGBx4}k$f~vW3u13SaN+cKHYaA4Gpl%cb5zx03_aG5h6z&x zcAJ`;YcBk1Yq_s2YIN5!Okd%KhffGj{MKyDfGC%g7MR({fijw2gl(#0X1g~&7Yt}VML!O#nfSc0TvLE>f-wQP6yTn}h_#pI9`H$Nr< zw8~V|pQ2FCx@H_~+^Xc*6Gg6jfsv7s6}n=ga1X>6SM>xrxtf4Bk!!Bc95!UniCzWB z{XA~EeibT4{;0)zeWb{^e?&pyHX1!E7?PDBO&6~we0+GYg!=h(bL2Hg^Svu5r>S?7 zck|eeEKwc|qdWH!e3Ug^RaWHP>nzW8>3QvmD~%mnn2YeK2skQ$kvf~2v=F}H&AQYx zTQqN02vF!x@{R~d?^pSY#a!S~Yl{WT%SD+K`I4x;3wp3l*TSa?)FGqdOOXHd+hbv7tbEJXwa+`pdCDa|1z!?#~X${42jCh;0} zrgTw3&gJbEKk)Nx^rXwC%NwT{<_$f#Lay{!%C-$%P+D48ID|1VboXsEPn~WjPEJnV zrSkmqJk~|9xu~cpr)FXgJxTAln~*t%L#pIMI_Q@@jfzspkOl z=X(3r$k7!|f(HkS>oi6=KEU4Tk<~@D zIqBh{g@t8uax$I|x}h#!&C1HkQ+pm{@MyXobNv;}zHd;%0Fsp3D#-34LBF_Bi@lSv zk`dFq_&9hqeAJke`}HaLgeZ{^GL-E5Hb`YBB!=vfELjJQoffhaBimRCSw;xi zV?=1|#bCykEn^vD$u=^cQ+==Ndp*BAf59_9&CGe9^S;l1pZmP-*Bur05mid12x_Qb z|6*Jd>ONp#201ZbUaA<}nKeExqGQnY`KR+jUX4H<;?-+$uVr)IZ;Lfmv9yGl-DMoS z=Jxk`4WVCOEG0Z`jNou=w$kJ6ZQHPeGMg@!VFCed=;srlVKZv)3_&?m4iArv3=hlH zeb_tLci}@2oZ(d+-joA!DY}%ClM}>dsDaQ`Te;kGREK%AeIA{n#hGe44DauI4 zFzom!H6^7tOEMpWEM19+=xU+pdOFBKUikSkTyC8X>-o_K!Vu^i!7C>{Jjuj*>$~1f z1^mKFN)Y8>BhAj+W_pe?ac0Sw#=m>84|%zSKzVFNGc?wnJ%u zZgKq5>mBw(zA^j0TWR0O%vGE!-(4nz6-w^FHp}u_vi&?T?ldB$--mk$I9(b?D4tv+ z+dCIezxaHD_K9Si$zD>?weICt!ng~iw?oFfVvun8`r3It?lz1zU_tUR{t*anLu`-(MC9hQ&!hpFMscRl7AcJV-au-2fb&;NbCx^d#2?5X!z;VDpw>S-n`;u6jDIrvxC%IegQ2_%~ODTd2erzLJ8g99_^o7 z@!**HD*3*(wN-y*R9;s8$RC73z&)zLe>k^*US1wZ;Bs|$^=Y|lS2wP9>sEoMJZl{7 zOb8QRepD&+l%O;y@l7V=)_0SWv#hL*`N~sIUldY_F9j>l7E^vVdhKD7W^D%H`Ps28 z8%SHbb;3W4Bz)kM=l%QN@8tFcFl-+e{U&$K)^>U<`n~rceS&al*h+gO>@EePV!} zYxwY26@eBdUX1xnsd24oFDe1vr}MAr*Hhzi3IQy{(l!qAJQ3->MXRe8AEc>HwKdJHSirF9-SlI}T#Hd&K)Yw@ zWni00sXn^HjV&6FNY;}<2fd;VKPo+Sl}+O461fb;Z9}^rm8~oquD;8Vu9>m}6k679 zZtp4$&3*KGn#j$ggJaHesNa3m32Yh{^h$6RrZ(lGx^A}-Naphz1tld*RvzV1C-)AN z{N#vk(}&@nM>4q{%FDg8T&ybWcnTi~4xImznr0(4l9ysp z#uKs`Z4G+>y3_-oH_3jUt8Dx2!OXX}co&zzXdhQs*OB{WyWCm)u~&qZ#y#qCp+1_F z3%HZCG#cTNW-zl{<;S|y_l|Db+S-yhenYwS_2c0kpQ;!8&k!*7_uCbqKbf=dqRL83 z^>~^=e}#qYPX0)}pkV~Wak5G>vaGdeB3TVg;_(5Js+fWgzQD{n7h=hl9xd5r)Qb2R zQ^j>eEyZri`4aPpTlTb4kG{HN7goe<#r~qZa3dp~T^(2W`JLGcb9;M5 zfFn|aPZ1a-tp{X76jWAHva%7q+*xL6Q6#~`lM9yHCQMvgUtZqvtJDfv5!2PVxj8a< zdSXHZlFOw6_34Zo930G$c4VkH1_j&RWTtFn!llY_5}=jR&~b5@EztRN^Ck?31KP)j z1X{4!t<8VR6p)rCzj`$(DB5ghx-%8Y)1NLU%6q+~tc--v!A8Wg)v%jUAOVm(0XxEu zOG!y6l?vjG0F$(}N8K(5oROX#%7OzGhQZ8SnP_NEairOPEjI$A4vpr%9_Wj(un4xY zf<1mb6VIt?gYl3rfJGZ*E9T3ZqOy`_=S)^ZNtA6s{TBVD&k`_5wB0j*AhN%e5jr%K_T!q3 zBfjN^qL&TsR7ekp!xU<##3=bJ+N!x|YNg@dd9o(@cRI}$6ZVJif?sY4NkwaU1StHns@AVBDOCKJxNy!0hChs^R7B$L+m=WKmmJ)F zdDLL%oK}D26TjK_7=~i?`;nUYb9(sa$ql)lw@u#$r4tqTRnWiK<&Iu-Fnh^lx7_5%d2`LJed~}k1$_vx# zMM*CP+Py)eNhDI5m~D&i{w4ueT4Mr&rFnwOoZX|Hx~k1hLStjr#6;GF)gi6G?ezC9 zhZNpEVKjipmm_dN*6NhPHi%T%nw9&9s+Ko1U;sm;6cq!;e2xng6(}F{O4|l+!+>tv z@hdnao0f4g^9AZPG8gDFbC zLR2#2wz$W{-b@z{6Ip*!AcR+qgkj`CIm7~=0eUeW=AG95@+)=eQ9^{A{?JAzD8tf5F?fmbFuog9F8NLumV@H8 zwON^ZU9Mp;ZKA<1rXETy*lZfmTx#`7$AI+f%>^-0b>=pi(*Aiaa#*F1-P@K(WWY9FfLt4){E5w6&1VB@=o!pNix-vD`*((nRe8Sc; zoKi(>E)Dzjo2&cp5n!di*JEYCEIV2;S<8PF8rK0G)vFi0F18kNhLd@At~rP@oXIc% z_?!-BJL8uURo4dj6tVXBk1j*cuf-3FW~m-!6y?w{F_E*&9*3!fbE9NkCzo-OAxhdn zw^nKJ-$-yDe?cI9>gsaZD%4LL$RW8C$)$%0wH|nTur4}?S$w$0$2Tm&Bq9ZweamJO z1z&dFkXT}EB}CB7se#G$GxS@3$$CNfNq3b;hjnu+D@xDws?KZ^?==N(KMU9b5#4I$ zZcVpN|52g!(nP>H49CQd#ImrTtMtVt_o3tz4c%CiKA2a3U=%uj{5XNof6;9A)_kdT zVVLC`{-4=(ON&>=*{%g(WXmLcE!MY^Pbj5~rd@-pNVl?RjHnh~I&?Cg@M?Uks%#n5 z@-_!mQjgEQIWCO}GKF7z3LY2rd4bl=5g3zBeXtF#B7%Z~n!thHM1d%2oP8N` zgi%&bU5C+cQqI5F0@~>3|2k3Xiub?zc;#5n=yRXTePy`s0u0hR5yHxSlSNwr!U`Z@ z`4^(Qzd%?K!+^AA=_~-jSn(OLn-{btyl4&<22m-VYvxH+X-9B@Z6^@=8(TK2ZK8Rh z3{$5-Y8Ob1W$pFR6$^Lvtp(CRI)ffoIS zm3gVhNX=?TSSti<7X0^*VpasNlvFYm2g>^p9TS6o_wFYsk1oGW%*50*M*-e8WCSw* zgu-V}2CPT%u_8!=Z`5)a0Z!;O8y5Tg#?x?DI2ie;Dt&>AD!nzvo z2JVqTX&^rY0>1Jyg`U-pIH&=)aDS?N`Ig0I>z&JzFM;nYxF!pL0tO3-a#j`=<(;ty zISKY|_9p(9J)5`x%0I_-8vDGxc>OYn5BVx9Yjp{P+HO^VnV6&`C(nXcifBgAZu~%b z{%L-R(4-jUJ8^VOYi$wqK0kUleoJwG0^8GrQt~S=%D>oik(GOb9Cj4+N0LsyGm=28TW9l?ZOy7BuBRbfX|Rq93}5GXGHMw=+8Ee#C~SVMCdK|jaQ1D+88 zT@fkWcx`lf<^rm(7VwQ2YJv9YjGb)qL(;0AWYMk{1{8W?Vjfc;1ODcM2korxxARcH z1HozN_+R{3#aGj_iT!D;`@O(t3H#;Cx-ZKd4Gptewa;RIW+unqGC^3nOb~G@5E=sy zH}Q8aw`p#Cykh#Fv@**&8*rO5WE96YOvi+e=adJ|l5!ps#6LAjuX@mxkf=%>1L@)g zZS8<6+SbOV#j%gWkQTtYI->vvq4{uU98`3ImzBE^gcPj;^FRWEAQ83~Rgdr>pBBiM zhC=DR1y!#%R6?xYR~|EVE<|8V%Ph9nn#fgW0Vet)8VCtw;Z{QQ4n2*t^?g}y+m*o8 z)7#sN#cuds27}!w8AJff$k5?l1#^h+`!cQ+gwOzO@;CMCd#8b%xHtw%VZf!DHa>ua zy)G;yWKrvuk(--a^Z>MNz6l_4ajj_XZ0ycIS+cI(Juom`=V^QUb}wj16)t)p#N!?E zG{$A9P}-^AA9~g||Au`yh>1!XultRV5*HsBss!`oD@0t}^N_MVUguedcgsnjX(nFY zIMz(1tYG&0Jb{oZTwq|Yrvpfg{B$s~_EY}(lJyh2l$8oHp+;C#v~TDsC?ygNE_ll7 zrXZ)e`?Mo?k{5HsLIFF^yRPHMTK&D&zkg~D+U33;JT~<7{@H>yCYY7gM67sAy { return; } - const checksumWorker = getCheckSumsWorker(); - const multiCal = await checksumWorker.generateCheckSumV2(file); - console.log('multiCal', multiCal); + // const checksumWorker = getCheckSumsWorker(); + // const multiCal = await checksumWorker.generateCheckSumV2(file); + // console.log('multiCal', multiCal); const fileBytes = await file.arrayBuffer(); const hashResult = await (window as any).FileHandle.getCheckSums( diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6b6f5fa7..0934a9fe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,7 +43,7 @@ importers: version: 3.0.2(rollup@2.79.1) '@rollup/plugin-typescript': specifier: ^11.1.3 - version: 11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5) + version: 11.1.3(rollup@2.79.1)(typescript@5.3.3) '@types/chai': specifier: ^4.3.5 version: 4.3.5 @@ -61,10 +61,10 @@ importers: version: 18.2.5 '@typescript-eslint/eslint-plugin': specifier: ^5.59.11 - version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.3) '@typescript-eslint/parser': specifier: ^5.59.11 - version: 5.59.11(eslint@8.48.0)(typescript@4.9.5) + version: 5.59.11(eslint@8.48.0)(typescript@5.3.3) chai: specifier: ^4.3.7 version: 4.3.7 @@ -76,7 +76,7 @@ importers: version: 8.48.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5) + version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.3.3) eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.1(eslint@8.48.0)(prettier@2.8.8) @@ -111,14 +111,17 @@ importers: doc-site: dependencies: '@docusaurus/core': - specifier: 3.0.0 - version: 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + specifier: 3.0.1 + version: 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-ideal-image': + specifier: ^3.0.1 + version: 3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/preset-classic': - specifier: 3.0.0 - version: 3.0.0(@algolia/client-search@4.20.0)(@types/react@18.2.38)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5) + specifier: 3.0.1 + version: 3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) '@mdx-js/react': specifier: ^3.0.0 - version: 3.0.0(@types/react@18.2.38)(react@18.2.0) + version: 3.0.0(@types/react@18.2.45)(react@18.2.0) clsx: specifier: ^1.2.1 version: 1.2.1 @@ -426,16 +429,16 @@ importers: version: 16.0.3 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + version: 29.5.0(@types/node@20.10.4)(ts-node@10.9.1) mime: specifier: ^3.0.0 version: 3.0.0 ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.23.3)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + version: 10.9.1(@types/node@20.10.4)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.2 @@ -474,142 +477,142 @@ packages: resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} dev: false - /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0): + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0)(search-insights@2.13.0): resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0)(search-insights@2.13.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights dev: false - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0): + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0)(search-insights@2.13.0): resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} peerDependencies: search-insights: '>= 1 < 3' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) - search-insights: 2.11.0 + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0) + search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch dev: false - /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): + /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0): resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) - '@algolia/client-search': 4.20.0 - algoliasearch: 4.20.0 + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0) + '@algolia/client-search': 4.22.0 + algoliasearch: 4.22.0 dev: false - /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0): resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/client-search': 4.20.0 - algoliasearch: 4.20.0 + '@algolia/client-search': 4.22.0 + algoliasearch: 4.22.0 dev: false - /@algolia/cache-browser-local-storage@4.20.0: - resolution: {integrity: sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==} + /@algolia/cache-browser-local-storage@4.22.0: + resolution: {integrity: sha512-uZ1uZMLDZb4qODLfTSNHxSi4fH9RdrQf7DXEzW01dS8XK7QFtFh29N5NGKa9S+Yudf1vUMIF+/RiL4i/J0pWlQ==} dependencies: - '@algolia/cache-common': 4.20.0 + '@algolia/cache-common': 4.22.0 dev: false - /@algolia/cache-common@4.20.0: - resolution: {integrity: sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==} + /@algolia/cache-common@4.22.0: + resolution: {integrity: sha512-TPwUMlIGPN16eW67qamNQUmxNiGHg/WBqWcrOoCddhqNTqGDPVqmgfaM85LPbt24t3r1z0zEz/tdsmuq3Q6oaA==} dev: false - /@algolia/cache-in-memory@4.20.0: - resolution: {integrity: sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==} + /@algolia/cache-in-memory@4.22.0: + resolution: {integrity: sha512-kf4Cio9NpPjzp1+uXQgL4jsMDeck7MP89BYThSvXSjf2A6qV/0KeqQf90TL2ECS02ovLOBXkk98P7qVarM+zGA==} dependencies: - '@algolia/cache-common': 4.20.0 + '@algolia/cache-common': 4.22.0 dev: false - /@algolia/client-account@4.20.0: - resolution: {integrity: sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==} + /@algolia/client-account@4.22.0: + resolution: {integrity: sha512-Bjb5UXpWmJT+yGWiqAJL0prkENyEZTBzdC+N1vBuHjwIJcjLMjPB6j1hNBRbT12Lmwi55uzqeMIKS69w+0aPzA==} dependencies: - '@algolia/client-common': 4.20.0 - '@algolia/client-search': 4.20.0 - '@algolia/transporter': 4.20.0 + '@algolia/client-common': 4.22.0 + '@algolia/client-search': 4.22.0 + '@algolia/transporter': 4.22.0 dev: false - /@algolia/client-analytics@4.20.0: - resolution: {integrity: sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==} + /@algolia/client-analytics@4.22.0: + resolution: {integrity: sha512-os2K+kHUcwwRa4ArFl5p/3YbF9lN3TLOPkbXXXxOvDpqFh62n9IRZuzfxpHxMPKAQS3Et1s0BkKavnNP02E9Hg==} dependencies: - '@algolia/client-common': 4.20.0 - '@algolia/client-search': 4.20.0 - '@algolia/requester-common': 4.20.0 - '@algolia/transporter': 4.20.0 + '@algolia/client-common': 4.22.0 + '@algolia/client-search': 4.22.0 + '@algolia/requester-common': 4.22.0 + '@algolia/transporter': 4.22.0 dev: false - /@algolia/client-common@4.20.0: - resolution: {integrity: sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==} + /@algolia/client-common@4.22.0: + resolution: {integrity: sha512-BlbkF4qXVWuwTmYxVWvqtatCR3lzXwxx628p1wj1Q7QP2+LsTmGt1DiUYRuy9jG7iMsnlExby6kRMOOlbhv2Ag==} dependencies: - '@algolia/requester-common': 4.20.0 - '@algolia/transporter': 4.20.0 + '@algolia/requester-common': 4.22.0 + '@algolia/transporter': 4.22.0 dev: false - /@algolia/client-personalization@4.20.0: - resolution: {integrity: sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==} + /@algolia/client-personalization@4.22.0: + resolution: {integrity: sha512-pEOftCxeBdG5pL97WngOBi9w5Vxr5KCV2j2D+xMVZH8MuU/JX7CglDSDDb0ffQWYqcUN+40Ry+xtXEYaGXTGow==} dependencies: - '@algolia/client-common': 4.20.0 - '@algolia/requester-common': 4.20.0 - '@algolia/transporter': 4.20.0 + '@algolia/client-common': 4.22.0 + '@algolia/requester-common': 4.22.0 + '@algolia/transporter': 4.22.0 dev: false - /@algolia/client-search@4.20.0: - resolution: {integrity: sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==} + /@algolia/client-search@4.22.0: + resolution: {integrity: sha512-bn4qQiIdRPBGCwsNuuqB8rdHhGKKWIij9OqidM1UkQxnSG8yzxHdb7CujM30pvp5EnV7jTqDZRbxacbjYVW20Q==} dependencies: - '@algolia/client-common': 4.20.0 - '@algolia/requester-common': 4.20.0 - '@algolia/transporter': 4.20.0 + '@algolia/client-common': 4.22.0 + '@algolia/requester-common': 4.22.0 + '@algolia/transporter': 4.22.0 dev: false /@algolia/events@4.0.1: resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} dev: false - /@algolia/logger-common@4.20.0: - resolution: {integrity: sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==} + /@algolia/logger-common@4.22.0: + resolution: {integrity: sha512-HMUQTID0ucxNCXs5d1eBJ5q/HuKg8rFVE/vOiLaM4Abfeq1YnTtGV3+rFEhOPWhRQxNDd+YHa4q864IMc0zHpQ==} dev: false - /@algolia/logger-console@4.20.0: - resolution: {integrity: sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==} + /@algolia/logger-console@4.22.0: + resolution: {integrity: sha512-7JKb6hgcY64H7CRm3u6DRAiiEVXMvCJV5gRE672QFOUgDxo4aiDpfU61g6Uzy8NKjlEzHMmgG4e2fklELmPXhQ==} dependencies: - '@algolia/logger-common': 4.20.0 + '@algolia/logger-common': 4.22.0 dev: false - /@algolia/requester-browser-xhr@4.20.0: - resolution: {integrity: sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==} + /@algolia/requester-browser-xhr@4.22.0: + resolution: {integrity: sha512-BHfv1h7P9/SyvcDJDaRuIwDu2yrDLlXlYmjvaLZTtPw6Ok/ZVhBR55JqW832XN/Fsl6k3LjdkYHHR7xnsa5Wvg==} dependencies: - '@algolia/requester-common': 4.20.0 + '@algolia/requester-common': 4.22.0 dev: false - /@algolia/requester-common@4.20.0: - resolution: {integrity: sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==} + /@algolia/requester-common@4.22.0: + resolution: {integrity: sha512-Y9cEH/cKjIIZgzvI1aI0ARdtR/xRrOR13g5psCxkdhpgRN0Vcorx+zePhmAa4jdQNqexpxtkUdcKYugBzMZJgQ==} dev: false - /@algolia/requester-node-http@4.20.0: - resolution: {integrity: sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==} + /@algolia/requester-node-http@4.22.0: + resolution: {integrity: sha512-8xHoGpxVhz3u2MYIieHIB6MsnX+vfd5PS4REgglejJ6lPigftRhTdBCToe6zbwq4p0anZXjjPDvNWMlgK2+xYA==} dependencies: - '@algolia/requester-common': 4.20.0 + '@algolia/requester-common': 4.22.0 dev: false - /@algolia/transporter@4.20.0: - resolution: {integrity: sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==} + /@algolia/transporter@4.22.0: + resolution: {integrity: sha512-ieO1k8x2o77GNvOoC+vAkFKppydQSVfbjM3YrSjLmgywiBejPTvU1R1nEvG59JIIUvtSLrZsLGPkd6vL14zopA==} dependencies: - '@algolia/cache-common': 4.20.0 - '@algolia/logger-common': 4.20.0 - '@algolia/requester-common': 4.20.0 + '@algolia/cache-common': 4.22.0 + '@algolia/logger-common': 4.22.0 + '@algolia/requester-common': 4.22.0 dev: false /@ampproject/remapping@2.2.1: @@ -626,14 +629,20 @@ packages: '@babel/highlight': 7.22.13 chalk: 2.4.2 + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + /@babel/compat-data@7.22.9: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} - /@babel/compat-data@7.23.3: - resolution: {integrity: sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==} + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} - dev: false /@babel/core@7.23.3: resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==} @@ -657,6 +666,28 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core@7.23.6: + resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/helpers': 7.23.6 + '@babel/parser': 7.23.6 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + /@babel/eslint-parser@7.21.8(@babel/core@7.23.3)(eslint@8.48.0): resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} @@ -690,6 +721,15 @@ packages: '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} @@ -700,7 +740,7 @@ packages: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.6 dev: false /@babel/helper-builder-binary-assignment-operator-visitor@7.22.3: @@ -720,6 +760,16 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.2 + lru-cache: 5.1.1 + semver: 6.3.1 + /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.23.3): resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} engines: {node: '>=6.9.0'} @@ -740,19 +790,19 @@ packages: - supports-color dev: true - /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.3): - resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} + /@babel/helper-create-class-features-plugin@7.23.6(@babel/core@7.23.6): + resolution: {integrity: sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 @@ -768,14 +818,27 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 + dev: true - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.3): + /@babel/helper-create-regexp-features-plugin@7.22.1(@babel/core@7.23.6): + resolution: {integrity: sha512-WWjdnfR3LPIe+0EY8td7WmjhytxXtjKAEpnAxun/hkNiyOaPlvGK+NZaBFIdi9ndYV3Gav7BpFvtUwnaJlwi1w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: false + + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.6): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 @@ -797,13 +860,13 @@ packages: - supports-color dev: true - /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.3): - resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} + /@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.23.6): + resolution: {integrity: sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-compilation-targets': 7.22.15 + '@babel/core': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 @@ -853,7 +916,7 @@ packages: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.6 dev: false /@babel/helper-module-imports@7.22.15: @@ -889,6 +952,19 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} @@ -900,7 +976,7 @@ packages: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.6 dev: false /@babel/helper-plugin-utils@7.22.5: @@ -922,13 +998,13 @@ packages: - supports-color dev: true - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.3): + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.6): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 @@ -948,13 +1024,13 @@ packages: - supports-color dev: true - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.3): + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.6): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 @@ -977,7 +1053,7 @@ packages: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.6 dev: false /@babel/helper-split-export-declaration@7.22.6: @@ -993,7 +1069,6 @@ packages: /@babel/helper-string-parser@7.23.4: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-validator-identifier@7.22.15: resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} @@ -1007,6 +1082,10 @@ packages: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + /@babel/helper-wrap-function@7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} @@ -1025,7 +1104,7 @@ packages: dependencies: '@babel/helper-function-name': 7.23.0 '@babel/template': 7.22.15 - '@babel/types': 7.23.3 + '@babel/types': 7.23.6 dev: false /@babel/helpers@7.23.2: @@ -1038,6 +1117,16 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helpers@7.23.6: + resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + transitivePeerDependencies: + - supports-color + /@babel/highlight@7.22.13: resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} @@ -1046,6 +1135,14 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + /@babel/parser@7.22.15: resolution: {integrity: sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==} engines: {node: '>=6.0.0'} @@ -1061,6 +1158,13 @@ packages: dependencies: '@babel/types': 7.23.3 + /@babel/parser@7.23.6: + resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.6 + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.23.3): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} @@ -1071,13 +1175,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.3): + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1093,25 +1197,25 @@ packages: '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.23.3) dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.3): + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.6) dev: false - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.3): + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1213,13 +1317,13 @@ packages: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.3): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.6): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 dev: false /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.23.3): @@ -1241,6 +1345,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.6): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} @@ -1258,6 +1372,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.6): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.3): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} @@ -1267,6 +1391,17 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.6): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-decorators@7.22.3(@babel/core@7.23.3): resolution: {integrity: sha512-R16Zuge73+8/nLcDjkIpyhi5wIbN7i7fiuLJR8yQX7vPAa/ltUKtd3iLbb4AgP5nrLi91HnNUNosELIGUGH1bg==} @@ -1285,6 +1420,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} @@ -1293,6 +1438,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.23.3): resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} @@ -1324,13 +1479,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.3): + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1344,13 +1499,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.3): + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1361,6 +1516,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.6): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} @@ -1369,6 +1534,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.3): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} @@ -1378,6 +1553,7 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} @@ -1387,6 +1563,17 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.3): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -1395,6 +1582,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.6): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} @@ -1403,6 +1600,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.3): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} @@ -1411,6 +1618,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.6): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -1419,6 +1636,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -1427,6 +1654,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -1435,6 +1672,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.3): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} @@ -1444,6 +1691,17 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.6): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.3): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} @@ -1453,6 +1711,17 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.6): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.23.3): resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} @@ -1464,13 +1733,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.3): + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1483,6 +1752,18 @@ packages: '@babel/core': 7.23.3 '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.6): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.23.6) + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-arrow-functions@7.21.5(@babel/core@7.23.3): resolution: {integrity: sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==} @@ -1494,13 +1775,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1519,17 +1800,17 @@ packages: - supports-color dev: true - /@babel/plugin-transform-async-generator-functions@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-59GsVNavGxAXCDDbakWSMJhajASb4kBCqDjqJsv+p5nKdbz7istmZ3HrX3L2LuiI80+zsOADCvooqQH3qGCucQ==} + /@babel/plugin-transform-async-generator-functions@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.3) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.3) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.6) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) dev: false /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.23.3): @@ -1546,16 +1827,16 @@ packages: - supports-color dev: true - /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.3) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.6) dev: false /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.23.3): @@ -1568,13 +1849,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1588,13 +1869,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw==} + /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1611,14 +1892,14 @@ packages: - supports-color dev: true - /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.6 + '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1636,16 +1917,16 @@ packages: - supports-color dev: true - /@babel/plugin-transform-class-static-block@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-PENDVxdr7ZxKPyi5Ffc0LjXdnJyrJxyqF5T5YjlVg4a0VFfQHW0r8iAtRiDXkfHlu1wwcvdtnndGYIeJLSuRMQ==} + /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.6 + '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.3) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.6) dev: false /@babel/plugin-transform-classes@7.21.0(@babel/core@7.23.3): @@ -1668,20 +1949,20 @@ packages: - supports-color dev: true - /@babel/plugin-transform-classes@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==} + /@babel/plugin-transform-classes@7.23.5(@babel/core@7.23.6): + resolution: {integrity: sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 dev: false @@ -1697,13 +1978,13 @@ packages: '@babel/template': 7.22.15 dev: true - /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 dev: false @@ -1718,13 +1999,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1739,14 +2020,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1760,13 +2041,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1781,15 +2062,15 @@ packages: '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-dynamic-import@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-vTG+cTGxPFou12Rj7ll+eD5yWeNl5/8xvQvF08y5Gv3v4mZQoyFf8/n9zg4q5vvCWt5jmgymfzMAldO7orBn7A==} + /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.6) dev: false /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.23.3): @@ -1803,13 +2084,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1825,15 +2106,15 @@ packages: '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-export-namespace-from@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-yCLhW34wpJWRdTxxWtFZASJisihrfyMOTOQexhVzA78jlU+dH7Dw+zQgcPepQ5F3C6bAIiblZZ+qBggJdHiBAg==} + /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.6) dev: false /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.23.3): @@ -1857,14 +2138,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==} + /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.6): + resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: false /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.23.3): @@ -1879,14 +2161,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-compilation-targets': 7.22.15 + '@babel/core': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1902,15 +2184,15 @@ packages: '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-json-strings@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-H9Ej2OiISIZowZHaBwF0tsJOih1PftXJtE8EWqlEIwpc7LMTGq0rPOrywKLQ4nefzx8/HMR0D3JGXoMHYvhi0A==} + /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6) dev: false /@babel/plugin-transform-literals@7.18.9(@babel/core@7.23.3): @@ -1923,13 +2205,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1944,15 +2226,15 @@ packages: '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-logical-assignment-operators@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-+pD5ZbxofyOygEp+zZAfujY2ShNCXRpDRIPOiBmTO693hhyOEteZgl876Xs9SAHPQpcV0vz8LvA/T+w8AzyX8A==} + /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.3) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6) dev: false /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.23.3): @@ -1965,13 +2247,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1986,14 +2268,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) + '@babel/core': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2009,14 +2291,14 @@ packages: '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) + '@babel/core': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: false @@ -2034,15 +2316,15 @@ packages: '@babel/helper-validator-identifier': 7.22.15 dev: true - /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 dev: false @@ -2058,14 +2340,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) + '@babel/core': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2080,14 +2362,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.3): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.6): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2101,13 +2383,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2122,15 +2404,15 @@ packages: '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-xzg24Lnld4DYIdysyf07zJ1P+iIfJpxtVFOzX4g+bsJ3Ng5Le7rXx9KwqKzuyaUeRnt+I1EICwQITqc0E2PmpA==} + /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) dev: false /@babel/plugin-transform-numeric-separator@7.22.3(@babel/core@7.23.3): @@ -2144,15 +2426,15 @@ packages: '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-numeric-separator@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-s9GO7fIBi/BLsZ0v3Rftr6Oe4t0ctJ8h4CCXfPoEJwmvAPMyNrfkOOJzm6b9PX9YXcCJWWQd/sBF/N26eBiMVw==} + /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.3) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) dev: false /@babel/plugin-transform-object-rest-spread@7.22.3(@babel/core@7.23.3): @@ -2169,18 +2451,18 @@ packages: '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-object-rest-spread@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-VxHt0ANkDmu8TANdE9Kc0rndo/ccsmfe2Cx2y5sI4hu3AukHQ5wAu4cM7j3ba8B9548ijVyclBU+nuDQftZsog==} + /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.23.3 - '@babel/core': 7.23.3 - '@babel/helper-compilation-targets': 7.22.15 + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.6) dev: false /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.23.3): @@ -2196,15 +2478,15 @@ packages: - supports-color dev: true - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) dev: false /@babel/plugin-transform-optional-catch-binding@7.22.3(@babel/core@7.23.3): @@ -2218,15 +2500,15 @@ packages: '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-optional-catch-binding@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-LxYSb0iLjUamfm7f1D7GpiS4j0UAC8AOiehnsGAP8BEsIX8EOi3qV6bbctw8M7ZvLtcoZfZX5Z7rN9PlWk0m5A==} + /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) dev: false /@babel/plugin-transform-optional-chaining@7.22.3(@babel/core@7.23.3): @@ -2241,16 +2523,16 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-optional-chaining@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg==} + /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) dev: false /@babel/plugin-transform-parameters@7.22.3(@babel/core@7.23.3): @@ -2263,13 +2545,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2286,14 +2568,14 @@ packages: - supports-color dev: true - /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.6 + '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2312,17 +2594,17 @@ packages: - supports-color dev: true - /@babel/plugin-transform-private-property-in-object@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA==} + /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.3) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.6) dev: false /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.23.3): @@ -2335,23 +2617,23 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2365,13 +2647,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2385,14 +2667,14 @@ packages: '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.3): + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.6): resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.6 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.6) dev: false /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.23.3): @@ -2407,6 +2689,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.3) '@babel/types': 7.22.15 + dev: true /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.3): resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} @@ -2419,9 +2702,23 @@ packages: '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.3) - '@babel/types': 7.23.4 + '@babel/types': 7.23.6 dev: true + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) + '@babel/types': 7.23.6 + dev: false + /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.23.3): resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} engines: {node: '>=6.9.0'} @@ -2433,13 +2730,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2455,13 +2752,13 @@ packages: regenerator-transform: 0.15.1 dev: true - /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.2 dev: false @@ -2476,13 +2773,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2503,18 +2800,18 @@ packages: - supports-color dev: true - /@babel/plugin-transform-runtime@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-XcQ3X58CKBdBnnZpPaQjgVMePsXtSZzHoku70q9tUAQp02ggPQNM04BF3RvlW1GSM/McbSOQAzEK4MXbS7/JFg==} + /@babel/plugin-transform-runtime@7.23.6(@babel/core@7.23.6): + resolution: {integrity: sha512-kF1Zg62aPseQ11orDhFRw+aPG/eynNQtI+TyY+m33qJa2cJ5EEvza2P2BNTIA9E5MyqFABHEyY6CPHwgdy9aNg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.3) - babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.3) - babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.3) + babel-plugin-polyfill-corejs2: 0.4.7(@babel/core@7.23.6) + babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.6) + babel-plugin-polyfill-regenerator: 0.5.4(@babel/core@7.23.6) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -2530,13 +2827,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2551,13 +2848,13 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 dev: true - /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: false @@ -2572,13 +2869,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2592,13 +2889,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2612,13 +2909,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2637,17 +2934,17 @@ packages: - supports-color dev: true - /@babel/plugin-transform-typescript@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-ogV0yWnq38CFwH20l2Afz0dfKuZBx9o/Y2Rmh5vuSS0YD1hswgEgTfyTzuSrT2q9btmHRSqYoSfwFUVaC1M1Jw==} + /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.6): + resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.6) dev: false /@babel/plugin-transform-unicode-escapes@7.21.5(@babel/core@7.23.3): @@ -2660,13 +2957,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2681,14 +2978,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2703,14 +3000,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2725,14 +3022,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2827,92 +3124,92 @@ packages: - supports-color dev: true - /@babel/preset-env@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==} + /@babel/preset-env@7.23.6(@babel/core@7.23.6): + resolution: {integrity: sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.23.3 - '@babel/core': 7.23.3 - '@babel/helper-compilation-targets': 7.22.15 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.3) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.3) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.3) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.3) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.3) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.3) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.3) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.3) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.3) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.3) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-async-generator-functions': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-block-scoping': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-class-static-block': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-classes': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-dynamic-import': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-export-namespace-from': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-json-strings': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-logical-assignment-operators': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-numeric-separator': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-object-rest-spread': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-optional-catch-binding': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-private-property-in-object': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.3) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.3) - babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.3) - babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.3) - babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.3) - core-js-compat: 3.33.3 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.6) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.6) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.6) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.6) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.6) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.6) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-async-generator-functions': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.23.6) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.6) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.6) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.6) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.6) + babel-plugin-polyfill-corejs2: 0.4.7(@babel/core@7.23.6) + babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.6) + babel-plugin-polyfill-regenerator: 0.5.4(@babel/core@7.23.6) + core-js-compat: 3.34.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -2931,14 +3228,14 @@ packages: esutils: 2.0.3 dev: true - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.3): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.6): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.23.3 + '@babel/types': 7.23.6 esutils: 2.0.3 dev: false @@ -2957,19 +3254,19 @@ packages: '@babel/plugin-transform-react-pure-annotations': 7.18.6(@babel/core@7.23.3) dev: true - /@babel/preset-react@7.23.3(@babel/core@7.23.3): + /@babel/preset-react@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.3) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.23.3) + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.6) + '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.23.6) dev: false /@babel/preset-typescript@7.21.5(@babel/core@7.23.3): @@ -2988,28 +3285,28 @@ packages: - supports-color dev: true - /@babel/preset-typescript@7.23.3(@babel/core@7.23.3): + /@babel/preset-typescript@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-typescript': 7.23.3(@babel/core@7.23.3) + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.6) dev: false /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - /@babel/runtime-corejs3@7.23.2: - resolution: {integrity: sha512-54cIh74Z1rp4oIjsHjqN+WM4fMyCBYe+LpZ9jWm51CZ1fbH3SkAzQD/3XLoNkjbJ7YEmjobLXyvQrFypRHOrXw==} + /@babel/runtime-corejs3@7.23.6: + resolution: {integrity: sha512-Djs/ZTAnpyj0nyg7p1J6oiE/tZ9G2stqAFlLGZynrW+F3k2w2jGK2mLOBxzYIOcZYA89+c3d3wXKpYLcpwcU6w==} engines: {node: '>=6.9.0'} dependencies: - core-js-pure: 3.33.3 + core-js-pure: 3.34.0 regenerator-runtime: 0.14.0 dev: false @@ -3019,15 +3316,15 @@ packages: dependencies: regenerator-runtime: 0.13.11 - /@babel/runtime@7.23.2: - resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} + /@babel/runtime@7.23.4: + resolution: {integrity: sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 dev: false - /@babel/runtime@7.23.4: - resolution: {integrity: sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==} + /@babel/runtime@7.23.6: + resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 @@ -3058,6 +3355,23 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse@7.23.6: + resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + /@babel/types@7.22.15: resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} engines: {node: '>=6.9.0'} @@ -3074,14 +3388,13 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - /@babel/types@7.23.4: - resolution: {integrity: sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==} + /@babel/types@7.23.6: + resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.23.4 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - dev: true /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -3444,7 +3757,7 @@ packages: lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.3.3) typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -3704,7 +4017,7 @@ packages: resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0): + /@docsearch/react@3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -3721,77 +4034,77 @@ packages: search-insights: optional: true dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0)(search-insights@2.13.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0) '@docsearch/css': 3.5.2 - '@types/react': 18.2.38 - algoliasearch: 4.20.0 + '@types/react': 18.2.45 + algoliasearch: 4.22.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - search-insights: 2.11.0 + search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' dev: false - /@docusaurus/core@3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-bHWtY55tJTkd6pZhHrWz1MpWuwN4edZe0/UWgFF7PW/oJeDZvLSXKqwny3L91X1/LGGoypBGkeZn8EOuKeL4yQ==} + /@docusaurus/core@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-CXrLpOnW+dJdSv8M5FAJ3JBwXtL6mhUWxFA8aS0ozK6jBG/wgxERk5uvH28fCeFxOGbAT9v1e9dOMo1X2IEVhQ==} engines: {node: '>=18.0'} hasBin: true peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/core': 7.23.3 - '@babel/generator': 7.23.3 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-transform-runtime': 7.23.3(@babel/core@7.23.3) - '@babel/preset-env': 7.23.3(@babel/core@7.23.3) - '@babel/preset-react': 7.23.3(@babel/core@7.23.3) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.3) - '@babel/runtime': 7.23.2 - '@babel/runtime-corejs3': 7.23.2 - '@babel/traverse': 7.23.3 - '@docusaurus/cssnano-preset': 3.0.0 - '@docusaurus/logger': 3.0.0 - '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) + '@babel/core': 7.23.6 + '@babel/generator': 7.23.6 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-transform-runtime': 7.23.6(@babel/core@7.23.6) + '@babel/preset-env': 7.23.6(@babel/core@7.23.6) + '@babel/preset-react': 7.23.3(@babel/core@7.23.6) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.6) + '@babel/runtime': 7.23.6 + '@babel/runtime-corejs3': 7.23.6 + '@babel/traverse': 7.23.6 + '@docusaurus/cssnano-preset': 3.0.1 + '@docusaurus/logger': 3.0.1 + '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/react-loadable': 5.5.2(react@18.2.0) - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) '@slorber/static-site-generator-webpack-plugin': 4.0.7 '@svgr/webpack': 6.5.1 - autoprefixer: 10.4.16(postcss@8.4.31) - babel-loader: 9.1.3(@babel/core@7.23.3)(webpack@5.89.0) + autoprefixer: 10.4.16(postcss@8.4.32) + babel-loader: 9.1.3(@babel/core@7.23.6)(webpack@5.89.0) babel-plugin-dynamic-import-node: 2.3.3 boxen: 6.2.1 chalk: 4.1.2 chokidar: 3.5.3 - clean-css: 5.3.2 + clean-css: 5.3.3 cli-table3: 0.6.3 combine-promises: 1.2.0 commander: 5.1.0 copy-webpack-plugin: 11.0.0(webpack@5.89.0) - core-js: 3.33.3 + core-js: 3.34.0 css-loader: 6.8.1(webpack@5.89.0) - css-minimizer-webpack-plugin: 4.2.2(clean-css@5.3.2)(webpack@5.89.0) - cssnano: 5.1.15(postcss@8.4.31) + css-minimizer-webpack-plugin: 4.2.2(clean-css@5.3.3)(webpack@5.89.0) + cssnano: 5.1.15(postcss@8.4.32) del: 6.1.1 detect-port: 1.5.1 escape-html: 1.0.3 eta: 2.2.0 file-loader: 6.2.0(webpack@5.89.0) - fs-extra: 11.1.1 + fs-extra: 11.2.0 html-minifier-terser: 7.2.0 html-tags: 3.3.1 - html-webpack-plugin: 5.5.3(webpack@5.89.0) + html-webpack-plugin: 5.5.4(webpack@5.89.0) leven: 3.1.0 lodash: 4.17.21 mini-css-extract-plugin: 2.7.6(webpack@5.89.0) - postcss: 8.4.31 - postcss-loader: 7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0) + postcss: 8.4.32 + postcss-loader: 7.3.3(postcss@8.4.32)(typescript@5.3.3)(webpack@5.89.0) prompts: 2.4.2 react: 18.2.0 - react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) + react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@5.3.3)(webpack@5.89.0) react-dom: 18.2.0(react@18.2.0) react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) @@ -3807,7 +4120,6 @@ packages: tslib: 2.6.2 update-notifier: 6.0.2 url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.89.0) - wait-on: 7.2.0 webpack: 5.89.0 webpack-bundle-analyzer: 4.10.1 webpack-dev-server: 4.15.1(webpack@5.89.0) @@ -3832,42 +4144,55 @@ packages: - webpack-cli dev: false - /@docusaurus/cssnano-preset@3.0.0: - resolution: {integrity: sha512-FHiRfwmVvIVdIGsHcijUOaX7hMn0mugVYB7m4GkpYI6Mi56zwQV4lH5p7DxcW5CUYNWMVxz2loWSCiWEm5ikwA==} + /@docusaurus/cssnano-preset@3.0.1: + resolution: {integrity: sha512-wjuXzkHMW+ig4BD6Ya1Yevx9UJadO4smNZCEljqBoQfIQrQskTswBs7lZ8InHP7mCt273a/y/rm36EZhqJhknQ==} engines: {node: '>=18.0'} dependencies: - cssnano-preset-advanced: 5.3.10(postcss@8.4.31) - postcss: 8.4.31 - postcss-sort-media-queries: 4.4.1(postcss@8.4.31) + cssnano-preset-advanced: 5.3.10(postcss@8.4.32) + postcss: 8.4.32 + postcss-sort-media-queries: 4.4.1(postcss@8.4.32) tslib: 2.6.2 dev: false - /@docusaurus/logger@3.0.0: - resolution: {integrity: sha512-6eX0eOfioMQCk+qgCnHvbLLuyIAA+r2lSID6d6JusiLtDKmYMfNp3F4yyE8bnb0Abmzt2w68XwptEFYyALSAXw==} + /@docusaurus/logger@3.0.1: + resolution: {integrity: sha512-I5L6Nk8OJzkVA91O2uftmo71LBSxe1vmOn9AMR6JRCzYeEBrqneWMH02AqMvjJ2NpMiviO+t0CyPjyYV7nxCWQ==} engines: {node: '>=18.0'} dependencies: chalk: 4.1.2 tslib: 2.6.2 dev: false - /@docusaurus/mdx-loader@3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-JkGge6WYDrwjNgMxwkb6kNQHnpISt5L1tMaBWFDBKeDToFr5Kj29IL35MIQm0RfrnoOfr/29RjSH4aRtvlAR0A==} + /@docusaurus/lqip-loader@3.0.1(webpack@5.89.0): + resolution: {integrity: sha512-hFSu8ltYo0ZnWBWmjMhSprOr6nNKG01YdMDxH/hahBfyaNDCkZU4o7mQNgUW845lvYdp6bhjyW31WJwBjOnLqw==} + engines: {node: '>=18.0'} + dependencies: + '@docusaurus/logger': 3.0.1 + file-loader: 6.2.0(webpack@5.89.0) + lodash: 4.17.21 + sharp: 0.32.6 + tslib: 2.6.2 + transitivePeerDependencies: + - webpack + dev: false + + /@docusaurus/mdx-loader@3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ldnTmvnvlrONUq45oKESrpy+lXtbnTcTsFkOTIDswe5xx5iWJjt6eSa0f99ZaWlnm24mlojcIGoUWNCS53qVlQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/parser': 7.23.3 - '@babel/traverse': 7.23.3 - '@docusaurus/logger': 3.0.0 - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@babel/parser': 7.23.6 + '@babel/traverse': 7.23.6 + '@docusaurus/logger': 3.0.1 + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) '@mdx-js/mdx': 3.0.0 '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 estree-util-value-to-estree: 3.0.1 file-loader: 6.2.0(webpack@5.89.0) - fs-extra: 11.1.1 + fs-extra: 11.2.0 image-size: 1.0.2 mdast-util-mdx: 3.0.0 mdast-util-to-string: 4.0.0 @@ -3915,24 +4240,48 @@ packages: - esbuild - uglify-js - webpack-cli + dev: true + + /@docusaurus/module-type-aliases@3.0.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-DEHpeqUDsLynl3AhQQiO7AbC7/z/lBra34jTcdYuvp9eGm01pfH1wTVq8YqWZq6Jyx0BgcVl/VJqtE9StRd9Ag==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@docusaurus/react-loadable': 5.5.2(react@18.2.0) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@types/history': 4.7.11 + '@types/react': 18.2.45 + '@types/react-router-config': 5.0.11 + '@types/react-router-dom': 5.3.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-helmet-async: 2.0.3(react-dom@18.2.0)(react@18.2.0) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + dev: false - /@docusaurus/plugin-content-blog@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-iA8Wc3tIzVnROJxrbIsU/iSfixHW16YeW9RWsBw7hgEk4dyGsip9AsvEDXobnRq3lVv4mfdgoS545iGWf1Ip9w==} + /@docusaurus/plugin-content-blog@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-cLOvtvAyaMQFLI8vm4j26svg3ktxMPSXpuUJ7EERKoGbfpJSsgtowNHcRsaBVmfuCsRSk1HZ/yHBsUkTmHFEsg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/logger': 3.0.0 - '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/logger': 3.0.1 + '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) cheerio: 1.0.0-rc.12 feed: 4.2.2 - fs-extra: 11.1.1 + fs-extra: 11.2.0 lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3960,23 +4309,23 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-MFZsOSwmeJ6rvoZMLieXxPuJsA9M9vn7/mUZmfUzSUTeHAeq+fEqvLltFOxcj4DVVDTYlQhgWYd+PISIWgamKw==} + /@docusaurus/plugin-content-docs@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-dRfAOA5Ivo+sdzzJGXEu33yAtvGg8dlZkvt/NEJ7nwi1F2j4LEdsxtfX2GKeETB2fP6XoGNSQnFXqa2NYGrHFg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/logger': 3.0.0 - '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/module-type-aliases': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) - '@types/react-router-config': 5.0.10 + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/logger': 3.0.1 + '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 - fs-extra: 11.1.1 + fs-extra: 11.2.0 js-yaml: 4.1.0 lodash: 4.17.21 react: 18.2.0 @@ -4002,19 +4351,19 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-EXYHXK2Ea1B5BUmM0DgSwaOYt8EMSzWtYUToNo62Q/EoWxYOQFdWglYnw3n7ZEGyw5Kog4LHaRwlazAdmDomvQ==} + /@docusaurus/plugin-content-pages@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-oP7PoYizKAXyEttcvVzfX3OoBIXEmXTMzCdfmC4oSwjG4SPcJsRge3mmI6O8jcZBgUPjIzXD21bVGWEE1iu8gg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) - fs-extra: 11.1.1 + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + fs-extra: 11.2.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 @@ -4037,30 +4386,28 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@3.0.0(@types/react@18.2.38)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-gSV07HfQgnUboVEb3lucuVyv5pEoy33E7QXzzn++3kSc/NLEimkjXh3sSnTGOishkxCqlFV9BHfY/VMm5Lko5g==} + /@docusaurus/plugin-debug@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-09dxZMdATky4qdsZGzhzlUvvC+ilQ2hKbYF+wez+cM2mGo4qHbv8+qKXqxq0CQZyimwlAOWQLoSozIXU0g0i7g==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@microlink/react-json-view': 1.23.0(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0) - fs-extra: 11.1.1 + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + fs-extra: 11.2.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + react-json-view-lite: 1.2.1(react@18.2.0) tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' - '@swc/core' - '@swc/css' - - '@types/react' - bufferutil - csso - debug - - encoding - esbuild - eslint - lightningcss @@ -4072,16 +4419,16 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-0zcLK8w+ohmSm1fjUQCqeRsjmQc0gflvXnaVA/QVVCtm2yCiBtkrSGQXqt4MdpD7Xq8mwo3qVd5nhIcvrcebqw==} + /@docusaurus/plugin-google-analytics@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-jwseSz1E+g9rXQwDdr0ZdYNjn8leZBnKPjjQhMBEiwDoenL3JYFcNW0+p0sWoVF/f2z5t7HkKA+cYObrUh18gg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 @@ -4103,16 +4450,16 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-asEKavw8fczUqvXu/s9kG2m1epLnHJ19W6CCCRZEmpnkZUZKiM8rlkDiEmxApwIc2JDDbIMk+Y2TMkJI8mInbQ==} + /@docusaurus/plugin-google-gtag@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-UFTDvXniAWrajsulKUJ1DB6qplui1BlKLQZjX4F7qS/qfJ+qkKqSkhJ/F4VuGQ2JYeZstYb+KaUzUzvaPK1aRQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) '@types/gtag.js': 0.0.12 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4135,16 +4482,16 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-lytgu2eyn+7p4WklJkpMGRhwC29ezj4IjPPmVJ8vGzcSl6JkR1sADTHLG5xWOMuci420xZl9dGEiLTQ8FjCRyA==} + /@docusaurus/plugin-google-tag-manager@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-IPFvuz83aFuheZcWpTlAdiiX1RqWIHM+OH8wS66JgwAKOiQMR3+nLywGjkLV4bp52x7nCnwhNk1rE85Cpy/CIw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 @@ -4166,20 +4513,63 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-cfcONdWku56Oi7Hdus2uvUw/RKRRlIGMViiHLjvQ21CEsEqnQ297MRoIgjU28kL7/CXD/+OiANSq3T1ezAiMhA==} + /@docusaurus/plugin-ideal-image@3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-IvAUpEIz6v1/fVz6UTdQY12pYIE5geNFtsuKpsULpMaotwYf3Gs7acXjQog4qquKkc65yV5zuvMj8BZMHEwLyQ==} engines: {node: '>=18.0'} peerDependencies: + jimp: '*' react: ^18.0.0 react-dom: ^18.0.0 + peerDependenciesMeta: + jimp: + optional: true dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/logger': 3.0.0 - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) - fs-extra: 11.1.1 + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/lqip-loader': 3.0.1(webpack@5.89.0) + '@docusaurus/responsive-loader': 1.7.0(sharp@0.32.6) + '@docusaurus/theme-translations': 3.0.1 + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@slorber/react-ideal-image': 0.0.12(prop-types@15.8.1)(react-waypoint@10.3.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-waypoint: 10.3.0(react@18.2.0) + sharp: 0.32.6 + tslib: 2.6.2 + webpack: 5.89.0 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - prop-types + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false + + /@docusaurus/plugin-sitemap@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-xARiWnjtVvoEniZudlCq5T9ifnhCu/GAZ5nA7XgyLfPcNpHQa241HZdsTlLtVcecEVVdllevBKOp7qknBBaMGw==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/logger': 3.0.1 + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + fs-extra: 11.2.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) sitemap: 7.1.1 @@ -4202,26 +4592,26 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.0.0(@algolia/client-search@4.20.0)(@types/react@18.2.38)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5): - resolution: {integrity: sha512-90aOKZGZdi0+GVQV+wt8xx4M4GiDrBRke8NO8nWwytMEXNrxrBxsQYFRD1YlISLJSCiHikKf3Z/MovMnQpnZyg==} + /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): + resolution: {integrity: sha512-il9m9xZKKjoXn6h0cRcdnt6wce0Pv1y5t4xk2Wx7zBGhKG1idu4IFHtikHlD0QPuZ9fizpXspXcTzjL5FXc1Gw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-debug': 3.0.0(@types/react@18.2.38)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-analytics': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-gtag': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-tag-manager': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-sitemap': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-classic': 3.0.0(@types/react@18.2.38)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-search-algolia': 3.0.0(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.0)(@types/react@18.2.38)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5) - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-debug': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-google-analytics': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-google-gtag': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-google-tag-manager': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-sitemap': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -4233,7 +4623,6 @@ packages: - bufferutil - csso - debug - - encoding - esbuild - eslint - lightningcss @@ -4251,37 +4640,53 @@ packages: peerDependencies: react: '*' dependencies: - '@types/react': 18.2.38 + '@types/react': 18.2.45 prop-types: 15.8.1 react: 18.2.0 - /@docusaurus/theme-classic@3.0.0(@types/react@18.2.38)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-wWOHSrKMn7L4jTtXBsb5iEJ3xvTddBye5PjYBnWiCkTAlhle2yMdc4/qRXW35Ot+OV/VXu6YFG8XVUJEl99z0A==} + /@docusaurus/responsive-loader@1.7.0(sharp@0.32.6): + resolution: {integrity: sha512-N0cWuVqTRXRvkBxeMQcy/OF2l7GN8rmni5EzR3HpwR+iU2ckYPnziceojcxvvxQ5NqZg1QfEW0tycQgHp+e+Nw==} + engines: {node: '>=12'} + peerDependencies: + jimp: '*' + sharp: '*' + peerDependenciesMeta: + jimp: + optional: true + sharp: + optional: true + dependencies: + loader-utils: 2.0.4 + sharp: 0.32.6 + dev: false + + /@docusaurus/theme-classic@3.0.1(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-XD1FRXaJiDlmYaiHHdm27PNhhPboUah9rqIH0lMpBt5kYtsGjJzhqa27KuZvHLzOP2OEpqd2+GZ5b6YPq7Q05Q==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/module-type-aliases': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-translations': 3.0.0 - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) - '@mdx-js/react': 3.0.0(@types/react@18.2.38)(react@18.2.0) - clsx: 1.2.1 + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-translations': 3.0.1 + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@mdx-js/react': 3.0.0(@types/react@18.2.45)(react@18.2.0) + clsx: 2.0.0 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.43 lodash: 4.17.21 nprogress: 0.2.0 - postcss: 8.4.31 - prism-react-renderer: 2.2.0(react@18.2.0) + postcss: 8.4.32 + prism-react-renderer: 2.3.0(react@18.2.0) prismjs: 1.29.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4308,26 +4713,26 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-PahRpCLRK5owCMEqcNtUeTMOkTUCzrJlKA+HLu7f+8osYOni617YurXvHASCsSTxurjXaLz/RqZMnASnqATxIA==} + /@docusaurus/theme-common@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-cr9TOWXuIOL0PUfuXv6L5lPlTgaphKP+22NdVBOYah5jSq5XAAulJTjfe+IfLsEG4L7lJttLbhW7LXDFSAI7Ag==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/module-type-aliases': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) '@types/history': 4.7.11 - '@types/react': 18.2.37 - '@types/react-router-config': 5.0.10 - clsx: 1.2.1 + '@types/react': 18.2.45 + '@types/react-router-config': 5.0.11 + clsx: 2.0.0 parse-numeric-range: 1.3.0 - prism-react-renderer: 2.2.0(react@18.2.0) + prism-react-renderer: 2.3.0(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 @@ -4351,26 +4756,26 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.0.0(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.0)(@types/react@18.2.38)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5): - resolution: {integrity: sha512-PyMUNIS9yu0dx7XffB13ti4TG47pJq3G2KE/INvOFb6M0kWh+wwCnucPg4WAOysHOPh+SD9fjlXILoLQstgEIA==} + /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): + resolution: {integrity: sha512-DDiPc0/xmKSEdwFkXNf1/vH1SzJPzuJBar8kMcBbDAZk/SAmo/4lf6GU2drou4Ae60lN2waix+jYWTWcJRahSA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0) - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/logger': 3.0.0 - '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-translations': 3.0.0 - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) - algoliasearch: 4.20.0 - algoliasearch-helper: 3.15.0(algoliasearch@4.20.0) - clsx: 1.2.1 + '@docsearch/react': 3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/logger': 3.0.1 + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-translations': 3.0.1 + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + algoliasearch: 4.22.0 + algoliasearch-helper: 3.16.0(algoliasearch@4.22.0) + clsx: 2.0.0 eta: 2.2.0 - fs-extra: 11.1.1 + fs-extra: 11.2.0 lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4398,8 +4803,8 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-translations@3.0.0: - resolution: {integrity: sha512-p/H3+5LdnDtbMU+csYukA6601U1ld2v9knqxGEEV96qV27HsHfP63J9Ta2RBZUrNhQAgrwFzIc9GdDO8P1Baag==} + /@docusaurus/theme-translations@3.0.1: + resolution: {integrity: sha512-6UrbpzCTN6NIJnAtZ6Ne9492vmPVX+7Fsz4kmp+yor3KQwA1+MCzQP7ItDNkP38UmVLnvB/cYk/IvehCUqS3dg==} engines: {node: '>=18.0'} dependencies: fs-extra: 11.1.1 @@ -4427,9 +4832,33 @@ packages: - esbuild - uglify-js - webpack-cli + dev: true + + /@docusaurus/types@3.0.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-plyX2iU1tcUsF46uQ01pAd4JhexR7n0iiQ5MSnBFX6M6NSJgDYdru/i1/YNPKOnQHBoXGLHv0dNT6OAlDWNjrg==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.38 + commander: 5.1.0 + joi: 17.11.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) + utility-types: 3.10.0 + webpack: 5.89.0 + webpack-merge: 5.10.0 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + dev: false - /@docusaurus/utils-common@3.0.0(@docusaurus/types@3.0.0): - resolution: {integrity: sha512-7iJWAtt4AHf4PFEPlEPXko9LZD/dbYnhLe0q8e3GRK1EXZyRASah2lznpMwB3lLmVjq/FR6ZAKF+E0wlmL5j0g==} + /@docusaurus/utils-common@3.0.1(@docusaurus/types@3.0.1): + resolution: {integrity: sha512-W0AxD6w6T8g6bNro8nBRWf7PeZ/nn7geEWM335qHU2DDDjHuV4UZjgUGP1AQsdcSikPrlIqTJJbKzer1lRSlIg==} engines: {node: '>=18.0'} peerDependencies: '@docusaurus/types': '*' @@ -4437,16 +4866,16 @@ packages: '@docusaurus/types': optional: true dependencies: - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) tslib: 2.6.2 dev: false - /@docusaurus/utils-validation@3.0.0(@docusaurus/types@3.0.0): - resolution: {integrity: sha512-MlIGUspB/HBW5CYgHvRhmkZbeMiUWKbyVoCQYvbGN8S19SSzVgzyy97KRpcjCOYYeEdkhmRCUwFBJBlLg3IoNQ==} + /@docusaurus/utils-validation@3.0.1(@docusaurus/types@3.0.1): + resolution: {integrity: sha512-ujTnqSfyGQ7/4iZdB4RRuHKY/Nwm58IIb+41s5tCXOv/MBU2wGAjOHq3U+AEyJ8aKQcHbxvTKJaRchNHYUVUQg==} engines: {node: '>=18.0'} dependencies: - '@docusaurus/logger': 3.0.0 - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/logger': 3.0.1 + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) joi: 17.11.0 js-yaml: 4.1.0 tslib: 2.6.2 @@ -4459,8 +4888,8 @@ packages: - webpack-cli dev: false - /@docusaurus/utils@3.0.0(@docusaurus/types@3.0.0): - resolution: {integrity: sha512-JwGjh5mtjG9XIAESyPxObL6CZ6LO/yU4OSTpq7Q0x+jN25zi/AMbvLjpSyZzWy+qm5uQiFiIhqFaOxvy+82Ekg==} + /@docusaurus/utils@3.0.1(@docusaurus/types@3.0.1): + resolution: {integrity: sha512-TwZ33Am0q4IIbvjhUOs+zpjtD/mXNmLmEgeTGuRq01QzulLHuPhaBTTAC/DHu6kFx3wDgmgpAlaRuCHfTcXv8g==} engines: {node: '>=18.0'} peerDependencies: '@docusaurus/types': '*' @@ -4468,12 +4897,12 @@ packages: '@docusaurus/types': optional: true dependencies: - '@docusaurus/logger': 3.0.0 - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/logger': 3.0.1 + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@svgr/webpack': 6.5.1 escape-string-regexp: 4.0.0 file-loader: 6.2.0(webpack@5.89.0) - fs-extra: 11.1.1 + fs-extra: 11.2.0 github-slugger: 1.5.0 globby: 11.1.0 gray-matter: 4.0.3 @@ -5235,8 +5664,8 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.9.2 - '@types/yargs': 17.0.31 + '@types/node': 20.10.4 + '@types/yargs': 17.0.32 chalk: 4.1.2 dev: false @@ -5336,7 +5765,7 @@ packages: estree-util-to-js: 2.0.0 estree-walker: 3.0.3 hast-util-to-estree: 3.1.0 - hast-util-to-jsx-runtime: 2.2.0 + hast-util-to-jsx-runtime: 2.3.0 markdown-extensions: 2.0.0 periscopic: 3.1.0 remark-mdx: 3.0.0 @@ -5352,14 +5781,14 @@ packages: - supports-color dev: false - /@mdx-js/react@3.0.0(@types/react@18.2.38)(react@18.2.0): + /@mdx-js/react@3.0.0(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ==} peerDependencies: '@types/react': '>=16' react: '>=16' dependencies: '@types/mdx': 2.0.10 - '@types/react': 18.2.38 + '@types/react': 18.2.45 react: 18.2.0 dev: false @@ -5402,23 +5831,6 @@ packages: - supports-color dev: false - /@microlink/react-json-view@1.23.0(@types/react@18.2.38)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-HYJ1nsfO4/qn8afnAMhuk7+5a1vcjEaS8Gm5Vpr1SqdHDY0yLBJGpA+9DvKyxyVKaUkXzKXt3Mif9RcmFSdtYg==} - peerDependencies: - react: '>= 15' - react-dom: '>= 15' - dependencies: - flux: 4.0.4(react@18.2.0) - react: 18.2.0 - react-base16-styling: 0.6.0 - react-dom: 18.2.0(react@18.2.0) - react-lifecycles-compat: 3.0.4 - react-textarea-autosize: 8.3.4(@types/react@18.2.38)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - encoding - dev: false - /@motionone/animation@10.16.3: resolution: {integrity: sha512-QUGWpLbMFLhyqKlngjZhjtxM8IqiJQjLK0DF+XOF6od9nhSvlaeEpOY/UMCRVcZn/9Tr2rZO22EkuCIjYdI74g==} dependencies: @@ -5780,6 +6192,7 @@ packages: picocolors: 1.0.0 tiny-glob: 0.2.9 tslib: 2.5.2 + dev: false /@pnpm/config.env-replace@1.1.0: resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} @@ -5802,8 +6215,8 @@ packages: config-chain: 1.1.13 dev: false - /@polka/url@1.0.0-next.23: - resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} + /@polka/url@1.0.0-next.24: + resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} dev: false /@protobufjs/aspromise@1.1.2: @@ -5990,6 +6403,25 @@ packages: typescript: 4.9.5 dev: true + /@rollup/plugin-typescript@11.1.3(rollup@2.79.1)(typescript@5.3.3): + resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@2.79.1) + resolve: 1.22.2 + rollup: 2.79.1 + typescript: 5.3.3 + dev: true + /@rollup/pluginutils@3.1.0(rollup@2.79.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} @@ -6119,16 +6551,16 @@ packages: engines: {node: '>=4'} dev: false + /@sindresorhus/is@4.6.0: + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + dev: false + /@sindresorhus/is@5.6.0: resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} dev: false - /@sindresorhus/is@6.1.0: - resolution: {integrity: sha512-BuvU07zq3tQ/2SIgBsEuxKYDyDjC0n7Zir52bpHy2xnBbW81+po43aLFPLbeV3HRAheFbGud1qgcqSYfhtHMAg==} - engines: {node: '>=16'} - dev: false - /@sinonjs/commons@3.0.0: resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} dependencies: @@ -6142,6 +6574,19 @@ packages: '@sinonjs/commons': 3.0.0 dev: true + /@slorber/react-ideal-image@0.0.12(prop-types@15.8.1)(react-waypoint@10.3.0)(react@18.2.0): + resolution: {integrity: sha512-u8KiDTEkMA7/KAeA5ywg/P7YG4zuKhWtswfVZDH8R8HXgQsFcHIYU2WaQnGuK/Du7Wdj90I+SdFmajSGFRvoKA==} + engines: {node: '>= 8.9.0', npm: '> 3'} + peerDependencies: + prop-types: '>=15' + react: '>=0.14.x' + react-waypoint: '>=9.0.2' + dependencies: + prop-types: 15.8.1 + react: 18.2.0 + react-waypoint: 10.3.0(react@18.2.0) + dev: false + /@slorber/remark-comment@1.0.0: resolution: {integrity: sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==} dependencies: @@ -6306,101 +6751,101 @@ packages: '@stablelib/wipe': 1.0.1 dev: false - /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.23.6): resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 dev: false - /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.3): + /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.6): resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 dev: false - /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.3): + /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.6): resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 dev: false - /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.23.6): resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 dev: false - /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.23.6): resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 dev: false - /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.23.6): resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 dev: false - /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.23.6): resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 dev: false - /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.23.6): resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 dev: false - /@svgr/babel-preset@6.5.1(@babel/core@7.23.3): + /@svgr/babel-preset@6.5.1(@babel/core@7.23.6): resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.23.3) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.3) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.3) - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.23.3) - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.23.3) - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.23.3) - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.23.3) - '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.23.3) + '@babel/core': 7.23.6 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.23.6) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.6) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.6) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.23.6) + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.23.6) + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.23.6) + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.23.6) + '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.23.6) dev: false /@svgr/core@6.5.1: resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.3 - '@svgr/babel-preset': 6.5.1(@babel/core@7.23.3) + '@babel/core': 7.23.6 + '@svgr/babel-preset': 6.5.1(@babel/core@7.23.6) '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) camelcase: 6.3.0 cosmiconfig: 7.1.0 @@ -6412,7 +6857,7 @@ packages: resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} engines: {node: '>=10'} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.6 entities: 4.5.0 dev: false @@ -6422,8 +6867,8 @@ packages: peerDependencies: '@svgr/core': ^6.0.0 dependencies: - '@babel/core': 7.23.3 - '@svgr/babel-preset': 6.5.1(@babel/core@7.23.3) + '@babel/core': 7.23.6 + '@svgr/babel-preset': 6.5.1(@babel/core@7.23.6) '@svgr/core': 6.5.1 '@svgr/hast-util-to-babel-ast': 6.5.1 svg-parser: 2.0.4 @@ -6447,11 +6892,11 @@ packages: resolution: {integrity: sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.3 - '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.23.3) - '@babel/preset-env': 7.23.3(@babel/core@7.23.3) - '@babel/preset-react': 7.23.3(@babel/core@7.23.3) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.3) + '@babel/core': 7.23.6 + '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.23.6) + '@babel/preset-env': 7.23.6(@babel/core@7.23.6) + '@babel/preset-react': 7.23.3(@babel/core@7.23.6) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.6) '@svgr/core': 6.5.1 '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) @@ -6577,34 +7022,28 @@ packages: '@types/node': 18.16.18 dev: false - /@types/body-parser@1.19.3: - resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} + /@types/body-parser@1.19.5: + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: - '@types/connect': 3.4.35 - '@types/node': 18.16.18 + '@types/connect': 3.4.38 + '@types/node': 20.10.4 dev: false - /@types/bonjour@3.5.11: - resolution: {integrity: sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==} + /@types/bonjour@3.5.13: + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.4 dev: false /@types/chai@4.3.5: resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} dev: true - /@types/connect-history-api-fallback@1.5.1: - resolution: {integrity: sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==} - dependencies: - '@types/express-serve-static-core': 4.17.36 - '@types/node': 18.16.18 - dev: false - - /@types/connect@3.4.35: - resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} + /@types/connect-history-api-fallback@1.5.4: + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} dependencies: - '@types/node': 18.16.18 + '@types/express-serve-static-core': 4.17.41 + '@types/node': 20.10.4 dev: false /@types/connect@3.4.38: @@ -6668,22 +7107,22 @@ packages: /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - /@types/express-serve-static-core@4.17.36: - resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} + /@types/express-serve-static-core@4.17.41: + resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} dependencies: - '@types/node': 18.16.18 - '@types/qs': 6.9.8 - '@types/range-parser': 1.2.4 - '@types/send': 0.17.1 + '@types/node': 20.10.4 + '@types/qs': 6.9.10 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 dev: false - /@types/express@4.17.17: - resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} + /@types/express@4.17.21: + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} dependencies: - '@types/body-parser': 1.19.3 - '@types/express-serve-static-core': 4.17.36 - '@types/qs': 6.9.8 - '@types/serve-static': 1.15.2 + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.17.41 + '@types/qs': 6.9.10 + '@types/serve-static': 1.15.5 dev: false /@types/fs-extra@11.0.1: @@ -6727,14 +7166,14 @@ packages: resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} dev: false - /@types/http-errors@2.0.2: - resolution: {integrity: sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==} + /@types/http-errors@2.0.4: + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} dev: false - /@types/http-proxy@1.17.12: - resolution: {integrity: sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==} + /@types/http-proxy@1.17.14: + resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.4 dev: false /@types/is-ci@3.0.0: @@ -6855,12 +7294,17 @@ packages: resolution: {integrity: sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==} dev: false - /@types/mime@1.3.2: - resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} dev: false /@types/mime@3.0.1: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} + dev: true + + /@types/mime@3.0.4: + resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} + dev: false /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} @@ -6884,6 +7328,12 @@ packages: '@types/node': 18.16.18 dev: false + /@types/node-forge@1.3.10: + resolution: {integrity: sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==} + dependencies: + '@types/node': 20.10.4 + dev: false + /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} @@ -6894,14 +7344,13 @@ packages: /@types/node@18.16.18: resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} - /@types/node@20.6.0: - resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} - dev: false - - /@types/node@20.9.2: - resolution: {integrity: sha512-WHZXKFCEyIUJzAwh3NyyTHYSR35SevJ6mZ1nWwJafKtiQbqRTIKSRcw3Ma3acqgsent3RRDqeVwpHntMk+9irg==} + /@types/node@20.10.4: + resolution: {integrity: sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==} dependencies: undici-types: 5.26.5 + + /@types/node@20.6.0: + resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} dev: false /@types/normalize-package-data@2.4.1: @@ -6938,12 +7387,12 @@ packages: /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - /@types/qs@6.9.8: - resolution: {integrity: sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==} + /@types/qs@6.9.10: + resolution: {integrity: sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==} dev: false - /@types/range-parser@1.2.4: - resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} + /@types/range-parser@1.2.7: + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} dev: false /@types/react-dom@18.2.5: @@ -6957,6 +7406,15 @@ packages: '@types/history': 4.7.11 '@types/react': 18.2.37 '@types/react-router': 5.1.20 + dev: true + + /@types/react-router-config@5.0.11: + resolution: {integrity: sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.45 + '@types/react-router': 5.1.20 + dev: false /@types/react-router-dom@5.3.3: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} @@ -6992,6 +7450,13 @@ packages: '@types/scheduler': 0.16.8 csstype: 3.1.2 + /@types/react@18.2.45: + resolution: {integrity: sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==} + dependencies: + '@types/prop-types': 15.7.11 + '@types/scheduler': 0.16.8 + csstype: 3.1.3 + /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: @@ -7037,31 +7502,31 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@types/send@0.17.1: - resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: - '@types/mime': 1.3.2 - '@types/node': 18.16.18 + '@types/mime': 1.3.5 + '@types/node': 20.10.4 dev: false - /@types/serve-index@1.9.1: - resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==} + /@types/serve-index@1.9.4: + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} dependencies: - '@types/express': 4.17.17 + '@types/express': 4.17.21 dev: false - /@types/serve-static@1.15.2: - resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} + /@types/serve-static@1.15.5: + resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} dependencies: - '@types/http-errors': 2.0.2 - '@types/mime': 3.0.1 - '@types/node': 18.16.18 + '@types/http-errors': 2.0.4 + '@types/mime': 3.0.4 + '@types/node': 20.10.4 dev: false - /@types/sockjs@0.3.33: - resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} + /@types/sockjs@0.3.36: + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.4 dev: false /@types/stack-utils@2.0.1: @@ -7094,10 +7559,10 @@ packages: '@types/node': 18.16.18 dev: false - /@types/ws@8.5.5: - resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} + /@types/ws@8.5.10: + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.4 dev: false /@types/xml2js@0.4.11: @@ -7120,13 +7585,13 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@types/yargs@17.0.31: - resolution: {integrity: sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==} + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} dependencies: '@types/yargs-parser': 21.0.3 dev: false - /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7138,29 +7603,29 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.3) '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.3) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.2 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@5.3.3) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -7185,6 +7650,26 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: false + + /@typescript-eslint/parser@5.59.11(eslint@8.48.0)(typescript@5.3.3): + resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.59.11 + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.3) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.48.0 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color /@typescript-eslint/scope-manager@5.59.11: resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} @@ -7201,7 +7686,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.7 dev: true - /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7211,12 +7696,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.3) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.3) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true @@ -7249,8 +7734,29 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: false + + /@typescript-eslint/typescript-estree@5.59.11(typescript@5.3.3): + resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/visitor-keys': 5.59.11 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.2 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color - /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): + /@typescript-eslint/typescript-estree@5.59.7(typescript@5.3.3): resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7265,13 +7771,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.2 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7282,7 +7788,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.3) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.2 @@ -7291,7 +7797,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7302,7 +7808,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.7 '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.3.3) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.2 @@ -8105,8 +8611,8 @@ packages: engines: {node: '>=0.4.0'} dev: true - /acorn-walk@8.3.0: - resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} + /acorn-walk@8.3.1: + resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==} engines: {node: '>=0.4.0'} dev: false @@ -8192,32 +8698,32 @@ packages: require-from-string: 2.0.2 uri-js: 4.4.1 - /algoliasearch-helper@3.15.0(algoliasearch@4.20.0): - resolution: {integrity: sha512-DGUnK3TGtDQsaUE4ayF/LjSN0DGsuYThB8WBgnnDY0Wq04K6lNVruO3LfqJOgSfDiezp+Iyt8Tj4YKHi+/ivSA==} + /algoliasearch-helper@3.16.0(algoliasearch@4.22.0): + resolution: {integrity: sha512-RxOtBafSQwyqD5BLO/q9VsVw/zuNz8kjb51OZhCIWLr33uvKB+vrRis+QK+JFlNQXbXf+w28fsTWiBupc1pHew==} peerDependencies: algoliasearch: '>= 3.1 < 6' dependencies: '@algolia/events': 4.0.1 - algoliasearch: 4.20.0 + algoliasearch: 4.22.0 dev: false - /algoliasearch@4.20.0: - resolution: {integrity: sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==} + /algoliasearch@4.22.0: + resolution: {integrity: sha512-gfceltjkwh7PxXwtkS8KVvdfK+TSNQAWUeNSxf4dA29qW5tf2EGwa8jkJujlT9jLm17cixMVoGNc+GJFO1Mxhg==} dependencies: - '@algolia/cache-browser-local-storage': 4.20.0 - '@algolia/cache-common': 4.20.0 - '@algolia/cache-in-memory': 4.20.0 - '@algolia/client-account': 4.20.0 - '@algolia/client-analytics': 4.20.0 - '@algolia/client-common': 4.20.0 - '@algolia/client-personalization': 4.20.0 - '@algolia/client-search': 4.20.0 - '@algolia/logger-common': 4.20.0 - '@algolia/logger-console': 4.20.0 - '@algolia/requester-browser-xhr': 4.20.0 - '@algolia/requester-common': 4.20.0 - '@algolia/requester-node-http': 4.20.0 - '@algolia/transporter': 4.20.0 + '@algolia/cache-browser-local-storage': 4.22.0 + '@algolia/cache-common': 4.22.0 + '@algolia/cache-in-memory': 4.22.0 + '@algolia/client-account': 4.22.0 + '@algolia/client-analytics': 4.22.0 + '@algolia/client-common': 4.22.0 + '@algolia/client-personalization': 4.22.0 + '@algolia/client-search': 4.22.0 + '@algolia/logger-common': 4.22.0 + '@algolia/logger-console': 4.22.0 + '@algolia/requester-browser-xhr': 4.22.0 + '@algolia/requester-common': 4.22.0 + '@algolia/requester-node-http': 4.22.0 + '@algolia/transporter': 4.22.0 dev: false /ansi-align@3.0.1: @@ -8392,10 +8898,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false - /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -8433,35 +8935,19 @@ packages: engines: {node: '>=8.0.0'} dev: false - /autoprefixer@10.4.15(postcss@8.4.31): - resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - dependencies: - browserslist: 4.21.10 - caniuse-lite: 1.0.30001527 - fraction.js: 4.3.6 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.31 - postcss-value-parser: 4.2.0 - dev: false - - /autoprefixer@10.4.16(postcss@8.4.31): + /autoprefixer@10.4.16(postcss@8.4.32): resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.22.1 - caniuse-lite: 1.0.30001563 + browserslist: 4.22.2 + caniuse-lite: 1.0.30001570 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.31 + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false @@ -8488,6 +8974,10 @@ packages: dependencies: deep-equal: 2.2.1 + /b4a@1.6.4: + resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} + dev: false + /babel-jest@29.5.0(@babel/core@7.23.3): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8506,14 +8996,14 @@ packages: - supports-color dev: true - /babel-loader@9.1.3(@babel/core@7.23.3)(webpack@5.89.0): + /babel-loader@9.1.3(@babel/core@7.23.6)(webpack@5.89.0): resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} engines: {node: '>= 14.15.0'} peerDependencies: '@babel/core': ^7.12.0 webpack: '>=5' dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 find-cache-dir: 4.0.0 schema-utils: 4.2.0 webpack: 5.89.0 @@ -8522,7 +9012,7 @@ packages: /babel-plugin-dynamic-import-node@2.3.3: resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} dependencies: - object.assign: 4.1.4 + object.assign: 4.1.5 dev: false /babel-plugin-istanbul@6.1.1: @@ -8570,14 +9060,14 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.3): - resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} + /babel-plugin-polyfill-corejs2@0.4.7(@babel/core@7.23.6): + resolution: {integrity: sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.23.3 - '@babel/core': 7.23.3 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.6 + '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.6) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -8595,14 +9085,14 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.3): - resolution: {integrity: sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==} + /babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.23.6): + resolution: {integrity: sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) - core-js-compat: 3.33.3 + '@babel/core': 7.23.6 + '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.6) + core-js-compat: 3.34.0 transitivePeerDependencies: - supports-color dev: false @@ -8618,13 +9108,13 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.3): - resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} + /babel-plugin-polyfill-regenerator@0.5.4(@babel/core@7.23.6): + resolution: {integrity: sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) + '@babel/core': 7.23.6 + '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.6) transitivePeerDependencies: - supports-color dev: false @@ -8701,10 +9191,6 @@ packages: safe-buffer: 5.2.1 dev: false - /base16@1.0.0: - resolution: {integrity: sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==} - dev: false - /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false @@ -8922,6 +9408,16 @@ packages: node-releases: 2.0.13 update-browserslist-db: 1.0.13(browserslist@4.22.1) + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001570 + electron-to-chromium: 1.4.613 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -9083,7 +9579,7 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.5.2 + tslib: 2.6.2 dev: false /camelcase-keys@6.2.2: @@ -9111,8 +9607,8 @@ packages: /caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: - browserslist: 4.21.10 - caniuse-lite: 1.0.30001527 + browserslist: 4.22.2 + caniuse-lite: 1.0.30001570 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: false @@ -9123,6 +9619,9 @@ packages: /caniuse-lite@1.0.30001563: resolution: {integrity: sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==} + /caniuse-lite@1.0.30001570: + resolution: {integrity: sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==} + /case@1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} engines: {node: '>= 0.8.0'} @@ -9245,6 +9744,10 @@ packages: optionalDependencies: fsevents: 2.3.3 + /chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + dev: false + /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} @@ -9275,8 +9778,8 @@ packages: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: true - /clean-css@5.3.2: - resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} + /clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} engines: {node: '>= 10.0'} dependencies: source-map: 0.6.1 @@ -9407,6 +9910,11 @@ packages: engines: {node: '>=6'} dev: false + /clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + dev: false + /cluster-key-slot@1.1.2: resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} engines: {node: '>=0.10.0'} @@ -9442,6 +9950,21 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: false + + /color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + dev: false + /colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} dev: false @@ -9567,6 +10090,10 @@ packages: engines: {node: ^14.18.0 || >=16.10.0} dev: false + /consolidated-events@2.0.2: + resolution: {integrity: sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==} + dev: false + /content-disposition@0.5.2: resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} engines: {node: '>= 0.6'} @@ -9686,19 +10213,19 @@ packages: browserslist: 4.21.10 dev: true - /core-js-compat@3.33.3: - resolution: {integrity: sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==} + /core-js-compat@3.34.0: + resolution: {integrity: sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==} dependencies: - browserslist: 4.22.1 + browserslist: 4.22.2 dev: false - /core-js-pure@3.33.3: - resolution: {integrity: sha512-taJ00IDOP+XYQEA2dAe4ESkmHt1fL8wzYDo3mRWQey8uO9UojlBFMneA65kMyxfYP7106c6LzWaq7/haDT6BCQ==} + /core-js-pure@3.34.0: + resolution: {integrity: sha512-pmhivkYXkymswFfbXsANmBAewXx86UBfmagP+w0wkK06kLsLlTK5oQmsURPivzMkIBQiYq2cjamcZExIwlFQIg==} requiresBuild: true dev: false - /core-js@3.33.3: - resolution: {integrity: sha512-lo0kOocUlLKmm6kv/FswQL8zbkH7mVsLJ/FULClOhv8WRVmKLVcs6XPNQAzstfeJTCHMyButEwG+z1kHxHoDZw==} + /core-js@3.34.0: + resolution: {integrity: sha512-aDdvlDder8QmY91H88GzNi9EtQi2TjvQhpCX6B1v/dAZHU1AuLgHvRh54RiOerpEhEW46Tkf+vgAViB/CWC0ag==} requiresBuild: true dev: false @@ -9725,7 +10252,7 @@ packages: dependencies: '@types/node': 18.16.18 cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.3.3) typescript: 4.9.5 dev: true @@ -9760,7 +10287,7 @@ packages: path-type: 4.0.0 dev: true - /cosmiconfig@8.3.6(typescript@4.9.5): + /cosmiconfig@8.3.6(typescript@5.3.3): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -9773,7 +10300,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 4.9.5 + typescript: 5.3.3 dev: false /cosmjs-types@0.4.1: @@ -9878,13 +10405,13 @@ packages: type-fest: 1.4.0 dev: false - /css-declaration-sorter@6.4.1(postcss@8.4.31): + /css-declaration-sorter@6.4.1(postcss@8.4.32): resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} engines: {node: ^10 || ^12 || >=14} peerDependencies: postcss: ^8.0.9 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 dev: false /css-loader@6.8.1(webpack@5.89.0): @@ -9893,18 +10420,18 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.31) - postcss: 8.4.31 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.31) - postcss-modules-local-by-default: 4.0.3(postcss@8.4.31) - postcss-modules-scope: 3.0.0(postcss@8.4.31) - postcss-modules-values: 4.0.0(postcss@8.4.31) + icss-utils: 5.1.0(postcss@8.4.32) + postcss: 8.4.32 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.32) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.32) + postcss-modules-scope: 3.0.0(postcss@8.4.32) + postcss-modules-values: 4.0.0(postcss@8.4.32) postcss-value-parser: 4.2.0 semver: 7.5.4 webpack: 5.89.0 dev: false - /css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.2)(webpack@5.89.0): + /css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.3)(webpack@5.89.0): resolution: {integrity: sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -9929,10 +10456,10 @@ packages: lightningcss: optional: true dependencies: - clean-css: 5.3.2 - cssnano: 5.1.15(postcss@8.4.31) + clean-css: 5.3.3 + cssnano: 5.1.15(postcss@8.4.32) jest-worker: 29.7.0 - postcss: 8.4.31 + postcss: 8.4.32 schema-utils: 4.2.0 serialize-javascript: 6.0.1 source-map: 0.6.1 @@ -9983,77 +10510,77 @@ packages: hasBin: true dev: false - /cssnano-preset-advanced@5.3.10(postcss@8.4.31): + /cssnano-preset-advanced@5.3.10(postcss@8.4.32): resolution: {integrity: sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - autoprefixer: 10.4.15(postcss@8.4.31) - cssnano-preset-default: 5.2.14(postcss@8.4.31) - postcss: 8.4.31 - postcss-discard-unused: 5.1.0(postcss@8.4.31) - postcss-merge-idents: 5.1.1(postcss@8.4.31) - postcss-reduce-idents: 5.2.0(postcss@8.4.31) - postcss-zindex: 5.1.0(postcss@8.4.31) + autoprefixer: 10.4.16(postcss@8.4.32) + cssnano-preset-default: 5.2.14(postcss@8.4.32) + postcss: 8.4.32 + postcss-discard-unused: 5.1.0(postcss@8.4.32) + postcss-merge-idents: 5.1.1(postcss@8.4.32) + postcss-reduce-idents: 5.2.0(postcss@8.4.32) + postcss-zindex: 5.1.0(postcss@8.4.32) dev: false - /cssnano-preset-default@5.2.14(postcss@8.4.31): + /cssnano-preset-default@5.2.14(postcss@8.4.32): resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - css-declaration-sorter: 6.4.1(postcss@8.4.31) - cssnano-utils: 3.1.0(postcss@8.4.31) - postcss: 8.4.31 - postcss-calc: 8.2.4(postcss@8.4.31) - postcss-colormin: 5.3.1(postcss@8.4.31) - postcss-convert-values: 5.1.3(postcss@8.4.31) - postcss-discard-comments: 5.1.2(postcss@8.4.31) - postcss-discard-duplicates: 5.1.0(postcss@8.4.31) - postcss-discard-empty: 5.1.1(postcss@8.4.31) - postcss-discard-overridden: 5.1.0(postcss@8.4.31) - postcss-merge-longhand: 5.1.7(postcss@8.4.31) - postcss-merge-rules: 5.1.4(postcss@8.4.31) - postcss-minify-font-values: 5.1.0(postcss@8.4.31) - postcss-minify-gradients: 5.1.1(postcss@8.4.31) - postcss-minify-params: 5.1.4(postcss@8.4.31) - postcss-minify-selectors: 5.2.1(postcss@8.4.31) - postcss-normalize-charset: 5.1.0(postcss@8.4.31) - postcss-normalize-display-values: 5.1.0(postcss@8.4.31) - postcss-normalize-positions: 5.1.1(postcss@8.4.31) - postcss-normalize-repeat-style: 5.1.1(postcss@8.4.31) - postcss-normalize-string: 5.1.0(postcss@8.4.31) - postcss-normalize-timing-functions: 5.1.0(postcss@8.4.31) - postcss-normalize-unicode: 5.1.1(postcss@8.4.31) - postcss-normalize-url: 5.1.0(postcss@8.4.31) - postcss-normalize-whitespace: 5.1.1(postcss@8.4.31) - postcss-ordered-values: 5.1.3(postcss@8.4.31) - postcss-reduce-initial: 5.1.2(postcss@8.4.31) - postcss-reduce-transforms: 5.1.0(postcss@8.4.31) - postcss-svgo: 5.1.0(postcss@8.4.31) - postcss-unique-selectors: 5.1.1(postcss@8.4.31) - dev: false - - /cssnano-utils@3.1.0(postcss@8.4.31): + css-declaration-sorter: 6.4.1(postcss@8.4.32) + cssnano-utils: 3.1.0(postcss@8.4.32) + postcss: 8.4.32 + postcss-calc: 8.2.4(postcss@8.4.32) + postcss-colormin: 5.3.1(postcss@8.4.32) + postcss-convert-values: 5.1.3(postcss@8.4.32) + postcss-discard-comments: 5.1.2(postcss@8.4.32) + postcss-discard-duplicates: 5.1.0(postcss@8.4.32) + postcss-discard-empty: 5.1.1(postcss@8.4.32) + postcss-discard-overridden: 5.1.0(postcss@8.4.32) + postcss-merge-longhand: 5.1.7(postcss@8.4.32) + postcss-merge-rules: 5.1.4(postcss@8.4.32) + postcss-minify-font-values: 5.1.0(postcss@8.4.32) + postcss-minify-gradients: 5.1.1(postcss@8.4.32) + postcss-minify-params: 5.1.4(postcss@8.4.32) + postcss-minify-selectors: 5.2.1(postcss@8.4.32) + postcss-normalize-charset: 5.1.0(postcss@8.4.32) + postcss-normalize-display-values: 5.1.0(postcss@8.4.32) + postcss-normalize-positions: 5.1.1(postcss@8.4.32) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.32) + postcss-normalize-string: 5.1.0(postcss@8.4.32) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.32) + postcss-normalize-unicode: 5.1.1(postcss@8.4.32) + postcss-normalize-url: 5.1.0(postcss@8.4.32) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.32) + postcss-ordered-values: 5.1.3(postcss@8.4.32) + postcss-reduce-initial: 5.1.2(postcss@8.4.32) + postcss-reduce-transforms: 5.1.0(postcss@8.4.32) + postcss-svgo: 5.1.0(postcss@8.4.32) + postcss-unique-selectors: 5.1.1(postcss@8.4.32) + dev: false + + /cssnano-utils@3.1.0(postcss@8.4.32): resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 dev: false - /cssnano@5.1.15(postcss@8.4.31): + /cssnano@5.1.15(postcss@8.4.32): resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-preset-default: 5.2.14(postcss@8.4.31) + cssnano-preset-default: 5.2.14(postcss@8.4.32) lilconfig: 2.1.0 - postcss: 8.4.31 + postcss: 8.4.32 yaml: 1.10.2 dev: false @@ -10067,6 +10594,9 @@ packages: /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + /csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} dev: true @@ -10315,6 +10845,7 @@ packages: /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} + dev: false /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} @@ -10323,6 +10854,15 @@ packages: has-property-descriptors: 1.0.0 object-keys: 1.1.1 + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 + object-keys: 1.1.1 + dev: false + /defu@6.1.3: resolution: {integrity: sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==} dev: false @@ -10408,6 +10948,11 @@ packages: hasBin: true dev: false + /detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + dev: false + /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -10638,6 +11183,9 @@ packages: /electron-to-chromium@1.4.588: resolution: {integrity: sha512-soytjxwbgcCu7nh5Pf4S2/4wa6UIu+A3p03U2yVr53qGxi1/VTR3ENI+p50v+UxqqZAfl48j3z55ud7VHIOr9w==} + /electron-to-chromium@1.4.613: + resolution: {integrity: sha512-r4x5+FowKG6q+/Wj0W9nidx7QO31BJwmR2uEo+Qh3YLGQ8SbBAFuDFpTxzly/I2gsbrFwBuIjrMp423L3O5U3w==} + /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -10859,7 +11407,7 @@ packages: eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) @@ -10869,7 +11417,7 @@ packages: - supports-color dev: false - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -10882,19 +11430,19 @@ packages: '@babel/core': 7.23.3 '@babel/eslint-parser': 7.21.8(@babel/core@7.23.3)(eslint@8.48.0) '@rushstack/eslint-patch': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.3) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.48.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.3.3) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) - eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@4.9.5) - typescript: 4.9.5 + eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -10923,7 +11471,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.15.0 eslint: 8.48.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) get-tsconfig: 4.5.0 globby: 13.1.3 is-core-module: 2.12.1 @@ -10931,8 +11479,9 @@ packages: synckit: 0.8.5 transitivePeerDependencies: - supports-color + dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -10953,11 +11502,10 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.3) debug: 3.2.7 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) transitivePeerDependencies: - supports-color @@ -10976,7 +11524,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -10986,7 +11534,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.3) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -10994,7 +11542,7 @@ packages: doctrine: 2.1.0 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0) has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 @@ -11008,7 +11556,7 @@ packages: - eslint-import-resolver-webpack - supports-color - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -11021,8 +11569,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@5.3.3) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -11100,13 +11648,13 @@ packages: semver: 6.3.1 string.prototype.matchall: 4.0.8 - /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@4.9.5): + /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.3) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -11389,7 +11937,7 @@ packages: resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} engines: {node: '>= 0.8'} dependencies: - '@types/node': 20.9.2 + '@types/node': 20.10.4 require-like: 0.1.2 dev: false @@ -11455,6 +12003,11 @@ packages: engines: {node: '>= 0.8.0'} dev: true + /expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + dev: false + /expect@29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11555,6 +12108,10 @@ packages: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true + /fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + dev: false + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} @@ -11626,32 +12183,6 @@ packages: bser: 2.1.1 dev: true - /fbemitter@3.0.0: - resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} - dependencies: - fbjs: 3.0.5 - transitivePeerDependencies: - - encoding - dev: false - - /fbjs-css-vars@1.0.2: - resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} - dev: false - - /fbjs@3.0.5: - resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} - dependencies: - cross-fetch: 3.1.8 - fbjs-css-vars: 1.0.2 - loose-envify: 1.4.0 - object-assign: 4.1.1 - promise: 7.3.1 - setimmediate: 1.0.5 - ua-parser-js: 1.0.37 - transitivePeerDependencies: - - encoding - dev: false - /fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} dependencies: @@ -11821,20 +12352,18 @@ packages: /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - /flux@4.0.4(react@18.2.0): - resolution: {integrity: sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==} + /follow-redirects@1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + engines: {node: '>=4.0'} peerDependencies: - react: ^15.0.2 || ^16.0.0 || ^17.0.0 - dependencies: - fbemitter: 3.0.0 - fbjs: 3.0.5 - react: 18.2.0 - transitivePeerDependencies: - - encoding + debug: '*' + peerDependenciesMeta: + debug: + optional: true dev: false - /follow-redirects@1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + /follow-redirects@1.15.3: + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -11848,7 +12377,7 @@ packages: dependencies: is-callable: 1.2.7 - /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@5.3.3)(webpack@5.89.0): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -11862,7 +12391,7 @@ packages: vue-template-compiler: optional: true dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.23.5 '@types/json-schema': 7.0.15 chalk: 4.1.2 chokidar: 3.5.3 @@ -11876,7 +12405,7 @@ packages: schema-utils: 2.7.0 semver: 7.5.4 tapable: 1.1.3 - typescript: 4.9.5 + typescript: 5.3.3 webpack: 5.89.0 dev: false @@ -11904,10 +12433,6 @@ packages: engines: {node: '>= 0.6'} dev: false - /fraction.js@4.3.6: - resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==} - dev: false - /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: false @@ -11936,6 +12461,15 @@ packages: jsonfile: 6.1.0 universalify: 2.0.0 + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: false + /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -11964,8 +12498,8 @@ packages: universalify: 2.0.1 dev: false - /fs-monkey@1.0.4: - resolution: {integrity: sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==} + /fs-monkey@1.0.5: + resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} dev: false /fs.realpath@1.0.0: @@ -12077,6 +12611,7 @@ packages: /get-tsconfig@4.5.0: resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} + dev: false /git-clone@0.1.0: resolution: {integrity: sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==} @@ -12094,6 +12629,10 @@ packages: through2: 4.0.2 dev: true + /github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + dev: false + /github-slugger@1.5.0: resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} dev: false @@ -12193,6 +12732,7 @@ packages: /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: false /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -12228,6 +12768,7 @@ packages: /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: false /google-protobuf@3.21.2: resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} @@ -12490,18 +13031,26 @@ packages: - supports-color dev: false - /hast-util-to-jsx-runtime@2.2.0: - resolution: {integrity: sha512-wSlp23N45CMjDg/BPW8zvhEi3R+8eRE1qFbjEyAUzMCzu2l1Wzwakq+Tlia9nkCtEl5mDxa7nKHsvYJ6Gfn21A==} + /hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} dependencies: + '@types/estree': 1.0.5 '@types/hast': 3.0.3 '@types/unist': 3.0.2 comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdxjs-esm: 2.0.1 property-information: 6.4.0 space-separated-tokens: 2.0.2 - style-to-object: 0.4.4 + style-to-object: 1.0.5 unist-util-position: 5.0.0 vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color dev: false /hast-util-to-parse5@8.0.0: @@ -12543,7 +13092,7 @@ packages: /history@4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.23.6 loose-envify: 1.4.0 resolve-pathname: 3.0.0 tiny-invariant: 1.3.1 @@ -12598,12 +13147,12 @@ packages: hasBin: true dependencies: camel-case: 4.1.2 - clean-css: 5.3.2 + clean-css: 5.3.3 commander: 8.3.0 he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.19.2 + terser: 5.26.0 dev: false /html-minifier-terser@7.2.0: @@ -12612,12 +13161,12 @@ packages: hasBin: true dependencies: camel-case: 4.1.2 - clean-css: 5.3.2 + clean-css: 5.3.3 commander: 10.0.1 entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.24.0 + terser: 5.26.0 dev: false /html-tags@3.3.1: @@ -12629,8 +13178,8 @@ packages: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} dev: false - /html-webpack-plugin@5.5.3(webpack@5.89.0): - resolution: {integrity: sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==} + /html-webpack-plugin@5.5.4(webpack@5.89.0): + resolution: {integrity: sha512-3wNSaVVxdxcu0jd4FpQFoICdqgxs4zIQQvj+2yQKFfBOnLETQ6X5CDWdeasuGlSsooFlMkEioWDTqBv1wvw5Iw==} engines: {node: '>=10.13.0'} peerDependencies: webpack: ^5.20.0 @@ -12698,7 +13247,7 @@ packages: resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} dev: false - /http-proxy-middleware@2.0.6(@types/express@4.17.17): + /http-proxy-middleware@2.0.6(@types/express@4.17.21): resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -12707,8 +13256,8 @@ packages: '@types/express': optional: true dependencies: - '@types/express': 4.17.17 - '@types/http-proxy': 1.17.12 + '@types/express': 4.17.21 + '@types/http-proxy': 1.17.14 http-proxy: 1.18.1 is-glob: 4.0.3 is-plain-obj: 3.0.0 @@ -12722,7 +13271,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.2 + follow-redirects: 1.15.3 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -12780,13 +13329,13 @@ packages: dependencies: safer-buffer: 2.1.2 - /icss-utils@5.1.0(postcss@8.4.31): + /icss-utils@5.1.0(postcss@8.4.32): resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 dev: false /idb-keyval@6.2.1: @@ -12872,6 +13421,10 @@ packages: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} dev: false + /inline-style-parser@0.2.2: + resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} + dev: false + /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} @@ -12962,6 +13515,10 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + /is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: false + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -13022,6 +13579,7 @@ packages: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true + dev: false /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} @@ -13307,6 +13865,7 @@ packages: engines: {node: '>=8'} dependencies: is-docker: 2.2.1 + dev: false /is-yarn-global@0.4.1: resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} @@ -13459,7 +14018,7 @@ packages: - supports-color dev: true - /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + /jest-cli@29.5.0(@types/node@20.10.4)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -13476,7 +14035,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@20.10.4)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -13522,7 +14081,47 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@20.10.4)(typescript@4.9.5) + transitivePeerDependencies: + - supports-color + dev: true + + /jest-config@29.5.0(@types/node@20.10.4)(ts-node@10.9.1): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.23.3 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.10.4 + babel-jest: 29.5.0(@babel/core@7.23.3) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1(@types/node@20.10.4)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true @@ -13782,7 +14381,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.9.2 + '@types/node': 20.10.4 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -13846,13 +14445,13 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.9.2 + '@types/node': 20.10.4 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false - /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + /jest@29.5.0(@types/node@20.10.4)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -13865,7 +14464,7 @@ packages: '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-cli: 29.5.0(@types/node@20.10.4)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color @@ -14058,8 +14657,8 @@ packages: package-json: 8.1.1 dev: false - /launch-editor@2.6.0: - resolution: {integrity: sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==} + /launch-editor@2.6.1: + resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==} dependencies: picocolors: 1.0.0 shell-quote: 1.8.1 @@ -14275,10 +14874,6 @@ packages: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} dev: false - /lodash.curry@4.1.1: - resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} - dev: false - /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} @@ -14286,10 +14881,6 @@ packages: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} dev: false - /lodash.flow@3.5.0: - resolution: {integrity: sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==} - dev: false - /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} dev: false @@ -14748,7 +15339,7 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} dependencies: - fs-monkey: 1.0.4 + fs-monkey: 1.0.5 dev: false /meow@6.1.1: @@ -15294,6 +15885,10 @@ packages: engines: {node: '>= 8.0.0'} dev: true + /mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + dev: false + /mlly@1.4.2: resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} dependencies: @@ -15391,6 +15986,10 @@ packages: hasBin: true dev: false + /napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + dev: false + /napi-wasm@1.1.0: resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==} dev: false @@ -15456,19 +16055,30 @@ packages: tslib: 2.6.2 dev: false + /node-abi@3.52.0: + resolution: {integrity: sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==} + engines: {node: '>=10'} + dependencies: + semver: 7.5.4 + dev: false + /node-addon-api@2.0.2: resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} dev: false + /node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} + dev: false + /node-addon-api@7.0.0: resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==} dev: false - /node-emoji@2.1.1: - resolution: {integrity: sha512-+fyi06+Z9LARCwnTmUF1sRPVQFhGlIpuye3zwlzMN8bIKou6l7k1rGV8WVOEu9EQnRLfoVOYj/p107u0CoQoKA==} + /node-emoji@2.1.3: + resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} engines: {node: '>=18'} dependencies: - '@sindresorhus/is': 6.1.0 + '@sindresorhus/is': 4.6.0 char-regex: 1.0.2 emojilib: 2.4.0 skin-tone: 2.0.0 @@ -15523,6 +16133,9 @@ packages: /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -15628,6 +16241,16 @@ packages: has-symbols: 1.0.3 object-keys: 1.1.1 + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: false + /object.entries@1.1.6: resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} @@ -15711,6 +16334,7 @@ packages: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 + dev: false /opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} @@ -15878,7 +16502,7 @@ packages: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.5.2 + tslib: 2.6.2 dev: false /parent-module@1.0.1: @@ -16143,352 +16767,352 @@ packages: engines: {node: '>=10.13.0'} dev: false - /postcss-calc@8.2.4(postcss@8.4.31): + /postcss-calc@8.2.4(postcss@8.4.32): resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} peerDependencies: postcss: ^8.2.2 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 dev: false - /postcss-colormin@5.3.1(postcss@8.4.31): + /postcss-colormin@5.3.1(postcss@8.4.32): resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 + browserslist: 4.22.2 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.31 + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false - /postcss-convert-values@5.1.3(postcss@8.4.31): + /postcss-convert-values@5.1.3(postcss@8.4.32): resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 - postcss: 8.4.31 + browserslist: 4.22.2 + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false - /postcss-discard-comments@5.1.2(postcss@8.4.31): + /postcss-discard-comments@5.1.2(postcss@8.4.32): resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 dev: false - /postcss-discard-duplicates@5.1.0(postcss@8.4.31): + /postcss-discard-duplicates@5.1.0(postcss@8.4.32): resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 dev: false - /postcss-discard-empty@5.1.1(postcss@8.4.31): + /postcss-discard-empty@5.1.1(postcss@8.4.32): resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 dev: false - /postcss-discard-overridden@5.1.0(postcss@8.4.31): + /postcss-discard-overridden@5.1.0(postcss@8.4.32): resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 dev: false - /postcss-discard-unused@5.1.0(postcss@8.4.31): + /postcss-discard-unused@5.1.0(postcss@8.4.32): resolution: {integrity: sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 postcss-selector-parser: 6.0.13 dev: false - /postcss-loader@7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0): + /postcss-loader@7.3.3(postcss@8.4.32)(typescript@5.3.3)(webpack@5.89.0): resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} engines: {node: '>= 14.15.0'} peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 dependencies: - cosmiconfig: 8.3.6(typescript@4.9.5) + cosmiconfig: 8.3.6(typescript@5.3.3) jiti: 1.21.0 - postcss: 8.4.31 + postcss: 8.4.32 semver: 7.5.4 webpack: 5.89.0 transitivePeerDependencies: - typescript dev: false - /postcss-merge-idents@5.1.1(postcss@8.4.31): + /postcss-merge-idents@5.1.1(postcss@8.4.32): resolution: {integrity: sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-utils: 3.1.0(postcss@8.4.31) - postcss: 8.4.31 + cssnano-utils: 3.1.0(postcss@8.4.32) + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false - /postcss-merge-longhand@5.1.7(postcss@8.4.31): + /postcss-merge-longhand@5.1.7(postcss@8.4.32): resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 postcss-value-parser: 4.2.0 - stylehacks: 5.1.1(postcss@8.4.31) + stylehacks: 5.1.1(postcss@8.4.32) dev: false - /postcss-merge-rules@5.1.4(postcss@8.4.31): + /postcss-merge-rules@5.1.4(postcss@8.4.32): resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 + browserslist: 4.22.2 caniuse-api: 3.0.0 - cssnano-utils: 3.1.0(postcss@8.4.31) - postcss: 8.4.31 + cssnano-utils: 3.1.0(postcss@8.4.32) + postcss: 8.4.32 postcss-selector-parser: 6.0.13 dev: false - /postcss-minify-font-values@5.1.0(postcss@8.4.31): + /postcss-minify-font-values@5.1.0(postcss@8.4.32): resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false - /postcss-minify-gradients@5.1.1(postcss@8.4.31): + /postcss-minify-gradients@5.1.1(postcss@8.4.32): resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: colord: 2.9.3 - cssnano-utils: 3.1.0(postcss@8.4.31) - postcss: 8.4.31 + cssnano-utils: 3.1.0(postcss@8.4.32) + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false - /postcss-minify-params@5.1.4(postcss@8.4.31): + /postcss-minify-params@5.1.4(postcss@8.4.32): resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 - cssnano-utils: 3.1.0(postcss@8.4.31) - postcss: 8.4.31 + browserslist: 4.22.2 + cssnano-utils: 3.1.0(postcss@8.4.32) + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false - /postcss-minify-selectors@5.2.1(postcss@8.4.31): + /postcss-minify-selectors@5.2.1(postcss@8.4.32): resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 postcss-selector-parser: 6.0.13 dev: false - /postcss-modules-extract-imports@3.0.0(postcss@8.4.31): + /postcss-modules-extract-imports@3.0.0(postcss@8.4.32): resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 dev: false - /postcss-modules-local-by-default@4.0.3(postcss@8.4.31): + /postcss-modules-local-by-default@4.0.3(postcss@8.4.32): resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.31) - postcss: 8.4.31 + icss-utils: 5.1.0(postcss@8.4.32) + postcss: 8.4.32 postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 dev: false - /postcss-modules-scope@3.0.0(postcss@8.4.31): + /postcss-modules-scope@3.0.0(postcss@8.4.32): resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 postcss-selector-parser: 6.0.13 dev: false - /postcss-modules-values@4.0.0(postcss@8.4.31): + /postcss-modules-values@4.0.0(postcss@8.4.32): resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.31) - postcss: 8.4.31 + icss-utils: 5.1.0(postcss@8.4.32) + postcss: 8.4.32 dev: false - /postcss-normalize-charset@5.1.0(postcss@8.4.31): + /postcss-normalize-charset@5.1.0(postcss@8.4.32): resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 dev: false - /postcss-normalize-display-values@5.1.0(postcss@8.4.31): + /postcss-normalize-display-values@5.1.0(postcss@8.4.32): resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-positions@5.1.1(postcss@8.4.31): + /postcss-normalize-positions@5.1.1(postcss@8.4.32): resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-repeat-style@5.1.1(postcss@8.4.31): + /postcss-normalize-repeat-style@5.1.1(postcss@8.4.32): resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-string@5.1.0(postcss@8.4.31): + /postcss-normalize-string@5.1.0(postcss@8.4.32): resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-timing-functions@5.1.0(postcss@8.4.31): + /postcss-normalize-timing-functions@5.1.0(postcss@8.4.32): resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-unicode@5.1.1(postcss@8.4.31): + /postcss-normalize-unicode@5.1.1(postcss@8.4.32): resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 - postcss: 8.4.31 + browserslist: 4.22.2 + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-url@5.1.0(postcss@8.4.31): + /postcss-normalize-url@5.1.0(postcss@8.4.32): resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: normalize-url: 6.1.0 - postcss: 8.4.31 + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-whitespace@5.1.1(postcss@8.4.31): + /postcss-normalize-whitespace@5.1.1(postcss@8.4.32): resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false - /postcss-ordered-values@5.1.3(postcss@8.4.31): + /postcss-ordered-values@5.1.3(postcss@8.4.32): resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-utils: 3.1.0(postcss@8.4.31) - postcss: 8.4.31 + cssnano-utils: 3.1.0(postcss@8.4.32) + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false - /postcss-reduce-idents@5.2.0(postcss@8.4.31): + /postcss-reduce-idents@5.2.0(postcss@8.4.32): resolution: {integrity: sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false - /postcss-reduce-initial@5.1.2(postcss@8.4.31): + /postcss-reduce-initial@5.1.2(postcss@8.4.32): resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 + browserslist: 4.22.2 caniuse-api: 3.0.0 - postcss: 8.4.31 + postcss: 8.4.32 dev: false - /postcss-reduce-transforms@5.1.0(postcss@8.4.31): + /postcss-reduce-transforms@5.1.0(postcss@8.4.32): resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 postcss-value-parser: 4.2.0 dev: false @@ -16500,34 +17124,34 @@ packages: util-deprecate: 1.0.2 dev: false - /postcss-sort-media-queries@4.4.1(postcss@8.4.31): + /postcss-sort-media-queries@4.4.1(postcss@8.4.32): resolution: {integrity: sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==} engines: {node: '>=10.0.0'} peerDependencies: postcss: ^8.4.16 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 sort-css-media-queries: 2.1.0 dev: false - /postcss-svgo@5.1.0(postcss@8.4.31): + /postcss-svgo@5.1.0(postcss@8.4.32): resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 postcss-value-parser: 4.2.0 svgo: 2.8.0 dev: false - /postcss-unique-selectors@5.1.1(postcss@8.4.31): + /postcss-unique-selectors@5.1.1(postcss@8.4.32): resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 postcss-selector-parser: 6.0.13 dev: false @@ -16535,13 +17159,13 @@ packages: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: false - /postcss-zindex@5.1.0(postcss@8.4.31): + /postcss-zindex@5.1.0(postcss@8.4.32): resolution: {integrity: sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.31 + postcss: 8.4.32 dev: false /postcss@8.4.31: @@ -16553,10 +17177,38 @@ packages: source-map-js: 1.0.2 dev: false + /postcss@8.4.32: + resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + /preact@10.19.2: resolution: {integrity: sha512-UA9DX/OJwv6YwP9Vn7Ti/vF80XL+YA5H2l7BpCtUr3ya8LWHFzpiO5R+N7dN16ujpIxhekRFuOOF82bXX7K/lg==} dev: false + /prebuild-install@7.1.1: + resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + detect-libc: 2.0.2 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.52.0 + pump: 3.0.0 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + dev: false + /preferred-pm@3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} engines: {node: '>=10'} @@ -16620,6 +17272,16 @@ packages: react: 18.2.0 dev: false + /prism-react-renderer@2.3.0(react@18.2.0): + resolution: {integrity: sha512-UYRg2TkVIaI6tRVHC5OJ4/BxqPUxJkJvq/odLT/ykpt1zGYXooNperUxQcCvi87LyRnR4nCh81ceOA+e7nrydg==} + peerDependencies: + react: '>=16.0.0' + dependencies: + '@types/prismjs': 1.26.3 + clsx: 2.0.0 + react: 18.2.0 + dev: false + /prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} @@ -16633,12 +17295,6 @@ packages: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} dev: false - /promise@7.3.1: - resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} - dependencies: - asap: 2.0.6 - dev: false - /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -16701,6 +17357,13 @@ packages: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: false + /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: false @@ -16716,10 +17379,6 @@ packages: escape-goat: 4.0.0 dev: false - /pure-color@1.3.0: - resolution: {integrity: sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==} - dev: false - /pure-rand@6.0.2: resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} dev: true @@ -16797,6 +17456,10 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + /queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + dev: false + /queue@6.0.2: resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} dependencies: @@ -16856,16 +17519,7 @@ packages: strip-json-comments: 2.0.1 dev: false - /react-base16-styling@0.6.0: - resolution: {integrity: sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==} - dependencies: - base16: 1.0.0 - lodash.curry: 4.1.1 - lodash.flow: 3.5.0 - pure-color: 1.3.0 - dev: false - - /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): + /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@5.3.3)(webpack@5.89.0): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -16875,16 +17529,16 @@ packages: typescript: optional: true dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.23.5 address: 1.2.2 - browserslist: 4.22.1 + browserslist: 4.22.2 chalk: 4.1.2 cross-spawn: 7.0.3 detect-port-alt: 1.1.6 escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@5.3.3)(webpack@5.89.0) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -16899,7 +17553,7 @@ packages: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - typescript: 4.9.5 + typescript: 5.3.3 webpack: 5.89.0 transitivePeerDependencies: - eslint @@ -16937,15 +17591,32 @@ packages: react-fast-compare: 3.2.2 shallowequal: 1.1.0 + /react-helmet-async@2.0.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-7/X3ehSCbjCaIljWa39Bb7F1Y2JWM23FN80kLozx2TdgzUmxKDSLN6qu06NG0Srzm8ljGOjgk7r7CXeEOx4MPw==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 + dependencies: + invariant: 2.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-fast-compare: 3.2.2 + shallowequal: 1.1.0 + dev: false + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - dev: true - /react-lifecycles-compat@3.0.4: - resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + /react-json-view-lite@1.2.1(react@18.2.0): + resolution: {integrity: sha512-Itc0g86fytOmKZoIoJyGgvNqohWSbh3NXIKNgH6W6FT9PC1ck4xas1tT3Rr/b3UlFXyA9Jjaw9QSXdZy2JwGMQ==} + engines: {node: '>=14'} + peerDependencies: + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 dev: false /react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.89.0): @@ -16955,7 +17626,7 @@ packages: react-loadable: '*' webpack: '>=4.41.1 || 5.x' dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.23.6 react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) webpack: 5.89.0 dev: false @@ -17001,7 +17672,7 @@ packages: react: '>=15' react-router: '>=5' dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.23.6 react: 18.2.0 react-router: 5.3.4(react@18.2.0) dev: false @@ -17011,7 +17682,7 @@ packages: peerDependencies: react: '>=15' dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.23.6 history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -17026,7 +17697,7 @@ packages: peerDependencies: react: '>=15' dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.23.6 history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -17055,18 +17726,16 @@ packages: tslib: 2.6.2 dev: false - /react-textarea-autosize@8.3.4(@types/react@18.2.38)(react@18.2.0): - resolution: {integrity: sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==} - engines: {node: '>=10'} + /react-waypoint@10.3.0(react@18.2.0): + resolution: {integrity: sha512-iF1y2c1BsoXuEGz08NoahaLFIGI9gTUAAOKip96HUmylRT6DUtpgoBPjk/Y8dfcFVmfVDvUzWjNXpZyKTOV0SQ==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.23.4 + consolidated-events: 2.0.2 + prop-types: 15.8.1 react: 18.2.0 - use-composed-ref: 1.3.0(react@18.2.0) - use-latest: 1.2.1(@types/react@18.2.38)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' + react-is: 18.2.0 dev: false /react@18.2.0: @@ -17222,7 +17891,7 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.23.6 dev: false /regexp.prototype.flags@1.5.0: @@ -17295,7 +17964,7 @@ packages: '@types/mdast': 4.0.3 emoticon: 4.0.1 mdast-util-find-and-replace: 3.0.1 - node-emoji: 2.1.1 + node-emoji: 2.1.3 unified: 11.0.4 dev: false @@ -17582,7 +18251,7 @@ packages: dependencies: escalade: 3.1.1 picocolors: 1.0.0 - postcss: 8.4.31 + postcss: 8.4.32 strip-json-comments: 3.1.1 dev: false @@ -17607,6 +18276,7 @@ packages: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: tslib: 2.5.2 + dev: true /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -17673,8 +18343,8 @@ packages: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} dev: false - /search-insights@2.11.0: - resolution: {integrity: sha512-Uin2J8Bpm3xaZi9Y8QibSys6uJOFZ+REMrf42v20AA3FUDUrshKkMEP6liJbMAHCm71wO6ls4mwAf7a3gFVxLw==} + /search-insights@2.13.0: + resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} dev: false /secp256k1@4.0.3: @@ -17706,10 +18376,11 @@ packages: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} dev: false - /selfsigned@2.1.1: - resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==} + /selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} engines: {node: '>=10'} dependencies: + '@types/node-forge': 1.3.10 node-forge: 1.3.1 dev: false @@ -17870,6 +18541,21 @@ packages: /shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + /sharp@0.32.6: + resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} + engines: {node: '>=14.15.0'} + requiresBuild: true + dependencies: + color: 4.2.3 + detect-libc: 2.0.2 + node-addon-api: 6.1.0 + prebuild-install: 7.1.1 + semver: 7.5.4 + simple-get: 4.0.1 + tar-fs: 3.0.4 + tunnel-agent: 0.6.0 + dev: false + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -17930,11 +18616,29 @@ packages: engines: {node: '>=14'} dev: false + /simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + dev: false + + /simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + dev: false + + /simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + dependencies: + is-arrayish: 0.3.2 + dev: false + /sirv@2.0.3: resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} engines: {node: '>= 10'} dependencies: - '@polka/url': 1.0.0-next.23 + '@polka/url': 1.0.0-next.24 mrmime: 1.0.1 totalist: 3.0.1 dev: false @@ -18192,6 +18896,10 @@ packages: resolution: {integrity: sha512-JGUEaALvL0Mf6JCfYnJOTcobY+Nc7sG/TemDRBqCA0wEr4DER7zDchaaixTlmOxAjG1uRJmX82EQcxwTQTkqVA==} dev: false + /std-env@3.6.0: + resolution: {integrity: sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==} + dev: false + /stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} @@ -18220,6 +18928,13 @@ packages: engines: {node: '>=10.0.0'} dev: false + /streamx@2.15.6: + resolution: {integrity: sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==} + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + dev: false + /strict-uri-encode@1.1.0: resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} engines: {node: '>=0.10.0'} @@ -18405,6 +19120,12 @@ packages: inline-style-parser: 0.1.1 dev: false + /style-to-object@1.0.5: + resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} + dependencies: + inline-style-parser: 0.2.2 + dev: false + /styled-jsx@5.1.1(@babel/core@7.23.3)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} @@ -18423,14 +19144,14 @@ packages: react: 18.2.0 dev: false - /stylehacks@5.1.1(postcss@8.4.31): + /stylehacks@5.1.1(postcss@8.4.32): resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 - postcss: 8.4.31 + browserslist: 4.22.2 + postcss: 8.4.32 postcss-selector-parser: 6.0.13 dev: false @@ -18494,6 +19215,7 @@ packages: dependencies: '@pkgr/utils': 2.3.1 tslib: 2.5.2 + dev: false /tapable@1.1.3: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} @@ -18504,6 +19226,23 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + /tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: false + + /tar-fs@3.0.4: + resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} + dependencies: + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 3.1.6 + dev: false + /tar-stream@1.6.2: resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} engines: {node: '>= 0.8.0'} @@ -18517,6 +19256,25 @@ packages: xtend: 4.0.2 dev: false + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + + /tar-stream@3.1.6: + resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} + dependencies: + b4a: 1.6.4 + fast-fifo: 1.3.2 + streamx: 2.15.6 + dev: false + /term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -18579,8 +19337,8 @@ packages: commander: 2.20.3 source-map-support: 0.5.21 - /terser@5.24.0: - resolution: {integrity: sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==} + /terser@5.26.0: + resolution: {integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==} engines: {node: '>=10'} hasBin: true dependencies: @@ -18640,6 +19398,7 @@ packages: dependencies: globalyzer: 0.1.0 globrex: 0.1.2 + dev: false /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} @@ -18710,7 +19469,7 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false - /ts-jest@29.1.0(@babel/core@7.23.3)(jest@29.5.0)(typescript@4.9.5): + /ts-jest@29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -18731,10 +19490,10 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.6 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest: 29.5.0(@types/node@20.10.4)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -18744,7 +19503,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.16.18)(typescript@4.9.5): + /ts-node@10.9.1(@types/node@18.16.18)(typescript@5.3.3): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -18770,6 +19529,37 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 + typescript: 5.3.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /ts-node@10.9.1(@types/node@20.10.4)(typescript@4.9.5): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 20.10.4 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -18801,6 +19591,16 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 + dev: false + + /tsutils@3.21.0(typescript@5.3.3): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.3.3 /tsyringe@4.8.0: resolution: {integrity: sha512-YB1FG+axdxADa3ncEtRnQCFq/M0lALGLxSZeVNbTU8NqhOVc51nnv2CISTcvc1kyv6EGPtXVr0v6lWeDxiijOA==} @@ -18918,6 +19718,11 @@ packages: hasBin: true dev: true + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + /ua-parser-js@1.0.37: resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} dev: false @@ -18961,7 +19766,6 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - dev: false /unenv@1.8.0: resolution: {integrity: sha512-uIGbdCWZfhRRmyKj1UioCepQ0jpq638j/Cf0xFTn4zD1nGJ2lSdzYHLzfdXN791oo/0juUiSWW1fBklXMTsuqg==} @@ -19167,6 +19971,16 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 + /update-browserslist-db@1.0.13(browserslist@4.22.2): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 + /update-notifier@6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} engines: {node: '>=14.16'} @@ -19240,41 +20054,6 @@ packages: tslib: 2.6.2 dev: false - /use-composed-ref@1.3.0(react@18.2.0): - resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.2.0 - dev: false - - /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.38)(react@18.2.0): - resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.2.38 - react: 18.2.0 - dev: false - - /use-latest@1.2.1(@types/react@18.2.38)(react@18.2.0): - resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.2.38 - react: 18.2.0 - use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.38)(react@18.2.0) - dev: false - /use-sidecar@1.1.2(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} @@ -19476,20 +20255,6 @@ packages: - zod dev: false - /wait-on@7.2.0: - resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==} - engines: {node: '>=12.0.0'} - hasBin: true - dependencies: - axios: 1.6.2 - joi: 17.11.0 - lodash: 4.17.21 - minimist: 1.2.8 - rxjs: 7.8.1 - transitivePeerDependencies: - - debug - dev: false - /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: @@ -19528,7 +20293,7 @@ packages: dependencies: '@discoveryjs/json-ext': 0.5.7 acorn: 8.11.2 - acorn-walk: 8.3.0 + acorn-walk: 8.3.1 commander: 7.2.0 debounce: 1.2.1 escape-string-regexp: 4.0.0 @@ -19604,13 +20369,13 @@ packages: webpack-cli: optional: true dependencies: - '@types/bonjour': 3.5.11 - '@types/connect-history-api-fallback': 1.5.1 - '@types/express': 4.17.17 - '@types/serve-index': 1.9.1 - '@types/serve-static': 1.15.2 - '@types/sockjs': 0.3.33 - '@types/ws': 8.5.5 + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.5 + '@types/sockjs': 0.3.36 + '@types/ws': 8.5.10 ansi-html-community: 0.0.8 bonjour-service: 1.1.1 chokidar: 3.5.3 @@ -19621,20 +20386,20 @@ packages: express: 4.18.2 graceful-fs: 4.2.11 html-entities: 2.4.0 - http-proxy-middleware: 2.0.6(@types/express@4.17.17) + http-proxy-middleware: 2.0.6(@types/express@4.17.21) ipaddr.js: 2.1.0 - launch-editor: 2.6.0 + launch-editor: 2.6.1 open: 8.4.2 p-retry: 4.6.2 rimraf: 3.0.2 schema-utils: 4.2.0 - selfsigned: 2.1.1 + selfsigned: 2.4.1 serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 webpack: 5.89.0 webpack-dev-middleware: 5.3.3(webpack@5.89.0) - ws: 8.13.0 + ws: 8.15.1 transitivePeerDependencies: - bufferutil - debug @@ -19751,7 +20516,7 @@ packages: chalk: 4.1.2 consola: 2.15.3 pretty-time: 1.1.0 - std-env: 3.5.0 + std-env: 3.6.0 webpack: 5.89.0 dev: false @@ -19928,8 +20693,8 @@ packages: optional: true dev: false - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + /ws@8.14.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): + resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -19939,10 +20704,13 @@ packages: optional: true utf-8-validate: optional: true + dependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 dev: false - /ws@8.14.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): - resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} + /ws@8.15.1: + resolution: {integrity: sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -19952,9 +20720,6 @@ packages: optional: true utf-8-validate: optional: true - dependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 dev: false /xdg-basedir@5.1.0: From d20681def866992bafd30e008c8c036ad3e4696e Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Fri, 15 Dec 2023 22:00:01 +0800 Subject: [PATCH 333/433] docs: Bucket Api (#421) --- doc-site/docs/api/bucket.mdx | 122 +++++++++++++++++++++++++---- doc-site/docs/api/object.mdx | 8 +- doc-site/docs/client/tx-client.mdx | 16 +--- 3 files changed, 113 insertions(+), 33 deletions(-) diff --git a/doc-site/docs/api/bucket.mdx b/doc-site/docs/api/bucket.mdx index b3e7a457..436a36bc 100644 --- a/doc-site/docs/api/bucket.mdx +++ b/doc-site/docs/api/bucket.mdx @@ -3,6 +3,8 @@ id: bucket title: 'Bucket' --- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; import ApiTypes from '../../src/components/snippers/api-types.tsx'; import Tx from '../../src/components/snippers/tx.mdx'; @@ -21,7 +23,11 @@ for creating bucket and sends the createBucket transaction to the Greenfield. | paymentAddress | payment address | | authType | [AuthType](/client/sp-client#authtype) | -```jsx title="example" + + + + +```jsx const tx = await client.bucket.createBucket( { bucketName: 'bucket_name', @@ -33,15 +39,44 @@ const tx = await client.bucket.createBucket( }, paymentAddress: address, }, + // highlight-start { type: 'EDDSA', domain: window.location.origin, seed: offChainData.seedString, address, }, + // highlight-end +); +``` + + + + +```js +const createBucketTx = await client.bucket.createBucket( + { + bucketName: bucketName, + creator: ACCOUNT_ADDRESS, + visibility: 'VISIBILITY_TYPE_PUBLIC_READ', + chargedReadQuota: '0', + spInfo: { + primarySpAddress: spInfo.primarySpAddress, + }, + paymentAddress: ACCOUNT_ADDRESS, + }, + // highlight-start + { + type: 'ECDSA', + privateKey: ACCOUNT_PRIVATEKEY, + }, + // highlight-end ); ``` + + + ## deleteBucket Send DeleteBucket msg to greenfield chain and return txn hash. @@ -51,7 +86,7 @@ Send DeleteBucket msg to greenfield chain and return txn hash. | bucketName | The name of the bucket to be deleted | | operator | operator account address | -```jsx title="example" +```jsx title="Browser | Nodejs" const tx = await client.bucket.deleteBucket({ bucketName: bucketName, operator: address, @@ -71,7 +106,7 @@ Delete the bucket policy of the principal. | principalAddr | Principal define the roles that can grant permissions | | principalType | PrincipalType refers to the identity type of system users or entities. | -```jsx title="example" +```jsx title="Browser | Nodejs" const tx = await client.bucket.deleteBucketPolicy( address, bucketName, @@ -90,7 +125,7 @@ This API is used to get bucket meta by bucket name. | ---------- | ----------- | | bucketName | bucket name | -```jsx title="example" +```jsx title="Browser | Nodejs" const bucketInfo = await client.bucket.getBucketMeta({ bucketName, }); @@ -100,7 +135,7 @@ const bucketInfo = await client.bucket.getBucketMeta({ Get the bucket policy info of the user specified by principalAddr. -```jsx title="example" +```jsx title="Browser | Nodejs" import { GRNToString, newBucketGRN } from '@bnb-chain/greenfield-js-sdk'; await client.bucket.getBucketPolicy({ resource: GRNToString(newBucketGRN(bucketName)), @@ -117,20 +152,45 @@ Query the quota info of the specific bucket of current month. | bucketName | bucket name | | authType | [AuthType](/client/sp-client#authtype) | -```jsx title="example" -await client.bucket.getBucketReadQuota( + + + +```jsx +const tx = await client.bucket.getBucketReadQuota( { bucketName, }, + // highlight-start { type: 'EDDSA', seed: offChainData.seedString, domain: window.location.origin, address, }, + // highlight-end +); +``` + + + + +```js +const tx = await client.bucket.getBucketReadQuota( + { + bucketName, + }, + // highlight-start + { + type: 'ECDSA', + privateKey: ACCOUNT_PRIVATEKEY, + }, + // highlight-end ); ``` + + + ## headBucket query the bucketInfo on chain, return the bucket info if exists. @@ -139,7 +199,7 @@ query the bucketInfo on chain, return the bucket info if exists. | ---------- | ----------- | | bucketName | bucket name | -```jsx title="example" +```jsx title="Browser | Nodejs" const bucketInfo = await client.bucket.headBucket(bucketName); ``` @@ -149,7 +209,7 @@ const bucketInfo = await client.bucket.headBucket(bucketName); | -------- | ----------- | | bucketId | bucket id | -```jsx title="example" +```jsx title="Browser | Nodejs" const bucketInfo = await client.bucket.headBucketById(bucketId); ``` @@ -161,7 +221,7 @@ Queries a bucket extra info (with gvg bindings and price time) with specify name | ---------- | ----------- | | bucketName | bucket name | -```jsx title="example" +```jsx title="Browser | Nodejs" const bucketInfo = await client.bucket.headBucketExtra(bucketName); ``` @@ -176,23 +236,51 @@ List the download record info of the specific bucket of the current month. | bucketName | bucket name | | authType | [AuthType](/client/sp-client#authtype) | -```jsx title="example" -await client.bucket.listBucketReadRecords( + + + +```jsx +const tx = await client.bucket.listBucketReadRecords( { bucketName, startTimeStamp, endTimeStamp, maxRecords: 1000, }, + // highlight-start { type: 'EDDSA', domain: window.location.origin, seed: offChainData.seedString, address, }, + // highlight-end +); +``` + + + + +```js +const tx = await client.bucket.listBucketReadRecords( + { + bucketName, + startTimeStamp, + endTimeStamp, + maxRecords: 1000, + }, + // highlight-start + { + type: 'ECDSA', + privateKey: ACCOUNT_PRIVATEKEY, + }, + // highlight-end ); ``` + + + ## listBuckets Lists the bucket info of the user. @@ -201,7 +289,7 @@ Lists the bucket info of the user. | ------- | ------------ | | address | user account | -```jsx title="example" +```jsx title="Browser | Nodejs" const res = await client.bucket.listBuckets({ address, }); @@ -215,7 +303,7 @@ Lists the bucket info of the user. | ------ | ---------------- | | ids | bucket ids array | -```jsx title="example" +```jsx title="Browser | Nodejs" await client.bucket.listBucketsByIds({ ids: ['1', '2'], }); @@ -229,7 +317,7 @@ List bucket info by payment account. | -------------- | ----------------------- | | paymentAccount | payment account address | -```jsx title="example" +```jsx title="Browser | Nodejs" const res = await client.bucket.listBucketsByPaymentAccount({ paymentAccount: '0x00...', }); @@ -245,7 +333,7 @@ Apply bucket policy to the principal, return the txn hash. | statements | Policies outline the specific details of permissions, including the Effect, ActionList, and Resources. | | principal | Indicates the marshaled principal content of greenfield permission types, users can generate it by NewPrincipalWithAccount or NewPrincipalWithGroupId method. | -```jsx title="example" +```jsx title="Browser | Nodejs" import { GRNToString, newBucketGRN, PermissionTypes } from '@bnb-chain/greenfield-js-sdk'; const statement: PermissionTypes.Statement = { effect: PermissionTypes.Effect.EFFECT_ALLOW, @@ -277,7 +365,7 @@ the MsgUpdateBucketInfo msg to greenfield to update the meta. | paymentAddress | payment address | | chargedReadQuota | defines the traffic quota that you read from primary sp | -```jsx title="example" +```jsx title="Browser | Nodejs" await client.bucket.updateBucketInfo({ bucketName: bucketName, operator: address, diff --git a/doc-site/docs/api/object.mdx b/doc-site/docs/api/object.mdx index 79947cca..a6ef0e40 100644 --- a/doc-site/docs/api/object.mdx +++ b/doc-site/docs/api/object.mdx @@ -31,7 +31,7 @@ Send create empty object txn to greenfield chain. | creator | the creator of object | | authType | [AuthType](/client/sp-client#authtype) | - + ```jsx @@ -92,7 +92,7 @@ Get approval of creating object and send createObject txn to greenfield chain. | contentLength | file content length | | expectCheckSums | file's expectCheckSums | - + ```jsx @@ -201,7 +201,7 @@ Download s3 object payload and return the related object info. | bucketName | bucket name | | objectName | object name | - + ```jsx @@ -411,7 +411,7 @@ Uploading the object to bucket. | txnHash | [createObject](#createobject) 's hash | | authType | [AuthType](/client/sp-client#authtype) | - + ```jsx diff --git a/doc-site/docs/client/tx-client.mdx b/doc-site/docs/client/tx-client.mdx index bb55f0b7..7bd9e843 100644 --- a/doc-site/docs/client/tx-client.mdx +++ b/doc-site/docs/client/tx-client.mdx @@ -54,26 +54,17 @@ const broadcastRes = await transferTx.broadcast({ gasPrice: simulateInfo.gasPrice, payer: '0x0000000000000000000000000000000000000001', granter: '', -}); -``` - -:::tip - -If you want to use others wallet, you can set `signTypedDataCallback`: - -```js -// trustwallet: -const broadcastRes = await transferTx.broadcast({ - // ... + // highlight-start + // If you want to use others wallet(such as trustwallet), you can set `signTypedDataCallback`: signTypedDataCallback: async (addr: string, message: string) => { return await window.trustwallet.request({ method: 'eth_signTypedData_v4', params: [addr, message], }); }, + // highlight-end }); ``` -::: @@ -92,6 +83,7 @@ const broadcastRes = await transferTx.broadcast({ // highlight-end }); ``` + From 18891a45cf06120b042427493422fd469a5c393f Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Tue, 19 Dec 2023 00:12:34 +0800 Subject: [PATCH 334/433] Feat/js reed solomon (#422) * feat: Js implement reed solomon * docs: Update README * docs: Update README * Create beige-beds-lay.md * feat: Empty buffer * chore: Update params * feat: Nodejs support worker * feat: Nodejs support worker * feat: Add types * chore: Update Nodejs example * chore: Update docs and example --- .changeset/beige-beds-lay.md | 5 + .changeset/gold-tigers-taste.md | 5 + .changeset/happy-ears-tap.md | 5 + examples/nodejs/cases/storage.js | 9 +- examples/nodejs/package.json | 1 + packages/reed-solomon/README.md | 66 + packages/reed-solomon/examples/folder.js | 30 + packages/reed-solomon/examples/singlefile.js | 16 + packages/reed-solomon/package.json | 57 + packages/reed-solomon/rollup.config.js | 63 + packages/reed-solomon/src/galois.js | 4778 +++++++++++++++++ packages/reed-solomon/src/index.js | 188 + packages/reed-solomon/src/matrix.js | 182 + packages/reed-solomon/src/node.adapter.js | 88 + packages/reed-solomon/src/utils.js | 43 + packages/reed-solomon/types/index.d.ts | 13 + packages/reed-solomon/types/node.adapter.d.ts | 5 + packages/reed-solomon/types/utils.d.ts | 9 + pnpm-lock.yaml | 405 +- 19 files changed, 5689 insertions(+), 279 deletions(-) create mode 100644 .changeset/beige-beds-lay.md create mode 100644 .changeset/gold-tigers-taste.md create mode 100644 .changeset/happy-ears-tap.md create mode 100644 packages/reed-solomon/README.md create mode 100644 packages/reed-solomon/examples/folder.js create mode 100644 packages/reed-solomon/examples/singlefile.js create mode 100644 packages/reed-solomon/package.json create mode 100644 packages/reed-solomon/rollup.config.js create mode 100644 packages/reed-solomon/src/galois.js create mode 100644 packages/reed-solomon/src/index.js create mode 100644 packages/reed-solomon/src/matrix.js create mode 100644 packages/reed-solomon/src/node.adapter.js create mode 100644 packages/reed-solomon/src/utils.js create mode 100644 packages/reed-solomon/types/index.d.ts create mode 100644 packages/reed-solomon/types/node.adapter.d.ts create mode 100644 packages/reed-solomon/types/utils.d.ts diff --git a/.changeset/beige-beds-lay.md b/.changeset/beige-beds-lay.md new file mode 100644 index 00000000..8038afa6 --- /dev/null +++ b/.changeset/beige-beds-lay.md @@ -0,0 +1,5 @@ +--- +"@bnb-chain/reed-solomon": patch +--- + +js reed solomon diff --git a/.changeset/gold-tigers-taste.md b/.changeset/gold-tigers-taste.md new file mode 100644 index 00000000..ca43894c --- /dev/null +++ b/.changeset/gold-tigers-taste.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/reed-solomon': patch +--- + +feat: Add types diff --git a/.changeset/happy-ears-tap.md b/.changeset/happy-ears-tap.md new file mode 100644 index 00000000..a9fd7ec6 --- /dev/null +++ b/.changeset/happy-ears-tap.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/reed-solomon': patch +--- + +feat: Nodejs Support Worker diff --git a/examples/nodejs/cases/storage.js b/examples/nodejs/cases/storage.js index 5503c2b4..c79b114b 100644 --- a/examples/nodejs/cases/storage.js +++ b/examples/nodejs/cases/storage.js @@ -3,6 +3,7 @@ const fs = require('fs'); const path = require('path'); const mimeTypes = require('mime-types'); const { getCheckSums } = require('@bnb-chain/greenfiled-file-handle'); +const { NodeAdapterReedSolomon } = require('@bnb-chain/reed-solomon/node.adapter'); const { client, selectSp, generateString } = require('../client'); const { ACCOUNT_ADDRESS, ACCOUNT_PRIVATEKEY } = require('../env'); @@ -12,6 +13,7 @@ const objectName = generateString(10); const fileBuffer = fs.readFileSync(filePath); const extname = path.extname(filePath); const fileType = mimeTypes.lookup(extname); +const rs = new NodeAdapterReedSolomon(); console.log('bucketName', bucketName); console.log('objectName', objectName); @@ -58,8 +60,7 @@ console.log('objectName', objectName); console.log('create bucket success', createBucketTxRes); // create object example: - const hashResult = await getCheckSums(fileBuffer); - const { contentLength, expectCheckSums } = hashResult; + const expectCheckSums = await rs.encodeInWorker(__filename, Uint8Array.from(fileBuffer)); const createObjectTx = await client.object.createObject( { @@ -69,8 +70,8 @@ console.log('objectName', objectName); visibility: 'VISIBILITY_TYPE_PRIVATE', fileType: fileType, redundancyType: 'REDUNDANCY_EC_TYPE', - contentLength, - expectCheckSums: JSON.parse(expectCheckSums), + contentLength: fileBuffer.length, + expectCheckSums, tags: { tags: [], }, diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 71e2a190..47630051 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -7,6 +7,7 @@ "dependencies": { "@bnb-chain/greenfield-js-sdk": "workspace:*", "@bnb-chain/greenfiled-file-handle": "workspace:*", + "@bnb-chain/reed-solomon": "workspace:*", "dotenv": "^16.0.3", "mime-types": "^2.1.35" } diff --git a/packages/reed-solomon/README.md b/packages/reed-solomon/README.md new file mode 100644 index 00000000..43c03890 --- /dev/null +++ b/packages/reed-solomon/README.md @@ -0,0 +1,66 @@ +# Reed Solomon + +Lighting implementation for [klauspost/reedsolomon](https://github.com/klauspost/reedsolomon). + +Compatible with [greenfield-common](https://github.com/bnb-chain/greenfield-common/blob/master/go/hash/hash.go). + +## Install + +```bash +> npm install @bnb-chain/reed-solomon +``` + +## Usage Examples + +### Browser + +Use directly in the browser via script tag: + +```html + + + + + +``` + +### ESM + +If you use module bundler such as [Webpack](https://webpack.js.org/), [Rollup](https://rollupjs.org/guide/en/), etc: + +```js +import {ReedSolomon} from '@bnb-chain/reed-solomon' + +const rs = new RS.ReedSolomon(); +const res = rs.encode(new Uint8Array(fileBuffer)) +``` + +### Nodejs + +Using in Nodejs: + +```js +const { NodeAdapterReedSolomon } = require('@bnb-chain/reed-solomon/node.adapter'); + +const fileBuffer = fs.readFileSync('./output_file'); + +const rs = new NodeAdapterReedSolomon(); +const res = await rs.encodeInWorker(__filename, Uint8Array.from(fileBuffer)) +``` + +* [calcute single file](./examples/singlefile.js) +* [calcute several file in a folder](./examples/folder.js) diff --git a/packages/reed-solomon/examples/folder.js b/packages/reed-solomon/examples/folder.js new file mode 100644 index 00000000..eaa68e15 --- /dev/null +++ b/packages/reed-solomon/examples/folder.js @@ -0,0 +1,30 @@ +/* eslint-disable */ +const fs = require('node:fs/promises'); +const path = require('node:path'); +const { NodeAdapterReedSolomon } = require('../dist/node.adapter'); + +const rs = new NodeAdapterReedSolomon(); +const folderPath = './dist'; + +(async () => { + async function traverse(currentPath) { + const start = Date.now(); + const files = await fs.readdir(currentPath); + + for (let i = 0; i < files.length; i++) { + const file = files[i]; + const filePath = path.join(currentPath, file); + const stat = await fs.stat(filePath); + + const start = Date.now(); + const fileBuffer = await fs.readFile(filePath); + const res = await rs.encodeInWorker(__filename, Uint8Array.from(fileBuffer)); + console.log('res', file, Date.now() - start, res); + } + + console.log('files count: ', files.length); + console.log('total cost time: ', Date.now() - start); + } + + await traverse(folderPath); +})(); diff --git a/packages/reed-solomon/examples/singlefile.js b/packages/reed-solomon/examples/singlefile.js new file mode 100644 index 00000000..cf1bc321 --- /dev/null +++ b/packages/reed-solomon/examples/singlefile.js @@ -0,0 +1,16 @@ +/* eslint-disable */ +const fs = require('node:fs'); +const path = require('node:path'); +const { NodeAdapterReedSolomon } = require('../dist/node.adapter'); + +const fileBuffer = fs.readFileSync('./README.md'); + +const rs = new NodeAdapterReedSolomon(); + +// single file +(async () => { + const start = Date.now(); + const res = await rs.encodeInWorker(__filename, Uint8Array.from(fileBuffer)); + console.log('res', res); + console.log('cost time', Date.now() - start); +})(); diff --git a/packages/reed-solomon/package.json b/packages/reed-solomon/package.json new file mode 100644 index 00000000..5c856710 --- /dev/null +++ b/packages/reed-solomon/package.json @@ -0,0 +1,57 @@ +{ + "name": "@bnb-chain/reed-solomon", + "version": "1.0.0", + "description": "lighting implement for reed solomon", + "module": "./dist/index.esm.js", + "main": "./dist/index.js", + "types": "./types/index.d.ts", + "exports": { + ".": { + "import": "./dist/index.aio.js", + "require": "./dist/index.js", + "main": "./dist/index.js", + "default": "./dist/index.js", + "types": "./types/index.d.ts" + }, + "./node.adapter": { + "default": "./dist/node.adapter.js", + "types": "./types/node.adapter.d.ts", + "node": "./dist/node.adapter.js", + "require": "./dist/node.adapter.js" + }, + "./utils": { + "default": "./dist/utils.js", + "types": "./types/utils.d.ts" + } + }, + "scripts": { + "prebuild": "rimraf ./dist", + "build": "rollup -c" + }, + "repository": { + "type": "git", + "url": "https://github.com/bnb-chain/greenfield-js-sdk", + "directory": "packages/reed-solomon" + }, + "homepage": "https://github.com/bnb-chain/greenfield-js-sdk/tree/alpha/packages/reed-solomon#readme", + "bugs": "https://github.com/bnb-chain/greenfield-js-sdk/issues", + "keywords": [ + "greenfiled", + "checksums", + "reed-solomon" + ], + "author": "", + "license": "GPLv3", + "files": [ + "dist", + "types" + ], + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "ethereum-cryptography": "^2.0.0" + } +} diff --git a/packages/reed-solomon/rollup.config.js b/packages/reed-solomon/rollup.config.js new file mode 100644 index 00000000..cc58f722 --- /dev/null +++ b/packages/reed-solomon/rollup.config.js @@ -0,0 +1,63 @@ +import commonjs from '@rollup/plugin-commonjs'; +import resolve from '@rollup/plugin-node-resolve'; +import pkg from './package.json'; +// const pathResolve = (p) => path.resolve(__dirname, p); + +function resolveExternal() { + return [...Object.keys(pkg.dependencies || {}), ...Object.keys(pkg.peerDependencies || {})]; +} + +export default async () => { + return [ + { + input: './src/index.js', + output: { + file: 'dist/index.esm.js', + sourcemap: true, + }, + external: resolveExternal(), + context: 'window', + treeshake: true, + plugins: [ + commonjs(), + resolve({ + browser: true, + preferBuiltins: false, + }), + ], + }, + { + input: ['./src/index.js', './src/node.adapter.js', './src/utils.js'], + output: { + format: 'cjs', + // file: 'dist/index.js', + dir: 'dist', + sourcemap: true, + }, + external: resolveExternal(), + plugins: [ + // commonjs(), + // resolve({ + // browser: true, + // preferBuiltins: false, + // }), + ], + }, + { + input: './src/index.js', + output: { + format: 'umd', + file: 'dist/index.aio.js', + name: 'RS', + sourcemap: true, + }, + plugins: [ + commonjs(), + resolve({ + browser: true, + preferBuiltins: false, + }), + ], + }, + ]; +}; diff --git a/packages/reed-solomon/src/galois.js b/packages/reed-solomon/src/galois.js new file mode 100644 index 00000000..bb53e394 --- /dev/null +++ b/packages/reed-solomon/src/galois.js @@ -0,0 +1,4778 @@ +const galExp = function (a, n) { + if (n === 0) { + return 1; + } + if (a === 0) { + return 0; + } + + const logA = logTable[a]; + const logResult = Math.floor(logA * n); + while (logResult >= 255) { + logResult -= 255; + } + return expTable[logResult]; +}; + +function galDivide(a, b) { + if (a == 0) { + return 0; + } + if (b == 0) { + throw new Error("Argument 'divisor' is 0"); + } + + const logA = Number(logTable[a]); + const logB = Number(logTable[b]); + let logResult = logA - logB; + if (logResult < 0) { + logResult += 255; + } + return expTable[logResult]; +} + +function galMultiply(a, b) { + return mulTable[a][b]; +} + +function galMulSlice(c, ins, out) { + out = out.slice(0, ins.length); + if (c === 1) { + return ins; + } + const mt = mulTable[c].slice(0, 256); + for (let n = 0; n < ins.length; n++) { + out[n] = mt[ins[n]]; + } + + return out; +} + +const galMulSliceXor = (c, inArray, outArray, o) => { + let out = outArray.slice(0, inArray.length); + + if (c === 1) { + sliceXor(inArray, out, o); + return out; + } + + const mt = mulTable[c].slice(0, 256); + + for (let n = 0; n < inArray.length; n++) { + out[n] ^= mt[inArray[n]]; + } + + return out; +}; + +const sliceXor = (inArray, outArray, o) => { + return sliceXorGo(inArray, outArray, o); +}; + +const sliceXorGo = (inArray, outArray) => { + while (outArray.length >= 32) { + const inS = inArray.slice(0, 32); + const v0 = uint8ArrayToUint64(outArray.slice(0, 8)) ^ uint8ArrayToUint64(inS.slice(0, 8)); + const v1 = uint8ArrayToUint64(outArray.slice(8, 16)) ^ uint8ArrayToUint64(inS.slice(8, 16)); + const v2 = uint8ArrayToUint64(outArray.slice(16, 24)) ^ uint8ArrayToUint64(inS.slice(16, 24)); + const v3 = uint8ArrayToUint64(outArray.slice(24, 32)) ^ uint8ArrayToUint64(inS.slice(24, 32)); + + uint64ToUint8Array(outArray, 0, v0); + uint64ToUint8Array(outArray, 8, v1); + uint64ToUint8Array(outArray, 16, v2); + uint64ToUint8Array(outArray, 24, v3); + + outArray = outArray.slice(32); + inArray = inArray.slice(32); + } + + outArray = outArray.slice(0, inArray.length); + + for (let n = 0; n < inArray.length; n++) { + outArray[n] ^= inArray[n]; + } + + return outArray; +}; + +// 辅助函数:将 Uint8Array 转换为 Uint64 +const uint8ArrayToUint64 = (array) => { + return ( + (array[0] << 0) | + (array[1] << 8) | + (array[2] << 16) | + (array[3] << 24) | + (array[4] << 32) | + (array[5] << 40) | + (array[6] << 48) | + (array[7] << 56) + ); +}; + +// 辅助函数:将 Uint64 转换为 Uint8Array +const uint64ToUint8Array = (array, offset, value) => { + for (let i = 0; i < 8; i++) { + array[offset + i] = (value >> (i * 8)) & 0xff; + } +}; + +export { galExp, galDivide, galMultiply, galMulSlice, galMulSliceXor }; + +const expTable = [ + 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, 0x4c, + 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x3, 0x6, 0xc, 0x18, 0x30, 0x60, 0xc0, 0x9d, 0x27, + 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23, 0x46, 0x8c, + 0x5, 0xa, 0x14, 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1, 0x5f, 0xbe, + 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0xf, 0x1e, 0x3c, 0x78, 0xf0, 0xfd, 0xe7, + 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2, 0xd9, 0xaf, + 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, 0xd, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce, 0x81, 0x1f, + 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc, 0x85, 0x17, + 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54, 0xa8, 0x4d, + 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73, 0xe6, 0xd1, + 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff, 0xe3, 0xdb, + 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41, 0x82, 0x19, + 0x32, 0x64, 0xc8, 0x8d, 0x7, 0xe, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6, 0x51, 0xa2, + 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x9, 0x12, 0x24, + 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0xb, 0x16, 0x2c, 0x58, + 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, 0x1, 0x2, 0x4, 0x8, + 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, 0x4c, 0x98, 0x2d, 0x5a, + 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x3, 0x6, 0xc, 0x18, 0x30, 0x60, 0xc0, 0x9d, 0x27, 0x4e, 0x9c, 0x25, + 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23, 0x46, 0x8c, 0x5, 0xa, 0x14, + 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1, 0x5f, 0xbe, 0x61, 0xc2, 0x99, + 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0xf, 0x1e, 0x3c, 0x78, 0xf0, 0xfd, 0xe7, 0xd3, 0xbb, 0x6b, + 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2, 0xd9, 0xaf, 0x43, 0x86, 0x11, + 0x22, 0x44, 0x88, 0xd, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce, 0x81, 0x1f, 0x3e, 0x7c, 0xf8, + 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc, 0x85, 0x17, 0x2e, 0x5c, 0xb8, + 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54, 0xa8, 0x4d, 0x9a, 0x29, 0x52, + 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73, 0xe6, 0xd1, 0xbf, 0x63, 0xc6, + 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff, 0xe3, 0xdb, 0xab, 0x4b, 0x96, + 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41, 0x82, 0x19, 0x32, 0x64, 0xc8, + 0x8d, 0x7, 0xe, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6, 0x51, 0xa2, 0x59, 0xb2, 0x79, + 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x9, 0x12, 0x24, 0x48, 0x90, 0x3d, + 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0xb, 0x16, 0x2c, 0x58, 0xb0, 0x7d, 0xfa, + 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, +]; + +const mulTable = [ + [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + [ + 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, + 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, + 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, + 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, + 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, + 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, + 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, + 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, + 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, + 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, + 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, + 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, + 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, + ], + [ + 0x0, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, + 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, 0x40, + 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e, 0x50, 0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e, 0x60, + 0x62, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7c, 0x7e, 0x80, + 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, 0xa0, + 0xa2, 0xa4, 0xa6, 0xa8, 0xaa, 0xac, 0xae, 0xb0, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, 0xc0, + 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, 0xe0, + 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0xfe, 0x1d, + 0x1f, 0x19, 0x1b, 0x15, 0x17, 0x11, 0x13, 0xd, 0xf, 0x9, 0xb, 0x5, 0x7, 0x1, 0x3, 0x3d, 0x3f, + 0x39, 0x3b, 0x35, 0x37, 0x31, 0x33, 0x2d, 0x2f, 0x29, 0x2b, 0x25, 0x27, 0x21, 0x23, 0x5d, 0x5f, + 0x59, 0x5b, 0x55, 0x57, 0x51, 0x53, 0x4d, 0x4f, 0x49, 0x4b, 0x45, 0x47, 0x41, 0x43, 0x7d, 0x7f, + 0x79, 0x7b, 0x75, 0x77, 0x71, 0x73, 0x6d, 0x6f, 0x69, 0x6b, 0x65, 0x67, 0x61, 0x63, 0x9d, 0x9f, + 0x99, 0x9b, 0x95, 0x97, 0x91, 0x93, 0x8d, 0x8f, 0x89, 0x8b, 0x85, 0x87, 0x81, 0x83, 0xbd, 0xbf, + 0xb9, 0xbb, 0xb5, 0xb7, 0xb1, 0xb3, 0xad, 0xaf, 0xa9, 0xab, 0xa5, 0xa7, 0xa1, 0xa3, 0xdd, 0xdf, + 0xd9, 0xdb, 0xd5, 0xd7, 0xd1, 0xd3, 0xcd, 0xcf, 0xc9, 0xcb, 0xc5, 0xc7, 0xc1, 0xc3, 0xfd, 0xff, + 0xf9, 0xfb, 0xf5, 0xf7, 0xf1, 0xf3, 0xed, 0xef, 0xe9, 0xeb, 0xe5, 0xe7, 0xe1, 0xe3, + ], + [ + 0x0, 0x3, 0x6, 0x5, 0xc, 0xf, 0xa, 0x9, 0x18, 0x1b, 0x1e, 0x1d, 0x14, 0x17, 0x12, 0x11, 0x30, + 0x33, 0x36, 0x35, 0x3c, 0x3f, 0x3a, 0x39, 0x28, 0x2b, 0x2e, 0x2d, 0x24, 0x27, 0x22, 0x21, 0x60, + 0x63, 0x66, 0x65, 0x6c, 0x6f, 0x6a, 0x69, 0x78, 0x7b, 0x7e, 0x7d, 0x74, 0x77, 0x72, 0x71, 0x50, + 0x53, 0x56, 0x55, 0x5c, 0x5f, 0x5a, 0x59, 0x48, 0x4b, 0x4e, 0x4d, 0x44, 0x47, 0x42, 0x41, 0xc0, + 0xc3, 0xc6, 0xc5, 0xcc, 0xcf, 0xca, 0xc9, 0xd8, 0xdb, 0xde, 0xdd, 0xd4, 0xd7, 0xd2, 0xd1, 0xf0, + 0xf3, 0xf6, 0xf5, 0xfc, 0xff, 0xfa, 0xf9, 0xe8, 0xeb, 0xee, 0xed, 0xe4, 0xe7, 0xe2, 0xe1, 0xa0, + 0xa3, 0xa6, 0xa5, 0xac, 0xaf, 0xaa, 0xa9, 0xb8, 0xbb, 0xbe, 0xbd, 0xb4, 0xb7, 0xb2, 0xb1, 0x90, + 0x93, 0x96, 0x95, 0x9c, 0x9f, 0x9a, 0x99, 0x88, 0x8b, 0x8e, 0x8d, 0x84, 0x87, 0x82, 0x81, 0x9d, + 0x9e, 0x9b, 0x98, 0x91, 0x92, 0x97, 0x94, 0x85, 0x86, 0x83, 0x80, 0x89, 0x8a, 0x8f, 0x8c, 0xad, + 0xae, 0xab, 0xa8, 0xa1, 0xa2, 0xa7, 0xa4, 0xb5, 0xb6, 0xb3, 0xb0, 0xb9, 0xba, 0xbf, 0xbc, 0xfd, + 0xfe, 0xfb, 0xf8, 0xf1, 0xf2, 0xf7, 0xf4, 0xe5, 0xe6, 0xe3, 0xe0, 0xe9, 0xea, 0xef, 0xec, 0xcd, + 0xce, 0xcb, 0xc8, 0xc1, 0xc2, 0xc7, 0xc4, 0xd5, 0xd6, 0xd3, 0xd0, 0xd9, 0xda, 0xdf, 0xdc, 0x5d, + 0x5e, 0x5b, 0x58, 0x51, 0x52, 0x57, 0x54, 0x45, 0x46, 0x43, 0x40, 0x49, 0x4a, 0x4f, 0x4c, 0x6d, + 0x6e, 0x6b, 0x68, 0x61, 0x62, 0x67, 0x64, 0x75, 0x76, 0x73, 0x70, 0x79, 0x7a, 0x7f, 0x7c, 0x3d, + 0x3e, 0x3b, 0x38, 0x31, 0x32, 0x37, 0x34, 0x25, 0x26, 0x23, 0x20, 0x29, 0x2a, 0x2f, 0x2c, 0xd, + 0xe, 0xb, 0x8, 0x1, 0x2, 0x7, 0x4, 0x15, 0x16, 0x13, 0x10, 0x19, 0x1a, 0x1f, 0x1c, + ], + [ + 0x0, 0x4, 0x8, 0xc, 0x10, 0x14, 0x18, 0x1c, 0x20, 0x24, 0x28, 0x2c, 0x30, 0x34, 0x38, 0x3c, + 0x40, 0x44, 0x48, 0x4c, 0x50, 0x54, 0x58, 0x5c, 0x60, 0x64, 0x68, 0x6c, 0x70, 0x74, 0x78, 0x7c, + 0x80, 0x84, 0x88, 0x8c, 0x90, 0x94, 0x98, 0x9c, 0xa0, 0xa4, 0xa8, 0xac, 0xb0, 0xb4, 0xb8, 0xbc, + 0xc0, 0xc4, 0xc8, 0xcc, 0xd0, 0xd4, 0xd8, 0xdc, 0xe0, 0xe4, 0xe8, 0xec, 0xf0, 0xf4, 0xf8, 0xfc, + 0x1d, 0x19, 0x15, 0x11, 0xd, 0x9, 0x5, 0x1, 0x3d, 0x39, 0x35, 0x31, 0x2d, 0x29, 0x25, 0x21, + 0x5d, 0x59, 0x55, 0x51, 0x4d, 0x49, 0x45, 0x41, 0x7d, 0x79, 0x75, 0x71, 0x6d, 0x69, 0x65, 0x61, + 0x9d, 0x99, 0x95, 0x91, 0x8d, 0x89, 0x85, 0x81, 0xbd, 0xb9, 0xb5, 0xb1, 0xad, 0xa9, 0xa5, 0xa1, + 0xdd, 0xd9, 0xd5, 0xd1, 0xcd, 0xc9, 0xc5, 0xc1, 0xfd, 0xf9, 0xf5, 0xf1, 0xed, 0xe9, 0xe5, 0xe1, + 0x3a, 0x3e, 0x32, 0x36, 0x2a, 0x2e, 0x22, 0x26, 0x1a, 0x1e, 0x12, 0x16, 0xa, 0xe, 0x2, 0x6, + 0x7a, 0x7e, 0x72, 0x76, 0x6a, 0x6e, 0x62, 0x66, 0x5a, 0x5e, 0x52, 0x56, 0x4a, 0x4e, 0x42, 0x46, + 0xba, 0xbe, 0xb2, 0xb6, 0xaa, 0xae, 0xa2, 0xa6, 0x9a, 0x9e, 0x92, 0x96, 0x8a, 0x8e, 0x82, 0x86, + 0xfa, 0xfe, 0xf2, 0xf6, 0xea, 0xee, 0xe2, 0xe6, 0xda, 0xde, 0xd2, 0xd6, 0xca, 0xce, 0xc2, 0xc6, + 0x27, 0x23, 0x2f, 0x2b, 0x37, 0x33, 0x3f, 0x3b, 0x7, 0x3, 0xf, 0xb, 0x17, 0x13, 0x1f, 0x1b, + 0x67, 0x63, 0x6f, 0x6b, 0x77, 0x73, 0x7f, 0x7b, 0x47, 0x43, 0x4f, 0x4b, 0x57, 0x53, 0x5f, 0x5b, + 0xa7, 0xa3, 0xaf, 0xab, 0xb7, 0xb3, 0xbf, 0xbb, 0x87, 0x83, 0x8f, 0x8b, 0x97, 0x93, 0x9f, 0x9b, + 0xe7, 0xe3, 0xef, 0xeb, 0xf7, 0xf3, 0xff, 0xfb, 0xc7, 0xc3, 0xcf, 0xcb, 0xd7, 0xd3, 0xdf, 0xdb, + ], + [ + 0x0, 0x5, 0xa, 0xf, 0x14, 0x11, 0x1e, 0x1b, 0x28, 0x2d, 0x22, 0x27, 0x3c, 0x39, 0x36, 0x33, + 0x50, 0x55, 0x5a, 0x5f, 0x44, 0x41, 0x4e, 0x4b, 0x78, 0x7d, 0x72, 0x77, 0x6c, 0x69, 0x66, 0x63, + 0xa0, 0xa5, 0xaa, 0xaf, 0xb4, 0xb1, 0xbe, 0xbb, 0x88, 0x8d, 0x82, 0x87, 0x9c, 0x99, 0x96, 0x93, + 0xf0, 0xf5, 0xfa, 0xff, 0xe4, 0xe1, 0xee, 0xeb, 0xd8, 0xdd, 0xd2, 0xd7, 0xcc, 0xc9, 0xc6, 0xc3, + 0x5d, 0x58, 0x57, 0x52, 0x49, 0x4c, 0x43, 0x46, 0x75, 0x70, 0x7f, 0x7a, 0x61, 0x64, 0x6b, 0x6e, + 0xd, 0x8, 0x7, 0x2, 0x19, 0x1c, 0x13, 0x16, 0x25, 0x20, 0x2f, 0x2a, 0x31, 0x34, 0x3b, 0x3e, + 0xfd, 0xf8, 0xf7, 0xf2, 0xe9, 0xec, 0xe3, 0xe6, 0xd5, 0xd0, 0xdf, 0xda, 0xc1, 0xc4, 0xcb, 0xce, + 0xad, 0xa8, 0xa7, 0xa2, 0xb9, 0xbc, 0xb3, 0xb6, 0x85, 0x80, 0x8f, 0x8a, 0x91, 0x94, 0x9b, 0x9e, + 0xba, 0xbf, 0xb0, 0xb5, 0xae, 0xab, 0xa4, 0xa1, 0x92, 0x97, 0x98, 0x9d, 0x86, 0x83, 0x8c, 0x89, + 0xea, 0xef, 0xe0, 0xe5, 0xfe, 0xfb, 0xf4, 0xf1, 0xc2, 0xc7, 0xc8, 0xcd, 0xd6, 0xd3, 0xdc, 0xd9, + 0x1a, 0x1f, 0x10, 0x15, 0xe, 0xb, 0x4, 0x1, 0x32, 0x37, 0x38, 0x3d, 0x26, 0x23, 0x2c, 0x29, + 0x4a, 0x4f, 0x40, 0x45, 0x5e, 0x5b, 0x54, 0x51, 0x62, 0x67, 0x68, 0x6d, 0x76, 0x73, 0x7c, 0x79, + 0xe7, 0xe2, 0xed, 0xe8, 0xf3, 0xf6, 0xf9, 0xfc, 0xcf, 0xca, 0xc5, 0xc0, 0xdb, 0xde, 0xd1, 0xd4, + 0xb7, 0xb2, 0xbd, 0xb8, 0xa3, 0xa6, 0xa9, 0xac, 0x9f, 0x9a, 0x95, 0x90, 0x8b, 0x8e, 0x81, 0x84, + 0x47, 0x42, 0x4d, 0x48, 0x53, 0x56, 0x59, 0x5c, 0x6f, 0x6a, 0x65, 0x60, 0x7b, 0x7e, 0x71, 0x74, + 0x17, 0x12, 0x1d, 0x18, 0x3, 0x6, 0x9, 0xc, 0x3f, 0x3a, 0x35, 0x30, 0x2b, 0x2e, 0x21, 0x24, + ], + [ + 0x0, 0x6, 0xc, 0xa, 0x18, 0x1e, 0x14, 0x12, 0x30, 0x36, 0x3c, 0x3a, 0x28, 0x2e, 0x24, 0x22, + 0x60, 0x66, 0x6c, 0x6a, 0x78, 0x7e, 0x74, 0x72, 0x50, 0x56, 0x5c, 0x5a, 0x48, 0x4e, 0x44, 0x42, + 0xc0, 0xc6, 0xcc, 0xca, 0xd8, 0xde, 0xd4, 0xd2, 0xf0, 0xf6, 0xfc, 0xfa, 0xe8, 0xee, 0xe4, 0xe2, + 0xa0, 0xa6, 0xac, 0xaa, 0xb8, 0xbe, 0xb4, 0xb2, 0x90, 0x96, 0x9c, 0x9a, 0x88, 0x8e, 0x84, 0x82, + 0x9d, 0x9b, 0x91, 0x97, 0x85, 0x83, 0x89, 0x8f, 0xad, 0xab, 0xa1, 0xa7, 0xb5, 0xb3, 0xb9, 0xbf, + 0xfd, 0xfb, 0xf1, 0xf7, 0xe5, 0xe3, 0xe9, 0xef, 0xcd, 0xcb, 0xc1, 0xc7, 0xd5, 0xd3, 0xd9, 0xdf, + 0x5d, 0x5b, 0x51, 0x57, 0x45, 0x43, 0x49, 0x4f, 0x6d, 0x6b, 0x61, 0x67, 0x75, 0x73, 0x79, 0x7f, + 0x3d, 0x3b, 0x31, 0x37, 0x25, 0x23, 0x29, 0x2f, 0xd, 0xb, 0x1, 0x7, 0x15, 0x13, 0x19, 0x1f, + 0x27, 0x21, 0x2b, 0x2d, 0x3f, 0x39, 0x33, 0x35, 0x17, 0x11, 0x1b, 0x1d, 0xf, 0x9, 0x3, 0x5, + 0x47, 0x41, 0x4b, 0x4d, 0x5f, 0x59, 0x53, 0x55, 0x77, 0x71, 0x7b, 0x7d, 0x6f, 0x69, 0x63, 0x65, + 0xe7, 0xe1, 0xeb, 0xed, 0xff, 0xf9, 0xf3, 0xf5, 0xd7, 0xd1, 0xdb, 0xdd, 0xcf, 0xc9, 0xc3, 0xc5, + 0x87, 0x81, 0x8b, 0x8d, 0x9f, 0x99, 0x93, 0x95, 0xb7, 0xb1, 0xbb, 0xbd, 0xaf, 0xa9, 0xa3, 0xa5, + 0xba, 0xbc, 0xb6, 0xb0, 0xa2, 0xa4, 0xae, 0xa8, 0x8a, 0x8c, 0x86, 0x80, 0x92, 0x94, 0x9e, 0x98, + 0xda, 0xdc, 0xd6, 0xd0, 0xc2, 0xc4, 0xce, 0xc8, 0xea, 0xec, 0xe6, 0xe0, 0xf2, 0xf4, 0xfe, 0xf8, + 0x7a, 0x7c, 0x76, 0x70, 0x62, 0x64, 0x6e, 0x68, 0x4a, 0x4c, 0x46, 0x40, 0x52, 0x54, 0x5e, 0x58, + 0x1a, 0x1c, 0x16, 0x10, 0x2, 0x4, 0xe, 0x8, 0x2a, 0x2c, 0x26, 0x20, 0x32, 0x34, 0x3e, 0x38, + ], + [ + 0x0, 0x7, 0xe, 0x9, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d, + 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65, 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d, + 0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5, 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd, + 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85, 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd, + 0xdd, 0xda, 0xd3, 0xd4, 0xc1, 0xc6, 0xcf, 0xc8, 0xe5, 0xe2, 0xeb, 0xec, 0xf9, 0xfe, 0xf7, 0xf0, + 0xad, 0xaa, 0xa3, 0xa4, 0xb1, 0xb6, 0xbf, 0xb8, 0x95, 0x92, 0x9b, 0x9c, 0x89, 0x8e, 0x87, 0x80, + 0x3d, 0x3a, 0x33, 0x34, 0x21, 0x26, 0x2f, 0x28, 0x5, 0x2, 0xb, 0xc, 0x19, 0x1e, 0x17, 0x10, + 0x4d, 0x4a, 0x43, 0x44, 0x51, 0x56, 0x5f, 0x58, 0x75, 0x72, 0x7b, 0x7c, 0x69, 0x6e, 0x67, 0x60, + 0xa7, 0xa0, 0xa9, 0xae, 0xbb, 0xbc, 0xb5, 0xb2, 0x9f, 0x98, 0x91, 0x96, 0x83, 0x84, 0x8d, 0x8a, + 0xd7, 0xd0, 0xd9, 0xde, 0xcb, 0xcc, 0xc5, 0xc2, 0xef, 0xe8, 0xe1, 0xe6, 0xf3, 0xf4, 0xfd, 0xfa, + 0x47, 0x40, 0x49, 0x4e, 0x5b, 0x5c, 0x55, 0x52, 0x7f, 0x78, 0x71, 0x76, 0x63, 0x64, 0x6d, 0x6a, + 0x37, 0x30, 0x39, 0x3e, 0x2b, 0x2c, 0x25, 0x22, 0xf, 0x8, 0x1, 0x6, 0x13, 0x14, 0x1d, 0x1a, + 0x7a, 0x7d, 0x74, 0x73, 0x66, 0x61, 0x68, 0x6f, 0x42, 0x45, 0x4c, 0x4b, 0x5e, 0x59, 0x50, 0x57, + 0xa, 0xd, 0x4, 0x3, 0x16, 0x11, 0x18, 0x1f, 0x32, 0x35, 0x3c, 0x3b, 0x2e, 0x29, 0x20, 0x27, + 0x9a, 0x9d, 0x94, 0x93, 0x86, 0x81, 0x88, 0x8f, 0xa2, 0xa5, 0xac, 0xab, 0xbe, 0xb9, 0xb0, 0xb7, + 0xea, 0xed, 0xe4, 0xe3, 0xf6, 0xf1, 0xf8, 0xff, 0xd2, 0xd5, 0xdc, 0xdb, 0xce, 0xc9, 0xc0, 0xc7, + ], + [ + 0x0, 0x8, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, 0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78, + 0x80, 0x88, 0x90, 0x98, 0xa0, 0xa8, 0xb0, 0xb8, 0xc0, 0xc8, 0xd0, 0xd8, 0xe0, 0xe8, 0xf0, 0xf8, + 0x1d, 0x15, 0xd, 0x5, 0x3d, 0x35, 0x2d, 0x25, 0x5d, 0x55, 0x4d, 0x45, 0x7d, 0x75, 0x6d, 0x65, + 0x9d, 0x95, 0x8d, 0x85, 0xbd, 0xb5, 0xad, 0xa5, 0xdd, 0xd5, 0xcd, 0xc5, 0xfd, 0xf5, 0xed, 0xe5, + 0x3a, 0x32, 0x2a, 0x22, 0x1a, 0x12, 0xa, 0x2, 0x7a, 0x72, 0x6a, 0x62, 0x5a, 0x52, 0x4a, 0x42, + 0xba, 0xb2, 0xaa, 0xa2, 0x9a, 0x92, 0x8a, 0x82, 0xfa, 0xf2, 0xea, 0xe2, 0xda, 0xd2, 0xca, 0xc2, + 0x27, 0x2f, 0x37, 0x3f, 0x7, 0xf, 0x17, 0x1f, 0x67, 0x6f, 0x77, 0x7f, 0x47, 0x4f, 0x57, 0x5f, + 0xa7, 0xaf, 0xb7, 0xbf, 0x87, 0x8f, 0x97, 0x9f, 0xe7, 0xef, 0xf7, 0xff, 0xc7, 0xcf, 0xd7, 0xdf, + 0x74, 0x7c, 0x64, 0x6c, 0x54, 0x5c, 0x44, 0x4c, 0x34, 0x3c, 0x24, 0x2c, 0x14, 0x1c, 0x4, 0xc, + 0xf4, 0xfc, 0xe4, 0xec, 0xd4, 0xdc, 0xc4, 0xcc, 0xb4, 0xbc, 0xa4, 0xac, 0x94, 0x9c, 0x84, 0x8c, + 0x69, 0x61, 0x79, 0x71, 0x49, 0x41, 0x59, 0x51, 0x29, 0x21, 0x39, 0x31, 0x9, 0x1, 0x19, 0x11, + 0xe9, 0xe1, 0xf9, 0xf1, 0xc9, 0xc1, 0xd9, 0xd1, 0xa9, 0xa1, 0xb9, 0xb1, 0x89, 0x81, 0x99, 0x91, + 0x4e, 0x46, 0x5e, 0x56, 0x6e, 0x66, 0x7e, 0x76, 0xe, 0x6, 0x1e, 0x16, 0x2e, 0x26, 0x3e, 0x36, + 0xce, 0xc6, 0xde, 0xd6, 0xee, 0xe6, 0xfe, 0xf6, 0x8e, 0x86, 0x9e, 0x96, 0xae, 0xa6, 0xbe, 0xb6, + 0x53, 0x5b, 0x43, 0x4b, 0x73, 0x7b, 0x63, 0x6b, 0x13, 0x1b, 0x3, 0xb, 0x33, 0x3b, 0x23, 0x2b, + 0xd3, 0xdb, 0xc3, 0xcb, 0xf3, 0xfb, 0xe3, 0xeb, 0x93, 0x9b, 0x83, 0x8b, 0xb3, 0xbb, 0xa3, 0xab, + ], + [ + 0x0, 0x9, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77, + 0x90, 0x99, 0x82, 0x8b, 0xb4, 0xbd, 0xa6, 0xaf, 0xd8, 0xd1, 0xca, 0xc3, 0xfc, 0xf5, 0xee, 0xe7, + 0x3d, 0x34, 0x2f, 0x26, 0x19, 0x10, 0xb, 0x2, 0x75, 0x7c, 0x67, 0x6e, 0x51, 0x58, 0x43, 0x4a, + 0xad, 0xa4, 0xbf, 0xb6, 0x89, 0x80, 0x9b, 0x92, 0xe5, 0xec, 0xf7, 0xfe, 0xc1, 0xc8, 0xd3, 0xda, + 0x7a, 0x73, 0x68, 0x61, 0x5e, 0x57, 0x4c, 0x45, 0x32, 0x3b, 0x20, 0x29, 0x16, 0x1f, 0x4, 0xd, + 0xea, 0xe3, 0xf8, 0xf1, 0xce, 0xc7, 0xdc, 0xd5, 0xa2, 0xab, 0xb0, 0xb9, 0x86, 0x8f, 0x94, 0x9d, + 0x47, 0x4e, 0x55, 0x5c, 0x63, 0x6a, 0x71, 0x78, 0xf, 0x6, 0x1d, 0x14, 0x2b, 0x22, 0x39, 0x30, + 0xd7, 0xde, 0xc5, 0xcc, 0xf3, 0xfa, 0xe1, 0xe8, 0x9f, 0x96, 0x8d, 0x84, 0xbb, 0xb2, 0xa9, 0xa0, + 0xf4, 0xfd, 0xe6, 0xef, 0xd0, 0xd9, 0xc2, 0xcb, 0xbc, 0xb5, 0xae, 0xa7, 0x98, 0x91, 0x8a, 0x83, + 0x64, 0x6d, 0x76, 0x7f, 0x40, 0x49, 0x52, 0x5b, 0x2c, 0x25, 0x3e, 0x37, 0x8, 0x1, 0x1a, 0x13, + 0xc9, 0xc0, 0xdb, 0xd2, 0xed, 0xe4, 0xff, 0xf6, 0x81, 0x88, 0x93, 0x9a, 0xa5, 0xac, 0xb7, 0xbe, + 0x59, 0x50, 0x4b, 0x42, 0x7d, 0x74, 0x6f, 0x66, 0x11, 0x18, 0x3, 0xa, 0x35, 0x3c, 0x27, 0x2e, + 0x8e, 0x87, 0x9c, 0x95, 0xaa, 0xa3, 0xb8, 0xb1, 0xc6, 0xcf, 0xd4, 0xdd, 0xe2, 0xeb, 0xf0, 0xf9, + 0x1e, 0x17, 0xc, 0x5, 0x3a, 0x33, 0x28, 0x21, 0x56, 0x5f, 0x44, 0x4d, 0x72, 0x7b, 0x60, 0x69, + 0xb3, 0xba, 0xa1, 0xa8, 0x97, 0x9e, 0x85, 0x8c, 0xfb, 0xf2, 0xe9, 0xe0, 0xdf, 0xd6, 0xcd, 0xc4, + 0x23, 0x2a, 0x31, 0x38, 0x7, 0xe, 0x15, 0x1c, 0x6b, 0x62, 0x79, 0x70, 0x4f, 0x46, 0x5d, 0x54, + ], + [ + 0x0, 0xa, 0x14, 0x1e, 0x28, 0x22, 0x3c, 0x36, 0x50, 0x5a, 0x44, 0x4e, 0x78, 0x72, 0x6c, 0x66, + 0xa0, 0xaa, 0xb4, 0xbe, 0x88, 0x82, 0x9c, 0x96, 0xf0, 0xfa, 0xe4, 0xee, 0xd8, 0xd2, 0xcc, 0xc6, + 0x5d, 0x57, 0x49, 0x43, 0x75, 0x7f, 0x61, 0x6b, 0xd, 0x7, 0x19, 0x13, 0x25, 0x2f, 0x31, 0x3b, + 0xfd, 0xf7, 0xe9, 0xe3, 0xd5, 0xdf, 0xc1, 0xcb, 0xad, 0xa7, 0xb9, 0xb3, 0x85, 0x8f, 0x91, 0x9b, + 0xba, 0xb0, 0xae, 0xa4, 0x92, 0x98, 0x86, 0x8c, 0xea, 0xe0, 0xfe, 0xf4, 0xc2, 0xc8, 0xd6, 0xdc, + 0x1a, 0x10, 0xe, 0x4, 0x32, 0x38, 0x26, 0x2c, 0x4a, 0x40, 0x5e, 0x54, 0x62, 0x68, 0x76, 0x7c, + 0xe7, 0xed, 0xf3, 0xf9, 0xcf, 0xc5, 0xdb, 0xd1, 0xb7, 0xbd, 0xa3, 0xa9, 0x9f, 0x95, 0x8b, 0x81, + 0x47, 0x4d, 0x53, 0x59, 0x6f, 0x65, 0x7b, 0x71, 0x17, 0x1d, 0x3, 0x9, 0x3f, 0x35, 0x2b, 0x21, + 0x69, 0x63, 0x7d, 0x77, 0x41, 0x4b, 0x55, 0x5f, 0x39, 0x33, 0x2d, 0x27, 0x11, 0x1b, 0x5, 0xf, + 0xc9, 0xc3, 0xdd, 0xd7, 0xe1, 0xeb, 0xf5, 0xff, 0x99, 0x93, 0x8d, 0x87, 0xb1, 0xbb, 0xa5, 0xaf, + 0x34, 0x3e, 0x20, 0x2a, 0x1c, 0x16, 0x8, 0x2, 0x64, 0x6e, 0x70, 0x7a, 0x4c, 0x46, 0x58, 0x52, + 0x94, 0x9e, 0x80, 0x8a, 0xbc, 0xb6, 0xa8, 0xa2, 0xc4, 0xce, 0xd0, 0xda, 0xec, 0xe6, 0xf8, 0xf2, + 0xd3, 0xd9, 0xc7, 0xcd, 0xfb, 0xf1, 0xef, 0xe5, 0x83, 0x89, 0x97, 0x9d, 0xab, 0xa1, 0xbf, 0xb5, + 0x73, 0x79, 0x67, 0x6d, 0x5b, 0x51, 0x4f, 0x45, 0x23, 0x29, 0x37, 0x3d, 0xb, 0x1, 0x1f, 0x15, + 0x8e, 0x84, 0x9a, 0x90, 0xa6, 0xac, 0xb2, 0xb8, 0xde, 0xd4, 0xca, 0xc0, 0xf6, 0xfc, 0xe2, 0xe8, + 0x2e, 0x24, 0x3a, 0x30, 0x6, 0xc, 0x12, 0x18, 0x7e, 0x74, 0x6a, 0x60, 0x56, 0x5c, 0x42, 0x48, + ], + [ + 0x0, 0xb, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69, + 0xb0, 0xbb, 0xa6, 0xad, 0x9c, 0x97, 0x8a, 0x81, 0xe8, 0xe3, 0xfe, 0xf5, 0xc4, 0xcf, 0xd2, 0xd9, + 0x7d, 0x76, 0x6b, 0x60, 0x51, 0x5a, 0x47, 0x4c, 0x25, 0x2e, 0x33, 0x38, 0x9, 0x2, 0x1f, 0x14, + 0xcd, 0xc6, 0xdb, 0xd0, 0xe1, 0xea, 0xf7, 0xfc, 0x95, 0x9e, 0x83, 0x88, 0xb9, 0xb2, 0xaf, 0xa4, + 0xfa, 0xf1, 0xec, 0xe7, 0xd6, 0xdd, 0xc0, 0xcb, 0xa2, 0xa9, 0xb4, 0xbf, 0x8e, 0x85, 0x98, 0x93, + 0x4a, 0x41, 0x5c, 0x57, 0x66, 0x6d, 0x70, 0x7b, 0x12, 0x19, 0x4, 0xf, 0x3e, 0x35, 0x28, 0x23, + 0x87, 0x8c, 0x91, 0x9a, 0xab, 0xa0, 0xbd, 0xb6, 0xdf, 0xd4, 0xc9, 0xc2, 0xf3, 0xf8, 0xe5, 0xee, + 0x37, 0x3c, 0x21, 0x2a, 0x1b, 0x10, 0xd, 0x6, 0x6f, 0x64, 0x79, 0x72, 0x43, 0x48, 0x55, 0x5e, + 0xe9, 0xe2, 0xff, 0xf4, 0xc5, 0xce, 0xd3, 0xd8, 0xb1, 0xba, 0xa7, 0xac, 0x9d, 0x96, 0x8b, 0x80, + 0x59, 0x52, 0x4f, 0x44, 0x75, 0x7e, 0x63, 0x68, 0x1, 0xa, 0x17, 0x1c, 0x2d, 0x26, 0x3b, 0x30, + 0x94, 0x9f, 0x82, 0x89, 0xb8, 0xb3, 0xae, 0xa5, 0xcc, 0xc7, 0xda, 0xd1, 0xe0, 0xeb, 0xf6, 0xfd, + 0x24, 0x2f, 0x32, 0x39, 0x8, 0x3, 0x1e, 0x15, 0x7c, 0x77, 0x6a, 0x61, 0x50, 0x5b, 0x46, 0x4d, + 0x13, 0x18, 0x5, 0xe, 0x3f, 0x34, 0x29, 0x22, 0x4b, 0x40, 0x5d, 0x56, 0x67, 0x6c, 0x71, 0x7a, + 0xa3, 0xa8, 0xb5, 0xbe, 0x8f, 0x84, 0x99, 0x92, 0xfb, 0xf0, 0xed, 0xe6, 0xd7, 0xdc, 0xc1, 0xca, + 0x6e, 0x65, 0x78, 0x73, 0x42, 0x49, 0x54, 0x5f, 0x36, 0x3d, 0x20, 0x2b, 0x1a, 0x11, 0xc, 0x7, + 0xde, 0xd5, 0xc8, 0xc3, 0xf2, 0xf9, 0xe4, 0xef, 0x86, 0x8d, 0x90, 0x9b, 0xaa, 0xa1, 0xbc, 0xb7, + ], + [ + 0x0, 0xc, 0x18, 0x14, 0x30, 0x3c, 0x28, 0x24, 0x60, 0x6c, 0x78, 0x74, 0x50, 0x5c, 0x48, 0x44, + 0xc0, 0xcc, 0xd8, 0xd4, 0xf0, 0xfc, 0xe8, 0xe4, 0xa0, 0xac, 0xb8, 0xb4, 0x90, 0x9c, 0x88, 0x84, + 0x9d, 0x91, 0x85, 0x89, 0xad, 0xa1, 0xb5, 0xb9, 0xfd, 0xf1, 0xe5, 0xe9, 0xcd, 0xc1, 0xd5, 0xd9, + 0x5d, 0x51, 0x45, 0x49, 0x6d, 0x61, 0x75, 0x79, 0x3d, 0x31, 0x25, 0x29, 0xd, 0x1, 0x15, 0x19, + 0x27, 0x2b, 0x3f, 0x33, 0x17, 0x1b, 0xf, 0x3, 0x47, 0x4b, 0x5f, 0x53, 0x77, 0x7b, 0x6f, 0x63, + 0xe7, 0xeb, 0xff, 0xf3, 0xd7, 0xdb, 0xcf, 0xc3, 0x87, 0x8b, 0x9f, 0x93, 0xb7, 0xbb, 0xaf, 0xa3, + 0xba, 0xb6, 0xa2, 0xae, 0x8a, 0x86, 0x92, 0x9e, 0xda, 0xd6, 0xc2, 0xce, 0xea, 0xe6, 0xf2, 0xfe, + 0x7a, 0x76, 0x62, 0x6e, 0x4a, 0x46, 0x52, 0x5e, 0x1a, 0x16, 0x2, 0xe, 0x2a, 0x26, 0x32, 0x3e, + 0x4e, 0x42, 0x56, 0x5a, 0x7e, 0x72, 0x66, 0x6a, 0x2e, 0x22, 0x36, 0x3a, 0x1e, 0x12, 0x6, 0xa, + 0x8e, 0x82, 0x96, 0x9a, 0xbe, 0xb2, 0xa6, 0xaa, 0xee, 0xe2, 0xf6, 0xfa, 0xde, 0xd2, 0xc6, 0xca, + 0xd3, 0xdf, 0xcb, 0xc7, 0xe3, 0xef, 0xfb, 0xf7, 0xb3, 0xbf, 0xab, 0xa7, 0x83, 0x8f, 0x9b, 0x97, + 0x13, 0x1f, 0xb, 0x7, 0x23, 0x2f, 0x3b, 0x37, 0x73, 0x7f, 0x6b, 0x67, 0x43, 0x4f, 0x5b, 0x57, + 0x69, 0x65, 0x71, 0x7d, 0x59, 0x55, 0x41, 0x4d, 0x9, 0x5, 0x11, 0x1d, 0x39, 0x35, 0x21, 0x2d, + 0xa9, 0xa5, 0xb1, 0xbd, 0x99, 0x95, 0x81, 0x8d, 0xc9, 0xc5, 0xd1, 0xdd, 0xf9, 0xf5, 0xe1, 0xed, + 0xf4, 0xf8, 0xec, 0xe0, 0xc4, 0xc8, 0xdc, 0xd0, 0x94, 0x98, 0x8c, 0x80, 0xa4, 0xa8, 0xbc, 0xb0, + 0x34, 0x38, 0x2c, 0x20, 0x4, 0x8, 0x1c, 0x10, 0x54, 0x58, 0x4c, 0x40, 0x64, 0x68, 0x7c, 0x70, + ], + [ + 0x0, 0xd, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b, + 0xd0, 0xdd, 0xca, 0xc7, 0xe4, 0xe9, 0xfe, 0xf3, 0xb8, 0xb5, 0xa2, 0xaf, 0x8c, 0x81, 0x96, 0x9b, + 0xbd, 0xb0, 0xa7, 0xaa, 0x89, 0x84, 0x93, 0x9e, 0xd5, 0xd8, 0xcf, 0xc2, 0xe1, 0xec, 0xfb, 0xf6, + 0x6d, 0x60, 0x77, 0x7a, 0x59, 0x54, 0x43, 0x4e, 0x5, 0x8, 0x1f, 0x12, 0x31, 0x3c, 0x2b, 0x26, + 0x67, 0x6a, 0x7d, 0x70, 0x53, 0x5e, 0x49, 0x44, 0xf, 0x2, 0x15, 0x18, 0x3b, 0x36, 0x21, 0x2c, + 0xb7, 0xba, 0xad, 0xa0, 0x83, 0x8e, 0x99, 0x94, 0xdf, 0xd2, 0xc5, 0xc8, 0xeb, 0xe6, 0xf1, 0xfc, + 0xda, 0xd7, 0xc0, 0xcd, 0xee, 0xe3, 0xf4, 0xf9, 0xb2, 0xbf, 0xa8, 0xa5, 0x86, 0x8b, 0x9c, 0x91, + 0xa, 0x7, 0x10, 0x1d, 0x3e, 0x33, 0x24, 0x29, 0x62, 0x6f, 0x78, 0x75, 0x56, 0x5b, 0x4c, 0x41, + 0xce, 0xc3, 0xd4, 0xd9, 0xfa, 0xf7, 0xe0, 0xed, 0xa6, 0xab, 0xbc, 0xb1, 0x92, 0x9f, 0x88, 0x85, + 0x1e, 0x13, 0x4, 0x9, 0x2a, 0x27, 0x30, 0x3d, 0x76, 0x7b, 0x6c, 0x61, 0x42, 0x4f, 0x58, 0x55, + 0x73, 0x7e, 0x69, 0x64, 0x47, 0x4a, 0x5d, 0x50, 0x1b, 0x16, 0x1, 0xc, 0x2f, 0x22, 0x35, 0x38, + 0xa3, 0xae, 0xb9, 0xb4, 0x97, 0x9a, 0x8d, 0x80, 0xcb, 0xc6, 0xd1, 0xdc, 0xff, 0xf2, 0xe5, 0xe8, + 0xa9, 0xa4, 0xb3, 0xbe, 0x9d, 0x90, 0x87, 0x8a, 0xc1, 0xcc, 0xdb, 0xd6, 0xf5, 0xf8, 0xef, 0xe2, + 0x79, 0x74, 0x63, 0x6e, 0x4d, 0x40, 0x57, 0x5a, 0x11, 0x1c, 0xb, 0x6, 0x25, 0x28, 0x3f, 0x32, + 0x14, 0x19, 0xe, 0x3, 0x20, 0x2d, 0x3a, 0x37, 0x7c, 0x71, 0x66, 0x6b, 0x48, 0x45, 0x52, 0x5f, + 0xc4, 0xc9, 0xde, 0xd3, 0xf0, 0xfd, 0xea, 0xe7, 0xac, 0xa1, 0xb6, 0xbb, 0x98, 0x95, 0x82, 0x8f, + ], + [ + 0x0, 0xe, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a, + 0xe0, 0xee, 0xfc, 0xf2, 0xd8, 0xd6, 0xc4, 0xca, 0x90, 0x9e, 0x8c, 0x82, 0xa8, 0xa6, 0xb4, 0xba, + 0xdd, 0xd3, 0xc1, 0xcf, 0xe5, 0xeb, 0xf9, 0xf7, 0xad, 0xa3, 0xb1, 0xbf, 0x95, 0x9b, 0x89, 0x87, + 0x3d, 0x33, 0x21, 0x2f, 0x5, 0xb, 0x19, 0x17, 0x4d, 0x43, 0x51, 0x5f, 0x75, 0x7b, 0x69, 0x67, + 0xa7, 0xa9, 0xbb, 0xb5, 0x9f, 0x91, 0x83, 0x8d, 0xd7, 0xd9, 0xcb, 0xc5, 0xef, 0xe1, 0xf3, 0xfd, + 0x47, 0x49, 0x5b, 0x55, 0x7f, 0x71, 0x63, 0x6d, 0x37, 0x39, 0x2b, 0x25, 0xf, 0x1, 0x13, 0x1d, + 0x7a, 0x74, 0x66, 0x68, 0x42, 0x4c, 0x5e, 0x50, 0xa, 0x4, 0x16, 0x18, 0x32, 0x3c, 0x2e, 0x20, + 0x9a, 0x94, 0x86, 0x88, 0xa2, 0xac, 0xbe, 0xb0, 0xea, 0xe4, 0xf6, 0xf8, 0xd2, 0xdc, 0xce, 0xc0, + 0x53, 0x5d, 0x4f, 0x41, 0x6b, 0x65, 0x77, 0x79, 0x23, 0x2d, 0x3f, 0x31, 0x1b, 0x15, 0x7, 0x9, + 0xb3, 0xbd, 0xaf, 0xa1, 0x8b, 0x85, 0x97, 0x99, 0xc3, 0xcd, 0xdf, 0xd1, 0xfb, 0xf5, 0xe7, 0xe9, + 0x8e, 0x80, 0x92, 0x9c, 0xb6, 0xb8, 0xaa, 0xa4, 0xfe, 0xf0, 0xe2, 0xec, 0xc6, 0xc8, 0xda, 0xd4, + 0x6e, 0x60, 0x72, 0x7c, 0x56, 0x58, 0x4a, 0x44, 0x1e, 0x10, 0x2, 0xc, 0x26, 0x28, 0x3a, 0x34, + 0xf4, 0xfa, 0xe8, 0xe6, 0xcc, 0xc2, 0xd0, 0xde, 0x84, 0x8a, 0x98, 0x96, 0xbc, 0xb2, 0xa0, 0xae, + 0x14, 0x1a, 0x8, 0x6, 0x2c, 0x22, 0x30, 0x3e, 0x64, 0x6a, 0x78, 0x76, 0x5c, 0x52, 0x40, 0x4e, + 0x29, 0x27, 0x35, 0x3b, 0x11, 0x1f, 0xd, 0x3, 0x59, 0x57, 0x45, 0x4b, 0x61, 0x6f, 0x7d, 0x73, + 0xc9, 0xc7, 0xd5, 0xdb, 0xf1, 0xff, 0xed, 0xe3, 0xb9, 0xb7, 0xa5, 0xab, 0x81, 0x8f, 0x9d, 0x93, + ], + [ + 0x0, 0xf, 0x1e, 0x11, 0x3c, 0x33, 0x22, 0x2d, 0x78, 0x77, 0x66, 0x69, 0x44, 0x4b, 0x5a, 0x55, + 0xf0, 0xff, 0xee, 0xe1, 0xcc, 0xc3, 0xd2, 0xdd, 0x88, 0x87, 0x96, 0x99, 0xb4, 0xbb, 0xaa, 0xa5, + 0xfd, 0xf2, 0xe3, 0xec, 0xc1, 0xce, 0xdf, 0xd0, 0x85, 0x8a, 0x9b, 0x94, 0xb9, 0xb6, 0xa7, 0xa8, + 0xd, 0x2, 0x13, 0x1c, 0x31, 0x3e, 0x2f, 0x20, 0x75, 0x7a, 0x6b, 0x64, 0x49, 0x46, 0x57, 0x58, + 0xe7, 0xe8, 0xf9, 0xf6, 0xdb, 0xd4, 0xc5, 0xca, 0x9f, 0x90, 0x81, 0x8e, 0xa3, 0xac, 0xbd, 0xb2, + 0x17, 0x18, 0x9, 0x6, 0x2b, 0x24, 0x35, 0x3a, 0x6f, 0x60, 0x71, 0x7e, 0x53, 0x5c, 0x4d, 0x42, + 0x1a, 0x15, 0x4, 0xb, 0x26, 0x29, 0x38, 0x37, 0x62, 0x6d, 0x7c, 0x73, 0x5e, 0x51, 0x40, 0x4f, + 0xea, 0xe5, 0xf4, 0xfb, 0xd6, 0xd9, 0xc8, 0xc7, 0x92, 0x9d, 0x8c, 0x83, 0xae, 0xa1, 0xb0, 0xbf, + 0xd3, 0xdc, 0xcd, 0xc2, 0xef, 0xe0, 0xf1, 0xfe, 0xab, 0xa4, 0xb5, 0xba, 0x97, 0x98, 0x89, 0x86, + 0x23, 0x2c, 0x3d, 0x32, 0x1f, 0x10, 0x1, 0xe, 0x5b, 0x54, 0x45, 0x4a, 0x67, 0x68, 0x79, 0x76, + 0x2e, 0x21, 0x30, 0x3f, 0x12, 0x1d, 0xc, 0x3, 0x56, 0x59, 0x48, 0x47, 0x6a, 0x65, 0x74, 0x7b, + 0xde, 0xd1, 0xc0, 0xcf, 0xe2, 0xed, 0xfc, 0xf3, 0xa6, 0xa9, 0xb8, 0xb7, 0x9a, 0x95, 0x84, 0x8b, + 0x34, 0x3b, 0x2a, 0x25, 0x8, 0x7, 0x16, 0x19, 0x4c, 0x43, 0x52, 0x5d, 0x70, 0x7f, 0x6e, 0x61, + 0xc4, 0xcb, 0xda, 0xd5, 0xf8, 0xf7, 0xe6, 0xe9, 0xbc, 0xb3, 0xa2, 0xad, 0x80, 0x8f, 0x9e, 0x91, + 0xc9, 0xc6, 0xd7, 0xd8, 0xf5, 0xfa, 0xeb, 0xe4, 0xb1, 0xbe, 0xaf, 0xa0, 0x8d, 0x82, 0x93, 0x9c, + 0x39, 0x36, 0x27, 0x28, 0x5, 0xa, 0x1b, 0x14, 0x41, 0x4e, 0x5f, 0x50, 0x7d, 0x72, 0x63, 0x6c, + ], + [ + 0x0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0, + 0x1d, 0xd, 0x3d, 0x2d, 0x5d, 0x4d, 0x7d, 0x6d, 0x9d, 0x8d, 0xbd, 0xad, 0xdd, 0xcd, 0xfd, 0xed, + 0x3a, 0x2a, 0x1a, 0xa, 0x7a, 0x6a, 0x5a, 0x4a, 0xba, 0xaa, 0x9a, 0x8a, 0xfa, 0xea, 0xda, 0xca, + 0x27, 0x37, 0x7, 0x17, 0x67, 0x77, 0x47, 0x57, 0xa7, 0xb7, 0x87, 0x97, 0xe7, 0xf7, 0xc7, 0xd7, + 0x74, 0x64, 0x54, 0x44, 0x34, 0x24, 0x14, 0x4, 0xf4, 0xe4, 0xd4, 0xc4, 0xb4, 0xa4, 0x94, 0x84, + 0x69, 0x79, 0x49, 0x59, 0x29, 0x39, 0x9, 0x19, 0xe9, 0xf9, 0xc9, 0xd9, 0xa9, 0xb9, 0x89, 0x99, + 0x4e, 0x5e, 0x6e, 0x7e, 0xe, 0x1e, 0x2e, 0x3e, 0xce, 0xde, 0xee, 0xfe, 0x8e, 0x9e, 0xae, 0xbe, + 0x53, 0x43, 0x73, 0x63, 0x13, 0x3, 0x33, 0x23, 0xd3, 0xc3, 0xf3, 0xe3, 0x93, 0x83, 0xb3, 0xa3, + 0xe8, 0xf8, 0xc8, 0xd8, 0xa8, 0xb8, 0x88, 0x98, 0x68, 0x78, 0x48, 0x58, 0x28, 0x38, 0x8, 0x18, + 0xf5, 0xe5, 0xd5, 0xc5, 0xb5, 0xa5, 0x95, 0x85, 0x75, 0x65, 0x55, 0x45, 0x35, 0x25, 0x15, 0x5, + 0xd2, 0xc2, 0xf2, 0xe2, 0x92, 0x82, 0xb2, 0xa2, 0x52, 0x42, 0x72, 0x62, 0x12, 0x2, 0x32, 0x22, + 0xcf, 0xdf, 0xef, 0xff, 0x8f, 0x9f, 0xaf, 0xbf, 0x4f, 0x5f, 0x6f, 0x7f, 0xf, 0x1f, 0x2f, 0x3f, + 0x9c, 0x8c, 0xbc, 0xac, 0xdc, 0xcc, 0xfc, 0xec, 0x1c, 0xc, 0x3c, 0x2c, 0x5c, 0x4c, 0x7c, 0x6c, + 0x81, 0x91, 0xa1, 0xb1, 0xc1, 0xd1, 0xe1, 0xf1, 0x1, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71, + 0xa6, 0xb6, 0x86, 0x96, 0xe6, 0xf6, 0xc6, 0xd6, 0x26, 0x36, 0x6, 0x16, 0x66, 0x76, 0x46, 0x56, + 0xbb, 0xab, 0x9b, 0x8b, 0xfb, 0xeb, 0xdb, 0xcb, 0x3b, 0x2b, 0x1b, 0xb, 0x7b, 0x6b, 0x5b, 0x4b, + ], + [ + 0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, + 0xd, 0x1c, 0x2f, 0x3e, 0x49, 0x58, 0x6b, 0x7a, 0x85, 0x94, 0xa7, 0xb6, 0xc1, 0xd0, 0xe3, 0xf2, + 0x1a, 0xb, 0x38, 0x29, 0x5e, 0x4f, 0x7c, 0x6d, 0x92, 0x83, 0xb0, 0xa1, 0xd6, 0xc7, 0xf4, 0xe5, + 0x17, 0x6, 0x35, 0x24, 0x53, 0x42, 0x71, 0x60, 0x9f, 0x8e, 0xbd, 0xac, 0xdb, 0xca, 0xf9, 0xe8, + 0x34, 0x25, 0x16, 0x7, 0x70, 0x61, 0x52, 0x43, 0xbc, 0xad, 0x9e, 0x8f, 0xf8, 0xe9, 0xda, 0xcb, + 0x39, 0x28, 0x1b, 0xa, 0x7d, 0x6c, 0x5f, 0x4e, 0xb1, 0xa0, 0x93, 0x82, 0xf5, 0xe4, 0xd7, 0xc6, + 0x2e, 0x3f, 0xc, 0x1d, 0x6a, 0x7b, 0x48, 0x59, 0xa6, 0xb7, 0x84, 0x95, 0xe2, 0xf3, 0xc0, 0xd1, + 0x23, 0x32, 0x1, 0x10, 0x67, 0x76, 0x45, 0x54, 0xab, 0xba, 0x89, 0x98, 0xef, 0xfe, 0xcd, 0xdc, + 0x68, 0x79, 0x4a, 0x5b, 0x2c, 0x3d, 0xe, 0x1f, 0xe0, 0xf1, 0xc2, 0xd3, 0xa4, 0xb5, 0x86, 0x97, + 0x65, 0x74, 0x47, 0x56, 0x21, 0x30, 0x3, 0x12, 0xed, 0xfc, 0xcf, 0xde, 0xa9, 0xb8, 0x8b, 0x9a, + 0x72, 0x63, 0x50, 0x41, 0x36, 0x27, 0x14, 0x5, 0xfa, 0xeb, 0xd8, 0xc9, 0xbe, 0xaf, 0x9c, 0x8d, + 0x7f, 0x6e, 0x5d, 0x4c, 0x3b, 0x2a, 0x19, 0x8, 0xf7, 0xe6, 0xd5, 0xc4, 0xb3, 0xa2, 0x91, 0x80, + 0x5c, 0x4d, 0x7e, 0x6f, 0x18, 0x9, 0x3a, 0x2b, 0xd4, 0xc5, 0xf6, 0xe7, 0x90, 0x81, 0xb2, 0xa3, + 0x51, 0x40, 0x73, 0x62, 0x15, 0x4, 0x37, 0x26, 0xd9, 0xc8, 0xfb, 0xea, 0x9d, 0x8c, 0xbf, 0xae, + 0x46, 0x57, 0x64, 0x75, 0x2, 0x13, 0x20, 0x31, 0xce, 0xdf, 0xec, 0xfd, 0x8a, 0x9b, 0xa8, 0xb9, + 0x4b, 0x5a, 0x69, 0x78, 0xf, 0x1e, 0x2d, 0x3c, 0xc3, 0xd2, 0xe1, 0xf0, 0x87, 0x96, 0xa5, 0xb4, + ], + [ + 0x0, 0x12, 0x24, 0x36, 0x48, 0x5a, 0x6c, 0x7e, 0x90, 0x82, 0xb4, 0xa6, 0xd8, 0xca, 0xfc, 0xee, + 0x3d, 0x2f, 0x19, 0xb, 0x75, 0x67, 0x51, 0x43, 0xad, 0xbf, 0x89, 0x9b, 0xe5, 0xf7, 0xc1, 0xd3, + 0x7a, 0x68, 0x5e, 0x4c, 0x32, 0x20, 0x16, 0x4, 0xea, 0xf8, 0xce, 0xdc, 0xa2, 0xb0, 0x86, 0x94, + 0x47, 0x55, 0x63, 0x71, 0xf, 0x1d, 0x2b, 0x39, 0xd7, 0xc5, 0xf3, 0xe1, 0x9f, 0x8d, 0xbb, 0xa9, + 0xf4, 0xe6, 0xd0, 0xc2, 0xbc, 0xae, 0x98, 0x8a, 0x64, 0x76, 0x40, 0x52, 0x2c, 0x3e, 0x8, 0x1a, + 0xc9, 0xdb, 0xed, 0xff, 0x81, 0x93, 0xa5, 0xb7, 0x59, 0x4b, 0x7d, 0x6f, 0x11, 0x3, 0x35, 0x27, + 0x8e, 0x9c, 0xaa, 0xb8, 0xc6, 0xd4, 0xe2, 0xf0, 0x1e, 0xc, 0x3a, 0x28, 0x56, 0x44, 0x72, 0x60, + 0xb3, 0xa1, 0x97, 0x85, 0xfb, 0xe9, 0xdf, 0xcd, 0x23, 0x31, 0x7, 0x15, 0x6b, 0x79, 0x4f, 0x5d, + 0xf5, 0xe7, 0xd1, 0xc3, 0xbd, 0xaf, 0x99, 0x8b, 0x65, 0x77, 0x41, 0x53, 0x2d, 0x3f, 0x9, 0x1b, + 0xc8, 0xda, 0xec, 0xfe, 0x80, 0x92, 0xa4, 0xb6, 0x58, 0x4a, 0x7c, 0x6e, 0x10, 0x2, 0x34, 0x26, + 0x8f, 0x9d, 0xab, 0xb9, 0xc7, 0xd5, 0xe3, 0xf1, 0x1f, 0xd, 0x3b, 0x29, 0x57, 0x45, 0x73, 0x61, + 0xb2, 0xa0, 0x96, 0x84, 0xfa, 0xe8, 0xde, 0xcc, 0x22, 0x30, 0x6, 0x14, 0x6a, 0x78, 0x4e, 0x5c, + 0x1, 0x13, 0x25, 0x37, 0x49, 0x5b, 0x6d, 0x7f, 0x91, 0x83, 0xb5, 0xa7, 0xd9, 0xcb, 0xfd, 0xef, + 0x3c, 0x2e, 0x18, 0xa, 0x74, 0x66, 0x50, 0x42, 0xac, 0xbe, 0x88, 0x9a, 0xe4, 0xf6, 0xc0, 0xd2, + 0x7b, 0x69, 0x5f, 0x4d, 0x33, 0x21, 0x17, 0x5, 0xeb, 0xf9, 0xcf, 0xdd, 0xa3, 0xb1, 0x87, 0x95, + 0x46, 0x54, 0x62, 0x70, 0xe, 0x1c, 0x2a, 0x38, 0xd6, 0xc4, 0xf2, 0xe0, 0x9e, 0x8c, 0xba, 0xa8, + ], + [ + 0x0, 0x13, 0x26, 0x35, 0x4c, 0x5f, 0x6a, 0x79, 0x98, 0x8b, 0xbe, 0xad, 0xd4, 0xc7, 0xf2, 0xe1, + 0x2d, 0x3e, 0xb, 0x18, 0x61, 0x72, 0x47, 0x54, 0xb5, 0xa6, 0x93, 0x80, 0xf9, 0xea, 0xdf, 0xcc, + 0x5a, 0x49, 0x7c, 0x6f, 0x16, 0x5, 0x30, 0x23, 0xc2, 0xd1, 0xe4, 0xf7, 0x8e, 0x9d, 0xa8, 0xbb, + 0x77, 0x64, 0x51, 0x42, 0x3b, 0x28, 0x1d, 0xe, 0xef, 0xfc, 0xc9, 0xda, 0xa3, 0xb0, 0x85, 0x96, + 0xb4, 0xa7, 0x92, 0x81, 0xf8, 0xeb, 0xde, 0xcd, 0x2c, 0x3f, 0xa, 0x19, 0x60, 0x73, 0x46, 0x55, + 0x99, 0x8a, 0xbf, 0xac, 0xd5, 0xc6, 0xf3, 0xe0, 0x1, 0x12, 0x27, 0x34, 0x4d, 0x5e, 0x6b, 0x78, + 0xee, 0xfd, 0xc8, 0xdb, 0xa2, 0xb1, 0x84, 0x97, 0x76, 0x65, 0x50, 0x43, 0x3a, 0x29, 0x1c, 0xf, + 0xc3, 0xd0, 0xe5, 0xf6, 0x8f, 0x9c, 0xa9, 0xba, 0x5b, 0x48, 0x7d, 0x6e, 0x17, 0x4, 0x31, 0x22, + 0x75, 0x66, 0x53, 0x40, 0x39, 0x2a, 0x1f, 0xc, 0xed, 0xfe, 0xcb, 0xd8, 0xa1, 0xb2, 0x87, 0x94, + 0x58, 0x4b, 0x7e, 0x6d, 0x14, 0x7, 0x32, 0x21, 0xc0, 0xd3, 0xe6, 0xf5, 0x8c, 0x9f, 0xaa, 0xb9, + 0x2f, 0x3c, 0x9, 0x1a, 0x63, 0x70, 0x45, 0x56, 0xb7, 0xa4, 0x91, 0x82, 0xfb, 0xe8, 0xdd, 0xce, + 0x2, 0x11, 0x24, 0x37, 0x4e, 0x5d, 0x68, 0x7b, 0x9a, 0x89, 0xbc, 0xaf, 0xd6, 0xc5, 0xf0, 0xe3, + 0xc1, 0xd2, 0xe7, 0xf4, 0x8d, 0x9e, 0xab, 0xb8, 0x59, 0x4a, 0x7f, 0x6c, 0x15, 0x6, 0x33, 0x20, + 0xec, 0xff, 0xca, 0xd9, 0xa0, 0xb3, 0x86, 0x95, 0x74, 0x67, 0x52, 0x41, 0x38, 0x2b, 0x1e, 0xd, + 0x9b, 0x88, 0xbd, 0xae, 0xd7, 0xc4, 0xf1, 0xe2, 0x3, 0x10, 0x25, 0x36, 0x4f, 0x5c, 0x69, 0x7a, + 0xb6, 0xa5, 0x90, 0x83, 0xfa, 0xe9, 0xdc, 0xcf, 0x2e, 0x3d, 0x8, 0x1b, 0x62, 0x71, 0x44, 0x57, + ], + [ + 0x0, 0x14, 0x28, 0x3c, 0x50, 0x44, 0x78, 0x6c, 0xa0, 0xb4, 0x88, 0x9c, 0xf0, 0xe4, 0xd8, 0xcc, + 0x5d, 0x49, 0x75, 0x61, 0xd, 0x19, 0x25, 0x31, 0xfd, 0xe9, 0xd5, 0xc1, 0xad, 0xb9, 0x85, 0x91, + 0xba, 0xae, 0x92, 0x86, 0xea, 0xfe, 0xc2, 0xd6, 0x1a, 0xe, 0x32, 0x26, 0x4a, 0x5e, 0x62, 0x76, + 0xe7, 0xf3, 0xcf, 0xdb, 0xb7, 0xa3, 0x9f, 0x8b, 0x47, 0x53, 0x6f, 0x7b, 0x17, 0x3, 0x3f, 0x2b, + 0x69, 0x7d, 0x41, 0x55, 0x39, 0x2d, 0x11, 0x5, 0xc9, 0xdd, 0xe1, 0xf5, 0x99, 0x8d, 0xb1, 0xa5, + 0x34, 0x20, 0x1c, 0x8, 0x64, 0x70, 0x4c, 0x58, 0x94, 0x80, 0xbc, 0xa8, 0xc4, 0xd0, 0xec, 0xf8, + 0xd3, 0xc7, 0xfb, 0xef, 0x83, 0x97, 0xab, 0xbf, 0x73, 0x67, 0x5b, 0x4f, 0x23, 0x37, 0xb, 0x1f, + 0x8e, 0x9a, 0xa6, 0xb2, 0xde, 0xca, 0xf6, 0xe2, 0x2e, 0x3a, 0x6, 0x12, 0x7e, 0x6a, 0x56, 0x42, + 0xd2, 0xc6, 0xfa, 0xee, 0x82, 0x96, 0xaa, 0xbe, 0x72, 0x66, 0x5a, 0x4e, 0x22, 0x36, 0xa, 0x1e, + 0x8f, 0x9b, 0xa7, 0xb3, 0xdf, 0xcb, 0xf7, 0xe3, 0x2f, 0x3b, 0x7, 0x13, 0x7f, 0x6b, 0x57, 0x43, + 0x68, 0x7c, 0x40, 0x54, 0x38, 0x2c, 0x10, 0x4, 0xc8, 0xdc, 0xe0, 0xf4, 0x98, 0x8c, 0xb0, 0xa4, + 0x35, 0x21, 0x1d, 0x9, 0x65, 0x71, 0x4d, 0x59, 0x95, 0x81, 0xbd, 0xa9, 0xc5, 0xd1, 0xed, 0xf9, + 0xbb, 0xaf, 0x93, 0x87, 0xeb, 0xff, 0xc3, 0xd7, 0x1b, 0xf, 0x33, 0x27, 0x4b, 0x5f, 0x63, 0x77, + 0xe6, 0xf2, 0xce, 0xda, 0xb6, 0xa2, 0x9e, 0x8a, 0x46, 0x52, 0x6e, 0x7a, 0x16, 0x2, 0x3e, 0x2a, + 0x1, 0x15, 0x29, 0x3d, 0x51, 0x45, 0x79, 0x6d, 0xa1, 0xb5, 0x89, 0x9d, 0xf1, 0xe5, 0xd9, 0xcd, + 0x5c, 0x48, 0x74, 0x60, 0xc, 0x18, 0x24, 0x30, 0xfc, 0xe8, 0xd4, 0xc0, 0xac, 0xb8, 0x84, 0x90, + ], + [ + 0x0, 0x15, 0x2a, 0x3f, 0x54, 0x41, 0x7e, 0x6b, 0xa8, 0xbd, 0x82, 0x97, 0xfc, 0xe9, 0xd6, 0xc3, + 0x4d, 0x58, 0x67, 0x72, 0x19, 0xc, 0x33, 0x26, 0xe5, 0xf0, 0xcf, 0xda, 0xb1, 0xa4, 0x9b, 0x8e, + 0x9a, 0x8f, 0xb0, 0xa5, 0xce, 0xdb, 0xe4, 0xf1, 0x32, 0x27, 0x18, 0xd, 0x66, 0x73, 0x4c, 0x59, + 0xd7, 0xc2, 0xfd, 0xe8, 0x83, 0x96, 0xa9, 0xbc, 0x7f, 0x6a, 0x55, 0x40, 0x2b, 0x3e, 0x1, 0x14, + 0x29, 0x3c, 0x3, 0x16, 0x7d, 0x68, 0x57, 0x42, 0x81, 0x94, 0xab, 0xbe, 0xd5, 0xc0, 0xff, 0xea, + 0x64, 0x71, 0x4e, 0x5b, 0x30, 0x25, 0x1a, 0xf, 0xcc, 0xd9, 0xe6, 0xf3, 0x98, 0x8d, 0xb2, 0xa7, + 0xb3, 0xa6, 0x99, 0x8c, 0xe7, 0xf2, 0xcd, 0xd8, 0x1b, 0xe, 0x31, 0x24, 0x4f, 0x5a, 0x65, 0x70, + 0xfe, 0xeb, 0xd4, 0xc1, 0xaa, 0xbf, 0x80, 0x95, 0x56, 0x43, 0x7c, 0x69, 0x2, 0x17, 0x28, 0x3d, + 0x52, 0x47, 0x78, 0x6d, 0x6, 0x13, 0x2c, 0x39, 0xfa, 0xef, 0xd0, 0xc5, 0xae, 0xbb, 0x84, 0x91, + 0x1f, 0xa, 0x35, 0x20, 0x4b, 0x5e, 0x61, 0x74, 0xb7, 0xa2, 0x9d, 0x88, 0xe3, 0xf6, 0xc9, 0xdc, + 0xc8, 0xdd, 0xe2, 0xf7, 0x9c, 0x89, 0xb6, 0xa3, 0x60, 0x75, 0x4a, 0x5f, 0x34, 0x21, 0x1e, 0xb, + 0x85, 0x90, 0xaf, 0xba, 0xd1, 0xc4, 0xfb, 0xee, 0x2d, 0x38, 0x7, 0x12, 0x79, 0x6c, 0x53, 0x46, + 0x7b, 0x6e, 0x51, 0x44, 0x2f, 0x3a, 0x5, 0x10, 0xd3, 0xc6, 0xf9, 0xec, 0x87, 0x92, 0xad, 0xb8, + 0x36, 0x23, 0x1c, 0x9, 0x62, 0x77, 0x48, 0x5d, 0x9e, 0x8b, 0xb4, 0xa1, 0xca, 0xdf, 0xe0, 0xf5, + 0xe1, 0xf4, 0xcb, 0xde, 0xb5, 0xa0, 0x9f, 0x8a, 0x49, 0x5c, 0x63, 0x76, 0x1d, 0x8, 0x37, 0x22, + 0xac, 0xb9, 0x86, 0x93, 0xf8, 0xed, 0xd2, 0xc7, 0x4, 0x11, 0x2e, 0x3b, 0x50, 0x45, 0x7a, 0x6f, + ], + [ + 0x0, 0x16, 0x2c, 0x3a, 0x58, 0x4e, 0x74, 0x62, 0xb0, 0xa6, 0x9c, 0x8a, 0xe8, 0xfe, 0xc4, 0xd2, + 0x7d, 0x6b, 0x51, 0x47, 0x25, 0x33, 0x9, 0x1f, 0xcd, 0xdb, 0xe1, 0xf7, 0x95, 0x83, 0xb9, 0xaf, + 0xfa, 0xec, 0xd6, 0xc0, 0xa2, 0xb4, 0x8e, 0x98, 0x4a, 0x5c, 0x66, 0x70, 0x12, 0x4, 0x3e, 0x28, + 0x87, 0x91, 0xab, 0xbd, 0xdf, 0xc9, 0xf3, 0xe5, 0x37, 0x21, 0x1b, 0xd, 0x6f, 0x79, 0x43, 0x55, + 0xe9, 0xff, 0xc5, 0xd3, 0xb1, 0xa7, 0x9d, 0x8b, 0x59, 0x4f, 0x75, 0x63, 0x1, 0x17, 0x2d, 0x3b, + 0x94, 0x82, 0xb8, 0xae, 0xcc, 0xda, 0xe0, 0xf6, 0x24, 0x32, 0x8, 0x1e, 0x7c, 0x6a, 0x50, 0x46, + 0x13, 0x5, 0x3f, 0x29, 0x4b, 0x5d, 0x67, 0x71, 0xa3, 0xb5, 0x8f, 0x99, 0xfb, 0xed, 0xd7, 0xc1, + 0x6e, 0x78, 0x42, 0x54, 0x36, 0x20, 0x1a, 0xc, 0xde, 0xc8, 0xf2, 0xe4, 0x86, 0x90, 0xaa, 0xbc, + 0xcf, 0xd9, 0xe3, 0xf5, 0x97, 0x81, 0xbb, 0xad, 0x7f, 0x69, 0x53, 0x45, 0x27, 0x31, 0xb, 0x1d, + 0xb2, 0xa4, 0x9e, 0x88, 0xea, 0xfc, 0xc6, 0xd0, 0x2, 0x14, 0x2e, 0x38, 0x5a, 0x4c, 0x76, 0x60, + 0x35, 0x23, 0x19, 0xf, 0x6d, 0x7b, 0x41, 0x57, 0x85, 0x93, 0xa9, 0xbf, 0xdd, 0xcb, 0xf1, 0xe7, + 0x48, 0x5e, 0x64, 0x72, 0x10, 0x6, 0x3c, 0x2a, 0xf8, 0xee, 0xd4, 0xc2, 0xa0, 0xb6, 0x8c, 0x9a, + 0x26, 0x30, 0xa, 0x1c, 0x7e, 0x68, 0x52, 0x44, 0x96, 0x80, 0xba, 0xac, 0xce, 0xd8, 0xe2, 0xf4, + 0x5b, 0x4d, 0x77, 0x61, 0x3, 0x15, 0x2f, 0x39, 0xeb, 0xfd, 0xc7, 0xd1, 0xb3, 0xa5, 0x9f, 0x89, + 0xdc, 0xca, 0xf0, 0xe6, 0x84, 0x92, 0xa8, 0xbe, 0x6c, 0x7a, 0x40, 0x56, 0x34, 0x22, 0x18, 0xe, + 0xa1, 0xb7, 0x8d, 0x9b, 0xf9, 0xef, 0xd5, 0xc3, 0x11, 0x7, 0x3d, 0x2b, 0x49, 0x5f, 0x65, 0x73, + ], + [ + 0x0, 0x17, 0x2e, 0x39, 0x5c, 0x4b, 0x72, 0x65, 0xb8, 0xaf, 0x96, 0x81, 0xe4, 0xf3, 0xca, 0xdd, + 0x6d, 0x7a, 0x43, 0x54, 0x31, 0x26, 0x1f, 0x8, 0xd5, 0xc2, 0xfb, 0xec, 0x89, 0x9e, 0xa7, 0xb0, + 0xda, 0xcd, 0xf4, 0xe3, 0x86, 0x91, 0xa8, 0xbf, 0x62, 0x75, 0x4c, 0x5b, 0x3e, 0x29, 0x10, 0x7, + 0xb7, 0xa0, 0x99, 0x8e, 0xeb, 0xfc, 0xc5, 0xd2, 0xf, 0x18, 0x21, 0x36, 0x53, 0x44, 0x7d, 0x6a, + 0xa9, 0xbe, 0x87, 0x90, 0xf5, 0xe2, 0xdb, 0xcc, 0x11, 0x6, 0x3f, 0x28, 0x4d, 0x5a, 0x63, 0x74, + 0xc4, 0xd3, 0xea, 0xfd, 0x98, 0x8f, 0xb6, 0xa1, 0x7c, 0x6b, 0x52, 0x45, 0x20, 0x37, 0xe, 0x19, + 0x73, 0x64, 0x5d, 0x4a, 0x2f, 0x38, 0x1, 0x16, 0xcb, 0xdc, 0xe5, 0xf2, 0x97, 0x80, 0xb9, 0xae, + 0x1e, 0x9, 0x30, 0x27, 0x42, 0x55, 0x6c, 0x7b, 0xa6, 0xb1, 0x88, 0x9f, 0xfa, 0xed, 0xd4, 0xc3, + 0x4f, 0x58, 0x61, 0x76, 0x13, 0x4, 0x3d, 0x2a, 0xf7, 0xe0, 0xd9, 0xce, 0xab, 0xbc, 0x85, 0x92, + 0x22, 0x35, 0xc, 0x1b, 0x7e, 0x69, 0x50, 0x47, 0x9a, 0x8d, 0xb4, 0xa3, 0xc6, 0xd1, 0xe8, 0xff, + 0x95, 0x82, 0xbb, 0xac, 0xc9, 0xde, 0xe7, 0xf0, 0x2d, 0x3a, 0x3, 0x14, 0x71, 0x66, 0x5f, 0x48, + 0xf8, 0xef, 0xd6, 0xc1, 0xa4, 0xb3, 0x8a, 0x9d, 0x40, 0x57, 0x6e, 0x79, 0x1c, 0xb, 0x32, 0x25, + 0xe6, 0xf1, 0xc8, 0xdf, 0xba, 0xad, 0x94, 0x83, 0x5e, 0x49, 0x70, 0x67, 0x2, 0x15, 0x2c, 0x3b, + 0x8b, 0x9c, 0xa5, 0xb2, 0xd7, 0xc0, 0xf9, 0xee, 0x33, 0x24, 0x1d, 0xa, 0x6f, 0x78, 0x41, 0x56, + 0x3c, 0x2b, 0x12, 0x5, 0x60, 0x77, 0x4e, 0x59, 0x84, 0x93, 0xaa, 0xbd, 0xd8, 0xcf, 0xf6, 0xe1, + 0x51, 0x46, 0x7f, 0x68, 0xd, 0x1a, 0x23, 0x34, 0xe9, 0xfe, 0xc7, 0xd0, 0xb5, 0xa2, 0x9b, 0x8c, + ], + [ + 0x0, 0x18, 0x30, 0x28, 0x60, 0x78, 0x50, 0x48, 0xc0, 0xd8, 0xf0, 0xe8, 0xa0, 0xb8, 0x90, 0x88, + 0x9d, 0x85, 0xad, 0xb5, 0xfd, 0xe5, 0xcd, 0xd5, 0x5d, 0x45, 0x6d, 0x75, 0x3d, 0x25, 0xd, 0x15, + 0x27, 0x3f, 0x17, 0xf, 0x47, 0x5f, 0x77, 0x6f, 0xe7, 0xff, 0xd7, 0xcf, 0x87, 0x9f, 0xb7, 0xaf, + 0xba, 0xa2, 0x8a, 0x92, 0xda, 0xc2, 0xea, 0xf2, 0x7a, 0x62, 0x4a, 0x52, 0x1a, 0x2, 0x2a, 0x32, + 0x4e, 0x56, 0x7e, 0x66, 0x2e, 0x36, 0x1e, 0x6, 0x8e, 0x96, 0xbe, 0xa6, 0xee, 0xf6, 0xde, 0xc6, + 0xd3, 0xcb, 0xe3, 0xfb, 0xb3, 0xab, 0x83, 0x9b, 0x13, 0xb, 0x23, 0x3b, 0x73, 0x6b, 0x43, 0x5b, + 0x69, 0x71, 0x59, 0x41, 0x9, 0x11, 0x39, 0x21, 0xa9, 0xb1, 0x99, 0x81, 0xc9, 0xd1, 0xf9, 0xe1, + 0xf4, 0xec, 0xc4, 0xdc, 0x94, 0x8c, 0xa4, 0xbc, 0x34, 0x2c, 0x4, 0x1c, 0x54, 0x4c, 0x64, 0x7c, + 0x9c, 0x84, 0xac, 0xb4, 0xfc, 0xe4, 0xcc, 0xd4, 0x5c, 0x44, 0x6c, 0x74, 0x3c, 0x24, 0xc, 0x14, + 0x1, 0x19, 0x31, 0x29, 0x61, 0x79, 0x51, 0x49, 0xc1, 0xd9, 0xf1, 0xe9, 0xa1, 0xb9, 0x91, 0x89, + 0xbb, 0xa3, 0x8b, 0x93, 0xdb, 0xc3, 0xeb, 0xf3, 0x7b, 0x63, 0x4b, 0x53, 0x1b, 0x3, 0x2b, 0x33, + 0x26, 0x3e, 0x16, 0xe, 0x46, 0x5e, 0x76, 0x6e, 0xe6, 0xfe, 0xd6, 0xce, 0x86, 0x9e, 0xb6, 0xae, + 0xd2, 0xca, 0xe2, 0xfa, 0xb2, 0xaa, 0x82, 0x9a, 0x12, 0xa, 0x22, 0x3a, 0x72, 0x6a, 0x42, 0x5a, + 0x4f, 0x57, 0x7f, 0x67, 0x2f, 0x37, 0x1f, 0x7, 0x8f, 0x97, 0xbf, 0xa7, 0xef, 0xf7, 0xdf, 0xc7, + 0xf5, 0xed, 0xc5, 0xdd, 0x95, 0x8d, 0xa5, 0xbd, 0x35, 0x2d, 0x5, 0x1d, 0x55, 0x4d, 0x65, 0x7d, + 0x68, 0x70, 0x58, 0x40, 0x8, 0x10, 0x38, 0x20, 0xa8, 0xb0, 0x98, 0x80, 0xc8, 0xd0, 0xf8, 0xe0, + ], + [ + 0x0, 0x19, 0x32, 0x2b, 0x64, 0x7d, 0x56, 0x4f, 0xc8, 0xd1, 0xfa, 0xe3, 0xac, 0xb5, 0x9e, 0x87, + 0x8d, 0x94, 0xbf, 0xa6, 0xe9, 0xf0, 0xdb, 0xc2, 0x45, 0x5c, 0x77, 0x6e, 0x21, 0x38, 0x13, 0xa, + 0x7, 0x1e, 0x35, 0x2c, 0x63, 0x7a, 0x51, 0x48, 0xcf, 0xd6, 0xfd, 0xe4, 0xab, 0xb2, 0x99, 0x80, + 0x8a, 0x93, 0xb8, 0xa1, 0xee, 0xf7, 0xdc, 0xc5, 0x42, 0x5b, 0x70, 0x69, 0x26, 0x3f, 0x14, 0xd, + 0xe, 0x17, 0x3c, 0x25, 0x6a, 0x73, 0x58, 0x41, 0xc6, 0xdf, 0xf4, 0xed, 0xa2, 0xbb, 0x90, 0x89, + 0x83, 0x9a, 0xb1, 0xa8, 0xe7, 0xfe, 0xd5, 0xcc, 0x4b, 0x52, 0x79, 0x60, 0x2f, 0x36, 0x1d, 0x4, + 0x9, 0x10, 0x3b, 0x22, 0x6d, 0x74, 0x5f, 0x46, 0xc1, 0xd8, 0xf3, 0xea, 0xa5, 0xbc, 0x97, 0x8e, + 0x84, 0x9d, 0xb6, 0xaf, 0xe0, 0xf9, 0xd2, 0xcb, 0x4c, 0x55, 0x7e, 0x67, 0x28, 0x31, 0x1a, 0x3, + 0x1c, 0x5, 0x2e, 0x37, 0x78, 0x61, 0x4a, 0x53, 0xd4, 0xcd, 0xe6, 0xff, 0xb0, 0xa9, 0x82, 0x9b, + 0x91, 0x88, 0xa3, 0xba, 0xf5, 0xec, 0xc7, 0xde, 0x59, 0x40, 0x6b, 0x72, 0x3d, 0x24, 0xf, 0x16, + 0x1b, 0x2, 0x29, 0x30, 0x7f, 0x66, 0x4d, 0x54, 0xd3, 0xca, 0xe1, 0xf8, 0xb7, 0xae, 0x85, 0x9c, + 0x96, 0x8f, 0xa4, 0xbd, 0xf2, 0xeb, 0xc0, 0xd9, 0x5e, 0x47, 0x6c, 0x75, 0x3a, 0x23, 0x8, 0x11, + 0x12, 0xb, 0x20, 0x39, 0x76, 0x6f, 0x44, 0x5d, 0xda, 0xc3, 0xe8, 0xf1, 0xbe, 0xa7, 0x8c, 0x95, + 0x9f, 0x86, 0xad, 0xb4, 0xfb, 0xe2, 0xc9, 0xd0, 0x57, 0x4e, 0x65, 0x7c, 0x33, 0x2a, 0x1, 0x18, + 0x15, 0xc, 0x27, 0x3e, 0x71, 0x68, 0x43, 0x5a, 0xdd, 0xc4, 0xef, 0xf6, 0xb9, 0xa0, 0x8b, 0x92, + 0x98, 0x81, 0xaa, 0xb3, 0xfc, 0xe5, 0xce, 0xd7, 0x50, 0x49, 0x62, 0x7b, 0x34, 0x2d, 0x6, 0x1f, + ], + [ + 0x0, 0x1a, 0x34, 0x2e, 0x68, 0x72, 0x5c, 0x46, 0xd0, 0xca, 0xe4, 0xfe, 0xb8, 0xa2, 0x8c, 0x96, + 0xbd, 0xa7, 0x89, 0x93, 0xd5, 0xcf, 0xe1, 0xfb, 0x6d, 0x77, 0x59, 0x43, 0x5, 0x1f, 0x31, 0x2b, + 0x67, 0x7d, 0x53, 0x49, 0xf, 0x15, 0x3b, 0x21, 0xb7, 0xad, 0x83, 0x99, 0xdf, 0xc5, 0xeb, 0xf1, + 0xda, 0xc0, 0xee, 0xf4, 0xb2, 0xa8, 0x86, 0x9c, 0xa, 0x10, 0x3e, 0x24, 0x62, 0x78, 0x56, 0x4c, + 0xce, 0xd4, 0xfa, 0xe0, 0xa6, 0xbc, 0x92, 0x88, 0x1e, 0x4, 0x2a, 0x30, 0x76, 0x6c, 0x42, 0x58, + 0x73, 0x69, 0x47, 0x5d, 0x1b, 0x1, 0x2f, 0x35, 0xa3, 0xb9, 0x97, 0x8d, 0xcb, 0xd1, 0xff, 0xe5, + 0xa9, 0xb3, 0x9d, 0x87, 0xc1, 0xdb, 0xf5, 0xef, 0x79, 0x63, 0x4d, 0x57, 0x11, 0xb, 0x25, 0x3f, + 0x14, 0xe, 0x20, 0x3a, 0x7c, 0x66, 0x48, 0x52, 0xc4, 0xde, 0xf0, 0xea, 0xac, 0xb6, 0x98, 0x82, + 0x81, 0x9b, 0xb5, 0xaf, 0xe9, 0xf3, 0xdd, 0xc7, 0x51, 0x4b, 0x65, 0x7f, 0x39, 0x23, 0xd, 0x17, + 0x3c, 0x26, 0x8, 0x12, 0x54, 0x4e, 0x60, 0x7a, 0xec, 0xf6, 0xd8, 0xc2, 0x84, 0x9e, 0xb0, 0xaa, + 0xe6, 0xfc, 0xd2, 0xc8, 0x8e, 0x94, 0xba, 0xa0, 0x36, 0x2c, 0x2, 0x18, 0x5e, 0x44, 0x6a, 0x70, + 0x5b, 0x41, 0x6f, 0x75, 0x33, 0x29, 0x7, 0x1d, 0x8b, 0x91, 0xbf, 0xa5, 0xe3, 0xf9, 0xd7, 0xcd, + 0x4f, 0x55, 0x7b, 0x61, 0x27, 0x3d, 0x13, 0x9, 0x9f, 0x85, 0xab, 0xb1, 0xf7, 0xed, 0xc3, 0xd9, + 0xf2, 0xe8, 0xc6, 0xdc, 0x9a, 0x80, 0xae, 0xb4, 0x22, 0x38, 0x16, 0xc, 0x4a, 0x50, 0x7e, 0x64, + 0x28, 0x32, 0x1c, 0x6, 0x40, 0x5a, 0x74, 0x6e, 0xf8, 0xe2, 0xcc, 0xd6, 0x90, 0x8a, 0xa4, 0xbe, + 0x95, 0x8f, 0xa1, 0xbb, 0xfd, 0xe7, 0xc9, 0xd3, 0x45, 0x5f, 0x71, 0x6b, 0x2d, 0x37, 0x19, 0x3, + ], + [ + 0x0, 0x1b, 0x36, 0x2d, 0x6c, 0x77, 0x5a, 0x41, 0xd8, 0xc3, 0xee, 0xf5, 0xb4, 0xaf, 0x82, 0x99, + 0xad, 0xb6, 0x9b, 0x80, 0xc1, 0xda, 0xf7, 0xec, 0x75, 0x6e, 0x43, 0x58, 0x19, 0x2, 0x2f, 0x34, + 0x47, 0x5c, 0x71, 0x6a, 0x2b, 0x30, 0x1d, 0x6, 0x9f, 0x84, 0xa9, 0xb2, 0xf3, 0xe8, 0xc5, 0xde, + 0xea, 0xf1, 0xdc, 0xc7, 0x86, 0x9d, 0xb0, 0xab, 0x32, 0x29, 0x4, 0x1f, 0x5e, 0x45, 0x68, 0x73, + 0x8e, 0x95, 0xb8, 0xa3, 0xe2, 0xf9, 0xd4, 0xcf, 0x56, 0x4d, 0x60, 0x7b, 0x3a, 0x21, 0xc, 0x17, + 0x23, 0x38, 0x15, 0xe, 0x4f, 0x54, 0x79, 0x62, 0xfb, 0xe0, 0xcd, 0xd6, 0x97, 0x8c, 0xa1, 0xba, + 0xc9, 0xd2, 0xff, 0xe4, 0xa5, 0xbe, 0x93, 0x88, 0x11, 0xa, 0x27, 0x3c, 0x7d, 0x66, 0x4b, 0x50, + 0x64, 0x7f, 0x52, 0x49, 0x8, 0x13, 0x3e, 0x25, 0xbc, 0xa7, 0x8a, 0x91, 0xd0, 0xcb, 0xe6, 0xfd, + 0x1, 0x1a, 0x37, 0x2c, 0x6d, 0x76, 0x5b, 0x40, 0xd9, 0xc2, 0xef, 0xf4, 0xb5, 0xae, 0x83, 0x98, + 0xac, 0xb7, 0x9a, 0x81, 0xc0, 0xdb, 0xf6, 0xed, 0x74, 0x6f, 0x42, 0x59, 0x18, 0x3, 0x2e, 0x35, + 0x46, 0x5d, 0x70, 0x6b, 0x2a, 0x31, 0x1c, 0x7, 0x9e, 0x85, 0xa8, 0xb3, 0xf2, 0xe9, 0xc4, 0xdf, + 0xeb, 0xf0, 0xdd, 0xc6, 0x87, 0x9c, 0xb1, 0xaa, 0x33, 0x28, 0x5, 0x1e, 0x5f, 0x44, 0x69, 0x72, + 0x8f, 0x94, 0xb9, 0xa2, 0xe3, 0xf8, 0xd5, 0xce, 0x57, 0x4c, 0x61, 0x7a, 0x3b, 0x20, 0xd, 0x16, + 0x22, 0x39, 0x14, 0xf, 0x4e, 0x55, 0x78, 0x63, 0xfa, 0xe1, 0xcc, 0xd7, 0x96, 0x8d, 0xa0, 0xbb, + 0xc8, 0xd3, 0xfe, 0xe5, 0xa4, 0xbf, 0x92, 0x89, 0x10, 0xb, 0x26, 0x3d, 0x7c, 0x67, 0x4a, 0x51, + 0x65, 0x7e, 0x53, 0x48, 0x9, 0x12, 0x3f, 0x24, 0xbd, 0xa6, 0x8b, 0x90, 0xd1, 0xca, 0xe7, 0xfc, + ], + [ + 0x0, 0x1c, 0x38, 0x24, 0x70, 0x6c, 0x48, 0x54, 0xe0, 0xfc, 0xd8, 0xc4, 0x90, 0x8c, 0xa8, 0xb4, + 0xdd, 0xc1, 0xe5, 0xf9, 0xad, 0xb1, 0x95, 0x89, 0x3d, 0x21, 0x5, 0x19, 0x4d, 0x51, 0x75, 0x69, + 0xa7, 0xbb, 0x9f, 0x83, 0xd7, 0xcb, 0xef, 0xf3, 0x47, 0x5b, 0x7f, 0x63, 0x37, 0x2b, 0xf, 0x13, + 0x7a, 0x66, 0x42, 0x5e, 0xa, 0x16, 0x32, 0x2e, 0x9a, 0x86, 0xa2, 0xbe, 0xea, 0xf6, 0xd2, 0xce, + 0x53, 0x4f, 0x6b, 0x77, 0x23, 0x3f, 0x1b, 0x7, 0xb3, 0xaf, 0x8b, 0x97, 0xc3, 0xdf, 0xfb, 0xe7, + 0x8e, 0x92, 0xb6, 0xaa, 0xfe, 0xe2, 0xc6, 0xda, 0x6e, 0x72, 0x56, 0x4a, 0x1e, 0x2, 0x26, 0x3a, + 0xf4, 0xe8, 0xcc, 0xd0, 0x84, 0x98, 0xbc, 0xa0, 0x14, 0x8, 0x2c, 0x30, 0x64, 0x78, 0x5c, 0x40, + 0x29, 0x35, 0x11, 0xd, 0x59, 0x45, 0x61, 0x7d, 0xc9, 0xd5, 0xf1, 0xed, 0xb9, 0xa5, 0x81, 0x9d, + 0xa6, 0xba, 0x9e, 0x82, 0xd6, 0xca, 0xee, 0xf2, 0x46, 0x5a, 0x7e, 0x62, 0x36, 0x2a, 0xe, 0x12, + 0x7b, 0x67, 0x43, 0x5f, 0xb, 0x17, 0x33, 0x2f, 0x9b, 0x87, 0xa3, 0xbf, 0xeb, 0xf7, 0xd3, 0xcf, + 0x1, 0x1d, 0x39, 0x25, 0x71, 0x6d, 0x49, 0x55, 0xe1, 0xfd, 0xd9, 0xc5, 0x91, 0x8d, 0xa9, 0xb5, + 0xdc, 0xc0, 0xe4, 0xf8, 0xac, 0xb0, 0x94, 0x88, 0x3c, 0x20, 0x4, 0x18, 0x4c, 0x50, 0x74, 0x68, + 0xf5, 0xe9, 0xcd, 0xd1, 0x85, 0x99, 0xbd, 0xa1, 0x15, 0x9, 0x2d, 0x31, 0x65, 0x79, 0x5d, 0x41, + 0x28, 0x34, 0x10, 0xc, 0x58, 0x44, 0x60, 0x7c, 0xc8, 0xd4, 0xf0, 0xec, 0xb8, 0xa4, 0x80, 0x9c, + 0x52, 0x4e, 0x6a, 0x76, 0x22, 0x3e, 0x1a, 0x6, 0xb2, 0xae, 0x8a, 0x96, 0xc2, 0xde, 0xfa, 0xe6, + 0x8f, 0x93, 0xb7, 0xab, 0xff, 0xe3, 0xc7, 0xdb, 0x6f, 0x73, 0x57, 0x4b, 0x1f, 0x3, 0x27, 0x3b, + ], + [ + 0x0, 0x1d, 0x3a, 0x27, 0x74, 0x69, 0x4e, 0x53, 0xe8, 0xf5, 0xd2, 0xcf, 0x9c, 0x81, 0xa6, 0xbb, + 0xcd, 0xd0, 0xf7, 0xea, 0xb9, 0xa4, 0x83, 0x9e, 0x25, 0x38, 0x1f, 0x2, 0x51, 0x4c, 0x6b, 0x76, + 0x87, 0x9a, 0xbd, 0xa0, 0xf3, 0xee, 0xc9, 0xd4, 0x6f, 0x72, 0x55, 0x48, 0x1b, 0x6, 0x21, 0x3c, + 0x4a, 0x57, 0x70, 0x6d, 0x3e, 0x23, 0x4, 0x19, 0xa2, 0xbf, 0x98, 0x85, 0xd6, 0xcb, 0xec, 0xf1, + 0x13, 0xe, 0x29, 0x34, 0x67, 0x7a, 0x5d, 0x40, 0xfb, 0xe6, 0xc1, 0xdc, 0x8f, 0x92, 0xb5, 0xa8, + 0xde, 0xc3, 0xe4, 0xf9, 0xaa, 0xb7, 0x90, 0x8d, 0x36, 0x2b, 0xc, 0x11, 0x42, 0x5f, 0x78, 0x65, + 0x94, 0x89, 0xae, 0xb3, 0xe0, 0xfd, 0xda, 0xc7, 0x7c, 0x61, 0x46, 0x5b, 0x8, 0x15, 0x32, 0x2f, + 0x59, 0x44, 0x63, 0x7e, 0x2d, 0x30, 0x17, 0xa, 0xb1, 0xac, 0x8b, 0x96, 0xc5, 0xd8, 0xff, 0xe2, + 0x26, 0x3b, 0x1c, 0x1, 0x52, 0x4f, 0x68, 0x75, 0xce, 0xd3, 0xf4, 0xe9, 0xba, 0xa7, 0x80, 0x9d, + 0xeb, 0xf6, 0xd1, 0xcc, 0x9f, 0x82, 0xa5, 0xb8, 0x3, 0x1e, 0x39, 0x24, 0x77, 0x6a, 0x4d, 0x50, + 0xa1, 0xbc, 0x9b, 0x86, 0xd5, 0xc8, 0xef, 0xf2, 0x49, 0x54, 0x73, 0x6e, 0x3d, 0x20, 0x7, 0x1a, + 0x6c, 0x71, 0x56, 0x4b, 0x18, 0x5, 0x22, 0x3f, 0x84, 0x99, 0xbe, 0xa3, 0xf0, 0xed, 0xca, 0xd7, + 0x35, 0x28, 0xf, 0x12, 0x41, 0x5c, 0x7b, 0x66, 0xdd, 0xc0, 0xe7, 0xfa, 0xa9, 0xb4, 0x93, 0x8e, + 0xf8, 0xe5, 0xc2, 0xdf, 0x8c, 0x91, 0xb6, 0xab, 0x10, 0xd, 0x2a, 0x37, 0x64, 0x79, 0x5e, 0x43, + 0xb2, 0xaf, 0x88, 0x95, 0xc6, 0xdb, 0xfc, 0xe1, 0x5a, 0x47, 0x60, 0x7d, 0x2e, 0x33, 0x14, 0x9, + 0x7f, 0x62, 0x45, 0x58, 0xb, 0x16, 0x31, 0x2c, 0x97, 0x8a, 0xad, 0xb0, 0xe3, 0xfe, 0xd9, 0xc4, + ], + [ + 0x0, 0x1e, 0x3c, 0x22, 0x78, 0x66, 0x44, 0x5a, 0xf0, 0xee, 0xcc, 0xd2, 0x88, 0x96, 0xb4, 0xaa, + 0xfd, 0xe3, 0xc1, 0xdf, 0x85, 0x9b, 0xb9, 0xa7, 0xd, 0x13, 0x31, 0x2f, 0x75, 0x6b, 0x49, 0x57, + 0xe7, 0xf9, 0xdb, 0xc5, 0x9f, 0x81, 0xa3, 0xbd, 0x17, 0x9, 0x2b, 0x35, 0x6f, 0x71, 0x53, 0x4d, + 0x1a, 0x4, 0x26, 0x38, 0x62, 0x7c, 0x5e, 0x40, 0xea, 0xf4, 0xd6, 0xc8, 0x92, 0x8c, 0xae, 0xb0, + 0xd3, 0xcd, 0xef, 0xf1, 0xab, 0xb5, 0x97, 0x89, 0x23, 0x3d, 0x1f, 0x1, 0x5b, 0x45, 0x67, 0x79, + 0x2e, 0x30, 0x12, 0xc, 0x56, 0x48, 0x6a, 0x74, 0xde, 0xc0, 0xe2, 0xfc, 0xa6, 0xb8, 0x9a, 0x84, + 0x34, 0x2a, 0x8, 0x16, 0x4c, 0x52, 0x70, 0x6e, 0xc4, 0xda, 0xf8, 0xe6, 0xbc, 0xa2, 0x80, 0x9e, + 0xc9, 0xd7, 0xf5, 0xeb, 0xb1, 0xaf, 0x8d, 0x93, 0x39, 0x27, 0x5, 0x1b, 0x41, 0x5f, 0x7d, 0x63, + 0xbb, 0xa5, 0x87, 0x99, 0xc3, 0xdd, 0xff, 0xe1, 0x4b, 0x55, 0x77, 0x69, 0x33, 0x2d, 0xf, 0x11, + 0x46, 0x58, 0x7a, 0x64, 0x3e, 0x20, 0x2, 0x1c, 0xb6, 0xa8, 0x8a, 0x94, 0xce, 0xd0, 0xf2, 0xec, + 0x5c, 0x42, 0x60, 0x7e, 0x24, 0x3a, 0x18, 0x6, 0xac, 0xb2, 0x90, 0x8e, 0xd4, 0xca, 0xe8, 0xf6, + 0xa1, 0xbf, 0x9d, 0x83, 0xd9, 0xc7, 0xe5, 0xfb, 0x51, 0x4f, 0x6d, 0x73, 0x29, 0x37, 0x15, 0xb, + 0x68, 0x76, 0x54, 0x4a, 0x10, 0xe, 0x2c, 0x32, 0x98, 0x86, 0xa4, 0xba, 0xe0, 0xfe, 0xdc, 0xc2, + 0x95, 0x8b, 0xa9, 0xb7, 0xed, 0xf3, 0xd1, 0xcf, 0x65, 0x7b, 0x59, 0x47, 0x1d, 0x3, 0x21, 0x3f, + 0x8f, 0x91, 0xb3, 0xad, 0xf7, 0xe9, 0xcb, 0xd5, 0x7f, 0x61, 0x43, 0x5d, 0x7, 0x19, 0x3b, 0x25, + 0x72, 0x6c, 0x4e, 0x50, 0xa, 0x14, 0x36, 0x28, 0x82, 0x9c, 0xbe, 0xa0, 0xfa, 0xe4, 0xc6, 0xd8, + ], + [ + 0x0, 0x1f, 0x3e, 0x21, 0x7c, 0x63, 0x42, 0x5d, 0xf8, 0xe7, 0xc6, 0xd9, 0x84, 0x9b, 0xba, 0xa5, + 0xed, 0xf2, 0xd3, 0xcc, 0x91, 0x8e, 0xaf, 0xb0, 0x15, 0xa, 0x2b, 0x34, 0x69, 0x76, 0x57, 0x48, + 0xc7, 0xd8, 0xf9, 0xe6, 0xbb, 0xa4, 0x85, 0x9a, 0x3f, 0x20, 0x1, 0x1e, 0x43, 0x5c, 0x7d, 0x62, + 0x2a, 0x35, 0x14, 0xb, 0x56, 0x49, 0x68, 0x77, 0xd2, 0xcd, 0xec, 0xf3, 0xae, 0xb1, 0x90, 0x8f, + 0x93, 0x8c, 0xad, 0xb2, 0xef, 0xf0, 0xd1, 0xce, 0x6b, 0x74, 0x55, 0x4a, 0x17, 0x8, 0x29, 0x36, + 0x7e, 0x61, 0x40, 0x5f, 0x2, 0x1d, 0x3c, 0x23, 0x86, 0x99, 0xb8, 0xa7, 0xfa, 0xe5, 0xc4, 0xdb, + 0x54, 0x4b, 0x6a, 0x75, 0x28, 0x37, 0x16, 0x9, 0xac, 0xb3, 0x92, 0x8d, 0xd0, 0xcf, 0xee, 0xf1, + 0xb9, 0xa6, 0x87, 0x98, 0xc5, 0xda, 0xfb, 0xe4, 0x41, 0x5e, 0x7f, 0x60, 0x3d, 0x22, 0x3, 0x1c, + 0x3b, 0x24, 0x5, 0x1a, 0x47, 0x58, 0x79, 0x66, 0xc3, 0xdc, 0xfd, 0xe2, 0xbf, 0xa0, 0x81, 0x9e, + 0xd6, 0xc9, 0xe8, 0xf7, 0xaa, 0xb5, 0x94, 0x8b, 0x2e, 0x31, 0x10, 0xf, 0x52, 0x4d, 0x6c, 0x73, + 0xfc, 0xe3, 0xc2, 0xdd, 0x80, 0x9f, 0xbe, 0xa1, 0x4, 0x1b, 0x3a, 0x25, 0x78, 0x67, 0x46, 0x59, + 0x11, 0xe, 0x2f, 0x30, 0x6d, 0x72, 0x53, 0x4c, 0xe9, 0xf6, 0xd7, 0xc8, 0x95, 0x8a, 0xab, 0xb4, + 0xa8, 0xb7, 0x96, 0x89, 0xd4, 0xcb, 0xea, 0xf5, 0x50, 0x4f, 0x6e, 0x71, 0x2c, 0x33, 0x12, 0xd, + 0x45, 0x5a, 0x7b, 0x64, 0x39, 0x26, 0x7, 0x18, 0xbd, 0xa2, 0x83, 0x9c, 0xc1, 0xde, 0xff, 0xe0, + 0x6f, 0x70, 0x51, 0x4e, 0x13, 0xc, 0x2d, 0x32, 0x97, 0x88, 0xa9, 0xb6, 0xeb, 0xf4, 0xd5, 0xca, + 0x82, 0x9d, 0xbc, 0xa3, 0xfe, 0xe1, 0xc0, 0xdf, 0x7a, 0x65, 0x44, 0x5b, 0x6, 0x19, 0x38, 0x27, + ], + [ + 0x0, 0x20, 0x40, 0x60, 0x80, 0xa0, 0xc0, 0xe0, 0x1d, 0x3d, 0x5d, 0x7d, 0x9d, 0xbd, 0xdd, 0xfd, + 0x3a, 0x1a, 0x7a, 0x5a, 0xba, 0x9a, 0xfa, 0xda, 0x27, 0x7, 0x67, 0x47, 0xa7, 0x87, 0xe7, 0xc7, + 0x74, 0x54, 0x34, 0x14, 0xf4, 0xd4, 0xb4, 0x94, 0x69, 0x49, 0x29, 0x9, 0xe9, 0xc9, 0xa9, 0x89, + 0x4e, 0x6e, 0xe, 0x2e, 0xce, 0xee, 0x8e, 0xae, 0x53, 0x73, 0x13, 0x33, 0xd3, 0xf3, 0x93, 0xb3, + 0xe8, 0xc8, 0xa8, 0x88, 0x68, 0x48, 0x28, 0x8, 0xf5, 0xd5, 0xb5, 0x95, 0x75, 0x55, 0x35, 0x15, + 0xd2, 0xf2, 0x92, 0xb2, 0x52, 0x72, 0x12, 0x32, 0xcf, 0xef, 0x8f, 0xaf, 0x4f, 0x6f, 0xf, 0x2f, + 0x9c, 0xbc, 0xdc, 0xfc, 0x1c, 0x3c, 0x5c, 0x7c, 0x81, 0xa1, 0xc1, 0xe1, 0x1, 0x21, 0x41, 0x61, + 0xa6, 0x86, 0xe6, 0xc6, 0x26, 0x6, 0x66, 0x46, 0xbb, 0x9b, 0xfb, 0xdb, 0x3b, 0x1b, 0x7b, 0x5b, + 0xcd, 0xed, 0x8d, 0xad, 0x4d, 0x6d, 0xd, 0x2d, 0xd0, 0xf0, 0x90, 0xb0, 0x50, 0x70, 0x10, 0x30, + 0xf7, 0xd7, 0xb7, 0x97, 0x77, 0x57, 0x37, 0x17, 0xea, 0xca, 0xaa, 0x8a, 0x6a, 0x4a, 0x2a, 0xa, + 0xb9, 0x99, 0xf9, 0xd9, 0x39, 0x19, 0x79, 0x59, 0xa4, 0x84, 0xe4, 0xc4, 0x24, 0x4, 0x64, 0x44, + 0x83, 0xa3, 0xc3, 0xe3, 0x3, 0x23, 0x43, 0x63, 0x9e, 0xbe, 0xde, 0xfe, 0x1e, 0x3e, 0x5e, 0x7e, + 0x25, 0x5, 0x65, 0x45, 0xa5, 0x85, 0xe5, 0xc5, 0x38, 0x18, 0x78, 0x58, 0xb8, 0x98, 0xf8, 0xd8, + 0x1f, 0x3f, 0x5f, 0x7f, 0x9f, 0xbf, 0xdf, 0xff, 0x2, 0x22, 0x42, 0x62, 0x82, 0xa2, 0xc2, 0xe2, + 0x51, 0x71, 0x11, 0x31, 0xd1, 0xf1, 0x91, 0xb1, 0x4c, 0x6c, 0xc, 0x2c, 0xcc, 0xec, 0x8c, 0xac, + 0x6b, 0x4b, 0x2b, 0xb, 0xeb, 0xcb, 0xab, 0x8b, 0x76, 0x56, 0x36, 0x16, 0xf6, 0xd6, 0xb6, 0x96, + ], + [ + 0x0, 0x21, 0x42, 0x63, 0x84, 0xa5, 0xc6, 0xe7, 0x15, 0x34, 0x57, 0x76, 0x91, 0xb0, 0xd3, 0xf2, + 0x2a, 0xb, 0x68, 0x49, 0xae, 0x8f, 0xec, 0xcd, 0x3f, 0x1e, 0x7d, 0x5c, 0xbb, 0x9a, 0xf9, 0xd8, + 0x54, 0x75, 0x16, 0x37, 0xd0, 0xf1, 0x92, 0xb3, 0x41, 0x60, 0x3, 0x22, 0xc5, 0xe4, 0x87, 0xa6, + 0x7e, 0x5f, 0x3c, 0x1d, 0xfa, 0xdb, 0xb8, 0x99, 0x6b, 0x4a, 0x29, 0x8, 0xef, 0xce, 0xad, 0x8c, + 0xa8, 0x89, 0xea, 0xcb, 0x2c, 0xd, 0x6e, 0x4f, 0xbd, 0x9c, 0xff, 0xde, 0x39, 0x18, 0x7b, 0x5a, + 0x82, 0xa3, 0xc0, 0xe1, 0x6, 0x27, 0x44, 0x65, 0x97, 0xb6, 0xd5, 0xf4, 0x13, 0x32, 0x51, 0x70, + 0xfc, 0xdd, 0xbe, 0x9f, 0x78, 0x59, 0x3a, 0x1b, 0xe9, 0xc8, 0xab, 0x8a, 0x6d, 0x4c, 0x2f, 0xe, + 0xd6, 0xf7, 0x94, 0xb5, 0x52, 0x73, 0x10, 0x31, 0xc3, 0xe2, 0x81, 0xa0, 0x47, 0x66, 0x5, 0x24, + 0x4d, 0x6c, 0xf, 0x2e, 0xc9, 0xe8, 0x8b, 0xaa, 0x58, 0x79, 0x1a, 0x3b, 0xdc, 0xfd, 0x9e, 0xbf, + 0x67, 0x46, 0x25, 0x4, 0xe3, 0xc2, 0xa1, 0x80, 0x72, 0x53, 0x30, 0x11, 0xf6, 0xd7, 0xb4, 0x95, + 0x19, 0x38, 0x5b, 0x7a, 0x9d, 0xbc, 0xdf, 0xfe, 0xc, 0x2d, 0x4e, 0x6f, 0x88, 0xa9, 0xca, 0xeb, + 0x33, 0x12, 0x71, 0x50, 0xb7, 0x96, 0xf5, 0xd4, 0x26, 0x7, 0x64, 0x45, 0xa2, 0x83, 0xe0, 0xc1, + 0xe5, 0xc4, 0xa7, 0x86, 0x61, 0x40, 0x23, 0x2, 0xf0, 0xd1, 0xb2, 0x93, 0x74, 0x55, 0x36, 0x17, + 0xcf, 0xee, 0x8d, 0xac, 0x4b, 0x6a, 0x9, 0x28, 0xda, 0xfb, 0x98, 0xb9, 0x5e, 0x7f, 0x1c, 0x3d, + 0xb1, 0x90, 0xf3, 0xd2, 0x35, 0x14, 0x77, 0x56, 0xa4, 0x85, 0xe6, 0xc7, 0x20, 0x1, 0x62, 0x43, + 0x9b, 0xba, 0xd9, 0xf8, 0x1f, 0x3e, 0x5d, 0x7c, 0x8e, 0xaf, 0xcc, 0xed, 0xa, 0x2b, 0x48, 0x69, + ], + [ + 0x0, 0x22, 0x44, 0x66, 0x88, 0xaa, 0xcc, 0xee, 0xd, 0x2f, 0x49, 0x6b, 0x85, 0xa7, 0xc1, 0xe3, + 0x1a, 0x38, 0x5e, 0x7c, 0x92, 0xb0, 0xd6, 0xf4, 0x17, 0x35, 0x53, 0x71, 0x9f, 0xbd, 0xdb, 0xf9, + 0x34, 0x16, 0x70, 0x52, 0xbc, 0x9e, 0xf8, 0xda, 0x39, 0x1b, 0x7d, 0x5f, 0xb1, 0x93, 0xf5, 0xd7, + 0x2e, 0xc, 0x6a, 0x48, 0xa6, 0x84, 0xe2, 0xc0, 0x23, 0x1, 0x67, 0x45, 0xab, 0x89, 0xef, 0xcd, + 0x68, 0x4a, 0x2c, 0xe, 0xe0, 0xc2, 0xa4, 0x86, 0x65, 0x47, 0x21, 0x3, 0xed, 0xcf, 0xa9, 0x8b, + 0x72, 0x50, 0x36, 0x14, 0xfa, 0xd8, 0xbe, 0x9c, 0x7f, 0x5d, 0x3b, 0x19, 0xf7, 0xd5, 0xb3, 0x91, + 0x5c, 0x7e, 0x18, 0x3a, 0xd4, 0xf6, 0x90, 0xb2, 0x51, 0x73, 0x15, 0x37, 0xd9, 0xfb, 0x9d, 0xbf, + 0x46, 0x64, 0x2, 0x20, 0xce, 0xec, 0x8a, 0xa8, 0x4b, 0x69, 0xf, 0x2d, 0xc3, 0xe1, 0x87, 0xa5, + 0xd0, 0xf2, 0x94, 0xb6, 0x58, 0x7a, 0x1c, 0x3e, 0xdd, 0xff, 0x99, 0xbb, 0x55, 0x77, 0x11, 0x33, + 0xca, 0xe8, 0x8e, 0xac, 0x42, 0x60, 0x6, 0x24, 0xc7, 0xe5, 0x83, 0xa1, 0x4f, 0x6d, 0xb, 0x29, + 0xe4, 0xc6, 0xa0, 0x82, 0x6c, 0x4e, 0x28, 0xa, 0xe9, 0xcb, 0xad, 0x8f, 0x61, 0x43, 0x25, 0x7, + 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0xf3, 0xd1, 0xb7, 0x95, 0x7b, 0x59, 0x3f, 0x1d, + 0xb8, 0x9a, 0xfc, 0xde, 0x30, 0x12, 0x74, 0x56, 0xb5, 0x97, 0xf1, 0xd3, 0x3d, 0x1f, 0x79, 0x5b, + 0xa2, 0x80, 0xe6, 0xc4, 0x2a, 0x8, 0x6e, 0x4c, 0xaf, 0x8d, 0xeb, 0xc9, 0x27, 0x5, 0x63, 0x41, + 0x8c, 0xae, 0xc8, 0xea, 0x4, 0x26, 0x40, 0x62, 0x81, 0xa3, 0xc5, 0xe7, 0x9, 0x2b, 0x4d, 0x6f, + 0x96, 0xb4, 0xd2, 0xf0, 0x1e, 0x3c, 0x5a, 0x78, 0x9b, 0xb9, 0xdf, 0xfd, 0x13, 0x31, 0x57, 0x75, + ], + [ + 0x0, 0x23, 0x46, 0x65, 0x8c, 0xaf, 0xca, 0xe9, 0x5, 0x26, 0x43, 0x60, 0x89, 0xaa, 0xcf, 0xec, + 0xa, 0x29, 0x4c, 0x6f, 0x86, 0xa5, 0xc0, 0xe3, 0xf, 0x2c, 0x49, 0x6a, 0x83, 0xa0, 0xc5, 0xe6, + 0x14, 0x37, 0x52, 0x71, 0x98, 0xbb, 0xde, 0xfd, 0x11, 0x32, 0x57, 0x74, 0x9d, 0xbe, 0xdb, 0xf8, + 0x1e, 0x3d, 0x58, 0x7b, 0x92, 0xb1, 0xd4, 0xf7, 0x1b, 0x38, 0x5d, 0x7e, 0x97, 0xb4, 0xd1, 0xf2, + 0x28, 0xb, 0x6e, 0x4d, 0xa4, 0x87, 0xe2, 0xc1, 0x2d, 0xe, 0x6b, 0x48, 0xa1, 0x82, 0xe7, 0xc4, + 0x22, 0x1, 0x64, 0x47, 0xae, 0x8d, 0xe8, 0xcb, 0x27, 0x4, 0x61, 0x42, 0xab, 0x88, 0xed, 0xce, + 0x3c, 0x1f, 0x7a, 0x59, 0xb0, 0x93, 0xf6, 0xd5, 0x39, 0x1a, 0x7f, 0x5c, 0xb5, 0x96, 0xf3, 0xd0, + 0x36, 0x15, 0x70, 0x53, 0xba, 0x99, 0xfc, 0xdf, 0x33, 0x10, 0x75, 0x56, 0xbf, 0x9c, 0xf9, 0xda, + 0x50, 0x73, 0x16, 0x35, 0xdc, 0xff, 0x9a, 0xb9, 0x55, 0x76, 0x13, 0x30, 0xd9, 0xfa, 0x9f, 0xbc, + 0x5a, 0x79, 0x1c, 0x3f, 0xd6, 0xf5, 0x90, 0xb3, 0x5f, 0x7c, 0x19, 0x3a, 0xd3, 0xf0, 0x95, 0xb6, + 0x44, 0x67, 0x2, 0x21, 0xc8, 0xeb, 0x8e, 0xad, 0x41, 0x62, 0x7, 0x24, 0xcd, 0xee, 0x8b, 0xa8, + 0x4e, 0x6d, 0x8, 0x2b, 0xc2, 0xe1, 0x84, 0xa7, 0x4b, 0x68, 0xd, 0x2e, 0xc7, 0xe4, 0x81, 0xa2, + 0x78, 0x5b, 0x3e, 0x1d, 0xf4, 0xd7, 0xb2, 0x91, 0x7d, 0x5e, 0x3b, 0x18, 0xf1, 0xd2, 0xb7, 0x94, + 0x72, 0x51, 0x34, 0x17, 0xfe, 0xdd, 0xb8, 0x9b, 0x77, 0x54, 0x31, 0x12, 0xfb, 0xd8, 0xbd, 0x9e, + 0x6c, 0x4f, 0x2a, 0x9, 0xe0, 0xc3, 0xa6, 0x85, 0x69, 0x4a, 0x2f, 0xc, 0xe5, 0xc6, 0xa3, 0x80, + 0x66, 0x45, 0x20, 0x3, 0xea, 0xc9, 0xac, 0x8f, 0x63, 0x40, 0x25, 0x6, 0xef, 0xcc, 0xa9, 0x8a, + ], + [ + 0x0, 0x24, 0x48, 0x6c, 0x90, 0xb4, 0xd8, 0xfc, 0x3d, 0x19, 0x75, 0x51, 0xad, 0x89, 0xe5, 0xc1, + 0x7a, 0x5e, 0x32, 0x16, 0xea, 0xce, 0xa2, 0x86, 0x47, 0x63, 0xf, 0x2b, 0xd7, 0xf3, 0x9f, 0xbb, + 0xf4, 0xd0, 0xbc, 0x98, 0x64, 0x40, 0x2c, 0x8, 0xc9, 0xed, 0x81, 0xa5, 0x59, 0x7d, 0x11, 0x35, + 0x8e, 0xaa, 0xc6, 0xe2, 0x1e, 0x3a, 0x56, 0x72, 0xb3, 0x97, 0xfb, 0xdf, 0x23, 0x7, 0x6b, 0x4f, + 0xf5, 0xd1, 0xbd, 0x99, 0x65, 0x41, 0x2d, 0x9, 0xc8, 0xec, 0x80, 0xa4, 0x58, 0x7c, 0x10, 0x34, + 0x8f, 0xab, 0xc7, 0xe3, 0x1f, 0x3b, 0x57, 0x73, 0xb2, 0x96, 0xfa, 0xde, 0x22, 0x6, 0x6a, 0x4e, + 0x1, 0x25, 0x49, 0x6d, 0x91, 0xb5, 0xd9, 0xfd, 0x3c, 0x18, 0x74, 0x50, 0xac, 0x88, 0xe4, 0xc0, + 0x7b, 0x5f, 0x33, 0x17, 0xeb, 0xcf, 0xa3, 0x87, 0x46, 0x62, 0xe, 0x2a, 0xd6, 0xf2, 0x9e, 0xba, + 0xf7, 0xd3, 0xbf, 0x9b, 0x67, 0x43, 0x2f, 0xb, 0xca, 0xee, 0x82, 0xa6, 0x5a, 0x7e, 0x12, 0x36, + 0x8d, 0xa9, 0xc5, 0xe1, 0x1d, 0x39, 0x55, 0x71, 0xb0, 0x94, 0xf8, 0xdc, 0x20, 0x4, 0x68, 0x4c, + 0x3, 0x27, 0x4b, 0x6f, 0x93, 0xb7, 0xdb, 0xff, 0x3e, 0x1a, 0x76, 0x52, 0xae, 0x8a, 0xe6, 0xc2, + 0x79, 0x5d, 0x31, 0x15, 0xe9, 0xcd, 0xa1, 0x85, 0x44, 0x60, 0xc, 0x28, 0xd4, 0xf0, 0x9c, 0xb8, + 0x2, 0x26, 0x4a, 0x6e, 0x92, 0xb6, 0xda, 0xfe, 0x3f, 0x1b, 0x77, 0x53, 0xaf, 0x8b, 0xe7, 0xc3, + 0x78, 0x5c, 0x30, 0x14, 0xe8, 0xcc, 0xa0, 0x84, 0x45, 0x61, 0xd, 0x29, 0xd5, 0xf1, 0x9d, 0xb9, + 0xf6, 0xd2, 0xbe, 0x9a, 0x66, 0x42, 0x2e, 0xa, 0xcb, 0xef, 0x83, 0xa7, 0x5b, 0x7f, 0x13, 0x37, + 0x8c, 0xa8, 0xc4, 0xe0, 0x1c, 0x38, 0x54, 0x70, 0xb1, 0x95, 0xf9, 0xdd, 0x21, 0x5, 0x69, 0x4d, + ], + [ + 0x0, 0x25, 0x4a, 0x6f, 0x94, 0xb1, 0xde, 0xfb, 0x35, 0x10, 0x7f, 0x5a, 0xa1, 0x84, 0xeb, 0xce, + 0x6a, 0x4f, 0x20, 0x5, 0xfe, 0xdb, 0xb4, 0x91, 0x5f, 0x7a, 0x15, 0x30, 0xcb, 0xee, 0x81, 0xa4, + 0xd4, 0xf1, 0x9e, 0xbb, 0x40, 0x65, 0xa, 0x2f, 0xe1, 0xc4, 0xab, 0x8e, 0x75, 0x50, 0x3f, 0x1a, + 0xbe, 0x9b, 0xf4, 0xd1, 0x2a, 0xf, 0x60, 0x45, 0x8b, 0xae, 0xc1, 0xe4, 0x1f, 0x3a, 0x55, 0x70, + 0xb5, 0x90, 0xff, 0xda, 0x21, 0x4, 0x6b, 0x4e, 0x80, 0xa5, 0xca, 0xef, 0x14, 0x31, 0x5e, 0x7b, + 0xdf, 0xfa, 0x95, 0xb0, 0x4b, 0x6e, 0x1, 0x24, 0xea, 0xcf, 0xa0, 0x85, 0x7e, 0x5b, 0x34, 0x11, + 0x61, 0x44, 0x2b, 0xe, 0xf5, 0xd0, 0xbf, 0x9a, 0x54, 0x71, 0x1e, 0x3b, 0xc0, 0xe5, 0x8a, 0xaf, + 0xb, 0x2e, 0x41, 0x64, 0x9f, 0xba, 0xd5, 0xf0, 0x3e, 0x1b, 0x74, 0x51, 0xaa, 0x8f, 0xe0, 0xc5, + 0x77, 0x52, 0x3d, 0x18, 0xe3, 0xc6, 0xa9, 0x8c, 0x42, 0x67, 0x8, 0x2d, 0xd6, 0xf3, 0x9c, 0xb9, + 0x1d, 0x38, 0x57, 0x72, 0x89, 0xac, 0xc3, 0xe6, 0x28, 0xd, 0x62, 0x47, 0xbc, 0x99, 0xf6, 0xd3, + 0xa3, 0x86, 0xe9, 0xcc, 0x37, 0x12, 0x7d, 0x58, 0x96, 0xb3, 0xdc, 0xf9, 0x2, 0x27, 0x48, 0x6d, + 0xc9, 0xec, 0x83, 0xa6, 0x5d, 0x78, 0x17, 0x32, 0xfc, 0xd9, 0xb6, 0x93, 0x68, 0x4d, 0x22, 0x7, + 0xc2, 0xe7, 0x88, 0xad, 0x56, 0x73, 0x1c, 0x39, 0xf7, 0xd2, 0xbd, 0x98, 0x63, 0x46, 0x29, 0xc, + 0xa8, 0x8d, 0xe2, 0xc7, 0x3c, 0x19, 0x76, 0x53, 0x9d, 0xb8, 0xd7, 0xf2, 0x9, 0x2c, 0x43, 0x66, + 0x16, 0x33, 0x5c, 0x79, 0x82, 0xa7, 0xc8, 0xed, 0x23, 0x6, 0x69, 0x4c, 0xb7, 0x92, 0xfd, 0xd8, + 0x7c, 0x59, 0x36, 0x13, 0xe8, 0xcd, 0xa2, 0x87, 0x49, 0x6c, 0x3, 0x26, 0xdd, 0xf8, 0x97, 0xb2, + ], + [ + 0x0, 0x26, 0x4c, 0x6a, 0x98, 0xbe, 0xd4, 0xf2, 0x2d, 0xb, 0x61, 0x47, 0xb5, 0x93, 0xf9, 0xdf, + 0x5a, 0x7c, 0x16, 0x30, 0xc2, 0xe4, 0x8e, 0xa8, 0x77, 0x51, 0x3b, 0x1d, 0xef, 0xc9, 0xa3, 0x85, + 0xb4, 0x92, 0xf8, 0xde, 0x2c, 0xa, 0x60, 0x46, 0x99, 0xbf, 0xd5, 0xf3, 0x1, 0x27, 0x4d, 0x6b, + 0xee, 0xc8, 0xa2, 0x84, 0x76, 0x50, 0x3a, 0x1c, 0xc3, 0xe5, 0x8f, 0xa9, 0x5b, 0x7d, 0x17, 0x31, + 0x75, 0x53, 0x39, 0x1f, 0xed, 0xcb, 0xa1, 0x87, 0x58, 0x7e, 0x14, 0x32, 0xc0, 0xe6, 0x8c, 0xaa, + 0x2f, 0x9, 0x63, 0x45, 0xb7, 0x91, 0xfb, 0xdd, 0x2, 0x24, 0x4e, 0x68, 0x9a, 0xbc, 0xd6, 0xf0, + 0xc1, 0xe7, 0x8d, 0xab, 0x59, 0x7f, 0x15, 0x33, 0xec, 0xca, 0xa0, 0x86, 0x74, 0x52, 0x38, 0x1e, + 0x9b, 0xbd, 0xd7, 0xf1, 0x3, 0x25, 0x4f, 0x69, 0xb6, 0x90, 0xfa, 0xdc, 0x2e, 0x8, 0x62, 0x44, + 0xea, 0xcc, 0xa6, 0x80, 0x72, 0x54, 0x3e, 0x18, 0xc7, 0xe1, 0x8b, 0xad, 0x5f, 0x79, 0x13, 0x35, + 0xb0, 0x96, 0xfc, 0xda, 0x28, 0xe, 0x64, 0x42, 0x9d, 0xbb, 0xd1, 0xf7, 0x5, 0x23, 0x49, 0x6f, + 0x5e, 0x78, 0x12, 0x34, 0xc6, 0xe0, 0x8a, 0xac, 0x73, 0x55, 0x3f, 0x19, 0xeb, 0xcd, 0xa7, 0x81, + 0x4, 0x22, 0x48, 0x6e, 0x9c, 0xba, 0xd0, 0xf6, 0x29, 0xf, 0x65, 0x43, 0xb1, 0x97, 0xfd, 0xdb, + 0x9f, 0xb9, 0xd3, 0xf5, 0x7, 0x21, 0x4b, 0x6d, 0xb2, 0x94, 0xfe, 0xd8, 0x2a, 0xc, 0x66, 0x40, + 0xc5, 0xe3, 0x89, 0xaf, 0x5d, 0x7b, 0x11, 0x37, 0xe8, 0xce, 0xa4, 0x82, 0x70, 0x56, 0x3c, 0x1a, + 0x2b, 0xd, 0x67, 0x41, 0xb3, 0x95, 0xff, 0xd9, 0x6, 0x20, 0x4a, 0x6c, 0x9e, 0xb8, 0xd2, 0xf4, + 0x71, 0x57, 0x3d, 0x1b, 0xe9, 0xcf, 0xa5, 0x83, 0x5c, 0x7a, 0x10, 0x36, 0xc4, 0xe2, 0x88, 0xae, + ], + [ + 0x0, 0x27, 0x4e, 0x69, 0x9c, 0xbb, 0xd2, 0xf5, 0x25, 0x2, 0x6b, 0x4c, 0xb9, 0x9e, 0xf7, 0xd0, + 0x4a, 0x6d, 0x4, 0x23, 0xd6, 0xf1, 0x98, 0xbf, 0x6f, 0x48, 0x21, 0x6, 0xf3, 0xd4, 0xbd, 0x9a, + 0x94, 0xb3, 0xda, 0xfd, 0x8, 0x2f, 0x46, 0x61, 0xb1, 0x96, 0xff, 0xd8, 0x2d, 0xa, 0x63, 0x44, + 0xde, 0xf9, 0x90, 0xb7, 0x42, 0x65, 0xc, 0x2b, 0xfb, 0xdc, 0xb5, 0x92, 0x67, 0x40, 0x29, 0xe, + 0x35, 0x12, 0x7b, 0x5c, 0xa9, 0x8e, 0xe7, 0xc0, 0x10, 0x37, 0x5e, 0x79, 0x8c, 0xab, 0xc2, 0xe5, + 0x7f, 0x58, 0x31, 0x16, 0xe3, 0xc4, 0xad, 0x8a, 0x5a, 0x7d, 0x14, 0x33, 0xc6, 0xe1, 0x88, 0xaf, + 0xa1, 0x86, 0xef, 0xc8, 0x3d, 0x1a, 0x73, 0x54, 0x84, 0xa3, 0xca, 0xed, 0x18, 0x3f, 0x56, 0x71, + 0xeb, 0xcc, 0xa5, 0x82, 0x77, 0x50, 0x39, 0x1e, 0xce, 0xe9, 0x80, 0xa7, 0x52, 0x75, 0x1c, 0x3b, + 0x6a, 0x4d, 0x24, 0x3, 0xf6, 0xd1, 0xb8, 0x9f, 0x4f, 0x68, 0x1, 0x26, 0xd3, 0xf4, 0x9d, 0xba, + 0x20, 0x7, 0x6e, 0x49, 0xbc, 0x9b, 0xf2, 0xd5, 0x5, 0x22, 0x4b, 0x6c, 0x99, 0xbe, 0xd7, 0xf0, + 0xfe, 0xd9, 0xb0, 0x97, 0x62, 0x45, 0x2c, 0xb, 0xdb, 0xfc, 0x95, 0xb2, 0x47, 0x60, 0x9, 0x2e, + 0xb4, 0x93, 0xfa, 0xdd, 0x28, 0xf, 0x66, 0x41, 0x91, 0xb6, 0xdf, 0xf8, 0xd, 0x2a, 0x43, 0x64, + 0x5f, 0x78, 0x11, 0x36, 0xc3, 0xe4, 0x8d, 0xaa, 0x7a, 0x5d, 0x34, 0x13, 0xe6, 0xc1, 0xa8, 0x8f, + 0x15, 0x32, 0x5b, 0x7c, 0x89, 0xae, 0xc7, 0xe0, 0x30, 0x17, 0x7e, 0x59, 0xac, 0x8b, 0xe2, 0xc5, + 0xcb, 0xec, 0x85, 0xa2, 0x57, 0x70, 0x19, 0x3e, 0xee, 0xc9, 0xa0, 0x87, 0x72, 0x55, 0x3c, 0x1b, + 0x81, 0xa6, 0xcf, 0xe8, 0x1d, 0x3a, 0x53, 0x74, 0xa4, 0x83, 0xea, 0xcd, 0x38, 0x1f, 0x76, 0x51, + ], + [ + 0x0, 0x28, 0x50, 0x78, 0xa0, 0x88, 0xf0, 0xd8, 0x5d, 0x75, 0xd, 0x25, 0xfd, 0xd5, 0xad, 0x85, + 0xba, 0x92, 0xea, 0xc2, 0x1a, 0x32, 0x4a, 0x62, 0xe7, 0xcf, 0xb7, 0x9f, 0x47, 0x6f, 0x17, 0x3f, + 0x69, 0x41, 0x39, 0x11, 0xc9, 0xe1, 0x99, 0xb1, 0x34, 0x1c, 0x64, 0x4c, 0x94, 0xbc, 0xc4, 0xec, + 0xd3, 0xfb, 0x83, 0xab, 0x73, 0x5b, 0x23, 0xb, 0x8e, 0xa6, 0xde, 0xf6, 0x2e, 0x6, 0x7e, 0x56, + 0xd2, 0xfa, 0x82, 0xaa, 0x72, 0x5a, 0x22, 0xa, 0x8f, 0xa7, 0xdf, 0xf7, 0x2f, 0x7, 0x7f, 0x57, + 0x68, 0x40, 0x38, 0x10, 0xc8, 0xe0, 0x98, 0xb0, 0x35, 0x1d, 0x65, 0x4d, 0x95, 0xbd, 0xc5, 0xed, + 0xbb, 0x93, 0xeb, 0xc3, 0x1b, 0x33, 0x4b, 0x63, 0xe6, 0xce, 0xb6, 0x9e, 0x46, 0x6e, 0x16, 0x3e, + 0x1, 0x29, 0x51, 0x79, 0xa1, 0x89, 0xf1, 0xd9, 0x5c, 0x74, 0xc, 0x24, 0xfc, 0xd4, 0xac, 0x84, + 0xb9, 0x91, 0xe9, 0xc1, 0x19, 0x31, 0x49, 0x61, 0xe4, 0xcc, 0xb4, 0x9c, 0x44, 0x6c, 0x14, 0x3c, + 0x3, 0x2b, 0x53, 0x7b, 0xa3, 0x8b, 0xf3, 0xdb, 0x5e, 0x76, 0xe, 0x26, 0xfe, 0xd6, 0xae, 0x86, + 0xd0, 0xf8, 0x80, 0xa8, 0x70, 0x58, 0x20, 0x8, 0x8d, 0xa5, 0xdd, 0xf5, 0x2d, 0x5, 0x7d, 0x55, + 0x6a, 0x42, 0x3a, 0x12, 0xca, 0xe2, 0x9a, 0xb2, 0x37, 0x1f, 0x67, 0x4f, 0x97, 0xbf, 0xc7, 0xef, + 0x6b, 0x43, 0x3b, 0x13, 0xcb, 0xe3, 0x9b, 0xb3, 0x36, 0x1e, 0x66, 0x4e, 0x96, 0xbe, 0xc6, 0xee, + 0xd1, 0xf9, 0x81, 0xa9, 0x71, 0x59, 0x21, 0x9, 0x8c, 0xa4, 0xdc, 0xf4, 0x2c, 0x4, 0x7c, 0x54, + 0x2, 0x2a, 0x52, 0x7a, 0xa2, 0x8a, 0xf2, 0xda, 0x5f, 0x77, 0xf, 0x27, 0xff, 0xd7, 0xaf, 0x87, + 0xb8, 0x90, 0xe8, 0xc0, 0x18, 0x30, 0x48, 0x60, 0xe5, 0xcd, 0xb5, 0x9d, 0x45, 0x6d, 0x15, 0x3d, + ], + [ + 0x0, 0x29, 0x52, 0x7b, 0xa4, 0x8d, 0xf6, 0xdf, 0x55, 0x7c, 0x7, 0x2e, 0xf1, 0xd8, 0xa3, 0x8a, + 0xaa, 0x83, 0xf8, 0xd1, 0xe, 0x27, 0x5c, 0x75, 0xff, 0xd6, 0xad, 0x84, 0x5b, 0x72, 0x9, 0x20, + 0x49, 0x60, 0x1b, 0x32, 0xed, 0xc4, 0xbf, 0x96, 0x1c, 0x35, 0x4e, 0x67, 0xb8, 0x91, 0xea, 0xc3, + 0xe3, 0xca, 0xb1, 0x98, 0x47, 0x6e, 0x15, 0x3c, 0xb6, 0x9f, 0xe4, 0xcd, 0x12, 0x3b, 0x40, 0x69, + 0x92, 0xbb, 0xc0, 0xe9, 0x36, 0x1f, 0x64, 0x4d, 0xc7, 0xee, 0x95, 0xbc, 0x63, 0x4a, 0x31, 0x18, + 0x38, 0x11, 0x6a, 0x43, 0x9c, 0xb5, 0xce, 0xe7, 0x6d, 0x44, 0x3f, 0x16, 0xc9, 0xe0, 0x9b, 0xb2, + 0xdb, 0xf2, 0x89, 0xa0, 0x7f, 0x56, 0x2d, 0x4, 0x8e, 0xa7, 0xdc, 0xf5, 0x2a, 0x3, 0x78, 0x51, + 0x71, 0x58, 0x23, 0xa, 0xd5, 0xfc, 0x87, 0xae, 0x24, 0xd, 0x76, 0x5f, 0x80, 0xa9, 0xd2, 0xfb, + 0x39, 0x10, 0x6b, 0x42, 0x9d, 0xb4, 0xcf, 0xe6, 0x6c, 0x45, 0x3e, 0x17, 0xc8, 0xe1, 0x9a, 0xb3, + 0x93, 0xba, 0xc1, 0xe8, 0x37, 0x1e, 0x65, 0x4c, 0xc6, 0xef, 0x94, 0xbd, 0x62, 0x4b, 0x30, 0x19, + 0x70, 0x59, 0x22, 0xb, 0xd4, 0xfd, 0x86, 0xaf, 0x25, 0xc, 0x77, 0x5e, 0x81, 0xa8, 0xd3, 0xfa, + 0xda, 0xf3, 0x88, 0xa1, 0x7e, 0x57, 0x2c, 0x5, 0x8f, 0xa6, 0xdd, 0xf4, 0x2b, 0x2, 0x79, 0x50, + 0xab, 0x82, 0xf9, 0xd0, 0xf, 0x26, 0x5d, 0x74, 0xfe, 0xd7, 0xac, 0x85, 0x5a, 0x73, 0x8, 0x21, + 0x1, 0x28, 0x53, 0x7a, 0xa5, 0x8c, 0xf7, 0xde, 0x54, 0x7d, 0x6, 0x2f, 0xf0, 0xd9, 0xa2, 0x8b, + 0xe2, 0xcb, 0xb0, 0x99, 0x46, 0x6f, 0x14, 0x3d, 0xb7, 0x9e, 0xe5, 0xcc, 0x13, 0x3a, 0x41, 0x68, + 0x48, 0x61, 0x1a, 0x33, 0xec, 0xc5, 0xbe, 0x97, 0x1d, 0x34, 0x4f, 0x66, 0xb9, 0x90, 0xeb, 0xc2, + ], + [ + 0x0, 0x2a, 0x54, 0x7e, 0xa8, 0x82, 0xfc, 0xd6, 0x4d, 0x67, 0x19, 0x33, 0xe5, 0xcf, 0xb1, 0x9b, + 0x9a, 0xb0, 0xce, 0xe4, 0x32, 0x18, 0x66, 0x4c, 0xd7, 0xfd, 0x83, 0xa9, 0x7f, 0x55, 0x2b, 0x1, + 0x29, 0x3, 0x7d, 0x57, 0x81, 0xab, 0xd5, 0xff, 0x64, 0x4e, 0x30, 0x1a, 0xcc, 0xe6, 0x98, 0xb2, + 0xb3, 0x99, 0xe7, 0xcd, 0x1b, 0x31, 0x4f, 0x65, 0xfe, 0xd4, 0xaa, 0x80, 0x56, 0x7c, 0x2, 0x28, + 0x52, 0x78, 0x6, 0x2c, 0xfa, 0xd0, 0xae, 0x84, 0x1f, 0x35, 0x4b, 0x61, 0xb7, 0x9d, 0xe3, 0xc9, + 0xc8, 0xe2, 0x9c, 0xb6, 0x60, 0x4a, 0x34, 0x1e, 0x85, 0xaf, 0xd1, 0xfb, 0x2d, 0x7, 0x79, 0x53, + 0x7b, 0x51, 0x2f, 0x5, 0xd3, 0xf9, 0x87, 0xad, 0x36, 0x1c, 0x62, 0x48, 0x9e, 0xb4, 0xca, 0xe0, + 0xe1, 0xcb, 0xb5, 0x9f, 0x49, 0x63, 0x1d, 0x37, 0xac, 0x86, 0xf8, 0xd2, 0x4, 0x2e, 0x50, 0x7a, + 0xa4, 0x8e, 0xf0, 0xda, 0xc, 0x26, 0x58, 0x72, 0xe9, 0xc3, 0xbd, 0x97, 0x41, 0x6b, 0x15, 0x3f, + 0x3e, 0x14, 0x6a, 0x40, 0x96, 0xbc, 0xc2, 0xe8, 0x73, 0x59, 0x27, 0xd, 0xdb, 0xf1, 0x8f, 0xa5, + 0x8d, 0xa7, 0xd9, 0xf3, 0x25, 0xf, 0x71, 0x5b, 0xc0, 0xea, 0x94, 0xbe, 0x68, 0x42, 0x3c, 0x16, + 0x17, 0x3d, 0x43, 0x69, 0xbf, 0x95, 0xeb, 0xc1, 0x5a, 0x70, 0xe, 0x24, 0xf2, 0xd8, 0xa6, 0x8c, + 0xf6, 0xdc, 0xa2, 0x88, 0x5e, 0x74, 0xa, 0x20, 0xbb, 0x91, 0xef, 0xc5, 0x13, 0x39, 0x47, 0x6d, + 0x6c, 0x46, 0x38, 0x12, 0xc4, 0xee, 0x90, 0xba, 0x21, 0xb, 0x75, 0x5f, 0x89, 0xa3, 0xdd, 0xf7, + 0xdf, 0xf5, 0x8b, 0xa1, 0x77, 0x5d, 0x23, 0x9, 0x92, 0xb8, 0xc6, 0xec, 0x3a, 0x10, 0x6e, 0x44, + 0x45, 0x6f, 0x11, 0x3b, 0xed, 0xc7, 0xb9, 0x93, 0x8, 0x22, 0x5c, 0x76, 0xa0, 0x8a, 0xf4, 0xde, + ], + [ + 0x0, 0x2b, 0x56, 0x7d, 0xac, 0x87, 0xfa, 0xd1, 0x45, 0x6e, 0x13, 0x38, 0xe9, 0xc2, 0xbf, 0x94, + 0x8a, 0xa1, 0xdc, 0xf7, 0x26, 0xd, 0x70, 0x5b, 0xcf, 0xe4, 0x99, 0xb2, 0x63, 0x48, 0x35, 0x1e, + 0x9, 0x22, 0x5f, 0x74, 0xa5, 0x8e, 0xf3, 0xd8, 0x4c, 0x67, 0x1a, 0x31, 0xe0, 0xcb, 0xb6, 0x9d, + 0x83, 0xa8, 0xd5, 0xfe, 0x2f, 0x4, 0x79, 0x52, 0xc6, 0xed, 0x90, 0xbb, 0x6a, 0x41, 0x3c, 0x17, + 0x12, 0x39, 0x44, 0x6f, 0xbe, 0x95, 0xe8, 0xc3, 0x57, 0x7c, 0x1, 0x2a, 0xfb, 0xd0, 0xad, 0x86, + 0x98, 0xb3, 0xce, 0xe5, 0x34, 0x1f, 0x62, 0x49, 0xdd, 0xf6, 0x8b, 0xa0, 0x71, 0x5a, 0x27, 0xc, + 0x1b, 0x30, 0x4d, 0x66, 0xb7, 0x9c, 0xe1, 0xca, 0x5e, 0x75, 0x8, 0x23, 0xf2, 0xd9, 0xa4, 0x8f, + 0x91, 0xba, 0xc7, 0xec, 0x3d, 0x16, 0x6b, 0x40, 0xd4, 0xff, 0x82, 0xa9, 0x78, 0x53, 0x2e, 0x5, + 0x24, 0xf, 0x72, 0x59, 0x88, 0xa3, 0xde, 0xf5, 0x61, 0x4a, 0x37, 0x1c, 0xcd, 0xe6, 0x9b, 0xb0, + 0xae, 0x85, 0xf8, 0xd3, 0x2, 0x29, 0x54, 0x7f, 0xeb, 0xc0, 0xbd, 0x96, 0x47, 0x6c, 0x11, 0x3a, + 0x2d, 0x6, 0x7b, 0x50, 0x81, 0xaa, 0xd7, 0xfc, 0x68, 0x43, 0x3e, 0x15, 0xc4, 0xef, 0x92, 0xb9, + 0xa7, 0x8c, 0xf1, 0xda, 0xb, 0x20, 0x5d, 0x76, 0xe2, 0xc9, 0xb4, 0x9f, 0x4e, 0x65, 0x18, 0x33, + 0x36, 0x1d, 0x60, 0x4b, 0x9a, 0xb1, 0xcc, 0xe7, 0x73, 0x58, 0x25, 0xe, 0xdf, 0xf4, 0x89, 0xa2, + 0xbc, 0x97, 0xea, 0xc1, 0x10, 0x3b, 0x46, 0x6d, 0xf9, 0xd2, 0xaf, 0x84, 0x55, 0x7e, 0x3, 0x28, + 0x3f, 0x14, 0x69, 0x42, 0x93, 0xb8, 0xc5, 0xee, 0x7a, 0x51, 0x2c, 0x7, 0xd6, 0xfd, 0x80, 0xab, + 0xb5, 0x9e, 0xe3, 0xc8, 0x19, 0x32, 0x4f, 0x64, 0xf0, 0xdb, 0xa6, 0x8d, 0x5c, 0x77, 0xa, 0x21, + ], + [ + 0x0, 0x2c, 0x58, 0x74, 0xb0, 0x9c, 0xe8, 0xc4, 0x7d, 0x51, 0x25, 0x9, 0xcd, 0xe1, 0x95, 0xb9, + 0xfa, 0xd6, 0xa2, 0x8e, 0x4a, 0x66, 0x12, 0x3e, 0x87, 0xab, 0xdf, 0xf3, 0x37, 0x1b, 0x6f, 0x43, + 0xe9, 0xc5, 0xb1, 0x9d, 0x59, 0x75, 0x1, 0x2d, 0x94, 0xb8, 0xcc, 0xe0, 0x24, 0x8, 0x7c, 0x50, + 0x13, 0x3f, 0x4b, 0x67, 0xa3, 0x8f, 0xfb, 0xd7, 0x6e, 0x42, 0x36, 0x1a, 0xde, 0xf2, 0x86, 0xaa, + 0xcf, 0xe3, 0x97, 0xbb, 0x7f, 0x53, 0x27, 0xb, 0xb2, 0x9e, 0xea, 0xc6, 0x2, 0x2e, 0x5a, 0x76, + 0x35, 0x19, 0x6d, 0x41, 0x85, 0xa9, 0xdd, 0xf1, 0x48, 0x64, 0x10, 0x3c, 0xf8, 0xd4, 0xa0, 0x8c, + 0x26, 0xa, 0x7e, 0x52, 0x96, 0xba, 0xce, 0xe2, 0x5b, 0x77, 0x3, 0x2f, 0xeb, 0xc7, 0xb3, 0x9f, + 0xdc, 0xf0, 0x84, 0xa8, 0x6c, 0x40, 0x34, 0x18, 0xa1, 0x8d, 0xf9, 0xd5, 0x11, 0x3d, 0x49, 0x65, + 0x83, 0xaf, 0xdb, 0xf7, 0x33, 0x1f, 0x6b, 0x47, 0xfe, 0xd2, 0xa6, 0x8a, 0x4e, 0x62, 0x16, 0x3a, + 0x79, 0x55, 0x21, 0xd, 0xc9, 0xe5, 0x91, 0xbd, 0x4, 0x28, 0x5c, 0x70, 0xb4, 0x98, 0xec, 0xc0, + 0x6a, 0x46, 0x32, 0x1e, 0xda, 0xf6, 0x82, 0xae, 0x17, 0x3b, 0x4f, 0x63, 0xa7, 0x8b, 0xff, 0xd3, + 0x90, 0xbc, 0xc8, 0xe4, 0x20, 0xc, 0x78, 0x54, 0xed, 0xc1, 0xb5, 0x99, 0x5d, 0x71, 0x5, 0x29, + 0x4c, 0x60, 0x14, 0x38, 0xfc, 0xd0, 0xa4, 0x88, 0x31, 0x1d, 0x69, 0x45, 0x81, 0xad, 0xd9, 0xf5, + 0xb6, 0x9a, 0xee, 0xc2, 0x6, 0x2a, 0x5e, 0x72, 0xcb, 0xe7, 0x93, 0xbf, 0x7b, 0x57, 0x23, 0xf, + 0xa5, 0x89, 0xfd, 0xd1, 0x15, 0x39, 0x4d, 0x61, 0xd8, 0xf4, 0x80, 0xac, 0x68, 0x44, 0x30, 0x1c, + 0x5f, 0x73, 0x7, 0x2b, 0xef, 0xc3, 0xb7, 0x9b, 0x22, 0xe, 0x7a, 0x56, 0x92, 0xbe, 0xca, 0xe6, + ], + [ + 0x0, 0x2d, 0x5a, 0x77, 0xb4, 0x99, 0xee, 0xc3, 0x75, 0x58, 0x2f, 0x2, 0xc1, 0xec, 0x9b, 0xb6, + 0xea, 0xc7, 0xb0, 0x9d, 0x5e, 0x73, 0x4, 0x29, 0x9f, 0xb2, 0xc5, 0xe8, 0x2b, 0x6, 0x71, 0x5c, + 0xc9, 0xe4, 0x93, 0xbe, 0x7d, 0x50, 0x27, 0xa, 0xbc, 0x91, 0xe6, 0xcb, 0x8, 0x25, 0x52, 0x7f, + 0x23, 0xe, 0x79, 0x54, 0x97, 0xba, 0xcd, 0xe0, 0x56, 0x7b, 0xc, 0x21, 0xe2, 0xcf, 0xb8, 0x95, + 0x8f, 0xa2, 0xd5, 0xf8, 0x3b, 0x16, 0x61, 0x4c, 0xfa, 0xd7, 0xa0, 0x8d, 0x4e, 0x63, 0x14, 0x39, + 0x65, 0x48, 0x3f, 0x12, 0xd1, 0xfc, 0x8b, 0xa6, 0x10, 0x3d, 0x4a, 0x67, 0xa4, 0x89, 0xfe, 0xd3, + 0x46, 0x6b, 0x1c, 0x31, 0xf2, 0xdf, 0xa8, 0x85, 0x33, 0x1e, 0x69, 0x44, 0x87, 0xaa, 0xdd, 0xf0, + 0xac, 0x81, 0xf6, 0xdb, 0x18, 0x35, 0x42, 0x6f, 0xd9, 0xf4, 0x83, 0xae, 0x6d, 0x40, 0x37, 0x1a, + 0x3, 0x2e, 0x59, 0x74, 0xb7, 0x9a, 0xed, 0xc0, 0x76, 0x5b, 0x2c, 0x1, 0xc2, 0xef, 0x98, 0xb5, + 0xe9, 0xc4, 0xb3, 0x9e, 0x5d, 0x70, 0x7, 0x2a, 0x9c, 0xb1, 0xc6, 0xeb, 0x28, 0x5, 0x72, 0x5f, + 0xca, 0xe7, 0x90, 0xbd, 0x7e, 0x53, 0x24, 0x9, 0xbf, 0x92, 0xe5, 0xc8, 0xb, 0x26, 0x51, 0x7c, + 0x20, 0xd, 0x7a, 0x57, 0x94, 0xb9, 0xce, 0xe3, 0x55, 0x78, 0xf, 0x22, 0xe1, 0xcc, 0xbb, 0x96, + 0x8c, 0xa1, 0xd6, 0xfb, 0x38, 0x15, 0x62, 0x4f, 0xf9, 0xd4, 0xa3, 0x8e, 0x4d, 0x60, 0x17, 0x3a, + 0x66, 0x4b, 0x3c, 0x11, 0xd2, 0xff, 0x88, 0xa5, 0x13, 0x3e, 0x49, 0x64, 0xa7, 0x8a, 0xfd, 0xd0, + 0x45, 0x68, 0x1f, 0x32, 0xf1, 0xdc, 0xab, 0x86, 0x30, 0x1d, 0x6a, 0x47, 0x84, 0xa9, 0xde, 0xf3, + 0xaf, 0x82, 0xf5, 0xd8, 0x1b, 0x36, 0x41, 0x6c, 0xda, 0xf7, 0x80, 0xad, 0x6e, 0x43, 0x34, 0x19, + ], + [ + 0x0, 0x2e, 0x5c, 0x72, 0xb8, 0x96, 0xe4, 0xca, 0x6d, 0x43, 0x31, 0x1f, 0xd5, 0xfb, 0x89, 0xa7, + 0xda, 0xf4, 0x86, 0xa8, 0x62, 0x4c, 0x3e, 0x10, 0xb7, 0x99, 0xeb, 0xc5, 0xf, 0x21, 0x53, 0x7d, + 0xa9, 0x87, 0xf5, 0xdb, 0x11, 0x3f, 0x4d, 0x63, 0xc4, 0xea, 0x98, 0xb6, 0x7c, 0x52, 0x20, 0xe, + 0x73, 0x5d, 0x2f, 0x1, 0xcb, 0xe5, 0x97, 0xb9, 0x1e, 0x30, 0x42, 0x6c, 0xa6, 0x88, 0xfa, 0xd4, + 0x4f, 0x61, 0x13, 0x3d, 0xf7, 0xd9, 0xab, 0x85, 0x22, 0xc, 0x7e, 0x50, 0x9a, 0xb4, 0xc6, 0xe8, + 0x95, 0xbb, 0xc9, 0xe7, 0x2d, 0x3, 0x71, 0x5f, 0xf8, 0xd6, 0xa4, 0x8a, 0x40, 0x6e, 0x1c, 0x32, + 0xe6, 0xc8, 0xba, 0x94, 0x5e, 0x70, 0x2, 0x2c, 0x8b, 0xa5, 0xd7, 0xf9, 0x33, 0x1d, 0x6f, 0x41, + 0x3c, 0x12, 0x60, 0x4e, 0x84, 0xaa, 0xd8, 0xf6, 0x51, 0x7f, 0xd, 0x23, 0xe9, 0xc7, 0xb5, 0x9b, + 0x9e, 0xb0, 0xc2, 0xec, 0x26, 0x8, 0x7a, 0x54, 0xf3, 0xdd, 0xaf, 0x81, 0x4b, 0x65, 0x17, 0x39, + 0x44, 0x6a, 0x18, 0x36, 0xfc, 0xd2, 0xa0, 0x8e, 0x29, 0x7, 0x75, 0x5b, 0x91, 0xbf, 0xcd, 0xe3, + 0x37, 0x19, 0x6b, 0x45, 0x8f, 0xa1, 0xd3, 0xfd, 0x5a, 0x74, 0x6, 0x28, 0xe2, 0xcc, 0xbe, 0x90, + 0xed, 0xc3, 0xb1, 0x9f, 0x55, 0x7b, 0x9, 0x27, 0x80, 0xae, 0xdc, 0xf2, 0x38, 0x16, 0x64, 0x4a, + 0xd1, 0xff, 0x8d, 0xa3, 0x69, 0x47, 0x35, 0x1b, 0xbc, 0x92, 0xe0, 0xce, 0x4, 0x2a, 0x58, 0x76, + 0xb, 0x25, 0x57, 0x79, 0xb3, 0x9d, 0xef, 0xc1, 0x66, 0x48, 0x3a, 0x14, 0xde, 0xf0, 0x82, 0xac, + 0x78, 0x56, 0x24, 0xa, 0xc0, 0xee, 0x9c, 0xb2, 0x15, 0x3b, 0x49, 0x67, 0xad, 0x83, 0xf1, 0xdf, + 0xa2, 0x8c, 0xfe, 0xd0, 0x1a, 0x34, 0x46, 0x68, 0xcf, 0xe1, 0x93, 0xbd, 0x77, 0x59, 0x2b, 0x5, + ], + [ + 0x0, 0x2f, 0x5e, 0x71, 0xbc, 0x93, 0xe2, 0xcd, 0x65, 0x4a, 0x3b, 0x14, 0xd9, 0xf6, 0x87, 0xa8, + 0xca, 0xe5, 0x94, 0xbb, 0x76, 0x59, 0x28, 0x7, 0xaf, 0x80, 0xf1, 0xde, 0x13, 0x3c, 0x4d, 0x62, + 0x89, 0xa6, 0xd7, 0xf8, 0x35, 0x1a, 0x6b, 0x44, 0xec, 0xc3, 0xb2, 0x9d, 0x50, 0x7f, 0xe, 0x21, + 0x43, 0x6c, 0x1d, 0x32, 0xff, 0xd0, 0xa1, 0x8e, 0x26, 0x9, 0x78, 0x57, 0x9a, 0xb5, 0xc4, 0xeb, + 0xf, 0x20, 0x51, 0x7e, 0xb3, 0x9c, 0xed, 0xc2, 0x6a, 0x45, 0x34, 0x1b, 0xd6, 0xf9, 0x88, 0xa7, + 0xc5, 0xea, 0x9b, 0xb4, 0x79, 0x56, 0x27, 0x8, 0xa0, 0x8f, 0xfe, 0xd1, 0x1c, 0x33, 0x42, 0x6d, + 0x86, 0xa9, 0xd8, 0xf7, 0x3a, 0x15, 0x64, 0x4b, 0xe3, 0xcc, 0xbd, 0x92, 0x5f, 0x70, 0x1, 0x2e, + 0x4c, 0x63, 0x12, 0x3d, 0xf0, 0xdf, 0xae, 0x81, 0x29, 0x6, 0x77, 0x58, 0x95, 0xba, 0xcb, 0xe4, + 0x1e, 0x31, 0x40, 0x6f, 0xa2, 0x8d, 0xfc, 0xd3, 0x7b, 0x54, 0x25, 0xa, 0xc7, 0xe8, 0x99, 0xb6, + 0xd4, 0xfb, 0x8a, 0xa5, 0x68, 0x47, 0x36, 0x19, 0xb1, 0x9e, 0xef, 0xc0, 0xd, 0x22, 0x53, 0x7c, + 0x97, 0xb8, 0xc9, 0xe6, 0x2b, 0x4, 0x75, 0x5a, 0xf2, 0xdd, 0xac, 0x83, 0x4e, 0x61, 0x10, 0x3f, + 0x5d, 0x72, 0x3, 0x2c, 0xe1, 0xce, 0xbf, 0x90, 0x38, 0x17, 0x66, 0x49, 0x84, 0xab, 0xda, 0xf5, + 0x11, 0x3e, 0x4f, 0x60, 0xad, 0x82, 0xf3, 0xdc, 0x74, 0x5b, 0x2a, 0x5, 0xc8, 0xe7, 0x96, 0xb9, + 0xdb, 0xf4, 0x85, 0xaa, 0x67, 0x48, 0x39, 0x16, 0xbe, 0x91, 0xe0, 0xcf, 0x2, 0x2d, 0x5c, 0x73, + 0x98, 0xb7, 0xc6, 0xe9, 0x24, 0xb, 0x7a, 0x55, 0xfd, 0xd2, 0xa3, 0x8c, 0x41, 0x6e, 0x1f, 0x30, + 0x52, 0x7d, 0xc, 0x23, 0xee, 0xc1, 0xb0, 0x9f, 0x37, 0x18, 0x69, 0x46, 0x8b, 0xa4, 0xd5, 0xfa, + ], + [ + 0x0, 0x30, 0x60, 0x50, 0xc0, 0xf0, 0xa0, 0x90, 0x9d, 0xad, 0xfd, 0xcd, 0x5d, 0x6d, 0x3d, 0xd, + 0x27, 0x17, 0x47, 0x77, 0xe7, 0xd7, 0x87, 0xb7, 0xba, 0x8a, 0xda, 0xea, 0x7a, 0x4a, 0x1a, 0x2a, + 0x4e, 0x7e, 0x2e, 0x1e, 0x8e, 0xbe, 0xee, 0xde, 0xd3, 0xe3, 0xb3, 0x83, 0x13, 0x23, 0x73, 0x43, + 0x69, 0x59, 0x9, 0x39, 0xa9, 0x99, 0xc9, 0xf9, 0xf4, 0xc4, 0x94, 0xa4, 0x34, 0x4, 0x54, 0x64, + 0x9c, 0xac, 0xfc, 0xcc, 0x5c, 0x6c, 0x3c, 0xc, 0x1, 0x31, 0x61, 0x51, 0xc1, 0xf1, 0xa1, 0x91, + 0xbb, 0x8b, 0xdb, 0xeb, 0x7b, 0x4b, 0x1b, 0x2b, 0x26, 0x16, 0x46, 0x76, 0xe6, 0xd6, 0x86, 0xb6, + 0xd2, 0xe2, 0xb2, 0x82, 0x12, 0x22, 0x72, 0x42, 0x4f, 0x7f, 0x2f, 0x1f, 0x8f, 0xbf, 0xef, 0xdf, + 0xf5, 0xc5, 0x95, 0xa5, 0x35, 0x5, 0x55, 0x65, 0x68, 0x58, 0x8, 0x38, 0xa8, 0x98, 0xc8, 0xf8, + 0x25, 0x15, 0x45, 0x75, 0xe5, 0xd5, 0x85, 0xb5, 0xb8, 0x88, 0xd8, 0xe8, 0x78, 0x48, 0x18, 0x28, + 0x2, 0x32, 0x62, 0x52, 0xc2, 0xf2, 0xa2, 0x92, 0x9f, 0xaf, 0xff, 0xcf, 0x5f, 0x6f, 0x3f, 0xf, + 0x6b, 0x5b, 0xb, 0x3b, 0xab, 0x9b, 0xcb, 0xfb, 0xf6, 0xc6, 0x96, 0xa6, 0x36, 0x6, 0x56, 0x66, + 0x4c, 0x7c, 0x2c, 0x1c, 0x8c, 0xbc, 0xec, 0xdc, 0xd1, 0xe1, 0xb1, 0x81, 0x11, 0x21, 0x71, 0x41, + 0xb9, 0x89, 0xd9, 0xe9, 0x79, 0x49, 0x19, 0x29, 0x24, 0x14, 0x44, 0x74, 0xe4, 0xd4, 0x84, 0xb4, + 0x9e, 0xae, 0xfe, 0xce, 0x5e, 0x6e, 0x3e, 0xe, 0x3, 0x33, 0x63, 0x53, 0xc3, 0xf3, 0xa3, 0x93, + 0xf7, 0xc7, 0x97, 0xa7, 0x37, 0x7, 0x57, 0x67, 0x6a, 0x5a, 0xa, 0x3a, 0xaa, 0x9a, 0xca, 0xfa, + 0xd0, 0xe0, 0xb0, 0x80, 0x10, 0x20, 0x70, 0x40, 0x4d, 0x7d, 0x2d, 0x1d, 0x8d, 0xbd, 0xed, 0xdd, + ], + [ + 0x0, 0x31, 0x62, 0x53, 0xc4, 0xf5, 0xa6, 0x97, 0x95, 0xa4, 0xf7, 0xc6, 0x51, 0x60, 0x33, 0x2, + 0x37, 0x6, 0x55, 0x64, 0xf3, 0xc2, 0x91, 0xa0, 0xa2, 0x93, 0xc0, 0xf1, 0x66, 0x57, 0x4, 0x35, + 0x6e, 0x5f, 0xc, 0x3d, 0xaa, 0x9b, 0xc8, 0xf9, 0xfb, 0xca, 0x99, 0xa8, 0x3f, 0xe, 0x5d, 0x6c, + 0x59, 0x68, 0x3b, 0xa, 0x9d, 0xac, 0xff, 0xce, 0xcc, 0xfd, 0xae, 0x9f, 0x8, 0x39, 0x6a, 0x5b, + 0xdc, 0xed, 0xbe, 0x8f, 0x18, 0x29, 0x7a, 0x4b, 0x49, 0x78, 0x2b, 0x1a, 0x8d, 0xbc, 0xef, 0xde, + 0xeb, 0xda, 0x89, 0xb8, 0x2f, 0x1e, 0x4d, 0x7c, 0x7e, 0x4f, 0x1c, 0x2d, 0xba, 0x8b, 0xd8, 0xe9, + 0xb2, 0x83, 0xd0, 0xe1, 0x76, 0x47, 0x14, 0x25, 0x27, 0x16, 0x45, 0x74, 0xe3, 0xd2, 0x81, 0xb0, + 0x85, 0xb4, 0xe7, 0xd6, 0x41, 0x70, 0x23, 0x12, 0x10, 0x21, 0x72, 0x43, 0xd4, 0xe5, 0xb6, 0x87, + 0xa5, 0x94, 0xc7, 0xf6, 0x61, 0x50, 0x3, 0x32, 0x30, 0x1, 0x52, 0x63, 0xf4, 0xc5, 0x96, 0xa7, + 0x92, 0xa3, 0xf0, 0xc1, 0x56, 0x67, 0x34, 0x5, 0x7, 0x36, 0x65, 0x54, 0xc3, 0xf2, 0xa1, 0x90, + 0xcb, 0xfa, 0xa9, 0x98, 0xf, 0x3e, 0x6d, 0x5c, 0x5e, 0x6f, 0x3c, 0xd, 0x9a, 0xab, 0xf8, 0xc9, + 0xfc, 0xcd, 0x9e, 0xaf, 0x38, 0x9, 0x5a, 0x6b, 0x69, 0x58, 0xb, 0x3a, 0xad, 0x9c, 0xcf, 0xfe, + 0x79, 0x48, 0x1b, 0x2a, 0xbd, 0x8c, 0xdf, 0xee, 0xec, 0xdd, 0x8e, 0xbf, 0x28, 0x19, 0x4a, 0x7b, + 0x4e, 0x7f, 0x2c, 0x1d, 0x8a, 0xbb, 0xe8, 0xd9, 0xdb, 0xea, 0xb9, 0x88, 0x1f, 0x2e, 0x7d, 0x4c, + 0x17, 0x26, 0x75, 0x44, 0xd3, 0xe2, 0xb1, 0x80, 0x82, 0xb3, 0xe0, 0xd1, 0x46, 0x77, 0x24, 0x15, + 0x20, 0x11, 0x42, 0x73, 0xe4, 0xd5, 0x86, 0xb7, 0xb5, 0x84, 0xd7, 0xe6, 0x71, 0x40, 0x13, 0x22, + ], + [ + 0x0, 0x32, 0x64, 0x56, 0xc8, 0xfa, 0xac, 0x9e, 0x8d, 0xbf, 0xe9, 0xdb, 0x45, 0x77, 0x21, 0x13, + 0x7, 0x35, 0x63, 0x51, 0xcf, 0xfd, 0xab, 0x99, 0x8a, 0xb8, 0xee, 0xdc, 0x42, 0x70, 0x26, 0x14, + 0xe, 0x3c, 0x6a, 0x58, 0xc6, 0xf4, 0xa2, 0x90, 0x83, 0xb1, 0xe7, 0xd5, 0x4b, 0x79, 0x2f, 0x1d, + 0x9, 0x3b, 0x6d, 0x5f, 0xc1, 0xf3, 0xa5, 0x97, 0x84, 0xb6, 0xe0, 0xd2, 0x4c, 0x7e, 0x28, 0x1a, + 0x1c, 0x2e, 0x78, 0x4a, 0xd4, 0xe6, 0xb0, 0x82, 0x91, 0xa3, 0xf5, 0xc7, 0x59, 0x6b, 0x3d, 0xf, + 0x1b, 0x29, 0x7f, 0x4d, 0xd3, 0xe1, 0xb7, 0x85, 0x96, 0xa4, 0xf2, 0xc0, 0x5e, 0x6c, 0x3a, 0x8, + 0x12, 0x20, 0x76, 0x44, 0xda, 0xe8, 0xbe, 0x8c, 0x9f, 0xad, 0xfb, 0xc9, 0x57, 0x65, 0x33, 0x1, + 0x15, 0x27, 0x71, 0x43, 0xdd, 0xef, 0xb9, 0x8b, 0x98, 0xaa, 0xfc, 0xce, 0x50, 0x62, 0x34, 0x6, + 0x38, 0xa, 0x5c, 0x6e, 0xf0, 0xc2, 0x94, 0xa6, 0xb5, 0x87, 0xd1, 0xe3, 0x7d, 0x4f, 0x19, 0x2b, + 0x3f, 0xd, 0x5b, 0x69, 0xf7, 0xc5, 0x93, 0xa1, 0xb2, 0x80, 0xd6, 0xe4, 0x7a, 0x48, 0x1e, 0x2c, + 0x36, 0x4, 0x52, 0x60, 0xfe, 0xcc, 0x9a, 0xa8, 0xbb, 0x89, 0xdf, 0xed, 0x73, 0x41, 0x17, 0x25, + 0x31, 0x3, 0x55, 0x67, 0xf9, 0xcb, 0x9d, 0xaf, 0xbc, 0x8e, 0xd8, 0xea, 0x74, 0x46, 0x10, 0x22, + 0x24, 0x16, 0x40, 0x72, 0xec, 0xde, 0x88, 0xba, 0xa9, 0x9b, 0xcd, 0xff, 0x61, 0x53, 0x5, 0x37, + 0x23, 0x11, 0x47, 0x75, 0xeb, 0xd9, 0x8f, 0xbd, 0xae, 0x9c, 0xca, 0xf8, 0x66, 0x54, 0x2, 0x30, + 0x2a, 0x18, 0x4e, 0x7c, 0xe2, 0xd0, 0x86, 0xb4, 0xa7, 0x95, 0xc3, 0xf1, 0x6f, 0x5d, 0xb, 0x39, + 0x2d, 0x1f, 0x49, 0x7b, 0xe5, 0xd7, 0x81, 0xb3, 0xa0, 0x92, 0xc4, 0xf6, 0x68, 0x5a, 0xc, 0x3e, + ], + [ + 0x0, 0x33, 0x66, 0x55, 0xcc, 0xff, 0xaa, 0x99, 0x85, 0xb6, 0xe3, 0xd0, 0x49, 0x7a, 0x2f, 0x1c, + 0x17, 0x24, 0x71, 0x42, 0xdb, 0xe8, 0xbd, 0x8e, 0x92, 0xa1, 0xf4, 0xc7, 0x5e, 0x6d, 0x38, 0xb, + 0x2e, 0x1d, 0x48, 0x7b, 0xe2, 0xd1, 0x84, 0xb7, 0xab, 0x98, 0xcd, 0xfe, 0x67, 0x54, 0x1, 0x32, + 0x39, 0xa, 0x5f, 0x6c, 0xf5, 0xc6, 0x93, 0xa0, 0xbc, 0x8f, 0xda, 0xe9, 0x70, 0x43, 0x16, 0x25, + 0x5c, 0x6f, 0x3a, 0x9, 0x90, 0xa3, 0xf6, 0xc5, 0xd9, 0xea, 0xbf, 0x8c, 0x15, 0x26, 0x73, 0x40, + 0x4b, 0x78, 0x2d, 0x1e, 0x87, 0xb4, 0xe1, 0xd2, 0xce, 0xfd, 0xa8, 0x9b, 0x2, 0x31, 0x64, 0x57, + 0x72, 0x41, 0x14, 0x27, 0xbe, 0x8d, 0xd8, 0xeb, 0xf7, 0xc4, 0x91, 0xa2, 0x3b, 0x8, 0x5d, 0x6e, + 0x65, 0x56, 0x3, 0x30, 0xa9, 0x9a, 0xcf, 0xfc, 0xe0, 0xd3, 0x86, 0xb5, 0x2c, 0x1f, 0x4a, 0x79, + 0xb8, 0x8b, 0xde, 0xed, 0x74, 0x47, 0x12, 0x21, 0x3d, 0xe, 0x5b, 0x68, 0xf1, 0xc2, 0x97, 0xa4, + 0xaf, 0x9c, 0xc9, 0xfa, 0x63, 0x50, 0x5, 0x36, 0x2a, 0x19, 0x4c, 0x7f, 0xe6, 0xd5, 0x80, 0xb3, + 0x96, 0xa5, 0xf0, 0xc3, 0x5a, 0x69, 0x3c, 0xf, 0x13, 0x20, 0x75, 0x46, 0xdf, 0xec, 0xb9, 0x8a, + 0x81, 0xb2, 0xe7, 0xd4, 0x4d, 0x7e, 0x2b, 0x18, 0x4, 0x37, 0x62, 0x51, 0xc8, 0xfb, 0xae, 0x9d, + 0xe4, 0xd7, 0x82, 0xb1, 0x28, 0x1b, 0x4e, 0x7d, 0x61, 0x52, 0x7, 0x34, 0xad, 0x9e, 0xcb, 0xf8, + 0xf3, 0xc0, 0x95, 0xa6, 0x3f, 0xc, 0x59, 0x6a, 0x76, 0x45, 0x10, 0x23, 0xba, 0x89, 0xdc, 0xef, + 0xca, 0xf9, 0xac, 0x9f, 0x6, 0x35, 0x60, 0x53, 0x4f, 0x7c, 0x29, 0x1a, 0x83, 0xb0, 0xe5, 0xd6, + 0xdd, 0xee, 0xbb, 0x88, 0x11, 0x22, 0x77, 0x44, 0x58, 0x6b, 0x3e, 0xd, 0x94, 0xa7, 0xf2, 0xc1, + ], + [ + 0x0, 0x34, 0x68, 0x5c, 0xd0, 0xe4, 0xb8, 0x8c, 0xbd, 0x89, 0xd5, 0xe1, 0x6d, 0x59, 0x5, 0x31, + 0x67, 0x53, 0xf, 0x3b, 0xb7, 0x83, 0xdf, 0xeb, 0xda, 0xee, 0xb2, 0x86, 0xa, 0x3e, 0x62, 0x56, + 0xce, 0xfa, 0xa6, 0x92, 0x1e, 0x2a, 0x76, 0x42, 0x73, 0x47, 0x1b, 0x2f, 0xa3, 0x97, 0xcb, 0xff, + 0xa9, 0x9d, 0xc1, 0xf5, 0x79, 0x4d, 0x11, 0x25, 0x14, 0x20, 0x7c, 0x48, 0xc4, 0xf0, 0xac, 0x98, + 0x81, 0xb5, 0xe9, 0xdd, 0x51, 0x65, 0x39, 0xd, 0x3c, 0x8, 0x54, 0x60, 0xec, 0xd8, 0x84, 0xb0, + 0xe6, 0xd2, 0x8e, 0xba, 0x36, 0x2, 0x5e, 0x6a, 0x5b, 0x6f, 0x33, 0x7, 0x8b, 0xbf, 0xe3, 0xd7, + 0x4f, 0x7b, 0x27, 0x13, 0x9f, 0xab, 0xf7, 0xc3, 0xf2, 0xc6, 0x9a, 0xae, 0x22, 0x16, 0x4a, 0x7e, + 0x28, 0x1c, 0x40, 0x74, 0xf8, 0xcc, 0x90, 0xa4, 0x95, 0xa1, 0xfd, 0xc9, 0x45, 0x71, 0x2d, 0x19, + 0x1f, 0x2b, 0x77, 0x43, 0xcf, 0xfb, 0xa7, 0x93, 0xa2, 0x96, 0xca, 0xfe, 0x72, 0x46, 0x1a, 0x2e, + 0x78, 0x4c, 0x10, 0x24, 0xa8, 0x9c, 0xc0, 0xf4, 0xc5, 0xf1, 0xad, 0x99, 0x15, 0x21, 0x7d, 0x49, + 0xd1, 0xe5, 0xb9, 0x8d, 0x1, 0x35, 0x69, 0x5d, 0x6c, 0x58, 0x4, 0x30, 0xbc, 0x88, 0xd4, 0xe0, + 0xb6, 0x82, 0xde, 0xea, 0x66, 0x52, 0xe, 0x3a, 0xb, 0x3f, 0x63, 0x57, 0xdb, 0xef, 0xb3, 0x87, + 0x9e, 0xaa, 0xf6, 0xc2, 0x4e, 0x7a, 0x26, 0x12, 0x23, 0x17, 0x4b, 0x7f, 0xf3, 0xc7, 0x9b, 0xaf, + 0xf9, 0xcd, 0x91, 0xa5, 0x29, 0x1d, 0x41, 0x75, 0x44, 0x70, 0x2c, 0x18, 0x94, 0xa0, 0xfc, 0xc8, + 0x50, 0x64, 0x38, 0xc, 0x80, 0xb4, 0xe8, 0xdc, 0xed, 0xd9, 0x85, 0xb1, 0x3d, 0x9, 0x55, 0x61, + 0x37, 0x3, 0x5f, 0x6b, 0xe7, 0xd3, 0x8f, 0xbb, 0x8a, 0xbe, 0xe2, 0xd6, 0x5a, 0x6e, 0x32, 0x6, + ], + [ + 0x0, 0x35, 0x6a, 0x5f, 0xd4, 0xe1, 0xbe, 0x8b, 0xb5, 0x80, 0xdf, 0xea, 0x61, 0x54, 0xb, 0x3e, + 0x77, 0x42, 0x1d, 0x28, 0xa3, 0x96, 0xc9, 0xfc, 0xc2, 0xf7, 0xa8, 0x9d, 0x16, 0x23, 0x7c, 0x49, + 0xee, 0xdb, 0x84, 0xb1, 0x3a, 0xf, 0x50, 0x65, 0x5b, 0x6e, 0x31, 0x4, 0x8f, 0xba, 0xe5, 0xd0, + 0x99, 0xac, 0xf3, 0xc6, 0x4d, 0x78, 0x27, 0x12, 0x2c, 0x19, 0x46, 0x73, 0xf8, 0xcd, 0x92, 0xa7, + 0xc1, 0xf4, 0xab, 0x9e, 0x15, 0x20, 0x7f, 0x4a, 0x74, 0x41, 0x1e, 0x2b, 0xa0, 0x95, 0xca, 0xff, + 0xb6, 0x83, 0xdc, 0xe9, 0x62, 0x57, 0x8, 0x3d, 0x3, 0x36, 0x69, 0x5c, 0xd7, 0xe2, 0xbd, 0x88, + 0x2f, 0x1a, 0x45, 0x70, 0xfb, 0xce, 0x91, 0xa4, 0x9a, 0xaf, 0xf0, 0xc5, 0x4e, 0x7b, 0x24, 0x11, + 0x58, 0x6d, 0x32, 0x7, 0x8c, 0xb9, 0xe6, 0xd3, 0xed, 0xd8, 0x87, 0xb2, 0x39, 0xc, 0x53, 0x66, + 0x9f, 0xaa, 0xf5, 0xc0, 0x4b, 0x7e, 0x21, 0x14, 0x2a, 0x1f, 0x40, 0x75, 0xfe, 0xcb, 0x94, 0xa1, + 0xe8, 0xdd, 0x82, 0xb7, 0x3c, 0x9, 0x56, 0x63, 0x5d, 0x68, 0x37, 0x2, 0x89, 0xbc, 0xe3, 0xd6, + 0x71, 0x44, 0x1b, 0x2e, 0xa5, 0x90, 0xcf, 0xfa, 0xc4, 0xf1, 0xae, 0x9b, 0x10, 0x25, 0x7a, 0x4f, + 0x6, 0x33, 0x6c, 0x59, 0xd2, 0xe7, 0xb8, 0x8d, 0xb3, 0x86, 0xd9, 0xec, 0x67, 0x52, 0xd, 0x38, + 0x5e, 0x6b, 0x34, 0x1, 0x8a, 0xbf, 0xe0, 0xd5, 0xeb, 0xde, 0x81, 0xb4, 0x3f, 0xa, 0x55, 0x60, + 0x29, 0x1c, 0x43, 0x76, 0xfd, 0xc8, 0x97, 0xa2, 0x9c, 0xa9, 0xf6, 0xc3, 0x48, 0x7d, 0x22, 0x17, + 0xb0, 0x85, 0xda, 0xef, 0x64, 0x51, 0xe, 0x3b, 0x5, 0x30, 0x6f, 0x5a, 0xd1, 0xe4, 0xbb, 0x8e, + 0xc7, 0xf2, 0xad, 0x98, 0x13, 0x26, 0x79, 0x4c, 0x72, 0x47, 0x18, 0x2d, 0xa6, 0x93, 0xcc, 0xf9, + ], + [ + 0x0, 0x36, 0x6c, 0x5a, 0xd8, 0xee, 0xb4, 0x82, 0xad, 0x9b, 0xc1, 0xf7, 0x75, 0x43, 0x19, 0x2f, + 0x47, 0x71, 0x2b, 0x1d, 0x9f, 0xa9, 0xf3, 0xc5, 0xea, 0xdc, 0x86, 0xb0, 0x32, 0x4, 0x5e, 0x68, + 0x8e, 0xb8, 0xe2, 0xd4, 0x56, 0x60, 0x3a, 0xc, 0x23, 0x15, 0x4f, 0x79, 0xfb, 0xcd, 0x97, 0xa1, + 0xc9, 0xff, 0xa5, 0x93, 0x11, 0x27, 0x7d, 0x4b, 0x64, 0x52, 0x8, 0x3e, 0xbc, 0x8a, 0xd0, 0xe6, + 0x1, 0x37, 0x6d, 0x5b, 0xd9, 0xef, 0xb5, 0x83, 0xac, 0x9a, 0xc0, 0xf6, 0x74, 0x42, 0x18, 0x2e, + 0x46, 0x70, 0x2a, 0x1c, 0x9e, 0xa8, 0xf2, 0xc4, 0xeb, 0xdd, 0x87, 0xb1, 0x33, 0x5, 0x5f, 0x69, + 0x8f, 0xb9, 0xe3, 0xd5, 0x57, 0x61, 0x3b, 0xd, 0x22, 0x14, 0x4e, 0x78, 0xfa, 0xcc, 0x96, 0xa0, + 0xc8, 0xfe, 0xa4, 0x92, 0x10, 0x26, 0x7c, 0x4a, 0x65, 0x53, 0x9, 0x3f, 0xbd, 0x8b, 0xd1, 0xe7, + 0x2, 0x34, 0x6e, 0x58, 0xda, 0xec, 0xb6, 0x80, 0xaf, 0x99, 0xc3, 0xf5, 0x77, 0x41, 0x1b, 0x2d, + 0x45, 0x73, 0x29, 0x1f, 0x9d, 0xab, 0xf1, 0xc7, 0xe8, 0xde, 0x84, 0xb2, 0x30, 0x6, 0x5c, 0x6a, + 0x8c, 0xba, 0xe0, 0xd6, 0x54, 0x62, 0x38, 0xe, 0x21, 0x17, 0x4d, 0x7b, 0xf9, 0xcf, 0x95, 0xa3, + 0xcb, 0xfd, 0xa7, 0x91, 0x13, 0x25, 0x7f, 0x49, 0x66, 0x50, 0xa, 0x3c, 0xbe, 0x88, 0xd2, 0xe4, + 0x3, 0x35, 0x6f, 0x59, 0xdb, 0xed, 0xb7, 0x81, 0xae, 0x98, 0xc2, 0xf4, 0x76, 0x40, 0x1a, 0x2c, + 0x44, 0x72, 0x28, 0x1e, 0x9c, 0xaa, 0xf0, 0xc6, 0xe9, 0xdf, 0x85, 0xb3, 0x31, 0x7, 0x5d, 0x6b, + 0x8d, 0xbb, 0xe1, 0xd7, 0x55, 0x63, 0x39, 0xf, 0x20, 0x16, 0x4c, 0x7a, 0xf8, 0xce, 0x94, 0xa2, + 0xca, 0xfc, 0xa6, 0x90, 0x12, 0x24, 0x7e, 0x48, 0x67, 0x51, 0xb, 0x3d, 0xbf, 0x89, 0xd3, 0xe5, + ], + [ + 0x0, 0x37, 0x6e, 0x59, 0xdc, 0xeb, 0xb2, 0x85, 0xa5, 0x92, 0xcb, 0xfc, 0x79, 0x4e, 0x17, 0x20, + 0x57, 0x60, 0x39, 0xe, 0x8b, 0xbc, 0xe5, 0xd2, 0xf2, 0xc5, 0x9c, 0xab, 0x2e, 0x19, 0x40, 0x77, + 0xae, 0x99, 0xc0, 0xf7, 0x72, 0x45, 0x1c, 0x2b, 0xb, 0x3c, 0x65, 0x52, 0xd7, 0xe0, 0xb9, 0x8e, + 0xf9, 0xce, 0x97, 0xa0, 0x25, 0x12, 0x4b, 0x7c, 0x5c, 0x6b, 0x32, 0x5, 0x80, 0xb7, 0xee, 0xd9, + 0x41, 0x76, 0x2f, 0x18, 0x9d, 0xaa, 0xf3, 0xc4, 0xe4, 0xd3, 0x8a, 0xbd, 0x38, 0xf, 0x56, 0x61, + 0x16, 0x21, 0x78, 0x4f, 0xca, 0xfd, 0xa4, 0x93, 0xb3, 0x84, 0xdd, 0xea, 0x6f, 0x58, 0x1, 0x36, + 0xef, 0xd8, 0x81, 0xb6, 0x33, 0x4, 0x5d, 0x6a, 0x4a, 0x7d, 0x24, 0x13, 0x96, 0xa1, 0xf8, 0xcf, + 0xb8, 0x8f, 0xd6, 0xe1, 0x64, 0x53, 0xa, 0x3d, 0x1d, 0x2a, 0x73, 0x44, 0xc1, 0xf6, 0xaf, 0x98, + 0x82, 0xb5, 0xec, 0xdb, 0x5e, 0x69, 0x30, 0x7, 0x27, 0x10, 0x49, 0x7e, 0xfb, 0xcc, 0x95, 0xa2, + 0xd5, 0xe2, 0xbb, 0x8c, 0x9, 0x3e, 0x67, 0x50, 0x70, 0x47, 0x1e, 0x29, 0xac, 0x9b, 0xc2, 0xf5, + 0x2c, 0x1b, 0x42, 0x75, 0xf0, 0xc7, 0x9e, 0xa9, 0x89, 0xbe, 0xe7, 0xd0, 0x55, 0x62, 0x3b, 0xc, + 0x7b, 0x4c, 0x15, 0x22, 0xa7, 0x90, 0xc9, 0xfe, 0xde, 0xe9, 0xb0, 0x87, 0x2, 0x35, 0x6c, 0x5b, + 0xc3, 0xf4, 0xad, 0x9a, 0x1f, 0x28, 0x71, 0x46, 0x66, 0x51, 0x8, 0x3f, 0xba, 0x8d, 0xd4, 0xe3, + 0x94, 0xa3, 0xfa, 0xcd, 0x48, 0x7f, 0x26, 0x11, 0x31, 0x6, 0x5f, 0x68, 0xed, 0xda, 0x83, 0xb4, + 0x6d, 0x5a, 0x3, 0x34, 0xb1, 0x86, 0xdf, 0xe8, 0xc8, 0xff, 0xa6, 0x91, 0x14, 0x23, 0x7a, 0x4d, + 0x3a, 0xd, 0x54, 0x63, 0xe6, 0xd1, 0x88, 0xbf, 0x9f, 0xa8, 0xf1, 0xc6, 0x43, 0x74, 0x2d, 0x1a, + ], + [ + 0x0, 0x38, 0x70, 0x48, 0xe0, 0xd8, 0x90, 0xa8, 0xdd, 0xe5, 0xad, 0x95, 0x3d, 0x5, 0x4d, 0x75, + 0xa7, 0x9f, 0xd7, 0xef, 0x47, 0x7f, 0x37, 0xf, 0x7a, 0x42, 0xa, 0x32, 0x9a, 0xa2, 0xea, 0xd2, + 0x53, 0x6b, 0x23, 0x1b, 0xb3, 0x8b, 0xc3, 0xfb, 0x8e, 0xb6, 0xfe, 0xc6, 0x6e, 0x56, 0x1e, 0x26, + 0xf4, 0xcc, 0x84, 0xbc, 0x14, 0x2c, 0x64, 0x5c, 0x29, 0x11, 0x59, 0x61, 0xc9, 0xf1, 0xb9, 0x81, + 0xa6, 0x9e, 0xd6, 0xee, 0x46, 0x7e, 0x36, 0xe, 0x7b, 0x43, 0xb, 0x33, 0x9b, 0xa3, 0xeb, 0xd3, + 0x1, 0x39, 0x71, 0x49, 0xe1, 0xd9, 0x91, 0xa9, 0xdc, 0xe4, 0xac, 0x94, 0x3c, 0x4, 0x4c, 0x74, + 0xf5, 0xcd, 0x85, 0xbd, 0x15, 0x2d, 0x65, 0x5d, 0x28, 0x10, 0x58, 0x60, 0xc8, 0xf0, 0xb8, 0x80, + 0x52, 0x6a, 0x22, 0x1a, 0xb2, 0x8a, 0xc2, 0xfa, 0x8f, 0xb7, 0xff, 0xc7, 0x6f, 0x57, 0x1f, 0x27, + 0x51, 0x69, 0x21, 0x19, 0xb1, 0x89, 0xc1, 0xf9, 0x8c, 0xb4, 0xfc, 0xc4, 0x6c, 0x54, 0x1c, 0x24, + 0xf6, 0xce, 0x86, 0xbe, 0x16, 0x2e, 0x66, 0x5e, 0x2b, 0x13, 0x5b, 0x63, 0xcb, 0xf3, 0xbb, 0x83, + 0x2, 0x3a, 0x72, 0x4a, 0xe2, 0xda, 0x92, 0xaa, 0xdf, 0xe7, 0xaf, 0x97, 0x3f, 0x7, 0x4f, 0x77, + 0xa5, 0x9d, 0xd5, 0xed, 0x45, 0x7d, 0x35, 0xd, 0x78, 0x40, 0x8, 0x30, 0x98, 0xa0, 0xe8, 0xd0, + 0xf7, 0xcf, 0x87, 0xbf, 0x17, 0x2f, 0x67, 0x5f, 0x2a, 0x12, 0x5a, 0x62, 0xca, 0xf2, 0xba, 0x82, + 0x50, 0x68, 0x20, 0x18, 0xb0, 0x88, 0xc0, 0xf8, 0x8d, 0xb5, 0xfd, 0xc5, 0x6d, 0x55, 0x1d, 0x25, + 0xa4, 0x9c, 0xd4, 0xec, 0x44, 0x7c, 0x34, 0xc, 0x79, 0x41, 0x9, 0x31, 0x99, 0xa1, 0xe9, 0xd1, + 0x3, 0x3b, 0x73, 0x4b, 0xe3, 0xdb, 0x93, 0xab, 0xde, 0xe6, 0xae, 0x96, 0x3e, 0x6, 0x4e, 0x76, + ], + [ + 0x0, 0x39, 0x72, 0x4b, 0xe4, 0xdd, 0x96, 0xaf, 0xd5, 0xec, 0xa7, 0x9e, 0x31, 0x8, 0x43, 0x7a, + 0xb7, 0x8e, 0xc5, 0xfc, 0x53, 0x6a, 0x21, 0x18, 0x62, 0x5b, 0x10, 0x29, 0x86, 0xbf, 0xf4, 0xcd, + 0x73, 0x4a, 0x1, 0x38, 0x97, 0xae, 0xe5, 0xdc, 0xa6, 0x9f, 0xd4, 0xed, 0x42, 0x7b, 0x30, 0x9, + 0xc4, 0xfd, 0xb6, 0x8f, 0x20, 0x19, 0x52, 0x6b, 0x11, 0x28, 0x63, 0x5a, 0xf5, 0xcc, 0x87, 0xbe, + 0xe6, 0xdf, 0x94, 0xad, 0x2, 0x3b, 0x70, 0x49, 0x33, 0xa, 0x41, 0x78, 0xd7, 0xee, 0xa5, 0x9c, + 0x51, 0x68, 0x23, 0x1a, 0xb5, 0x8c, 0xc7, 0xfe, 0x84, 0xbd, 0xf6, 0xcf, 0x60, 0x59, 0x12, 0x2b, + 0x95, 0xac, 0xe7, 0xde, 0x71, 0x48, 0x3, 0x3a, 0x40, 0x79, 0x32, 0xb, 0xa4, 0x9d, 0xd6, 0xef, + 0x22, 0x1b, 0x50, 0x69, 0xc6, 0xff, 0xb4, 0x8d, 0xf7, 0xce, 0x85, 0xbc, 0x13, 0x2a, 0x61, 0x58, + 0xd1, 0xe8, 0xa3, 0x9a, 0x35, 0xc, 0x47, 0x7e, 0x4, 0x3d, 0x76, 0x4f, 0xe0, 0xd9, 0x92, 0xab, + 0x66, 0x5f, 0x14, 0x2d, 0x82, 0xbb, 0xf0, 0xc9, 0xb3, 0x8a, 0xc1, 0xf8, 0x57, 0x6e, 0x25, 0x1c, + 0xa2, 0x9b, 0xd0, 0xe9, 0x46, 0x7f, 0x34, 0xd, 0x77, 0x4e, 0x5, 0x3c, 0x93, 0xaa, 0xe1, 0xd8, + 0x15, 0x2c, 0x67, 0x5e, 0xf1, 0xc8, 0x83, 0xba, 0xc0, 0xf9, 0xb2, 0x8b, 0x24, 0x1d, 0x56, 0x6f, + 0x37, 0xe, 0x45, 0x7c, 0xd3, 0xea, 0xa1, 0x98, 0xe2, 0xdb, 0x90, 0xa9, 0x6, 0x3f, 0x74, 0x4d, + 0x80, 0xb9, 0xf2, 0xcb, 0x64, 0x5d, 0x16, 0x2f, 0x55, 0x6c, 0x27, 0x1e, 0xb1, 0x88, 0xc3, 0xfa, + 0x44, 0x7d, 0x36, 0xf, 0xa0, 0x99, 0xd2, 0xeb, 0x91, 0xa8, 0xe3, 0xda, 0x75, 0x4c, 0x7, 0x3e, + 0xf3, 0xca, 0x81, 0xb8, 0x17, 0x2e, 0x65, 0x5c, 0x26, 0x1f, 0x54, 0x6d, 0xc2, 0xfb, 0xb0, 0x89, + ], + [ + 0x0, 0x3a, 0x74, 0x4e, 0xe8, 0xd2, 0x9c, 0xa6, 0xcd, 0xf7, 0xb9, 0x83, 0x25, 0x1f, 0x51, 0x6b, + 0x87, 0xbd, 0xf3, 0xc9, 0x6f, 0x55, 0x1b, 0x21, 0x4a, 0x70, 0x3e, 0x4, 0xa2, 0x98, 0xd6, 0xec, + 0x13, 0x29, 0x67, 0x5d, 0xfb, 0xc1, 0x8f, 0xb5, 0xde, 0xe4, 0xaa, 0x90, 0x36, 0xc, 0x42, 0x78, + 0x94, 0xae, 0xe0, 0xda, 0x7c, 0x46, 0x8, 0x32, 0x59, 0x63, 0x2d, 0x17, 0xb1, 0x8b, 0xc5, 0xff, + 0x26, 0x1c, 0x52, 0x68, 0xce, 0xf4, 0xba, 0x80, 0xeb, 0xd1, 0x9f, 0xa5, 0x3, 0x39, 0x77, 0x4d, + 0xa1, 0x9b, 0xd5, 0xef, 0x49, 0x73, 0x3d, 0x7, 0x6c, 0x56, 0x18, 0x22, 0x84, 0xbe, 0xf0, 0xca, + 0x35, 0xf, 0x41, 0x7b, 0xdd, 0xe7, 0xa9, 0x93, 0xf8, 0xc2, 0x8c, 0xb6, 0x10, 0x2a, 0x64, 0x5e, + 0xb2, 0x88, 0xc6, 0xfc, 0x5a, 0x60, 0x2e, 0x14, 0x7f, 0x45, 0xb, 0x31, 0x97, 0xad, 0xe3, 0xd9, + 0x4c, 0x76, 0x38, 0x2, 0xa4, 0x9e, 0xd0, 0xea, 0x81, 0xbb, 0xf5, 0xcf, 0x69, 0x53, 0x1d, 0x27, + 0xcb, 0xf1, 0xbf, 0x85, 0x23, 0x19, 0x57, 0x6d, 0x6, 0x3c, 0x72, 0x48, 0xee, 0xd4, 0x9a, 0xa0, + 0x5f, 0x65, 0x2b, 0x11, 0xb7, 0x8d, 0xc3, 0xf9, 0x92, 0xa8, 0xe6, 0xdc, 0x7a, 0x40, 0xe, 0x34, + 0xd8, 0xe2, 0xac, 0x96, 0x30, 0xa, 0x44, 0x7e, 0x15, 0x2f, 0x61, 0x5b, 0xfd, 0xc7, 0x89, 0xb3, + 0x6a, 0x50, 0x1e, 0x24, 0x82, 0xb8, 0xf6, 0xcc, 0xa7, 0x9d, 0xd3, 0xe9, 0x4f, 0x75, 0x3b, 0x1, + 0xed, 0xd7, 0x99, 0xa3, 0x5, 0x3f, 0x71, 0x4b, 0x20, 0x1a, 0x54, 0x6e, 0xc8, 0xf2, 0xbc, 0x86, + 0x79, 0x43, 0xd, 0x37, 0x91, 0xab, 0xe5, 0xdf, 0xb4, 0x8e, 0xc0, 0xfa, 0x5c, 0x66, 0x28, 0x12, + 0xfe, 0xc4, 0x8a, 0xb0, 0x16, 0x2c, 0x62, 0x58, 0x33, 0x9, 0x47, 0x7d, 0xdb, 0xe1, 0xaf, 0x95, + ], + [ + 0x0, 0x3b, 0x76, 0x4d, 0xec, 0xd7, 0x9a, 0xa1, 0xc5, 0xfe, 0xb3, 0x88, 0x29, 0x12, 0x5f, 0x64, + 0x97, 0xac, 0xe1, 0xda, 0x7b, 0x40, 0xd, 0x36, 0x52, 0x69, 0x24, 0x1f, 0xbe, 0x85, 0xc8, 0xf3, + 0x33, 0x8, 0x45, 0x7e, 0xdf, 0xe4, 0xa9, 0x92, 0xf6, 0xcd, 0x80, 0xbb, 0x1a, 0x21, 0x6c, 0x57, + 0xa4, 0x9f, 0xd2, 0xe9, 0x48, 0x73, 0x3e, 0x5, 0x61, 0x5a, 0x17, 0x2c, 0x8d, 0xb6, 0xfb, 0xc0, + 0x66, 0x5d, 0x10, 0x2b, 0x8a, 0xb1, 0xfc, 0xc7, 0xa3, 0x98, 0xd5, 0xee, 0x4f, 0x74, 0x39, 0x2, + 0xf1, 0xca, 0x87, 0xbc, 0x1d, 0x26, 0x6b, 0x50, 0x34, 0xf, 0x42, 0x79, 0xd8, 0xe3, 0xae, 0x95, + 0x55, 0x6e, 0x23, 0x18, 0xb9, 0x82, 0xcf, 0xf4, 0x90, 0xab, 0xe6, 0xdd, 0x7c, 0x47, 0xa, 0x31, + 0xc2, 0xf9, 0xb4, 0x8f, 0x2e, 0x15, 0x58, 0x63, 0x7, 0x3c, 0x71, 0x4a, 0xeb, 0xd0, 0x9d, 0xa6, + 0xcc, 0xf7, 0xba, 0x81, 0x20, 0x1b, 0x56, 0x6d, 0x9, 0x32, 0x7f, 0x44, 0xe5, 0xde, 0x93, 0xa8, + 0x5b, 0x60, 0x2d, 0x16, 0xb7, 0x8c, 0xc1, 0xfa, 0x9e, 0xa5, 0xe8, 0xd3, 0x72, 0x49, 0x4, 0x3f, + 0xff, 0xc4, 0x89, 0xb2, 0x13, 0x28, 0x65, 0x5e, 0x3a, 0x1, 0x4c, 0x77, 0xd6, 0xed, 0xa0, 0x9b, + 0x68, 0x53, 0x1e, 0x25, 0x84, 0xbf, 0xf2, 0xc9, 0xad, 0x96, 0xdb, 0xe0, 0x41, 0x7a, 0x37, 0xc, + 0xaa, 0x91, 0xdc, 0xe7, 0x46, 0x7d, 0x30, 0xb, 0x6f, 0x54, 0x19, 0x22, 0x83, 0xb8, 0xf5, 0xce, + 0x3d, 0x6, 0x4b, 0x70, 0xd1, 0xea, 0xa7, 0x9c, 0xf8, 0xc3, 0x8e, 0xb5, 0x14, 0x2f, 0x62, 0x59, + 0x99, 0xa2, 0xef, 0xd4, 0x75, 0x4e, 0x3, 0x38, 0x5c, 0x67, 0x2a, 0x11, 0xb0, 0x8b, 0xc6, 0xfd, + 0xe, 0x35, 0x78, 0x43, 0xe2, 0xd9, 0x94, 0xaf, 0xcb, 0xf0, 0xbd, 0x86, 0x27, 0x1c, 0x51, 0x6a, + ], + [ + 0x0, 0x3c, 0x78, 0x44, 0xf0, 0xcc, 0x88, 0xb4, 0xfd, 0xc1, 0x85, 0xb9, 0xd, 0x31, 0x75, 0x49, + 0xe7, 0xdb, 0x9f, 0xa3, 0x17, 0x2b, 0x6f, 0x53, 0x1a, 0x26, 0x62, 0x5e, 0xea, 0xd6, 0x92, 0xae, + 0xd3, 0xef, 0xab, 0x97, 0x23, 0x1f, 0x5b, 0x67, 0x2e, 0x12, 0x56, 0x6a, 0xde, 0xe2, 0xa6, 0x9a, + 0x34, 0x8, 0x4c, 0x70, 0xc4, 0xf8, 0xbc, 0x80, 0xc9, 0xf5, 0xb1, 0x8d, 0x39, 0x5, 0x41, 0x7d, + 0xbb, 0x87, 0xc3, 0xff, 0x4b, 0x77, 0x33, 0xf, 0x46, 0x7a, 0x3e, 0x2, 0xb6, 0x8a, 0xce, 0xf2, + 0x5c, 0x60, 0x24, 0x18, 0xac, 0x90, 0xd4, 0xe8, 0xa1, 0x9d, 0xd9, 0xe5, 0x51, 0x6d, 0x29, 0x15, + 0x68, 0x54, 0x10, 0x2c, 0x98, 0xa4, 0xe0, 0xdc, 0x95, 0xa9, 0xed, 0xd1, 0x65, 0x59, 0x1d, 0x21, + 0x8f, 0xb3, 0xf7, 0xcb, 0x7f, 0x43, 0x7, 0x3b, 0x72, 0x4e, 0xa, 0x36, 0x82, 0xbe, 0xfa, 0xc6, + 0x6b, 0x57, 0x13, 0x2f, 0x9b, 0xa7, 0xe3, 0xdf, 0x96, 0xaa, 0xee, 0xd2, 0x66, 0x5a, 0x1e, 0x22, + 0x8c, 0xb0, 0xf4, 0xc8, 0x7c, 0x40, 0x4, 0x38, 0x71, 0x4d, 0x9, 0x35, 0x81, 0xbd, 0xf9, 0xc5, + 0xb8, 0x84, 0xc0, 0xfc, 0x48, 0x74, 0x30, 0xc, 0x45, 0x79, 0x3d, 0x1, 0xb5, 0x89, 0xcd, 0xf1, + 0x5f, 0x63, 0x27, 0x1b, 0xaf, 0x93, 0xd7, 0xeb, 0xa2, 0x9e, 0xda, 0xe6, 0x52, 0x6e, 0x2a, 0x16, + 0xd0, 0xec, 0xa8, 0x94, 0x20, 0x1c, 0x58, 0x64, 0x2d, 0x11, 0x55, 0x69, 0xdd, 0xe1, 0xa5, 0x99, + 0x37, 0xb, 0x4f, 0x73, 0xc7, 0xfb, 0xbf, 0x83, 0xca, 0xf6, 0xb2, 0x8e, 0x3a, 0x6, 0x42, 0x7e, + 0x3, 0x3f, 0x7b, 0x47, 0xf3, 0xcf, 0x8b, 0xb7, 0xfe, 0xc2, 0x86, 0xba, 0xe, 0x32, 0x76, 0x4a, + 0xe4, 0xd8, 0x9c, 0xa0, 0x14, 0x28, 0x6c, 0x50, 0x19, 0x25, 0x61, 0x5d, 0xe9, 0xd5, 0x91, 0xad, + ], + [ + 0x0, 0x3d, 0x7a, 0x47, 0xf4, 0xc9, 0x8e, 0xb3, 0xf5, 0xc8, 0x8f, 0xb2, 0x1, 0x3c, 0x7b, 0x46, + 0xf7, 0xca, 0x8d, 0xb0, 0x3, 0x3e, 0x79, 0x44, 0x2, 0x3f, 0x78, 0x45, 0xf6, 0xcb, 0x8c, 0xb1, + 0xf3, 0xce, 0x89, 0xb4, 0x7, 0x3a, 0x7d, 0x40, 0x6, 0x3b, 0x7c, 0x41, 0xf2, 0xcf, 0x88, 0xb5, + 0x4, 0x39, 0x7e, 0x43, 0xf0, 0xcd, 0x8a, 0xb7, 0xf1, 0xcc, 0x8b, 0xb6, 0x5, 0x38, 0x7f, 0x42, + 0xfb, 0xc6, 0x81, 0xbc, 0xf, 0x32, 0x75, 0x48, 0xe, 0x33, 0x74, 0x49, 0xfa, 0xc7, 0x80, 0xbd, + 0xc, 0x31, 0x76, 0x4b, 0xf8, 0xc5, 0x82, 0xbf, 0xf9, 0xc4, 0x83, 0xbe, 0xd, 0x30, 0x77, 0x4a, + 0x8, 0x35, 0x72, 0x4f, 0xfc, 0xc1, 0x86, 0xbb, 0xfd, 0xc0, 0x87, 0xba, 0x9, 0x34, 0x73, 0x4e, + 0xff, 0xc2, 0x85, 0xb8, 0xb, 0x36, 0x71, 0x4c, 0xa, 0x37, 0x70, 0x4d, 0xfe, 0xc3, 0x84, 0xb9, + 0xeb, 0xd6, 0x91, 0xac, 0x1f, 0x22, 0x65, 0x58, 0x1e, 0x23, 0x64, 0x59, 0xea, 0xd7, 0x90, 0xad, + 0x1c, 0x21, 0x66, 0x5b, 0xe8, 0xd5, 0x92, 0xaf, 0xe9, 0xd4, 0x93, 0xae, 0x1d, 0x20, 0x67, 0x5a, + 0x18, 0x25, 0x62, 0x5f, 0xec, 0xd1, 0x96, 0xab, 0xed, 0xd0, 0x97, 0xaa, 0x19, 0x24, 0x63, 0x5e, + 0xef, 0xd2, 0x95, 0xa8, 0x1b, 0x26, 0x61, 0x5c, 0x1a, 0x27, 0x60, 0x5d, 0xee, 0xd3, 0x94, 0xa9, + 0x10, 0x2d, 0x6a, 0x57, 0xe4, 0xd9, 0x9e, 0xa3, 0xe5, 0xd8, 0x9f, 0xa2, 0x11, 0x2c, 0x6b, 0x56, + 0xe7, 0xda, 0x9d, 0xa0, 0x13, 0x2e, 0x69, 0x54, 0x12, 0x2f, 0x68, 0x55, 0xe6, 0xdb, 0x9c, 0xa1, + 0xe3, 0xde, 0x99, 0xa4, 0x17, 0x2a, 0x6d, 0x50, 0x16, 0x2b, 0x6c, 0x51, 0xe2, 0xdf, 0x98, 0xa5, + 0x14, 0x29, 0x6e, 0x53, 0xe0, 0xdd, 0x9a, 0xa7, 0xe1, 0xdc, 0x9b, 0xa6, 0x15, 0x28, 0x6f, 0x52, + ], + [ + 0x0, 0x3e, 0x7c, 0x42, 0xf8, 0xc6, 0x84, 0xba, 0xed, 0xd3, 0x91, 0xaf, 0x15, 0x2b, 0x69, 0x57, + 0xc7, 0xf9, 0xbb, 0x85, 0x3f, 0x1, 0x43, 0x7d, 0x2a, 0x14, 0x56, 0x68, 0xd2, 0xec, 0xae, 0x90, + 0x93, 0xad, 0xef, 0xd1, 0x6b, 0x55, 0x17, 0x29, 0x7e, 0x40, 0x2, 0x3c, 0x86, 0xb8, 0xfa, 0xc4, + 0x54, 0x6a, 0x28, 0x16, 0xac, 0x92, 0xd0, 0xee, 0xb9, 0x87, 0xc5, 0xfb, 0x41, 0x7f, 0x3d, 0x3, + 0x3b, 0x5, 0x47, 0x79, 0xc3, 0xfd, 0xbf, 0x81, 0xd6, 0xe8, 0xaa, 0x94, 0x2e, 0x10, 0x52, 0x6c, + 0xfc, 0xc2, 0x80, 0xbe, 0x4, 0x3a, 0x78, 0x46, 0x11, 0x2f, 0x6d, 0x53, 0xe9, 0xd7, 0x95, 0xab, + 0xa8, 0x96, 0xd4, 0xea, 0x50, 0x6e, 0x2c, 0x12, 0x45, 0x7b, 0x39, 0x7, 0xbd, 0x83, 0xc1, 0xff, + 0x6f, 0x51, 0x13, 0x2d, 0x97, 0xa9, 0xeb, 0xd5, 0x82, 0xbc, 0xfe, 0xc0, 0x7a, 0x44, 0x6, 0x38, + 0x76, 0x48, 0xa, 0x34, 0x8e, 0xb0, 0xf2, 0xcc, 0x9b, 0xa5, 0xe7, 0xd9, 0x63, 0x5d, 0x1f, 0x21, + 0xb1, 0x8f, 0xcd, 0xf3, 0x49, 0x77, 0x35, 0xb, 0x5c, 0x62, 0x20, 0x1e, 0xa4, 0x9a, 0xd8, 0xe6, + 0xe5, 0xdb, 0x99, 0xa7, 0x1d, 0x23, 0x61, 0x5f, 0x8, 0x36, 0x74, 0x4a, 0xf0, 0xce, 0x8c, 0xb2, + 0x22, 0x1c, 0x5e, 0x60, 0xda, 0xe4, 0xa6, 0x98, 0xcf, 0xf1, 0xb3, 0x8d, 0x37, 0x9, 0x4b, 0x75, + 0x4d, 0x73, 0x31, 0xf, 0xb5, 0x8b, 0xc9, 0xf7, 0xa0, 0x9e, 0xdc, 0xe2, 0x58, 0x66, 0x24, 0x1a, + 0x8a, 0xb4, 0xf6, 0xc8, 0x72, 0x4c, 0xe, 0x30, 0x67, 0x59, 0x1b, 0x25, 0x9f, 0xa1, 0xe3, 0xdd, + 0xde, 0xe0, 0xa2, 0x9c, 0x26, 0x18, 0x5a, 0x64, 0x33, 0xd, 0x4f, 0x71, 0xcb, 0xf5, 0xb7, 0x89, + 0x19, 0x27, 0x65, 0x5b, 0xe1, 0xdf, 0x9d, 0xa3, 0xf4, 0xca, 0x88, 0xb6, 0xc, 0x32, 0x70, 0x4e, + ], + [ + 0x0, 0x3f, 0x7e, 0x41, 0xfc, 0xc3, 0x82, 0xbd, 0xe5, 0xda, 0x9b, 0xa4, 0x19, 0x26, 0x67, 0x58, + 0xd7, 0xe8, 0xa9, 0x96, 0x2b, 0x14, 0x55, 0x6a, 0x32, 0xd, 0x4c, 0x73, 0xce, 0xf1, 0xb0, 0x8f, + 0xb3, 0x8c, 0xcd, 0xf2, 0x4f, 0x70, 0x31, 0xe, 0x56, 0x69, 0x28, 0x17, 0xaa, 0x95, 0xd4, 0xeb, + 0x64, 0x5b, 0x1a, 0x25, 0x98, 0xa7, 0xe6, 0xd9, 0x81, 0xbe, 0xff, 0xc0, 0x7d, 0x42, 0x3, 0x3c, + 0x7b, 0x44, 0x5, 0x3a, 0x87, 0xb8, 0xf9, 0xc6, 0x9e, 0xa1, 0xe0, 0xdf, 0x62, 0x5d, 0x1c, 0x23, + 0xac, 0x93, 0xd2, 0xed, 0x50, 0x6f, 0x2e, 0x11, 0x49, 0x76, 0x37, 0x8, 0xb5, 0x8a, 0xcb, 0xf4, + 0xc8, 0xf7, 0xb6, 0x89, 0x34, 0xb, 0x4a, 0x75, 0x2d, 0x12, 0x53, 0x6c, 0xd1, 0xee, 0xaf, 0x90, + 0x1f, 0x20, 0x61, 0x5e, 0xe3, 0xdc, 0x9d, 0xa2, 0xfa, 0xc5, 0x84, 0xbb, 0x6, 0x39, 0x78, 0x47, + 0xf6, 0xc9, 0x88, 0xb7, 0xa, 0x35, 0x74, 0x4b, 0x13, 0x2c, 0x6d, 0x52, 0xef, 0xd0, 0x91, 0xae, + 0x21, 0x1e, 0x5f, 0x60, 0xdd, 0xe2, 0xa3, 0x9c, 0xc4, 0xfb, 0xba, 0x85, 0x38, 0x7, 0x46, 0x79, + 0x45, 0x7a, 0x3b, 0x4, 0xb9, 0x86, 0xc7, 0xf8, 0xa0, 0x9f, 0xde, 0xe1, 0x5c, 0x63, 0x22, 0x1d, + 0x92, 0xad, 0xec, 0xd3, 0x6e, 0x51, 0x10, 0x2f, 0x77, 0x48, 0x9, 0x36, 0x8b, 0xb4, 0xf5, 0xca, + 0x8d, 0xb2, 0xf3, 0xcc, 0x71, 0x4e, 0xf, 0x30, 0x68, 0x57, 0x16, 0x29, 0x94, 0xab, 0xea, 0xd5, + 0x5a, 0x65, 0x24, 0x1b, 0xa6, 0x99, 0xd8, 0xe7, 0xbf, 0x80, 0xc1, 0xfe, 0x43, 0x7c, 0x3d, 0x2, + 0x3e, 0x1, 0x40, 0x7f, 0xc2, 0xfd, 0xbc, 0x83, 0xdb, 0xe4, 0xa5, 0x9a, 0x27, 0x18, 0x59, 0x66, + 0xe9, 0xd6, 0x97, 0xa8, 0x15, 0x2a, 0x6b, 0x54, 0xc, 0x33, 0x72, 0x4d, 0xf0, 0xcf, 0x8e, 0xb1, + ], + [ + 0x0, 0x40, 0x80, 0xc0, 0x1d, 0x5d, 0x9d, 0xdd, 0x3a, 0x7a, 0xba, 0xfa, 0x27, 0x67, 0xa7, 0xe7, + 0x74, 0x34, 0xf4, 0xb4, 0x69, 0x29, 0xe9, 0xa9, 0x4e, 0xe, 0xce, 0x8e, 0x53, 0x13, 0xd3, 0x93, + 0xe8, 0xa8, 0x68, 0x28, 0xf5, 0xb5, 0x75, 0x35, 0xd2, 0x92, 0x52, 0x12, 0xcf, 0x8f, 0x4f, 0xf, + 0x9c, 0xdc, 0x1c, 0x5c, 0x81, 0xc1, 0x1, 0x41, 0xa6, 0xe6, 0x26, 0x66, 0xbb, 0xfb, 0x3b, 0x7b, + 0xcd, 0x8d, 0x4d, 0xd, 0xd0, 0x90, 0x50, 0x10, 0xf7, 0xb7, 0x77, 0x37, 0xea, 0xaa, 0x6a, 0x2a, + 0xb9, 0xf9, 0x39, 0x79, 0xa4, 0xe4, 0x24, 0x64, 0x83, 0xc3, 0x3, 0x43, 0x9e, 0xde, 0x1e, 0x5e, + 0x25, 0x65, 0xa5, 0xe5, 0x38, 0x78, 0xb8, 0xf8, 0x1f, 0x5f, 0x9f, 0xdf, 0x2, 0x42, 0x82, 0xc2, + 0x51, 0x11, 0xd1, 0x91, 0x4c, 0xc, 0xcc, 0x8c, 0x6b, 0x2b, 0xeb, 0xab, 0x76, 0x36, 0xf6, 0xb6, + 0x87, 0xc7, 0x7, 0x47, 0x9a, 0xda, 0x1a, 0x5a, 0xbd, 0xfd, 0x3d, 0x7d, 0xa0, 0xe0, 0x20, 0x60, + 0xf3, 0xb3, 0x73, 0x33, 0xee, 0xae, 0x6e, 0x2e, 0xc9, 0x89, 0x49, 0x9, 0xd4, 0x94, 0x54, 0x14, + 0x6f, 0x2f, 0xef, 0xaf, 0x72, 0x32, 0xf2, 0xb2, 0x55, 0x15, 0xd5, 0x95, 0x48, 0x8, 0xc8, 0x88, + 0x1b, 0x5b, 0x9b, 0xdb, 0x6, 0x46, 0x86, 0xc6, 0x21, 0x61, 0xa1, 0xe1, 0x3c, 0x7c, 0xbc, 0xfc, + 0x4a, 0xa, 0xca, 0x8a, 0x57, 0x17, 0xd7, 0x97, 0x70, 0x30, 0xf0, 0xb0, 0x6d, 0x2d, 0xed, 0xad, + 0x3e, 0x7e, 0xbe, 0xfe, 0x23, 0x63, 0xa3, 0xe3, 0x4, 0x44, 0x84, 0xc4, 0x19, 0x59, 0x99, 0xd9, + 0xa2, 0xe2, 0x22, 0x62, 0xbf, 0xff, 0x3f, 0x7f, 0x98, 0xd8, 0x18, 0x58, 0x85, 0xc5, 0x5, 0x45, + 0xd6, 0x96, 0x56, 0x16, 0xcb, 0x8b, 0x4b, 0xb, 0xec, 0xac, 0x6c, 0x2c, 0xf1, 0xb1, 0x71, 0x31, + ], + [ + 0x0, 0x41, 0x82, 0xc3, 0x19, 0x58, 0x9b, 0xda, 0x32, 0x73, 0xb0, 0xf1, 0x2b, 0x6a, 0xa9, 0xe8, + 0x64, 0x25, 0xe6, 0xa7, 0x7d, 0x3c, 0xff, 0xbe, 0x56, 0x17, 0xd4, 0x95, 0x4f, 0xe, 0xcd, 0x8c, + 0xc8, 0x89, 0x4a, 0xb, 0xd1, 0x90, 0x53, 0x12, 0xfa, 0xbb, 0x78, 0x39, 0xe3, 0xa2, 0x61, 0x20, + 0xac, 0xed, 0x2e, 0x6f, 0xb5, 0xf4, 0x37, 0x76, 0x9e, 0xdf, 0x1c, 0x5d, 0x87, 0xc6, 0x5, 0x44, + 0x8d, 0xcc, 0xf, 0x4e, 0x94, 0xd5, 0x16, 0x57, 0xbf, 0xfe, 0x3d, 0x7c, 0xa6, 0xe7, 0x24, 0x65, + 0xe9, 0xa8, 0x6b, 0x2a, 0xf0, 0xb1, 0x72, 0x33, 0xdb, 0x9a, 0x59, 0x18, 0xc2, 0x83, 0x40, 0x1, + 0x45, 0x4, 0xc7, 0x86, 0x5c, 0x1d, 0xde, 0x9f, 0x77, 0x36, 0xf5, 0xb4, 0x6e, 0x2f, 0xec, 0xad, + 0x21, 0x60, 0xa3, 0xe2, 0x38, 0x79, 0xba, 0xfb, 0x13, 0x52, 0x91, 0xd0, 0xa, 0x4b, 0x88, 0xc9, + 0x7, 0x46, 0x85, 0xc4, 0x1e, 0x5f, 0x9c, 0xdd, 0x35, 0x74, 0xb7, 0xf6, 0x2c, 0x6d, 0xae, 0xef, + 0x63, 0x22, 0xe1, 0xa0, 0x7a, 0x3b, 0xf8, 0xb9, 0x51, 0x10, 0xd3, 0x92, 0x48, 0x9, 0xca, 0x8b, + 0xcf, 0x8e, 0x4d, 0xc, 0xd6, 0x97, 0x54, 0x15, 0xfd, 0xbc, 0x7f, 0x3e, 0xe4, 0xa5, 0x66, 0x27, + 0xab, 0xea, 0x29, 0x68, 0xb2, 0xf3, 0x30, 0x71, 0x99, 0xd8, 0x1b, 0x5a, 0x80, 0xc1, 0x2, 0x43, + 0x8a, 0xcb, 0x8, 0x49, 0x93, 0xd2, 0x11, 0x50, 0xb8, 0xf9, 0x3a, 0x7b, 0xa1, 0xe0, 0x23, 0x62, + 0xee, 0xaf, 0x6c, 0x2d, 0xf7, 0xb6, 0x75, 0x34, 0xdc, 0x9d, 0x5e, 0x1f, 0xc5, 0x84, 0x47, 0x6, + 0x42, 0x3, 0xc0, 0x81, 0x5b, 0x1a, 0xd9, 0x98, 0x70, 0x31, 0xf2, 0xb3, 0x69, 0x28, 0xeb, 0xaa, + 0x26, 0x67, 0xa4, 0xe5, 0x3f, 0x7e, 0xbd, 0xfc, 0x14, 0x55, 0x96, 0xd7, 0xd, 0x4c, 0x8f, 0xce, + ], + [ + 0x0, 0x42, 0x84, 0xc6, 0x15, 0x57, 0x91, 0xd3, 0x2a, 0x68, 0xae, 0xec, 0x3f, 0x7d, 0xbb, 0xf9, + 0x54, 0x16, 0xd0, 0x92, 0x41, 0x3, 0xc5, 0x87, 0x7e, 0x3c, 0xfa, 0xb8, 0x6b, 0x29, 0xef, 0xad, + 0xa8, 0xea, 0x2c, 0x6e, 0xbd, 0xff, 0x39, 0x7b, 0x82, 0xc0, 0x6, 0x44, 0x97, 0xd5, 0x13, 0x51, + 0xfc, 0xbe, 0x78, 0x3a, 0xe9, 0xab, 0x6d, 0x2f, 0xd6, 0x94, 0x52, 0x10, 0xc3, 0x81, 0x47, 0x5, + 0x4d, 0xf, 0xc9, 0x8b, 0x58, 0x1a, 0xdc, 0x9e, 0x67, 0x25, 0xe3, 0xa1, 0x72, 0x30, 0xf6, 0xb4, + 0x19, 0x5b, 0x9d, 0xdf, 0xc, 0x4e, 0x88, 0xca, 0x33, 0x71, 0xb7, 0xf5, 0x26, 0x64, 0xa2, 0xe0, + 0xe5, 0xa7, 0x61, 0x23, 0xf0, 0xb2, 0x74, 0x36, 0xcf, 0x8d, 0x4b, 0x9, 0xda, 0x98, 0x5e, 0x1c, + 0xb1, 0xf3, 0x35, 0x77, 0xa4, 0xe6, 0x20, 0x62, 0x9b, 0xd9, 0x1f, 0x5d, 0x8e, 0xcc, 0xa, 0x48, + 0x9a, 0xd8, 0x1e, 0x5c, 0x8f, 0xcd, 0xb, 0x49, 0xb0, 0xf2, 0x34, 0x76, 0xa5, 0xe7, 0x21, 0x63, + 0xce, 0x8c, 0x4a, 0x8, 0xdb, 0x99, 0x5f, 0x1d, 0xe4, 0xa6, 0x60, 0x22, 0xf1, 0xb3, 0x75, 0x37, + 0x32, 0x70, 0xb6, 0xf4, 0x27, 0x65, 0xa3, 0xe1, 0x18, 0x5a, 0x9c, 0xde, 0xd, 0x4f, 0x89, 0xcb, + 0x66, 0x24, 0xe2, 0xa0, 0x73, 0x31, 0xf7, 0xb5, 0x4c, 0xe, 0xc8, 0x8a, 0x59, 0x1b, 0xdd, 0x9f, + 0xd7, 0x95, 0x53, 0x11, 0xc2, 0x80, 0x46, 0x4, 0xfd, 0xbf, 0x79, 0x3b, 0xe8, 0xaa, 0x6c, 0x2e, + 0x83, 0xc1, 0x7, 0x45, 0x96, 0xd4, 0x12, 0x50, 0xa9, 0xeb, 0x2d, 0x6f, 0xbc, 0xfe, 0x38, 0x7a, + 0x7f, 0x3d, 0xfb, 0xb9, 0x6a, 0x28, 0xee, 0xac, 0x55, 0x17, 0xd1, 0x93, 0x40, 0x2, 0xc4, 0x86, + 0x2b, 0x69, 0xaf, 0xed, 0x3e, 0x7c, 0xba, 0xf8, 0x1, 0x43, 0x85, 0xc7, 0x14, 0x56, 0x90, 0xd2, + ], + [ + 0x0, 0x43, 0x86, 0xc5, 0x11, 0x52, 0x97, 0xd4, 0x22, 0x61, 0xa4, 0xe7, 0x33, 0x70, 0xb5, 0xf6, + 0x44, 0x7, 0xc2, 0x81, 0x55, 0x16, 0xd3, 0x90, 0x66, 0x25, 0xe0, 0xa3, 0x77, 0x34, 0xf1, 0xb2, + 0x88, 0xcb, 0xe, 0x4d, 0x99, 0xda, 0x1f, 0x5c, 0xaa, 0xe9, 0x2c, 0x6f, 0xbb, 0xf8, 0x3d, 0x7e, + 0xcc, 0x8f, 0x4a, 0x9, 0xdd, 0x9e, 0x5b, 0x18, 0xee, 0xad, 0x68, 0x2b, 0xff, 0xbc, 0x79, 0x3a, + 0xd, 0x4e, 0x8b, 0xc8, 0x1c, 0x5f, 0x9a, 0xd9, 0x2f, 0x6c, 0xa9, 0xea, 0x3e, 0x7d, 0xb8, 0xfb, + 0x49, 0xa, 0xcf, 0x8c, 0x58, 0x1b, 0xde, 0x9d, 0x6b, 0x28, 0xed, 0xae, 0x7a, 0x39, 0xfc, 0xbf, + 0x85, 0xc6, 0x3, 0x40, 0x94, 0xd7, 0x12, 0x51, 0xa7, 0xe4, 0x21, 0x62, 0xb6, 0xf5, 0x30, 0x73, + 0xc1, 0x82, 0x47, 0x4, 0xd0, 0x93, 0x56, 0x15, 0xe3, 0xa0, 0x65, 0x26, 0xf2, 0xb1, 0x74, 0x37, + 0x1a, 0x59, 0x9c, 0xdf, 0xb, 0x48, 0x8d, 0xce, 0x38, 0x7b, 0xbe, 0xfd, 0x29, 0x6a, 0xaf, 0xec, + 0x5e, 0x1d, 0xd8, 0x9b, 0x4f, 0xc, 0xc9, 0x8a, 0x7c, 0x3f, 0xfa, 0xb9, 0x6d, 0x2e, 0xeb, 0xa8, + 0x92, 0xd1, 0x14, 0x57, 0x83, 0xc0, 0x5, 0x46, 0xb0, 0xf3, 0x36, 0x75, 0xa1, 0xe2, 0x27, 0x64, + 0xd6, 0x95, 0x50, 0x13, 0xc7, 0x84, 0x41, 0x2, 0xf4, 0xb7, 0x72, 0x31, 0xe5, 0xa6, 0x63, 0x20, + 0x17, 0x54, 0x91, 0xd2, 0x6, 0x45, 0x80, 0xc3, 0x35, 0x76, 0xb3, 0xf0, 0x24, 0x67, 0xa2, 0xe1, + 0x53, 0x10, 0xd5, 0x96, 0x42, 0x1, 0xc4, 0x87, 0x71, 0x32, 0xf7, 0xb4, 0x60, 0x23, 0xe6, 0xa5, + 0x9f, 0xdc, 0x19, 0x5a, 0x8e, 0xcd, 0x8, 0x4b, 0xbd, 0xfe, 0x3b, 0x78, 0xac, 0xef, 0x2a, 0x69, + 0xdb, 0x98, 0x5d, 0x1e, 0xca, 0x89, 0x4c, 0xf, 0xf9, 0xba, 0x7f, 0x3c, 0xe8, 0xab, 0x6e, 0x2d, + ], + [ + 0x0, 0x44, 0x88, 0xcc, 0xd, 0x49, 0x85, 0xc1, 0x1a, 0x5e, 0x92, 0xd6, 0x17, 0x53, 0x9f, 0xdb, + 0x34, 0x70, 0xbc, 0xf8, 0x39, 0x7d, 0xb1, 0xf5, 0x2e, 0x6a, 0xa6, 0xe2, 0x23, 0x67, 0xab, 0xef, + 0x68, 0x2c, 0xe0, 0xa4, 0x65, 0x21, 0xed, 0xa9, 0x72, 0x36, 0xfa, 0xbe, 0x7f, 0x3b, 0xf7, 0xb3, + 0x5c, 0x18, 0xd4, 0x90, 0x51, 0x15, 0xd9, 0x9d, 0x46, 0x2, 0xce, 0x8a, 0x4b, 0xf, 0xc3, 0x87, + 0xd0, 0x94, 0x58, 0x1c, 0xdd, 0x99, 0x55, 0x11, 0xca, 0x8e, 0x42, 0x6, 0xc7, 0x83, 0x4f, 0xb, + 0xe4, 0xa0, 0x6c, 0x28, 0xe9, 0xad, 0x61, 0x25, 0xfe, 0xba, 0x76, 0x32, 0xf3, 0xb7, 0x7b, 0x3f, + 0xb8, 0xfc, 0x30, 0x74, 0xb5, 0xf1, 0x3d, 0x79, 0xa2, 0xe6, 0x2a, 0x6e, 0xaf, 0xeb, 0x27, 0x63, + 0x8c, 0xc8, 0x4, 0x40, 0x81, 0xc5, 0x9, 0x4d, 0x96, 0xd2, 0x1e, 0x5a, 0x9b, 0xdf, 0x13, 0x57, + 0xbd, 0xf9, 0x35, 0x71, 0xb0, 0xf4, 0x38, 0x7c, 0xa7, 0xe3, 0x2f, 0x6b, 0xaa, 0xee, 0x22, 0x66, + 0x89, 0xcd, 0x1, 0x45, 0x84, 0xc0, 0xc, 0x48, 0x93, 0xd7, 0x1b, 0x5f, 0x9e, 0xda, 0x16, 0x52, + 0xd5, 0x91, 0x5d, 0x19, 0xd8, 0x9c, 0x50, 0x14, 0xcf, 0x8b, 0x47, 0x3, 0xc2, 0x86, 0x4a, 0xe, + 0xe1, 0xa5, 0x69, 0x2d, 0xec, 0xa8, 0x64, 0x20, 0xfb, 0xbf, 0x73, 0x37, 0xf6, 0xb2, 0x7e, 0x3a, + 0x6d, 0x29, 0xe5, 0xa1, 0x60, 0x24, 0xe8, 0xac, 0x77, 0x33, 0xff, 0xbb, 0x7a, 0x3e, 0xf2, 0xb6, + 0x59, 0x1d, 0xd1, 0x95, 0x54, 0x10, 0xdc, 0x98, 0x43, 0x7, 0xcb, 0x8f, 0x4e, 0xa, 0xc6, 0x82, + 0x5, 0x41, 0x8d, 0xc9, 0x8, 0x4c, 0x80, 0xc4, 0x1f, 0x5b, 0x97, 0xd3, 0x12, 0x56, 0x9a, 0xde, + 0x31, 0x75, 0xb9, 0xfd, 0x3c, 0x78, 0xb4, 0xf0, 0x2b, 0x6f, 0xa3, 0xe7, 0x26, 0x62, 0xae, 0xea, + ], + [ + 0x0, 0x45, 0x8a, 0xcf, 0x9, 0x4c, 0x83, 0xc6, 0x12, 0x57, 0x98, 0xdd, 0x1b, 0x5e, 0x91, 0xd4, + 0x24, 0x61, 0xae, 0xeb, 0x2d, 0x68, 0xa7, 0xe2, 0x36, 0x73, 0xbc, 0xf9, 0x3f, 0x7a, 0xb5, 0xf0, + 0x48, 0xd, 0xc2, 0x87, 0x41, 0x4, 0xcb, 0x8e, 0x5a, 0x1f, 0xd0, 0x95, 0x53, 0x16, 0xd9, 0x9c, + 0x6c, 0x29, 0xe6, 0xa3, 0x65, 0x20, 0xef, 0xaa, 0x7e, 0x3b, 0xf4, 0xb1, 0x77, 0x32, 0xfd, 0xb8, + 0x90, 0xd5, 0x1a, 0x5f, 0x99, 0xdc, 0x13, 0x56, 0x82, 0xc7, 0x8, 0x4d, 0x8b, 0xce, 0x1, 0x44, + 0xb4, 0xf1, 0x3e, 0x7b, 0xbd, 0xf8, 0x37, 0x72, 0xa6, 0xe3, 0x2c, 0x69, 0xaf, 0xea, 0x25, 0x60, + 0xd8, 0x9d, 0x52, 0x17, 0xd1, 0x94, 0x5b, 0x1e, 0xca, 0x8f, 0x40, 0x5, 0xc3, 0x86, 0x49, 0xc, + 0xfc, 0xb9, 0x76, 0x33, 0xf5, 0xb0, 0x7f, 0x3a, 0xee, 0xab, 0x64, 0x21, 0xe7, 0xa2, 0x6d, 0x28, + 0x3d, 0x78, 0xb7, 0xf2, 0x34, 0x71, 0xbe, 0xfb, 0x2f, 0x6a, 0xa5, 0xe0, 0x26, 0x63, 0xac, 0xe9, + 0x19, 0x5c, 0x93, 0xd6, 0x10, 0x55, 0x9a, 0xdf, 0xb, 0x4e, 0x81, 0xc4, 0x2, 0x47, 0x88, 0xcd, + 0x75, 0x30, 0xff, 0xba, 0x7c, 0x39, 0xf6, 0xb3, 0x67, 0x22, 0xed, 0xa8, 0x6e, 0x2b, 0xe4, 0xa1, + 0x51, 0x14, 0xdb, 0x9e, 0x58, 0x1d, 0xd2, 0x97, 0x43, 0x6, 0xc9, 0x8c, 0x4a, 0xf, 0xc0, 0x85, + 0xad, 0xe8, 0x27, 0x62, 0xa4, 0xe1, 0x2e, 0x6b, 0xbf, 0xfa, 0x35, 0x70, 0xb6, 0xf3, 0x3c, 0x79, + 0x89, 0xcc, 0x3, 0x46, 0x80, 0xc5, 0xa, 0x4f, 0x9b, 0xde, 0x11, 0x54, 0x92, 0xd7, 0x18, 0x5d, + 0xe5, 0xa0, 0x6f, 0x2a, 0xec, 0xa9, 0x66, 0x23, 0xf7, 0xb2, 0x7d, 0x38, 0xfe, 0xbb, 0x74, 0x31, + 0xc1, 0x84, 0x4b, 0xe, 0xc8, 0x8d, 0x42, 0x7, 0xd3, 0x96, 0x59, 0x1c, 0xda, 0x9f, 0x50, 0x15, + ], + [ + 0x0, 0x46, 0x8c, 0xca, 0x5, 0x43, 0x89, 0xcf, 0xa, 0x4c, 0x86, 0xc0, 0xf, 0x49, 0x83, 0xc5, + 0x14, 0x52, 0x98, 0xde, 0x11, 0x57, 0x9d, 0xdb, 0x1e, 0x58, 0x92, 0xd4, 0x1b, 0x5d, 0x97, 0xd1, + 0x28, 0x6e, 0xa4, 0xe2, 0x2d, 0x6b, 0xa1, 0xe7, 0x22, 0x64, 0xae, 0xe8, 0x27, 0x61, 0xab, 0xed, + 0x3c, 0x7a, 0xb0, 0xf6, 0x39, 0x7f, 0xb5, 0xf3, 0x36, 0x70, 0xba, 0xfc, 0x33, 0x75, 0xbf, 0xf9, + 0x50, 0x16, 0xdc, 0x9a, 0x55, 0x13, 0xd9, 0x9f, 0x5a, 0x1c, 0xd6, 0x90, 0x5f, 0x19, 0xd3, 0x95, + 0x44, 0x2, 0xc8, 0x8e, 0x41, 0x7, 0xcd, 0x8b, 0x4e, 0x8, 0xc2, 0x84, 0x4b, 0xd, 0xc7, 0x81, + 0x78, 0x3e, 0xf4, 0xb2, 0x7d, 0x3b, 0xf1, 0xb7, 0x72, 0x34, 0xfe, 0xb8, 0x77, 0x31, 0xfb, 0xbd, + 0x6c, 0x2a, 0xe0, 0xa6, 0x69, 0x2f, 0xe5, 0xa3, 0x66, 0x20, 0xea, 0xac, 0x63, 0x25, 0xef, 0xa9, + 0xa0, 0xe6, 0x2c, 0x6a, 0xa5, 0xe3, 0x29, 0x6f, 0xaa, 0xec, 0x26, 0x60, 0xaf, 0xe9, 0x23, 0x65, + 0xb4, 0xf2, 0x38, 0x7e, 0xb1, 0xf7, 0x3d, 0x7b, 0xbe, 0xf8, 0x32, 0x74, 0xbb, 0xfd, 0x37, 0x71, + 0x88, 0xce, 0x4, 0x42, 0x8d, 0xcb, 0x1, 0x47, 0x82, 0xc4, 0xe, 0x48, 0x87, 0xc1, 0xb, 0x4d, + 0x9c, 0xda, 0x10, 0x56, 0x99, 0xdf, 0x15, 0x53, 0x96, 0xd0, 0x1a, 0x5c, 0x93, 0xd5, 0x1f, 0x59, + 0xf0, 0xb6, 0x7c, 0x3a, 0xf5, 0xb3, 0x79, 0x3f, 0xfa, 0xbc, 0x76, 0x30, 0xff, 0xb9, 0x73, 0x35, + 0xe4, 0xa2, 0x68, 0x2e, 0xe1, 0xa7, 0x6d, 0x2b, 0xee, 0xa8, 0x62, 0x24, 0xeb, 0xad, 0x67, 0x21, + 0xd8, 0x9e, 0x54, 0x12, 0xdd, 0x9b, 0x51, 0x17, 0xd2, 0x94, 0x5e, 0x18, 0xd7, 0x91, 0x5b, 0x1d, + 0xcc, 0x8a, 0x40, 0x6, 0xc9, 0x8f, 0x45, 0x3, 0xc6, 0x80, 0x4a, 0xc, 0xc3, 0x85, 0x4f, 0x9, + ], + [ + 0x0, 0x47, 0x8e, 0xc9, 0x1, 0x46, 0x8f, 0xc8, 0x2, 0x45, 0x8c, 0xcb, 0x3, 0x44, 0x8d, 0xca, 0x4, + 0x43, 0x8a, 0xcd, 0x5, 0x42, 0x8b, 0xcc, 0x6, 0x41, 0x88, 0xcf, 0x7, 0x40, 0x89, 0xce, 0x8, + 0x4f, 0x86, 0xc1, 0x9, 0x4e, 0x87, 0xc0, 0xa, 0x4d, 0x84, 0xc3, 0xb, 0x4c, 0x85, 0xc2, 0xc, + 0x4b, 0x82, 0xc5, 0xd, 0x4a, 0x83, 0xc4, 0xe, 0x49, 0x80, 0xc7, 0xf, 0x48, 0x81, 0xc6, 0x10, + 0x57, 0x9e, 0xd9, 0x11, 0x56, 0x9f, 0xd8, 0x12, 0x55, 0x9c, 0xdb, 0x13, 0x54, 0x9d, 0xda, 0x14, + 0x53, 0x9a, 0xdd, 0x15, 0x52, 0x9b, 0xdc, 0x16, 0x51, 0x98, 0xdf, 0x17, 0x50, 0x99, 0xde, 0x18, + 0x5f, 0x96, 0xd1, 0x19, 0x5e, 0x97, 0xd0, 0x1a, 0x5d, 0x94, 0xd3, 0x1b, 0x5c, 0x95, 0xd2, 0x1c, + 0x5b, 0x92, 0xd5, 0x1d, 0x5a, 0x93, 0xd4, 0x1e, 0x59, 0x90, 0xd7, 0x1f, 0x58, 0x91, 0xd6, 0x20, + 0x67, 0xae, 0xe9, 0x21, 0x66, 0xaf, 0xe8, 0x22, 0x65, 0xac, 0xeb, 0x23, 0x64, 0xad, 0xea, 0x24, + 0x63, 0xaa, 0xed, 0x25, 0x62, 0xab, 0xec, 0x26, 0x61, 0xa8, 0xef, 0x27, 0x60, 0xa9, 0xee, 0x28, + 0x6f, 0xa6, 0xe1, 0x29, 0x6e, 0xa7, 0xe0, 0x2a, 0x6d, 0xa4, 0xe3, 0x2b, 0x6c, 0xa5, 0xe2, 0x2c, + 0x6b, 0xa2, 0xe5, 0x2d, 0x6a, 0xa3, 0xe4, 0x2e, 0x69, 0xa0, 0xe7, 0x2f, 0x68, 0xa1, 0xe6, 0x30, + 0x77, 0xbe, 0xf9, 0x31, 0x76, 0xbf, 0xf8, 0x32, 0x75, 0xbc, 0xfb, 0x33, 0x74, 0xbd, 0xfa, 0x34, + 0x73, 0xba, 0xfd, 0x35, 0x72, 0xbb, 0xfc, 0x36, 0x71, 0xb8, 0xff, 0x37, 0x70, 0xb9, 0xfe, 0x38, + 0x7f, 0xb6, 0xf1, 0x39, 0x7e, 0xb7, 0xf0, 0x3a, 0x7d, 0xb4, 0xf3, 0x3b, 0x7c, 0xb5, 0xf2, 0x3c, + 0x7b, 0xb2, 0xf5, 0x3d, 0x7a, 0xb3, 0xf4, 0x3e, 0x79, 0xb0, 0xf7, 0x3f, 0x78, 0xb1, 0xf6, + ], + [ + 0x0, 0x48, 0x90, 0xd8, 0x3d, 0x75, 0xad, 0xe5, 0x7a, 0x32, 0xea, 0xa2, 0x47, 0xf, 0xd7, 0x9f, + 0xf4, 0xbc, 0x64, 0x2c, 0xc9, 0x81, 0x59, 0x11, 0x8e, 0xc6, 0x1e, 0x56, 0xb3, 0xfb, 0x23, 0x6b, + 0xf5, 0xbd, 0x65, 0x2d, 0xc8, 0x80, 0x58, 0x10, 0x8f, 0xc7, 0x1f, 0x57, 0xb2, 0xfa, 0x22, 0x6a, + 0x1, 0x49, 0x91, 0xd9, 0x3c, 0x74, 0xac, 0xe4, 0x7b, 0x33, 0xeb, 0xa3, 0x46, 0xe, 0xd6, 0x9e, + 0xf7, 0xbf, 0x67, 0x2f, 0xca, 0x82, 0x5a, 0x12, 0x8d, 0xc5, 0x1d, 0x55, 0xb0, 0xf8, 0x20, 0x68, + 0x3, 0x4b, 0x93, 0xdb, 0x3e, 0x76, 0xae, 0xe6, 0x79, 0x31, 0xe9, 0xa1, 0x44, 0xc, 0xd4, 0x9c, + 0x2, 0x4a, 0x92, 0xda, 0x3f, 0x77, 0xaf, 0xe7, 0x78, 0x30, 0xe8, 0xa0, 0x45, 0xd, 0xd5, 0x9d, + 0xf6, 0xbe, 0x66, 0x2e, 0xcb, 0x83, 0x5b, 0x13, 0x8c, 0xc4, 0x1c, 0x54, 0xb1, 0xf9, 0x21, 0x69, + 0xf3, 0xbb, 0x63, 0x2b, 0xce, 0x86, 0x5e, 0x16, 0x89, 0xc1, 0x19, 0x51, 0xb4, 0xfc, 0x24, 0x6c, + 0x7, 0x4f, 0x97, 0xdf, 0x3a, 0x72, 0xaa, 0xe2, 0x7d, 0x35, 0xed, 0xa5, 0x40, 0x8, 0xd0, 0x98, + 0x6, 0x4e, 0x96, 0xde, 0x3b, 0x73, 0xab, 0xe3, 0x7c, 0x34, 0xec, 0xa4, 0x41, 0x9, 0xd1, 0x99, + 0xf2, 0xba, 0x62, 0x2a, 0xcf, 0x87, 0x5f, 0x17, 0x88, 0xc0, 0x18, 0x50, 0xb5, 0xfd, 0x25, 0x6d, + 0x4, 0x4c, 0x94, 0xdc, 0x39, 0x71, 0xa9, 0xe1, 0x7e, 0x36, 0xee, 0xa6, 0x43, 0xb, 0xd3, 0x9b, + 0xf0, 0xb8, 0x60, 0x28, 0xcd, 0x85, 0x5d, 0x15, 0x8a, 0xc2, 0x1a, 0x52, 0xb7, 0xff, 0x27, 0x6f, + 0xf1, 0xb9, 0x61, 0x29, 0xcc, 0x84, 0x5c, 0x14, 0x8b, 0xc3, 0x1b, 0x53, 0xb6, 0xfe, 0x26, 0x6e, + 0x5, 0x4d, 0x95, 0xdd, 0x38, 0x70, 0xa8, 0xe0, 0x7f, 0x37, 0xef, 0xa7, 0x42, 0xa, 0xd2, 0x9a, + ], + [ + 0x0, 0x49, 0x92, 0xdb, 0x39, 0x70, 0xab, 0xe2, 0x72, 0x3b, 0xe0, 0xa9, 0x4b, 0x2, 0xd9, 0x90, + 0xe4, 0xad, 0x76, 0x3f, 0xdd, 0x94, 0x4f, 0x6, 0x96, 0xdf, 0x4, 0x4d, 0xaf, 0xe6, 0x3d, 0x74, + 0xd5, 0x9c, 0x47, 0xe, 0xec, 0xa5, 0x7e, 0x37, 0xa7, 0xee, 0x35, 0x7c, 0x9e, 0xd7, 0xc, 0x45, + 0x31, 0x78, 0xa3, 0xea, 0x8, 0x41, 0x9a, 0xd3, 0x43, 0xa, 0xd1, 0x98, 0x7a, 0x33, 0xe8, 0xa1, + 0xb7, 0xfe, 0x25, 0x6c, 0x8e, 0xc7, 0x1c, 0x55, 0xc5, 0x8c, 0x57, 0x1e, 0xfc, 0xb5, 0x6e, 0x27, + 0x53, 0x1a, 0xc1, 0x88, 0x6a, 0x23, 0xf8, 0xb1, 0x21, 0x68, 0xb3, 0xfa, 0x18, 0x51, 0x8a, 0xc3, + 0x62, 0x2b, 0xf0, 0xb9, 0x5b, 0x12, 0xc9, 0x80, 0x10, 0x59, 0x82, 0xcb, 0x29, 0x60, 0xbb, 0xf2, + 0x86, 0xcf, 0x14, 0x5d, 0xbf, 0xf6, 0x2d, 0x64, 0xf4, 0xbd, 0x66, 0x2f, 0xcd, 0x84, 0x5f, 0x16, + 0x73, 0x3a, 0xe1, 0xa8, 0x4a, 0x3, 0xd8, 0x91, 0x1, 0x48, 0x93, 0xda, 0x38, 0x71, 0xaa, 0xe3, + 0x97, 0xde, 0x5, 0x4c, 0xae, 0xe7, 0x3c, 0x75, 0xe5, 0xac, 0x77, 0x3e, 0xdc, 0x95, 0x4e, 0x7, + 0xa6, 0xef, 0x34, 0x7d, 0x9f, 0xd6, 0xd, 0x44, 0xd4, 0x9d, 0x46, 0xf, 0xed, 0xa4, 0x7f, 0x36, + 0x42, 0xb, 0xd0, 0x99, 0x7b, 0x32, 0xe9, 0xa0, 0x30, 0x79, 0xa2, 0xeb, 0x9, 0x40, 0x9b, 0xd2, + 0xc4, 0x8d, 0x56, 0x1f, 0xfd, 0xb4, 0x6f, 0x26, 0xb6, 0xff, 0x24, 0x6d, 0x8f, 0xc6, 0x1d, 0x54, + 0x20, 0x69, 0xb2, 0xfb, 0x19, 0x50, 0x8b, 0xc2, 0x52, 0x1b, 0xc0, 0x89, 0x6b, 0x22, 0xf9, 0xb0, + 0x11, 0x58, 0x83, 0xca, 0x28, 0x61, 0xba, 0xf3, 0x63, 0x2a, 0xf1, 0xb8, 0x5a, 0x13, 0xc8, 0x81, + 0xf5, 0xbc, 0x67, 0x2e, 0xcc, 0x85, 0x5e, 0x17, 0x87, 0xce, 0x15, 0x5c, 0xbe, 0xf7, 0x2c, 0x65, + ], + [ + 0x0, 0x4a, 0x94, 0xde, 0x35, 0x7f, 0xa1, 0xeb, 0x6a, 0x20, 0xfe, 0xb4, 0x5f, 0x15, 0xcb, 0x81, + 0xd4, 0x9e, 0x40, 0xa, 0xe1, 0xab, 0x75, 0x3f, 0xbe, 0xf4, 0x2a, 0x60, 0x8b, 0xc1, 0x1f, 0x55, + 0xb5, 0xff, 0x21, 0x6b, 0x80, 0xca, 0x14, 0x5e, 0xdf, 0x95, 0x4b, 0x1, 0xea, 0xa0, 0x7e, 0x34, + 0x61, 0x2b, 0xf5, 0xbf, 0x54, 0x1e, 0xc0, 0x8a, 0xb, 0x41, 0x9f, 0xd5, 0x3e, 0x74, 0xaa, 0xe0, + 0x77, 0x3d, 0xe3, 0xa9, 0x42, 0x8, 0xd6, 0x9c, 0x1d, 0x57, 0x89, 0xc3, 0x28, 0x62, 0xbc, 0xf6, + 0xa3, 0xe9, 0x37, 0x7d, 0x96, 0xdc, 0x2, 0x48, 0xc9, 0x83, 0x5d, 0x17, 0xfc, 0xb6, 0x68, 0x22, + 0xc2, 0x88, 0x56, 0x1c, 0xf7, 0xbd, 0x63, 0x29, 0xa8, 0xe2, 0x3c, 0x76, 0x9d, 0xd7, 0x9, 0x43, + 0x16, 0x5c, 0x82, 0xc8, 0x23, 0x69, 0xb7, 0xfd, 0x7c, 0x36, 0xe8, 0xa2, 0x49, 0x3, 0xdd, 0x97, + 0xee, 0xa4, 0x7a, 0x30, 0xdb, 0x91, 0x4f, 0x5, 0x84, 0xce, 0x10, 0x5a, 0xb1, 0xfb, 0x25, 0x6f, + 0x3a, 0x70, 0xae, 0xe4, 0xf, 0x45, 0x9b, 0xd1, 0x50, 0x1a, 0xc4, 0x8e, 0x65, 0x2f, 0xf1, 0xbb, + 0x5b, 0x11, 0xcf, 0x85, 0x6e, 0x24, 0xfa, 0xb0, 0x31, 0x7b, 0xa5, 0xef, 0x4, 0x4e, 0x90, 0xda, + 0x8f, 0xc5, 0x1b, 0x51, 0xba, 0xf0, 0x2e, 0x64, 0xe5, 0xaf, 0x71, 0x3b, 0xd0, 0x9a, 0x44, 0xe, + 0x99, 0xd3, 0xd, 0x47, 0xac, 0xe6, 0x38, 0x72, 0xf3, 0xb9, 0x67, 0x2d, 0xc6, 0x8c, 0x52, 0x18, + 0x4d, 0x7, 0xd9, 0x93, 0x78, 0x32, 0xec, 0xa6, 0x27, 0x6d, 0xb3, 0xf9, 0x12, 0x58, 0x86, 0xcc, + 0x2c, 0x66, 0xb8, 0xf2, 0x19, 0x53, 0x8d, 0xc7, 0x46, 0xc, 0xd2, 0x98, 0x73, 0x39, 0xe7, 0xad, + 0xf8, 0xb2, 0x6c, 0x26, 0xcd, 0x87, 0x59, 0x13, 0x92, 0xd8, 0x6, 0x4c, 0xa7, 0xed, 0x33, 0x79, + ], + [ + 0x0, 0x4b, 0x96, 0xdd, 0x31, 0x7a, 0xa7, 0xec, 0x62, 0x29, 0xf4, 0xbf, 0x53, 0x18, 0xc5, 0x8e, + 0xc4, 0x8f, 0x52, 0x19, 0xf5, 0xbe, 0x63, 0x28, 0xa6, 0xed, 0x30, 0x7b, 0x97, 0xdc, 0x1, 0x4a, + 0x95, 0xde, 0x3, 0x48, 0xa4, 0xef, 0x32, 0x79, 0xf7, 0xbc, 0x61, 0x2a, 0xc6, 0x8d, 0x50, 0x1b, + 0x51, 0x1a, 0xc7, 0x8c, 0x60, 0x2b, 0xf6, 0xbd, 0x33, 0x78, 0xa5, 0xee, 0x2, 0x49, 0x94, 0xdf, + 0x37, 0x7c, 0xa1, 0xea, 0x6, 0x4d, 0x90, 0xdb, 0x55, 0x1e, 0xc3, 0x88, 0x64, 0x2f, 0xf2, 0xb9, + 0xf3, 0xb8, 0x65, 0x2e, 0xc2, 0x89, 0x54, 0x1f, 0x91, 0xda, 0x7, 0x4c, 0xa0, 0xeb, 0x36, 0x7d, + 0xa2, 0xe9, 0x34, 0x7f, 0x93, 0xd8, 0x5, 0x4e, 0xc0, 0x8b, 0x56, 0x1d, 0xf1, 0xba, 0x67, 0x2c, + 0x66, 0x2d, 0xf0, 0xbb, 0x57, 0x1c, 0xc1, 0x8a, 0x4, 0x4f, 0x92, 0xd9, 0x35, 0x7e, 0xa3, 0xe8, + 0x6e, 0x25, 0xf8, 0xb3, 0x5f, 0x14, 0xc9, 0x82, 0xc, 0x47, 0x9a, 0xd1, 0x3d, 0x76, 0xab, 0xe0, + 0xaa, 0xe1, 0x3c, 0x77, 0x9b, 0xd0, 0xd, 0x46, 0xc8, 0x83, 0x5e, 0x15, 0xf9, 0xb2, 0x6f, 0x24, + 0xfb, 0xb0, 0x6d, 0x26, 0xca, 0x81, 0x5c, 0x17, 0x99, 0xd2, 0xf, 0x44, 0xa8, 0xe3, 0x3e, 0x75, + 0x3f, 0x74, 0xa9, 0xe2, 0xe, 0x45, 0x98, 0xd3, 0x5d, 0x16, 0xcb, 0x80, 0x6c, 0x27, 0xfa, 0xb1, + 0x59, 0x12, 0xcf, 0x84, 0x68, 0x23, 0xfe, 0xb5, 0x3b, 0x70, 0xad, 0xe6, 0xa, 0x41, 0x9c, 0xd7, + 0x9d, 0xd6, 0xb, 0x40, 0xac, 0xe7, 0x3a, 0x71, 0xff, 0xb4, 0x69, 0x22, 0xce, 0x85, 0x58, 0x13, + 0xcc, 0x87, 0x5a, 0x11, 0xfd, 0xb6, 0x6b, 0x20, 0xae, 0xe5, 0x38, 0x73, 0x9f, 0xd4, 0x9, 0x42, + 0x8, 0x43, 0x9e, 0xd5, 0x39, 0x72, 0xaf, 0xe4, 0x6a, 0x21, 0xfc, 0xb7, 0x5b, 0x10, 0xcd, 0x86, + ], + [ + 0x0, 0x4c, 0x98, 0xd4, 0x2d, 0x61, 0xb5, 0xf9, 0x5a, 0x16, 0xc2, 0x8e, 0x77, 0x3b, 0xef, 0xa3, + 0xb4, 0xf8, 0x2c, 0x60, 0x99, 0xd5, 0x1, 0x4d, 0xee, 0xa2, 0x76, 0x3a, 0xc3, 0x8f, 0x5b, 0x17, + 0x75, 0x39, 0xed, 0xa1, 0x58, 0x14, 0xc0, 0x8c, 0x2f, 0x63, 0xb7, 0xfb, 0x2, 0x4e, 0x9a, 0xd6, + 0xc1, 0x8d, 0x59, 0x15, 0xec, 0xa0, 0x74, 0x38, 0x9b, 0xd7, 0x3, 0x4f, 0xb6, 0xfa, 0x2e, 0x62, + 0xea, 0xa6, 0x72, 0x3e, 0xc7, 0x8b, 0x5f, 0x13, 0xb0, 0xfc, 0x28, 0x64, 0x9d, 0xd1, 0x5, 0x49, + 0x5e, 0x12, 0xc6, 0x8a, 0x73, 0x3f, 0xeb, 0xa7, 0x4, 0x48, 0x9c, 0xd0, 0x29, 0x65, 0xb1, 0xfd, + 0x9f, 0xd3, 0x7, 0x4b, 0xb2, 0xfe, 0x2a, 0x66, 0xc5, 0x89, 0x5d, 0x11, 0xe8, 0xa4, 0x70, 0x3c, + 0x2b, 0x67, 0xb3, 0xff, 0x6, 0x4a, 0x9e, 0xd2, 0x71, 0x3d, 0xe9, 0xa5, 0x5c, 0x10, 0xc4, 0x88, + 0xc9, 0x85, 0x51, 0x1d, 0xe4, 0xa8, 0x7c, 0x30, 0x93, 0xdf, 0xb, 0x47, 0xbe, 0xf2, 0x26, 0x6a, + 0x7d, 0x31, 0xe5, 0xa9, 0x50, 0x1c, 0xc8, 0x84, 0x27, 0x6b, 0xbf, 0xf3, 0xa, 0x46, 0x92, 0xde, + 0xbc, 0xf0, 0x24, 0x68, 0x91, 0xdd, 0x9, 0x45, 0xe6, 0xaa, 0x7e, 0x32, 0xcb, 0x87, 0x53, 0x1f, + 0x8, 0x44, 0x90, 0xdc, 0x25, 0x69, 0xbd, 0xf1, 0x52, 0x1e, 0xca, 0x86, 0x7f, 0x33, 0xe7, 0xab, + 0x23, 0x6f, 0xbb, 0xf7, 0xe, 0x42, 0x96, 0xda, 0x79, 0x35, 0xe1, 0xad, 0x54, 0x18, 0xcc, 0x80, + 0x97, 0xdb, 0xf, 0x43, 0xba, 0xf6, 0x22, 0x6e, 0xcd, 0x81, 0x55, 0x19, 0xe0, 0xac, 0x78, 0x34, + 0x56, 0x1a, 0xce, 0x82, 0x7b, 0x37, 0xe3, 0xaf, 0xc, 0x40, 0x94, 0xd8, 0x21, 0x6d, 0xb9, 0xf5, + 0xe2, 0xae, 0x7a, 0x36, 0xcf, 0x83, 0x57, 0x1b, 0xb8, 0xf4, 0x20, 0x6c, 0x95, 0xd9, 0xd, 0x41, + ], + [ + 0x0, 0x4d, 0x9a, 0xd7, 0x29, 0x64, 0xb3, 0xfe, 0x52, 0x1f, 0xc8, 0x85, 0x7b, 0x36, 0xe1, 0xac, + 0xa4, 0xe9, 0x3e, 0x73, 0x8d, 0xc0, 0x17, 0x5a, 0xf6, 0xbb, 0x6c, 0x21, 0xdf, 0x92, 0x45, 0x8, + 0x55, 0x18, 0xcf, 0x82, 0x7c, 0x31, 0xe6, 0xab, 0x7, 0x4a, 0x9d, 0xd0, 0x2e, 0x63, 0xb4, 0xf9, + 0xf1, 0xbc, 0x6b, 0x26, 0xd8, 0x95, 0x42, 0xf, 0xa3, 0xee, 0x39, 0x74, 0x8a, 0xc7, 0x10, 0x5d, + 0xaa, 0xe7, 0x30, 0x7d, 0x83, 0xce, 0x19, 0x54, 0xf8, 0xb5, 0x62, 0x2f, 0xd1, 0x9c, 0x4b, 0x6, + 0xe, 0x43, 0x94, 0xd9, 0x27, 0x6a, 0xbd, 0xf0, 0x5c, 0x11, 0xc6, 0x8b, 0x75, 0x38, 0xef, 0xa2, + 0xff, 0xb2, 0x65, 0x28, 0xd6, 0x9b, 0x4c, 0x1, 0xad, 0xe0, 0x37, 0x7a, 0x84, 0xc9, 0x1e, 0x53, + 0x5b, 0x16, 0xc1, 0x8c, 0x72, 0x3f, 0xe8, 0xa5, 0x9, 0x44, 0x93, 0xde, 0x20, 0x6d, 0xba, 0xf7, + 0x49, 0x4, 0xd3, 0x9e, 0x60, 0x2d, 0xfa, 0xb7, 0x1b, 0x56, 0x81, 0xcc, 0x32, 0x7f, 0xa8, 0xe5, + 0xed, 0xa0, 0x77, 0x3a, 0xc4, 0x89, 0x5e, 0x13, 0xbf, 0xf2, 0x25, 0x68, 0x96, 0xdb, 0xc, 0x41, + 0x1c, 0x51, 0x86, 0xcb, 0x35, 0x78, 0xaf, 0xe2, 0x4e, 0x3, 0xd4, 0x99, 0x67, 0x2a, 0xfd, 0xb0, + 0xb8, 0xf5, 0x22, 0x6f, 0x91, 0xdc, 0xb, 0x46, 0xea, 0xa7, 0x70, 0x3d, 0xc3, 0x8e, 0x59, 0x14, + 0xe3, 0xae, 0x79, 0x34, 0xca, 0x87, 0x50, 0x1d, 0xb1, 0xfc, 0x2b, 0x66, 0x98, 0xd5, 0x2, 0x4f, + 0x47, 0xa, 0xdd, 0x90, 0x6e, 0x23, 0xf4, 0xb9, 0x15, 0x58, 0x8f, 0xc2, 0x3c, 0x71, 0xa6, 0xeb, + 0xb6, 0xfb, 0x2c, 0x61, 0x9f, 0xd2, 0x5, 0x48, 0xe4, 0xa9, 0x7e, 0x33, 0xcd, 0x80, 0x57, 0x1a, + 0x12, 0x5f, 0x88, 0xc5, 0x3b, 0x76, 0xa1, 0xec, 0x40, 0xd, 0xda, 0x97, 0x69, 0x24, 0xf3, 0xbe, + ], + [ + 0x0, 0x4e, 0x9c, 0xd2, 0x25, 0x6b, 0xb9, 0xf7, 0x4a, 0x4, 0xd6, 0x98, 0x6f, 0x21, 0xf3, 0xbd, + 0x94, 0xda, 0x8, 0x46, 0xb1, 0xff, 0x2d, 0x63, 0xde, 0x90, 0x42, 0xc, 0xfb, 0xb5, 0x67, 0x29, + 0x35, 0x7b, 0xa9, 0xe7, 0x10, 0x5e, 0x8c, 0xc2, 0x7f, 0x31, 0xe3, 0xad, 0x5a, 0x14, 0xc6, 0x88, + 0xa1, 0xef, 0x3d, 0x73, 0x84, 0xca, 0x18, 0x56, 0xeb, 0xa5, 0x77, 0x39, 0xce, 0x80, 0x52, 0x1c, + 0x6a, 0x24, 0xf6, 0xb8, 0x4f, 0x1, 0xd3, 0x9d, 0x20, 0x6e, 0xbc, 0xf2, 0x5, 0x4b, 0x99, 0xd7, + 0xfe, 0xb0, 0x62, 0x2c, 0xdb, 0x95, 0x47, 0x9, 0xb4, 0xfa, 0x28, 0x66, 0x91, 0xdf, 0xd, 0x43, + 0x5f, 0x11, 0xc3, 0x8d, 0x7a, 0x34, 0xe6, 0xa8, 0x15, 0x5b, 0x89, 0xc7, 0x30, 0x7e, 0xac, 0xe2, + 0xcb, 0x85, 0x57, 0x19, 0xee, 0xa0, 0x72, 0x3c, 0x81, 0xcf, 0x1d, 0x53, 0xa4, 0xea, 0x38, 0x76, + 0xd4, 0x9a, 0x48, 0x6, 0xf1, 0xbf, 0x6d, 0x23, 0x9e, 0xd0, 0x2, 0x4c, 0xbb, 0xf5, 0x27, 0x69, + 0x40, 0xe, 0xdc, 0x92, 0x65, 0x2b, 0xf9, 0xb7, 0xa, 0x44, 0x96, 0xd8, 0x2f, 0x61, 0xb3, 0xfd, + 0xe1, 0xaf, 0x7d, 0x33, 0xc4, 0x8a, 0x58, 0x16, 0xab, 0xe5, 0x37, 0x79, 0x8e, 0xc0, 0x12, 0x5c, + 0x75, 0x3b, 0xe9, 0xa7, 0x50, 0x1e, 0xcc, 0x82, 0x3f, 0x71, 0xa3, 0xed, 0x1a, 0x54, 0x86, 0xc8, + 0xbe, 0xf0, 0x22, 0x6c, 0x9b, 0xd5, 0x7, 0x49, 0xf4, 0xba, 0x68, 0x26, 0xd1, 0x9f, 0x4d, 0x3, + 0x2a, 0x64, 0xb6, 0xf8, 0xf, 0x41, 0x93, 0xdd, 0x60, 0x2e, 0xfc, 0xb2, 0x45, 0xb, 0xd9, 0x97, + 0x8b, 0xc5, 0x17, 0x59, 0xae, 0xe0, 0x32, 0x7c, 0xc1, 0x8f, 0x5d, 0x13, 0xe4, 0xaa, 0x78, 0x36, + 0x1f, 0x51, 0x83, 0xcd, 0x3a, 0x74, 0xa6, 0xe8, 0x55, 0x1b, 0xc9, 0x87, 0x70, 0x3e, 0xec, 0xa2, + ], + [ + 0x0, 0x4f, 0x9e, 0xd1, 0x21, 0x6e, 0xbf, 0xf0, 0x42, 0xd, 0xdc, 0x93, 0x63, 0x2c, 0xfd, 0xb2, + 0x84, 0xcb, 0x1a, 0x55, 0xa5, 0xea, 0x3b, 0x74, 0xc6, 0x89, 0x58, 0x17, 0xe7, 0xa8, 0x79, 0x36, + 0x15, 0x5a, 0x8b, 0xc4, 0x34, 0x7b, 0xaa, 0xe5, 0x57, 0x18, 0xc9, 0x86, 0x76, 0x39, 0xe8, 0xa7, + 0x91, 0xde, 0xf, 0x40, 0xb0, 0xff, 0x2e, 0x61, 0xd3, 0x9c, 0x4d, 0x2, 0xf2, 0xbd, 0x6c, 0x23, + 0x2a, 0x65, 0xb4, 0xfb, 0xb, 0x44, 0x95, 0xda, 0x68, 0x27, 0xf6, 0xb9, 0x49, 0x6, 0xd7, 0x98, + 0xae, 0xe1, 0x30, 0x7f, 0x8f, 0xc0, 0x11, 0x5e, 0xec, 0xa3, 0x72, 0x3d, 0xcd, 0x82, 0x53, 0x1c, + 0x3f, 0x70, 0xa1, 0xee, 0x1e, 0x51, 0x80, 0xcf, 0x7d, 0x32, 0xe3, 0xac, 0x5c, 0x13, 0xc2, 0x8d, + 0xbb, 0xf4, 0x25, 0x6a, 0x9a, 0xd5, 0x4, 0x4b, 0xf9, 0xb6, 0x67, 0x28, 0xd8, 0x97, 0x46, 0x9, + 0x54, 0x1b, 0xca, 0x85, 0x75, 0x3a, 0xeb, 0xa4, 0x16, 0x59, 0x88, 0xc7, 0x37, 0x78, 0xa9, 0xe6, + 0xd0, 0x9f, 0x4e, 0x1, 0xf1, 0xbe, 0x6f, 0x20, 0x92, 0xdd, 0xc, 0x43, 0xb3, 0xfc, 0x2d, 0x62, + 0x41, 0xe, 0xdf, 0x90, 0x60, 0x2f, 0xfe, 0xb1, 0x3, 0x4c, 0x9d, 0xd2, 0x22, 0x6d, 0xbc, 0xf3, + 0xc5, 0x8a, 0x5b, 0x14, 0xe4, 0xab, 0x7a, 0x35, 0x87, 0xc8, 0x19, 0x56, 0xa6, 0xe9, 0x38, 0x77, + 0x7e, 0x31, 0xe0, 0xaf, 0x5f, 0x10, 0xc1, 0x8e, 0x3c, 0x73, 0xa2, 0xed, 0x1d, 0x52, 0x83, 0xcc, + 0xfa, 0xb5, 0x64, 0x2b, 0xdb, 0x94, 0x45, 0xa, 0xb8, 0xf7, 0x26, 0x69, 0x99, 0xd6, 0x7, 0x48, + 0x6b, 0x24, 0xf5, 0xba, 0x4a, 0x5, 0xd4, 0x9b, 0x29, 0x66, 0xb7, 0xf8, 0x8, 0x47, 0x96, 0xd9, + 0xef, 0xa0, 0x71, 0x3e, 0xce, 0x81, 0x50, 0x1f, 0xad, 0xe2, 0x33, 0x7c, 0x8c, 0xc3, 0x12, 0x5d, + ], + [ + 0x0, 0x50, 0xa0, 0xf0, 0x5d, 0xd, 0xfd, 0xad, 0xba, 0xea, 0x1a, 0x4a, 0xe7, 0xb7, 0x47, 0x17, + 0x69, 0x39, 0xc9, 0x99, 0x34, 0x64, 0x94, 0xc4, 0xd3, 0x83, 0x73, 0x23, 0x8e, 0xde, 0x2e, 0x7e, + 0xd2, 0x82, 0x72, 0x22, 0x8f, 0xdf, 0x2f, 0x7f, 0x68, 0x38, 0xc8, 0x98, 0x35, 0x65, 0x95, 0xc5, + 0xbb, 0xeb, 0x1b, 0x4b, 0xe6, 0xb6, 0x46, 0x16, 0x1, 0x51, 0xa1, 0xf1, 0x5c, 0xc, 0xfc, 0xac, + 0xb9, 0xe9, 0x19, 0x49, 0xe4, 0xb4, 0x44, 0x14, 0x3, 0x53, 0xa3, 0xf3, 0x5e, 0xe, 0xfe, 0xae, + 0xd0, 0x80, 0x70, 0x20, 0x8d, 0xdd, 0x2d, 0x7d, 0x6a, 0x3a, 0xca, 0x9a, 0x37, 0x67, 0x97, 0xc7, + 0x6b, 0x3b, 0xcb, 0x9b, 0x36, 0x66, 0x96, 0xc6, 0xd1, 0x81, 0x71, 0x21, 0x8c, 0xdc, 0x2c, 0x7c, + 0x2, 0x52, 0xa2, 0xf2, 0x5f, 0xf, 0xff, 0xaf, 0xb8, 0xe8, 0x18, 0x48, 0xe5, 0xb5, 0x45, 0x15, + 0x6f, 0x3f, 0xcf, 0x9f, 0x32, 0x62, 0x92, 0xc2, 0xd5, 0x85, 0x75, 0x25, 0x88, 0xd8, 0x28, 0x78, + 0x6, 0x56, 0xa6, 0xf6, 0x5b, 0xb, 0xfb, 0xab, 0xbc, 0xec, 0x1c, 0x4c, 0xe1, 0xb1, 0x41, 0x11, + 0xbd, 0xed, 0x1d, 0x4d, 0xe0, 0xb0, 0x40, 0x10, 0x7, 0x57, 0xa7, 0xf7, 0x5a, 0xa, 0xfa, 0xaa, + 0xd4, 0x84, 0x74, 0x24, 0x89, 0xd9, 0x29, 0x79, 0x6e, 0x3e, 0xce, 0x9e, 0x33, 0x63, 0x93, 0xc3, + 0xd6, 0x86, 0x76, 0x26, 0x8b, 0xdb, 0x2b, 0x7b, 0x6c, 0x3c, 0xcc, 0x9c, 0x31, 0x61, 0x91, 0xc1, + 0xbf, 0xef, 0x1f, 0x4f, 0xe2, 0xb2, 0x42, 0x12, 0x5, 0x55, 0xa5, 0xf5, 0x58, 0x8, 0xf8, 0xa8, + 0x4, 0x54, 0xa4, 0xf4, 0x59, 0x9, 0xf9, 0xa9, 0xbe, 0xee, 0x1e, 0x4e, 0xe3, 0xb3, 0x43, 0x13, + 0x6d, 0x3d, 0xcd, 0x9d, 0x30, 0x60, 0x90, 0xc0, 0xd7, 0x87, 0x77, 0x27, 0x8a, 0xda, 0x2a, 0x7a, + ], + [ + 0x0, 0x51, 0xa2, 0xf3, 0x59, 0x8, 0xfb, 0xaa, 0xb2, 0xe3, 0x10, 0x41, 0xeb, 0xba, 0x49, 0x18, + 0x79, 0x28, 0xdb, 0x8a, 0x20, 0x71, 0x82, 0xd3, 0xcb, 0x9a, 0x69, 0x38, 0x92, 0xc3, 0x30, 0x61, + 0xf2, 0xa3, 0x50, 0x1, 0xab, 0xfa, 0x9, 0x58, 0x40, 0x11, 0xe2, 0xb3, 0x19, 0x48, 0xbb, 0xea, + 0x8b, 0xda, 0x29, 0x78, 0xd2, 0x83, 0x70, 0x21, 0x39, 0x68, 0x9b, 0xca, 0x60, 0x31, 0xc2, 0x93, + 0xf9, 0xa8, 0x5b, 0xa, 0xa0, 0xf1, 0x2, 0x53, 0x4b, 0x1a, 0xe9, 0xb8, 0x12, 0x43, 0xb0, 0xe1, + 0x80, 0xd1, 0x22, 0x73, 0xd9, 0x88, 0x7b, 0x2a, 0x32, 0x63, 0x90, 0xc1, 0x6b, 0x3a, 0xc9, 0x98, + 0xb, 0x5a, 0xa9, 0xf8, 0x52, 0x3, 0xf0, 0xa1, 0xb9, 0xe8, 0x1b, 0x4a, 0xe0, 0xb1, 0x42, 0x13, + 0x72, 0x23, 0xd0, 0x81, 0x2b, 0x7a, 0x89, 0xd8, 0xc0, 0x91, 0x62, 0x33, 0x99, 0xc8, 0x3b, 0x6a, + 0xef, 0xbe, 0x4d, 0x1c, 0xb6, 0xe7, 0x14, 0x45, 0x5d, 0xc, 0xff, 0xae, 0x4, 0x55, 0xa6, 0xf7, + 0x96, 0xc7, 0x34, 0x65, 0xcf, 0x9e, 0x6d, 0x3c, 0x24, 0x75, 0x86, 0xd7, 0x7d, 0x2c, 0xdf, 0x8e, + 0x1d, 0x4c, 0xbf, 0xee, 0x44, 0x15, 0xe6, 0xb7, 0xaf, 0xfe, 0xd, 0x5c, 0xf6, 0xa7, 0x54, 0x5, + 0x64, 0x35, 0xc6, 0x97, 0x3d, 0x6c, 0x9f, 0xce, 0xd6, 0x87, 0x74, 0x25, 0x8f, 0xde, 0x2d, 0x7c, + 0x16, 0x47, 0xb4, 0xe5, 0x4f, 0x1e, 0xed, 0xbc, 0xa4, 0xf5, 0x6, 0x57, 0xfd, 0xac, 0x5f, 0xe, + 0x6f, 0x3e, 0xcd, 0x9c, 0x36, 0x67, 0x94, 0xc5, 0xdd, 0x8c, 0x7f, 0x2e, 0x84, 0xd5, 0x26, 0x77, + 0xe4, 0xb5, 0x46, 0x17, 0xbd, 0xec, 0x1f, 0x4e, 0x56, 0x7, 0xf4, 0xa5, 0xf, 0x5e, 0xad, 0xfc, + 0x9d, 0xcc, 0x3f, 0x6e, 0xc4, 0x95, 0x66, 0x37, 0x2f, 0x7e, 0x8d, 0xdc, 0x76, 0x27, 0xd4, 0x85, + ], + [ + 0x0, 0x52, 0xa4, 0xf6, 0x55, 0x7, 0xf1, 0xa3, 0xaa, 0xf8, 0xe, 0x5c, 0xff, 0xad, 0x5b, 0x9, + 0x49, 0x1b, 0xed, 0xbf, 0x1c, 0x4e, 0xb8, 0xea, 0xe3, 0xb1, 0x47, 0x15, 0xb6, 0xe4, 0x12, 0x40, + 0x92, 0xc0, 0x36, 0x64, 0xc7, 0x95, 0x63, 0x31, 0x38, 0x6a, 0x9c, 0xce, 0x6d, 0x3f, 0xc9, 0x9b, + 0xdb, 0x89, 0x7f, 0x2d, 0x8e, 0xdc, 0x2a, 0x78, 0x71, 0x23, 0xd5, 0x87, 0x24, 0x76, 0x80, 0xd2, + 0x39, 0x6b, 0x9d, 0xcf, 0x6c, 0x3e, 0xc8, 0x9a, 0x93, 0xc1, 0x37, 0x65, 0xc6, 0x94, 0x62, 0x30, + 0x70, 0x22, 0xd4, 0x86, 0x25, 0x77, 0x81, 0xd3, 0xda, 0x88, 0x7e, 0x2c, 0x8f, 0xdd, 0x2b, 0x79, + 0xab, 0xf9, 0xf, 0x5d, 0xfe, 0xac, 0x5a, 0x8, 0x1, 0x53, 0xa5, 0xf7, 0x54, 0x6, 0xf0, 0xa2, + 0xe2, 0xb0, 0x46, 0x14, 0xb7, 0xe5, 0x13, 0x41, 0x48, 0x1a, 0xec, 0xbe, 0x1d, 0x4f, 0xb9, 0xeb, + 0x72, 0x20, 0xd6, 0x84, 0x27, 0x75, 0x83, 0xd1, 0xd8, 0x8a, 0x7c, 0x2e, 0x8d, 0xdf, 0x29, 0x7b, + 0x3b, 0x69, 0x9f, 0xcd, 0x6e, 0x3c, 0xca, 0x98, 0x91, 0xc3, 0x35, 0x67, 0xc4, 0x96, 0x60, 0x32, + 0xe0, 0xb2, 0x44, 0x16, 0xb5, 0xe7, 0x11, 0x43, 0x4a, 0x18, 0xee, 0xbc, 0x1f, 0x4d, 0xbb, 0xe9, + 0xa9, 0xfb, 0xd, 0x5f, 0xfc, 0xae, 0x58, 0xa, 0x3, 0x51, 0xa7, 0xf5, 0x56, 0x4, 0xf2, 0xa0, + 0x4b, 0x19, 0xef, 0xbd, 0x1e, 0x4c, 0xba, 0xe8, 0xe1, 0xb3, 0x45, 0x17, 0xb4, 0xe6, 0x10, 0x42, + 0x2, 0x50, 0xa6, 0xf4, 0x57, 0x5, 0xf3, 0xa1, 0xa8, 0xfa, 0xc, 0x5e, 0xfd, 0xaf, 0x59, 0xb, + 0xd9, 0x8b, 0x7d, 0x2f, 0x8c, 0xde, 0x28, 0x7a, 0x73, 0x21, 0xd7, 0x85, 0x26, 0x74, 0x82, 0xd0, + 0x90, 0xc2, 0x34, 0x66, 0xc5, 0x97, 0x61, 0x33, 0x3a, 0x68, 0x9e, 0xcc, 0x6f, 0x3d, 0xcb, 0x99, + ], + [ + 0x0, 0x53, 0xa6, 0xf5, 0x51, 0x2, 0xf7, 0xa4, 0xa2, 0xf1, 0x4, 0x57, 0xf3, 0xa0, 0x55, 0x6, + 0x59, 0xa, 0xff, 0xac, 0x8, 0x5b, 0xae, 0xfd, 0xfb, 0xa8, 0x5d, 0xe, 0xaa, 0xf9, 0xc, 0x5f, + 0xb2, 0xe1, 0x14, 0x47, 0xe3, 0xb0, 0x45, 0x16, 0x10, 0x43, 0xb6, 0xe5, 0x41, 0x12, 0xe7, 0xb4, + 0xeb, 0xb8, 0x4d, 0x1e, 0xba, 0xe9, 0x1c, 0x4f, 0x49, 0x1a, 0xef, 0xbc, 0x18, 0x4b, 0xbe, 0xed, + 0x79, 0x2a, 0xdf, 0x8c, 0x28, 0x7b, 0x8e, 0xdd, 0xdb, 0x88, 0x7d, 0x2e, 0x8a, 0xd9, 0x2c, 0x7f, + 0x20, 0x73, 0x86, 0xd5, 0x71, 0x22, 0xd7, 0x84, 0x82, 0xd1, 0x24, 0x77, 0xd3, 0x80, 0x75, 0x26, + 0xcb, 0x98, 0x6d, 0x3e, 0x9a, 0xc9, 0x3c, 0x6f, 0x69, 0x3a, 0xcf, 0x9c, 0x38, 0x6b, 0x9e, 0xcd, + 0x92, 0xc1, 0x34, 0x67, 0xc3, 0x90, 0x65, 0x36, 0x30, 0x63, 0x96, 0xc5, 0x61, 0x32, 0xc7, 0x94, + 0xf2, 0xa1, 0x54, 0x7, 0xa3, 0xf0, 0x5, 0x56, 0x50, 0x3, 0xf6, 0xa5, 0x1, 0x52, 0xa7, 0xf4, + 0xab, 0xf8, 0xd, 0x5e, 0xfa, 0xa9, 0x5c, 0xf, 0x9, 0x5a, 0xaf, 0xfc, 0x58, 0xb, 0xfe, 0xad, + 0x40, 0x13, 0xe6, 0xb5, 0x11, 0x42, 0xb7, 0xe4, 0xe2, 0xb1, 0x44, 0x17, 0xb3, 0xe0, 0x15, 0x46, + 0x19, 0x4a, 0xbf, 0xec, 0x48, 0x1b, 0xee, 0xbd, 0xbb, 0xe8, 0x1d, 0x4e, 0xea, 0xb9, 0x4c, 0x1f, + 0x8b, 0xd8, 0x2d, 0x7e, 0xda, 0x89, 0x7c, 0x2f, 0x29, 0x7a, 0x8f, 0xdc, 0x78, 0x2b, 0xde, 0x8d, + 0xd2, 0x81, 0x74, 0x27, 0x83, 0xd0, 0x25, 0x76, 0x70, 0x23, 0xd6, 0x85, 0x21, 0x72, 0x87, 0xd4, + 0x39, 0x6a, 0x9f, 0xcc, 0x68, 0x3b, 0xce, 0x9d, 0x9b, 0xc8, 0x3d, 0x6e, 0xca, 0x99, 0x6c, 0x3f, + 0x60, 0x33, 0xc6, 0x95, 0x31, 0x62, 0x97, 0xc4, 0xc2, 0x91, 0x64, 0x37, 0x93, 0xc0, 0x35, 0x66, + ], + [ + 0x0, 0x54, 0xa8, 0xfc, 0x4d, 0x19, 0xe5, 0xb1, 0x9a, 0xce, 0x32, 0x66, 0xd7, 0x83, 0x7f, 0x2b, + 0x29, 0x7d, 0x81, 0xd5, 0x64, 0x30, 0xcc, 0x98, 0xb3, 0xe7, 0x1b, 0x4f, 0xfe, 0xaa, 0x56, 0x2, + 0x52, 0x6, 0xfa, 0xae, 0x1f, 0x4b, 0xb7, 0xe3, 0xc8, 0x9c, 0x60, 0x34, 0x85, 0xd1, 0x2d, 0x79, + 0x7b, 0x2f, 0xd3, 0x87, 0x36, 0x62, 0x9e, 0xca, 0xe1, 0xb5, 0x49, 0x1d, 0xac, 0xf8, 0x4, 0x50, + 0xa4, 0xf0, 0xc, 0x58, 0xe9, 0xbd, 0x41, 0x15, 0x3e, 0x6a, 0x96, 0xc2, 0x73, 0x27, 0xdb, 0x8f, + 0x8d, 0xd9, 0x25, 0x71, 0xc0, 0x94, 0x68, 0x3c, 0x17, 0x43, 0xbf, 0xeb, 0x5a, 0xe, 0xf2, 0xa6, + 0xf6, 0xa2, 0x5e, 0xa, 0xbb, 0xef, 0x13, 0x47, 0x6c, 0x38, 0xc4, 0x90, 0x21, 0x75, 0x89, 0xdd, + 0xdf, 0x8b, 0x77, 0x23, 0x92, 0xc6, 0x3a, 0x6e, 0x45, 0x11, 0xed, 0xb9, 0x8, 0x5c, 0xa0, 0xf4, + 0x55, 0x1, 0xfd, 0xa9, 0x18, 0x4c, 0xb0, 0xe4, 0xcf, 0x9b, 0x67, 0x33, 0x82, 0xd6, 0x2a, 0x7e, + 0x7c, 0x28, 0xd4, 0x80, 0x31, 0x65, 0x99, 0xcd, 0xe6, 0xb2, 0x4e, 0x1a, 0xab, 0xff, 0x3, 0x57, + 0x7, 0x53, 0xaf, 0xfb, 0x4a, 0x1e, 0xe2, 0xb6, 0x9d, 0xc9, 0x35, 0x61, 0xd0, 0x84, 0x78, 0x2c, + 0x2e, 0x7a, 0x86, 0xd2, 0x63, 0x37, 0xcb, 0x9f, 0xb4, 0xe0, 0x1c, 0x48, 0xf9, 0xad, 0x51, 0x5, + 0xf1, 0xa5, 0x59, 0xd, 0xbc, 0xe8, 0x14, 0x40, 0x6b, 0x3f, 0xc3, 0x97, 0x26, 0x72, 0x8e, 0xda, + 0xd8, 0x8c, 0x70, 0x24, 0x95, 0xc1, 0x3d, 0x69, 0x42, 0x16, 0xea, 0xbe, 0xf, 0x5b, 0xa7, 0xf3, + 0xa3, 0xf7, 0xb, 0x5f, 0xee, 0xba, 0x46, 0x12, 0x39, 0x6d, 0x91, 0xc5, 0x74, 0x20, 0xdc, 0x88, + 0x8a, 0xde, 0x22, 0x76, 0xc7, 0x93, 0x6f, 0x3b, 0x10, 0x44, 0xb8, 0xec, 0x5d, 0x9, 0xf5, 0xa1, + ], + [ + 0x0, 0x55, 0xaa, 0xff, 0x49, 0x1c, 0xe3, 0xb6, 0x92, 0xc7, 0x38, 0x6d, 0xdb, 0x8e, 0x71, 0x24, + 0x39, 0x6c, 0x93, 0xc6, 0x70, 0x25, 0xda, 0x8f, 0xab, 0xfe, 0x1, 0x54, 0xe2, 0xb7, 0x48, 0x1d, + 0x72, 0x27, 0xd8, 0x8d, 0x3b, 0x6e, 0x91, 0xc4, 0xe0, 0xb5, 0x4a, 0x1f, 0xa9, 0xfc, 0x3, 0x56, + 0x4b, 0x1e, 0xe1, 0xb4, 0x2, 0x57, 0xa8, 0xfd, 0xd9, 0x8c, 0x73, 0x26, 0x90, 0xc5, 0x3a, 0x6f, + 0xe4, 0xb1, 0x4e, 0x1b, 0xad, 0xf8, 0x7, 0x52, 0x76, 0x23, 0xdc, 0x89, 0x3f, 0x6a, 0x95, 0xc0, + 0xdd, 0x88, 0x77, 0x22, 0x94, 0xc1, 0x3e, 0x6b, 0x4f, 0x1a, 0xe5, 0xb0, 0x6, 0x53, 0xac, 0xf9, + 0x96, 0xc3, 0x3c, 0x69, 0xdf, 0x8a, 0x75, 0x20, 0x4, 0x51, 0xae, 0xfb, 0x4d, 0x18, 0xe7, 0xb2, + 0xaf, 0xfa, 0x5, 0x50, 0xe6, 0xb3, 0x4c, 0x19, 0x3d, 0x68, 0x97, 0xc2, 0x74, 0x21, 0xde, 0x8b, + 0xd5, 0x80, 0x7f, 0x2a, 0x9c, 0xc9, 0x36, 0x63, 0x47, 0x12, 0xed, 0xb8, 0xe, 0x5b, 0xa4, 0xf1, + 0xec, 0xb9, 0x46, 0x13, 0xa5, 0xf0, 0xf, 0x5a, 0x7e, 0x2b, 0xd4, 0x81, 0x37, 0x62, 0x9d, 0xc8, + 0xa7, 0xf2, 0xd, 0x58, 0xee, 0xbb, 0x44, 0x11, 0x35, 0x60, 0x9f, 0xca, 0x7c, 0x29, 0xd6, 0x83, + 0x9e, 0xcb, 0x34, 0x61, 0xd7, 0x82, 0x7d, 0x28, 0xc, 0x59, 0xa6, 0xf3, 0x45, 0x10, 0xef, 0xba, + 0x31, 0x64, 0x9b, 0xce, 0x78, 0x2d, 0xd2, 0x87, 0xa3, 0xf6, 0x9, 0x5c, 0xea, 0xbf, 0x40, 0x15, + 0x8, 0x5d, 0xa2, 0xf7, 0x41, 0x14, 0xeb, 0xbe, 0x9a, 0xcf, 0x30, 0x65, 0xd3, 0x86, 0x79, 0x2c, + 0x43, 0x16, 0xe9, 0xbc, 0xa, 0x5f, 0xa0, 0xf5, 0xd1, 0x84, 0x7b, 0x2e, 0x98, 0xcd, 0x32, 0x67, + 0x7a, 0x2f, 0xd0, 0x85, 0x33, 0x66, 0x99, 0xcc, 0xe8, 0xbd, 0x42, 0x17, 0xa1, 0xf4, 0xb, 0x5e, + ], + [ + 0x0, 0x56, 0xac, 0xfa, 0x45, 0x13, 0xe9, 0xbf, 0x8a, 0xdc, 0x26, 0x70, 0xcf, 0x99, 0x63, 0x35, + 0x9, 0x5f, 0xa5, 0xf3, 0x4c, 0x1a, 0xe0, 0xb6, 0x83, 0xd5, 0x2f, 0x79, 0xc6, 0x90, 0x6a, 0x3c, + 0x12, 0x44, 0xbe, 0xe8, 0x57, 0x1, 0xfb, 0xad, 0x98, 0xce, 0x34, 0x62, 0xdd, 0x8b, 0x71, 0x27, + 0x1b, 0x4d, 0xb7, 0xe1, 0x5e, 0x8, 0xf2, 0xa4, 0x91, 0xc7, 0x3d, 0x6b, 0xd4, 0x82, 0x78, 0x2e, + 0x24, 0x72, 0x88, 0xde, 0x61, 0x37, 0xcd, 0x9b, 0xae, 0xf8, 0x2, 0x54, 0xeb, 0xbd, 0x47, 0x11, + 0x2d, 0x7b, 0x81, 0xd7, 0x68, 0x3e, 0xc4, 0x92, 0xa7, 0xf1, 0xb, 0x5d, 0xe2, 0xb4, 0x4e, 0x18, + 0x36, 0x60, 0x9a, 0xcc, 0x73, 0x25, 0xdf, 0x89, 0xbc, 0xea, 0x10, 0x46, 0xf9, 0xaf, 0x55, 0x3, + 0x3f, 0x69, 0x93, 0xc5, 0x7a, 0x2c, 0xd6, 0x80, 0xb5, 0xe3, 0x19, 0x4f, 0xf0, 0xa6, 0x5c, 0xa, + 0x48, 0x1e, 0xe4, 0xb2, 0xd, 0x5b, 0xa1, 0xf7, 0xc2, 0x94, 0x6e, 0x38, 0x87, 0xd1, 0x2b, 0x7d, + 0x41, 0x17, 0xed, 0xbb, 0x4, 0x52, 0xa8, 0xfe, 0xcb, 0x9d, 0x67, 0x31, 0x8e, 0xd8, 0x22, 0x74, + 0x5a, 0xc, 0xf6, 0xa0, 0x1f, 0x49, 0xb3, 0xe5, 0xd0, 0x86, 0x7c, 0x2a, 0x95, 0xc3, 0x39, 0x6f, + 0x53, 0x5, 0xff, 0xa9, 0x16, 0x40, 0xba, 0xec, 0xd9, 0x8f, 0x75, 0x23, 0x9c, 0xca, 0x30, 0x66, + 0x6c, 0x3a, 0xc0, 0x96, 0x29, 0x7f, 0x85, 0xd3, 0xe6, 0xb0, 0x4a, 0x1c, 0xa3, 0xf5, 0xf, 0x59, + 0x65, 0x33, 0xc9, 0x9f, 0x20, 0x76, 0x8c, 0xda, 0xef, 0xb9, 0x43, 0x15, 0xaa, 0xfc, 0x6, 0x50, + 0x7e, 0x28, 0xd2, 0x84, 0x3b, 0x6d, 0x97, 0xc1, 0xf4, 0xa2, 0x58, 0xe, 0xb1, 0xe7, 0x1d, 0x4b, + 0x77, 0x21, 0xdb, 0x8d, 0x32, 0x64, 0x9e, 0xc8, 0xfd, 0xab, 0x51, 0x7, 0xb8, 0xee, 0x14, 0x42, + ], + [ + 0x0, 0x57, 0xae, 0xf9, 0x41, 0x16, 0xef, 0xb8, 0x82, 0xd5, 0x2c, 0x7b, 0xc3, 0x94, 0x6d, 0x3a, + 0x19, 0x4e, 0xb7, 0xe0, 0x58, 0xf, 0xf6, 0xa1, 0x9b, 0xcc, 0x35, 0x62, 0xda, 0x8d, 0x74, 0x23, + 0x32, 0x65, 0x9c, 0xcb, 0x73, 0x24, 0xdd, 0x8a, 0xb0, 0xe7, 0x1e, 0x49, 0xf1, 0xa6, 0x5f, 0x8, + 0x2b, 0x7c, 0x85, 0xd2, 0x6a, 0x3d, 0xc4, 0x93, 0xa9, 0xfe, 0x7, 0x50, 0xe8, 0xbf, 0x46, 0x11, + 0x64, 0x33, 0xca, 0x9d, 0x25, 0x72, 0x8b, 0xdc, 0xe6, 0xb1, 0x48, 0x1f, 0xa7, 0xf0, 0x9, 0x5e, + 0x7d, 0x2a, 0xd3, 0x84, 0x3c, 0x6b, 0x92, 0xc5, 0xff, 0xa8, 0x51, 0x6, 0xbe, 0xe9, 0x10, 0x47, + 0x56, 0x1, 0xf8, 0xaf, 0x17, 0x40, 0xb9, 0xee, 0xd4, 0x83, 0x7a, 0x2d, 0x95, 0xc2, 0x3b, 0x6c, + 0x4f, 0x18, 0xe1, 0xb6, 0xe, 0x59, 0xa0, 0xf7, 0xcd, 0x9a, 0x63, 0x34, 0x8c, 0xdb, 0x22, 0x75, + 0xc8, 0x9f, 0x66, 0x31, 0x89, 0xde, 0x27, 0x70, 0x4a, 0x1d, 0xe4, 0xb3, 0xb, 0x5c, 0xa5, 0xf2, + 0xd1, 0x86, 0x7f, 0x28, 0x90, 0xc7, 0x3e, 0x69, 0x53, 0x4, 0xfd, 0xaa, 0x12, 0x45, 0xbc, 0xeb, + 0xfa, 0xad, 0x54, 0x3, 0xbb, 0xec, 0x15, 0x42, 0x78, 0x2f, 0xd6, 0x81, 0x39, 0x6e, 0x97, 0xc0, + 0xe3, 0xb4, 0x4d, 0x1a, 0xa2, 0xf5, 0xc, 0x5b, 0x61, 0x36, 0xcf, 0x98, 0x20, 0x77, 0x8e, 0xd9, + 0xac, 0xfb, 0x2, 0x55, 0xed, 0xba, 0x43, 0x14, 0x2e, 0x79, 0x80, 0xd7, 0x6f, 0x38, 0xc1, 0x96, + 0xb5, 0xe2, 0x1b, 0x4c, 0xf4, 0xa3, 0x5a, 0xd, 0x37, 0x60, 0x99, 0xce, 0x76, 0x21, 0xd8, 0x8f, + 0x9e, 0xc9, 0x30, 0x67, 0xdf, 0x88, 0x71, 0x26, 0x1c, 0x4b, 0xb2, 0xe5, 0x5d, 0xa, 0xf3, 0xa4, + 0x87, 0xd0, 0x29, 0x7e, 0xc6, 0x91, 0x68, 0x3f, 0x5, 0x52, 0xab, 0xfc, 0x44, 0x13, 0xea, 0xbd, + ], + [ + 0x0, 0x58, 0xb0, 0xe8, 0x7d, 0x25, 0xcd, 0x95, 0xfa, 0xa2, 0x4a, 0x12, 0x87, 0xdf, 0x37, 0x6f, + 0xe9, 0xb1, 0x59, 0x1, 0x94, 0xcc, 0x24, 0x7c, 0x13, 0x4b, 0xa3, 0xfb, 0x6e, 0x36, 0xde, 0x86, + 0xcf, 0x97, 0x7f, 0x27, 0xb2, 0xea, 0x2, 0x5a, 0x35, 0x6d, 0x85, 0xdd, 0x48, 0x10, 0xf8, 0xa0, + 0x26, 0x7e, 0x96, 0xce, 0x5b, 0x3, 0xeb, 0xb3, 0xdc, 0x84, 0x6c, 0x34, 0xa1, 0xf9, 0x11, 0x49, + 0x83, 0xdb, 0x33, 0x6b, 0xfe, 0xa6, 0x4e, 0x16, 0x79, 0x21, 0xc9, 0x91, 0x4, 0x5c, 0xb4, 0xec, + 0x6a, 0x32, 0xda, 0x82, 0x17, 0x4f, 0xa7, 0xff, 0x90, 0xc8, 0x20, 0x78, 0xed, 0xb5, 0x5d, 0x5, + 0x4c, 0x14, 0xfc, 0xa4, 0x31, 0x69, 0x81, 0xd9, 0xb6, 0xee, 0x6, 0x5e, 0xcb, 0x93, 0x7b, 0x23, + 0xa5, 0xfd, 0x15, 0x4d, 0xd8, 0x80, 0x68, 0x30, 0x5f, 0x7, 0xef, 0xb7, 0x22, 0x7a, 0x92, 0xca, + 0x1b, 0x43, 0xab, 0xf3, 0x66, 0x3e, 0xd6, 0x8e, 0xe1, 0xb9, 0x51, 0x9, 0x9c, 0xc4, 0x2c, 0x74, + 0xf2, 0xaa, 0x42, 0x1a, 0x8f, 0xd7, 0x3f, 0x67, 0x8, 0x50, 0xb8, 0xe0, 0x75, 0x2d, 0xc5, 0x9d, + 0xd4, 0x8c, 0x64, 0x3c, 0xa9, 0xf1, 0x19, 0x41, 0x2e, 0x76, 0x9e, 0xc6, 0x53, 0xb, 0xe3, 0xbb, + 0x3d, 0x65, 0x8d, 0xd5, 0x40, 0x18, 0xf0, 0xa8, 0xc7, 0x9f, 0x77, 0x2f, 0xba, 0xe2, 0xa, 0x52, + 0x98, 0xc0, 0x28, 0x70, 0xe5, 0xbd, 0x55, 0xd, 0x62, 0x3a, 0xd2, 0x8a, 0x1f, 0x47, 0xaf, 0xf7, + 0x71, 0x29, 0xc1, 0x99, 0xc, 0x54, 0xbc, 0xe4, 0x8b, 0xd3, 0x3b, 0x63, 0xf6, 0xae, 0x46, 0x1e, + 0x57, 0xf, 0xe7, 0xbf, 0x2a, 0x72, 0x9a, 0xc2, 0xad, 0xf5, 0x1d, 0x45, 0xd0, 0x88, 0x60, 0x38, + 0xbe, 0xe6, 0xe, 0x56, 0xc3, 0x9b, 0x73, 0x2b, 0x44, 0x1c, 0xf4, 0xac, 0x39, 0x61, 0x89, 0xd1, + ], + [ + 0x0, 0x59, 0xb2, 0xeb, 0x79, 0x20, 0xcb, 0x92, 0xf2, 0xab, 0x40, 0x19, 0x8b, 0xd2, 0x39, 0x60, + 0xf9, 0xa0, 0x4b, 0x12, 0x80, 0xd9, 0x32, 0x6b, 0xb, 0x52, 0xb9, 0xe0, 0x72, 0x2b, 0xc0, 0x99, + 0xef, 0xb6, 0x5d, 0x4, 0x96, 0xcf, 0x24, 0x7d, 0x1d, 0x44, 0xaf, 0xf6, 0x64, 0x3d, 0xd6, 0x8f, + 0x16, 0x4f, 0xa4, 0xfd, 0x6f, 0x36, 0xdd, 0x84, 0xe4, 0xbd, 0x56, 0xf, 0x9d, 0xc4, 0x2f, 0x76, + 0xc3, 0x9a, 0x71, 0x28, 0xba, 0xe3, 0x8, 0x51, 0x31, 0x68, 0x83, 0xda, 0x48, 0x11, 0xfa, 0xa3, + 0x3a, 0x63, 0x88, 0xd1, 0x43, 0x1a, 0xf1, 0xa8, 0xc8, 0x91, 0x7a, 0x23, 0xb1, 0xe8, 0x3, 0x5a, + 0x2c, 0x75, 0x9e, 0xc7, 0x55, 0xc, 0xe7, 0xbe, 0xde, 0x87, 0x6c, 0x35, 0xa7, 0xfe, 0x15, 0x4c, + 0xd5, 0x8c, 0x67, 0x3e, 0xac, 0xf5, 0x1e, 0x47, 0x27, 0x7e, 0x95, 0xcc, 0x5e, 0x7, 0xec, 0xb5, + 0x9b, 0xc2, 0x29, 0x70, 0xe2, 0xbb, 0x50, 0x9, 0x69, 0x30, 0xdb, 0x82, 0x10, 0x49, 0xa2, 0xfb, + 0x62, 0x3b, 0xd0, 0x89, 0x1b, 0x42, 0xa9, 0xf0, 0x90, 0xc9, 0x22, 0x7b, 0xe9, 0xb0, 0x5b, 0x2, + 0x74, 0x2d, 0xc6, 0x9f, 0xd, 0x54, 0xbf, 0xe6, 0x86, 0xdf, 0x34, 0x6d, 0xff, 0xa6, 0x4d, 0x14, + 0x8d, 0xd4, 0x3f, 0x66, 0xf4, 0xad, 0x46, 0x1f, 0x7f, 0x26, 0xcd, 0x94, 0x6, 0x5f, 0xb4, 0xed, + 0x58, 0x1, 0xea, 0xb3, 0x21, 0x78, 0x93, 0xca, 0xaa, 0xf3, 0x18, 0x41, 0xd3, 0x8a, 0x61, 0x38, + 0xa1, 0xf8, 0x13, 0x4a, 0xd8, 0x81, 0x6a, 0x33, 0x53, 0xa, 0xe1, 0xb8, 0x2a, 0x73, 0x98, 0xc1, + 0xb7, 0xee, 0x5, 0x5c, 0xce, 0x97, 0x7c, 0x25, 0x45, 0x1c, 0xf7, 0xae, 0x3c, 0x65, 0x8e, 0xd7, + 0x4e, 0x17, 0xfc, 0xa5, 0x37, 0x6e, 0x85, 0xdc, 0xbc, 0xe5, 0xe, 0x57, 0xc5, 0x9c, 0x77, 0x2e, + ], + [ + 0x0, 0x5a, 0xb4, 0xee, 0x75, 0x2f, 0xc1, 0x9b, 0xea, 0xb0, 0x5e, 0x4, 0x9f, 0xc5, 0x2b, 0x71, + 0xc9, 0x93, 0x7d, 0x27, 0xbc, 0xe6, 0x8, 0x52, 0x23, 0x79, 0x97, 0xcd, 0x56, 0xc, 0xe2, 0xb8, + 0x8f, 0xd5, 0x3b, 0x61, 0xfa, 0xa0, 0x4e, 0x14, 0x65, 0x3f, 0xd1, 0x8b, 0x10, 0x4a, 0xa4, 0xfe, + 0x46, 0x1c, 0xf2, 0xa8, 0x33, 0x69, 0x87, 0xdd, 0xac, 0xf6, 0x18, 0x42, 0xd9, 0x83, 0x6d, 0x37, + 0x3, 0x59, 0xb7, 0xed, 0x76, 0x2c, 0xc2, 0x98, 0xe9, 0xb3, 0x5d, 0x7, 0x9c, 0xc6, 0x28, 0x72, + 0xca, 0x90, 0x7e, 0x24, 0xbf, 0xe5, 0xb, 0x51, 0x20, 0x7a, 0x94, 0xce, 0x55, 0xf, 0xe1, 0xbb, + 0x8c, 0xd6, 0x38, 0x62, 0xf9, 0xa3, 0x4d, 0x17, 0x66, 0x3c, 0xd2, 0x88, 0x13, 0x49, 0xa7, 0xfd, + 0x45, 0x1f, 0xf1, 0xab, 0x30, 0x6a, 0x84, 0xde, 0xaf, 0xf5, 0x1b, 0x41, 0xda, 0x80, 0x6e, 0x34, + 0x6, 0x5c, 0xb2, 0xe8, 0x73, 0x29, 0xc7, 0x9d, 0xec, 0xb6, 0x58, 0x2, 0x99, 0xc3, 0x2d, 0x77, + 0xcf, 0x95, 0x7b, 0x21, 0xba, 0xe0, 0xe, 0x54, 0x25, 0x7f, 0x91, 0xcb, 0x50, 0xa, 0xe4, 0xbe, + 0x89, 0xd3, 0x3d, 0x67, 0xfc, 0xa6, 0x48, 0x12, 0x63, 0x39, 0xd7, 0x8d, 0x16, 0x4c, 0xa2, 0xf8, + 0x40, 0x1a, 0xf4, 0xae, 0x35, 0x6f, 0x81, 0xdb, 0xaa, 0xf0, 0x1e, 0x44, 0xdf, 0x85, 0x6b, 0x31, + 0x5, 0x5f, 0xb1, 0xeb, 0x70, 0x2a, 0xc4, 0x9e, 0xef, 0xb5, 0x5b, 0x1, 0x9a, 0xc0, 0x2e, 0x74, + 0xcc, 0x96, 0x78, 0x22, 0xb9, 0xe3, 0xd, 0x57, 0x26, 0x7c, 0x92, 0xc8, 0x53, 0x9, 0xe7, 0xbd, + 0x8a, 0xd0, 0x3e, 0x64, 0xff, 0xa5, 0x4b, 0x11, 0x60, 0x3a, 0xd4, 0x8e, 0x15, 0x4f, 0xa1, 0xfb, + 0x43, 0x19, 0xf7, 0xad, 0x36, 0x6c, 0x82, 0xd8, 0xa9, 0xf3, 0x1d, 0x47, 0xdc, 0x86, 0x68, 0x32, + ], + [ + 0x0, 0x5b, 0xb6, 0xed, 0x71, 0x2a, 0xc7, 0x9c, 0xe2, 0xb9, 0x54, 0xf, 0x93, 0xc8, 0x25, 0x7e, + 0xd9, 0x82, 0x6f, 0x34, 0xa8, 0xf3, 0x1e, 0x45, 0x3b, 0x60, 0x8d, 0xd6, 0x4a, 0x11, 0xfc, 0xa7, + 0xaf, 0xf4, 0x19, 0x42, 0xde, 0x85, 0x68, 0x33, 0x4d, 0x16, 0xfb, 0xa0, 0x3c, 0x67, 0x8a, 0xd1, + 0x76, 0x2d, 0xc0, 0x9b, 0x7, 0x5c, 0xb1, 0xea, 0x94, 0xcf, 0x22, 0x79, 0xe5, 0xbe, 0x53, 0x8, + 0x43, 0x18, 0xf5, 0xae, 0x32, 0x69, 0x84, 0xdf, 0xa1, 0xfa, 0x17, 0x4c, 0xd0, 0x8b, 0x66, 0x3d, + 0x9a, 0xc1, 0x2c, 0x77, 0xeb, 0xb0, 0x5d, 0x6, 0x78, 0x23, 0xce, 0x95, 0x9, 0x52, 0xbf, 0xe4, + 0xec, 0xb7, 0x5a, 0x1, 0x9d, 0xc6, 0x2b, 0x70, 0xe, 0x55, 0xb8, 0xe3, 0x7f, 0x24, 0xc9, 0x92, + 0x35, 0x6e, 0x83, 0xd8, 0x44, 0x1f, 0xf2, 0xa9, 0xd7, 0x8c, 0x61, 0x3a, 0xa6, 0xfd, 0x10, 0x4b, + 0x86, 0xdd, 0x30, 0x6b, 0xf7, 0xac, 0x41, 0x1a, 0x64, 0x3f, 0xd2, 0x89, 0x15, 0x4e, 0xa3, 0xf8, + 0x5f, 0x4, 0xe9, 0xb2, 0x2e, 0x75, 0x98, 0xc3, 0xbd, 0xe6, 0xb, 0x50, 0xcc, 0x97, 0x7a, 0x21, + 0x29, 0x72, 0x9f, 0xc4, 0x58, 0x3, 0xee, 0xb5, 0xcb, 0x90, 0x7d, 0x26, 0xba, 0xe1, 0xc, 0x57, + 0xf0, 0xab, 0x46, 0x1d, 0x81, 0xda, 0x37, 0x6c, 0x12, 0x49, 0xa4, 0xff, 0x63, 0x38, 0xd5, 0x8e, + 0xc5, 0x9e, 0x73, 0x28, 0xb4, 0xef, 0x2, 0x59, 0x27, 0x7c, 0x91, 0xca, 0x56, 0xd, 0xe0, 0xbb, + 0x1c, 0x47, 0xaa, 0xf1, 0x6d, 0x36, 0xdb, 0x80, 0xfe, 0xa5, 0x48, 0x13, 0x8f, 0xd4, 0x39, 0x62, + 0x6a, 0x31, 0xdc, 0x87, 0x1b, 0x40, 0xad, 0xf6, 0x88, 0xd3, 0x3e, 0x65, 0xf9, 0xa2, 0x4f, 0x14, + 0xb3, 0xe8, 0x5, 0x5e, 0xc2, 0x99, 0x74, 0x2f, 0x51, 0xa, 0xe7, 0xbc, 0x20, 0x7b, 0x96, 0xcd, + ], + [ + 0x0, 0x5c, 0xb8, 0xe4, 0x6d, 0x31, 0xd5, 0x89, 0xda, 0x86, 0x62, 0x3e, 0xb7, 0xeb, 0xf, 0x53, + 0xa9, 0xf5, 0x11, 0x4d, 0xc4, 0x98, 0x7c, 0x20, 0x73, 0x2f, 0xcb, 0x97, 0x1e, 0x42, 0xa6, 0xfa, + 0x4f, 0x13, 0xf7, 0xab, 0x22, 0x7e, 0x9a, 0xc6, 0x95, 0xc9, 0x2d, 0x71, 0xf8, 0xa4, 0x40, 0x1c, + 0xe6, 0xba, 0x5e, 0x2, 0x8b, 0xd7, 0x33, 0x6f, 0x3c, 0x60, 0x84, 0xd8, 0x51, 0xd, 0xe9, 0xb5, + 0x9e, 0xc2, 0x26, 0x7a, 0xf3, 0xaf, 0x4b, 0x17, 0x44, 0x18, 0xfc, 0xa0, 0x29, 0x75, 0x91, 0xcd, + 0x37, 0x6b, 0x8f, 0xd3, 0x5a, 0x6, 0xe2, 0xbe, 0xed, 0xb1, 0x55, 0x9, 0x80, 0xdc, 0x38, 0x64, + 0xd1, 0x8d, 0x69, 0x35, 0xbc, 0xe0, 0x4, 0x58, 0xb, 0x57, 0xb3, 0xef, 0x66, 0x3a, 0xde, 0x82, + 0x78, 0x24, 0xc0, 0x9c, 0x15, 0x49, 0xad, 0xf1, 0xa2, 0xfe, 0x1a, 0x46, 0xcf, 0x93, 0x77, 0x2b, + 0x21, 0x7d, 0x99, 0xc5, 0x4c, 0x10, 0xf4, 0xa8, 0xfb, 0xa7, 0x43, 0x1f, 0x96, 0xca, 0x2e, 0x72, + 0x88, 0xd4, 0x30, 0x6c, 0xe5, 0xb9, 0x5d, 0x1, 0x52, 0xe, 0xea, 0xb6, 0x3f, 0x63, 0x87, 0xdb, + 0x6e, 0x32, 0xd6, 0x8a, 0x3, 0x5f, 0xbb, 0xe7, 0xb4, 0xe8, 0xc, 0x50, 0xd9, 0x85, 0x61, 0x3d, + 0xc7, 0x9b, 0x7f, 0x23, 0xaa, 0xf6, 0x12, 0x4e, 0x1d, 0x41, 0xa5, 0xf9, 0x70, 0x2c, 0xc8, 0x94, + 0xbf, 0xe3, 0x7, 0x5b, 0xd2, 0x8e, 0x6a, 0x36, 0x65, 0x39, 0xdd, 0x81, 0x8, 0x54, 0xb0, 0xec, + 0x16, 0x4a, 0xae, 0xf2, 0x7b, 0x27, 0xc3, 0x9f, 0xcc, 0x90, 0x74, 0x28, 0xa1, 0xfd, 0x19, 0x45, + 0xf0, 0xac, 0x48, 0x14, 0x9d, 0xc1, 0x25, 0x79, 0x2a, 0x76, 0x92, 0xce, 0x47, 0x1b, 0xff, 0xa3, + 0x59, 0x5, 0xe1, 0xbd, 0x34, 0x68, 0x8c, 0xd0, 0x83, 0xdf, 0x3b, 0x67, 0xee, 0xb2, 0x56, 0xa, + ], + [ + 0x0, 0x5d, 0xba, 0xe7, 0x69, 0x34, 0xd3, 0x8e, 0xd2, 0x8f, 0x68, 0x35, 0xbb, 0xe6, 0x1, 0x5c, + 0xb9, 0xe4, 0x3, 0x5e, 0xd0, 0x8d, 0x6a, 0x37, 0x6b, 0x36, 0xd1, 0x8c, 0x2, 0x5f, 0xb8, 0xe5, + 0x6f, 0x32, 0xd5, 0x88, 0x6, 0x5b, 0xbc, 0xe1, 0xbd, 0xe0, 0x7, 0x5a, 0xd4, 0x89, 0x6e, 0x33, + 0xd6, 0x8b, 0x6c, 0x31, 0xbf, 0xe2, 0x5, 0x58, 0x4, 0x59, 0xbe, 0xe3, 0x6d, 0x30, 0xd7, 0x8a, + 0xde, 0x83, 0x64, 0x39, 0xb7, 0xea, 0xd, 0x50, 0xc, 0x51, 0xb6, 0xeb, 0x65, 0x38, 0xdf, 0x82, + 0x67, 0x3a, 0xdd, 0x80, 0xe, 0x53, 0xb4, 0xe9, 0xb5, 0xe8, 0xf, 0x52, 0xdc, 0x81, 0x66, 0x3b, + 0xb1, 0xec, 0xb, 0x56, 0xd8, 0x85, 0x62, 0x3f, 0x63, 0x3e, 0xd9, 0x84, 0xa, 0x57, 0xb0, 0xed, + 0x8, 0x55, 0xb2, 0xef, 0x61, 0x3c, 0xdb, 0x86, 0xda, 0x87, 0x60, 0x3d, 0xb3, 0xee, 0x9, 0x54, + 0xa1, 0xfc, 0x1b, 0x46, 0xc8, 0x95, 0x72, 0x2f, 0x73, 0x2e, 0xc9, 0x94, 0x1a, 0x47, 0xa0, 0xfd, + 0x18, 0x45, 0xa2, 0xff, 0x71, 0x2c, 0xcb, 0x96, 0xca, 0x97, 0x70, 0x2d, 0xa3, 0xfe, 0x19, 0x44, + 0xce, 0x93, 0x74, 0x29, 0xa7, 0xfa, 0x1d, 0x40, 0x1c, 0x41, 0xa6, 0xfb, 0x75, 0x28, 0xcf, 0x92, + 0x77, 0x2a, 0xcd, 0x90, 0x1e, 0x43, 0xa4, 0xf9, 0xa5, 0xf8, 0x1f, 0x42, 0xcc, 0x91, 0x76, 0x2b, + 0x7f, 0x22, 0xc5, 0x98, 0x16, 0x4b, 0xac, 0xf1, 0xad, 0xf0, 0x17, 0x4a, 0xc4, 0x99, 0x7e, 0x23, + 0xc6, 0x9b, 0x7c, 0x21, 0xaf, 0xf2, 0x15, 0x48, 0x14, 0x49, 0xae, 0xf3, 0x7d, 0x20, 0xc7, 0x9a, + 0x10, 0x4d, 0xaa, 0xf7, 0x79, 0x24, 0xc3, 0x9e, 0xc2, 0x9f, 0x78, 0x25, 0xab, 0xf6, 0x11, 0x4c, + 0xa9, 0xf4, 0x13, 0x4e, 0xc0, 0x9d, 0x7a, 0x27, 0x7b, 0x26, 0xc1, 0x9c, 0x12, 0x4f, 0xa8, 0xf5, + ], + [ + 0x0, 0x5e, 0xbc, 0xe2, 0x65, 0x3b, 0xd9, 0x87, 0xca, 0x94, 0x76, 0x28, 0xaf, 0xf1, 0x13, 0x4d, + 0x89, 0xd7, 0x35, 0x6b, 0xec, 0xb2, 0x50, 0xe, 0x43, 0x1d, 0xff, 0xa1, 0x26, 0x78, 0x9a, 0xc4, + 0xf, 0x51, 0xb3, 0xed, 0x6a, 0x34, 0xd6, 0x88, 0xc5, 0x9b, 0x79, 0x27, 0xa0, 0xfe, 0x1c, 0x42, + 0x86, 0xd8, 0x3a, 0x64, 0xe3, 0xbd, 0x5f, 0x1, 0x4c, 0x12, 0xf0, 0xae, 0x29, 0x77, 0x95, 0xcb, + 0x1e, 0x40, 0xa2, 0xfc, 0x7b, 0x25, 0xc7, 0x99, 0xd4, 0x8a, 0x68, 0x36, 0xb1, 0xef, 0xd, 0x53, + 0x97, 0xc9, 0x2b, 0x75, 0xf2, 0xac, 0x4e, 0x10, 0x5d, 0x3, 0xe1, 0xbf, 0x38, 0x66, 0x84, 0xda, + 0x11, 0x4f, 0xad, 0xf3, 0x74, 0x2a, 0xc8, 0x96, 0xdb, 0x85, 0x67, 0x39, 0xbe, 0xe0, 0x2, 0x5c, + 0x98, 0xc6, 0x24, 0x7a, 0xfd, 0xa3, 0x41, 0x1f, 0x52, 0xc, 0xee, 0xb0, 0x37, 0x69, 0x8b, 0xd5, + 0x3c, 0x62, 0x80, 0xde, 0x59, 0x7, 0xe5, 0xbb, 0xf6, 0xa8, 0x4a, 0x14, 0x93, 0xcd, 0x2f, 0x71, + 0xb5, 0xeb, 0x9, 0x57, 0xd0, 0x8e, 0x6c, 0x32, 0x7f, 0x21, 0xc3, 0x9d, 0x1a, 0x44, 0xa6, 0xf8, + 0x33, 0x6d, 0x8f, 0xd1, 0x56, 0x8, 0xea, 0xb4, 0xf9, 0xa7, 0x45, 0x1b, 0x9c, 0xc2, 0x20, 0x7e, + 0xba, 0xe4, 0x6, 0x58, 0xdf, 0x81, 0x63, 0x3d, 0x70, 0x2e, 0xcc, 0x92, 0x15, 0x4b, 0xa9, 0xf7, + 0x22, 0x7c, 0x9e, 0xc0, 0x47, 0x19, 0xfb, 0xa5, 0xe8, 0xb6, 0x54, 0xa, 0x8d, 0xd3, 0x31, 0x6f, + 0xab, 0xf5, 0x17, 0x49, 0xce, 0x90, 0x72, 0x2c, 0x61, 0x3f, 0xdd, 0x83, 0x4, 0x5a, 0xb8, 0xe6, + 0x2d, 0x73, 0x91, 0xcf, 0x48, 0x16, 0xf4, 0xaa, 0xe7, 0xb9, 0x5b, 0x5, 0x82, 0xdc, 0x3e, 0x60, + 0xa4, 0xfa, 0x18, 0x46, 0xc1, 0x9f, 0x7d, 0x23, 0x6e, 0x30, 0xd2, 0x8c, 0xb, 0x55, 0xb7, 0xe9, + ], + [ + 0x0, 0x5f, 0xbe, 0xe1, 0x61, 0x3e, 0xdf, 0x80, 0xc2, 0x9d, 0x7c, 0x23, 0xa3, 0xfc, 0x1d, 0x42, + 0x99, 0xc6, 0x27, 0x78, 0xf8, 0xa7, 0x46, 0x19, 0x5b, 0x4, 0xe5, 0xba, 0x3a, 0x65, 0x84, 0xdb, + 0x2f, 0x70, 0x91, 0xce, 0x4e, 0x11, 0xf0, 0xaf, 0xed, 0xb2, 0x53, 0xc, 0x8c, 0xd3, 0x32, 0x6d, + 0xb6, 0xe9, 0x8, 0x57, 0xd7, 0x88, 0x69, 0x36, 0x74, 0x2b, 0xca, 0x95, 0x15, 0x4a, 0xab, 0xf4, + 0x5e, 0x1, 0xe0, 0xbf, 0x3f, 0x60, 0x81, 0xde, 0x9c, 0xc3, 0x22, 0x7d, 0xfd, 0xa2, 0x43, 0x1c, + 0xc7, 0x98, 0x79, 0x26, 0xa6, 0xf9, 0x18, 0x47, 0x5, 0x5a, 0xbb, 0xe4, 0x64, 0x3b, 0xda, 0x85, + 0x71, 0x2e, 0xcf, 0x90, 0x10, 0x4f, 0xae, 0xf1, 0xb3, 0xec, 0xd, 0x52, 0xd2, 0x8d, 0x6c, 0x33, + 0xe8, 0xb7, 0x56, 0x9, 0x89, 0xd6, 0x37, 0x68, 0x2a, 0x75, 0x94, 0xcb, 0x4b, 0x14, 0xf5, 0xaa, + 0xbc, 0xe3, 0x2, 0x5d, 0xdd, 0x82, 0x63, 0x3c, 0x7e, 0x21, 0xc0, 0x9f, 0x1f, 0x40, 0xa1, 0xfe, + 0x25, 0x7a, 0x9b, 0xc4, 0x44, 0x1b, 0xfa, 0xa5, 0xe7, 0xb8, 0x59, 0x6, 0x86, 0xd9, 0x38, 0x67, + 0x93, 0xcc, 0x2d, 0x72, 0xf2, 0xad, 0x4c, 0x13, 0x51, 0xe, 0xef, 0xb0, 0x30, 0x6f, 0x8e, 0xd1, + 0xa, 0x55, 0xb4, 0xeb, 0x6b, 0x34, 0xd5, 0x8a, 0xc8, 0x97, 0x76, 0x29, 0xa9, 0xf6, 0x17, 0x48, + 0xe2, 0xbd, 0x5c, 0x3, 0x83, 0xdc, 0x3d, 0x62, 0x20, 0x7f, 0x9e, 0xc1, 0x41, 0x1e, 0xff, 0xa0, + 0x7b, 0x24, 0xc5, 0x9a, 0x1a, 0x45, 0xa4, 0xfb, 0xb9, 0xe6, 0x7, 0x58, 0xd8, 0x87, 0x66, 0x39, + 0xcd, 0x92, 0x73, 0x2c, 0xac, 0xf3, 0x12, 0x4d, 0xf, 0x50, 0xb1, 0xee, 0x6e, 0x31, 0xd0, 0x8f, + 0x54, 0xb, 0xea, 0xb5, 0x35, 0x6a, 0x8b, 0xd4, 0x96, 0xc9, 0x28, 0x77, 0xf7, 0xa8, 0x49, 0x16, + ], + [ + 0x0, 0x60, 0xc0, 0xa0, 0x9d, 0xfd, 0x5d, 0x3d, 0x27, 0x47, 0xe7, 0x87, 0xba, 0xda, 0x7a, 0x1a, + 0x4e, 0x2e, 0x8e, 0xee, 0xd3, 0xb3, 0x13, 0x73, 0x69, 0x9, 0xa9, 0xc9, 0xf4, 0x94, 0x34, 0x54, + 0x9c, 0xfc, 0x5c, 0x3c, 0x1, 0x61, 0xc1, 0xa1, 0xbb, 0xdb, 0x7b, 0x1b, 0x26, 0x46, 0xe6, 0x86, + 0xd2, 0xb2, 0x12, 0x72, 0x4f, 0x2f, 0x8f, 0xef, 0xf5, 0x95, 0x35, 0x55, 0x68, 0x8, 0xa8, 0xc8, + 0x25, 0x45, 0xe5, 0x85, 0xb8, 0xd8, 0x78, 0x18, 0x2, 0x62, 0xc2, 0xa2, 0x9f, 0xff, 0x5f, 0x3f, + 0x6b, 0xb, 0xab, 0xcb, 0xf6, 0x96, 0x36, 0x56, 0x4c, 0x2c, 0x8c, 0xec, 0xd1, 0xb1, 0x11, 0x71, + 0xb9, 0xd9, 0x79, 0x19, 0x24, 0x44, 0xe4, 0x84, 0x9e, 0xfe, 0x5e, 0x3e, 0x3, 0x63, 0xc3, 0xa3, + 0xf7, 0x97, 0x37, 0x57, 0x6a, 0xa, 0xaa, 0xca, 0xd0, 0xb0, 0x10, 0x70, 0x4d, 0x2d, 0x8d, 0xed, + 0x4a, 0x2a, 0x8a, 0xea, 0xd7, 0xb7, 0x17, 0x77, 0x6d, 0xd, 0xad, 0xcd, 0xf0, 0x90, 0x30, 0x50, + 0x4, 0x64, 0xc4, 0xa4, 0x99, 0xf9, 0x59, 0x39, 0x23, 0x43, 0xe3, 0x83, 0xbe, 0xde, 0x7e, 0x1e, + 0xd6, 0xb6, 0x16, 0x76, 0x4b, 0x2b, 0x8b, 0xeb, 0xf1, 0x91, 0x31, 0x51, 0x6c, 0xc, 0xac, 0xcc, + 0x98, 0xf8, 0x58, 0x38, 0x5, 0x65, 0xc5, 0xa5, 0xbf, 0xdf, 0x7f, 0x1f, 0x22, 0x42, 0xe2, 0x82, + 0x6f, 0xf, 0xaf, 0xcf, 0xf2, 0x92, 0x32, 0x52, 0x48, 0x28, 0x88, 0xe8, 0xd5, 0xb5, 0x15, 0x75, + 0x21, 0x41, 0xe1, 0x81, 0xbc, 0xdc, 0x7c, 0x1c, 0x6, 0x66, 0xc6, 0xa6, 0x9b, 0xfb, 0x5b, 0x3b, + 0xf3, 0x93, 0x33, 0x53, 0x6e, 0xe, 0xae, 0xce, 0xd4, 0xb4, 0x14, 0x74, 0x49, 0x29, 0x89, 0xe9, + 0xbd, 0xdd, 0x7d, 0x1d, 0x20, 0x40, 0xe0, 0x80, 0x9a, 0xfa, 0x5a, 0x3a, 0x7, 0x67, 0xc7, 0xa7, + ], + [ + 0x0, 0x61, 0xc2, 0xa3, 0x99, 0xf8, 0x5b, 0x3a, 0x2f, 0x4e, 0xed, 0x8c, 0xb6, 0xd7, 0x74, 0x15, + 0x5e, 0x3f, 0x9c, 0xfd, 0xc7, 0xa6, 0x5, 0x64, 0x71, 0x10, 0xb3, 0xd2, 0xe8, 0x89, 0x2a, 0x4b, + 0xbc, 0xdd, 0x7e, 0x1f, 0x25, 0x44, 0xe7, 0x86, 0x93, 0xf2, 0x51, 0x30, 0xa, 0x6b, 0xc8, 0xa9, + 0xe2, 0x83, 0x20, 0x41, 0x7b, 0x1a, 0xb9, 0xd8, 0xcd, 0xac, 0xf, 0x6e, 0x54, 0x35, 0x96, 0xf7, + 0x65, 0x4, 0xa7, 0xc6, 0xfc, 0x9d, 0x3e, 0x5f, 0x4a, 0x2b, 0x88, 0xe9, 0xd3, 0xb2, 0x11, 0x70, + 0x3b, 0x5a, 0xf9, 0x98, 0xa2, 0xc3, 0x60, 0x1, 0x14, 0x75, 0xd6, 0xb7, 0x8d, 0xec, 0x4f, 0x2e, + 0xd9, 0xb8, 0x1b, 0x7a, 0x40, 0x21, 0x82, 0xe3, 0xf6, 0x97, 0x34, 0x55, 0x6f, 0xe, 0xad, 0xcc, + 0x87, 0xe6, 0x45, 0x24, 0x1e, 0x7f, 0xdc, 0xbd, 0xa8, 0xc9, 0x6a, 0xb, 0x31, 0x50, 0xf3, 0x92, + 0xca, 0xab, 0x8, 0x69, 0x53, 0x32, 0x91, 0xf0, 0xe5, 0x84, 0x27, 0x46, 0x7c, 0x1d, 0xbe, 0xdf, + 0x94, 0xf5, 0x56, 0x37, 0xd, 0x6c, 0xcf, 0xae, 0xbb, 0xda, 0x79, 0x18, 0x22, 0x43, 0xe0, 0x81, + 0x76, 0x17, 0xb4, 0xd5, 0xef, 0x8e, 0x2d, 0x4c, 0x59, 0x38, 0x9b, 0xfa, 0xc0, 0xa1, 0x2, 0x63, + 0x28, 0x49, 0xea, 0x8b, 0xb1, 0xd0, 0x73, 0x12, 0x7, 0x66, 0xc5, 0xa4, 0x9e, 0xff, 0x5c, 0x3d, + 0xaf, 0xce, 0x6d, 0xc, 0x36, 0x57, 0xf4, 0x95, 0x80, 0xe1, 0x42, 0x23, 0x19, 0x78, 0xdb, 0xba, + 0xf1, 0x90, 0x33, 0x52, 0x68, 0x9, 0xaa, 0xcb, 0xde, 0xbf, 0x1c, 0x7d, 0x47, 0x26, 0x85, 0xe4, + 0x13, 0x72, 0xd1, 0xb0, 0x8a, 0xeb, 0x48, 0x29, 0x3c, 0x5d, 0xfe, 0x9f, 0xa5, 0xc4, 0x67, 0x6, + 0x4d, 0x2c, 0x8f, 0xee, 0xd4, 0xb5, 0x16, 0x77, 0x62, 0x3, 0xa0, 0xc1, 0xfb, 0x9a, 0x39, 0x58, + ], + [ + 0x0, 0x62, 0xc4, 0xa6, 0x95, 0xf7, 0x51, 0x33, 0x37, 0x55, 0xf3, 0x91, 0xa2, 0xc0, 0x66, 0x4, + 0x6e, 0xc, 0xaa, 0xc8, 0xfb, 0x99, 0x3f, 0x5d, 0x59, 0x3b, 0x9d, 0xff, 0xcc, 0xae, 0x8, 0x6a, + 0xdc, 0xbe, 0x18, 0x7a, 0x49, 0x2b, 0x8d, 0xef, 0xeb, 0x89, 0x2f, 0x4d, 0x7e, 0x1c, 0xba, 0xd8, + 0xb2, 0xd0, 0x76, 0x14, 0x27, 0x45, 0xe3, 0x81, 0x85, 0xe7, 0x41, 0x23, 0x10, 0x72, 0xd4, 0xb6, + 0xa5, 0xc7, 0x61, 0x3, 0x30, 0x52, 0xf4, 0x96, 0x92, 0xf0, 0x56, 0x34, 0x7, 0x65, 0xc3, 0xa1, + 0xcb, 0xa9, 0xf, 0x6d, 0x5e, 0x3c, 0x9a, 0xf8, 0xfc, 0x9e, 0x38, 0x5a, 0x69, 0xb, 0xad, 0xcf, + 0x79, 0x1b, 0xbd, 0xdf, 0xec, 0x8e, 0x28, 0x4a, 0x4e, 0x2c, 0x8a, 0xe8, 0xdb, 0xb9, 0x1f, 0x7d, + 0x17, 0x75, 0xd3, 0xb1, 0x82, 0xe0, 0x46, 0x24, 0x20, 0x42, 0xe4, 0x86, 0xb5, 0xd7, 0x71, 0x13, + 0x57, 0x35, 0x93, 0xf1, 0xc2, 0xa0, 0x6, 0x64, 0x60, 0x2, 0xa4, 0xc6, 0xf5, 0x97, 0x31, 0x53, + 0x39, 0x5b, 0xfd, 0x9f, 0xac, 0xce, 0x68, 0xa, 0xe, 0x6c, 0xca, 0xa8, 0x9b, 0xf9, 0x5f, 0x3d, + 0x8b, 0xe9, 0x4f, 0x2d, 0x1e, 0x7c, 0xda, 0xb8, 0xbc, 0xde, 0x78, 0x1a, 0x29, 0x4b, 0xed, 0x8f, + 0xe5, 0x87, 0x21, 0x43, 0x70, 0x12, 0xb4, 0xd6, 0xd2, 0xb0, 0x16, 0x74, 0x47, 0x25, 0x83, 0xe1, + 0xf2, 0x90, 0x36, 0x54, 0x67, 0x5, 0xa3, 0xc1, 0xc5, 0xa7, 0x1, 0x63, 0x50, 0x32, 0x94, 0xf6, + 0x9c, 0xfe, 0x58, 0x3a, 0x9, 0x6b, 0xcd, 0xaf, 0xab, 0xc9, 0x6f, 0xd, 0x3e, 0x5c, 0xfa, 0x98, + 0x2e, 0x4c, 0xea, 0x88, 0xbb, 0xd9, 0x7f, 0x1d, 0x19, 0x7b, 0xdd, 0xbf, 0x8c, 0xee, 0x48, 0x2a, + 0x40, 0x22, 0x84, 0xe6, 0xd5, 0xb7, 0x11, 0x73, 0x77, 0x15, 0xb3, 0xd1, 0xe2, 0x80, 0x26, 0x44, + ], + [ + 0x0, 0x63, 0xc6, 0xa5, 0x91, 0xf2, 0x57, 0x34, 0x3f, 0x5c, 0xf9, 0x9a, 0xae, 0xcd, 0x68, 0xb, + 0x7e, 0x1d, 0xb8, 0xdb, 0xef, 0x8c, 0x29, 0x4a, 0x41, 0x22, 0x87, 0xe4, 0xd0, 0xb3, 0x16, 0x75, + 0xfc, 0x9f, 0x3a, 0x59, 0x6d, 0xe, 0xab, 0xc8, 0xc3, 0xa0, 0x5, 0x66, 0x52, 0x31, 0x94, 0xf7, + 0x82, 0xe1, 0x44, 0x27, 0x13, 0x70, 0xd5, 0xb6, 0xbd, 0xde, 0x7b, 0x18, 0x2c, 0x4f, 0xea, 0x89, + 0xe5, 0x86, 0x23, 0x40, 0x74, 0x17, 0xb2, 0xd1, 0xda, 0xb9, 0x1c, 0x7f, 0x4b, 0x28, 0x8d, 0xee, + 0x9b, 0xf8, 0x5d, 0x3e, 0xa, 0x69, 0xcc, 0xaf, 0xa4, 0xc7, 0x62, 0x1, 0x35, 0x56, 0xf3, 0x90, + 0x19, 0x7a, 0xdf, 0xbc, 0x88, 0xeb, 0x4e, 0x2d, 0x26, 0x45, 0xe0, 0x83, 0xb7, 0xd4, 0x71, 0x12, + 0x67, 0x4, 0xa1, 0xc2, 0xf6, 0x95, 0x30, 0x53, 0x58, 0x3b, 0x9e, 0xfd, 0xc9, 0xaa, 0xf, 0x6c, + 0xd7, 0xb4, 0x11, 0x72, 0x46, 0x25, 0x80, 0xe3, 0xe8, 0x8b, 0x2e, 0x4d, 0x79, 0x1a, 0xbf, 0xdc, + 0xa9, 0xca, 0x6f, 0xc, 0x38, 0x5b, 0xfe, 0x9d, 0x96, 0xf5, 0x50, 0x33, 0x7, 0x64, 0xc1, 0xa2, + 0x2b, 0x48, 0xed, 0x8e, 0xba, 0xd9, 0x7c, 0x1f, 0x14, 0x77, 0xd2, 0xb1, 0x85, 0xe6, 0x43, 0x20, + 0x55, 0x36, 0x93, 0xf0, 0xc4, 0xa7, 0x2, 0x61, 0x6a, 0x9, 0xac, 0xcf, 0xfb, 0x98, 0x3d, 0x5e, + 0x32, 0x51, 0xf4, 0x97, 0xa3, 0xc0, 0x65, 0x6, 0xd, 0x6e, 0xcb, 0xa8, 0x9c, 0xff, 0x5a, 0x39, + 0x4c, 0x2f, 0x8a, 0xe9, 0xdd, 0xbe, 0x1b, 0x78, 0x73, 0x10, 0xb5, 0xd6, 0xe2, 0x81, 0x24, 0x47, + 0xce, 0xad, 0x8, 0x6b, 0x5f, 0x3c, 0x99, 0xfa, 0xf1, 0x92, 0x37, 0x54, 0x60, 0x3, 0xa6, 0xc5, + 0xb0, 0xd3, 0x76, 0x15, 0x21, 0x42, 0xe7, 0x84, 0x8f, 0xec, 0x49, 0x2a, 0x1e, 0x7d, 0xd8, 0xbb, + ], + [ + 0x0, 0x64, 0xc8, 0xac, 0x8d, 0xe9, 0x45, 0x21, 0x7, 0x63, 0xcf, 0xab, 0x8a, 0xee, 0x42, 0x26, + 0xe, 0x6a, 0xc6, 0xa2, 0x83, 0xe7, 0x4b, 0x2f, 0x9, 0x6d, 0xc1, 0xa5, 0x84, 0xe0, 0x4c, 0x28, + 0x1c, 0x78, 0xd4, 0xb0, 0x91, 0xf5, 0x59, 0x3d, 0x1b, 0x7f, 0xd3, 0xb7, 0x96, 0xf2, 0x5e, 0x3a, + 0x12, 0x76, 0xda, 0xbe, 0x9f, 0xfb, 0x57, 0x33, 0x15, 0x71, 0xdd, 0xb9, 0x98, 0xfc, 0x50, 0x34, + 0x38, 0x5c, 0xf0, 0x94, 0xb5, 0xd1, 0x7d, 0x19, 0x3f, 0x5b, 0xf7, 0x93, 0xb2, 0xd6, 0x7a, 0x1e, + 0x36, 0x52, 0xfe, 0x9a, 0xbb, 0xdf, 0x73, 0x17, 0x31, 0x55, 0xf9, 0x9d, 0xbc, 0xd8, 0x74, 0x10, + 0x24, 0x40, 0xec, 0x88, 0xa9, 0xcd, 0x61, 0x5, 0x23, 0x47, 0xeb, 0x8f, 0xae, 0xca, 0x66, 0x2, + 0x2a, 0x4e, 0xe2, 0x86, 0xa7, 0xc3, 0x6f, 0xb, 0x2d, 0x49, 0xe5, 0x81, 0xa0, 0xc4, 0x68, 0xc, + 0x70, 0x14, 0xb8, 0xdc, 0xfd, 0x99, 0x35, 0x51, 0x77, 0x13, 0xbf, 0xdb, 0xfa, 0x9e, 0x32, 0x56, + 0x7e, 0x1a, 0xb6, 0xd2, 0xf3, 0x97, 0x3b, 0x5f, 0x79, 0x1d, 0xb1, 0xd5, 0xf4, 0x90, 0x3c, 0x58, + 0x6c, 0x8, 0xa4, 0xc0, 0xe1, 0x85, 0x29, 0x4d, 0x6b, 0xf, 0xa3, 0xc7, 0xe6, 0x82, 0x2e, 0x4a, + 0x62, 0x6, 0xaa, 0xce, 0xef, 0x8b, 0x27, 0x43, 0x65, 0x1, 0xad, 0xc9, 0xe8, 0x8c, 0x20, 0x44, + 0x48, 0x2c, 0x80, 0xe4, 0xc5, 0xa1, 0xd, 0x69, 0x4f, 0x2b, 0x87, 0xe3, 0xc2, 0xa6, 0xa, 0x6e, + 0x46, 0x22, 0x8e, 0xea, 0xcb, 0xaf, 0x3, 0x67, 0x41, 0x25, 0x89, 0xed, 0xcc, 0xa8, 0x4, 0x60, + 0x54, 0x30, 0x9c, 0xf8, 0xd9, 0xbd, 0x11, 0x75, 0x53, 0x37, 0x9b, 0xff, 0xde, 0xba, 0x16, 0x72, + 0x5a, 0x3e, 0x92, 0xf6, 0xd7, 0xb3, 0x1f, 0x7b, 0x5d, 0x39, 0x95, 0xf1, 0xd0, 0xb4, 0x18, 0x7c, + ], + [ + 0x0, 0x65, 0xca, 0xaf, 0x89, 0xec, 0x43, 0x26, 0xf, 0x6a, 0xc5, 0xa0, 0x86, 0xe3, 0x4c, 0x29, + 0x1e, 0x7b, 0xd4, 0xb1, 0x97, 0xf2, 0x5d, 0x38, 0x11, 0x74, 0xdb, 0xbe, 0x98, 0xfd, 0x52, 0x37, + 0x3c, 0x59, 0xf6, 0x93, 0xb5, 0xd0, 0x7f, 0x1a, 0x33, 0x56, 0xf9, 0x9c, 0xba, 0xdf, 0x70, 0x15, + 0x22, 0x47, 0xe8, 0x8d, 0xab, 0xce, 0x61, 0x4, 0x2d, 0x48, 0xe7, 0x82, 0xa4, 0xc1, 0x6e, 0xb, + 0x78, 0x1d, 0xb2, 0xd7, 0xf1, 0x94, 0x3b, 0x5e, 0x77, 0x12, 0xbd, 0xd8, 0xfe, 0x9b, 0x34, 0x51, + 0x66, 0x3, 0xac, 0xc9, 0xef, 0x8a, 0x25, 0x40, 0x69, 0xc, 0xa3, 0xc6, 0xe0, 0x85, 0x2a, 0x4f, + 0x44, 0x21, 0x8e, 0xeb, 0xcd, 0xa8, 0x7, 0x62, 0x4b, 0x2e, 0x81, 0xe4, 0xc2, 0xa7, 0x8, 0x6d, + 0x5a, 0x3f, 0x90, 0xf5, 0xd3, 0xb6, 0x19, 0x7c, 0x55, 0x30, 0x9f, 0xfa, 0xdc, 0xb9, 0x16, 0x73, + 0xf0, 0x95, 0x3a, 0x5f, 0x79, 0x1c, 0xb3, 0xd6, 0xff, 0x9a, 0x35, 0x50, 0x76, 0x13, 0xbc, 0xd9, + 0xee, 0x8b, 0x24, 0x41, 0x67, 0x2, 0xad, 0xc8, 0xe1, 0x84, 0x2b, 0x4e, 0x68, 0xd, 0xa2, 0xc7, + 0xcc, 0xa9, 0x6, 0x63, 0x45, 0x20, 0x8f, 0xea, 0xc3, 0xa6, 0x9, 0x6c, 0x4a, 0x2f, 0x80, 0xe5, + 0xd2, 0xb7, 0x18, 0x7d, 0x5b, 0x3e, 0x91, 0xf4, 0xdd, 0xb8, 0x17, 0x72, 0x54, 0x31, 0x9e, 0xfb, + 0x88, 0xed, 0x42, 0x27, 0x1, 0x64, 0xcb, 0xae, 0x87, 0xe2, 0x4d, 0x28, 0xe, 0x6b, 0xc4, 0xa1, + 0x96, 0xf3, 0x5c, 0x39, 0x1f, 0x7a, 0xd5, 0xb0, 0x99, 0xfc, 0x53, 0x36, 0x10, 0x75, 0xda, 0xbf, + 0xb4, 0xd1, 0x7e, 0x1b, 0x3d, 0x58, 0xf7, 0x92, 0xbb, 0xde, 0x71, 0x14, 0x32, 0x57, 0xf8, 0x9d, + 0xaa, 0xcf, 0x60, 0x5, 0x23, 0x46, 0xe9, 0x8c, 0xa5, 0xc0, 0x6f, 0xa, 0x2c, 0x49, 0xe6, 0x83, + ], + [ + 0x0, 0x66, 0xcc, 0xaa, 0x85, 0xe3, 0x49, 0x2f, 0x17, 0x71, 0xdb, 0xbd, 0x92, 0xf4, 0x5e, 0x38, + 0x2e, 0x48, 0xe2, 0x84, 0xab, 0xcd, 0x67, 0x1, 0x39, 0x5f, 0xf5, 0x93, 0xbc, 0xda, 0x70, 0x16, + 0x5c, 0x3a, 0x90, 0xf6, 0xd9, 0xbf, 0x15, 0x73, 0x4b, 0x2d, 0x87, 0xe1, 0xce, 0xa8, 0x2, 0x64, + 0x72, 0x14, 0xbe, 0xd8, 0xf7, 0x91, 0x3b, 0x5d, 0x65, 0x3, 0xa9, 0xcf, 0xe0, 0x86, 0x2c, 0x4a, + 0xb8, 0xde, 0x74, 0x12, 0x3d, 0x5b, 0xf1, 0x97, 0xaf, 0xc9, 0x63, 0x5, 0x2a, 0x4c, 0xe6, 0x80, + 0x96, 0xf0, 0x5a, 0x3c, 0x13, 0x75, 0xdf, 0xb9, 0x81, 0xe7, 0x4d, 0x2b, 0x4, 0x62, 0xc8, 0xae, + 0xe4, 0x82, 0x28, 0x4e, 0x61, 0x7, 0xad, 0xcb, 0xf3, 0x95, 0x3f, 0x59, 0x76, 0x10, 0xba, 0xdc, + 0xca, 0xac, 0x6, 0x60, 0x4f, 0x29, 0x83, 0xe5, 0xdd, 0xbb, 0x11, 0x77, 0x58, 0x3e, 0x94, 0xf2, + 0x6d, 0xb, 0xa1, 0xc7, 0xe8, 0x8e, 0x24, 0x42, 0x7a, 0x1c, 0xb6, 0xd0, 0xff, 0x99, 0x33, 0x55, + 0x43, 0x25, 0x8f, 0xe9, 0xc6, 0xa0, 0xa, 0x6c, 0x54, 0x32, 0x98, 0xfe, 0xd1, 0xb7, 0x1d, 0x7b, + 0x31, 0x57, 0xfd, 0x9b, 0xb4, 0xd2, 0x78, 0x1e, 0x26, 0x40, 0xea, 0x8c, 0xa3, 0xc5, 0x6f, 0x9, + 0x1f, 0x79, 0xd3, 0xb5, 0x9a, 0xfc, 0x56, 0x30, 0x8, 0x6e, 0xc4, 0xa2, 0x8d, 0xeb, 0x41, 0x27, + 0xd5, 0xb3, 0x19, 0x7f, 0x50, 0x36, 0x9c, 0xfa, 0xc2, 0xa4, 0xe, 0x68, 0x47, 0x21, 0x8b, 0xed, + 0xfb, 0x9d, 0x37, 0x51, 0x7e, 0x18, 0xb2, 0xd4, 0xec, 0x8a, 0x20, 0x46, 0x69, 0xf, 0xa5, 0xc3, + 0x89, 0xef, 0x45, 0x23, 0xc, 0x6a, 0xc0, 0xa6, 0x9e, 0xf8, 0x52, 0x34, 0x1b, 0x7d, 0xd7, 0xb1, + 0xa7, 0xc1, 0x6b, 0xd, 0x22, 0x44, 0xee, 0x88, 0xb0, 0xd6, 0x7c, 0x1a, 0x35, 0x53, 0xf9, 0x9f, + ], + [ + 0x0, 0x67, 0xce, 0xa9, 0x81, 0xe6, 0x4f, 0x28, 0x1f, 0x78, 0xd1, 0xb6, 0x9e, 0xf9, 0x50, 0x37, + 0x3e, 0x59, 0xf0, 0x97, 0xbf, 0xd8, 0x71, 0x16, 0x21, 0x46, 0xef, 0x88, 0xa0, 0xc7, 0x6e, 0x9, + 0x7c, 0x1b, 0xb2, 0xd5, 0xfd, 0x9a, 0x33, 0x54, 0x63, 0x4, 0xad, 0xca, 0xe2, 0x85, 0x2c, 0x4b, + 0x42, 0x25, 0x8c, 0xeb, 0xc3, 0xa4, 0xd, 0x6a, 0x5d, 0x3a, 0x93, 0xf4, 0xdc, 0xbb, 0x12, 0x75, + 0xf8, 0x9f, 0x36, 0x51, 0x79, 0x1e, 0xb7, 0xd0, 0xe7, 0x80, 0x29, 0x4e, 0x66, 0x1, 0xa8, 0xcf, + 0xc6, 0xa1, 0x8, 0x6f, 0x47, 0x20, 0x89, 0xee, 0xd9, 0xbe, 0x17, 0x70, 0x58, 0x3f, 0x96, 0xf1, + 0x84, 0xe3, 0x4a, 0x2d, 0x5, 0x62, 0xcb, 0xac, 0x9b, 0xfc, 0x55, 0x32, 0x1a, 0x7d, 0xd4, 0xb3, + 0xba, 0xdd, 0x74, 0x13, 0x3b, 0x5c, 0xf5, 0x92, 0xa5, 0xc2, 0x6b, 0xc, 0x24, 0x43, 0xea, 0x8d, + 0xed, 0x8a, 0x23, 0x44, 0x6c, 0xb, 0xa2, 0xc5, 0xf2, 0x95, 0x3c, 0x5b, 0x73, 0x14, 0xbd, 0xda, + 0xd3, 0xb4, 0x1d, 0x7a, 0x52, 0x35, 0x9c, 0xfb, 0xcc, 0xab, 0x2, 0x65, 0x4d, 0x2a, 0x83, 0xe4, + 0x91, 0xf6, 0x5f, 0x38, 0x10, 0x77, 0xde, 0xb9, 0x8e, 0xe9, 0x40, 0x27, 0xf, 0x68, 0xc1, 0xa6, + 0xaf, 0xc8, 0x61, 0x6, 0x2e, 0x49, 0xe0, 0x87, 0xb0, 0xd7, 0x7e, 0x19, 0x31, 0x56, 0xff, 0x98, + 0x15, 0x72, 0xdb, 0xbc, 0x94, 0xf3, 0x5a, 0x3d, 0xa, 0x6d, 0xc4, 0xa3, 0x8b, 0xec, 0x45, 0x22, + 0x2b, 0x4c, 0xe5, 0x82, 0xaa, 0xcd, 0x64, 0x3, 0x34, 0x53, 0xfa, 0x9d, 0xb5, 0xd2, 0x7b, 0x1c, + 0x69, 0xe, 0xa7, 0xc0, 0xe8, 0x8f, 0x26, 0x41, 0x76, 0x11, 0xb8, 0xdf, 0xf7, 0x90, 0x39, 0x5e, + 0x57, 0x30, 0x99, 0xfe, 0xd6, 0xb1, 0x18, 0x7f, 0x48, 0x2f, 0x86, 0xe1, 0xc9, 0xae, 0x7, 0x60, + ], + [ + 0x0, 0x68, 0xd0, 0xb8, 0xbd, 0xd5, 0x6d, 0x5, 0x67, 0xf, 0xb7, 0xdf, 0xda, 0xb2, 0xa, 0x62, + 0xce, 0xa6, 0x1e, 0x76, 0x73, 0x1b, 0xa3, 0xcb, 0xa9, 0xc1, 0x79, 0x11, 0x14, 0x7c, 0xc4, 0xac, + 0x81, 0xe9, 0x51, 0x39, 0x3c, 0x54, 0xec, 0x84, 0xe6, 0x8e, 0x36, 0x5e, 0x5b, 0x33, 0x8b, 0xe3, + 0x4f, 0x27, 0x9f, 0xf7, 0xf2, 0x9a, 0x22, 0x4a, 0x28, 0x40, 0xf8, 0x90, 0x95, 0xfd, 0x45, 0x2d, + 0x1f, 0x77, 0xcf, 0xa7, 0xa2, 0xca, 0x72, 0x1a, 0x78, 0x10, 0xa8, 0xc0, 0xc5, 0xad, 0x15, 0x7d, + 0xd1, 0xb9, 0x1, 0x69, 0x6c, 0x4, 0xbc, 0xd4, 0xb6, 0xde, 0x66, 0xe, 0xb, 0x63, 0xdb, 0xb3, + 0x9e, 0xf6, 0x4e, 0x26, 0x23, 0x4b, 0xf3, 0x9b, 0xf9, 0x91, 0x29, 0x41, 0x44, 0x2c, 0x94, 0xfc, + 0x50, 0x38, 0x80, 0xe8, 0xed, 0x85, 0x3d, 0x55, 0x37, 0x5f, 0xe7, 0x8f, 0x8a, 0xe2, 0x5a, 0x32, + 0x3e, 0x56, 0xee, 0x86, 0x83, 0xeb, 0x53, 0x3b, 0x59, 0x31, 0x89, 0xe1, 0xe4, 0x8c, 0x34, 0x5c, + 0xf0, 0x98, 0x20, 0x48, 0x4d, 0x25, 0x9d, 0xf5, 0x97, 0xff, 0x47, 0x2f, 0x2a, 0x42, 0xfa, 0x92, + 0xbf, 0xd7, 0x6f, 0x7, 0x2, 0x6a, 0xd2, 0xba, 0xd8, 0xb0, 0x8, 0x60, 0x65, 0xd, 0xb5, 0xdd, + 0x71, 0x19, 0xa1, 0xc9, 0xcc, 0xa4, 0x1c, 0x74, 0x16, 0x7e, 0xc6, 0xae, 0xab, 0xc3, 0x7b, 0x13, + 0x21, 0x49, 0xf1, 0x99, 0x9c, 0xf4, 0x4c, 0x24, 0x46, 0x2e, 0x96, 0xfe, 0xfb, 0x93, 0x2b, 0x43, + 0xef, 0x87, 0x3f, 0x57, 0x52, 0x3a, 0x82, 0xea, 0x88, 0xe0, 0x58, 0x30, 0x35, 0x5d, 0xe5, 0x8d, + 0xa0, 0xc8, 0x70, 0x18, 0x1d, 0x75, 0xcd, 0xa5, 0xc7, 0xaf, 0x17, 0x7f, 0x7a, 0x12, 0xaa, 0xc2, + 0x6e, 0x6, 0xbe, 0xd6, 0xd3, 0xbb, 0x3, 0x6b, 0x9, 0x61, 0xd9, 0xb1, 0xb4, 0xdc, 0x64, 0xc, + ], + [ + 0x0, 0x69, 0xd2, 0xbb, 0xb9, 0xd0, 0x6b, 0x2, 0x6f, 0x6, 0xbd, 0xd4, 0xd6, 0xbf, 0x4, 0x6d, + 0xde, 0xb7, 0xc, 0x65, 0x67, 0xe, 0xb5, 0xdc, 0xb1, 0xd8, 0x63, 0xa, 0x8, 0x61, 0xda, 0xb3, + 0xa1, 0xc8, 0x73, 0x1a, 0x18, 0x71, 0xca, 0xa3, 0xce, 0xa7, 0x1c, 0x75, 0x77, 0x1e, 0xa5, 0xcc, + 0x7f, 0x16, 0xad, 0xc4, 0xc6, 0xaf, 0x14, 0x7d, 0x10, 0x79, 0xc2, 0xab, 0xa9, 0xc0, 0x7b, 0x12, + 0x5f, 0x36, 0x8d, 0xe4, 0xe6, 0x8f, 0x34, 0x5d, 0x30, 0x59, 0xe2, 0x8b, 0x89, 0xe0, 0x5b, 0x32, + 0x81, 0xe8, 0x53, 0x3a, 0x38, 0x51, 0xea, 0x83, 0xee, 0x87, 0x3c, 0x55, 0x57, 0x3e, 0x85, 0xec, + 0xfe, 0x97, 0x2c, 0x45, 0x47, 0x2e, 0x95, 0xfc, 0x91, 0xf8, 0x43, 0x2a, 0x28, 0x41, 0xfa, 0x93, + 0x20, 0x49, 0xf2, 0x9b, 0x99, 0xf0, 0x4b, 0x22, 0x4f, 0x26, 0x9d, 0xf4, 0xf6, 0x9f, 0x24, 0x4d, + 0xbe, 0xd7, 0x6c, 0x5, 0x7, 0x6e, 0xd5, 0xbc, 0xd1, 0xb8, 0x3, 0x6a, 0x68, 0x1, 0xba, 0xd3, + 0x60, 0x9, 0xb2, 0xdb, 0xd9, 0xb0, 0xb, 0x62, 0xf, 0x66, 0xdd, 0xb4, 0xb6, 0xdf, 0x64, 0xd, + 0x1f, 0x76, 0xcd, 0xa4, 0xa6, 0xcf, 0x74, 0x1d, 0x70, 0x19, 0xa2, 0xcb, 0xc9, 0xa0, 0x1b, 0x72, + 0xc1, 0xa8, 0x13, 0x7a, 0x78, 0x11, 0xaa, 0xc3, 0xae, 0xc7, 0x7c, 0x15, 0x17, 0x7e, 0xc5, 0xac, + 0xe1, 0x88, 0x33, 0x5a, 0x58, 0x31, 0x8a, 0xe3, 0x8e, 0xe7, 0x5c, 0x35, 0x37, 0x5e, 0xe5, 0x8c, + 0x3f, 0x56, 0xed, 0x84, 0x86, 0xef, 0x54, 0x3d, 0x50, 0x39, 0x82, 0xeb, 0xe9, 0x80, 0x3b, 0x52, + 0x40, 0x29, 0x92, 0xfb, 0xf9, 0x90, 0x2b, 0x42, 0x2f, 0x46, 0xfd, 0x94, 0x96, 0xff, 0x44, 0x2d, + 0x9e, 0xf7, 0x4c, 0x25, 0x27, 0x4e, 0xf5, 0x9c, 0xf1, 0x98, 0x23, 0x4a, 0x48, 0x21, 0x9a, 0xf3, + ], + [ + 0x0, 0x6a, 0xd4, 0xbe, 0xb5, 0xdf, 0x61, 0xb, 0x77, 0x1d, 0xa3, 0xc9, 0xc2, 0xa8, 0x16, 0x7c, + 0xee, 0x84, 0x3a, 0x50, 0x5b, 0x31, 0x8f, 0xe5, 0x99, 0xf3, 0x4d, 0x27, 0x2c, 0x46, 0xf8, 0x92, + 0xc1, 0xab, 0x15, 0x7f, 0x74, 0x1e, 0xa0, 0xca, 0xb6, 0xdc, 0x62, 0x8, 0x3, 0x69, 0xd7, 0xbd, + 0x2f, 0x45, 0xfb, 0x91, 0x9a, 0xf0, 0x4e, 0x24, 0x58, 0x32, 0x8c, 0xe6, 0xed, 0x87, 0x39, 0x53, + 0x9f, 0xf5, 0x4b, 0x21, 0x2a, 0x40, 0xfe, 0x94, 0xe8, 0x82, 0x3c, 0x56, 0x5d, 0x37, 0x89, 0xe3, + 0x71, 0x1b, 0xa5, 0xcf, 0xc4, 0xae, 0x10, 0x7a, 0x6, 0x6c, 0xd2, 0xb8, 0xb3, 0xd9, 0x67, 0xd, + 0x5e, 0x34, 0x8a, 0xe0, 0xeb, 0x81, 0x3f, 0x55, 0x29, 0x43, 0xfd, 0x97, 0x9c, 0xf6, 0x48, 0x22, + 0xb0, 0xda, 0x64, 0xe, 0x5, 0x6f, 0xd1, 0xbb, 0xc7, 0xad, 0x13, 0x79, 0x72, 0x18, 0xa6, 0xcc, + 0x23, 0x49, 0xf7, 0x9d, 0x96, 0xfc, 0x42, 0x28, 0x54, 0x3e, 0x80, 0xea, 0xe1, 0x8b, 0x35, 0x5f, + 0xcd, 0xa7, 0x19, 0x73, 0x78, 0x12, 0xac, 0xc6, 0xba, 0xd0, 0x6e, 0x4, 0xf, 0x65, 0xdb, 0xb1, + 0xe2, 0x88, 0x36, 0x5c, 0x57, 0x3d, 0x83, 0xe9, 0x95, 0xff, 0x41, 0x2b, 0x20, 0x4a, 0xf4, 0x9e, + 0xc, 0x66, 0xd8, 0xb2, 0xb9, 0xd3, 0x6d, 0x7, 0x7b, 0x11, 0xaf, 0xc5, 0xce, 0xa4, 0x1a, 0x70, + 0xbc, 0xd6, 0x68, 0x2, 0x9, 0x63, 0xdd, 0xb7, 0xcb, 0xa1, 0x1f, 0x75, 0x7e, 0x14, 0xaa, 0xc0, + 0x52, 0x38, 0x86, 0xec, 0xe7, 0x8d, 0x33, 0x59, 0x25, 0x4f, 0xf1, 0x9b, 0x90, 0xfa, 0x44, 0x2e, + 0x7d, 0x17, 0xa9, 0xc3, 0xc8, 0xa2, 0x1c, 0x76, 0xa, 0x60, 0xde, 0xb4, 0xbf, 0xd5, 0x6b, 0x1, + 0x93, 0xf9, 0x47, 0x2d, 0x26, 0x4c, 0xf2, 0x98, 0xe4, 0x8e, 0x30, 0x5a, 0x51, 0x3b, 0x85, 0xef, + ], + [ + 0x0, 0x6b, 0xd6, 0xbd, 0xb1, 0xda, 0x67, 0xc, 0x7f, 0x14, 0xa9, 0xc2, 0xce, 0xa5, 0x18, 0x73, + 0xfe, 0x95, 0x28, 0x43, 0x4f, 0x24, 0x99, 0xf2, 0x81, 0xea, 0x57, 0x3c, 0x30, 0x5b, 0xe6, 0x8d, + 0xe1, 0x8a, 0x37, 0x5c, 0x50, 0x3b, 0x86, 0xed, 0x9e, 0xf5, 0x48, 0x23, 0x2f, 0x44, 0xf9, 0x92, + 0x1f, 0x74, 0xc9, 0xa2, 0xae, 0xc5, 0x78, 0x13, 0x60, 0xb, 0xb6, 0xdd, 0xd1, 0xba, 0x7, 0x6c, + 0xdf, 0xb4, 0x9, 0x62, 0x6e, 0x5, 0xb8, 0xd3, 0xa0, 0xcb, 0x76, 0x1d, 0x11, 0x7a, 0xc7, 0xac, + 0x21, 0x4a, 0xf7, 0x9c, 0x90, 0xfb, 0x46, 0x2d, 0x5e, 0x35, 0x88, 0xe3, 0xef, 0x84, 0x39, 0x52, + 0x3e, 0x55, 0xe8, 0x83, 0x8f, 0xe4, 0x59, 0x32, 0x41, 0x2a, 0x97, 0xfc, 0xf0, 0x9b, 0x26, 0x4d, + 0xc0, 0xab, 0x16, 0x7d, 0x71, 0x1a, 0xa7, 0xcc, 0xbf, 0xd4, 0x69, 0x2, 0xe, 0x65, 0xd8, 0xb3, + 0xa3, 0xc8, 0x75, 0x1e, 0x12, 0x79, 0xc4, 0xaf, 0xdc, 0xb7, 0xa, 0x61, 0x6d, 0x6, 0xbb, 0xd0, + 0x5d, 0x36, 0x8b, 0xe0, 0xec, 0x87, 0x3a, 0x51, 0x22, 0x49, 0xf4, 0x9f, 0x93, 0xf8, 0x45, 0x2e, + 0x42, 0x29, 0x94, 0xff, 0xf3, 0x98, 0x25, 0x4e, 0x3d, 0x56, 0xeb, 0x80, 0x8c, 0xe7, 0x5a, 0x31, + 0xbc, 0xd7, 0x6a, 0x1, 0xd, 0x66, 0xdb, 0xb0, 0xc3, 0xa8, 0x15, 0x7e, 0x72, 0x19, 0xa4, 0xcf, + 0x7c, 0x17, 0xaa, 0xc1, 0xcd, 0xa6, 0x1b, 0x70, 0x3, 0x68, 0xd5, 0xbe, 0xb2, 0xd9, 0x64, 0xf, + 0x82, 0xe9, 0x54, 0x3f, 0x33, 0x58, 0xe5, 0x8e, 0xfd, 0x96, 0x2b, 0x40, 0x4c, 0x27, 0x9a, 0xf1, + 0x9d, 0xf6, 0x4b, 0x20, 0x2c, 0x47, 0xfa, 0x91, 0xe2, 0x89, 0x34, 0x5f, 0x53, 0x38, 0x85, 0xee, + 0x63, 0x8, 0xb5, 0xde, 0xd2, 0xb9, 0x4, 0x6f, 0x1c, 0x77, 0xca, 0xa1, 0xad, 0xc6, 0x7b, 0x10, + ], + [ + 0x0, 0x6c, 0xd8, 0xb4, 0xad, 0xc1, 0x75, 0x19, 0x47, 0x2b, 0x9f, 0xf3, 0xea, 0x86, 0x32, 0x5e, + 0x8e, 0xe2, 0x56, 0x3a, 0x23, 0x4f, 0xfb, 0x97, 0xc9, 0xa5, 0x11, 0x7d, 0x64, 0x8, 0xbc, 0xd0, + 0x1, 0x6d, 0xd9, 0xb5, 0xac, 0xc0, 0x74, 0x18, 0x46, 0x2a, 0x9e, 0xf2, 0xeb, 0x87, 0x33, 0x5f, + 0x8f, 0xe3, 0x57, 0x3b, 0x22, 0x4e, 0xfa, 0x96, 0xc8, 0xa4, 0x10, 0x7c, 0x65, 0x9, 0xbd, 0xd1, + 0x2, 0x6e, 0xda, 0xb6, 0xaf, 0xc3, 0x77, 0x1b, 0x45, 0x29, 0x9d, 0xf1, 0xe8, 0x84, 0x30, 0x5c, + 0x8c, 0xe0, 0x54, 0x38, 0x21, 0x4d, 0xf9, 0x95, 0xcb, 0xa7, 0x13, 0x7f, 0x66, 0xa, 0xbe, 0xd2, + 0x3, 0x6f, 0xdb, 0xb7, 0xae, 0xc2, 0x76, 0x1a, 0x44, 0x28, 0x9c, 0xf0, 0xe9, 0x85, 0x31, 0x5d, + 0x8d, 0xe1, 0x55, 0x39, 0x20, 0x4c, 0xf8, 0x94, 0xca, 0xa6, 0x12, 0x7e, 0x67, 0xb, 0xbf, 0xd3, + 0x4, 0x68, 0xdc, 0xb0, 0xa9, 0xc5, 0x71, 0x1d, 0x43, 0x2f, 0x9b, 0xf7, 0xee, 0x82, 0x36, 0x5a, + 0x8a, 0xe6, 0x52, 0x3e, 0x27, 0x4b, 0xff, 0x93, 0xcd, 0xa1, 0x15, 0x79, 0x60, 0xc, 0xb8, 0xd4, + 0x5, 0x69, 0xdd, 0xb1, 0xa8, 0xc4, 0x70, 0x1c, 0x42, 0x2e, 0x9a, 0xf6, 0xef, 0x83, 0x37, 0x5b, + 0x8b, 0xe7, 0x53, 0x3f, 0x26, 0x4a, 0xfe, 0x92, 0xcc, 0xa0, 0x14, 0x78, 0x61, 0xd, 0xb9, 0xd5, + 0x6, 0x6a, 0xde, 0xb2, 0xab, 0xc7, 0x73, 0x1f, 0x41, 0x2d, 0x99, 0xf5, 0xec, 0x80, 0x34, 0x58, + 0x88, 0xe4, 0x50, 0x3c, 0x25, 0x49, 0xfd, 0x91, 0xcf, 0xa3, 0x17, 0x7b, 0x62, 0xe, 0xba, 0xd6, + 0x7, 0x6b, 0xdf, 0xb3, 0xaa, 0xc6, 0x72, 0x1e, 0x40, 0x2c, 0x98, 0xf4, 0xed, 0x81, 0x35, 0x59, + 0x89, 0xe5, 0x51, 0x3d, 0x24, 0x48, 0xfc, 0x90, 0xce, 0xa2, 0x16, 0x7a, 0x63, 0xf, 0xbb, 0xd7, + ], + [ + 0x0, 0x6d, 0xda, 0xb7, 0xa9, 0xc4, 0x73, 0x1e, 0x4f, 0x22, 0x95, 0xf8, 0xe6, 0x8b, 0x3c, 0x51, + 0x9e, 0xf3, 0x44, 0x29, 0x37, 0x5a, 0xed, 0x80, 0xd1, 0xbc, 0xb, 0x66, 0x78, 0x15, 0xa2, 0xcf, + 0x21, 0x4c, 0xfb, 0x96, 0x88, 0xe5, 0x52, 0x3f, 0x6e, 0x3, 0xb4, 0xd9, 0xc7, 0xaa, 0x1d, 0x70, + 0xbf, 0xd2, 0x65, 0x8, 0x16, 0x7b, 0xcc, 0xa1, 0xf0, 0x9d, 0x2a, 0x47, 0x59, 0x34, 0x83, 0xee, + 0x42, 0x2f, 0x98, 0xf5, 0xeb, 0x86, 0x31, 0x5c, 0xd, 0x60, 0xd7, 0xba, 0xa4, 0xc9, 0x7e, 0x13, + 0xdc, 0xb1, 0x6, 0x6b, 0x75, 0x18, 0xaf, 0xc2, 0x93, 0xfe, 0x49, 0x24, 0x3a, 0x57, 0xe0, 0x8d, + 0x63, 0xe, 0xb9, 0xd4, 0xca, 0xa7, 0x10, 0x7d, 0x2c, 0x41, 0xf6, 0x9b, 0x85, 0xe8, 0x5f, 0x32, + 0xfd, 0x90, 0x27, 0x4a, 0x54, 0x39, 0x8e, 0xe3, 0xb2, 0xdf, 0x68, 0x5, 0x1b, 0x76, 0xc1, 0xac, + 0x84, 0xe9, 0x5e, 0x33, 0x2d, 0x40, 0xf7, 0x9a, 0xcb, 0xa6, 0x11, 0x7c, 0x62, 0xf, 0xb8, 0xd5, + 0x1a, 0x77, 0xc0, 0xad, 0xb3, 0xde, 0x69, 0x4, 0x55, 0x38, 0x8f, 0xe2, 0xfc, 0x91, 0x26, 0x4b, + 0xa5, 0xc8, 0x7f, 0x12, 0xc, 0x61, 0xd6, 0xbb, 0xea, 0x87, 0x30, 0x5d, 0x43, 0x2e, 0x99, 0xf4, + 0x3b, 0x56, 0xe1, 0x8c, 0x92, 0xff, 0x48, 0x25, 0x74, 0x19, 0xae, 0xc3, 0xdd, 0xb0, 0x7, 0x6a, + 0xc6, 0xab, 0x1c, 0x71, 0x6f, 0x2, 0xb5, 0xd8, 0x89, 0xe4, 0x53, 0x3e, 0x20, 0x4d, 0xfa, 0x97, + 0x58, 0x35, 0x82, 0xef, 0xf1, 0x9c, 0x2b, 0x46, 0x17, 0x7a, 0xcd, 0xa0, 0xbe, 0xd3, 0x64, 0x9, + 0xe7, 0x8a, 0x3d, 0x50, 0x4e, 0x23, 0x94, 0xf9, 0xa8, 0xc5, 0x72, 0x1f, 0x1, 0x6c, 0xdb, 0xb6, + 0x79, 0x14, 0xa3, 0xce, 0xd0, 0xbd, 0xa, 0x67, 0x36, 0x5b, 0xec, 0x81, 0x9f, 0xf2, 0x45, 0x28, + ], + [ + 0x0, 0x6e, 0xdc, 0xb2, 0xa5, 0xcb, 0x79, 0x17, 0x57, 0x39, 0x8b, 0xe5, 0xf2, 0x9c, 0x2e, 0x40, + 0xae, 0xc0, 0x72, 0x1c, 0xb, 0x65, 0xd7, 0xb9, 0xf9, 0x97, 0x25, 0x4b, 0x5c, 0x32, 0x80, 0xee, + 0x41, 0x2f, 0x9d, 0xf3, 0xe4, 0x8a, 0x38, 0x56, 0x16, 0x78, 0xca, 0xa4, 0xb3, 0xdd, 0x6f, 0x1, + 0xef, 0x81, 0x33, 0x5d, 0x4a, 0x24, 0x96, 0xf8, 0xb8, 0xd6, 0x64, 0xa, 0x1d, 0x73, 0xc1, 0xaf, + 0x82, 0xec, 0x5e, 0x30, 0x27, 0x49, 0xfb, 0x95, 0xd5, 0xbb, 0x9, 0x67, 0x70, 0x1e, 0xac, 0xc2, + 0x2c, 0x42, 0xf0, 0x9e, 0x89, 0xe7, 0x55, 0x3b, 0x7b, 0x15, 0xa7, 0xc9, 0xde, 0xb0, 0x2, 0x6c, + 0xc3, 0xad, 0x1f, 0x71, 0x66, 0x8, 0xba, 0xd4, 0x94, 0xfa, 0x48, 0x26, 0x31, 0x5f, 0xed, 0x83, + 0x6d, 0x3, 0xb1, 0xdf, 0xc8, 0xa6, 0x14, 0x7a, 0x3a, 0x54, 0xe6, 0x88, 0x9f, 0xf1, 0x43, 0x2d, + 0x19, 0x77, 0xc5, 0xab, 0xbc, 0xd2, 0x60, 0xe, 0x4e, 0x20, 0x92, 0xfc, 0xeb, 0x85, 0x37, 0x59, + 0xb7, 0xd9, 0x6b, 0x5, 0x12, 0x7c, 0xce, 0xa0, 0xe0, 0x8e, 0x3c, 0x52, 0x45, 0x2b, 0x99, 0xf7, + 0x58, 0x36, 0x84, 0xea, 0xfd, 0x93, 0x21, 0x4f, 0xf, 0x61, 0xd3, 0xbd, 0xaa, 0xc4, 0x76, 0x18, + 0xf6, 0x98, 0x2a, 0x44, 0x53, 0x3d, 0x8f, 0xe1, 0xa1, 0xcf, 0x7d, 0x13, 0x4, 0x6a, 0xd8, 0xb6, + 0x9b, 0xf5, 0x47, 0x29, 0x3e, 0x50, 0xe2, 0x8c, 0xcc, 0xa2, 0x10, 0x7e, 0x69, 0x7, 0xb5, 0xdb, + 0x35, 0x5b, 0xe9, 0x87, 0x90, 0xfe, 0x4c, 0x22, 0x62, 0xc, 0xbe, 0xd0, 0xc7, 0xa9, 0x1b, 0x75, + 0xda, 0xb4, 0x6, 0x68, 0x7f, 0x11, 0xa3, 0xcd, 0x8d, 0xe3, 0x51, 0x3f, 0x28, 0x46, 0xf4, 0x9a, + 0x74, 0x1a, 0xa8, 0xc6, 0xd1, 0xbf, 0xd, 0x63, 0x23, 0x4d, 0xff, 0x91, 0x86, 0xe8, 0x5a, 0x34, + ], + [ + 0x0, 0x6f, 0xde, 0xb1, 0xa1, 0xce, 0x7f, 0x10, 0x5f, 0x30, 0x81, 0xee, 0xfe, 0x91, 0x20, 0x4f, + 0xbe, 0xd1, 0x60, 0xf, 0x1f, 0x70, 0xc1, 0xae, 0xe1, 0x8e, 0x3f, 0x50, 0x40, 0x2f, 0x9e, 0xf1, + 0x61, 0xe, 0xbf, 0xd0, 0xc0, 0xaf, 0x1e, 0x71, 0x3e, 0x51, 0xe0, 0x8f, 0x9f, 0xf0, 0x41, 0x2e, + 0xdf, 0xb0, 0x1, 0x6e, 0x7e, 0x11, 0xa0, 0xcf, 0x80, 0xef, 0x5e, 0x31, 0x21, 0x4e, 0xff, 0x90, + 0xc2, 0xad, 0x1c, 0x73, 0x63, 0xc, 0xbd, 0xd2, 0x9d, 0xf2, 0x43, 0x2c, 0x3c, 0x53, 0xe2, 0x8d, + 0x7c, 0x13, 0xa2, 0xcd, 0xdd, 0xb2, 0x3, 0x6c, 0x23, 0x4c, 0xfd, 0x92, 0x82, 0xed, 0x5c, 0x33, + 0xa3, 0xcc, 0x7d, 0x12, 0x2, 0x6d, 0xdc, 0xb3, 0xfc, 0x93, 0x22, 0x4d, 0x5d, 0x32, 0x83, 0xec, + 0x1d, 0x72, 0xc3, 0xac, 0xbc, 0xd3, 0x62, 0xd, 0x42, 0x2d, 0x9c, 0xf3, 0xe3, 0x8c, 0x3d, 0x52, + 0x99, 0xf6, 0x47, 0x28, 0x38, 0x57, 0xe6, 0x89, 0xc6, 0xa9, 0x18, 0x77, 0x67, 0x8, 0xb9, 0xd6, + 0x27, 0x48, 0xf9, 0x96, 0x86, 0xe9, 0x58, 0x37, 0x78, 0x17, 0xa6, 0xc9, 0xd9, 0xb6, 0x7, 0x68, + 0xf8, 0x97, 0x26, 0x49, 0x59, 0x36, 0x87, 0xe8, 0xa7, 0xc8, 0x79, 0x16, 0x6, 0x69, 0xd8, 0xb7, + 0x46, 0x29, 0x98, 0xf7, 0xe7, 0x88, 0x39, 0x56, 0x19, 0x76, 0xc7, 0xa8, 0xb8, 0xd7, 0x66, 0x9, + 0x5b, 0x34, 0x85, 0xea, 0xfa, 0x95, 0x24, 0x4b, 0x4, 0x6b, 0xda, 0xb5, 0xa5, 0xca, 0x7b, 0x14, + 0xe5, 0x8a, 0x3b, 0x54, 0x44, 0x2b, 0x9a, 0xf5, 0xba, 0xd5, 0x64, 0xb, 0x1b, 0x74, 0xc5, 0xaa, + 0x3a, 0x55, 0xe4, 0x8b, 0x9b, 0xf4, 0x45, 0x2a, 0x65, 0xa, 0xbb, 0xd4, 0xc4, 0xab, 0x1a, 0x75, + 0x84, 0xeb, 0x5a, 0x35, 0x25, 0x4a, 0xfb, 0x94, 0xdb, 0xb4, 0x5, 0x6a, 0x7a, 0x15, 0xa4, 0xcb, + ], + [ + 0x0, 0x70, 0xe0, 0x90, 0xdd, 0xad, 0x3d, 0x4d, 0xa7, 0xd7, 0x47, 0x37, 0x7a, 0xa, 0x9a, 0xea, + 0x53, 0x23, 0xb3, 0xc3, 0x8e, 0xfe, 0x6e, 0x1e, 0xf4, 0x84, 0x14, 0x64, 0x29, 0x59, 0xc9, 0xb9, + 0xa6, 0xd6, 0x46, 0x36, 0x7b, 0xb, 0x9b, 0xeb, 0x1, 0x71, 0xe1, 0x91, 0xdc, 0xac, 0x3c, 0x4c, + 0xf5, 0x85, 0x15, 0x65, 0x28, 0x58, 0xc8, 0xb8, 0x52, 0x22, 0xb2, 0xc2, 0x8f, 0xff, 0x6f, 0x1f, + 0x51, 0x21, 0xb1, 0xc1, 0x8c, 0xfc, 0x6c, 0x1c, 0xf6, 0x86, 0x16, 0x66, 0x2b, 0x5b, 0xcb, 0xbb, + 0x2, 0x72, 0xe2, 0x92, 0xdf, 0xaf, 0x3f, 0x4f, 0xa5, 0xd5, 0x45, 0x35, 0x78, 0x8, 0x98, 0xe8, + 0xf7, 0x87, 0x17, 0x67, 0x2a, 0x5a, 0xca, 0xba, 0x50, 0x20, 0xb0, 0xc0, 0x8d, 0xfd, 0x6d, 0x1d, + 0xa4, 0xd4, 0x44, 0x34, 0x79, 0x9, 0x99, 0xe9, 0x3, 0x73, 0xe3, 0x93, 0xde, 0xae, 0x3e, 0x4e, + 0xa2, 0xd2, 0x42, 0x32, 0x7f, 0xf, 0x9f, 0xef, 0x5, 0x75, 0xe5, 0x95, 0xd8, 0xa8, 0x38, 0x48, + 0xf1, 0x81, 0x11, 0x61, 0x2c, 0x5c, 0xcc, 0xbc, 0x56, 0x26, 0xb6, 0xc6, 0x8b, 0xfb, 0x6b, 0x1b, + 0x4, 0x74, 0xe4, 0x94, 0xd9, 0xa9, 0x39, 0x49, 0xa3, 0xd3, 0x43, 0x33, 0x7e, 0xe, 0x9e, 0xee, + 0x57, 0x27, 0xb7, 0xc7, 0x8a, 0xfa, 0x6a, 0x1a, 0xf0, 0x80, 0x10, 0x60, 0x2d, 0x5d, 0xcd, 0xbd, + 0xf3, 0x83, 0x13, 0x63, 0x2e, 0x5e, 0xce, 0xbe, 0x54, 0x24, 0xb4, 0xc4, 0x89, 0xf9, 0x69, 0x19, + 0xa0, 0xd0, 0x40, 0x30, 0x7d, 0xd, 0x9d, 0xed, 0x7, 0x77, 0xe7, 0x97, 0xda, 0xaa, 0x3a, 0x4a, + 0x55, 0x25, 0xb5, 0xc5, 0x88, 0xf8, 0x68, 0x18, 0xf2, 0x82, 0x12, 0x62, 0x2f, 0x5f, 0xcf, 0xbf, + 0x6, 0x76, 0xe6, 0x96, 0xdb, 0xab, 0x3b, 0x4b, 0xa1, 0xd1, 0x41, 0x31, 0x7c, 0xc, 0x9c, 0xec, + ], + [ + 0x0, 0x71, 0xe2, 0x93, 0xd9, 0xa8, 0x3b, 0x4a, 0xaf, 0xde, 0x4d, 0x3c, 0x76, 0x7, 0x94, 0xe5, + 0x43, 0x32, 0xa1, 0xd0, 0x9a, 0xeb, 0x78, 0x9, 0xec, 0x9d, 0xe, 0x7f, 0x35, 0x44, 0xd7, 0xa6, + 0x86, 0xf7, 0x64, 0x15, 0x5f, 0x2e, 0xbd, 0xcc, 0x29, 0x58, 0xcb, 0xba, 0xf0, 0x81, 0x12, 0x63, + 0xc5, 0xb4, 0x27, 0x56, 0x1c, 0x6d, 0xfe, 0x8f, 0x6a, 0x1b, 0x88, 0xf9, 0xb3, 0xc2, 0x51, 0x20, + 0x11, 0x60, 0xf3, 0x82, 0xc8, 0xb9, 0x2a, 0x5b, 0xbe, 0xcf, 0x5c, 0x2d, 0x67, 0x16, 0x85, 0xf4, + 0x52, 0x23, 0xb0, 0xc1, 0x8b, 0xfa, 0x69, 0x18, 0xfd, 0x8c, 0x1f, 0x6e, 0x24, 0x55, 0xc6, 0xb7, + 0x97, 0xe6, 0x75, 0x4, 0x4e, 0x3f, 0xac, 0xdd, 0x38, 0x49, 0xda, 0xab, 0xe1, 0x90, 0x3, 0x72, + 0xd4, 0xa5, 0x36, 0x47, 0xd, 0x7c, 0xef, 0x9e, 0x7b, 0xa, 0x99, 0xe8, 0xa2, 0xd3, 0x40, 0x31, + 0x22, 0x53, 0xc0, 0xb1, 0xfb, 0x8a, 0x19, 0x68, 0x8d, 0xfc, 0x6f, 0x1e, 0x54, 0x25, 0xb6, 0xc7, + 0x61, 0x10, 0x83, 0xf2, 0xb8, 0xc9, 0x5a, 0x2b, 0xce, 0xbf, 0x2c, 0x5d, 0x17, 0x66, 0xf5, 0x84, + 0xa4, 0xd5, 0x46, 0x37, 0x7d, 0xc, 0x9f, 0xee, 0xb, 0x7a, 0xe9, 0x98, 0xd2, 0xa3, 0x30, 0x41, + 0xe7, 0x96, 0x5, 0x74, 0x3e, 0x4f, 0xdc, 0xad, 0x48, 0x39, 0xaa, 0xdb, 0x91, 0xe0, 0x73, 0x2, + 0x33, 0x42, 0xd1, 0xa0, 0xea, 0x9b, 0x8, 0x79, 0x9c, 0xed, 0x7e, 0xf, 0x45, 0x34, 0xa7, 0xd6, + 0x70, 0x1, 0x92, 0xe3, 0xa9, 0xd8, 0x4b, 0x3a, 0xdf, 0xae, 0x3d, 0x4c, 0x6, 0x77, 0xe4, 0x95, + 0xb5, 0xc4, 0x57, 0x26, 0x6c, 0x1d, 0x8e, 0xff, 0x1a, 0x6b, 0xf8, 0x89, 0xc3, 0xb2, 0x21, 0x50, + 0xf6, 0x87, 0x14, 0x65, 0x2f, 0x5e, 0xcd, 0xbc, 0x59, 0x28, 0xbb, 0xca, 0x80, 0xf1, 0x62, 0x13, + ], + [ + 0x0, 0x72, 0xe4, 0x96, 0xd5, 0xa7, 0x31, 0x43, 0xb7, 0xc5, 0x53, 0x21, 0x62, 0x10, 0x86, 0xf4, + 0x73, 0x1, 0x97, 0xe5, 0xa6, 0xd4, 0x42, 0x30, 0xc4, 0xb6, 0x20, 0x52, 0x11, 0x63, 0xf5, 0x87, + 0xe6, 0x94, 0x2, 0x70, 0x33, 0x41, 0xd7, 0xa5, 0x51, 0x23, 0xb5, 0xc7, 0x84, 0xf6, 0x60, 0x12, + 0x95, 0xe7, 0x71, 0x3, 0x40, 0x32, 0xa4, 0xd6, 0x22, 0x50, 0xc6, 0xb4, 0xf7, 0x85, 0x13, 0x61, + 0xd1, 0xa3, 0x35, 0x47, 0x4, 0x76, 0xe0, 0x92, 0x66, 0x14, 0x82, 0xf0, 0xb3, 0xc1, 0x57, 0x25, + 0xa2, 0xd0, 0x46, 0x34, 0x77, 0x5, 0x93, 0xe1, 0x15, 0x67, 0xf1, 0x83, 0xc0, 0xb2, 0x24, 0x56, + 0x37, 0x45, 0xd3, 0xa1, 0xe2, 0x90, 0x6, 0x74, 0x80, 0xf2, 0x64, 0x16, 0x55, 0x27, 0xb1, 0xc3, + 0x44, 0x36, 0xa0, 0xd2, 0x91, 0xe3, 0x75, 0x7, 0xf3, 0x81, 0x17, 0x65, 0x26, 0x54, 0xc2, 0xb0, + 0xbf, 0xcd, 0x5b, 0x29, 0x6a, 0x18, 0x8e, 0xfc, 0x8, 0x7a, 0xec, 0x9e, 0xdd, 0xaf, 0x39, 0x4b, + 0xcc, 0xbe, 0x28, 0x5a, 0x19, 0x6b, 0xfd, 0x8f, 0x7b, 0x9, 0x9f, 0xed, 0xae, 0xdc, 0x4a, 0x38, + 0x59, 0x2b, 0xbd, 0xcf, 0x8c, 0xfe, 0x68, 0x1a, 0xee, 0x9c, 0xa, 0x78, 0x3b, 0x49, 0xdf, 0xad, + 0x2a, 0x58, 0xce, 0xbc, 0xff, 0x8d, 0x1b, 0x69, 0x9d, 0xef, 0x79, 0xb, 0x48, 0x3a, 0xac, 0xde, + 0x6e, 0x1c, 0x8a, 0xf8, 0xbb, 0xc9, 0x5f, 0x2d, 0xd9, 0xab, 0x3d, 0x4f, 0xc, 0x7e, 0xe8, 0x9a, + 0x1d, 0x6f, 0xf9, 0x8b, 0xc8, 0xba, 0x2c, 0x5e, 0xaa, 0xd8, 0x4e, 0x3c, 0x7f, 0xd, 0x9b, 0xe9, + 0x88, 0xfa, 0x6c, 0x1e, 0x5d, 0x2f, 0xb9, 0xcb, 0x3f, 0x4d, 0xdb, 0xa9, 0xea, 0x98, 0xe, 0x7c, + 0xfb, 0x89, 0x1f, 0x6d, 0x2e, 0x5c, 0xca, 0xb8, 0x4c, 0x3e, 0xa8, 0xda, 0x99, 0xeb, 0x7d, 0xf, + ], + [ + 0x0, 0x73, 0xe6, 0x95, 0xd1, 0xa2, 0x37, 0x44, 0xbf, 0xcc, 0x59, 0x2a, 0x6e, 0x1d, 0x88, 0xfb, + 0x63, 0x10, 0x85, 0xf6, 0xb2, 0xc1, 0x54, 0x27, 0xdc, 0xaf, 0x3a, 0x49, 0xd, 0x7e, 0xeb, 0x98, + 0xc6, 0xb5, 0x20, 0x53, 0x17, 0x64, 0xf1, 0x82, 0x79, 0xa, 0x9f, 0xec, 0xa8, 0xdb, 0x4e, 0x3d, + 0xa5, 0xd6, 0x43, 0x30, 0x74, 0x7, 0x92, 0xe1, 0x1a, 0x69, 0xfc, 0x8f, 0xcb, 0xb8, 0x2d, 0x5e, + 0x91, 0xe2, 0x77, 0x4, 0x40, 0x33, 0xa6, 0xd5, 0x2e, 0x5d, 0xc8, 0xbb, 0xff, 0x8c, 0x19, 0x6a, + 0xf2, 0x81, 0x14, 0x67, 0x23, 0x50, 0xc5, 0xb6, 0x4d, 0x3e, 0xab, 0xd8, 0x9c, 0xef, 0x7a, 0x9, + 0x57, 0x24, 0xb1, 0xc2, 0x86, 0xf5, 0x60, 0x13, 0xe8, 0x9b, 0xe, 0x7d, 0x39, 0x4a, 0xdf, 0xac, + 0x34, 0x47, 0xd2, 0xa1, 0xe5, 0x96, 0x3, 0x70, 0x8b, 0xf8, 0x6d, 0x1e, 0x5a, 0x29, 0xbc, 0xcf, + 0x3f, 0x4c, 0xd9, 0xaa, 0xee, 0x9d, 0x8, 0x7b, 0x80, 0xf3, 0x66, 0x15, 0x51, 0x22, 0xb7, 0xc4, + 0x5c, 0x2f, 0xba, 0xc9, 0x8d, 0xfe, 0x6b, 0x18, 0xe3, 0x90, 0x5, 0x76, 0x32, 0x41, 0xd4, 0xa7, + 0xf9, 0x8a, 0x1f, 0x6c, 0x28, 0x5b, 0xce, 0xbd, 0x46, 0x35, 0xa0, 0xd3, 0x97, 0xe4, 0x71, 0x2, + 0x9a, 0xe9, 0x7c, 0xf, 0x4b, 0x38, 0xad, 0xde, 0x25, 0x56, 0xc3, 0xb0, 0xf4, 0x87, 0x12, 0x61, + 0xae, 0xdd, 0x48, 0x3b, 0x7f, 0xc, 0x99, 0xea, 0x11, 0x62, 0xf7, 0x84, 0xc0, 0xb3, 0x26, 0x55, + 0xcd, 0xbe, 0x2b, 0x58, 0x1c, 0x6f, 0xfa, 0x89, 0x72, 0x1, 0x94, 0xe7, 0xa3, 0xd0, 0x45, 0x36, + 0x68, 0x1b, 0x8e, 0xfd, 0xb9, 0xca, 0x5f, 0x2c, 0xd7, 0xa4, 0x31, 0x42, 0x6, 0x75, 0xe0, 0x93, + 0xb, 0x78, 0xed, 0x9e, 0xda, 0xa9, 0x3c, 0x4f, 0xb4, 0xc7, 0x52, 0x21, 0x65, 0x16, 0x83, 0xf0, + ], + [ + 0x0, 0x74, 0xe8, 0x9c, 0xcd, 0xb9, 0x25, 0x51, 0x87, 0xf3, 0x6f, 0x1b, 0x4a, 0x3e, 0xa2, 0xd6, + 0x13, 0x67, 0xfb, 0x8f, 0xde, 0xaa, 0x36, 0x42, 0x94, 0xe0, 0x7c, 0x8, 0x59, 0x2d, 0xb1, 0xc5, + 0x26, 0x52, 0xce, 0xba, 0xeb, 0x9f, 0x3, 0x77, 0xa1, 0xd5, 0x49, 0x3d, 0x6c, 0x18, 0x84, 0xf0, + 0x35, 0x41, 0xdd, 0xa9, 0xf8, 0x8c, 0x10, 0x64, 0xb2, 0xc6, 0x5a, 0x2e, 0x7f, 0xb, 0x97, 0xe3, + 0x4c, 0x38, 0xa4, 0xd0, 0x81, 0xf5, 0x69, 0x1d, 0xcb, 0xbf, 0x23, 0x57, 0x6, 0x72, 0xee, 0x9a, + 0x5f, 0x2b, 0xb7, 0xc3, 0x92, 0xe6, 0x7a, 0xe, 0xd8, 0xac, 0x30, 0x44, 0x15, 0x61, 0xfd, 0x89, + 0x6a, 0x1e, 0x82, 0xf6, 0xa7, 0xd3, 0x4f, 0x3b, 0xed, 0x99, 0x5, 0x71, 0x20, 0x54, 0xc8, 0xbc, + 0x79, 0xd, 0x91, 0xe5, 0xb4, 0xc0, 0x5c, 0x28, 0xfe, 0x8a, 0x16, 0x62, 0x33, 0x47, 0xdb, 0xaf, + 0x98, 0xec, 0x70, 0x4, 0x55, 0x21, 0xbd, 0xc9, 0x1f, 0x6b, 0xf7, 0x83, 0xd2, 0xa6, 0x3a, 0x4e, + 0x8b, 0xff, 0x63, 0x17, 0x46, 0x32, 0xae, 0xda, 0xc, 0x78, 0xe4, 0x90, 0xc1, 0xb5, 0x29, 0x5d, + 0xbe, 0xca, 0x56, 0x22, 0x73, 0x7, 0x9b, 0xef, 0x39, 0x4d, 0xd1, 0xa5, 0xf4, 0x80, 0x1c, 0x68, + 0xad, 0xd9, 0x45, 0x31, 0x60, 0x14, 0x88, 0xfc, 0x2a, 0x5e, 0xc2, 0xb6, 0xe7, 0x93, 0xf, 0x7b, + 0xd4, 0xa0, 0x3c, 0x48, 0x19, 0x6d, 0xf1, 0x85, 0x53, 0x27, 0xbb, 0xcf, 0x9e, 0xea, 0x76, 0x2, + 0xc7, 0xb3, 0x2f, 0x5b, 0xa, 0x7e, 0xe2, 0x96, 0x40, 0x34, 0xa8, 0xdc, 0x8d, 0xf9, 0x65, 0x11, + 0xf2, 0x86, 0x1a, 0x6e, 0x3f, 0x4b, 0xd7, 0xa3, 0x75, 0x1, 0x9d, 0xe9, 0xb8, 0xcc, 0x50, 0x24, + 0xe1, 0x95, 0x9, 0x7d, 0x2c, 0x58, 0xc4, 0xb0, 0x66, 0x12, 0x8e, 0xfa, 0xab, 0xdf, 0x43, 0x37, + ], + [ + 0x0, 0x75, 0xea, 0x9f, 0xc9, 0xbc, 0x23, 0x56, 0x8f, 0xfa, 0x65, 0x10, 0x46, 0x33, 0xac, 0xd9, + 0x3, 0x76, 0xe9, 0x9c, 0xca, 0xbf, 0x20, 0x55, 0x8c, 0xf9, 0x66, 0x13, 0x45, 0x30, 0xaf, 0xda, + 0x6, 0x73, 0xec, 0x99, 0xcf, 0xba, 0x25, 0x50, 0x89, 0xfc, 0x63, 0x16, 0x40, 0x35, 0xaa, 0xdf, + 0x5, 0x70, 0xef, 0x9a, 0xcc, 0xb9, 0x26, 0x53, 0x8a, 0xff, 0x60, 0x15, 0x43, 0x36, 0xa9, 0xdc, + 0xc, 0x79, 0xe6, 0x93, 0xc5, 0xb0, 0x2f, 0x5a, 0x83, 0xf6, 0x69, 0x1c, 0x4a, 0x3f, 0xa0, 0xd5, + 0xf, 0x7a, 0xe5, 0x90, 0xc6, 0xb3, 0x2c, 0x59, 0x80, 0xf5, 0x6a, 0x1f, 0x49, 0x3c, 0xa3, 0xd6, + 0xa, 0x7f, 0xe0, 0x95, 0xc3, 0xb6, 0x29, 0x5c, 0x85, 0xf0, 0x6f, 0x1a, 0x4c, 0x39, 0xa6, 0xd3, + 0x9, 0x7c, 0xe3, 0x96, 0xc0, 0xb5, 0x2a, 0x5f, 0x86, 0xf3, 0x6c, 0x19, 0x4f, 0x3a, 0xa5, 0xd0, + 0x18, 0x6d, 0xf2, 0x87, 0xd1, 0xa4, 0x3b, 0x4e, 0x97, 0xe2, 0x7d, 0x8, 0x5e, 0x2b, 0xb4, 0xc1, + 0x1b, 0x6e, 0xf1, 0x84, 0xd2, 0xa7, 0x38, 0x4d, 0x94, 0xe1, 0x7e, 0xb, 0x5d, 0x28, 0xb7, 0xc2, + 0x1e, 0x6b, 0xf4, 0x81, 0xd7, 0xa2, 0x3d, 0x48, 0x91, 0xe4, 0x7b, 0xe, 0x58, 0x2d, 0xb2, 0xc7, + 0x1d, 0x68, 0xf7, 0x82, 0xd4, 0xa1, 0x3e, 0x4b, 0x92, 0xe7, 0x78, 0xd, 0x5b, 0x2e, 0xb1, 0xc4, + 0x14, 0x61, 0xfe, 0x8b, 0xdd, 0xa8, 0x37, 0x42, 0x9b, 0xee, 0x71, 0x4, 0x52, 0x27, 0xb8, 0xcd, + 0x17, 0x62, 0xfd, 0x88, 0xde, 0xab, 0x34, 0x41, 0x98, 0xed, 0x72, 0x7, 0x51, 0x24, 0xbb, 0xce, + 0x12, 0x67, 0xf8, 0x8d, 0xdb, 0xae, 0x31, 0x44, 0x9d, 0xe8, 0x77, 0x2, 0x54, 0x21, 0xbe, 0xcb, + 0x11, 0x64, 0xfb, 0x8e, 0xd8, 0xad, 0x32, 0x47, 0x9e, 0xeb, 0x74, 0x1, 0x57, 0x22, 0xbd, 0xc8, + ], + [ + 0x0, 0x76, 0xec, 0x9a, 0xc5, 0xb3, 0x29, 0x5f, 0x97, 0xe1, 0x7b, 0xd, 0x52, 0x24, 0xbe, 0xc8, + 0x33, 0x45, 0xdf, 0xa9, 0xf6, 0x80, 0x1a, 0x6c, 0xa4, 0xd2, 0x48, 0x3e, 0x61, 0x17, 0x8d, 0xfb, + 0x66, 0x10, 0x8a, 0xfc, 0xa3, 0xd5, 0x4f, 0x39, 0xf1, 0x87, 0x1d, 0x6b, 0x34, 0x42, 0xd8, 0xae, + 0x55, 0x23, 0xb9, 0xcf, 0x90, 0xe6, 0x7c, 0xa, 0xc2, 0xb4, 0x2e, 0x58, 0x7, 0x71, 0xeb, 0x9d, + 0xcc, 0xba, 0x20, 0x56, 0x9, 0x7f, 0xe5, 0x93, 0x5b, 0x2d, 0xb7, 0xc1, 0x9e, 0xe8, 0x72, 0x4, + 0xff, 0x89, 0x13, 0x65, 0x3a, 0x4c, 0xd6, 0xa0, 0x68, 0x1e, 0x84, 0xf2, 0xad, 0xdb, 0x41, 0x37, + 0xaa, 0xdc, 0x46, 0x30, 0x6f, 0x19, 0x83, 0xf5, 0x3d, 0x4b, 0xd1, 0xa7, 0xf8, 0x8e, 0x14, 0x62, + 0x99, 0xef, 0x75, 0x3, 0x5c, 0x2a, 0xb0, 0xc6, 0xe, 0x78, 0xe2, 0x94, 0xcb, 0xbd, 0x27, 0x51, + 0x85, 0xf3, 0x69, 0x1f, 0x40, 0x36, 0xac, 0xda, 0x12, 0x64, 0xfe, 0x88, 0xd7, 0xa1, 0x3b, 0x4d, + 0xb6, 0xc0, 0x5a, 0x2c, 0x73, 0x5, 0x9f, 0xe9, 0x21, 0x57, 0xcd, 0xbb, 0xe4, 0x92, 0x8, 0x7e, + 0xe3, 0x95, 0xf, 0x79, 0x26, 0x50, 0xca, 0xbc, 0x74, 0x2, 0x98, 0xee, 0xb1, 0xc7, 0x5d, 0x2b, + 0xd0, 0xa6, 0x3c, 0x4a, 0x15, 0x63, 0xf9, 0x8f, 0x47, 0x31, 0xab, 0xdd, 0x82, 0xf4, 0x6e, 0x18, + 0x49, 0x3f, 0xa5, 0xd3, 0x8c, 0xfa, 0x60, 0x16, 0xde, 0xa8, 0x32, 0x44, 0x1b, 0x6d, 0xf7, 0x81, + 0x7a, 0xc, 0x96, 0xe0, 0xbf, 0xc9, 0x53, 0x25, 0xed, 0x9b, 0x1, 0x77, 0x28, 0x5e, 0xc4, 0xb2, + 0x2f, 0x59, 0xc3, 0xb5, 0xea, 0x9c, 0x6, 0x70, 0xb8, 0xce, 0x54, 0x22, 0x7d, 0xb, 0x91, 0xe7, + 0x1c, 0x6a, 0xf0, 0x86, 0xd9, 0xaf, 0x35, 0x43, 0x8b, 0xfd, 0x67, 0x11, 0x4e, 0x38, 0xa2, 0xd4, + ], + [ + 0x0, 0x77, 0xee, 0x99, 0xc1, 0xb6, 0x2f, 0x58, 0x9f, 0xe8, 0x71, 0x6, 0x5e, 0x29, 0xb0, 0xc7, + 0x23, 0x54, 0xcd, 0xba, 0xe2, 0x95, 0xc, 0x7b, 0xbc, 0xcb, 0x52, 0x25, 0x7d, 0xa, 0x93, 0xe4, + 0x46, 0x31, 0xa8, 0xdf, 0x87, 0xf0, 0x69, 0x1e, 0xd9, 0xae, 0x37, 0x40, 0x18, 0x6f, 0xf6, 0x81, + 0x65, 0x12, 0x8b, 0xfc, 0xa4, 0xd3, 0x4a, 0x3d, 0xfa, 0x8d, 0x14, 0x63, 0x3b, 0x4c, 0xd5, 0xa2, + 0x8c, 0xfb, 0x62, 0x15, 0x4d, 0x3a, 0xa3, 0xd4, 0x13, 0x64, 0xfd, 0x8a, 0xd2, 0xa5, 0x3c, 0x4b, + 0xaf, 0xd8, 0x41, 0x36, 0x6e, 0x19, 0x80, 0xf7, 0x30, 0x47, 0xde, 0xa9, 0xf1, 0x86, 0x1f, 0x68, + 0xca, 0xbd, 0x24, 0x53, 0xb, 0x7c, 0xe5, 0x92, 0x55, 0x22, 0xbb, 0xcc, 0x94, 0xe3, 0x7a, 0xd, + 0xe9, 0x9e, 0x7, 0x70, 0x28, 0x5f, 0xc6, 0xb1, 0x76, 0x1, 0x98, 0xef, 0xb7, 0xc0, 0x59, 0x2e, + 0x5, 0x72, 0xeb, 0x9c, 0xc4, 0xb3, 0x2a, 0x5d, 0x9a, 0xed, 0x74, 0x3, 0x5b, 0x2c, 0xb5, 0xc2, + 0x26, 0x51, 0xc8, 0xbf, 0xe7, 0x90, 0x9, 0x7e, 0xb9, 0xce, 0x57, 0x20, 0x78, 0xf, 0x96, 0xe1, + 0x43, 0x34, 0xad, 0xda, 0x82, 0xf5, 0x6c, 0x1b, 0xdc, 0xab, 0x32, 0x45, 0x1d, 0x6a, 0xf3, 0x84, + 0x60, 0x17, 0x8e, 0xf9, 0xa1, 0xd6, 0x4f, 0x38, 0xff, 0x88, 0x11, 0x66, 0x3e, 0x49, 0xd0, 0xa7, + 0x89, 0xfe, 0x67, 0x10, 0x48, 0x3f, 0xa6, 0xd1, 0x16, 0x61, 0xf8, 0x8f, 0xd7, 0xa0, 0x39, 0x4e, + 0xaa, 0xdd, 0x44, 0x33, 0x6b, 0x1c, 0x85, 0xf2, 0x35, 0x42, 0xdb, 0xac, 0xf4, 0x83, 0x1a, 0x6d, + 0xcf, 0xb8, 0x21, 0x56, 0xe, 0x79, 0xe0, 0x97, 0x50, 0x27, 0xbe, 0xc9, 0x91, 0xe6, 0x7f, 0x8, + 0xec, 0x9b, 0x2, 0x75, 0x2d, 0x5a, 0xc3, 0xb4, 0x73, 0x4, 0x9d, 0xea, 0xb2, 0xc5, 0x5c, 0x2b, + ], + [ + 0x0, 0x78, 0xf0, 0x88, 0xfd, 0x85, 0xd, 0x75, 0xe7, 0x9f, 0x17, 0x6f, 0x1a, 0x62, 0xea, 0x92, + 0xd3, 0xab, 0x23, 0x5b, 0x2e, 0x56, 0xde, 0xa6, 0x34, 0x4c, 0xc4, 0xbc, 0xc9, 0xb1, 0x39, 0x41, + 0xbb, 0xc3, 0x4b, 0x33, 0x46, 0x3e, 0xb6, 0xce, 0x5c, 0x24, 0xac, 0xd4, 0xa1, 0xd9, 0x51, 0x29, + 0x68, 0x10, 0x98, 0xe0, 0x95, 0xed, 0x65, 0x1d, 0x8f, 0xf7, 0x7f, 0x7, 0x72, 0xa, 0x82, 0xfa, + 0x6b, 0x13, 0x9b, 0xe3, 0x96, 0xee, 0x66, 0x1e, 0x8c, 0xf4, 0x7c, 0x4, 0x71, 0x9, 0x81, 0xf9, + 0xb8, 0xc0, 0x48, 0x30, 0x45, 0x3d, 0xb5, 0xcd, 0x5f, 0x27, 0xaf, 0xd7, 0xa2, 0xda, 0x52, 0x2a, + 0xd0, 0xa8, 0x20, 0x58, 0x2d, 0x55, 0xdd, 0xa5, 0x37, 0x4f, 0xc7, 0xbf, 0xca, 0xb2, 0x3a, 0x42, + 0x3, 0x7b, 0xf3, 0x8b, 0xfe, 0x86, 0xe, 0x76, 0xe4, 0x9c, 0x14, 0x6c, 0x19, 0x61, 0xe9, 0x91, + 0xd6, 0xae, 0x26, 0x5e, 0x2b, 0x53, 0xdb, 0xa3, 0x31, 0x49, 0xc1, 0xb9, 0xcc, 0xb4, 0x3c, 0x44, + 0x5, 0x7d, 0xf5, 0x8d, 0xf8, 0x80, 0x8, 0x70, 0xe2, 0x9a, 0x12, 0x6a, 0x1f, 0x67, 0xef, 0x97, + 0x6d, 0x15, 0x9d, 0xe5, 0x90, 0xe8, 0x60, 0x18, 0x8a, 0xf2, 0x7a, 0x2, 0x77, 0xf, 0x87, 0xff, + 0xbe, 0xc6, 0x4e, 0x36, 0x43, 0x3b, 0xb3, 0xcb, 0x59, 0x21, 0xa9, 0xd1, 0xa4, 0xdc, 0x54, 0x2c, + 0xbd, 0xc5, 0x4d, 0x35, 0x40, 0x38, 0xb0, 0xc8, 0x5a, 0x22, 0xaa, 0xd2, 0xa7, 0xdf, 0x57, 0x2f, + 0x6e, 0x16, 0x9e, 0xe6, 0x93, 0xeb, 0x63, 0x1b, 0x89, 0xf1, 0x79, 0x1, 0x74, 0xc, 0x84, 0xfc, + 0x6, 0x7e, 0xf6, 0x8e, 0xfb, 0x83, 0xb, 0x73, 0xe1, 0x99, 0x11, 0x69, 0x1c, 0x64, 0xec, 0x94, + 0xd5, 0xad, 0x25, 0x5d, 0x28, 0x50, 0xd8, 0xa0, 0x32, 0x4a, 0xc2, 0xba, 0xcf, 0xb7, 0x3f, 0x47, + ], + [ + 0x0, 0x79, 0xf2, 0x8b, 0xf9, 0x80, 0xb, 0x72, 0xef, 0x96, 0x1d, 0x64, 0x16, 0x6f, 0xe4, 0x9d, + 0xc3, 0xba, 0x31, 0x48, 0x3a, 0x43, 0xc8, 0xb1, 0x2c, 0x55, 0xde, 0xa7, 0xd5, 0xac, 0x27, 0x5e, + 0x9b, 0xe2, 0x69, 0x10, 0x62, 0x1b, 0x90, 0xe9, 0x74, 0xd, 0x86, 0xff, 0x8d, 0xf4, 0x7f, 0x6, + 0x58, 0x21, 0xaa, 0xd3, 0xa1, 0xd8, 0x53, 0x2a, 0xb7, 0xce, 0x45, 0x3c, 0x4e, 0x37, 0xbc, 0xc5, + 0x2b, 0x52, 0xd9, 0xa0, 0xd2, 0xab, 0x20, 0x59, 0xc4, 0xbd, 0x36, 0x4f, 0x3d, 0x44, 0xcf, 0xb6, + 0xe8, 0x91, 0x1a, 0x63, 0x11, 0x68, 0xe3, 0x9a, 0x7, 0x7e, 0xf5, 0x8c, 0xfe, 0x87, 0xc, 0x75, + 0xb0, 0xc9, 0x42, 0x3b, 0x49, 0x30, 0xbb, 0xc2, 0x5f, 0x26, 0xad, 0xd4, 0xa6, 0xdf, 0x54, 0x2d, + 0x73, 0xa, 0x81, 0xf8, 0x8a, 0xf3, 0x78, 0x1, 0x9c, 0xe5, 0x6e, 0x17, 0x65, 0x1c, 0x97, 0xee, + 0x56, 0x2f, 0xa4, 0xdd, 0xaf, 0xd6, 0x5d, 0x24, 0xb9, 0xc0, 0x4b, 0x32, 0x40, 0x39, 0xb2, 0xcb, + 0x95, 0xec, 0x67, 0x1e, 0x6c, 0x15, 0x9e, 0xe7, 0x7a, 0x3, 0x88, 0xf1, 0x83, 0xfa, 0x71, 0x8, + 0xcd, 0xb4, 0x3f, 0x46, 0x34, 0x4d, 0xc6, 0xbf, 0x22, 0x5b, 0xd0, 0xa9, 0xdb, 0xa2, 0x29, 0x50, + 0xe, 0x77, 0xfc, 0x85, 0xf7, 0x8e, 0x5, 0x7c, 0xe1, 0x98, 0x13, 0x6a, 0x18, 0x61, 0xea, 0x93, + 0x7d, 0x4, 0x8f, 0xf6, 0x84, 0xfd, 0x76, 0xf, 0x92, 0xeb, 0x60, 0x19, 0x6b, 0x12, 0x99, 0xe0, + 0xbe, 0xc7, 0x4c, 0x35, 0x47, 0x3e, 0xb5, 0xcc, 0x51, 0x28, 0xa3, 0xda, 0xa8, 0xd1, 0x5a, 0x23, + 0xe6, 0x9f, 0x14, 0x6d, 0x1f, 0x66, 0xed, 0x94, 0x9, 0x70, 0xfb, 0x82, 0xf0, 0x89, 0x2, 0x7b, + 0x25, 0x5c, 0xd7, 0xae, 0xdc, 0xa5, 0x2e, 0x57, 0xca, 0xb3, 0x38, 0x41, 0x33, 0x4a, 0xc1, 0xb8, + ], + [ + 0x0, 0x7a, 0xf4, 0x8e, 0xf5, 0x8f, 0x1, 0x7b, 0xf7, 0x8d, 0x3, 0x79, 0x2, 0x78, 0xf6, 0x8c, + 0xf3, 0x89, 0x7, 0x7d, 0x6, 0x7c, 0xf2, 0x88, 0x4, 0x7e, 0xf0, 0x8a, 0xf1, 0x8b, 0x5, 0x7f, + 0xfb, 0x81, 0xf, 0x75, 0xe, 0x74, 0xfa, 0x80, 0xc, 0x76, 0xf8, 0x82, 0xf9, 0x83, 0xd, 0x77, 0x8, + 0x72, 0xfc, 0x86, 0xfd, 0x87, 0x9, 0x73, 0xff, 0x85, 0xb, 0x71, 0xa, 0x70, 0xfe, 0x84, 0xeb, + 0x91, 0x1f, 0x65, 0x1e, 0x64, 0xea, 0x90, 0x1c, 0x66, 0xe8, 0x92, 0xe9, 0x93, 0x1d, 0x67, 0x18, + 0x62, 0xec, 0x96, 0xed, 0x97, 0x19, 0x63, 0xef, 0x95, 0x1b, 0x61, 0x1a, 0x60, 0xee, 0x94, 0x10, + 0x6a, 0xe4, 0x9e, 0xe5, 0x9f, 0x11, 0x6b, 0xe7, 0x9d, 0x13, 0x69, 0x12, 0x68, 0xe6, 0x9c, 0xe3, + 0x99, 0x17, 0x6d, 0x16, 0x6c, 0xe2, 0x98, 0x14, 0x6e, 0xe0, 0x9a, 0xe1, 0x9b, 0x15, 0x6f, 0xcb, + 0xb1, 0x3f, 0x45, 0x3e, 0x44, 0xca, 0xb0, 0x3c, 0x46, 0xc8, 0xb2, 0xc9, 0xb3, 0x3d, 0x47, 0x38, + 0x42, 0xcc, 0xb6, 0xcd, 0xb7, 0x39, 0x43, 0xcf, 0xb5, 0x3b, 0x41, 0x3a, 0x40, 0xce, 0xb4, 0x30, + 0x4a, 0xc4, 0xbe, 0xc5, 0xbf, 0x31, 0x4b, 0xc7, 0xbd, 0x33, 0x49, 0x32, 0x48, 0xc6, 0xbc, 0xc3, + 0xb9, 0x37, 0x4d, 0x36, 0x4c, 0xc2, 0xb8, 0x34, 0x4e, 0xc0, 0xba, 0xc1, 0xbb, 0x35, 0x4f, 0x20, + 0x5a, 0xd4, 0xae, 0xd5, 0xaf, 0x21, 0x5b, 0xd7, 0xad, 0x23, 0x59, 0x22, 0x58, 0xd6, 0xac, 0xd3, + 0xa9, 0x27, 0x5d, 0x26, 0x5c, 0xd2, 0xa8, 0x24, 0x5e, 0xd0, 0xaa, 0xd1, 0xab, 0x25, 0x5f, 0xdb, + 0xa1, 0x2f, 0x55, 0x2e, 0x54, 0xda, 0xa0, 0x2c, 0x56, 0xd8, 0xa2, 0xd9, 0xa3, 0x2d, 0x57, 0x28, + 0x52, 0xdc, 0xa6, 0xdd, 0xa7, 0x29, 0x53, 0xdf, 0xa5, 0x2b, 0x51, 0x2a, 0x50, 0xde, 0xa4, + ], + [ + 0x0, 0x7b, 0xf6, 0x8d, 0xf1, 0x8a, 0x7, 0x7c, 0xff, 0x84, 0x9, 0x72, 0xe, 0x75, 0xf8, 0x83, + 0xe3, 0x98, 0x15, 0x6e, 0x12, 0x69, 0xe4, 0x9f, 0x1c, 0x67, 0xea, 0x91, 0xed, 0x96, 0x1b, 0x60, + 0xdb, 0xa0, 0x2d, 0x56, 0x2a, 0x51, 0xdc, 0xa7, 0x24, 0x5f, 0xd2, 0xa9, 0xd5, 0xae, 0x23, 0x58, + 0x38, 0x43, 0xce, 0xb5, 0xc9, 0xb2, 0x3f, 0x44, 0xc7, 0xbc, 0x31, 0x4a, 0x36, 0x4d, 0xc0, 0xbb, + 0xab, 0xd0, 0x5d, 0x26, 0x5a, 0x21, 0xac, 0xd7, 0x54, 0x2f, 0xa2, 0xd9, 0xa5, 0xde, 0x53, 0x28, + 0x48, 0x33, 0xbe, 0xc5, 0xb9, 0xc2, 0x4f, 0x34, 0xb7, 0xcc, 0x41, 0x3a, 0x46, 0x3d, 0xb0, 0xcb, + 0x70, 0xb, 0x86, 0xfd, 0x81, 0xfa, 0x77, 0xc, 0x8f, 0xf4, 0x79, 0x2, 0x7e, 0x5, 0x88, 0xf3, + 0x93, 0xe8, 0x65, 0x1e, 0x62, 0x19, 0x94, 0xef, 0x6c, 0x17, 0x9a, 0xe1, 0x9d, 0xe6, 0x6b, 0x10, + 0x4b, 0x30, 0xbd, 0xc6, 0xba, 0xc1, 0x4c, 0x37, 0xb4, 0xcf, 0x42, 0x39, 0x45, 0x3e, 0xb3, 0xc8, + 0xa8, 0xd3, 0x5e, 0x25, 0x59, 0x22, 0xaf, 0xd4, 0x57, 0x2c, 0xa1, 0xda, 0xa6, 0xdd, 0x50, 0x2b, + 0x90, 0xeb, 0x66, 0x1d, 0x61, 0x1a, 0x97, 0xec, 0x6f, 0x14, 0x99, 0xe2, 0x9e, 0xe5, 0x68, 0x13, + 0x73, 0x8, 0x85, 0xfe, 0x82, 0xf9, 0x74, 0xf, 0x8c, 0xf7, 0x7a, 0x1, 0x7d, 0x6, 0x8b, 0xf0, + 0xe0, 0x9b, 0x16, 0x6d, 0x11, 0x6a, 0xe7, 0x9c, 0x1f, 0x64, 0xe9, 0x92, 0xee, 0x95, 0x18, 0x63, + 0x3, 0x78, 0xf5, 0x8e, 0xf2, 0x89, 0x4, 0x7f, 0xfc, 0x87, 0xa, 0x71, 0xd, 0x76, 0xfb, 0x80, + 0x3b, 0x40, 0xcd, 0xb6, 0xca, 0xb1, 0x3c, 0x47, 0xc4, 0xbf, 0x32, 0x49, 0x35, 0x4e, 0xc3, 0xb8, + 0xd8, 0xa3, 0x2e, 0x55, 0x29, 0x52, 0xdf, 0xa4, 0x27, 0x5c, 0xd1, 0xaa, 0xd6, 0xad, 0x20, 0x5b, + ], + [ + 0x0, 0x7c, 0xf8, 0x84, 0xed, 0x91, 0x15, 0x69, 0xc7, 0xbb, 0x3f, 0x43, 0x2a, 0x56, 0xd2, 0xae, + 0x93, 0xef, 0x6b, 0x17, 0x7e, 0x2, 0x86, 0xfa, 0x54, 0x28, 0xac, 0xd0, 0xb9, 0xc5, 0x41, 0x3d, + 0x3b, 0x47, 0xc3, 0xbf, 0xd6, 0xaa, 0x2e, 0x52, 0xfc, 0x80, 0x4, 0x78, 0x11, 0x6d, 0xe9, 0x95, + 0xa8, 0xd4, 0x50, 0x2c, 0x45, 0x39, 0xbd, 0xc1, 0x6f, 0x13, 0x97, 0xeb, 0x82, 0xfe, 0x7a, 0x6, + 0x76, 0xa, 0x8e, 0xf2, 0x9b, 0xe7, 0x63, 0x1f, 0xb1, 0xcd, 0x49, 0x35, 0x5c, 0x20, 0xa4, 0xd8, + 0xe5, 0x99, 0x1d, 0x61, 0x8, 0x74, 0xf0, 0x8c, 0x22, 0x5e, 0xda, 0xa6, 0xcf, 0xb3, 0x37, 0x4b, + 0x4d, 0x31, 0xb5, 0xc9, 0xa0, 0xdc, 0x58, 0x24, 0x8a, 0xf6, 0x72, 0xe, 0x67, 0x1b, 0x9f, 0xe3, + 0xde, 0xa2, 0x26, 0x5a, 0x33, 0x4f, 0xcb, 0xb7, 0x19, 0x65, 0xe1, 0x9d, 0xf4, 0x88, 0xc, 0x70, + 0xec, 0x90, 0x14, 0x68, 0x1, 0x7d, 0xf9, 0x85, 0x2b, 0x57, 0xd3, 0xaf, 0xc6, 0xba, 0x3e, 0x42, + 0x7f, 0x3, 0x87, 0xfb, 0x92, 0xee, 0x6a, 0x16, 0xb8, 0xc4, 0x40, 0x3c, 0x55, 0x29, 0xad, 0xd1, + 0xd7, 0xab, 0x2f, 0x53, 0x3a, 0x46, 0xc2, 0xbe, 0x10, 0x6c, 0xe8, 0x94, 0xfd, 0x81, 0x5, 0x79, + 0x44, 0x38, 0xbc, 0xc0, 0xa9, 0xd5, 0x51, 0x2d, 0x83, 0xff, 0x7b, 0x7, 0x6e, 0x12, 0x96, 0xea, + 0x9a, 0xe6, 0x62, 0x1e, 0x77, 0xb, 0x8f, 0xf3, 0x5d, 0x21, 0xa5, 0xd9, 0xb0, 0xcc, 0x48, 0x34, + 0x9, 0x75, 0xf1, 0x8d, 0xe4, 0x98, 0x1c, 0x60, 0xce, 0xb2, 0x36, 0x4a, 0x23, 0x5f, 0xdb, 0xa7, + 0xa1, 0xdd, 0x59, 0x25, 0x4c, 0x30, 0xb4, 0xc8, 0x66, 0x1a, 0x9e, 0xe2, 0x8b, 0xf7, 0x73, 0xf, + 0x32, 0x4e, 0xca, 0xb6, 0xdf, 0xa3, 0x27, 0x5b, 0xf5, 0x89, 0xd, 0x71, 0x18, 0x64, 0xe0, 0x9c, + ], + [ + 0x0, 0x7d, 0xfa, 0x87, 0xe9, 0x94, 0x13, 0x6e, 0xcf, 0xb2, 0x35, 0x48, 0x26, 0x5b, 0xdc, 0xa1, + 0x83, 0xfe, 0x79, 0x4, 0x6a, 0x17, 0x90, 0xed, 0x4c, 0x31, 0xb6, 0xcb, 0xa5, 0xd8, 0x5f, 0x22, + 0x1b, 0x66, 0xe1, 0x9c, 0xf2, 0x8f, 0x8, 0x75, 0xd4, 0xa9, 0x2e, 0x53, 0x3d, 0x40, 0xc7, 0xba, + 0x98, 0xe5, 0x62, 0x1f, 0x71, 0xc, 0x8b, 0xf6, 0x57, 0x2a, 0xad, 0xd0, 0xbe, 0xc3, 0x44, 0x39, + 0x36, 0x4b, 0xcc, 0xb1, 0xdf, 0xa2, 0x25, 0x58, 0xf9, 0x84, 0x3, 0x7e, 0x10, 0x6d, 0xea, 0x97, + 0xb5, 0xc8, 0x4f, 0x32, 0x5c, 0x21, 0xa6, 0xdb, 0x7a, 0x7, 0x80, 0xfd, 0x93, 0xee, 0x69, 0x14, + 0x2d, 0x50, 0xd7, 0xaa, 0xc4, 0xb9, 0x3e, 0x43, 0xe2, 0x9f, 0x18, 0x65, 0xb, 0x76, 0xf1, 0x8c, + 0xae, 0xd3, 0x54, 0x29, 0x47, 0x3a, 0xbd, 0xc0, 0x61, 0x1c, 0x9b, 0xe6, 0x88, 0xf5, 0x72, 0xf, + 0x6c, 0x11, 0x96, 0xeb, 0x85, 0xf8, 0x7f, 0x2, 0xa3, 0xde, 0x59, 0x24, 0x4a, 0x37, 0xb0, 0xcd, + 0xef, 0x92, 0x15, 0x68, 0x6, 0x7b, 0xfc, 0x81, 0x20, 0x5d, 0xda, 0xa7, 0xc9, 0xb4, 0x33, 0x4e, + 0x77, 0xa, 0x8d, 0xf0, 0x9e, 0xe3, 0x64, 0x19, 0xb8, 0xc5, 0x42, 0x3f, 0x51, 0x2c, 0xab, 0xd6, + 0xf4, 0x89, 0xe, 0x73, 0x1d, 0x60, 0xe7, 0x9a, 0x3b, 0x46, 0xc1, 0xbc, 0xd2, 0xaf, 0x28, 0x55, + 0x5a, 0x27, 0xa0, 0xdd, 0xb3, 0xce, 0x49, 0x34, 0x95, 0xe8, 0x6f, 0x12, 0x7c, 0x1, 0x86, 0xfb, + 0xd9, 0xa4, 0x23, 0x5e, 0x30, 0x4d, 0xca, 0xb7, 0x16, 0x6b, 0xec, 0x91, 0xff, 0x82, 0x5, 0x78, + 0x41, 0x3c, 0xbb, 0xc6, 0xa8, 0xd5, 0x52, 0x2f, 0x8e, 0xf3, 0x74, 0x9, 0x67, 0x1a, 0x9d, 0xe0, + 0xc2, 0xbf, 0x38, 0x45, 0x2b, 0x56, 0xd1, 0xac, 0xd, 0x70, 0xf7, 0x8a, 0xe4, 0x99, 0x1e, 0x63, + ], + [ + 0x0, 0x7e, 0xfc, 0x82, 0xe5, 0x9b, 0x19, 0x67, 0xd7, 0xa9, 0x2b, 0x55, 0x32, 0x4c, 0xce, 0xb0, + 0xb3, 0xcd, 0x4f, 0x31, 0x56, 0x28, 0xaa, 0xd4, 0x64, 0x1a, 0x98, 0xe6, 0x81, 0xff, 0x7d, 0x3, + 0x7b, 0x5, 0x87, 0xf9, 0x9e, 0xe0, 0x62, 0x1c, 0xac, 0xd2, 0x50, 0x2e, 0x49, 0x37, 0xb5, 0xcb, + 0xc8, 0xb6, 0x34, 0x4a, 0x2d, 0x53, 0xd1, 0xaf, 0x1f, 0x61, 0xe3, 0x9d, 0xfa, 0x84, 0x6, 0x78, + 0xf6, 0x88, 0xa, 0x74, 0x13, 0x6d, 0xef, 0x91, 0x21, 0x5f, 0xdd, 0xa3, 0xc4, 0xba, 0x38, 0x46, + 0x45, 0x3b, 0xb9, 0xc7, 0xa0, 0xde, 0x5c, 0x22, 0x92, 0xec, 0x6e, 0x10, 0x77, 0x9, 0x8b, 0xf5, + 0x8d, 0xf3, 0x71, 0xf, 0x68, 0x16, 0x94, 0xea, 0x5a, 0x24, 0xa6, 0xd8, 0xbf, 0xc1, 0x43, 0x3d, + 0x3e, 0x40, 0xc2, 0xbc, 0xdb, 0xa5, 0x27, 0x59, 0xe9, 0x97, 0x15, 0x6b, 0xc, 0x72, 0xf0, 0x8e, + 0xf1, 0x8f, 0xd, 0x73, 0x14, 0x6a, 0xe8, 0x96, 0x26, 0x58, 0xda, 0xa4, 0xc3, 0xbd, 0x3f, 0x41, + 0x42, 0x3c, 0xbe, 0xc0, 0xa7, 0xd9, 0x5b, 0x25, 0x95, 0xeb, 0x69, 0x17, 0x70, 0xe, 0x8c, 0xf2, + 0x8a, 0xf4, 0x76, 0x8, 0x6f, 0x11, 0x93, 0xed, 0x5d, 0x23, 0xa1, 0xdf, 0xb8, 0xc6, 0x44, 0x3a, + 0x39, 0x47, 0xc5, 0xbb, 0xdc, 0xa2, 0x20, 0x5e, 0xee, 0x90, 0x12, 0x6c, 0xb, 0x75, 0xf7, 0x89, + 0x7, 0x79, 0xfb, 0x85, 0xe2, 0x9c, 0x1e, 0x60, 0xd0, 0xae, 0x2c, 0x52, 0x35, 0x4b, 0xc9, 0xb7, + 0xb4, 0xca, 0x48, 0x36, 0x51, 0x2f, 0xad, 0xd3, 0x63, 0x1d, 0x9f, 0xe1, 0x86, 0xf8, 0x7a, 0x4, + 0x7c, 0x2, 0x80, 0xfe, 0x99, 0xe7, 0x65, 0x1b, 0xab, 0xd5, 0x57, 0x29, 0x4e, 0x30, 0xb2, 0xcc, + 0xcf, 0xb1, 0x33, 0x4d, 0x2a, 0x54, 0xd6, 0xa8, 0x18, 0x66, 0xe4, 0x9a, 0xfd, 0x83, 0x1, 0x7f, + ], + [ + 0x0, 0x7f, 0xfe, 0x81, 0xe1, 0x9e, 0x1f, 0x60, 0xdf, 0xa0, 0x21, 0x5e, 0x3e, 0x41, 0xc0, 0xbf, + 0xa3, 0xdc, 0x5d, 0x22, 0x42, 0x3d, 0xbc, 0xc3, 0x7c, 0x3, 0x82, 0xfd, 0x9d, 0xe2, 0x63, 0x1c, + 0x5b, 0x24, 0xa5, 0xda, 0xba, 0xc5, 0x44, 0x3b, 0x84, 0xfb, 0x7a, 0x5, 0x65, 0x1a, 0x9b, 0xe4, + 0xf8, 0x87, 0x6, 0x79, 0x19, 0x66, 0xe7, 0x98, 0x27, 0x58, 0xd9, 0xa6, 0xc6, 0xb9, 0x38, 0x47, + 0xb6, 0xc9, 0x48, 0x37, 0x57, 0x28, 0xa9, 0xd6, 0x69, 0x16, 0x97, 0xe8, 0x88, 0xf7, 0x76, 0x9, + 0x15, 0x6a, 0xeb, 0x94, 0xf4, 0x8b, 0xa, 0x75, 0xca, 0xb5, 0x34, 0x4b, 0x2b, 0x54, 0xd5, 0xaa, + 0xed, 0x92, 0x13, 0x6c, 0xc, 0x73, 0xf2, 0x8d, 0x32, 0x4d, 0xcc, 0xb3, 0xd3, 0xac, 0x2d, 0x52, + 0x4e, 0x31, 0xb0, 0xcf, 0xaf, 0xd0, 0x51, 0x2e, 0x91, 0xee, 0x6f, 0x10, 0x70, 0xf, 0x8e, 0xf1, + 0x71, 0xe, 0x8f, 0xf0, 0x90, 0xef, 0x6e, 0x11, 0xae, 0xd1, 0x50, 0x2f, 0x4f, 0x30, 0xb1, 0xce, + 0xd2, 0xad, 0x2c, 0x53, 0x33, 0x4c, 0xcd, 0xb2, 0xd, 0x72, 0xf3, 0x8c, 0xec, 0x93, 0x12, 0x6d, + 0x2a, 0x55, 0xd4, 0xab, 0xcb, 0xb4, 0x35, 0x4a, 0xf5, 0x8a, 0xb, 0x74, 0x14, 0x6b, 0xea, 0x95, + 0x89, 0xf6, 0x77, 0x8, 0x68, 0x17, 0x96, 0xe9, 0x56, 0x29, 0xa8, 0xd7, 0xb7, 0xc8, 0x49, 0x36, + 0xc7, 0xb8, 0x39, 0x46, 0x26, 0x59, 0xd8, 0xa7, 0x18, 0x67, 0xe6, 0x99, 0xf9, 0x86, 0x7, 0x78, + 0x64, 0x1b, 0x9a, 0xe5, 0x85, 0xfa, 0x7b, 0x4, 0xbb, 0xc4, 0x45, 0x3a, 0x5a, 0x25, 0xa4, 0xdb, + 0x9c, 0xe3, 0x62, 0x1d, 0x7d, 0x2, 0x83, 0xfc, 0x43, 0x3c, 0xbd, 0xc2, 0xa2, 0xdd, 0x5c, 0x23, + 0x3f, 0x40, 0xc1, 0xbe, 0xde, 0xa1, 0x20, 0x5f, 0xe0, 0x9f, 0x1e, 0x61, 0x1, 0x7e, 0xff, 0x80, + ], + [ + 0x0, 0x80, 0x1d, 0x9d, 0x3a, 0xba, 0x27, 0xa7, 0x74, 0xf4, 0x69, 0xe9, 0x4e, 0xce, 0x53, 0xd3, + 0xe8, 0x68, 0xf5, 0x75, 0xd2, 0x52, 0xcf, 0x4f, 0x9c, 0x1c, 0x81, 0x1, 0xa6, 0x26, 0xbb, 0x3b, + 0xcd, 0x4d, 0xd0, 0x50, 0xf7, 0x77, 0xea, 0x6a, 0xb9, 0x39, 0xa4, 0x24, 0x83, 0x3, 0x9e, 0x1e, + 0x25, 0xa5, 0x38, 0xb8, 0x1f, 0x9f, 0x2, 0x82, 0x51, 0xd1, 0x4c, 0xcc, 0x6b, 0xeb, 0x76, 0xf6, + 0x87, 0x7, 0x9a, 0x1a, 0xbd, 0x3d, 0xa0, 0x20, 0xf3, 0x73, 0xee, 0x6e, 0xc9, 0x49, 0xd4, 0x54, + 0x6f, 0xef, 0x72, 0xf2, 0x55, 0xd5, 0x48, 0xc8, 0x1b, 0x9b, 0x6, 0x86, 0x21, 0xa1, 0x3c, 0xbc, + 0x4a, 0xca, 0x57, 0xd7, 0x70, 0xf0, 0x6d, 0xed, 0x3e, 0xbe, 0x23, 0xa3, 0x4, 0x84, 0x19, 0x99, + 0xa2, 0x22, 0xbf, 0x3f, 0x98, 0x18, 0x85, 0x5, 0xd6, 0x56, 0xcb, 0x4b, 0xec, 0x6c, 0xf1, 0x71, + 0x13, 0x93, 0xe, 0x8e, 0x29, 0xa9, 0x34, 0xb4, 0x67, 0xe7, 0x7a, 0xfa, 0x5d, 0xdd, 0x40, 0xc0, + 0xfb, 0x7b, 0xe6, 0x66, 0xc1, 0x41, 0xdc, 0x5c, 0x8f, 0xf, 0x92, 0x12, 0xb5, 0x35, 0xa8, 0x28, + 0xde, 0x5e, 0xc3, 0x43, 0xe4, 0x64, 0xf9, 0x79, 0xaa, 0x2a, 0xb7, 0x37, 0x90, 0x10, 0x8d, 0xd, + 0x36, 0xb6, 0x2b, 0xab, 0xc, 0x8c, 0x11, 0x91, 0x42, 0xc2, 0x5f, 0xdf, 0x78, 0xf8, 0x65, 0xe5, + 0x94, 0x14, 0x89, 0x9, 0xae, 0x2e, 0xb3, 0x33, 0xe0, 0x60, 0xfd, 0x7d, 0xda, 0x5a, 0xc7, 0x47, + 0x7c, 0xfc, 0x61, 0xe1, 0x46, 0xc6, 0x5b, 0xdb, 0x8, 0x88, 0x15, 0x95, 0x32, 0xb2, 0x2f, 0xaf, + 0x59, 0xd9, 0x44, 0xc4, 0x63, 0xe3, 0x7e, 0xfe, 0x2d, 0xad, 0x30, 0xb0, 0x17, 0x97, 0xa, 0x8a, + 0xb1, 0x31, 0xac, 0x2c, 0x8b, 0xb, 0x96, 0x16, 0xc5, 0x45, 0xd8, 0x58, 0xff, 0x7f, 0xe2, 0x62, + ], + [ + 0x0, 0x81, 0x1f, 0x9e, 0x3e, 0xbf, 0x21, 0xa0, 0x7c, 0xfd, 0x63, 0xe2, 0x42, 0xc3, 0x5d, 0xdc, + 0xf8, 0x79, 0xe7, 0x66, 0xc6, 0x47, 0xd9, 0x58, 0x84, 0x5, 0x9b, 0x1a, 0xba, 0x3b, 0xa5, 0x24, + 0xed, 0x6c, 0xf2, 0x73, 0xd3, 0x52, 0xcc, 0x4d, 0x91, 0x10, 0x8e, 0xf, 0xaf, 0x2e, 0xb0, 0x31, + 0x15, 0x94, 0xa, 0x8b, 0x2b, 0xaa, 0x34, 0xb5, 0x69, 0xe8, 0x76, 0xf7, 0x57, 0xd6, 0x48, 0xc9, + 0xc7, 0x46, 0xd8, 0x59, 0xf9, 0x78, 0xe6, 0x67, 0xbb, 0x3a, 0xa4, 0x25, 0x85, 0x4, 0x9a, 0x1b, + 0x3f, 0xbe, 0x20, 0xa1, 0x1, 0x80, 0x1e, 0x9f, 0x43, 0xc2, 0x5c, 0xdd, 0x7d, 0xfc, 0x62, 0xe3, + 0x2a, 0xab, 0x35, 0xb4, 0x14, 0x95, 0xb, 0x8a, 0x56, 0xd7, 0x49, 0xc8, 0x68, 0xe9, 0x77, 0xf6, + 0xd2, 0x53, 0xcd, 0x4c, 0xec, 0x6d, 0xf3, 0x72, 0xae, 0x2f, 0xb1, 0x30, 0x90, 0x11, 0x8f, 0xe, + 0x93, 0x12, 0x8c, 0xd, 0xad, 0x2c, 0xb2, 0x33, 0xef, 0x6e, 0xf0, 0x71, 0xd1, 0x50, 0xce, 0x4f, + 0x6b, 0xea, 0x74, 0xf5, 0x55, 0xd4, 0x4a, 0xcb, 0x17, 0x96, 0x8, 0x89, 0x29, 0xa8, 0x36, 0xb7, + 0x7e, 0xff, 0x61, 0xe0, 0x40, 0xc1, 0x5f, 0xde, 0x2, 0x83, 0x1d, 0x9c, 0x3c, 0xbd, 0x23, 0xa2, + 0x86, 0x7, 0x99, 0x18, 0xb8, 0x39, 0xa7, 0x26, 0xfa, 0x7b, 0xe5, 0x64, 0xc4, 0x45, 0xdb, 0x5a, + 0x54, 0xd5, 0x4b, 0xca, 0x6a, 0xeb, 0x75, 0xf4, 0x28, 0xa9, 0x37, 0xb6, 0x16, 0x97, 0x9, 0x88, + 0xac, 0x2d, 0xb3, 0x32, 0x92, 0x13, 0x8d, 0xc, 0xd0, 0x51, 0xcf, 0x4e, 0xee, 0x6f, 0xf1, 0x70, + 0xb9, 0x38, 0xa6, 0x27, 0x87, 0x6, 0x98, 0x19, 0xc5, 0x44, 0xda, 0x5b, 0xfb, 0x7a, 0xe4, 0x65, + 0x41, 0xc0, 0x5e, 0xdf, 0x7f, 0xfe, 0x60, 0xe1, 0x3d, 0xbc, 0x22, 0xa3, 0x3, 0x82, 0x1c, 0x9d, + ], + [ + 0x0, 0x82, 0x19, 0x9b, 0x32, 0xb0, 0x2b, 0xa9, 0x64, 0xe6, 0x7d, 0xff, 0x56, 0xd4, 0x4f, 0xcd, + 0xc8, 0x4a, 0xd1, 0x53, 0xfa, 0x78, 0xe3, 0x61, 0xac, 0x2e, 0xb5, 0x37, 0x9e, 0x1c, 0x87, 0x5, + 0x8d, 0xf, 0x94, 0x16, 0xbf, 0x3d, 0xa6, 0x24, 0xe9, 0x6b, 0xf0, 0x72, 0xdb, 0x59, 0xc2, 0x40, + 0x45, 0xc7, 0x5c, 0xde, 0x77, 0xf5, 0x6e, 0xec, 0x21, 0xa3, 0x38, 0xba, 0x13, 0x91, 0xa, 0x88, + 0x7, 0x85, 0x1e, 0x9c, 0x35, 0xb7, 0x2c, 0xae, 0x63, 0xe1, 0x7a, 0xf8, 0x51, 0xd3, 0x48, 0xca, + 0xcf, 0x4d, 0xd6, 0x54, 0xfd, 0x7f, 0xe4, 0x66, 0xab, 0x29, 0xb2, 0x30, 0x99, 0x1b, 0x80, 0x2, + 0x8a, 0x8, 0x93, 0x11, 0xb8, 0x3a, 0xa1, 0x23, 0xee, 0x6c, 0xf7, 0x75, 0xdc, 0x5e, 0xc5, 0x47, + 0x42, 0xc0, 0x5b, 0xd9, 0x70, 0xf2, 0x69, 0xeb, 0x26, 0xa4, 0x3f, 0xbd, 0x14, 0x96, 0xd, 0x8f, + 0xe, 0x8c, 0x17, 0x95, 0x3c, 0xbe, 0x25, 0xa7, 0x6a, 0xe8, 0x73, 0xf1, 0x58, 0xda, 0x41, 0xc3, + 0xc6, 0x44, 0xdf, 0x5d, 0xf4, 0x76, 0xed, 0x6f, 0xa2, 0x20, 0xbb, 0x39, 0x90, 0x12, 0x89, 0xb, + 0x83, 0x1, 0x9a, 0x18, 0xb1, 0x33, 0xa8, 0x2a, 0xe7, 0x65, 0xfe, 0x7c, 0xd5, 0x57, 0xcc, 0x4e, + 0x4b, 0xc9, 0x52, 0xd0, 0x79, 0xfb, 0x60, 0xe2, 0x2f, 0xad, 0x36, 0xb4, 0x1d, 0x9f, 0x4, 0x86, + 0x9, 0x8b, 0x10, 0x92, 0x3b, 0xb9, 0x22, 0xa0, 0x6d, 0xef, 0x74, 0xf6, 0x5f, 0xdd, 0x46, 0xc4, + 0xc1, 0x43, 0xd8, 0x5a, 0xf3, 0x71, 0xea, 0x68, 0xa5, 0x27, 0xbc, 0x3e, 0x97, 0x15, 0x8e, 0xc, + 0x84, 0x6, 0x9d, 0x1f, 0xb6, 0x34, 0xaf, 0x2d, 0xe0, 0x62, 0xf9, 0x7b, 0xd2, 0x50, 0xcb, 0x49, + 0x4c, 0xce, 0x55, 0xd7, 0x7e, 0xfc, 0x67, 0xe5, 0x28, 0xaa, 0x31, 0xb3, 0x1a, 0x98, 0x3, 0x81, + ], + [ + 0x0, 0x83, 0x1b, 0x98, 0x36, 0xb5, 0x2d, 0xae, 0x6c, 0xef, 0x77, 0xf4, 0x5a, 0xd9, 0x41, 0xc2, + 0xd8, 0x5b, 0xc3, 0x40, 0xee, 0x6d, 0xf5, 0x76, 0xb4, 0x37, 0xaf, 0x2c, 0x82, 0x1, 0x99, 0x1a, + 0xad, 0x2e, 0xb6, 0x35, 0x9b, 0x18, 0x80, 0x3, 0xc1, 0x42, 0xda, 0x59, 0xf7, 0x74, 0xec, 0x6f, + 0x75, 0xf6, 0x6e, 0xed, 0x43, 0xc0, 0x58, 0xdb, 0x19, 0x9a, 0x2, 0x81, 0x2f, 0xac, 0x34, 0xb7, + 0x47, 0xc4, 0x5c, 0xdf, 0x71, 0xf2, 0x6a, 0xe9, 0x2b, 0xa8, 0x30, 0xb3, 0x1d, 0x9e, 0x6, 0x85, + 0x9f, 0x1c, 0x84, 0x7, 0xa9, 0x2a, 0xb2, 0x31, 0xf3, 0x70, 0xe8, 0x6b, 0xc5, 0x46, 0xde, 0x5d, + 0xea, 0x69, 0xf1, 0x72, 0xdc, 0x5f, 0xc7, 0x44, 0x86, 0x5, 0x9d, 0x1e, 0xb0, 0x33, 0xab, 0x28, + 0x32, 0xb1, 0x29, 0xaa, 0x4, 0x87, 0x1f, 0x9c, 0x5e, 0xdd, 0x45, 0xc6, 0x68, 0xeb, 0x73, 0xf0, + 0x8e, 0xd, 0x95, 0x16, 0xb8, 0x3b, 0xa3, 0x20, 0xe2, 0x61, 0xf9, 0x7a, 0xd4, 0x57, 0xcf, 0x4c, + 0x56, 0xd5, 0x4d, 0xce, 0x60, 0xe3, 0x7b, 0xf8, 0x3a, 0xb9, 0x21, 0xa2, 0xc, 0x8f, 0x17, 0x94, + 0x23, 0xa0, 0x38, 0xbb, 0x15, 0x96, 0xe, 0x8d, 0x4f, 0xcc, 0x54, 0xd7, 0x79, 0xfa, 0x62, 0xe1, + 0xfb, 0x78, 0xe0, 0x63, 0xcd, 0x4e, 0xd6, 0x55, 0x97, 0x14, 0x8c, 0xf, 0xa1, 0x22, 0xba, 0x39, + 0xc9, 0x4a, 0xd2, 0x51, 0xff, 0x7c, 0xe4, 0x67, 0xa5, 0x26, 0xbe, 0x3d, 0x93, 0x10, 0x88, 0xb, + 0x11, 0x92, 0xa, 0x89, 0x27, 0xa4, 0x3c, 0xbf, 0x7d, 0xfe, 0x66, 0xe5, 0x4b, 0xc8, 0x50, 0xd3, + 0x64, 0xe7, 0x7f, 0xfc, 0x52, 0xd1, 0x49, 0xca, 0x8, 0x8b, 0x13, 0x90, 0x3e, 0xbd, 0x25, 0xa6, + 0xbc, 0x3f, 0xa7, 0x24, 0x8a, 0x9, 0x91, 0x12, 0xd0, 0x53, 0xcb, 0x48, 0xe6, 0x65, 0xfd, 0x7e, + ], + [ + 0x0, 0x84, 0x15, 0x91, 0x2a, 0xae, 0x3f, 0xbb, 0x54, 0xd0, 0x41, 0xc5, 0x7e, 0xfa, 0x6b, 0xef, + 0xa8, 0x2c, 0xbd, 0x39, 0x82, 0x6, 0x97, 0x13, 0xfc, 0x78, 0xe9, 0x6d, 0xd6, 0x52, 0xc3, 0x47, + 0x4d, 0xc9, 0x58, 0xdc, 0x67, 0xe3, 0x72, 0xf6, 0x19, 0x9d, 0xc, 0x88, 0x33, 0xb7, 0x26, 0xa2, + 0xe5, 0x61, 0xf0, 0x74, 0xcf, 0x4b, 0xda, 0x5e, 0xb1, 0x35, 0xa4, 0x20, 0x9b, 0x1f, 0x8e, 0xa, + 0x9a, 0x1e, 0x8f, 0xb, 0xb0, 0x34, 0xa5, 0x21, 0xce, 0x4a, 0xdb, 0x5f, 0xe4, 0x60, 0xf1, 0x75, + 0x32, 0xb6, 0x27, 0xa3, 0x18, 0x9c, 0xd, 0x89, 0x66, 0xe2, 0x73, 0xf7, 0x4c, 0xc8, 0x59, 0xdd, + 0xd7, 0x53, 0xc2, 0x46, 0xfd, 0x79, 0xe8, 0x6c, 0x83, 0x7, 0x96, 0x12, 0xa9, 0x2d, 0xbc, 0x38, + 0x7f, 0xfb, 0x6a, 0xee, 0x55, 0xd1, 0x40, 0xc4, 0x2b, 0xaf, 0x3e, 0xba, 0x1, 0x85, 0x14, 0x90, + 0x29, 0xad, 0x3c, 0xb8, 0x3, 0x87, 0x16, 0x92, 0x7d, 0xf9, 0x68, 0xec, 0x57, 0xd3, 0x42, 0xc6, + 0x81, 0x5, 0x94, 0x10, 0xab, 0x2f, 0xbe, 0x3a, 0xd5, 0x51, 0xc0, 0x44, 0xff, 0x7b, 0xea, 0x6e, + 0x64, 0xe0, 0x71, 0xf5, 0x4e, 0xca, 0x5b, 0xdf, 0x30, 0xb4, 0x25, 0xa1, 0x1a, 0x9e, 0xf, 0x8b, + 0xcc, 0x48, 0xd9, 0x5d, 0xe6, 0x62, 0xf3, 0x77, 0x98, 0x1c, 0x8d, 0x9, 0xb2, 0x36, 0xa7, 0x23, + 0xb3, 0x37, 0xa6, 0x22, 0x99, 0x1d, 0x8c, 0x8, 0xe7, 0x63, 0xf2, 0x76, 0xcd, 0x49, 0xd8, 0x5c, + 0x1b, 0x9f, 0xe, 0x8a, 0x31, 0xb5, 0x24, 0xa0, 0x4f, 0xcb, 0x5a, 0xde, 0x65, 0xe1, 0x70, 0xf4, + 0xfe, 0x7a, 0xeb, 0x6f, 0xd4, 0x50, 0xc1, 0x45, 0xaa, 0x2e, 0xbf, 0x3b, 0x80, 0x4, 0x95, 0x11, + 0x56, 0xd2, 0x43, 0xc7, 0x7c, 0xf8, 0x69, 0xed, 0x2, 0x86, 0x17, 0x93, 0x28, 0xac, 0x3d, 0xb9, + ], + [ + 0x0, 0x85, 0x17, 0x92, 0x2e, 0xab, 0x39, 0xbc, 0x5c, 0xd9, 0x4b, 0xce, 0x72, 0xf7, 0x65, 0xe0, + 0xb8, 0x3d, 0xaf, 0x2a, 0x96, 0x13, 0x81, 0x4, 0xe4, 0x61, 0xf3, 0x76, 0xca, 0x4f, 0xdd, 0x58, + 0x6d, 0xe8, 0x7a, 0xff, 0x43, 0xc6, 0x54, 0xd1, 0x31, 0xb4, 0x26, 0xa3, 0x1f, 0x9a, 0x8, 0x8d, + 0xd5, 0x50, 0xc2, 0x47, 0xfb, 0x7e, 0xec, 0x69, 0x89, 0xc, 0x9e, 0x1b, 0xa7, 0x22, 0xb0, 0x35, + 0xda, 0x5f, 0xcd, 0x48, 0xf4, 0x71, 0xe3, 0x66, 0x86, 0x3, 0x91, 0x14, 0xa8, 0x2d, 0xbf, 0x3a, + 0x62, 0xe7, 0x75, 0xf0, 0x4c, 0xc9, 0x5b, 0xde, 0x3e, 0xbb, 0x29, 0xac, 0x10, 0x95, 0x7, 0x82, + 0xb7, 0x32, 0xa0, 0x25, 0x99, 0x1c, 0x8e, 0xb, 0xeb, 0x6e, 0xfc, 0x79, 0xc5, 0x40, 0xd2, 0x57, + 0xf, 0x8a, 0x18, 0x9d, 0x21, 0xa4, 0x36, 0xb3, 0x53, 0xd6, 0x44, 0xc1, 0x7d, 0xf8, 0x6a, 0xef, + 0xa9, 0x2c, 0xbe, 0x3b, 0x87, 0x2, 0x90, 0x15, 0xf5, 0x70, 0xe2, 0x67, 0xdb, 0x5e, 0xcc, 0x49, + 0x11, 0x94, 0x6, 0x83, 0x3f, 0xba, 0x28, 0xad, 0x4d, 0xc8, 0x5a, 0xdf, 0x63, 0xe6, 0x74, 0xf1, + 0xc4, 0x41, 0xd3, 0x56, 0xea, 0x6f, 0xfd, 0x78, 0x98, 0x1d, 0x8f, 0xa, 0xb6, 0x33, 0xa1, 0x24, + 0x7c, 0xf9, 0x6b, 0xee, 0x52, 0xd7, 0x45, 0xc0, 0x20, 0xa5, 0x37, 0xb2, 0xe, 0x8b, 0x19, 0x9c, + 0x73, 0xf6, 0x64, 0xe1, 0x5d, 0xd8, 0x4a, 0xcf, 0x2f, 0xaa, 0x38, 0xbd, 0x1, 0x84, 0x16, 0x93, + 0xcb, 0x4e, 0xdc, 0x59, 0xe5, 0x60, 0xf2, 0x77, 0x97, 0x12, 0x80, 0x5, 0xb9, 0x3c, 0xae, 0x2b, + 0x1e, 0x9b, 0x9, 0x8c, 0x30, 0xb5, 0x27, 0xa2, 0x42, 0xc7, 0x55, 0xd0, 0x6c, 0xe9, 0x7b, 0xfe, + 0xa6, 0x23, 0xb1, 0x34, 0x88, 0xd, 0x9f, 0x1a, 0xfa, 0x7f, 0xed, 0x68, 0xd4, 0x51, 0xc3, 0x46, + ], + [ + 0x0, 0x86, 0x11, 0x97, 0x22, 0xa4, 0x33, 0xb5, 0x44, 0xc2, 0x55, 0xd3, 0x66, 0xe0, 0x77, 0xf1, + 0x88, 0xe, 0x99, 0x1f, 0xaa, 0x2c, 0xbb, 0x3d, 0xcc, 0x4a, 0xdd, 0x5b, 0xee, 0x68, 0xff, 0x79, + 0xd, 0x8b, 0x1c, 0x9a, 0x2f, 0xa9, 0x3e, 0xb8, 0x49, 0xcf, 0x58, 0xde, 0x6b, 0xed, 0x7a, 0xfc, + 0x85, 0x3, 0x94, 0x12, 0xa7, 0x21, 0xb6, 0x30, 0xc1, 0x47, 0xd0, 0x56, 0xe3, 0x65, 0xf2, 0x74, + 0x1a, 0x9c, 0xb, 0x8d, 0x38, 0xbe, 0x29, 0xaf, 0x5e, 0xd8, 0x4f, 0xc9, 0x7c, 0xfa, 0x6d, 0xeb, + 0x92, 0x14, 0x83, 0x5, 0xb0, 0x36, 0xa1, 0x27, 0xd6, 0x50, 0xc7, 0x41, 0xf4, 0x72, 0xe5, 0x63, + 0x17, 0x91, 0x6, 0x80, 0x35, 0xb3, 0x24, 0xa2, 0x53, 0xd5, 0x42, 0xc4, 0x71, 0xf7, 0x60, 0xe6, + 0x9f, 0x19, 0x8e, 0x8, 0xbd, 0x3b, 0xac, 0x2a, 0xdb, 0x5d, 0xca, 0x4c, 0xf9, 0x7f, 0xe8, 0x6e, + 0x34, 0xb2, 0x25, 0xa3, 0x16, 0x90, 0x7, 0x81, 0x70, 0xf6, 0x61, 0xe7, 0x52, 0xd4, 0x43, 0xc5, + 0xbc, 0x3a, 0xad, 0x2b, 0x9e, 0x18, 0x8f, 0x9, 0xf8, 0x7e, 0xe9, 0x6f, 0xda, 0x5c, 0xcb, 0x4d, + 0x39, 0xbf, 0x28, 0xae, 0x1b, 0x9d, 0xa, 0x8c, 0x7d, 0xfb, 0x6c, 0xea, 0x5f, 0xd9, 0x4e, 0xc8, + 0xb1, 0x37, 0xa0, 0x26, 0x93, 0x15, 0x82, 0x4, 0xf5, 0x73, 0xe4, 0x62, 0xd7, 0x51, 0xc6, 0x40, + 0x2e, 0xa8, 0x3f, 0xb9, 0xc, 0x8a, 0x1d, 0x9b, 0x6a, 0xec, 0x7b, 0xfd, 0x48, 0xce, 0x59, 0xdf, + 0xa6, 0x20, 0xb7, 0x31, 0x84, 0x2, 0x95, 0x13, 0xe2, 0x64, 0xf3, 0x75, 0xc0, 0x46, 0xd1, 0x57, + 0x23, 0xa5, 0x32, 0xb4, 0x1, 0x87, 0x10, 0x96, 0x67, 0xe1, 0x76, 0xf0, 0x45, 0xc3, 0x54, 0xd2, + 0xab, 0x2d, 0xba, 0x3c, 0x89, 0xf, 0x98, 0x1e, 0xef, 0x69, 0xfe, 0x78, 0xcd, 0x4b, 0xdc, 0x5a, + ], + [ + 0x0, 0x87, 0x13, 0x94, 0x26, 0xa1, 0x35, 0xb2, 0x4c, 0xcb, 0x5f, 0xd8, 0x6a, 0xed, 0x79, 0xfe, + 0x98, 0x1f, 0x8b, 0xc, 0xbe, 0x39, 0xad, 0x2a, 0xd4, 0x53, 0xc7, 0x40, 0xf2, 0x75, 0xe1, 0x66, + 0x2d, 0xaa, 0x3e, 0xb9, 0xb, 0x8c, 0x18, 0x9f, 0x61, 0xe6, 0x72, 0xf5, 0x47, 0xc0, 0x54, 0xd3, + 0xb5, 0x32, 0xa6, 0x21, 0x93, 0x14, 0x80, 0x7, 0xf9, 0x7e, 0xea, 0x6d, 0xdf, 0x58, 0xcc, 0x4b, + 0x5a, 0xdd, 0x49, 0xce, 0x7c, 0xfb, 0x6f, 0xe8, 0x16, 0x91, 0x5, 0x82, 0x30, 0xb7, 0x23, 0xa4, + 0xc2, 0x45, 0xd1, 0x56, 0xe4, 0x63, 0xf7, 0x70, 0x8e, 0x9, 0x9d, 0x1a, 0xa8, 0x2f, 0xbb, 0x3c, + 0x77, 0xf0, 0x64, 0xe3, 0x51, 0xd6, 0x42, 0xc5, 0x3b, 0xbc, 0x28, 0xaf, 0x1d, 0x9a, 0xe, 0x89, + 0xef, 0x68, 0xfc, 0x7b, 0xc9, 0x4e, 0xda, 0x5d, 0xa3, 0x24, 0xb0, 0x37, 0x85, 0x2, 0x96, 0x11, + 0xb4, 0x33, 0xa7, 0x20, 0x92, 0x15, 0x81, 0x6, 0xf8, 0x7f, 0xeb, 0x6c, 0xde, 0x59, 0xcd, 0x4a, + 0x2c, 0xab, 0x3f, 0xb8, 0xa, 0x8d, 0x19, 0x9e, 0x60, 0xe7, 0x73, 0xf4, 0x46, 0xc1, 0x55, 0xd2, + 0x99, 0x1e, 0x8a, 0xd, 0xbf, 0x38, 0xac, 0x2b, 0xd5, 0x52, 0xc6, 0x41, 0xf3, 0x74, 0xe0, 0x67, + 0x1, 0x86, 0x12, 0x95, 0x27, 0xa0, 0x34, 0xb3, 0x4d, 0xca, 0x5e, 0xd9, 0x6b, 0xec, 0x78, 0xff, + 0xee, 0x69, 0xfd, 0x7a, 0xc8, 0x4f, 0xdb, 0x5c, 0xa2, 0x25, 0xb1, 0x36, 0x84, 0x3, 0x97, 0x10, + 0x76, 0xf1, 0x65, 0xe2, 0x50, 0xd7, 0x43, 0xc4, 0x3a, 0xbd, 0x29, 0xae, 0x1c, 0x9b, 0xf, 0x88, + 0xc3, 0x44, 0xd0, 0x57, 0xe5, 0x62, 0xf6, 0x71, 0x8f, 0x8, 0x9c, 0x1b, 0xa9, 0x2e, 0xba, 0x3d, + 0x5b, 0xdc, 0x48, 0xcf, 0x7d, 0xfa, 0x6e, 0xe9, 0x17, 0x90, 0x4, 0x83, 0x31, 0xb6, 0x22, 0xa5, + ], + [ + 0x0, 0x88, 0xd, 0x85, 0x1a, 0x92, 0x17, 0x9f, 0x34, 0xbc, 0x39, 0xb1, 0x2e, 0xa6, 0x23, 0xab, + 0x68, 0xe0, 0x65, 0xed, 0x72, 0xfa, 0x7f, 0xf7, 0x5c, 0xd4, 0x51, 0xd9, 0x46, 0xce, 0x4b, 0xc3, + 0xd0, 0x58, 0xdd, 0x55, 0xca, 0x42, 0xc7, 0x4f, 0xe4, 0x6c, 0xe9, 0x61, 0xfe, 0x76, 0xf3, 0x7b, + 0xb8, 0x30, 0xb5, 0x3d, 0xa2, 0x2a, 0xaf, 0x27, 0x8c, 0x4, 0x81, 0x9, 0x96, 0x1e, 0x9b, 0x13, + 0xbd, 0x35, 0xb0, 0x38, 0xa7, 0x2f, 0xaa, 0x22, 0x89, 0x1, 0x84, 0xc, 0x93, 0x1b, 0x9e, 0x16, + 0xd5, 0x5d, 0xd8, 0x50, 0xcf, 0x47, 0xc2, 0x4a, 0xe1, 0x69, 0xec, 0x64, 0xfb, 0x73, 0xf6, 0x7e, + 0x6d, 0xe5, 0x60, 0xe8, 0x77, 0xff, 0x7a, 0xf2, 0x59, 0xd1, 0x54, 0xdc, 0x43, 0xcb, 0x4e, 0xc6, + 0x5, 0x8d, 0x8, 0x80, 0x1f, 0x97, 0x12, 0x9a, 0x31, 0xb9, 0x3c, 0xb4, 0x2b, 0xa3, 0x26, 0xae, + 0x67, 0xef, 0x6a, 0xe2, 0x7d, 0xf5, 0x70, 0xf8, 0x53, 0xdb, 0x5e, 0xd6, 0x49, 0xc1, 0x44, 0xcc, + 0xf, 0x87, 0x2, 0x8a, 0x15, 0x9d, 0x18, 0x90, 0x3b, 0xb3, 0x36, 0xbe, 0x21, 0xa9, 0x2c, 0xa4, + 0xb7, 0x3f, 0xba, 0x32, 0xad, 0x25, 0xa0, 0x28, 0x83, 0xb, 0x8e, 0x6, 0x99, 0x11, 0x94, 0x1c, + 0xdf, 0x57, 0xd2, 0x5a, 0xc5, 0x4d, 0xc8, 0x40, 0xeb, 0x63, 0xe6, 0x6e, 0xf1, 0x79, 0xfc, 0x74, + 0xda, 0x52, 0xd7, 0x5f, 0xc0, 0x48, 0xcd, 0x45, 0xee, 0x66, 0xe3, 0x6b, 0xf4, 0x7c, 0xf9, 0x71, + 0xb2, 0x3a, 0xbf, 0x37, 0xa8, 0x20, 0xa5, 0x2d, 0x86, 0xe, 0x8b, 0x3, 0x9c, 0x14, 0x91, 0x19, + 0xa, 0x82, 0x7, 0x8f, 0x10, 0x98, 0x1d, 0x95, 0x3e, 0xb6, 0x33, 0xbb, 0x24, 0xac, 0x29, 0xa1, + 0x62, 0xea, 0x6f, 0xe7, 0x78, 0xf0, 0x75, 0xfd, 0x56, 0xde, 0x5b, 0xd3, 0x4c, 0xc4, 0x41, 0xc9, + ], + [ + 0x0, 0x89, 0xf, 0x86, 0x1e, 0x97, 0x11, 0x98, 0x3c, 0xb5, 0x33, 0xba, 0x22, 0xab, 0x2d, 0xa4, + 0x78, 0xf1, 0x77, 0xfe, 0x66, 0xef, 0x69, 0xe0, 0x44, 0xcd, 0x4b, 0xc2, 0x5a, 0xd3, 0x55, 0xdc, + 0xf0, 0x79, 0xff, 0x76, 0xee, 0x67, 0xe1, 0x68, 0xcc, 0x45, 0xc3, 0x4a, 0xd2, 0x5b, 0xdd, 0x54, + 0x88, 0x1, 0x87, 0xe, 0x96, 0x1f, 0x99, 0x10, 0xb4, 0x3d, 0xbb, 0x32, 0xaa, 0x23, 0xa5, 0x2c, + 0xfd, 0x74, 0xf2, 0x7b, 0xe3, 0x6a, 0xec, 0x65, 0xc1, 0x48, 0xce, 0x47, 0xdf, 0x56, 0xd0, 0x59, + 0x85, 0xc, 0x8a, 0x3, 0x9b, 0x12, 0x94, 0x1d, 0xb9, 0x30, 0xb6, 0x3f, 0xa7, 0x2e, 0xa8, 0x21, + 0xd, 0x84, 0x2, 0x8b, 0x13, 0x9a, 0x1c, 0x95, 0x31, 0xb8, 0x3e, 0xb7, 0x2f, 0xa6, 0x20, 0xa9, + 0x75, 0xfc, 0x7a, 0xf3, 0x6b, 0xe2, 0x64, 0xed, 0x49, 0xc0, 0x46, 0xcf, 0x57, 0xde, 0x58, 0xd1, + 0xe7, 0x6e, 0xe8, 0x61, 0xf9, 0x70, 0xf6, 0x7f, 0xdb, 0x52, 0xd4, 0x5d, 0xc5, 0x4c, 0xca, 0x43, + 0x9f, 0x16, 0x90, 0x19, 0x81, 0x8, 0x8e, 0x7, 0xa3, 0x2a, 0xac, 0x25, 0xbd, 0x34, 0xb2, 0x3b, + 0x17, 0x9e, 0x18, 0x91, 0x9, 0x80, 0x6, 0x8f, 0x2b, 0xa2, 0x24, 0xad, 0x35, 0xbc, 0x3a, 0xb3, + 0x6f, 0xe6, 0x60, 0xe9, 0x71, 0xf8, 0x7e, 0xf7, 0x53, 0xda, 0x5c, 0xd5, 0x4d, 0xc4, 0x42, 0xcb, + 0x1a, 0x93, 0x15, 0x9c, 0x4, 0x8d, 0xb, 0x82, 0x26, 0xaf, 0x29, 0xa0, 0x38, 0xb1, 0x37, 0xbe, + 0x62, 0xeb, 0x6d, 0xe4, 0x7c, 0xf5, 0x73, 0xfa, 0x5e, 0xd7, 0x51, 0xd8, 0x40, 0xc9, 0x4f, 0xc6, + 0xea, 0x63, 0xe5, 0x6c, 0xf4, 0x7d, 0xfb, 0x72, 0xd6, 0x5f, 0xd9, 0x50, 0xc8, 0x41, 0xc7, 0x4e, + 0x92, 0x1b, 0x9d, 0x14, 0x8c, 0x5, 0x83, 0xa, 0xae, 0x27, 0xa1, 0x28, 0xb0, 0x39, 0xbf, 0x36, + ], + [ + 0x0, 0x8a, 0x9, 0x83, 0x12, 0x98, 0x1b, 0x91, 0x24, 0xae, 0x2d, 0xa7, 0x36, 0xbc, 0x3f, 0xb5, + 0x48, 0xc2, 0x41, 0xcb, 0x5a, 0xd0, 0x53, 0xd9, 0x6c, 0xe6, 0x65, 0xef, 0x7e, 0xf4, 0x77, 0xfd, + 0x90, 0x1a, 0x99, 0x13, 0x82, 0x8, 0x8b, 0x1, 0xb4, 0x3e, 0xbd, 0x37, 0xa6, 0x2c, 0xaf, 0x25, + 0xd8, 0x52, 0xd1, 0x5b, 0xca, 0x40, 0xc3, 0x49, 0xfc, 0x76, 0xf5, 0x7f, 0xee, 0x64, 0xe7, 0x6d, + 0x3d, 0xb7, 0x34, 0xbe, 0x2f, 0xa5, 0x26, 0xac, 0x19, 0x93, 0x10, 0x9a, 0xb, 0x81, 0x2, 0x88, + 0x75, 0xff, 0x7c, 0xf6, 0x67, 0xed, 0x6e, 0xe4, 0x51, 0xdb, 0x58, 0xd2, 0x43, 0xc9, 0x4a, 0xc0, + 0xad, 0x27, 0xa4, 0x2e, 0xbf, 0x35, 0xb6, 0x3c, 0x89, 0x3, 0x80, 0xa, 0x9b, 0x11, 0x92, 0x18, + 0xe5, 0x6f, 0xec, 0x66, 0xf7, 0x7d, 0xfe, 0x74, 0xc1, 0x4b, 0xc8, 0x42, 0xd3, 0x59, 0xda, 0x50, + 0x7a, 0xf0, 0x73, 0xf9, 0x68, 0xe2, 0x61, 0xeb, 0x5e, 0xd4, 0x57, 0xdd, 0x4c, 0xc6, 0x45, 0xcf, + 0x32, 0xb8, 0x3b, 0xb1, 0x20, 0xaa, 0x29, 0xa3, 0x16, 0x9c, 0x1f, 0x95, 0x4, 0x8e, 0xd, 0x87, + 0xea, 0x60, 0xe3, 0x69, 0xf8, 0x72, 0xf1, 0x7b, 0xce, 0x44, 0xc7, 0x4d, 0xdc, 0x56, 0xd5, 0x5f, + 0xa2, 0x28, 0xab, 0x21, 0xb0, 0x3a, 0xb9, 0x33, 0x86, 0xc, 0x8f, 0x5, 0x94, 0x1e, 0x9d, 0x17, + 0x47, 0xcd, 0x4e, 0xc4, 0x55, 0xdf, 0x5c, 0xd6, 0x63, 0xe9, 0x6a, 0xe0, 0x71, 0xfb, 0x78, 0xf2, + 0xf, 0x85, 0x6, 0x8c, 0x1d, 0x97, 0x14, 0x9e, 0x2b, 0xa1, 0x22, 0xa8, 0x39, 0xb3, 0x30, 0xba, + 0xd7, 0x5d, 0xde, 0x54, 0xc5, 0x4f, 0xcc, 0x46, 0xf3, 0x79, 0xfa, 0x70, 0xe1, 0x6b, 0xe8, 0x62, + 0x9f, 0x15, 0x96, 0x1c, 0x8d, 0x7, 0x84, 0xe, 0xbb, 0x31, 0xb2, 0x38, 0xa9, 0x23, 0xa0, 0x2a, + ], + [ + 0x0, 0x8b, 0xb, 0x80, 0x16, 0x9d, 0x1d, 0x96, 0x2c, 0xa7, 0x27, 0xac, 0x3a, 0xb1, 0x31, 0xba, + 0x58, 0xd3, 0x53, 0xd8, 0x4e, 0xc5, 0x45, 0xce, 0x74, 0xff, 0x7f, 0xf4, 0x62, 0xe9, 0x69, 0xe2, + 0xb0, 0x3b, 0xbb, 0x30, 0xa6, 0x2d, 0xad, 0x26, 0x9c, 0x17, 0x97, 0x1c, 0x8a, 0x1, 0x81, 0xa, + 0xe8, 0x63, 0xe3, 0x68, 0xfe, 0x75, 0xf5, 0x7e, 0xc4, 0x4f, 0xcf, 0x44, 0xd2, 0x59, 0xd9, 0x52, + 0x7d, 0xf6, 0x76, 0xfd, 0x6b, 0xe0, 0x60, 0xeb, 0x51, 0xda, 0x5a, 0xd1, 0x47, 0xcc, 0x4c, 0xc7, + 0x25, 0xae, 0x2e, 0xa5, 0x33, 0xb8, 0x38, 0xb3, 0x9, 0x82, 0x2, 0x89, 0x1f, 0x94, 0x14, 0x9f, + 0xcd, 0x46, 0xc6, 0x4d, 0xdb, 0x50, 0xd0, 0x5b, 0xe1, 0x6a, 0xea, 0x61, 0xf7, 0x7c, 0xfc, 0x77, + 0x95, 0x1e, 0x9e, 0x15, 0x83, 0x8, 0x88, 0x3, 0xb9, 0x32, 0xb2, 0x39, 0xaf, 0x24, 0xa4, 0x2f, + 0xfa, 0x71, 0xf1, 0x7a, 0xec, 0x67, 0xe7, 0x6c, 0xd6, 0x5d, 0xdd, 0x56, 0xc0, 0x4b, 0xcb, 0x40, + 0xa2, 0x29, 0xa9, 0x22, 0xb4, 0x3f, 0xbf, 0x34, 0x8e, 0x5, 0x85, 0xe, 0x98, 0x13, 0x93, 0x18, + 0x4a, 0xc1, 0x41, 0xca, 0x5c, 0xd7, 0x57, 0xdc, 0x66, 0xed, 0x6d, 0xe6, 0x70, 0xfb, 0x7b, 0xf0, + 0x12, 0x99, 0x19, 0x92, 0x4, 0x8f, 0xf, 0x84, 0x3e, 0xb5, 0x35, 0xbe, 0x28, 0xa3, 0x23, 0xa8, + 0x87, 0xc, 0x8c, 0x7, 0x91, 0x1a, 0x9a, 0x11, 0xab, 0x20, 0xa0, 0x2b, 0xbd, 0x36, 0xb6, 0x3d, + 0xdf, 0x54, 0xd4, 0x5f, 0xc9, 0x42, 0xc2, 0x49, 0xf3, 0x78, 0xf8, 0x73, 0xe5, 0x6e, 0xee, 0x65, + 0x37, 0xbc, 0x3c, 0xb7, 0x21, 0xaa, 0x2a, 0xa1, 0x1b, 0x90, 0x10, 0x9b, 0xd, 0x86, 0x6, 0x8d, + 0x6f, 0xe4, 0x64, 0xef, 0x79, 0xf2, 0x72, 0xf9, 0x43, 0xc8, 0x48, 0xc3, 0x55, 0xde, 0x5e, 0xd5, + ], + [ + 0x0, 0x8c, 0x5, 0x89, 0xa, 0x86, 0xf, 0x83, 0x14, 0x98, 0x11, 0x9d, 0x1e, 0x92, 0x1b, 0x97, + 0x28, 0xa4, 0x2d, 0xa1, 0x22, 0xae, 0x27, 0xab, 0x3c, 0xb0, 0x39, 0xb5, 0x36, 0xba, 0x33, 0xbf, + 0x50, 0xdc, 0x55, 0xd9, 0x5a, 0xd6, 0x5f, 0xd3, 0x44, 0xc8, 0x41, 0xcd, 0x4e, 0xc2, 0x4b, 0xc7, + 0x78, 0xf4, 0x7d, 0xf1, 0x72, 0xfe, 0x77, 0xfb, 0x6c, 0xe0, 0x69, 0xe5, 0x66, 0xea, 0x63, 0xef, + 0xa0, 0x2c, 0xa5, 0x29, 0xaa, 0x26, 0xaf, 0x23, 0xb4, 0x38, 0xb1, 0x3d, 0xbe, 0x32, 0xbb, 0x37, + 0x88, 0x4, 0x8d, 0x1, 0x82, 0xe, 0x87, 0xb, 0x9c, 0x10, 0x99, 0x15, 0x96, 0x1a, 0x93, 0x1f, + 0xf0, 0x7c, 0xf5, 0x79, 0xfa, 0x76, 0xff, 0x73, 0xe4, 0x68, 0xe1, 0x6d, 0xee, 0x62, 0xeb, 0x67, + 0xd8, 0x54, 0xdd, 0x51, 0xd2, 0x5e, 0xd7, 0x5b, 0xcc, 0x40, 0xc9, 0x45, 0xc6, 0x4a, 0xc3, 0x4f, + 0x5d, 0xd1, 0x58, 0xd4, 0x57, 0xdb, 0x52, 0xde, 0x49, 0xc5, 0x4c, 0xc0, 0x43, 0xcf, 0x46, 0xca, + 0x75, 0xf9, 0x70, 0xfc, 0x7f, 0xf3, 0x7a, 0xf6, 0x61, 0xed, 0x64, 0xe8, 0x6b, 0xe7, 0x6e, 0xe2, + 0xd, 0x81, 0x8, 0x84, 0x7, 0x8b, 0x2, 0x8e, 0x19, 0x95, 0x1c, 0x90, 0x13, 0x9f, 0x16, 0x9a, + 0x25, 0xa9, 0x20, 0xac, 0x2f, 0xa3, 0x2a, 0xa6, 0x31, 0xbd, 0x34, 0xb8, 0x3b, 0xb7, 0x3e, 0xb2, + 0xfd, 0x71, 0xf8, 0x74, 0xf7, 0x7b, 0xf2, 0x7e, 0xe9, 0x65, 0xec, 0x60, 0xe3, 0x6f, 0xe6, 0x6a, + 0xd5, 0x59, 0xd0, 0x5c, 0xdf, 0x53, 0xda, 0x56, 0xc1, 0x4d, 0xc4, 0x48, 0xcb, 0x47, 0xce, 0x42, + 0xad, 0x21, 0xa8, 0x24, 0xa7, 0x2b, 0xa2, 0x2e, 0xb9, 0x35, 0xbc, 0x30, 0xb3, 0x3f, 0xb6, 0x3a, + 0x85, 0x9, 0x80, 0xc, 0x8f, 0x3, 0x8a, 0x6, 0x91, 0x1d, 0x94, 0x18, 0x9b, 0x17, 0x9e, 0x12, + ], + [ + 0x0, 0x8d, 0x7, 0x8a, 0xe, 0x83, 0x9, 0x84, 0x1c, 0x91, 0x1b, 0x96, 0x12, 0x9f, 0x15, 0x98, + 0x38, 0xb5, 0x3f, 0xb2, 0x36, 0xbb, 0x31, 0xbc, 0x24, 0xa9, 0x23, 0xae, 0x2a, 0xa7, 0x2d, 0xa0, + 0x70, 0xfd, 0x77, 0xfa, 0x7e, 0xf3, 0x79, 0xf4, 0x6c, 0xe1, 0x6b, 0xe6, 0x62, 0xef, 0x65, 0xe8, + 0x48, 0xc5, 0x4f, 0xc2, 0x46, 0xcb, 0x41, 0xcc, 0x54, 0xd9, 0x53, 0xde, 0x5a, 0xd7, 0x5d, 0xd0, + 0xe0, 0x6d, 0xe7, 0x6a, 0xee, 0x63, 0xe9, 0x64, 0xfc, 0x71, 0xfb, 0x76, 0xf2, 0x7f, 0xf5, 0x78, + 0xd8, 0x55, 0xdf, 0x52, 0xd6, 0x5b, 0xd1, 0x5c, 0xc4, 0x49, 0xc3, 0x4e, 0xca, 0x47, 0xcd, 0x40, + 0x90, 0x1d, 0x97, 0x1a, 0x9e, 0x13, 0x99, 0x14, 0x8c, 0x1, 0x8b, 0x6, 0x82, 0xf, 0x85, 0x8, + 0xa8, 0x25, 0xaf, 0x22, 0xa6, 0x2b, 0xa1, 0x2c, 0xb4, 0x39, 0xb3, 0x3e, 0xba, 0x37, 0xbd, 0x30, + 0xdd, 0x50, 0xda, 0x57, 0xd3, 0x5e, 0xd4, 0x59, 0xc1, 0x4c, 0xc6, 0x4b, 0xcf, 0x42, 0xc8, 0x45, + 0xe5, 0x68, 0xe2, 0x6f, 0xeb, 0x66, 0xec, 0x61, 0xf9, 0x74, 0xfe, 0x73, 0xf7, 0x7a, 0xf0, 0x7d, + 0xad, 0x20, 0xaa, 0x27, 0xa3, 0x2e, 0xa4, 0x29, 0xb1, 0x3c, 0xb6, 0x3b, 0xbf, 0x32, 0xb8, 0x35, + 0x95, 0x18, 0x92, 0x1f, 0x9b, 0x16, 0x9c, 0x11, 0x89, 0x4, 0x8e, 0x3, 0x87, 0xa, 0x80, 0xd, + 0x3d, 0xb0, 0x3a, 0xb7, 0x33, 0xbe, 0x34, 0xb9, 0x21, 0xac, 0x26, 0xab, 0x2f, 0xa2, 0x28, 0xa5, + 0x5, 0x88, 0x2, 0x8f, 0xb, 0x86, 0xc, 0x81, 0x19, 0x94, 0x1e, 0x93, 0x17, 0x9a, 0x10, 0x9d, + 0x4d, 0xc0, 0x4a, 0xc7, 0x43, 0xce, 0x44, 0xc9, 0x51, 0xdc, 0x56, 0xdb, 0x5f, 0xd2, 0x58, 0xd5, + 0x75, 0xf8, 0x72, 0xff, 0x7b, 0xf6, 0x7c, 0xf1, 0x69, 0xe4, 0x6e, 0xe3, 0x67, 0xea, 0x60, 0xed, + ], + [ + 0x0, 0x8e, 0x1, 0x8f, 0x2, 0x8c, 0x3, 0x8d, 0x4, 0x8a, 0x5, 0x8b, 0x6, 0x88, 0x7, 0x89, 0x8, + 0x86, 0x9, 0x87, 0xa, 0x84, 0xb, 0x85, 0xc, 0x82, 0xd, 0x83, 0xe, 0x80, 0xf, 0x81, 0x10, 0x9e, + 0x11, 0x9f, 0x12, 0x9c, 0x13, 0x9d, 0x14, 0x9a, 0x15, 0x9b, 0x16, 0x98, 0x17, 0x99, 0x18, 0x96, + 0x19, 0x97, 0x1a, 0x94, 0x1b, 0x95, 0x1c, 0x92, 0x1d, 0x93, 0x1e, 0x90, 0x1f, 0x91, 0x20, 0xae, + 0x21, 0xaf, 0x22, 0xac, 0x23, 0xad, 0x24, 0xaa, 0x25, 0xab, 0x26, 0xa8, 0x27, 0xa9, 0x28, 0xa6, + 0x29, 0xa7, 0x2a, 0xa4, 0x2b, 0xa5, 0x2c, 0xa2, 0x2d, 0xa3, 0x2e, 0xa0, 0x2f, 0xa1, 0x30, 0xbe, + 0x31, 0xbf, 0x32, 0xbc, 0x33, 0xbd, 0x34, 0xba, 0x35, 0xbb, 0x36, 0xb8, 0x37, 0xb9, 0x38, 0xb6, + 0x39, 0xb7, 0x3a, 0xb4, 0x3b, 0xb5, 0x3c, 0xb2, 0x3d, 0xb3, 0x3e, 0xb0, 0x3f, 0xb1, 0x40, 0xce, + 0x41, 0xcf, 0x42, 0xcc, 0x43, 0xcd, 0x44, 0xca, 0x45, 0xcb, 0x46, 0xc8, 0x47, 0xc9, 0x48, 0xc6, + 0x49, 0xc7, 0x4a, 0xc4, 0x4b, 0xc5, 0x4c, 0xc2, 0x4d, 0xc3, 0x4e, 0xc0, 0x4f, 0xc1, 0x50, 0xde, + 0x51, 0xdf, 0x52, 0xdc, 0x53, 0xdd, 0x54, 0xda, 0x55, 0xdb, 0x56, 0xd8, 0x57, 0xd9, 0x58, 0xd6, + 0x59, 0xd7, 0x5a, 0xd4, 0x5b, 0xd5, 0x5c, 0xd2, 0x5d, 0xd3, 0x5e, 0xd0, 0x5f, 0xd1, 0x60, 0xee, + 0x61, 0xef, 0x62, 0xec, 0x63, 0xed, 0x64, 0xea, 0x65, 0xeb, 0x66, 0xe8, 0x67, 0xe9, 0x68, 0xe6, + 0x69, 0xe7, 0x6a, 0xe4, 0x6b, 0xe5, 0x6c, 0xe2, 0x6d, 0xe3, 0x6e, 0xe0, 0x6f, 0xe1, 0x70, 0xfe, + 0x71, 0xff, 0x72, 0xfc, 0x73, 0xfd, 0x74, 0xfa, 0x75, 0xfb, 0x76, 0xf8, 0x77, 0xf9, 0x78, 0xf6, + 0x79, 0xf7, 0x7a, 0xf4, 0x7b, 0xf5, 0x7c, 0xf2, 0x7d, 0xf3, 0x7e, 0xf0, 0x7f, 0xf1, + ], + [ + 0x0, 0x8f, 0x3, 0x8c, 0x6, 0x89, 0x5, 0x8a, 0xc, 0x83, 0xf, 0x80, 0xa, 0x85, 0x9, 0x86, 0x18, + 0x97, 0x1b, 0x94, 0x1e, 0x91, 0x1d, 0x92, 0x14, 0x9b, 0x17, 0x98, 0x12, 0x9d, 0x11, 0x9e, 0x30, + 0xbf, 0x33, 0xbc, 0x36, 0xb9, 0x35, 0xba, 0x3c, 0xb3, 0x3f, 0xb0, 0x3a, 0xb5, 0x39, 0xb6, 0x28, + 0xa7, 0x2b, 0xa4, 0x2e, 0xa1, 0x2d, 0xa2, 0x24, 0xab, 0x27, 0xa8, 0x22, 0xad, 0x21, 0xae, 0x60, + 0xef, 0x63, 0xec, 0x66, 0xe9, 0x65, 0xea, 0x6c, 0xe3, 0x6f, 0xe0, 0x6a, 0xe5, 0x69, 0xe6, 0x78, + 0xf7, 0x7b, 0xf4, 0x7e, 0xf1, 0x7d, 0xf2, 0x74, 0xfb, 0x77, 0xf8, 0x72, 0xfd, 0x71, 0xfe, 0x50, + 0xdf, 0x53, 0xdc, 0x56, 0xd9, 0x55, 0xda, 0x5c, 0xd3, 0x5f, 0xd0, 0x5a, 0xd5, 0x59, 0xd6, 0x48, + 0xc7, 0x4b, 0xc4, 0x4e, 0xc1, 0x4d, 0xc2, 0x44, 0xcb, 0x47, 0xc8, 0x42, 0xcd, 0x41, 0xce, 0xc0, + 0x4f, 0xc3, 0x4c, 0xc6, 0x49, 0xc5, 0x4a, 0xcc, 0x43, 0xcf, 0x40, 0xca, 0x45, 0xc9, 0x46, 0xd8, + 0x57, 0xdb, 0x54, 0xde, 0x51, 0xdd, 0x52, 0xd4, 0x5b, 0xd7, 0x58, 0xd2, 0x5d, 0xd1, 0x5e, 0xf0, + 0x7f, 0xf3, 0x7c, 0xf6, 0x79, 0xf5, 0x7a, 0xfc, 0x73, 0xff, 0x70, 0xfa, 0x75, 0xf9, 0x76, 0xe8, + 0x67, 0xeb, 0x64, 0xee, 0x61, 0xed, 0x62, 0xe4, 0x6b, 0xe7, 0x68, 0xe2, 0x6d, 0xe1, 0x6e, 0xa0, + 0x2f, 0xa3, 0x2c, 0xa6, 0x29, 0xa5, 0x2a, 0xac, 0x23, 0xaf, 0x20, 0xaa, 0x25, 0xa9, 0x26, 0xb8, + 0x37, 0xbb, 0x34, 0xbe, 0x31, 0xbd, 0x32, 0xb4, 0x3b, 0xb7, 0x38, 0xb2, 0x3d, 0xb1, 0x3e, 0x90, + 0x1f, 0x93, 0x1c, 0x96, 0x19, 0x95, 0x1a, 0x9c, 0x13, 0x9f, 0x10, 0x9a, 0x15, 0x99, 0x16, 0x88, + 0x7, 0x8b, 0x4, 0x8e, 0x1, 0x8d, 0x2, 0x84, 0xb, 0x87, 0x8, 0x82, 0xd, 0x81, 0xe, + ], + [ + 0x0, 0x90, 0x3d, 0xad, 0x7a, 0xea, 0x47, 0xd7, 0xf4, 0x64, 0xc9, 0x59, 0x8e, 0x1e, 0xb3, 0x23, + 0xf5, 0x65, 0xc8, 0x58, 0x8f, 0x1f, 0xb2, 0x22, 0x1, 0x91, 0x3c, 0xac, 0x7b, 0xeb, 0x46, 0xd6, + 0xf7, 0x67, 0xca, 0x5a, 0x8d, 0x1d, 0xb0, 0x20, 0x3, 0x93, 0x3e, 0xae, 0x79, 0xe9, 0x44, 0xd4, + 0x2, 0x92, 0x3f, 0xaf, 0x78, 0xe8, 0x45, 0xd5, 0xf6, 0x66, 0xcb, 0x5b, 0x8c, 0x1c, 0xb1, 0x21, + 0xf3, 0x63, 0xce, 0x5e, 0x89, 0x19, 0xb4, 0x24, 0x7, 0x97, 0x3a, 0xaa, 0x7d, 0xed, 0x40, 0xd0, + 0x6, 0x96, 0x3b, 0xab, 0x7c, 0xec, 0x41, 0xd1, 0xf2, 0x62, 0xcf, 0x5f, 0x88, 0x18, 0xb5, 0x25, + 0x4, 0x94, 0x39, 0xa9, 0x7e, 0xee, 0x43, 0xd3, 0xf0, 0x60, 0xcd, 0x5d, 0x8a, 0x1a, 0xb7, 0x27, + 0xf1, 0x61, 0xcc, 0x5c, 0x8b, 0x1b, 0xb6, 0x26, 0x5, 0x95, 0x38, 0xa8, 0x7f, 0xef, 0x42, 0xd2, + 0xfb, 0x6b, 0xc6, 0x56, 0x81, 0x11, 0xbc, 0x2c, 0xf, 0x9f, 0x32, 0xa2, 0x75, 0xe5, 0x48, 0xd8, + 0xe, 0x9e, 0x33, 0xa3, 0x74, 0xe4, 0x49, 0xd9, 0xfa, 0x6a, 0xc7, 0x57, 0x80, 0x10, 0xbd, 0x2d, + 0xc, 0x9c, 0x31, 0xa1, 0x76, 0xe6, 0x4b, 0xdb, 0xf8, 0x68, 0xc5, 0x55, 0x82, 0x12, 0xbf, 0x2f, + 0xf9, 0x69, 0xc4, 0x54, 0x83, 0x13, 0xbe, 0x2e, 0xd, 0x9d, 0x30, 0xa0, 0x77, 0xe7, 0x4a, 0xda, + 0x8, 0x98, 0x35, 0xa5, 0x72, 0xe2, 0x4f, 0xdf, 0xfc, 0x6c, 0xc1, 0x51, 0x86, 0x16, 0xbb, 0x2b, + 0xfd, 0x6d, 0xc0, 0x50, 0x87, 0x17, 0xba, 0x2a, 0x9, 0x99, 0x34, 0xa4, 0x73, 0xe3, 0x4e, 0xde, + 0xff, 0x6f, 0xc2, 0x52, 0x85, 0x15, 0xb8, 0x28, 0xb, 0x9b, 0x36, 0xa6, 0x71, 0xe1, 0x4c, 0xdc, + 0xa, 0x9a, 0x37, 0xa7, 0x70, 0xe0, 0x4d, 0xdd, 0xfe, 0x6e, 0xc3, 0x53, 0x84, 0x14, 0xb9, 0x29, + ], + [ + 0x0, 0x91, 0x3f, 0xae, 0x7e, 0xef, 0x41, 0xd0, 0xfc, 0x6d, 0xc3, 0x52, 0x82, 0x13, 0xbd, 0x2c, + 0xe5, 0x74, 0xda, 0x4b, 0x9b, 0xa, 0xa4, 0x35, 0x19, 0x88, 0x26, 0xb7, 0x67, 0xf6, 0x58, 0xc9, + 0xd7, 0x46, 0xe8, 0x79, 0xa9, 0x38, 0x96, 0x7, 0x2b, 0xba, 0x14, 0x85, 0x55, 0xc4, 0x6a, 0xfb, + 0x32, 0xa3, 0xd, 0x9c, 0x4c, 0xdd, 0x73, 0xe2, 0xce, 0x5f, 0xf1, 0x60, 0xb0, 0x21, 0x8f, 0x1e, + 0xb3, 0x22, 0x8c, 0x1d, 0xcd, 0x5c, 0xf2, 0x63, 0x4f, 0xde, 0x70, 0xe1, 0x31, 0xa0, 0xe, 0x9f, + 0x56, 0xc7, 0x69, 0xf8, 0x28, 0xb9, 0x17, 0x86, 0xaa, 0x3b, 0x95, 0x4, 0xd4, 0x45, 0xeb, 0x7a, + 0x64, 0xf5, 0x5b, 0xca, 0x1a, 0x8b, 0x25, 0xb4, 0x98, 0x9, 0xa7, 0x36, 0xe6, 0x77, 0xd9, 0x48, + 0x81, 0x10, 0xbe, 0x2f, 0xff, 0x6e, 0xc0, 0x51, 0x7d, 0xec, 0x42, 0xd3, 0x3, 0x92, 0x3c, 0xad, + 0x7b, 0xea, 0x44, 0xd5, 0x5, 0x94, 0x3a, 0xab, 0x87, 0x16, 0xb8, 0x29, 0xf9, 0x68, 0xc6, 0x57, + 0x9e, 0xf, 0xa1, 0x30, 0xe0, 0x71, 0xdf, 0x4e, 0x62, 0xf3, 0x5d, 0xcc, 0x1c, 0x8d, 0x23, 0xb2, + 0xac, 0x3d, 0x93, 0x2, 0xd2, 0x43, 0xed, 0x7c, 0x50, 0xc1, 0x6f, 0xfe, 0x2e, 0xbf, 0x11, 0x80, + 0x49, 0xd8, 0x76, 0xe7, 0x37, 0xa6, 0x8, 0x99, 0xb5, 0x24, 0x8a, 0x1b, 0xcb, 0x5a, 0xf4, 0x65, + 0xc8, 0x59, 0xf7, 0x66, 0xb6, 0x27, 0x89, 0x18, 0x34, 0xa5, 0xb, 0x9a, 0x4a, 0xdb, 0x75, 0xe4, + 0x2d, 0xbc, 0x12, 0x83, 0x53, 0xc2, 0x6c, 0xfd, 0xd1, 0x40, 0xee, 0x7f, 0xaf, 0x3e, 0x90, 0x1, + 0x1f, 0x8e, 0x20, 0xb1, 0x61, 0xf0, 0x5e, 0xcf, 0xe3, 0x72, 0xdc, 0x4d, 0x9d, 0xc, 0xa2, 0x33, + 0xfa, 0x6b, 0xc5, 0x54, 0x84, 0x15, 0xbb, 0x2a, 0x6, 0x97, 0x39, 0xa8, 0x78, 0xe9, 0x47, 0xd6, + ], + [ + 0x0, 0x92, 0x39, 0xab, 0x72, 0xe0, 0x4b, 0xd9, 0xe4, 0x76, 0xdd, 0x4f, 0x96, 0x4, 0xaf, 0x3d, + 0xd5, 0x47, 0xec, 0x7e, 0xa7, 0x35, 0x9e, 0xc, 0x31, 0xa3, 0x8, 0x9a, 0x43, 0xd1, 0x7a, 0xe8, + 0xb7, 0x25, 0x8e, 0x1c, 0xc5, 0x57, 0xfc, 0x6e, 0x53, 0xc1, 0x6a, 0xf8, 0x21, 0xb3, 0x18, 0x8a, + 0x62, 0xf0, 0x5b, 0xc9, 0x10, 0x82, 0x29, 0xbb, 0x86, 0x14, 0xbf, 0x2d, 0xf4, 0x66, 0xcd, 0x5f, + 0x73, 0xe1, 0x4a, 0xd8, 0x1, 0x93, 0x38, 0xaa, 0x97, 0x5, 0xae, 0x3c, 0xe5, 0x77, 0xdc, 0x4e, + 0xa6, 0x34, 0x9f, 0xd, 0xd4, 0x46, 0xed, 0x7f, 0x42, 0xd0, 0x7b, 0xe9, 0x30, 0xa2, 0x9, 0x9b, + 0xc4, 0x56, 0xfd, 0x6f, 0xb6, 0x24, 0x8f, 0x1d, 0x20, 0xb2, 0x19, 0x8b, 0x52, 0xc0, 0x6b, 0xf9, + 0x11, 0x83, 0x28, 0xba, 0x63, 0xf1, 0x5a, 0xc8, 0xf5, 0x67, 0xcc, 0x5e, 0x87, 0x15, 0xbe, 0x2c, + 0xe6, 0x74, 0xdf, 0x4d, 0x94, 0x6, 0xad, 0x3f, 0x2, 0x90, 0x3b, 0xa9, 0x70, 0xe2, 0x49, 0xdb, + 0x33, 0xa1, 0xa, 0x98, 0x41, 0xd3, 0x78, 0xea, 0xd7, 0x45, 0xee, 0x7c, 0xa5, 0x37, 0x9c, 0xe, + 0x51, 0xc3, 0x68, 0xfa, 0x23, 0xb1, 0x1a, 0x88, 0xb5, 0x27, 0x8c, 0x1e, 0xc7, 0x55, 0xfe, 0x6c, + 0x84, 0x16, 0xbd, 0x2f, 0xf6, 0x64, 0xcf, 0x5d, 0x60, 0xf2, 0x59, 0xcb, 0x12, 0x80, 0x2b, 0xb9, + 0x95, 0x7, 0xac, 0x3e, 0xe7, 0x75, 0xde, 0x4c, 0x71, 0xe3, 0x48, 0xda, 0x3, 0x91, 0x3a, 0xa8, + 0x40, 0xd2, 0x79, 0xeb, 0x32, 0xa0, 0xb, 0x99, 0xa4, 0x36, 0x9d, 0xf, 0xd6, 0x44, 0xef, 0x7d, + 0x22, 0xb0, 0x1b, 0x89, 0x50, 0xc2, 0x69, 0xfb, 0xc6, 0x54, 0xff, 0x6d, 0xb4, 0x26, 0x8d, 0x1f, + 0xf7, 0x65, 0xce, 0x5c, 0x85, 0x17, 0xbc, 0x2e, 0x13, 0x81, 0x2a, 0xb8, 0x61, 0xf3, 0x58, 0xca, + ], + [ + 0x0, 0x93, 0x3b, 0xa8, 0x76, 0xe5, 0x4d, 0xde, 0xec, 0x7f, 0xd7, 0x44, 0x9a, 0x9, 0xa1, 0x32, + 0xc5, 0x56, 0xfe, 0x6d, 0xb3, 0x20, 0x88, 0x1b, 0x29, 0xba, 0x12, 0x81, 0x5f, 0xcc, 0x64, 0xf7, + 0x97, 0x4, 0xac, 0x3f, 0xe1, 0x72, 0xda, 0x49, 0x7b, 0xe8, 0x40, 0xd3, 0xd, 0x9e, 0x36, 0xa5, + 0x52, 0xc1, 0x69, 0xfa, 0x24, 0xb7, 0x1f, 0x8c, 0xbe, 0x2d, 0x85, 0x16, 0xc8, 0x5b, 0xf3, 0x60, + 0x33, 0xa0, 0x8, 0x9b, 0x45, 0xd6, 0x7e, 0xed, 0xdf, 0x4c, 0xe4, 0x77, 0xa9, 0x3a, 0x92, 0x1, + 0xf6, 0x65, 0xcd, 0x5e, 0x80, 0x13, 0xbb, 0x28, 0x1a, 0x89, 0x21, 0xb2, 0x6c, 0xff, 0x57, 0xc4, + 0xa4, 0x37, 0x9f, 0xc, 0xd2, 0x41, 0xe9, 0x7a, 0x48, 0xdb, 0x73, 0xe0, 0x3e, 0xad, 0x5, 0x96, + 0x61, 0xf2, 0x5a, 0xc9, 0x17, 0x84, 0x2c, 0xbf, 0x8d, 0x1e, 0xb6, 0x25, 0xfb, 0x68, 0xc0, 0x53, + 0x66, 0xf5, 0x5d, 0xce, 0x10, 0x83, 0x2b, 0xb8, 0x8a, 0x19, 0xb1, 0x22, 0xfc, 0x6f, 0xc7, 0x54, + 0xa3, 0x30, 0x98, 0xb, 0xd5, 0x46, 0xee, 0x7d, 0x4f, 0xdc, 0x74, 0xe7, 0x39, 0xaa, 0x2, 0x91, + 0xf1, 0x62, 0xca, 0x59, 0x87, 0x14, 0xbc, 0x2f, 0x1d, 0x8e, 0x26, 0xb5, 0x6b, 0xf8, 0x50, 0xc3, + 0x34, 0xa7, 0xf, 0x9c, 0x42, 0xd1, 0x79, 0xea, 0xd8, 0x4b, 0xe3, 0x70, 0xae, 0x3d, 0x95, 0x6, + 0x55, 0xc6, 0x6e, 0xfd, 0x23, 0xb0, 0x18, 0x8b, 0xb9, 0x2a, 0x82, 0x11, 0xcf, 0x5c, 0xf4, 0x67, + 0x90, 0x3, 0xab, 0x38, 0xe6, 0x75, 0xdd, 0x4e, 0x7c, 0xef, 0x47, 0xd4, 0xa, 0x99, 0x31, 0xa2, + 0xc2, 0x51, 0xf9, 0x6a, 0xb4, 0x27, 0x8f, 0x1c, 0x2e, 0xbd, 0x15, 0x86, 0x58, 0xcb, 0x63, 0xf0, + 0x7, 0x94, 0x3c, 0xaf, 0x71, 0xe2, 0x4a, 0xd9, 0xeb, 0x78, 0xd0, 0x43, 0x9d, 0xe, 0xa6, 0x35, + ], + [ + 0x0, 0x94, 0x35, 0xa1, 0x6a, 0xfe, 0x5f, 0xcb, 0xd4, 0x40, 0xe1, 0x75, 0xbe, 0x2a, 0x8b, 0x1f, + 0xb5, 0x21, 0x80, 0x14, 0xdf, 0x4b, 0xea, 0x7e, 0x61, 0xf5, 0x54, 0xc0, 0xb, 0x9f, 0x3e, 0xaa, + 0x77, 0xe3, 0x42, 0xd6, 0x1d, 0x89, 0x28, 0xbc, 0xa3, 0x37, 0x96, 0x2, 0xc9, 0x5d, 0xfc, 0x68, + 0xc2, 0x56, 0xf7, 0x63, 0xa8, 0x3c, 0x9d, 0x9, 0x16, 0x82, 0x23, 0xb7, 0x7c, 0xe8, 0x49, 0xdd, + 0xee, 0x7a, 0xdb, 0x4f, 0x84, 0x10, 0xb1, 0x25, 0x3a, 0xae, 0xf, 0x9b, 0x50, 0xc4, 0x65, 0xf1, + 0x5b, 0xcf, 0x6e, 0xfa, 0x31, 0xa5, 0x4, 0x90, 0x8f, 0x1b, 0xba, 0x2e, 0xe5, 0x71, 0xd0, 0x44, + 0x99, 0xd, 0xac, 0x38, 0xf3, 0x67, 0xc6, 0x52, 0x4d, 0xd9, 0x78, 0xec, 0x27, 0xb3, 0x12, 0x86, + 0x2c, 0xb8, 0x19, 0x8d, 0x46, 0xd2, 0x73, 0xe7, 0xf8, 0x6c, 0xcd, 0x59, 0x92, 0x6, 0xa7, 0x33, + 0xc1, 0x55, 0xf4, 0x60, 0xab, 0x3f, 0x9e, 0xa, 0x15, 0x81, 0x20, 0xb4, 0x7f, 0xeb, 0x4a, 0xde, + 0x74, 0xe0, 0x41, 0xd5, 0x1e, 0x8a, 0x2b, 0xbf, 0xa0, 0x34, 0x95, 0x1, 0xca, 0x5e, 0xff, 0x6b, + 0xb6, 0x22, 0x83, 0x17, 0xdc, 0x48, 0xe9, 0x7d, 0x62, 0xf6, 0x57, 0xc3, 0x8, 0x9c, 0x3d, 0xa9, + 0x3, 0x97, 0x36, 0xa2, 0x69, 0xfd, 0x5c, 0xc8, 0xd7, 0x43, 0xe2, 0x76, 0xbd, 0x29, 0x88, 0x1c, + 0x2f, 0xbb, 0x1a, 0x8e, 0x45, 0xd1, 0x70, 0xe4, 0xfb, 0x6f, 0xce, 0x5a, 0x91, 0x5, 0xa4, 0x30, + 0x9a, 0xe, 0xaf, 0x3b, 0xf0, 0x64, 0xc5, 0x51, 0x4e, 0xda, 0x7b, 0xef, 0x24, 0xb0, 0x11, 0x85, + 0x58, 0xcc, 0x6d, 0xf9, 0x32, 0xa6, 0x7, 0x93, 0x8c, 0x18, 0xb9, 0x2d, 0xe6, 0x72, 0xd3, 0x47, + 0xed, 0x79, 0xd8, 0x4c, 0x87, 0x13, 0xb2, 0x26, 0x39, 0xad, 0xc, 0x98, 0x53, 0xc7, 0x66, 0xf2, + ], + [ + 0x0, 0x95, 0x37, 0xa2, 0x6e, 0xfb, 0x59, 0xcc, 0xdc, 0x49, 0xeb, 0x7e, 0xb2, 0x27, 0x85, 0x10, + 0xa5, 0x30, 0x92, 0x7, 0xcb, 0x5e, 0xfc, 0x69, 0x79, 0xec, 0x4e, 0xdb, 0x17, 0x82, 0x20, 0xb5, + 0x57, 0xc2, 0x60, 0xf5, 0x39, 0xac, 0xe, 0x9b, 0x8b, 0x1e, 0xbc, 0x29, 0xe5, 0x70, 0xd2, 0x47, + 0xf2, 0x67, 0xc5, 0x50, 0x9c, 0x9, 0xab, 0x3e, 0x2e, 0xbb, 0x19, 0x8c, 0x40, 0xd5, 0x77, 0xe2, + 0xae, 0x3b, 0x99, 0xc, 0xc0, 0x55, 0xf7, 0x62, 0x72, 0xe7, 0x45, 0xd0, 0x1c, 0x89, 0x2b, 0xbe, + 0xb, 0x9e, 0x3c, 0xa9, 0x65, 0xf0, 0x52, 0xc7, 0xd7, 0x42, 0xe0, 0x75, 0xb9, 0x2c, 0x8e, 0x1b, + 0xf9, 0x6c, 0xce, 0x5b, 0x97, 0x2, 0xa0, 0x35, 0x25, 0xb0, 0x12, 0x87, 0x4b, 0xde, 0x7c, 0xe9, + 0x5c, 0xc9, 0x6b, 0xfe, 0x32, 0xa7, 0x5, 0x90, 0x80, 0x15, 0xb7, 0x22, 0xee, 0x7b, 0xd9, 0x4c, + 0x41, 0xd4, 0x76, 0xe3, 0x2f, 0xba, 0x18, 0x8d, 0x9d, 0x8, 0xaa, 0x3f, 0xf3, 0x66, 0xc4, 0x51, + 0xe4, 0x71, 0xd3, 0x46, 0x8a, 0x1f, 0xbd, 0x28, 0x38, 0xad, 0xf, 0x9a, 0x56, 0xc3, 0x61, 0xf4, + 0x16, 0x83, 0x21, 0xb4, 0x78, 0xed, 0x4f, 0xda, 0xca, 0x5f, 0xfd, 0x68, 0xa4, 0x31, 0x93, 0x6, + 0xb3, 0x26, 0x84, 0x11, 0xdd, 0x48, 0xea, 0x7f, 0x6f, 0xfa, 0x58, 0xcd, 0x1, 0x94, 0x36, 0xa3, + 0xef, 0x7a, 0xd8, 0x4d, 0x81, 0x14, 0xb6, 0x23, 0x33, 0xa6, 0x4, 0x91, 0x5d, 0xc8, 0x6a, 0xff, + 0x4a, 0xdf, 0x7d, 0xe8, 0x24, 0xb1, 0x13, 0x86, 0x96, 0x3, 0xa1, 0x34, 0xf8, 0x6d, 0xcf, 0x5a, + 0xb8, 0x2d, 0x8f, 0x1a, 0xd6, 0x43, 0xe1, 0x74, 0x64, 0xf1, 0x53, 0xc6, 0xa, 0x9f, 0x3d, 0xa8, + 0x1d, 0x88, 0x2a, 0xbf, 0x73, 0xe6, 0x44, 0xd1, 0xc1, 0x54, 0xf6, 0x63, 0xaf, 0x3a, 0x98, 0xd, + ], + [ + 0x0, 0x96, 0x31, 0xa7, 0x62, 0xf4, 0x53, 0xc5, 0xc4, 0x52, 0xf5, 0x63, 0xa6, 0x30, 0x97, 0x1, + 0x95, 0x3, 0xa4, 0x32, 0xf7, 0x61, 0xc6, 0x50, 0x51, 0xc7, 0x60, 0xf6, 0x33, 0xa5, 0x2, 0x94, + 0x37, 0xa1, 0x6, 0x90, 0x55, 0xc3, 0x64, 0xf2, 0xf3, 0x65, 0xc2, 0x54, 0x91, 0x7, 0xa0, 0x36, + 0xa2, 0x34, 0x93, 0x5, 0xc0, 0x56, 0xf1, 0x67, 0x66, 0xf0, 0x57, 0xc1, 0x4, 0x92, 0x35, 0xa3, + 0x6e, 0xf8, 0x5f, 0xc9, 0xc, 0x9a, 0x3d, 0xab, 0xaa, 0x3c, 0x9b, 0xd, 0xc8, 0x5e, 0xf9, 0x6f, + 0xfb, 0x6d, 0xca, 0x5c, 0x99, 0xf, 0xa8, 0x3e, 0x3f, 0xa9, 0xe, 0x98, 0x5d, 0xcb, 0x6c, 0xfa, + 0x59, 0xcf, 0x68, 0xfe, 0x3b, 0xad, 0xa, 0x9c, 0x9d, 0xb, 0xac, 0x3a, 0xff, 0x69, 0xce, 0x58, + 0xcc, 0x5a, 0xfd, 0x6b, 0xae, 0x38, 0x9f, 0x9, 0x8, 0x9e, 0x39, 0xaf, 0x6a, 0xfc, 0x5b, 0xcd, + 0xdc, 0x4a, 0xed, 0x7b, 0xbe, 0x28, 0x8f, 0x19, 0x18, 0x8e, 0x29, 0xbf, 0x7a, 0xec, 0x4b, 0xdd, + 0x49, 0xdf, 0x78, 0xee, 0x2b, 0xbd, 0x1a, 0x8c, 0x8d, 0x1b, 0xbc, 0x2a, 0xef, 0x79, 0xde, 0x48, + 0xeb, 0x7d, 0xda, 0x4c, 0x89, 0x1f, 0xb8, 0x2e, 0x2f, 0xb9, 0x1e, 0x88, 0x4d, 0xdb, 0x7c, 0xea, + 0x7e, 0xe8, 0x4f, 0xd9, 0x1c, 0x8a, 0x2d, 0xbb, 0xba, 0x2c, 0x8b, 0x1d, 0xd8, 0x4e, 0xe9, 0x7f, + 0xb2, 0x24, 0x83, 0x15, 0xd0, 0x46, 0xe1, 0x77, 0x76, 0xe0, 0x47, 0xd1, 0x14, 0x82, 0x25, 0xb3, + 0x27, 0xb1, 0x16, 0x80, 0x45, 0xd3, 0x74, 0xe2, 0xe3, 0x75, 0xd2, 0x44, 0x81, 0x17, 0xb0, 0x26, + 0x85, 0x13, 0xb4, 0x22, 0xe7, 0x71, 0xd6, 0x40, 0x41, 0xd7, 0x70, 0xe6, 0x23, 0xb5, 0x12, 0x84, + 0x10, 0x86, 0x21, 0xb7, 0x72, 0xe4, 0x43, 0xd5, 0xd4, 0x42, 0xe5, 0x73, 0xb6, 0x20, 0x87, 0x11, + ], + [ + 0x0, 0x97, 0x33, 0xa4, 0x66, 0xf1, 0x55, 0xc2, 0xcc, 0x5b, 0xff, 0x68, 0xaa, 0x3d, 0x99, 0xe, + 0x85, 0x12, 0xb6, 0x21, 0xe3, 0x74, 0xd0, 0x47, 0x49, 0xde, 0x7a, 0xed, 0x2f, 0xb8, 0x1c, 0x8b, + 0x17, 0x80, 0x24, 0xb3, 0x71, 0xe6, 0x42, 0xd5, 0xdb, 0x4c, 0xe8, 0x7f, 0xbd, 0x2a, 0x8e, 0x19, + 0x92, 0x5, 0xa1, 0x36, 0xf4, 0x63, 0xc7, 0x50, 0x5e, 0xc9, 0x6d, 0xfa, 0x38, 0xaf, 0xb, 0x9c, + 0x2e, 0xb9, 0x1d, 0x8a, 0x48, 0xdf, 0x7b, 0xec, 0xe2, 0x75, 0xd1, 0x46, 0x84, 0x13, 0xb7, 0x20, + 0xab, 0x3c, 0x98, 0xf, 0xcd, 0x5a, 0xfe, 0x69, 0x67, 0xf0, 0x54, 0xc3, 0x1, 0x96, 0x32, 0xa5, + 0x39, 0xae, 0xa, 0x9d, 0x5f, 0xc8, 0x6c, 0xfb, 0xf5, 0x62, 0xc6, 0x51, 0x93, 0x4, 0xa0, 0x37, + 0xbc, 0x2b, 0x8f, 0x18, 0xda, 0x4d, 0xe9, 0x7e, 0x70, 0xe7, 0x43, 0xd4, 0x16, 0x81, 0x25, 0xb2, + 0x5c, 0xcb, 0x6f, 0xf8, 0x3a, 0xad, 0x9, 0x9e, 0x90, 0x7, 0xa3, 0x34, 0xf6, 0x61, 0xc5, 0x52, + 0xd9, 0x4e, 0xea, 0x7d, 0xbf, 0x28, 0x8c, 0x1b, 0x15, 0x82, 0x26, 0xb1, 0x73, 0xe4, 0x40, 0xd7, + 0x4b, 0xdc, 0x78, 0xef, 0x2d, 0xba, 0x1e, 0x89, 0x87, 0x10, 0xb4, 0x23, 0xe1, 0x76, 0xd2, 0x45, + 0xce, 0x59, 0xfd, 0x6a, 0xa8, 0x3f, 0x9b, 0xc, 0x2, 0x95, 0x31, 0xa6, 0x64, 0xf3, 0x57, 0xc0, + 0x72, 0xe5, 0x41, 0xd6, 0x14, 0x83, 0x27, 0xb0, 0xbe, 0x29, 0x8d, 0x1a, 0xd8, 0x4f, 0xeb, 0x7c, + 0xf7, 0x60, 0xc4, 0x53, 0x91, 0x6, 0xa2, 0x35, 0x3b, 0xac, 0x8, 0x9f, 0x5d, 0xca, 0x6e, 0xf9, + 0x65, 0xf2, 0x56, 0xc1, 0x3, 0x94, 0x30, 0xa7, 0xa9, 0x3e, 0x9a, 0xd, 0xcf, 0x58, 0xfc, 0x6b, + 0xe0, 0x77, 0xd3, 0x44, 0x86, 0x11, 0xb5, 0x22, 0x2c, 0xbb, 0x1f, 0x88, 0x4a, 0xdd, 0x79, 0xee, + ], + [ + 0x0, 0x98, 0x2d, 0xb5, 0x5a, 0xc2, 0x77, 0xef, 0xb4, 0x2c, 0x99, 0x1, 0xee, 0x76, 0xc3, 0x5b, + 0x75, 0xed, 0x58, 0xc0, 0x2f, 0xb7, 0x2, 0x9a, 0xc1, 0x59, 0xec, 0x74, 0x9b, 0x3, 0xb6, 0x2e, + 0xea, 0x72, 0xc7, 0x5f, 0xb0, 0x28, 0x9d, 0x5, 0x5e, 0xc6, 0x73, 0xeb, 0x4, 0x9c, 0x29, 0xb1, + 0x9f, 0x7, 0xb2, 0x2a, 0xc5, 0x5d, 0xe8, 0x70, 0x2b, 0xb3, 0x6, 0x9e, 0x71, 0xe9, 0x5c, 0xc4, + 0xc9, 0x51, 0xe4, 0x7c, 0x93, 0xb, 0xbe, 0x26, 0x7d, 0xe5, 0x50, 0xc8, 0x27, 0xbf, 0xa, 0x92, + 0xbc, 0x24, 0x91, 0x9, 0xe6, 0x7e, 0xcb, 0x53, 0x8, 0x90, 0x25, 0xbd, 0x52, 0xca, 0x7f, 0xe7, + 0x23, 0xbb, 0xe, 0x96, 0x79, 0xe1, 0x54, 0xcc, 0x97, 0xf, 0xba, 0x22, 0xcd, 0x55, 0xe0, 0x78, + 0x56, 0xce, 0x7b, 0xe3, 0xc, 0x94, 0x21, 0xb9, 0xe2, 0x7a, 0xcf, 0x57, 0xb8, 0x20, 0x95, 0xd, + 0x8f, 0x17, 0xa2, 0x3a, 0xd5, 0x4d, 0xf8, 0x60, 0x3b, 0xa3, 0x16, 0x8e, 0x61, 0xf9, 0x4c, 0xd4, + 0xfa, 0x62, 0xd7, 0x4f, 0xa0, 0x38, 0x8d, 0x15, 0x4e, 0xd6, 0x63, 0xfb, 0x14, 0x8c, 0x39, 0xa1, + 0x65, 0xfd, 0x48, 0xd0, 0x3f, 0xa7, 0x12, 0x8a, 0xd1, 0x49, 0xfc, 0x64, 0x8b, 0x13, 0xa6, 0x3e, + 0x10, 0x88, 0x3d, 0xa5, 0x4a, 0xd2, 0x67, 0xff, 0xa4, 0x3c, 0x89, 0x11, 0xfe, 0x66, 0xd3, 0x4b, + 0x46, 0xde, 0x6b, 0xf3, 0x1c, 0x84, 0x31, 0xa9, 0xf2, 0x6a, 0xdf, 0x47, 0xa8, 0x30, 0x85, 0x1d, + 0x33, 0xab, 0x1e, 0x86, 0x69, 0xf1, 0x44, 0xdc, 0x87, 0x1f, 0xaa, 0x32, 0xdd, 0x45, 0xf0, 0x68, + 0xac, 0x34, 0x81, 0x19, 0xf6, 0x6e, 0xdb, 0x43, 0x18, 0x80, 0x35, 0xad, 0x42, 0xda, 0x6f, 0xf7, + 0xd9, 0x41, 0xf4, 0x6c, 0x83, 0x1b, 0xae, 0x36, 0x6d, 0xf5, 0x40, 0xd8, 0x37, 0xaf, 0x1a, 0x82, + ], + [ + 0x0, 0x99, 0x2f, 0xb6, 0x5e, 0xc7, 0x71, 0xe8, 0xbc, 0x25, 0x93, 0xa, 0xe2, 0x7b, 0xcd, 0x54, + 0x65, 0xfc, 0x4a, 0xd3, 0x3b, 0xa2, 0x14, 0x8d, 0xd9, 0x40, 0xf6, 0x6f, 0x87, 0x1e, 0xa8, 0x31, + 0xca, 0x53, 0xe5, 0x7c, 0x94, 0xd, 0xbb, 0x22, 0x76, 0xef, 0x59, 0xc0, 0x28, 0xb1, 0x7, 0x9e, + 0xaf, 0x36, 0x80, 0x19, 0xf1, 0x68, 0xde, 0x47, 0x13, 0x8a, 0x3c, 0xa5, 0x4d, 0xd4, 0x62, 0xfb, + 0x89, 0x10, 0xa6, 0x3f, 0xd7, 0x4e, 0xf8, 0x61, 0x35, 0xac, 0x1a, 0x83, 0x6b, 0xf2, 0x44, 0xdd, + 0xec, 0x75, 0xc3, 0x5a, 0xb2, 0x2b, 0x9d, 0x4, 0x50, 0xc9, 0x7f, 0xe6, 0xe, 0x97, 0x21, 0xb8, + 0x43, 0xda, 0x6c, 0xf5, 0x1d, 0x84, 0x32, 0xab, 0xff, 0x66, 0xd0, 0x49, 0xa1, 0x38, 0x8e, 0x17, + 0x26, 0xbf, 0x9, 0x90, 0x78, 0xe1, 0x57, 0xce, 0x9a, 0x3, 0xb5, 0x2c, 0xc4, 0x5d, 0xeb, 0x72, + 0xf, 0x96, 0x20, 0xb9, 0x51, 0xc8, 0x7e, 0xe7, 0xb3, 0x2a, 0x9c, 0x5, 0xed, 0x74, 0xc2, 0x5b, + 0x6a, 0xf3, 0x45, 0xdc, 0x34, 0xad, 0x1b, 0x82, 0xd6, 0x4f, 0xf9, 0x60, 0x88, 0x11, 0xa7, 0x3e, + 0xc5, 0x5c, 0xea, 0x73, 0x9b, 0x2, 0xb4, 0x2d, 0x79, 0xe0, 0x56, 0xcf, 0x27, 0xbe, 0x8, 0x91, + 0xa0, 0x39, 0x8f, 0x16, 0xfe, 0x67, 0xd1, 0x48, 0x1c, 0x85, 0x33, 0xaa, 0x42, 0xdb, 0x6d, 0xf4, + 0x86, 0x1f, 0xa9, 0x30, 0xd8, 0x41, 0xf7, 0x6e, 0x3a, 0xa3, 0x15, 0x8c, 0x64, 0xfd, 0x4b, 0xd2, + 0xe3, 0x7a, 0xcc, 0x55, 0xbd, 0x24, 0x92, 0xb, 0x5f, 0xc6, 0x70, 0xe9, 0x1, 0x98, 0x2e, 0xb7, + 0x4c, 0xd5, 0x63, 0xfa, 0x12, 0x8b, 0x3d, 0xa4, 0xf0, 0x69, 0xdf, 0x46, 0xae, 0x37, 0x81, 0x18, + 0x29, 0xb0, 0x6, 0x9f, 0x77, 0xee, 0x58, 0xc1, 0x95, 0xc, 0xba, 0x23, 0xcb, 0x52, 0xe4, 0x7d, + ], + [ + 0x0, 0x9a, 0x29, 0xb3, 0x52, 0xc8, 0x7b, 0xe1, 0xa4, 0x3e, 0x8d, 0x17, 0xf6, 0x6c, 0xdf, 0x45, + 0x55, 0xcf, 0x7c, 0xe6, 0x7, 0x9d, 0x2e, 0xb4, 0xf1, 0x6b, 0xd8, 0x42, 0xa3, 0x39, 0x8a, 0x10, + 0xaa, 0x30, 0x83, 0x19, 0xf8, 0x62, 0xd1, 0x4b, 0xe, 0x94, 0x27, 0xbd, 0x5c, 0xc6, 0x75, 0xef, + 0xff, 0x65, 0xd6, 0x4c, 0xad, 0x37, 0x84, 0x1e, 0x5b, 0xc1, 0x72, 0xe8, 0x9, 0x93, 0x20, 0xba, + 0x49, 0xd3, 0x60, 0xfa, 0x1b, 0x81, 0x32, 0xa8, 0xed, 0x77, 0xc4, 0x5e, 0xbf, 0x25, 0x96, 0xc, + 0x1c, 0x86, 0x35, 0xaf, 0x4e, 0xd4, 0x67, 0xfd, 0xb8, 0x22, 0x91, 0xb, 0xea, 0x70, 0xc3, 0x59, + 0xe3, 0x79, 0xca, 0x50, 0xb1, 0x2b, 0x98, 0x2, 0x47, 0xdd, 0x6e, 0xf4, 0x15, 0x8f, 0x3c, 0xa6, + 0xb6, 0x2c, 0x9f, 0x5, 0xe4, 0x7e, 0xcd, 0x57, 0x12, 0x88, 0x3b, 0xa1, 0x40, 0xda, 0x69, 0xf3, + 0x92, 0x8, 0xbb, 0x21, 0xc0, 0x5a, 0xe9, 0x73, 0x36, 0xac, 0x1f, 0x85, 0x64, 0xfe, 0x4d, 0xd7, + 0xc7, 0x5d, 0xee, 0x74, 0x95, 0xf, 0xbc, 0x26, 0x63, 0xf9, 0x4a, 0xd0, 0x31, 0xab, 0x18, 0x82, + 0x38, 0xa2, 0x11, 0x8b, 0x6a, 0xf0, 0x43, 0xd9, 0x9c, 0x6, 0xb5, 0x2f, 0xce, 0x54, 0xe7, 0x7d, + 0x6d, 0xf7, 0x44, 0xde, 0x3f, 0xa5, 0x16, 0x8c, 0xc9, 0x53, 0xe0, 0x7a, 0x9b, 0x1, 0xb2, 0x28, + 0xdb, 0x41, 0xf2, 0x68, 0x89, 0x13, 0xa0, 0x3a, 0x7f, 0xe5, 0x56, 0xcc, 0x2d, 0xb7, 0x4, 0x9e, + 0x8e, 0x14, 0xa7, 0x3d, 0xdc, 0x46, 0xf5, 0x6f, 0x2a, 0xb0, 0x3, 0x99, 0x78, 0xe2, 0x51, 0xcb, + 0x71, 0xeb, 0x58, 0xc2, 0x23, 0xb9, 0xa, 0x90, 0xd5, 0x4f, 0xfc, 0x66, 0x87, 0x1d, 0xae, 0x34, + 0x24, 0xbe, 0xd, 0x97, 0x76, 0xec, 0x5f, 0xc5, 0x80, 0x1a, 0xa9, 0x33, 0xd2, 0x48, 0xfb, 0x61, + ], + [ + 0x0, 0x9b, 0x2b, 0xb0, 0x56, 0xcd, 0x7d, 0xe6, 0xac, 0x37, 0x87, 0x1c, 0xfa, 0x61, 0xd1, 0x4a, + 0x45, 0xde, 0x6e, 0xf5, 0x13, 0x88, 0x38, 0xa3, 0xe9, 0x72, 0xc2, 0x59, 0xbf, 0x24, 0x94, 0xf, + 0x8a, 0x11, 0xa1, 0x3a, 0xdc, 0x47, 0xf7, 0x6c, 0x26, 0xbd, 0xd, 0x96, 0x70, 0xeb, 0x5b, 0xc0, + 0xcf, 0x54, 0xe4, 0x7f, 0x99, 0x2, 0xb2, 0x29, 0x63, 0xf8, 0x48, 0xd3, 0x35, 0xae, 0x1e, 0x85, + 0x9, 0x92, 0x22, 0xb9, 0x5f, 0xc4, 0x74, 0xef, 0xa5, 0x3e, 0x8e, 0x15, 0xf3, 0x68, 0xd8, 0x43, + 0x4c, 0xd7, 0x67, 0xfc, 0x1a, 0x81, 0x31, 0xaa, 0xe0, 0x7b, 0xcb, 0x50, 0xb6, 0x2d, 0x9d, 0x6, + 0x83, 0x18, 0xa8, 0x33, 0xd5, 0x4e, 0xfe, 0x65, 0x2f, 0xb4, 0x4, 0x9f, 0x79, 0xe2, 0x52, 0xc9, + 0xc6, 0x5d, 0xed, 0x76, 0x90, 0xb, 0xbb, 0x20, 0x6a, 0xf1, 0x41, 0xda, 0x3c, 0xa7, 0x17, 0x8c, + 0x12, 0x89, 0x39, 0xa2, 0x44, 0xdf, 0x6f, 0xf4, 0xbe, 0x25, 0x95, 0xe, 0xe8, 0x73, 0xc3, 0x58, + 0x57, 0xcc, 0x7c, 0xe7, 0x1, 0x9a, 0x2a, 0xb1, 0xfb, 0x60, 0xd0, 0x4b, 0xad, 0x36, 0x86, 0x1d, + 0x98, 0x3, 0xb3, 0x28, 0xce, 0x55, 0xe5, 0x7e, 0x34, 0xaf, 0x1f, 0x84, 0x62, 0xf9, 0x49, 0xd2, + 0xdd, 0x46, 0xf6, 0x6d, 0x8b, 0x10, 0xa0, 0x3b, 0x71, 0xea, 0x5a, 0xc1, 0x27, 0xbc, 0xc, 0x97, + 0x1b, 0x80, 0x30, 0xab, 0x4d, 0xd6, 0x66, 0xfd, 0xb7, 0x2c, 0x9c, 0x7, 0xe1, 0x7a, 0xca, 0x51, + 0x5e, 0xc5, 0x75, 0xee, 0x8, 0x93, 0x23, 0xb8, 0xf2, 0x69, 0xd9, 0x42, 0xa4, 0x3f, 0x8f, 0x14, + 0x91, 0xa, 0xba, 0x21, 0xc7, 0x5c, 0xec, 0x77, 0x3d, 0xa6, 0x16, 0x8d, 0x6b, 0xf0, 0x40, 0xdb, + 0xd4, 0x4f, 0xff, 0x64, 0x82, 0x19, 0xa9, 0x32, 0x78, 0xe3, 0x53, 0xc8, 0x2e, 0xb5, 0x5, 0x9e, + ], + [ + 0x0, 0x9c, 0x25, 0xb9, 0x4a, 0xd6, 0x6f, 0xf3, 0x94, 0x8, 0xb1, 0x2d, 0xde, 0x42, 0xfb, 0x67, + 0x35, 0xa9, 0x10, 0x8c, 0x7f, 0xe3, 0x5a, 0xc6, 0xa1, 0x3d, 0x84, 0x18, 0xeb, 0x77, 0xce, 0x52, + 0x6a, 0xf6, 0x4f, 0xd3, 0x20, 0xbc, 0x5, 0x99, 0xfe, 0x62, 0xdb, 0x47, 0xb4, 0x28, 0x91, 0xd, + 0x5f, 0xc3, 0x7a, 0xe6, 0x15, 0x89, 0x30, 0xac, 0xcb, 0x57, 0xee, 0x72, 0x81, 0x1d, 0xa4, 0x38, + 0xd4, 0x48, 0xf1, 0x6d, 0x9e, 0x2, 0xbb, 0x27, 0x40, 0xdc, 0x65, 0xf9, 0xa, 0x96, 0x2f, 0xb3, + 0xe1, 0x7d, 0xc4, 0x58, 0xab, 0x37, 0x8e, 0x12, 0x75, 0xe9, 0x50, 0xcc, 0x3f, 0xa3, 0x1a, 0x86, + 0xbe, 0x22, 0x9b, 0x7, 0xf4, 0x68, 0xd1, 0x4d, 0x2a, 0xb6, 0xf, 0x93, 0x60, 0xfc, 0x45, 0xd9, + 0x8b, 0x17, 0xae, 0x32, 0xc1, 0x5d, 0xe4, 0x78, 0x1f, 0x83, 0x3a, 0xa6, 0x55, 0xc9, 0x70, 0xec, + 0xb5, 0x29, 0x90, 0xc, 0xff, 0x63, 0xda, 0x46, 0x21, 0xbd, 0x4, 0x98, 0x6b, 0xf7, 0x4e, 0xd2, + 0x80, 0x1c, 0xa5, 0x39, 0xca, 0x56, 0xef, 0x73, 0x14, 0x88, 0x31, 0xad, 0x5e, 0xc2, 0x7b, 0xe7, + 0xdf, 0x43, 0xfa, 0x66, 0x95, 0x9, 0xb0, 0x2c, 0x4b, 0xd7, 0x6e, 0xf2, 0x1, 0x9d, 0x24, 0xb8, + 0xea, 0x76, 0xcf, 0x53, 0xa0, 0x3c, 0x85, 0x19, 0x7e, 0xe2, 0x5b, 0xc7, 0x34, 0xa8, 0x11, 0x8d, + 0x61, 0xfd, 0x44, 0xd8, 0x2b, 0xb7, 0xe, 0x92, 0xf5, 0x69, 0xd0, 0x4c, 0xbf, 0x23, 0x9a, 0x6, + 0x54, 0xc8, 0x71, 0xed, 0x1e, 0x82, 0x3b, 0xa7, 0xc0, 0x5c, 0xe5, 0x79, 0x8a, 0x16, 0xaf, 0x33, + 0xb, 0x97, 0x2e, 0xb2, 0x41, 0xdd, 0x64, 0xf8, 0x9f, 0x3, 0xba, 0x26, 0xd5, 0x49, 0xf0, 0x6c, + 0x3e, 0xa2, 0x1b, 0x87, 0x74, 0xe8, 0x51, 0xcd, 0xaa, 0x36, 0x8f, 0x13, 0xe0, 0x7c, 0xc5, 0x59, + ], + [ + 0x0, 0x9d, 0x27, 0xba, 0x4e, 0xd3, 0x69, 0xf4, 0x9c, 0x1, 0xbb, 0x26, 0xd2, 0x4f, 0xf5, 0x68, + 0x25, 0xb8, 0x2, 0x9f, 0x6b, 0xf6, 0x4c, 0xd1, 0xb9, 0x24, 0x9e, 0x3, 0xf7, 0x6a, 0xd0, 0x4d, + 0x4a, 0xd7, 0x6d, 0xf0, 0x4, 0x99, 0x23, 0xbe, 0xd6, 0x4b, 0xf1, 0x6c, 0x98, 0x5, 0xbf, 0x22, + 0x6f, 0xf2, 0x48, 0xd5, 0x21, 0xbc, 0x6, 0x9b, 0xf3, 0x6e, 0xd4, 0x49, 0xbd, 0x20, 0x9a, 0x7, + 0x94, 0x9, 0xb3, 0x2e, 0xda, 0x47, 0xfd, 0x60, 0x8, 0x95, 0x2f, 0xb2, 0x46, 0xdb, 0x61, 0xfc, + 0xb1, 0x2c, 0x96, 0xb, 0xff, 0x62, 0xd8, 0x45, 0x2d, 0xb0, 0xa, 0x97, 0x63, 0xfe, 0x44, 0xd9, + 0xde, 0x43, 0xf9, 0x64, 0x90, 0xd, 0xb7, 0x2a, 0x42, 0xdf, 0x65, 0xf8, 0xc, 0x91, 0x2b, 0xb6, + 0xfb, 0x66, 0xdc, 0x41, 0xb5, 0x28, 0x92, 0xf, 0x67, 0xfa, 0x40, 0xdd, 0x29, 0xb4, 0xe, 0x93, + 0x35, 0xa8, 0x12, 0x8f, 0x7b, 0xe6, 0x5c, 0xc1, 0xa9, 0x34, 0x8e, 0x13, 0xe7, 0x7a, 0xc0, 0x5d, + 0x10, 0x8d, 0x37, 0xaa, 0x5e, 0xc3, 0x79, 0xe4, 0x8c, 0x11, 0xab, 0x36, 0xc2, 0x5f, 0xe5, 0x78, + 0x7f, 0xe2, 0x58, 0xc5, 0x31, 0xac, 0x16, 0x8b, 0xe3, 0x7e, 0xc4, 0x59, 0xad, 0x30, 0x8a, 0x17, + 0x5a, 0xc7, 0x7d, 0xe0, 0x14, 0x89, 0x33, 0xae, 0xc6, 0x5b, 0xe1, 0x7c, 0x88, 0x15, 0xaf, 0x32, + 0xa1, 0x3c, 0x86, 0x1b, 0xef, 0x72, 0xc8, 0x55, 0x3d, 0xa0, 0x1a, 0x87, 0x73, 0xee, 0x54, 0xc9, + 0x84, 0x19, 0xa3, 0x3e, 0xca, 0x57, 0xed, 0x70, 0x18, 0x85, 0x3f, 0xa2, 0x56, 0xcb, 0x71, 0xec, + 0xeb, 0x76, 0xcc, 0x51, 0xa5, 0x38, 0x82, 0x1f, 0x77, 0xea, 0x50, 0xcd, 0x39, 0xa4, 0x1e, 0x83, + 0xce, 0x53, 0xe9, 0x74, 0x80, 0x1d, 0xa7, 0x3a, 0x52, 0xcf, 0x75, 0xe8, 0x1c, 0x81, 0x3b, 0xa6, + ], + [ + 0x0, 0x9e, 0x21, 0xbf, 0x42, 0xdc, 0x63, 0xfd, 0x84, 0x1a, 0xa5, 0x3b, 0xc6, 0x58, 0xe7, 0x79, + 0x15, 0x8b, 0x34, 0xaa, 0x57, 0xc9, 0x76, 0xe8, 0x91, 0xf, 0xb0, 0x2e, 0xd3, 0x4d, 0xf2, 0x6c, + 0x2a, 0xb4, 0xb, 0x95, 0x68, 0xf6, 0x49, 0xd7, 0xae, 0x30, 0x8f, 0x11, 0xec, 0x72, 0xcd, 0x53, + 0x3f, 0xa1, 0x1e, 0x80, 0x7d, 0xe3, 0x5c, 0xc2, 0xbb, 0x25, 0x9a, 0x4, 0xf9, 0x67, 0xd8, 0x46, + 0x54, 0xca, 0x75, 0xeb, 0x16, 0x88, 0x37, 0xa9, 0xd0, 0x4e, 0xf1, 0x6f, 0x92, 0xc, 0xb3, 0x2d, + 0x41, 0xdf, 0x60, 0xfe, 0x3, 0x9d, 0x22, 0xbc, 0xc5, 0x5b, 0xe4, 0x7a, 0x87, 0x19, 0xa6, 0x38, + 0x7e, 0xe0, 0x5f, 0xc1, 0x3c, 0xa2, 0x1d, 0x83, 0xfa, 0x64, 0xdb, 0x45, 0xb8, 0x26, 0x99, 0x7, + 0x6b, 0xf5, 0x4a, 0xd4, 0x29, 0xb7, 0x8, 0x96, 0xef, 0x71, 0xce, 0x50, 0xad, 0x33, 0x8c, 0x12, + 0xa8, 0x36, 0x89, 0x17, 0xea, 0x74, 0xcb, 0x55, 0x2c, 0xb2, 0xd, 0x93, 0x6e, 0xf0, 0x4f, 0xd1, + 0xbd, 0x23, 0x9c, 0x2, 0xff, 0x61, 0xde, 0x40, 0x39, 0xa7, 0x18, 0x86, 0x7b, 0xe5, 0x5a, 0xc4, + 0x82, 0x1c, 0xa3, 0x3d, 0xc0, 0x5e, 0xe1, 0x7f, 0x6, 0x98, 0x27, 0xb9, 0x44, 0xda, 0x65, 0xfb, + 0x97, 0x9, 0xb6, 0x28, 0xd5, 0x4b, 0xf4, 0x6a, 0x13, 0x8d, 0x32, 0xac, 0x51, 0xcf, 0x70, 0xee, + 0xfc, 0x62, 0xdd, 0x43, 0xbe, 0x20, 0x9f, 0x1, 0x78, 0xe6, 0x59, 0xc7, 0x3a, 0xa4, 0x1b, 0x85, + 0xe9, 0x77, 0xc8, 0x56, 0xab, 0x35, 0x8a, 0x14, 0x6d, 0xf3, 0x4c, 0xd2, 0x2f, 0xb1, 0xe, 0x90, + 0xd6, 0x48, 0xf7, 0x69, 0x94, 0xa, 0xb5, 0x2b, 0x52, 0xcc, 0x73, 0xed, 0x10, 0x8e, 0x31, 0xaf, + 0xc3, 0x5d, 0xe2, 0x7c, 0x81, 0x1f, 0xa0, 0x3e, 0x47, 0xd9, 0x66, 0xf8, 0x5, 0x9b, 0x24, 0xba, + ], + [ + 0x0, 0x9f, 0x23, 0xbc, 0x46, 0xd9, 0x65, 0xfa, 0x8c, 0x13, 0xaf, 0x30, 0xca, 0x55, 0xe9, 0x76, + 0x5, 0x9a, 0x26, 0xb9, 0x43, 0xdc, 0x60, 0xff, 0x89, 0x16, 0xaa, 0x35, 0xcf, 0x50, 0xec, 0x73, + 0xa, 0x95, 0x29, 0xb6, 0x4c, 0xd3, 0x6f, 0xf0, 0x86, 0x19, 0xa5, 0x3a, 0xc0, 0x5f, 0xe3, 0x7c, + 0xf, 0x90, 0x2c, 0xb3, 0x49, 0xd6, 0x6a, 0xf5, 0x83, 0x1c, 0xa0, 0x3f, 0xc5, 0x5a, 0xe6, 0x79, + 0x14, 0x8b, 0x37, 0xa8, 0x52, 0xcd, 0x71, 0xee, 0x98, 0x7, 0xbb, 0x24, 0xde, 0x41, 0xfd, 0x62, + 0x11, 0x8e, 0x32, 0xad, 0x57, 0xc8, 0x74, 0xeb, 0x9d, 0x2, 0xbe, 0x21, 0xdb, 0x44, 0xf8, 0x67, + 0x1e, 0x81, 0x3d, 0xa2, 0x58, 0xc7, 0x7b, 0xe4, 0x92, 0xd, 0xb1, 0x2e, 0xd4, 0x4b, 0xf7, 0x68, + 0x1b, 0x84, 0x38, 0xa7, 0x5d, 0xc2, 0x7e, 0xe1, 0x97, 0x8, 0xb4, 0x2b, 0xd1, 0x4e, 0xf2, 0x6d, + 0x28, 0xb7, 0xb, 0x94, 0x6e, 0xf1, 0x4d, 0xd2, 0xa4, 0x3b, 0x87, 0x18, 0xe2, 0x7d, 0xc1, 0x5e, + 0x2d, 0xb2, 0xe, 0x91, 0x6b, 0xf4, 0x48, 0xd7, 0xa1, 0x3e, 0x82, 0x1d, 0xe7, 0x78, 0xc4, 0x5b, + 0x22, 0xbd, 0x1, 0x9e, 0x64, 0xfb, 0x47, 0xd8, 0xae, 0x31, 0x8d, 0x12, 0xe8, 0x77, 0xcb, 0x54, + 0x27, 0xb8, 0x4, 0x9b, 0x61, 0xfe, 0x42, 0xdd, 0xab, 0x34, 0x88, 0x17, 0xed, 0x72, 0xce, 0x51, + 0x3c, 0xa3, 0x1f, 0x80, 0x7a, 0xe5, 0x59, 0xc6, 0xb0, 0x2f, 0x93, 0xc, 0xf6, 0x69, 0xd5, 0x4a, + 0x39, 0xa6, 0x1a, 0x85, 0x7f, 0xe0, 0x5c, 0xc3, 0xb5, 0x2a, 0x96, 0x9, 0xf3, 0x6c, 0xd0, 0x4f, + 0x36, 0xa9, 0x15, 0x8a, 0x70, 0xef, 0x53, 0xcc, 0xba, 0x25, 0x99, 0x6, 0xfc, 0x63, 0xdf, 0x40, + 0x33, 0xac, 0x10, 0x8f, 0x75, 0xea, 0x56, 0xc9, 0xbf, 0x20, 0x9c, 0x3, 0xf9, 0x66, 0xda, 0x45, + ], + [ + 0x0, 0xa0, 0x5d, 0xfd, 0xba, 0x1a, 0xe7, 0x47, 0x69, 0xc9, 0x34, 0x94, 0xd3, 0x73, 0x8e, 0x2e, + 0xd2, 0x72, 0x8f, 0x2f, 0x68, 0xc8, 0x35, 0x95, 0xbb, 0x1b, 0xe6, 0x46, 0x1, 0xa1, 0x5c, 0xfc, + 0xb9, 0x19, 0xe4, 0x44, 0x3, 0xa3, 0x5e, 0xfe, 0xd0, 0x70, 0x8d, 0x2d, 0x6a, 0xca, 0x37, 0x97, + 0x6b, 0xcb, 0x36, 0x96, 0xd1, 0x71, 0x8c, 0x2c, 0x2, 0xa2, 0x5f, 0xff, 0xb8, 0x18, 0xe5, 0x45, + 0x6f, 0xcf, 0x32, 0x92, 0xd5, 0x75, 0x88, 0x28, 0x6, 0xa6, 0x5b, 0xfb, 0xbc, 0x1c, 0xe1, 0x41, + 0xbd, 0x1d, 0xe0, 0x40, 0x7, 0xa7, 0x5a, 0xfa, 0xd4, 0x74, 0x89, 0x29, 0x6e, 0xce, 0x33, 0x93, + 0xd6, 0x76, 0x8b, 0x2b, 0x6c, 0xcc, 0x31, 0x91, 0xbf, 0x1f, 0xe2, 0x42, 0x5, 0xa5, 0x58, 0xf8, + 0x4, 0xa4, 0x59, 0xf9, 0xbe, 0x1e, 0xe3, 0x43, 0x6d, 0xcd, 0x30, 0x90, 0xd7, 0x77, 0x8a, 0x2a, + 0xde, 0x7e, 0x83, 0x23, 0x64, 0xc4, 0x39, 0x99, 0xb7, 0x17, 0xea, 0x4a, 0xd, 0xad, 0x50, 0xf0, + 0xc, 0xac, 0x51, 0xf1, 0xb6, 0x16, 0xeb, 0x4b, 0x65, 0xc5, 0x38, 0x98, 0xdf, 0x7f, 0x82, 0x22, + 0x67, 0xc7, 0x3a, 0x9a, 0xdd, 0x7d, 0x80, 0x20, 0xe, 0xae, 0x53, 0xf3, 0xb4, 0x14, 0xe9, 0x49, + 0xb5, 0x15, 0xe8, 0x48, 0xf, 0xaf, 0x52, 0xf2, 0xdc, 0x7c, 0x81, 0x21, 0x66, 0xc6, 0x3b, 0x9b, + 0xb1, 0x11, 0xec, 0x4c, 0xb, 0xab, 0x56, 0xf6, 0xd8, 0x78, 0x85, 0x25, 0x62, 0xc2, 0x3f, 0x9f, + 0x63, 0xc3, 0x3e, 0x9e, 0xd9, 0x79, 0x84, 0x24, 0xa, 0xaa, 0x57, 0xf7, 0xb0, 0x10, 0xed, 0x4d, + 0x8, 0xa8, 0x55, 0xf5, 0xb2, 0x12, 0xef, 0x4f, 0x61, 0xc1, 0x3c, 0x9c, 0xdb, 0x7b, 0x86, 0x26, + 0xda, 0x7a, 0x87, 0x27, 0x60, 0xc0, 0x3d, 0x9d, 0xb3, 0x13, 0xee, 0x4e, 0x9, 0xa9, 0x54, 0xf4, + ], + [ + 0x0, 0xa1, 0x5f, 0xfe, 0xbe, 0x1f, 0xe1, 0x40, 0x61, 0xc0, 0x3e, 0x9f, 0xdf, 0x7e, 0x80, 0x21, + 0xc2, 0x63, 0x9d, 0x3c, 0x7c, 0xdd, 0x23, 0x82, 0xa3, 0x2, 0xfc, 0x5d, 0x1d, 0xbc, 0x42, 0xe3, + 0x99, 0x38, 0xc6, 0x67, 0x27, 0x86, 0x78, 0xd9, 0xf8, 0x59, 0xa7, 0x6, 0x46, 0xe7, 0x19, 0xb8, + 0x5b, 0xfa, 0x4, 0xa5, 0xe5, 0x44, 0xba, 0x1b, 0x3a, 0x9b, 0x65, 0xc4, 0x84, 0x25, 0xdb, 0x7a, + 0x2f, 0x8e, 0x70, 0xd1, 0x91, 0x30, 0xce, 0x6f, 0x4e, 0xef, 0x11, 0xb0, 0xf0, 0x51, 0xaf, 0xe, + 0xed, 0x4c, 0xb2, 0x13, 0x53, 0xf2, 0xc, 0xad, 0x8c, 0x2d, 0xd3, 0x72, 0x32, 0x93, 0x6d, 0xcc, + 0xb6, 0x17, 0xe9, 0x48, 0x8, 0xa9, 0x57, 0xf6, 0xd7, 0x76, 0x88, 0x29, 0x69, 0xc8, 0x36, 0x97, + 0x74, 0xd5, 0x2b, 0x8a, 0xca, 0x6b, 0x95, 0x34, 0x15, 0xb4, 0x4a, 0xeb, 0xab, 0xa, 0xf4, 0x55, + 0x5e, 0xff, 0x1, 0xa0, 0xe0, 0x41, 0xbf, 0x1e, 0x3f, 0x9e, 0x60, 0xc1, 0x81, 0x20, 0xde, 0x7f, + 0x9c, 0x3d, 0xc3, 0x62, 0x22, 0x83, 0x7d, 0xdc, 0xfd, 0x5c, 0xa2, 0x3, 0x43, 0xe2, 0x1c, 0xbd, + 0xc7, 0x66, 0x98, 0x39, 0x79, 0xd8, 0x26, 0x87, 0xa6, 0x7, 0xf9, 0x58, 0x18, 0xb9, 0x47, 0xe6, + 0x5, 0xa4, 0x5a, 0xfb, 0xbb, 0x1a, 0xe4, 0x45, 0x64, 0xc5, 0x3b, 0x9a, 0xda, 0x7b, 0x85, 0x24, + 0x71, 0xd0, 0x2e, 0x8f, 0xcf, 0x6e, 0x90, 0x31, 0x10, 0xb1, 0x4f, 0xee, 0xae, 0xf, 0xf1, 0x50, + 0xb3, 0x12, 0xec, 0x4d, 0xd, 0xac, 0x52, 0xf3, 0xd2, 0x73, 0x8d, 0x2c, 0x6c, 0xcd, 0x33, 0x92, + 0xe8, 0x49, 0xb7, 0x16, 0x56, 0xf7, 0x9, 0xa8, 0x89, 0x28, 0xd6, 0x77, 0x37, 0x96, 0x68, 0xc9, + 0x2a, 0x8b, 0x75, 0xd4, 0x94, 0x35, 0xcb, 0x6a, 0x4b, 0xea, 0x14, 0xb5, 0xf5, 0x54, 0xaa, 0xb, + ], + [ + 0x0, 0xa2, 0x59, 0xfb, 0xb2, 0x10, 0xeb, 0x49, 0x79, 0xdb, 0x20, 0x82, 0xcb, 0x69, 0x92, 0x30, + 0xf2, 0x50, 0xab, 0x9, 0x40, 0xe2, 0x19, 0xbb, 0x8b, 0x29, 0xd2, 0x70, 0x39, 0x9b, 0x60, 0xc2, + 0xf9, 0x5b, 0xa0, 0x2, 0x4b, 0xe9, 0x12, 0xb0, 0x80, 0x22, 0xd9, 0x7b, 0x32, 0x90, 0x6b, 0xc9, + 0xb, 0xa9, 0x52, 0xf0, 0xb9, 0x1b, 0xe0, 0x42, 0x72, 0xd0, 0x2b, 0x89, 0xc0, 0x62, 0x99, 0x3b, + 0xef, 0x4d, 0xb6, 0x14, 0x5d, 0xff, 0x4, 0xa6, 0x96, 0x34, 0xcf, 0x6d, 0x24, 0x86, 0x7d, 0xdf, + 0x1d, 0xbf, 0x44, 0xe6, 0xaf, 0xd, 0xf6, 0x54, 0x64, 0xc6, 0x3d, 0x9f, 0xd6, 0x74, 0x8f, 0x2d, + 0x16, 0xb4, 0x4f, 0xed, 0xa4, 0x6, 0xfd, 0x5f, 0x6f, 0xcd, 0x36, 0x94, 0xdd, 0x7f, 0x84, 0x26, + 0xe4, 0x46, 0xbd, 0x1f, 0x56, 0xf4, 0xf, 0xad, 0x9d, 0x3f, 0xc4, 0x66, 0x2f, 0x8d, 0x76, 0xd4, + 0xc3, 0x61, 0x9a, 0x38, 0x71, 0xd3, 0x28, 0x8a, 0xba, 0x18, 0xe3, 0x41, 0x8, 0xaa, 0x51, 0xf3, + 0x31, 0x93, 0x68, 0xca, 0x83, 0x21, 0xda, 0x78, 0x48, 0xea, 0x11, 0xb3, 0xfa, 0x58, 0xa3, 0x1, + 0x3a, 0x98, 0x63, 0xc1, 0x88, 0x2a, 0xd1, 0x73, 0x43, 0xe1, 0x1a, 0xb8, 0xf1, 0x53, 0xa8, 0xa, + 0xc8, 0x6a, 0x91, 0x33, 0x7a, 0xd8, 0x23, 0x81, 0xb1, 0x13, 0xe8, 0x4a, 0x3, 0xa1, 0x5a, 0xf8, + 0x2c, 0x8e, 0x75, 0xd7, 0x9e, 0x3c, 0xc7, 0x65, 0x55, 0xf7, 0xc, 0xae, 0xe7, 0x45, 0xbe, 0x1c, + 0xde, 0x7c, 0x87, 0x25, 0x6c, 0xce, 0x35, 0x97, 0xa7, 0x5, 0xfe, 0x5c, 0x15, 0xb7, 0x4c, 0xee, + 0xd5, 0x77, 0x8c, 0x2e, 0x67, 0xc5, 0x3e, 0x9c, 0xac, 0xe, 0xf5, 0x57, 0x1e, 0xbc, 0x47, 0xe5, + 0x27, 0x85, 0x7e, 0xdc, 0x95, 0x37, 0xcc, 0x6e, 0x5e, 0xfc, 0x7, 0xa5, 0xec, 0x4e, 0xb5, 0x17, + ], + [ + 0x0, 0xa3, 0x5b, 0xf8, 0xb6, 0x15, 0xed, 0x4e, 0x71, 0xd2, 0x2a, 0x89, 0xc7, 0x64, 0x9c, 0x3f, + 0xe2, 0x41, 0xb9, 0x1a, 0x54, 0xf7, 0xf, 0xac, 0x93, 0x30, 0xc8, 0x6b, 0x25, 0x86, 0x7e, 0xdd, + 0xd9, 0x7a, 0x82, 0x21, 0x6f, 0xcc, 0x34, 0x97, 0xa8, 0xb, 0xf3, 0x50, 0x1e, 0xbd, 0x45, 0xe6, + 0x3b, 0x98, 0x60, 0xc3, 0x8d, 0x2e, 0xd6, 0x75, 0x4a, 0xe9, 0x11, 0xb2, 0xfc, 0x5f, 0xa7, 0x4, + 0xaf, 0xc, 0xf4, 0x57, 0x19, 0xba, 0x42, 0xe1, 0xde, 0x7d, 0x85, 0x26, 0x68, 0xcb, 0x33, 0x90, + 0x4d, 0xee, 0x16, 0xb5, 0xfb, 0x58, 0xa0, 0x3, 0x3c, 0x9f, 0x67, 0xc4, 0x8a, 0x29, 0xd1, 0x72, + 0x76, 0xd5, 0x2d, 0x8e, 0xc0, 0x63, 0x9b, 0x38, 0x7, 0xa4, 0x5c, 0xff, 0xb1, 0x12, 0xea, 0x49, + 0x94, 0x37, 0xcf, 0x6c, 0x22, 0x81, 0x79, 0xda, 0xe5, 0x46, 0xbe, 0x1d, 0x53, 0xf0, 0x8, 0xab, + 0x43, 0xe0, 0x18, 0xbb, 0xf5, 0x56, 0xae, 0xd, 0x32, 0x91, 0x69, 0xca, 0x84, 0x27, 0xdf, 0x7c, + 0xa1, 0x2, 0xfa, 0x59, 0x17, 0xb4, 0x4c, 0xef, 0xd0, 0x73, 0x8b, 0x28, 0x66, 0xc5, 0x3d, 0x9e, + 0x9a, 0x39, 0xc1, 0x62, 0x2c, 0x8f, 0x77, 0xd4, 0xeb, 0x48, 0xb0, 0x13, 0x5d, 0xfe, 0x6, 0xa5, + 0x78, 0xdb, 0x23, 0x80, 0xce, 0x6d, 0x95, 0x36, 0x9, 0xaa, 0x52, 0xf1, 0xbf, 0x1c, 0xe4, 0x47, + 0xec, 0x4f, 0xb7, 0x14, 0x5a, 0xf9, 0x1, 0xa2, 0x9d, 0x3e, 0xc6, 0x65, 0x2b, 0x88, 0x70, 0xd3, + 0xe, 0xad, 0x55, 0xf6, 0xb8, 0x1b, 0xe3, 0x40, 0x7f, 0xdc, 0x24, 0x87, 0xc9, 0x6a, 0x92, 0x31, + 0x35, 0x96, 0x6e, 0xcd, 0x83, 0x20, 0xd8, 0x7b, 0x44, 0xe7, 0x1f, 0xbc, 0xf2, 0x51, 0xa9, 0xa, + 0xd7, 0x74, 0x8c, 0x2f, 0x61, 0xc2, 0x3a, 0x99, 0xa6, 0x5, 0xfd, 0x5e, 0x10, 0xb3, 0x4b, 0xe8, + ], + [ + 0x0, 0xa4, 0x55, 0xf1, 0xaa, 0xe, 0xff, 0x5b, 0x49, 0xed, 0x1c, 0xb8, 0xe3, 0x47, 0xb6, 0x12, + 0x92, 0x36, 0xc7, 0x63, 0x38, 0x9c, 0x6d, 0xc9, 0xdb, 0x7f, 0x8e, 0x2a, 0x71, 0xd5, 0x24, 0x80, + 0x39, 0x9d, 0x6c, 0xc8, 0x93, 0x37, 0xc6, 0x62, 0x70, 0xd4, 0x25, 0x81, 0xda, 0x7e, 0x8f, 0x2b, + 0xab, 0xf, 0xfe, 0x5a, 0x1, 0xa5, 0x54, 0xf0, 0xe2, 0x46, 0xb7, 0x13, 0x48, 0xec, 0x1d, 0xb9, + 0x72, 0xd6, 0x27, 0x83, 0xd8, 0x7c, 0x8d, 0x29, 0x3b, 0x9f, 0x6e, 0xca, 0x91, 0x35, 0xc4, 0x60, + 0xe0, 0x44, 0xb5, 0x11, 0x4a, 0xee, 0x1f, 0xbb, 0xa9, 0xd, 0xfc, 0x58, 0x3, 0xa7, 0x56, 0xf2, + 0x4b, 0xef, 0x1e, 0xba, 0xe1, 0x45, 0xb4, 0x10, 0x2, 0xa6, 0x57, 0xf3, 0xa8, 0xc, 0xfd, 0x59, + 0xd9, 0x7d, 0x8c, 0x28, 0x73, 0xd7, 0x26, 0x82, 0x90, 0x34, 0xc5, 0x61, 0x3a, 0x9e, 0x6f, 0xcb, + 0xe4, 0x40, 0xb1, 0x15, 0x4e, 0xea, 0x1b, 0xbf, 0xad, 0x9, 0xf8, 0x5c, 0x7, 0xa3, 0x52, 0xf6, + 0x76, 0xd2, 0x23, 0x87, 0xdc, 0x78, 0x89, 0x2d, 0x3f, 0x9b, 0x6a, 0xce, 0x95, 0x31, 0xc0, 0x64, + 0xdd, 0x79, 0x88, 0x2c, 0x77, 0xd3, 0x22, 0x86, 0x94, 0x30, 0xc1, 0x65, 0x3e, 0x9a, 0x6b, 0xcf, + 0x4f, 0xeb, 0x1a, 0xbe, 0xe5, 0x41, 0xb0, 0x14, 0x6, 0xa2, 0x53, 0xf7, 0xac, 0x8, 0xf9, 0x5d, + 0x96, 0x32, 0xc3, 0x67, 0x3c, 0x98, 0x69, 0xcd, 0xdf, 0x7b, 0x8a, 0x2e, 0x75, 0xd1, 0x20, 0x84, + 0x4, 0xa0, 0x51, 0xf5, 0xae, 0xa, 0xfb, 0x5f, 0x4d, 0xe9, 0x18, 0xbc, 0xe7, 0x43, 0xb2, 0x16, + 0xaf, 0xb, 0xfa, 0x5e, 0x5, 0xa1, 0x50, 0xf4, 0xe6, 0x42, 0xb3, 0x17, 0x4c, 0xe8, 0x19, 0xbd, + 0x3d, 0x99, 0x68, 0xcc, 0x97, 0x33, 0xc2, 0x66, 0x74, 0xd0, 0x21, 0x85, 0xde, 0x7a, 0x8b, 0x2f, + ], + [ + 0x0, 0xa5, 0x57, 0xf2, 0xae, 0xb, 0xf9, 0x5c, 0x41, 0xe4, 0x16, 0xb3, 0xef, 0x4a, 0xb8, 0x1d, + 0x82, 0x27, 0xd5, 0x70, 0x2c, 0x89, 0x7b, 0xde, 0xc3, 0x66, 0x94, 0x31, 0x6d, 0xc8, 0x3a, 0x9f, + 0x19, 0xbc, 0x4e, 0xeb, 0xb7, 0x12, 0xe0, 0x45, 0x58, 0xfd, 0xf, 0xaa, 0xf6, 0x53, 0xa1, 0x4, + 0x9b, 0x3e, 0xcc, 0x69, 0x35, 0x90, 0x62, 0xc7, 0xda, 0x7f, 0x8d, 0x28, 0x74, 0xd1, 0x23, 0x86, + 0x32, 0x97, 0x65, 0xc0, 0x9c, 0x39, 0xcb, 0x6e, 0x73, 0xd6, 0x24, 0x81, 0xdd, 0x78, 0x8a, 0x2f, + 0xb0, 0x15, 0xe7, 0x42, 0x1e, 0xbb, 0x49, 0xec, 0xf1, 0x54, 0xa6, 0x3, 0x5f, 0xfa, 0x8, 0xad, + 0x2b, 0x8e, 0x7c, 0xd9, 0x85, 0x20, 0xd2, 0x77, 0x6a, 0xcf, 0x3d, 0x98, 0xc4, 0x61, 0x93, 0x36, + 0xa9, 0xc, 0xfe, 0x5b, 0x7, 0xa2, 0x50, 0xf5, 0xe8, 0x4d, 0xbf, 0x1a, 0x46, 0xe3, 0x11, 0xb4, + 0x64, 0xc1, 0x33, 0x96, 0xca, 0x6f, 0x9d, 0x38, 0x25, 0x80, 0x72, 0xd7, 0x8b, 0x2e, 0xdc, 0x79, + 0xe6, 0x43, 0xb1, 0x14, 0x48, 0xed, 0x1f, 0xba, 0xa7, 0x2, 0xf0, 0x55, 0x9, 0xac, 0x5e, 0xfb, + 0x7d, 0xd8, 0x2a, 0x8f, 0xd3, 0x76, 0x84, 0x21, 0x3c, 0x99, 0x6b, 0xce, 0x92, 0x37, 0xc5, 0x60, + 0xff, 0x5a, 0xa8, 0xd, 0x51, 0xf4, 0x6, 0xa3, 0xbe, 0x1b, 0xe9, 0x4c, 0x10, 0xb5, 0x47, 0xe2, + 0x56, 0xf3, 0x1, 0xa4, 0xf8, 0x5d, 0xaf, 0xa, 0x17, 0xb2, 0x40, 0xe5, 0xb9, 0x1c, 0xee, 0x4b, + 0xd4, 0x71, 0x83, 0x26, 0x7a, 0xdf, 0x2d, 0x88, 0x95, 0x30, 0xc2, 0x67, 0x3b, 0x9e, 0x6c, 0xc9, + 0x4f, 0xea, 0x18, 0xbd, 0xe1, 0x44, 0xb6, 0x13, 0xe, 0xab, 0x59, 0xfc, 0xa0, 0x5, 0xf7, 0x52, + 0xcd, 0x68, 0x9a, 0x3f, 0x63, 0xc6, 0x34, 0x91, 0x8c, 0x29, 0xdb, 0x7e, 0x22, 0x87, 0x75, 0xd0, + ], + [ + 0x0, 0xa6, 0x51, 0xf7, 0xa2, 0x4, 0xf3, 0x55, 0x59, 0xff, 0x8, 0xae, 0xfb, 0x5d, 0xaa, 0xc, + 0xb2, 0x14, 0xe3, 0x45, 0x10, 0xb6, 0x41, 0xe7, 0xeb, 0x4d, 0xba, 0x1c, 0x49, 0xef, 0x18, 0xbe, + 0x79, 0xdf, 0x28, 0x8e, 0xdb, 0x7d, 0x8a, 0x2c, 0x20, 0x86, 0x71, 0xd7, 0x82, 0x24, 0xd3, 0x75, + 0xcb, 0x6d, 0x9a, 0x3c, 0x69, 0xcf, 0x38, 0x9e, 0x92, 0x34, 0xc3, 0x65, 0x30, 0x96, 0x61, 0xc7, + 0xf2, 0x54, 0xa3, 0x5, 0x50, 0xf6, 0x1, 0xa7, 0xab, 0xd, 0xfa, 0x5c, 0x9, 0xaf, 0x58, 0xfe, + 0x40, 0xe6, 0x11, 0xb7, 0xe2, 0x44, 0xb3, 0x15, 0x19, 0xbf, 0x48, 0xee, 0xbb, 0x1d, 0xea, 0x4c, + 0x8b, 0x2d, 0xda, 0x7c, 0x29, 0x8f, 0x78, 0xde, 0xd2, 0x74, 0x83, 0x25, 0x70, 0xd6, 0x21, 0x87, + 0x39, 0x9f, 0x68, 0xce, 0x9b, 0x3d, 0xca, 0x6c, 0x60, 0xc6, 0x31, 0x97, 0xc2, 0x64, 0x93, 0x35, + 0xf9, 0x5f, 0xa8, 0xe, 0x5b, 0xfd, 0xa, 0xac, 0xa0, 0x6, 0xf1, 0x57, 0x2, 0xa4, 0x53, 0xf5, + 0x4b, 0xed, 0x1a, 0xbc, 0xe9, 0x4f, 0xb8, 0x1e, 0x12, 0xb4, 0x43, 0xe5, 0xb0, 0x16, 0xe1, 0x47, + 0x80, 0x26, 0xd1, 0x77, 0x22, 0x84, 0x73, 0xd5, 0xd9, 0x7f, 0x88, 0x2e, 0x7b, 0xdd, 0x2a, 0x8c, + 0x32, 0x94, 0x63, 0xc5, 0x90, 0x36, 0xc1, 0x67, 0x6b, 0xcd, 0x3a, 0x9c, 0xc9, 0x6f, 0x98, 0x3e, + 0xb, 0xad, 0x5a, 0xfc, 0xa9, 0xf, 0xf8, 0x5e, 0x52, 0xf4, 0x3, 0xa5, 0xf0, 0x56, 0xa1, 0x7, + 0xb9, 0x1f, 0xe8, 0x4e, 0x1b, 0xbd, 0x4a, 0xec, 0xe0, 0x46, 0xb1, 0x17, 0x42, 0xe4, 0x13, 0xb5, + 0x72, 0xd4, 0x23, 0x85, 0xd0, 0x76, 0x81, 0x27, 0x2b, 0x8d, 0x7a, 0xdc, 0x89, 0x2f, 0xd8, 0x7e, + 0xc0, 0x66, 0x91, 0x37, 0x62, 0xc4, 0x33, 0x95, 0x99, 0x3f, 0xc8, 0x6e, 0x3b, 0x9d, 0x6a, 0xcc, + ], + [ + 0x0, 0xa7, 0x53, 0xf4, 0xa6, 0x1, 0xf5, 0x52, 0x51, 0xf6, 0x2, 0xa5, 0xf7, 0x50, 0xa4, 0x3, + 0xa2, 0x5, 0xf1, 0x56, 0x4, 0xa3, 0x57, 0xf0, 0xf3, 0x54, 0xa0, 0x7, 0x55, 0xf2, 0x6, 0xa1, + 0x59, 0xfe, 0xa, 0xad, 0xff, 0x58, 0xac, 0xb, 0x8, 0xaf, 0x5b, 0xfc, 0xae, 0x9, 0xfd, 0x5a, + 0xfb, 0x5c, 0xa8, 0xf, 0x5d, 0xfa, 0xe, 0xa9, 0xaa, 0xd, 0xf9, 0x5e, 0xc, 0xab, 0x5f, 0xf8, + 0xb2, 0x15, 0xe1, 0x46, 0x14, 0xb3, 0x47, 0xe0, 0xe3, 0x44, 0xb0, 0x17, 0x45, 0xe2, 0x16, 0xb1, + 0x10, 0xb7, 0x43, 0xe4, 0xb6, 0x11, 0xe5, 0x42, 0x41, 0xe6, 0x12, 0xb5, 0xe7, 0x40, 0xb4, 0x13, + 0xeb, 0x4c, 0xb8, 0x1f, 0x4d, 0xea, 0x1e, 0xb9, 0xba, 0x1d, 0xe9, 0x4e, 0x1c, 0xbb, 0x4f, 0xe8, + 0x49, 0xee, 0x1a, 0xbd, 0xef, 0x48, 0xbc, 0x1b, 0x18, 0xbf, 0x4b, 0xec, 0xbe, 0x19, 0xed, 0x4a, + 0x79, 0xde, 0x2a, 0x8d, 0xdf, 0x78, 0x8c, 0x2b, 0x28, 0x8f, 0x7b, 0xdc, 0x8e, 0x29, 0xdd, 0x7a, + 0xdb, 0x7c, 0x88, 0x2f, 0x7d, 0xda, 0x2e, 0x89, 0x8a, 0x2d, 0xd9, 0x7e, 0x2c, 0x8b, 0x7f, 0xd8, + 0x20, 0x87, 0x73, 0xd4, 0x86, 0x21, 0xd5, 0x72, 0x71, 0xd6, 0x22, 0x85, 0xd7, 0x70, 0x84, 0x23, + 0x82, 0x25, 0xd1, 0x76, 0x24, 0x83, 0x77, 0xd0, 0xd3, 0x74, 0x80, 0x27, 0x75, 0xd2, 0x26, 0x81, + 0xcb, 0x6c, 0x98, 0x3f, 0x6d, 0xca, 0x3e, 0x99, 0x9a, 0x3d, 0xc9, 0x6e, 0x3c, 0x9b, 0x6f, 0xc8, + 0x69, 0xce, 0x3a, 0x9d, 0xcf, 0x68, 0x9c, 0x3b, 0x38, 0x9f, 0x6b, 0xcc, 0x9e, 0x39, 0xcd, 0x6a, + 0x92, 0x35, 0xc1, 0x66, 0x34, 0x93, 0x67, 0xc0, 0xc3, 0x64, 0x90, 0x37, 0x65, 0xc2, 0x36, 0x91, + 0x30, 0x97, 0x63, 0xc4, 0x96, 0x31, 0xc5, 0x62, 0x61, 0xc6, 0x32, 0x95, 0xc7, 0x60, 0x94, 0x33, + ], + [ + 0x0, 0xa8, 0x4d, 0xe5, 0x9a, 0x32, 0xd7, 0x7f, 0x29, 0x81, 0x64, 0xcc, 0xb3, 0x1b, 0xfe, 0x56, + 0x52, 0xfa, 0x1f, 0xb7, 0xc8, 0x60, 0x85, 0x2d, 0x7b, 0xd3, 0x36, 0x9e, 0xe1, 0x49, 0xac, 0x4, + 0xa4, 0xc, 0xe9, 0x41, 0x3e, 0x96, 0x73, 0xdb, 0x8d, 0x25, 0xc0, 0x68, 0x17, 0xbf, 0x5a, 0xf2, + 0xf6, 0x5e, 0xbb, 0x13, 0x6c, 0xc4, 0x21, 0x89, 0xdf, 0x77, 0x92, 0x3a, 0x45, 0xed, 0x8, 0xa0, + 0x55, 0xfd, 0x18, 0xb0, 0xcf, 0x67, 0x82, 0x2a, 0x7c, 0xd4, 0x31, 0x99, 0xe6, 0x4e, 0xab, 0x3, + 0x7, 0xaf, 0x4a, 0xe2, 0x9d, 0x35, 0xd0, 0x78, 0x2e, 0x86, 0x63, 0xcb, 0xb4, 0x1c, 0xf9, 0x51, + 0xf1, 0x59, 0xbc, 0x14, 0x6b, 0xc3, 0x26, 0x8e, 0xd8, 0x70, 0x95, 0x3d, 0x42, 0xea, 0xf, 0xa7, + 0xa3, 0xb, 0xee, 0x46, 0x39, 0x91, 0x74, 0xdc, 0x8a, 0x22, 0xc7, 0x6f, 0x10, 0xb8, 0x5d, 0xf5, + 0xaa, 0x2, 0xe7, 0x4f, 0x30, 0x98, 0x7d, 0xd5, 0x83, 0x2b, 0xce, 0x66, 0x19, 0xb1, 0x54, 0xfc, + 0xf8, 0x50, 0xb5, 0x1d, 0x62, 0xca, 0x2f, 0x87, 0xd1, 0x79, 0x9c, 0x34, 0x4b, 0xe3, 0x6, 0xae, + 0xe, 0xa6, 0x43, 0xeb, 0x94, 0x3c, 0xd9, 0x71, 0x27, 0x8f, 0x6a, 0xc2, 0xbd, 0x15, 0xf0, 0x58, + 0x5c, 0xf4, 0x11, 0xb9, 0xc6, 0x6e, 0x8b, 0x23, 0x75, 0xdd, 0x38, 0x90, 0xef, 0x47, 0xa2, 0xa, + 0xff, 0x57, 0xb2, 0x1a, 0x65, 0xcd, 0x28, 0x80, 0xd6, 0x7e, 0x9b, 0x33, 0x4c, 0xe4, 0x1, 0xa9, + 0xad, 0x5, 0xe0, 0x48, 0x37, 0x9f, 0x7a, 0xd2, 0x84, 0x2c, 0xc9, 0x61, 0x1e, 0xb6, 0x53, 0xfb, + 0x5b, 0xf3, 0x16, 0xbe, 0xc1, 0x69, 0x8c, 0x24, 0x72, 0xda, 0x3f, 0x97, 0xe8, 0x40, 0xa5, 0xd, + 0x9, 0xa1, 0x44, 0xec, 0x93, 0x3b, 0xde, 0x76, 0x20, 0x88, 0x6d, 0xc5, 0xba, 0x12, 0xf7, 0x5f, + ], + [ + 0x0, 0xa9, 0x4f, 0xe6, 0x9e, 0x37, 0xd1, 0x78, 0x21, 0x88, 0x6e, 0xc7, 0xbf, 0x16, 0xf0, 0x59, + 0x42, 0xeb, 0xd, 0xa4, 0xdc, 0x75, 0x93, 0x3a, 0x63, 0xca, 0x2c, 0x85, 0xfd, 0x54, 0xb2, 0x1b, + 0x84, 0x2d, 0xcb, 0x62, 0x1a, 0xb3, 0x55, 0xfc, 0xa5, 0xc, 0xea, 0x43, 0x3b, 0x92, 0x74, 0xdd, + 0xc6, 0x6f, 0x89, 0x20, 0x58, 0xf1, 0x17, 0xbe, 0xe7, 0x4e, 0xa8, 0x1, 0x79, 0xd0, 0x36, 0x9f, + 0x15, 0xbc, 0x5a, 0xf3, 0x8b, 0x22, 0xc4, 0x6d, 0x34, 0x9d, 0x7b, 0xd2, 0xaa, 0x3, 0xe5, 0x4c, + 0x57, 0xfe, 0x18, 0xb1, 0xc9, 0x60, 0x86, 0x2f, 0x76, 0xdf, 0x39, 0x90, 0xe8, 0x41, 0xa7, 0xe, + 0x91, 0x38, 0xde, 0x77, 0xf, 0xa6, 0x40, 0xe9, 0xb0, 0x19, 0xff, 0x56, 0x2e, 0x87, 0x61, 0xc8, + 0xd3, 0x7a, 0x9c, 0x35, 0x4d, 0xe4, 0x2, 0xab, 0xf2, 0x5b, 0xbd, 0x14, 0x6c, 0xc5, 0x23, 0x8a, + 0x2a, 0x83, 0x65, 0xcc, 0xb4, 0x1d, 0xfb, 0x52, 0xb, 0xa2, 0x44, 0xed, 0x95, 0x3c, 0xda, 0x73, + 0x68, 0xc1, 0x27, 0x8e, 0xf6, 0x5f, 0xb9, 0x10, 0x49, 0xe0, 0x6, 0xaf, 0xd7, 0x7e, 0x98, 0x31, + 0xae, 0x7, 0xe1, 0x48, 0x30, 0x99, 0x7f, 0xd6, 0x8f, 0x26, 0xc0, 0x69, 0x11, 0xb8, 0x5e, 0xf7, + 0xec, 0x45, 0xa3, 0xa, 0x72, 0xdb, 0x3d, 0x94, 0xcd, 0x64, 0x82, 0x2b, 0x53, 0xfa, 0x1c, 0xb5, + 0x3f, 0x96, 0x70, 0xd9, 0xa1, 0x8, 0xee, 0x47, 0x1e, 0xb7, 0x51, 0xf8, 0x80, 0x29, 0xcf, 0x66, + 0x7d, 0xd4, 0x32, 0x9b, 0xe3, 0x4a, 0xac, 0x5, 0x5c, 0xf5, 0x13, 0xba, 0xc2, 0x6b, 0x8d, 0x24, + 0xbb, 0x12, 0xf4, 0x5d, 0x25, 0x8c, 0x6a, 0xc3, 0x9a, 0x33, 0xd5, 0x7c, 0x4, 0xad, 0x4b, 0xe2, + 0xf9, 0x50, 0xb6, 0x1f, 0x67, 0xce, 0x28, 0x81, 0xd8, 0x71, 0x97, 0x3e, 0x46, 0xef, 0x9, 0xa0, + ], + [ + 0x0, 0xaa, 0x49, 0xe3, 0x92, 0x38, 0xdb, 0x71, 0x39, 0x93, 0x70, 0xda, 0xab, 0x1, 0xe2, 0x48, + 0x72, 0xd8, 0x3b, 0x91, 0xe0, 0x4a, 0xa9, 0x3, 0x4b, 0xe1, 0x2, 0xa8, 0xd9, 0x73, 0x90, 0x3a, + 0xe4, 0x4e, 0xad, 0x7, 0x76, 0xdc, 0x3f, 0x95, 0xdd, 0x77, 0x94, 0x3e, 0x4f, 0xe5, 0x6, 0xac, + 0x96, 0x3c, 0xdf, 0x75, 0x4, 0xae, 0x4d, 0xe7, 0xaf, 0x5, 0xe6, 0x4c, 0x3d, 0x97, 0x74, 0xde, + 0xd5, 0x7f, 0x9c, 0x36, 0x47, 0xed, 0xe, 0xa4, 0xec, 0x46, 0xa5, 0xf, 0x7e, 0xd4, 0x37, 0x9d, + 0xa7, 0xd, 0xee, 0x44, 0x35, 0x9f, 0x7c, 0xd6, 0x9e, 0x34, 0xd7, 0x7d, 0xc, 0xa6, 0x45, 0xef, + 0x31, 0x9b, 0x78, 0xd2, 0xa3, 0x9, 0xea, 0x40, 0x8, 0xa2, 0x41, 0xeb, 0x9a, 0x30, 0xd3, 0x79, + 0x43, 0xe9, 0xa, 0xa0, 0xd1, 0x7b, 0x98, 0x32, 0x7a, 0xd0, 0x33, 0x99, 0xe8, 0x42, 0xa1, 0xb, + 0xb7, 0x1d, 0xfe, 0x54, 0x25, 0x8f, 0x6c, 0xc6, 0x8e, 0x24, 0xc7, 0x6d, 0x1c, 0xb6, 0x55, 0xff, + 0xc5, 0x6f, 0x8c, 0x26, 0x57, 0xfd, 0x1e, 0xb4, 0xfc, 0x56, 0xb5, 0x1f, 0x6e, 0xc4, 0x27, 0x8d, + 0x53, 0xf9, 0x1a, 0xb0, 0xc1, 0x6b, 0x88, 0x22, 0x6a, 0xc0, 0x23, 0x89, 0xf8, 0x52, 0xb1, 0x1b, + 0x21, 0x8b, 0x68, 0xc2, 0xb3, 0x19, 0xfa, 0x50, 0x18, 0xb2, 0x51, 0xfb, 0x8a, 0x20, 0xc3, 0x69, + 0x62, 0xc8, 0x2b, 0x81, 0xf0, 0x5a, 0xb9, 0x13, 0x5b, 0xf1, 0x12, 0xb8, 0xc9, 0x63, 0x80, 0x2a, + 0x10, 0xba, 0x59, 0xf3, 0x82, 0x28, 0xcb, 0x61, 0x29, 0x83, 0x60, 0xca, 0xbb, 0x11, 0xf2, 0x58, + 0x86, 0x2c, 0xcf, 0x65, 0x14, 0xbe, 0x5d, 0xf7, 0xbf, 0x15, 0xf6, 0x5c, 0x2d, 0x87, 0x64, 0xce, + 0xf4, 0x5e, 0xbd, 0x17, 0x66, 0xcc, 0x2f, 0x85, 0xcd, 0x67, 0x84, 0x2e, 0x5f, 0xf5, 0x16, 0xbc, + ], + [ + 0x0, 0xab, 0x4b, 0xe0, 0x96, 0x3d, 0xdd, 0x76, 0x31, 0x9a, 0x7a, 0xd1, 0xa7, 0xc, 0xec, 0x47, + 0x62, 0xc9, 0x29, 0x82, 0xf4, 0x5f, 0xbf, 0x14, 0x53, 0xf8, 0x18, 0xb3, 0xc5, 0x6e, 0x8e, 0x25, + 0xc4, 0x6f, 0x8f, 0x24, 0x52, 0xf9, 0x19, 0xb2, 0xf5, 0x5e, 0xbe, 0x15, 0x63, 0xc8, 0x28, 0x83, + 0xa6, 0xd, 0xed, 0x46, 0x30, 0x9b, 0x7b, 0xd0, 0x97, 0x3c, 0xdc, 0x77, 0x1, 0xaa, 0x4a, 0xe1, + 0x95, 0x3e, 0xde, 0x75, 0x3, 0xa8, 0x48, 0xe3, 0xa4, 0xf, 0xef, 0x44, 0x32, 0x99, 0x79, 0xd2, + 0xf7, 0x5c, 0xbc, 0x17, 0x61, 0xca, 0x2a, 0x81, 0xc6, 0x6d, 0x8d, 0x26, 0x50, 0xfb, 0x1b, 0xb0, + 0x51, 0xfa, 0x1a, 0xb1, 0xc7, 0x6c, 0x8c, 0x27, 0x60, 0xcb, 0x2b, 0x80, 0xf6, 0x5d, 0xbd, 0x16, + 0x33, 0x98, 0x78, 0xd3, 0xa5, 0xe, 0xee, 0x45, 0x2, 0xa9, 0x49, 0xe2, 0x94, 0x3f, 0xdf, 0x74, + 0x37, 0x9c, 0x7c, 0xd7, 0xa1, 0xa, 0xea, 0x41, 0x6, 0xad, 0x4d, 0xe6, 0x90, 0x3b, 0xdb, 0x70, + 0x55, 0xfe, 0x1e, 0xb5, 0xc3, 0x68, 0x88, 0x23, 0x64, 0xcf, 0x2f, 0x84, 0xf2, 0x59, 0xb9, 0x12, + 0xf3, 0x58, 0xb8, 0x13, 0x65, 0xce, 0x2e, 0x85, 0xc2, 0x69, 0x89, 0x22, 0x54, 0xff, 0x1f, 0xb4, + 0x91, 0x3a, 0xda, 0x71, 0x7, 0xac, 0x4c, 0xe7, 0xa0, 0xb, 0xeb, 0x40, 0x36, 0x9d, 0x7d, 0xd6, + 0xa2, 0x9, 0xe9, 0x42, 0x34, 0x9f, 0x7f, 0xd4, 0x93, 0x38, 0xd8, 0x73, 0x5, 0xae, 0x4e, 0xe5, + 0xc0, 0x6b, 0x8b, 0x20, 0x56, 0xfd, 0x1d, 0xb6, 0xf1, 0x5a, 0xba, 0x11, 0x67, 0xcc, 0x2c, 0x87, + 0x66, 0xcd, 0x2d, 0x86, 0xf0, 0x5b, 0xbb, 0x10, 0x57, 0xfc, 0x1c, 0xb7, 0xc1, 0x6a, 0x8a, 0x21, + 0x4, 0xaf, 0x4f, 0xe4, 0x92, 0x39, 0xd9, 0x72, 0x35, 0x9e, 0x7e, 0xd5, 0xa3, 0x8, 0xe8, 0x43, + ], + [ + 0x0, 0xac, 0x45, 0xe9, 0x8a, 0x26, 0xcf, 0x63, 0x9, 0xa5, 0x4c, 0xe0, 0x83, 0x2f, 0xc6, 0x6a, + 0x12, 0xbe, 0x57, 0xfb, 0x98, 0x34, 0xdd, 0x71, 0x1b, 0xb7, 0x5e, 0xf2, 0x91, 0x3d, 0xd4, 0x78, + 0x24, 0x88, 0x61, 0xcd, 0xae, 0x2, 0xeb, 0x47, 0x2d, 0x81, 0x68, 0xc4, 0xa7, 0xb, 0xe2, 0x4e, + 0x36, 0x9a, 0x73, 0xdf, 0xbc, 0x10, 0xf9, 0x55, 0x3f, 0x93, 0x7a, 0xd6, 0xb5, 0x19, 0xf0, 0x5c, + 0x48, 0xe4, 0xd, 0xa1, 0xc2, 0x6e, 0x87, 0x2b, 0x41, 0xed, 0x4, 0xa8, 0xcb, 0x67, 0x8e, 0x22, + 0x5a, 0xf6, 0x1f, 0xb3, 0xd0, 0x7c, 0x95, 0x39, 0x53, 0xff, 0x16, 0xba, 0xd9, 0x75, 0x9c, 0x30, + 0x6c, 0xc0, 0x29, 0x85, 0xe6, 0x4a, 0xa3, 0xf, 0x65, 0xc9, 0x20, 0x8c, 0xef, 0x43, 0xaa, 0x6, + 0x7e, 0xd2, 0x3b, 0x97, 0xf4, 0x58, 0xb1, 0x1d, 0x77, 0xdb, 0x32, 0x9e, 0xfd, 0x51, 0xb8, 0x14, + 0x90, 0x3c, 0xd5, 0x79, 0x1a, 0xb6, 0x5f, 0xf3, 0x99, 0x35, 0xdc, 0x70, 0x13, 0xbf, 0x56, 0xfa, + 0x82, 0x2e, 0xc7, 0x6b, 0x8, 0xa4, 0x4d, 0xe1, 0x8b, 0x27, 0xce, 0x62, 0x1, 0xad, 0x44, 0xe8, + 0xb4, 0x18, 0xf1, 0x5d, 0x3e, 0x92, 0x7b, 0xd7, 0xbd, 0x11, 0xf8, 0x54, 0x37, 0x9b, 0x72, 0xde, + 0xa6, 0xa, 0xe3, 0x4f, 0x2c, 0x80, 0x69, 0xc5, 0xaf, 0x3, 0xea, 0x46, 0x25, 0x89, 0x60, 0xcc, + 0xd8, 0x74, 0x9d, 0x31, 0x52, 0xfe, 0x17, 0xbb, 0xd1, 0x7d, 0x94, 0x38, 0x5b, 0xf7, 0x1e, 0xb2, + 0xca, 0x66, 0x8f, 0x23, 0x40, 0xec, 0x5, 0xa9, 0xc3, 0x6f, 0x86, 0x2a, 0x49, 0xe5, 0xc, 0xa0, + 0xfc, 0x50, 0xb9, 0x15, 0x76, 0xda, 0x33, 0x9f, 0xf5, 0x59, 0xb0, 0x1c, 0x7f, 0xd3, 0x3a, 0x96, + 0xee, 0x42, 0xab, 0x7, 0x64, 0xc8, 0x21, 0x8d, 0xe7, 0x4b, 0xa2, 0xe, 0x6d, 0xc1, 0x28, 0x84, + ], + [ + 0x0, 0xad, 0x47, 0xea, 0x8e, 0x23, 0xc9, 0x64, 0x1, 0xac, 0x46, 0xeb, 0x8f, 0x22, 0xc8, 0x65, + 0x2, 0xaf, 0x45, 0xe8, 0x8c, 0x21, 0xcb, 0x66, 0x3, 0xae, 0x44, 0xe9, 0x8d, 0x20, 0xca, 0x67, + 0x4, 0xa9, 0x43, 0xee, 0x8a, 0x27, 0xcd, 0x60, 0x5, 0xa8, 0x42, 0xef, 0x8b, 0x26, 0xcc, 0x61, + 0x6, 0xab, 0x41, 0xec, 0x88, 0x25, 0xcf, 0x62, 0x7, 0xaa, 0x40, 0xed, 0x89, 0x24, 0xce, 0x63, + 0x8, 0xa5, 0x4f, 0xe2, 0x86, 0x2b, 0xc1, 0x6c, 0x9, 0xa4, 0x4e, 0xe3, 0x87, 0x2a, 0xc0, 0x6d, + 0xa, 0xa7, 0x4d, 0xe0, 0x84, 0x29, 0xc3, 0x6e, 0xb, 0xa6, 0x4c, 0xe1, 0x85, 0x28, 0xc2, 0x6f, + 0xc, 0xa1, 0x4b, 0xe6, 0x82, 0x2f, 0xc5, 0x68, 0xd, 0xa0, 0x4a, 0xe7, 0x83, 0x2e, 0xc4, 0x69, + 0xe, 0xa3, 0x49, 0xe4, 0x80, 0x2d, 0xc7, 0x6a, 0xf, 0xa2, 0x48, 0xe5, 0x81, 0x2c, 0xc6, 0x6b, + 0x10, 0xbd, 0x57, 0xfa, 0x9e, 0x33, 0xd9, 0x74, 0x11, 0xbc, 0x56, 0xfb, 0x9f, 0x32, 0xd8, 0x75, + 0x12, 0xbf, 0x55, 0xf8, 0x9c, 0x31, 0xdb, 0x76, 0x13, 0xbe, 0x54, 0xf9, 0x9d, 0x30, 0xda, 0x77, + 0x14, 0xb9, 0x53, 0xfe, 0x9a, 0x37, 0xdd, 0x70, 0x15, 0xb8, 0x52, 0xff, 0x9b, 0x36, 0xdc, 0x71, + 0x16, 0xbb, 0x51, 0xfc, 0x98, 0x35, 0xdf, 0x72, 0x17, 0xba, 0x50, 0xfd, 0x99, 0x34, 0xde, 0x73, + 0x18, 0xb5, 0x5f, 0xf2, 0x96, 0x3b, 0xd1, 0x7c, 0x19, 0xb4, 0x5e, 0xf3, 0x97, 0x3a, 0xd0, 0x7d, + 0x1a, 0xb7, 0x5d, 0xf0, 0x94, 0x39, 0xd3, 0x7e, 0x1b, 0xb6, 0x5c, 0xf1, 0x95, 0x38, 0xd2, 0x7f, + 0x1c, 0xb1, 0x5b, 0xf6, 0x92, 0x3f, 0xd5, 0x78, 0x1d, 0xb0, 0x5a, 0xf7, 0x93, 0x3e, 0xd4, 0x79, + 0x1e, 0xb3, 0x59, 0xf4, 0x90, 0x3d, 0xd7, 0x7a, 0x1f, 0xb2, 0x58, 0xf5, 0x91, 0x3c, 0xd6, 0x7b, + ], + [ + 0x0, 0xae, 0x41, 0xef, 0x82, 0x2c, 0xc3, 0x6d, 0x19, 0xb7, 0x58, 0xf6, 0x9b, 0x35, 0xda, 0x74, + 0x32, 0x9c, 0x73, 0xdd, 0xb0, 0x1e, 0xf1, 0x5f, 0x2b, 0x85, 0x6a, 0xc4, 0xa9, 0x7, 0xe8, 0x46, + 0x64, 0xca, 0x25, 0x8b, 0xe6, 0x48, 0xa7, 0x9, 0x7d, 0xd3, 0x3c, 0x92, 0xff, 0x51, 0xbe, 0x10, + 0x56, 0xf8, 0x17, 0xb9, 0xd4, 0x7a, 0x95, 0x3b, 0x4f, 0xe1, 0xe, 0xa0, 0xcd, 0x63, 0x8c, 0x22, + 0xc8, 0x66, 0x89, 0x27, 0x4a, 0xe4, 0xb, 0xa5, 0xd1, 0x7f, 0x90, 0x3e, 0x53, 0xfd, 0x12, 0xbc, + 0xfa, 0x54, 0xbb, 0x15, 0x78, 0xd6, 0x39, 0x97, 0xe3, 0x4d, 0xa2, 0xc, 0x61, 0xcf, 0x20, 0x8e, + 0xac, 0x2, 0xed, 0x43, 0x2e, 0x80, 0x6f, 0xc1, 0xb5, 0x1b, 0xf4, 0x5a, 0x37, 0x99, 0x76, 0xd8, + 0x9e, 0x30, 0xdf, 0x71, 0x1c, 0xb2, 0x5d, 0xf3, 0x87, 0x29, 0xc6, 0x68, 0x5, 0xab, 0x44, 0xea, + 0x8d, 0x23, 0xcc, 0x62, 0xf, 0xa1, 0x4e, 0xe0, 0x94, 0x3a, 0xd5, 0x7b, 0x16, 0xb8, 0x57, 0xf9, + 0xbf, 0x11, 0xfe, 0x50, 0x3d, 0x93, 0x7c, 0xd2, 0xa6, 0x8, 0xe7, 0x49, 0x24, 0x8a, 0x65, 0xcb, + 0xe9, 0x47, 0xa8, 0x6, 0x6b, 0xc5, 0x2a, 0x84, 0xf0, 0x5e, 0xb1, 0x1f, 0x72, 0xdc, 0x33, 0x9d, + 0xdb, 0x75, 0x9a, 0x34, 0x59, 0xf7, 0x18, 0xb6, 0xc2, 0x6c, 0x83, 0x2d, 0x40, 0xee, 0x1, 0xaf, + 0x45, 0xeb, 0x4, 0xaa, 0xc7, 0x69, 0x86, 0x28, 0x5c, 0xf2, 0x1d, 0xb3, 0xde, 0x70, 0x9f, 0x31, + 0x77, 0xd9, 0x36, 0x98, 0xf5, 0x5b, 0xb4, 0x1a, 0x6e, 0xc0, 0x2f, 0x81, 0xec, 0x42, 0xad, 0x3, + 0x21, 0x8f, 0x60, 0xce, 0xa3, 0xd, 0xe2, 0x4c, 0x38, 0x96, 0x79, 0xd7, 0xba, 0x14, 0xfb, 0x55, + 0x13, 0xbd, 0x52, 0xfc, 0x91, 0x3f, 0xd0, 0x7e, 0xa, 0xa4, 0x4b, 0xe5, 0x88, 0x26, 0xc9, 0x67, + ], + [ + 0x0, 0xaf, 0x43, 0xec, 0x86, 0x29, 0xc5, 0x6a, 0x11, 0xbe, 0x52, 0xfd, 0x97, 0x38, 0xd4, 0x7b, + 0x22, 0x8d, 0x61, 0xce, 0xa4, 0xb, 0xe7, 0x48, 0x33, 0x9c, 0x70, 0xdf, 0xb5, 0x1a, 0xf6, 0x59, + 0x44, 0xeb, 0x7, 0xa8, 0xc2, 0x6d, 0x81, 0x2e, 0x55, 0xfa, 0x16, 0xb9, 0xd3, 0x7c, 0x90, 0x3f, + 0x66, 0xc9, 0x25, 0x8a, 0xe0, 0x4f, 0xa3, 0xc, 0x77, 0xd8, 0x34, 0x9b, 0xf1, 0x5e, 0xb2, 0x1d, + 0x88, 0x27, 0xcb, 0x64, 0xe, 0xa1, 0x4d, 0xe2, 0x99, 0x36, 0xda, 0x75, 0x1f, 0xb0, 0x5c, 0xf3, + 0xaa, 0x5, 0xe9, 0x46, 0x2c, 0x83, 0x6f, 0xc0, 0xbb, 0x14, 0xf8, 0x57, 0x3d, 0x92, 0x7e, 0xd1, + 0xcc, 0x63, 0x8f, 0x20, 0x4a, 0xe5, 0x9, 0xa6, 0xdd, 0x72, 0x9e, 0x31, 0x5b, 0xf4, 0x18, 0xb7, + 0xee, 0x41, 0xad, 0x2, 0x68, 0xc7, 0x2b, 0x84, 0xff, 0x50, 0xbc, 0x13, 0x79, 0xd6, 0x3a, 0x95, + 0xd, 0xa2, 0x4e, 0xe1, 0x8b, 0x24, 0xc8, 0x67, 0x1c, 0xb3, 0x5f, 0xf0, 0x9a, 0x35, 0xd9, 0x76, + 0x2f, 0x80, 0x6c, 0xc3, 0xa9, 0x6, 0xea, 0x45, 0x3e, 0x91, 0x7d, 0xd2, 0xb8, 0x17, 0xfb, 0x54, + 0x49, 0xe6, 0xa, 0xa5, 0xcf, 0x60, 0x8c, 0x23, 0x58, 0xf7, 0x1b, 0xb4, 0xde, 0x71, 0x9d, 0x32, + 0x6b, 0xc4, 0x28, 0x87, 0xed, 0x42, 0xae, 0x1, 0x7a, 0xd5, 0x39, 0x96, 0xfc, 0x53, 0xbf, 0x10, + 0x85, 0x2a, 0xc6, 0x69, 0x3, 0xac, 0x40, 0xef, 0x94, 0x3b, 0xd7, 0x78, 0x12, 0xbd, 0x51, 0xfe, + 0xa7, 0x8, 0xe4, 0x4b, 0x21, 0x8e, 0x62, 0xcd, 0xb6, 0x19, 0xf5, 0x5a, 0x30, 0x9f, 0x73, 0xdc, + 0xc1, 0x6e, 0x82, 0x2d, 0x47, 0xe8, 0x4, 0xab, 0xd0, 0x7f, 0x93, 0x3c, 0x56, 0xf9, 0x15, 0xba, + 0xe3, 0x4c, 0xa0, 0xf, 0x65, 0xca, 0x26, 0x89, 0xf2, 0x5d, 0xb1, 0x1e, 0x74, 0xdb, 0x37, 0x98, + ], + [ + 0x0, 0xb0, 0x7d, 0xcd, 0xfa, 0x4a, 0x87, 0x37, 0xe9, 0x59, 0x94, 0x24, 0x13, 0xa3, 0x6e, 0xde, + 0xcf, 0x7f, 0xb2, 0x2, 0x35, 0x85, 0x48, 0xf8, 0x26, 0x96, 0x5b, 0xeb, 0xdc, 0x6c, 0xa1, 0x11, + 0x83, 0x33, 0xfe, 0x4e, 0x79, 0xc9, 0x4, 0xb4, 0x6a, 0xda, 0x17, 0xa7, 0x90, 0x20, 0xed, 0x5d, + 0x4c, 0xfc, 0x31, 0x81, 0xb6, 0x6, 0xcb, 0x7b, 0xa5, 0x15, 0xd8, 0x68, 0x5f, 0xef, 0x22, 0x92, + 0x1b, 0xab, 0x66, 0xd6, 0xe1, 0x51, 0x9c, 0x2c, 0xf2, 0x42, 0x8f, 0x3f, 0x8, 0xb8, 0x75, 0xc5, + 0xd4, 0x64, 0xa9, 0x19, 0x2e, 0x9e, 0x53, 0xe3, 0x3d, 0x8d, 0x40, 0xf0, 0xc7, 0x77, 0xba, 0xa, + 0x98, 0x28, 0xe5, 0x55, 0x62, 0xd2, 0x1f, 0xaf, 0x71, 0xc1, 0xc, 0xbc, 0x8b, 0x3b, 0xf6, 0x46, + 0x57, 0xe7, 0x2a, 0x9a, 0xad, 0x1d, 0xd0, 0x60, 0xbe, 0xe, 0xc3, 0x73, 0x44, 0xf4, 0x39, 0x89, + 0x36, 0x86, 0x4b, 0xfb, 0xcc, 0x7c, 0xb1, 0x1, 0xdf, 0x6f, 0xa2, 0x12, 0x25, 0x95, 0x58, 0xe8, + 0xf9, 0x49, 0x84, 0x34, 0x3, 0xb3, 0x7e, 0xce, 0x10, 0xa0, 0x6d, 0xdd, 0xea, 0x5a, 0x97, 0x27, + 0xb5, 0x5, 0xc8, 0x78, 0x4f, 0xff, 0x32, 0x82, 0x5c, 0xec, 0x21, 0x91, 0xa6, 0x16, 0xdb, 0x6b, + 0x7a, 0xca, 0x7, 0xb7, 0x80, 0x30, 0xfd, 0x4d, 0x93, 0x23, 0xee, 0x5e, 0x69, 0xd9, 0x14, 0xa4, + 0x2d, 0x9d, 0x50, 0xe0, 0xd7, 0x67, 0xaa, 0x1a, 0xc4, 0x74, 0xb9, 0x9, 0x3e, 0x8e, 0x43, 0xf3, + 0xe2, 0x52, 0x9f, 0x2f, 0x18, 0xa8, 0x65, 0xd5, 0xb, 0xbb, 0x76, 0xc6, 0xf1, 0x41, 0x8c, 0x3c, + 0xae, 0x1e, 0xd3, 0x63, 0x54, 0xe4, 0x29, 0x99, 0x47, 0xf7, 0x3a, 0x8a, 0xbd, 0xd, 0xc0, 0x70, + 0x61, 0xd1, 0x1c, 0xac, 0x9b, 0x2b, 0xe6, 0x56, 0x88, 0x38, 0xf5, 0x45, 0x72, 0xc2, 0xf, 0xbf, + ], + [ + 0x0, 0xb1, 0x7f, 0xce, 0xfe, 0x4f, 0x81, 0x30, 0xe1, 0x50, 0x9e, 0x2f, 0x1f, 0xae, 0x60, 0xd1, + 0xdf, 0x6e, 0xa0, 0x11, 0x21, 0x90, 0x5e, 0xef, 0x3e, 0x8f, 0x41, 0xf0, 0xc0, 0x71, 0xbf, 0xe, + 0xa3, 0x12, 0xdc, 0x6d, 0x5d, 0xec, 0x22, 0x93, 0x42, 0xf3, 0x3d, 0x8c, 0xbc, 0xd, 0xc3, 0x72, + 0x7c, 0xcd, 0x3, 0xb2, 0x82, 0x33, 0xfd, 0x4c, 0x9d, 0x2c, 0xe2, 0x53, 0x63, 0xd2, 0x1c, 0xad, + 0x5b, 0xea, 0x24, 0x95, 0xa5, 0x14, 0xda, 0x6b, 0xba, 0xb, 0xc5, 0x74, 0x44, 0xf5, 0x3b, 0x8a, + 0x84, 0x35, 0xfb, 0x4a, 0x7a, 0xcb, 0x5, 0xb4, 0x65, 0xd4, 0x1a, 0xab, 0x9b, 0x2a, 0xe4, 0x55, + 0xf8, 0x49, 0x87, 0x36, 0x6, 0xb7, 0x79, 0xc8, 0x19, 0xa8, 0x66, 0xd7, 0xe7, 0x56, 0x98, 0x29, + 0x27, 0x96, 0x58, 0xe9, 0xd9, 0x68, 0xa6, 0x17, 0xc6, 0x77, 0xb9, 0x8, 0x38, 0x89, 0x47, 0xf6, + 0xb6, 0x7, 0xc9, 0x78, 0x48, 0xf9, 0x37, 0x86, 0x57, 0xe6, 0x28, 0x99, 0xa9, 0x18, 0xd6, 0x67, + 0x69, 0xd8, 0x16, 0xa7, 0x97, 0x26, 0xe8, 0x59, 0x88, 0x39, 0xf7, 0x46, 0x76, 0xc7, 0x9, 0xb8, + 0x15, 0xa4, 0x6a, 0xdb, 0xeb, 0x5a, 0x94, 0x25, 0xf4, 0x45, 0x8b, 0x3a, 0xa, 0xbb, 0x75, 0xc4, + 0xca, 0x7b, 0xb5, 0x4, 0x34, 0x85, 0x4b, 0xfa, 0x2b, 0x9a, 0x54, 0xe5, 0xd5, 0x64, 0xaa, 0x1b, + 0xed, 0x5c, 0x92, 0x23, 0x13, 0xa2, 0x6c, 0xdd, 0xc, 0xbd, 0x73, 0xc2, 0xf2, 0x43, 0x8d, 0x3c, + 0x32, 0x83, 0x4d, 0xfc, 0xcc, 0x7d, 0xb3, 0x2, 0xd3, 0x62, 0xac, 0x1d, 0x2d, 0x9c, 0x52, 0xe3, + 0x4e, 0xff, 0x31, 0x80, 0xb0, 0x1, 0xcf, 0x7e, 0xaf, 0x1e, 0xd0, 0x61, 0x51, 0xe0, 0x2e, 0x9f, + 0x91, 0x20, 0xee, 0x5f, 0x6f, 0xde, 0x10, 0xa1, 0x70, 0xc1, 0xf, 0xbe, 0x8e, 0x3f, 0xf1, 0x40, + ], + [ + 0x0, 0xb2, 0x79, 0xcb, 0xf2, 0x40, 0x8b, 0x39, 0xf9, 0x4b, 0x80, 0x32, 0xb, 0xb9, 0x72, 0xc0, + 0xef, 0x5d, 0x96, 0x24, 0x1d, 0xaf, 0x64, 0xd6, 0x16, 0xa4, 0x6f, 0xdd, 0xe4, 0x56, 0x9d, 0x2f, + 0xc3, 0x71, 0xba, 0x8, 0x31, 0x83, 0x48, 0xfa, 0x3a, 0x88, 0x43, 0xf1, 0xc8, 0x7a, 0xb1, 0x3, + 0x2c, 0x9e, 0x55, 0xe7, 0xde, 0x6c, 0xa7, 0x15, 0xd5, 0x67, 0xac, 0x1e, 0x27, 0x95, 0x5e, 0xec, + 0x9b, 0x29, 0xe2, 0x50, 0x69, 0xdb, 0x10, 0xa2, 0x62, 0xd0, 0x1b, 0xa9, 0x90, 0x22, 0xe9, 0x5b, + 0x74, 0xc6, 0xd, 0xbf, 0x86, 0x34, 0xff, 0x4d, 0x8d, 0x3f, 0xf4, 0x46, 0x7f, 0xcd, 0x6, 0xb4, + 0x58, 0xea, 0x21, 0x93, 0xaa, 0x18, 0xd3, 0x61, 0xa1, 0x13, 0xd8, 0x6a, 0x53, 0xe1, 0x2a, 0x98, + 0xb7, 0x5, 0xce, 0x7c, 0x45, 0xf7, 0x3c, 0x8e, 0x4e, 0xfc, 0x37, 0x85, 0xbc, 0xe, 0xc5, 0x77, + 0x2b, 0x99, 0x52, 0xe0, 0xd9, 0x6b, 0xa0, 0x12, 0xd2, 0x60, 0xab, 0x19, 0x20, 0x92, 0x59, 0xeb, + 0xc4, 0x76, 0xbd, 0xf, 0x36, 0x84, 0x4f, 0xfd, 0x3d, 0x8f, 0x44, 0xf6, 0xcf, 0x7d, 0xb6, 0x4, + 0xe8, 0x5a, 0x91, 0x23, 0x1a, 0xa8, 0x63, 0xd1, 0x11, 0xa3, 0x68, 0xda, 0xe3, 0x51, 0x9a, 0x28, + 0x7, 0xb5, 0x7e, 0xcc, 0xf5, 0x47, 0x8c, 0x3e, 0xfe, 0x4c, 0x87, 0x35, 0xc, 0xbe, 0x75, 0xc7, + 0xb0, 0x2, 0xc9, 0x7b, 0x42, 0xf0, 0x3b, 0x89, 0x49, 0xfb, 0x30, 0x82, 0xbb, 0x9, 0xc2, 0x70, + 0x5f, 0xed, 0x26, 0x94, 0xad, 0x1f, 0xd4, 0x66, 0xa6, 0x14, 0xdf, 0x6d, 0x54, 0xe6, 0x2d, 0x9f, + 0x73, 0xc1, 0xa, 0xb8, 0x81, 0x33, 0xf8, 0x4a, 0x8a, 0x38, 0xf3, 0x41, 0x78, 0xca, 0x1, 0xb3, + 0x9c, 0x2e, 0xe5, 0x57, 0x6e, 0xdc, 0x17, 0xa5, 0x65, 0xd7, 0x1c, 0xae, 0x97, 0x25, 0xee, 0x5c, + ], + [ + 0x0, 0xb3, 0x7b, 0xc8, 0xf6, 0x45, 0x8d, 0x3e, 0xf1, 0x42, 0x8a, 0x39, 0x7, 0xb4, 0x7c, 0xcf, + 0xff, 0x4c, 0x84, 0x37, 0x9, 0xba, 0x72, 0xc1, 0xe, 0xbd, 0x75, 0xc6, 0xf8, 0x4b, 0x83, 0x30, + 0xe3, 0x50, 0x98, 0x2b, 0x15, 0xa6, 0x6e, 0xdd, 0x12, 0xa1, 0x69, 0xda, 0xe4, 0x57, 0x9f, 0x2c, + 0x1c, 0xaf, 0x67, 0xd4, 0xea, 0x59, 0x91, 0x22, 0xed, 0x5e, 0x96, 0x25, 0x1b, 0xa8, 0x60, 0xd3, + 0xdb, 0x68, 0xa0, 0x13, 0x2d, 0x9e, 0x56, 0xe5, 0x2a, 0x99, 0x51, 0xe2, 0xdc, 0x6f, 0xa7, 0x14, + 0x24, 0x97, 0x5f, 0xec, 0xd2, 0x61, 0xa9, 0x1a, 0xd5, 0x66, 0xae, 0x1d, 0x23, 0x90, 0x58, 0xeb, + 0x38, 0x8b, 0x43, 0xf0, 0xce, 0x7d, 0xb5, 0x6, 0xc9, 0x7a, 0xb2, 0x1, 0x3f, 0x8c, 0x44, 0xf7, + 0xc7, 0x74, 0xbc, 0xf, 0x31, 0x82, 0x4a, 0xf9, 0x36, 0x85, 0x4d, 0xfe, 0xc0, 0x73, 0xbb, 0x8, + 0xab, 0x18, 0xd0, 0x63, 0x5d, 0xee, 0x26, 0x95, 0x5a, 0xe9, 0x21, 0x92, 0xac, 0x1f, 0xd7, 0x64, + 0x54, 0xe7, 0x2f, 0x9c, 0xa2, 0x11, 0xd9, 0x6a, 0xa5, 0x16, 0xde, 0x6d, 0x53, 0xe0, 0x28, 0x9b, + 0x48, 0xfb, 0x33, 0x80, 0xbe, 0xd, 0xc5, 0x76, 0xb9, 0xa, 0xc2, 0x71, 0x4f, 0xfc, 0x34, 0x87, + 0xb7, 0x4, 0xcc, 0x7f, 0x41, 0xf2, 0x3a, 0x89, 0x46, 0xf5, 0x3d, 0x8e, 0xb0, 0x3, 0xcb, 0x78, + 0x70, 0xc3, 0xb, 0xb8, 0x86, 0x35, 0xfd, 0x4e, 0x81, 0x32, 0xfa, 0x49, 0x77, 0xc4, 0xc, 0xbf, + 0x8f, 0x3c, 0xf4, 0x47, 0x79, 0xca, 0x2, 0xb1, 0x7e, 0xcd, 0x5, 0xb6, 0x88, 0x3b, 0xf3, 0x40, + 0x93, 0x20, 0xe8, 0x5b, 0x65, 0xd6, 0x1e, 0xad, 0x62, 0xd1, 0x19, 0xaa, 0x94, 0x27, 0xef, 0x5c, + 0x6c, 0xdf, 0x17, 0xa4, 0x9a, 0x29, 0xe1, 0x52, 0x9d, 0x2e, 0xe6, 0x55, 0x6b, 0xd8, 0x10, 0xa3, + ], + [ + 0x0, 0xb4, 0x75, 0xc1, 0xea, 0x5e, 0x9f, 0x2b, 0xc9, 0x7d, 0xbc, 0x8, 0x23, 0x97, 0x56, 0xe2, + 0x8f, 0x3b, 0xfa, 0x4e, 0x65, 0xd1, 0x10, 0xa4, 0x46, 0xf2, 0x33, 0x87, 0xac, 0x18, 0xd9, 0x6d, + 0x3, 0xb7, 0x76, 0xc2, 0xe9, 0x5d, 0x9c, 0x28, 0xca, 0x7e, 0xbf, 0xb, 0x20, 0x94, 0x55, 0xe1, + 0x8c, 0x38, 0xf9, 0x4d, 0x66, 0xd2, 0x13, 0xa7, 0x45, 0xf1, 0x30, 0x84, 0xaf, 0x1b, 0xda, 0x6e, + 0x6, 0xb2, 0x73, 0xc7, 0xec, 0x58, 0x99, 0x2d, 0xcf, 0x7b, 0xba, 0xe, 0x25, 0x91, 0x50, 0xe4, + 0x89, 0x3d, 0xfc, 0x48, 0x63, 0xd7, 0x16, 0xa2, 0x40, 0xf4, 0x35, 0x81, 0xaa, 0x1e, 0xdf, 0x6b, + 0x5, 0xb1, 0x70, 0xc4, 0xef, 0x5b, 0x9a, 0x2e, 0xcc, 0x78, 0xb9, 0xd, 0x26, 0x92, 0x53, 0xe7, + 0x8a, 0x3e, 0xff, 0x4b, 0x60, 0xd4, 0x15, 0xa1, 0x43, 0xf7, 0x36, 0x82, 0xa9, 0x1d, 0xdc, 0x68, + 0xc, 0xb8, 0x79, 0xcd, 0xe6, 0x52, 0x93, 0x27, 0xc5, 0x71, 0xb0, 0x4, 0x2f, 0x9b, 0x5a, 0xee, + 0x83, 0x37, 0xf6, 0x42, 0x69, 0xdd, 0x1c, 0xa8, 0x4a, 0xfe, 0x3f, 0x8b, 0xa0, 0x14, 0xd5, 0x61, + 0xf, 0xbb, 0x7a, 0xce, 0xe5, 0x51, 0x90, 0x24, 0xc6, 0x72, 0xb3, 0x7, 0x2c, 0x98, 0x59, 0xed, + 0x80, 0x34, 0xf5, 0x41, 0x6a, 0xde, 0x1f, 0xab, 0x49, 0xfd, 0x3c, 0x88, 0xa3, 0x17, 0xd6, 0x62, + 0xa, 0xbe, 0x7f, 0xcb, 0xe0, 0x54, 0x95, 0x21, 0xc3, 0x77, 0xb6, 0x2, 0x29, 0x9d, 0x5c, 0xe8, + 0x85, 0x31, 0xf0, 0x44, 0x6f, 0xdb, 0x1a, 0xae, 0x4c, 0xf8, 0x39, 0x8d, 0xa6, 0x12, 0xd3, 0x67, + 0x9, 0xbd, 0x7c, 0xc8, 0xe3, 0x57, 0x96, 0x22, 0xc0, 0x74, 0xb5, 0x1, 0x2a, 0x9e, 0x5f, 0xeb, + 0x86, 0x32, 0xf3, 0x47, 0x6c, 0xd8, 0x19, 0xad, 0x4f, 0xfb, 0x3a, 0x8e, 0xa5, 0x11, 0xd0, 0x64, + ], + [ + 0x0, 0xb5, 0x77, 0xc2, 0xee, 0x5b, 0x99, 0x2c, 0xc1, 0x74, 0xb6, 0x3, 0x2f, 0x9a, 0x58, 0xed, + 0x9f, 0x2a, 0xe8, 0x5d, 0x71, 0xc4, 0x6, 0xb3, 0x5e, 0xeb, 0x29, 0x9c, 0xb0, 0x5, 0xc7, 0x72, + 0x23, 0x96, 0x54, 0xe1, 0xcd, 0x78, 0xba, 0xf, 0xe2, 0x57, 0x95, 0x20, 0xc, 0xb9, 0x7b, 0xce, + 0xbc, 0x9, 0xcb, 0x7e, 0x52, 0xe7, 0x25, 0x90, 0x7d, 0xc8, 0xa, 0xbf, 0x93, 0x26, 0xe4, 0x51, + 0x46, 0xf3, 0x31, 0x84, 0xa8, 0x1d, 0xdf, 0x6a, 0x87, 0x32, 0xf0, 0x45, 0x69, 0xdc, 0x1e, 0xab, + 0xd9, 0x6c, 0xae, 0x1b, 0x37, 0x82, 0x40, 0xf5, 0x18, 0xad, 0x6f, 0xda, 0xf6, 0x43, 0x81, 0x34, + 0x65, 0xd0, 0x12, 0xa7, 0x8b, 0x3e, 0xfc, 0x49, 0xa4, 0x11, 0xd3, 0x66, 0x4a, 0xff, 0x3d, 0x88, + 0xfa, 0x4f, 0x8d, 0x38, 0x14, 0xa1, 0x63, 0xd6, 0x3b, 0x8e, 0x4c, 0xf9, 0xd5, 0x60, 0xa2, 0x17, + 0x8c, 0x39, 0xfb, 0x4e, 0x62, 0xd7, 0x15, 0xa0, 0x4d, 0xf8, 0x3a, 0x8f, 0xa3, 0x16, 0xd4, 0x61, + 0x13, 0xa6, 0x64, 0xd1, 0xfd, 0x48, 0x8a, 0x3f, 0xd2, 0x67, 0xa5, 0x10, 0x3c, 0x89, 0x4b, 0xfe, + 0xaf, 0x1a, 0xd8, 0x6d, 0x41, 0xf4, 0x36, 0x83, 0x6e, 0xdb, 0x19, 0xac, 0x80, 0x35, 0xf7, 0x42, + 0x30, 0x85, 0x47, 0xf2, 0xde, 0x6b, 0xa9, 0x1c, 0xf1, 0x44, 0x86, 0x33, 0x1f, 0xaa, 0x68, 0xdd, + 0xca, 0x7f, 0xbd, 0x8, 0x24, 0x91, 0x53, 0xe6, 0xb, 0xbe, 0x7c, 0xc9, 0xe5, 0x50, 0x92, 0x27, + 0x55, 0xe0, 0x22, 0x97, 0xbb, 0xe, 0xcc, 0x79, 0x94, 0x21, 0xe3, 0x56, 0x7a, 0xcf, 0xd, 0xb8, + 0xe9, 0x5c, 0x9e, 0x2b, 0x7, 0xb2, 0x70, 0xc5, 0x28, 0x9d, 0x5f, 0xea, 0xc6, 0x73, 0xb1, 0x4, + 0x76, 0xc3, 0x1, 0xb4, 0x98, 0x2d, 0xef, 0x5a, 0xb7, 0x2, 0xc0, 0x75, 0x59, 0xec, 0x2e, 0x9b, + ], + [ + 0x0, 0xb6, 0x71, 0xc7, 0xe2, 0x54, 0x93, 0x25, 0xd9, 0x6f, 0xa8, 0x1e, 0x3b, 0x8d, 0x4a, 0xfc, + 0xaf, 0x19, 0xde, 0x68, 0x4d, 0xfb, 0x3c, 0x8a, 0x76, 0xc0, 0x7, 0xb1, 0x94, 0x22, 0xe5, 0x53, + 0x43, 0xf5, 0x32, 0x84, 0xa1, 0x17, 0xd0, 0x66, 0x9a, 0x2c, 0xeb, 0x5d, 0x78, 0xce, 0x9, 0xbf, + 0xec, 0x5a, 0x9d, 0x2b, 0xe, 0xb8, 0x7f, 0xc9, 0x35, 0x83, 0x44, 0xf2, 0xd7, 0x61, 0xa6, 0x10, + 0x86, 0x30, 0xf7, 0x41, 0x64, 0xd2, 0x15, 0xa3, 0x5f, 0xe9, 0x2e, 0x98, 0xbd, 0xb, 0xcc, 0x7a, + 0x29, 0x9f, 0x58, 0xee, 0xcb, 0x7d, 0xba, 0xc, 0xf0, 0x46, 0x81, 0x37, 0x12, 0xa4, 0x63, 0xd5, + 0xc5, 0x73, 0xb4, 0x2, 0x27, 0x91, 0x56, 0xe0, 0x1c, 0xaa, 0x6d, 0xdb, 0xfe, 0x48, 0x8f, 0x39, + 0x6a, 0xdc, 0x1b, 0xad, 0x88, 0x3e, 0xf9, 0x4f, 0xb3, 0x5, 0xc2, 0x74, 0x51, 0xe7, 0x20, 0x96, + 0x11, 0xa7, 0x60, 0xd6, 0xf3, 0x45, 0x82, 0x34, 0xc8, 0x7e, 0xb9, 0xf, 0x2a, 0x9c, 0x5b, 0xed, + 0xbe, 0x8, 0xcf, 0x79, 0x5c, 0xea, 0x2d, 0x9b, 0x67, 0xd1, 0x16, 0xa0, 0x85, 0x33, 0xf4, 0x42, + 0x52, 0xe4, 0x23, 0x95, 0xb0, 0x6, 0xc1, 0x77, 0x8b, 0x3d, 0xfa, 0x4c, 0x69, 0xdf, 0x18, 0xae, + 0xfd, 0x4b, 0x8c, 0x3a, 0x1f, 0xa9, 0x6e, 0xd8, 0x24, 0x92, 0x55, 0xe3, 0xc6, 0x70, 0xb7, 0x1, + 0x97, 0x21, 0xe6, 0x50, 0x75, 0xc3, 0x4, 0xb2, 0x4e, 0xf8, 0x3f, 0x89, 0xac, 0x1a, 0xdd, 0x6b, + 0x38, 0x8e, 0x49, 0xff, 0xda, 0x6c, 0xab, 0x1d, 0xe1, 0x57, 0x90, 0x26, 0x3, 0xb5, 0x72, 0xc4, + 0xd4, 0x62, 0xa5, 0x13, 0x36, 0x80, 0x47, 0xf1, 0xd, 0xbb, 0x7c, 0xca, 0xef, 0x59, 0x9e, 0x28, + 0x7b, 0xcd, 0xa, 0xbc, 0x99, 0x2f, 0xe8, 0x5e, 0xa2, 0x14, 0xd3, 0x65, 0x40, 0xf6, 0x31, 0x87, + ], + [ + 0x0, 0xb7, 0x73, 0xc4, 0xe6, 0x51, 0x95, 0x22, 0xd1, 0x66, 0xa2, 0x15, 0x37, 0x80, 0x44, 0xf3, + 0xbf, 0x8, 0xcc, 0x7b, 0x59, 0xee, 0x2a, 0x9d, 0x6e, 0xd9, 0x1d, 0xaa, 0x88, 0x3f, 0xfb, 0x4c, + 0x63, 0xd4, 0x10, 0xa7, 0x85, 0x32, 0xf6, 0x41, 0xb2, 0x5, 0xc1, 0x76, 0x54, 0xe3, 0x27, 0x90, + 0xdc, 0x6b, 0xaf, 0x18, 0x3a, 0x8d, 0x49, 0xfe, 0xd, 0xba, 0x7e, 0xc9, 0xeb, 0x5c, 0x98, 0x2f, + 0xc6, 0x71, 0xb5, 0x2, 0x20, 0x97, 0x53, 0xe4, 0x17, 0xa0, 0x64, 0xd3, 0xf1, 0x46, 0x82, 0x35, + 0x79, 0xce, 0xa, 0xbd, 0x9f, 0x28, 0xec, 0x5b, 0xa8, 0x1f, 0xdb, 0x6c, 0x4e, 0xf9, 0x3d, 0x8a, + 0xa5, 0x12, 0xd6, 0x61, 0x43, 0xf4, 0x30, 0x87, 0x74, 0xc3, 0x7, 0xb0, 0x92, 0x25, 0xe1, 0x56, + 0x1a, 0xad, 0x69, 0xde, 0xfc, 0x4b, 0x8f, 0x38, 0xcb, 0x7c, 0xb8, 0xf, 0x2d, 0x9a, 0x5e, 0xe9, + 0x91, 0x26, 0xe2, 0x55, 0x77, 0xc0, 0x4, 0xb3, 0x40, 0xf7, 0x33, 0x84, 0xa6, 0x11, 0xd5, 0x62, + 0x2e, 0x99, 0x5d, 0xea, 0xc8, 0x7f, 0xbb, 0xc, 0xff, 0x48, 0x8c, 0x3b, 0x19, 0xae, 0x6a, 0xdd, + 0xf2, 0x45, 0x81, 0x36, 0x14, 0xa3, 0x67, 0xd0, 0x23, 0x94, 0x50, 0xe7, 0xc5, 0x72, 0xb6, 0x1, + 0x4d, 0xfa, 0x3e, 0x89, 0xab, 0x1c, 0xd8, 0x6f, 0x9c, 0x2b, 0xef, 0x58, 0x7a, 0xcd, 0x9, 0xbe, + 0x57, 0xe0, 0x24, 0x93, 0xb1, 0x6, 0xc2, 0x75, 0x86, 0x31, 0xf5, 0x42, 0x60, 0xd7, 0x13, 0xa4, + 0xe8, 0x5f, 0x9b, 0x2c, 0xe, 0xb9, 0x7d, 0xca, 0x39, 0x8e, 0x4a, 0xfd, 0xdf, 0x68, 0xac, 0x1b, + 0x34, 0x83, 0x47, 0xf0, 0xd2, 0x65, 0xa1, 0x16, 0xe5, 0x52, 0x96, 0x21, 0x3, 0xb4, 0x70, 0xc7, + 0x8b, 0x3c, 0xf8, 0x4f, 0x6d, 0xda, 0x1e, 0xa9, 0x5a, 0xed, 0x29, 0x9e, 0xbc, 0xb, 0xcf, 0x78, + ], + [ + 0x0, 0xb8, 0x6d, 0xd5, 0xda, 0x62, 0xb7, 0xf, 0xa9, 0x11, 0xc4, 0x7c, 0x73, 0xcb, 0x1e, 0xa6, + 0x4f, 0xf7, 0x22, 0x9a, 0x95, 0x2d, 0xf8, 0x40, 0xe6, 0x5e, 0x8b, 0x33, 0x3c, 0x84, 0x51, 0xe9, + 0x9e, 0x26, 0xf3, 0x4b, 0x44, 0xfc, 0x29, 0x91, 0x37, 0x8f, 0x5a, 0xe2, 0xed, 0x55, 0x80, 0x38, + 0xd1, 0x69, 0xbc, 0x4, 0xb, 0xb3, 0x66, 0xde, 0x78, 0xc0, 0x15, 0xad, 0xa2, 0x1a, 0xcf, 0x77, + 0x21, 0x99, 0x4c, 0xf4, 0xfb, 0x43, 0x96, 0x2e, 0x88, 0x30, 0xe5, 0x5d, 0x52, 0xea, 0x3f, 0x87, + 0x6e, 0xd6, 0x3, 0xbb, 0xb4, 0xc, 0xd9, 0x61, 0xc7, 0x7f, 0xaa, 0x12, 0x1d, 0xa5, 0x70, 0xc8, + 0xbf, 0x7, 0xd2, 0x6a, 0x65, 0xdd, 0x8, 0xb0, 0x16, 0xae, 0x7b, 0xc3, 0xcc, 0x74, 0xa1, 0x19, + 0xf0, 0x48, 0x9d, 0x25, 0x2a, 0x92, 0x47, 0xff, 0x59, 0xe1, 0x34, 0x8c, 0x83, 0x3b, 0xee, 0x56, + 0x42, 0xfa, 0x2f, 0x97, 0x98, 0x20, 0xf5, 0x4d, 0xeb, 0x53, 0x86, 0x3e, 0x31, 0x89, 0x5c, 0xe4, + 0xd, 0xb5, 0x60, 0xd8, 0xd7, 0x6f, 0xba, 0x2, 0xa4, 0x1c, 0xc9, 0x71, 0x7e, 0xc6, 0x13, 0xab, + 0xdc, 0x64, 0xb1, 0x9, 0x6, 0xbe, 0x6b, 0xd3, 0x75, 0xcd, 0x18, 0xa0, 0xaf, 0x17, 0xc2, 0x7a, + 0x93, 0x2b, 0xfe, 0x46, 0x49, 0xf1, 0x24, 0x9c, 0x3a, 0x82, 0x57, 0xef, 0xe0, 0x58, 0x8d, 0x35, + 0x63, 0xdb, 0xe, 0xb6, 0xb9, 0x1, 0xd4, 0x6c, 0xca, 0x72, 0xa7, 0x1f, 0x10, 0xa8, 0x7d, 0xc5, + 0x2c, 0x94, 0x41, 0xf9, 0xf6, 0x4e, 0x9b, 0x23, 0x85, 0x3d, 0xe8, 0x50, 0x5f, 0xe7, 0x32, 0x8a, + 0xfd, 0x45, 0x90, 0x28, 0x27, 0x9f, 0x4a, 0xf2, 0x54, 0xec, 0x39, 0x81, 0x8e, 0x36, 0xe3, 0x5b, + 0xb2, 0xa, 0xdf, 0x67, 0x68, 0xd0, 0x5, 0xbd, 0x1b, 0xa3, 0x76, 0xce, 0xc1, 0x79, 0xac, 0x14, + ], + [ + 0x0, 0xb9, 0x6f, 0xd6, 0xde, 0x67, 0xb1, 0x8, 0xa1, 0x18, 0xce, 0x77, 0x7f, 0xc6, 0x10, 0xa9, + 0x5f, 0xe6, 0x30, 0x89, 0x81, 0x38, 0xee, 0x57, 0xfe, 0x47, 0x91, 0x28, 0x20, 0x99, 0x4f, 0xf6, + 0xbe, 0x7, 0xd1, 0x68, 0x60, 0xd9, 0xf, 0xb6, 0x1f, 0xa6, 0x70, 0xc9, 0xc1, 0x78, 0xae, 0x17, + 0xe1, 0x58, 0x8e, 0x37, 0x3f, 0x86, 0x50, 0xe9, 0x40, 0xf9, 0x2f, 0x96, 0x9e, 0x27, 0xf1, 0x48, + 0x61, 0xd8, 0xe, 0xb7, 0xbf, 0x6, 0xd0, 0x69, 0xc0, 0x79, 0xaf, 0x16, 0x1e, 0xa7, 0x71, 0xc8, + 0x3e, 0x87, 0x51, 0xe8, 0xe0, 0x59, 0x8f, 0x36, 0x9f, 0x26, 0xf0, 0x49, 0x41, 0xf8, 0x2e, 0x97, + 0xdf, 0x66, 0xb0, 0x9, 0x1, 0xb8, 0x6e, 0xd7, 0x7e, 0xc7, 0x11, 0xa8, 0xa0, 0x19, 0xcf, 0x76, + 0x80, 0x39, 0xef, 0x56, 0x5e, 0xe7, 0x31, 0x88, 0x21, 0x98, 0x4e, 0xf7, 0xff, 0x46, 0x90, 0x29, + 0xc2, 0x7b, 0xad, 0x14, 0x1c, 0xa5, 0x73, 0xca, 0x63, 0xda, 0xc, 0xb5, 0xbd, 0x4, 0xd2, 0x6b, + 0x9d, 0x24, 0xf2, 0x4b, 0x43, 0xfa, 0x2c, 0x95, 0x3c, 0x85, 0x53, 0xea, 0xe2, 0x5b, 0x8d, 0x34, + 0x7c, 0xc5, 0x13, 0xaa, 0xa2, 0x1b, 0xcd, 0x74, 0xdd, 0x64, 0xb2, 0xb, 0x3, 0xba, 0x6c, 0xd5, + 0x23, 0x9a, 0x4c, 0xf5, 0xfd, 0x44, 0x92, 0x2b, 0x82, 0x3b, 0xed, 0x54, 0x5c, 0xe5, 0x33, 0x8a, + 0xa3, 0x1a, 0xcc, 0x75, 0x7d, 0xc4, 0x12, 0xab, 0x2, 0xbb, 0x6d, 0xd4, 0xdc, 0x65, 0xb3, 0xa, + 0xfc, 0x45, 0x93, 0x2a, 0x22, 0x9b, 0x4d, 0xf4, 0x5d, 0xe4, 0x32, 0x8b, 0x83, 0x3a, 0xec, 0x55, + 0x1d, 0xa4, 0x72, 0xcb, 0xc3, 0x7a, 0xac, 0x15, 0xbc, 0x5, 0xd3, 0x6a, 0x62, 0xdb, 0xd, 0xb4, + 0x42, 0xfb, 0x2d, 0x94, 0x9c, 0x25, 0xf3, 0x4a, 0xe3, 0x5a, 0x8c, 0x35, 0x3d, 0x84, 0x52, 0xeb, + ], + [ + 0x0, 0xba, 0x69, 0xd3, 0xd2, 0x68, 0xbb, 0x1, 0xb9, 0x3, 0xd0, 0x6a, 0x6b, 0xd1, 0x2, 0xb8, + 0x6f, 0xd5, 0x6, 0xbc, 0xbd, 0x7, 0xd4, 0x6e, 0xd6, 0x6c, 0xbf, 0x5, 0x4, 0xbe, 0x6d, 0xd7, + 0xde, 0x64, 0xb7, 0xd, 0xc, 0xb6, 0x65, 0xdf, 0x67, 0xdd, 0xe, 0xb4, 0xb5, 0xf, 0xdc, 0x66, + 0xb1, 0xb, 0xd8, 0x62, 0x63, 0xd9, 0xa, 0xb0, 0x8, 0xb2, 0x61, 0xdb, 0xda, 0x60, 0xb3, 0x9, + 0xa1, 0x1b, 0xc8, 0x72, 0x73, 0xc9, 0x1a, 0xa0, 0x18, 0xa2, 0x71, 0xcb, 0xca, 0x70, 0xa3, 0x19, + 0xce, 0x74, 0xa7, 0x1d, 0x1c, 0xa6, 0x75, 0xcf, 0x77, 0xcd, 0x1e, 0xa4, 0xa5, 0x1f, 0xcc, 0x76, + 0x7f, 0xc5, 0x16, 0xac, 0xad, 0x17, 0xc4, 0x7e, 0xc6, 0x7c, 0xaf, 0x15, 0x14, 0xae, 0x7d, 0xc7, + 0x10, 0xaa, 0x79, 0xc3, 0xc2, 0x78, 0xab, 0x11, 0xa9, 0x13, 0xc0, 0x7a, 0x7b, 0xc1, 0x12, 0xa8, + 0x5f, 0xe5, 0x36, 0x8c, 0x8d, 0x37, 0xe4, 0x5e, 0xe6, 0x5c, 0x8f, 0x35, 0x34, 0x8e, 0x5d, 0xe7, + 0x30, 0x8a, 0x59, 0xe3, 0xe2, 0x58, 0x8b, 0x31, 0x89, 0x33, 0xe0, 0x5a, 0x5b, 0xe1, 0x32, 0x88, + 0x81, 0x3b, 0xe8, 0x52, 0x53, 0xe9, 0x3a, 0x80, 0x38, 0x82, 0x51, 0xeb, 0xea, 0x50, 0x83, 0x39, + 0xee, 0x54, 0x87, 0x3d, 0x3c, 0x86, 0x55, 0xef, 0x57, 0xed, 0x3e, 0x84, 0x85, 0x3f, 0xec, 0x56, + 0xfe, 0x44, 0x97, 0x2d, 0x2c, 0x96, 0x45, 0xff, 0x47, 0xfd, 0x2e, 0x94, 0x95, 0x2f, 0xfc, 0x46, + 0x91, 0x2b, 0xf8, 0x42, 0x43, 0xf9, 0x2a, 0x90, 0x28, 0x92, 0x41, 0xfb, 0xfa, 0x40, 0x93, 0x29, + 0x20, 0x9a, 0x49, 0xf3, 0xf2, 0x48, 0x9b, 0x21, 0x99, 0x23, 0xf0, 0x4a, 0x4b, 0xf1, 0x22, 0x98, + 0x4f, 0xf5, 0x26, 0x9c, 0x9d, 0x27, 0xf4, 0x4e, 0xf6, 0x4c, 0x9f, 0x25, 0x24, 0x9e, 0x4d, 0xf7, + ], + [ + 0x0, 0xbb, 0x6b, 0xd0, 0xd6, 0x6d, 0xbd, 0x6, 0xb1, 0xa, 0xda, 0x61, 0x67, 0xdc, 0xc, 0xb7, + 0x7f, 0xc4, 0x14, 0xaf, 0xa9, 0x12, 0xc2, 0x79, 0xce, 0x75, 0xa5, 0x1e, 0x18, 0xa3, 0x73, 0xc8, + 0xfe, 0x45, 0x95, 0x2e, 0x28, 0x93, 0x43, 0xf8, 0x4f, 0xf4, 0x24, 0x9f, 0x99, 0x22, 0xf2, 0x49, + 0x81, 0x3a, 0xea, 0x51, 0x57, 0xec, 0x3c, 0x87, 0x30, 0x8b, 0x5b, 0xe0, 0xe6, 0x5d, 0x8d, 0x36, + 0xe1, 0x5a, 0x8a, 0x31, 0x37, 0x8c, 0x5c, 0xe7, 0x50, 0xeb, 0x3b, 0x80, 0x86, 0x3d, 0xed, 0x56, + 0x9e, 0x25, 0xf5, 0x4e, 0x48, 0xf3, 0x23, 0x98, 0x2f, 0x94, 0x44, 0xff, 0xf9, 0x42, 0x92, 0x29, + 0x1f, 0xa4, 0x74, 0xcf, 0xc9, 0x72, 0xa2, 0x19, 0xae, 0x15, 0xc5, 0x7e, 0x78, 0xc3, 0x13, 0xa8, + 0x60, 0xdb, 0xb, 0xb0, 0xb6, 0xd, 0xdd, 0x66, 0xd1, 0x6a, 0xba, 0x1, 0x7, 0xbc, 0x6c, 0xd7, + 0xdf, 0x64, 0xb4, 0xf, 0x9, 0xb2, 0x62, 0xd9, 0x6e, 0xd5, 0x5, 0xbe, 0xb8, 0x3, 0xd3, 0x68, + 0xa0, 0x1b, 0xcb, 0x70, 0x76, 0xcd, 0x1d, 0xa6, 0x11, 0xaa, 0x7a, 0xc1, 0xc7, 0x7c, 0xac, 0x17, + 0x21, 0x9a, 0x4a, 0xf1, 0xf7, 0x4c, 0x9c, 0x27, 0x90, 0x2b, 0xfb, 0x40, 0x46, 0xfd, 0x2d, 0x96, + 0x5e, 0xe5, 0x35, 0x8e, 0x88, 0x33, 0xe3, 0x58, 0xef, 0x54, 0x84, 0x3f, 0x39, 0x82, 0x52, 0xe9, + 0x3e, 0x85, 0x55, 0xee, 0xe8, 0x53, 0x83, 0x38, 0x8f, 0x34, 0xe4, 0x5f, 0x59, 0xe2, 0x32, 0x89, + 0x41, 0xfa, 0x2a, 0x91, 0x97, 0x2c, 0xfc, 0x47, 0xf0, 0x4b, 0x9b, 0x20, 0x26, 0x9d, 0x4d, 0xf6, + 0xc0, 0x7b, 0xab, 0x10, 0x16, 0xad, 0x7d, 0xc6, 0x71, 0xca, 0x1a, 0xa1, 0xa7, 0x1c, 0xcc, 0x77, + 0xbf, 0x4, 0xd4, 0x6f, 0x69, 0xd2, 0x2, 0xb9, 0xe, 0xb5, 0x65, 0xde, 0xd8, 0x63, 0xb3, 0x8, + ], + [ + 0x0, 0xbc, 0x65, 0xd9, 0xca, 0x76, 0xaf, 0x13, 0x89, 0x35, 0xec, 0x50, 0x43, 0xff, 0x26, 0x9a, + 0xf, 0xb3, 0x6a, 0xd6, 0xc5, 0x79, 0xa0, 0x1c, 0x86, 0x3a, 0xe3, 0x5f, 0x4c, 0xf0, 0x29, 0x95, + 0x1e, 0xa2, 0x7b, 0xc7, 0xd4, 0x68, 0xb1, 0xd, 0x97, 0x2b, 0xf2, 0x4e, 0x5d, 0xe1, 0x38, 0x84, + 0x11, 0xad, 0x74, 0xc8, 0xdb, 0x67, 0xbe, 0x2, 0x98, 0x24, 0xfd, 0x41, 0x52, 0xee, 0x37, 0x8b, + 0x3c, 0x80, 0x59, 0xe5, 0xf6, 0x4a, 0x93, 0x2f, 0xb5, 0x9, 0xd0, 0x6c, 0x7f, 0xc3, 0x1a, 0xa6, + 0x33, 0x8f, 0x56, 0xea, 0xf9, 0x45, 0x9c, 0x20, 0xba, 0x6, 0xdf, 0x63, 0x70, 0xcc, 0x15, 0xa9, + 0x22, 0x9e, 0x47, 0xfb, 0xe8, 0x54, 0x8d, 0x31, 0xab, 0x17, 0xce, 0x72, 0x61, 0xdd, 0x4, 0xb8, + 0x2d, 0x91, 0x48, 0xf4, 0xe7, 0x5b, 0x82, 0x3e, 0xa4, 0x18, 0xc1, 0x7d, 0x6e, 0xd2, 0xb, 0xb7, + 0x78, 0xc4, 0x1d, 0xa1, 0xb2, 0xe, 0xd7, 0x6b, 0xf1, 0x4d, 0x94, 0x28, 0x3b, 0x87, 0x5e, 0xe2, + 0x77, 0xcb, 0x12, 0xae, 0xbd, 0x1, 0xd8, 0x64, 0xfe, 0x42, 0x9b, 0x27, 0x34, 0x88, 0x51, 0xed, + 0x66, 0xda, 0x3, 0xbf, 0xac, 0x10, 0xc9, 0x75, 0xef, 0x53, 0x8a, 0x36, 0x25, 0x99, 0x40, 0xfc, + 0x69, 0xd5, 0xc, 0xb0, 0xa3, 0x1f, 0xc6, 0x7a, 0xe0, 0x5c, 0x85, 0x39, 0x2a, 0x96, 0x4f, 0xf3, + 0x44, 0xf8, 0x21, 0x9d, 0x8e, 0x32, 0xeb, 0x57, 0xcd, 0x71, 0xa8, 0x14, 0x7, 0xbb, 0x62, 0xde, + 0x4b, 0xf7, 0x2e, 0x92, 0x81, 0x3d, 0xe4, 0x58, 0xc2, 0x7e, 0xa7, 0x1b, 0x8, 0xb4, 0x6d, 0xd1, + 0x5a, 0xe6, 0x3f, 0x83, 0x90, 0x2c, 0xf5, 0x49, 0xd3, 0x6f, 0xb6, 0xa, 0x19, 0xa5, 0x7c, 0xc0, + 0x55, 0xe9, 0x30, 0x8c, 0x9f, 0x23, 0xfa, 0x46, 0xdc, 0x60, 0xb9, 0x5, 0x16, 0xaa, 0x73, 0xcf, + ], + [ + 0x0, 0xbd, 0x67, 0xda, 0xce, 0x73, 0xa9, 0x14, 0x81, 0x3c, 0xe6, 0x5b, 0x4f, 0xf2, 0x28, 0x95, + 0x1f, 0xa2, 0x78, 0xc5, 0xd1, 0x6c, 0xb6, 0xb, 0x9e, 0x23, 0xf9, 0x44, 0x50, 0xed, 0x37, 0x8a, + 0x3e, 0x83, 0x59, 0xe4, 0xf0, 0x4d, 0x97, 0x2a, 0xbf, 0x2, 0xd8, 0x65, 0x71, 0xcc, 0x16, 0xab, + 0x21, 0x9c, 0x46, 0xfb, 0xef, 0x52, 0x88, 0x35, 0xa0, 0x1d, 0xc7, 0x7a, 0x6e, 0xd3, 0x9, 0xb4, + 0x7c, 0xc1, 0x1b, 0xa6, 0xb2, 0xf, 0xd5, 0x68, 0xfd, 0x40, 0x9a, 0x27, 0x33, 0x8e, 0x54, 0xe9, + 0x63, 0xde, 0x4, 0xb9, 0xad, 0x10, 0xca, 0x77, 0xe2, 0x5f, 0x85, 0x38, 0x2c, 0x91, 0x4b, 0xf6, + 0x42, 0xff, 0x25, 0x98, 0x8c, 0x31, 0xeb, 0x56, 0xc3, 0x7e, 0xa4, 0x19, 0xd, 0xb0, 0x6a, 0xd7, + 0x5d, 0xe0, 0x3a, 0x87, 0x93, 0x2e, 0xf4, 0x49, 0xdc, 0x61, 0xbb, 0x6, 0x12, 0xaf, 0x75, 0xc8, + 0xf8, 0x45, 0x9f, 0x22, 0x36, 0x8b, 0x51, 0xec, 0x79, 0xc4, 0x1e, 0xa3, 0xb7, 0xa, 0xd0, 0x6d, + 0xe7, 0x5a, 0x80, 0x3d, 0x29, 0x94, 0x4e, 0xf3, 0x66, 0xdb, 0x1, 0xbc, 0xa8, 0x15, 0xcf, 0x72, + 0xc6, 0x7b, 0xa1, 0x1c, 0x8, 0xb5, 0x6f, 0xd2, 0x47, 0xfa, 0x20, 0x9d, 0x89, 0x34, 0xee, 0x53, + 0xd9, 0x64, 0xbe, 0x3, 0x17, 0xaa, 0x70, 0xcd, 0x58, 0xe5, 0x3f, 0x82, 0x96, 0x2b, 0xf1, 0x4c, + 0x84, 0x39, 0xe3, 0x5e, 0x4a, 0xf7, 0x2d, 0x90, 0x5, 0xb8, 0x62, 0xdf, 0xcb, 0x76, 0xac, 0x11, + 0x9b, 0x26, 0xfc, 0x41, 0x55, 0xe8, 0x32, 0x8f, 0x1a, 0xa7, 0x7d, 0xc0, 0xd4, 0x69, 0xb3, 0xe, + 0xba, 0x7, 0xdd, 0x60, 0x74, 0xc9, 0x13, 0xae, 0x3b, 0x86, 0x5c, 0xe1, 0xf5, 0x48, 0x92, 0x2f, + 0xa5, 0x18, 0xc2, 0x7f, 0x6b, 0xd6, 0xc, 0xb1, 0x24, 0x99, 0x43, 0xfe, 0xea, 0x57, 0x8d, 0x30, + ], + [ + 0x0, 0xbe, 0x61, 0xdf, 0xc2, 0x7c, 0xa3, 0x1d, 0x99, 0x27, 0xf8, 0x46, 0x5b, 0xe5, 0x3a, 0x84, + 0x2f, 0x91, 0x4e, 0xf0, 0xed, 0x53, 0x8c, 0x32, 0xb6, 0x8, 0xd7, 0x69, 0x74, 0xca, 0x15, 0xab, + 0x5e, 0xe0, 0x3f, 0x81, 0x9c, 0x22, 0xfd, 0x43, 0xc7, 0x79, 0xa6, 0x18, 0x5, 0xbb, 0x64, 0xda, + 0x71, 0xcf, 0x10, 0xae, 0xb3, 0xd, 0xd2, 0x6c, 0xe8, 0x56, 0x89, 0x37, 0x2a, 0x94, 0x4b, 0xf5, + 0xbc, 0x2, 0xdd, 0x63, 0x7e, 0xc0, 0x1f, 0xa1, 0x25, 0x9b, 0x44, 0xfa, 0xe7, 0x59, 0x86, 0x38, + 0x93, 0x2d, 0xf2, 0x4c, 0x51, 0xef, 0x30, 0x8e, 0xa, 0xb4, 0x6b, 0xd5, 0xc8, 0x76, 0xa9, 0x17, + 0xe2, 0x5c, 0x83, 0x3d, 0x20, 0x9e, 0x41, 0xff, 0x7b, 0xc5, 0x1a, 0xa4, 0xb9, 0x7, 0xd8, 0x66, + 0xcd, 0x73, 0xac, 0x12, 0xf, 0xb1, 0x6e, 0xd0, 0x54, 0xea, 0x35, 0x8b, 0x96, 0x28, 0xf7, 0x49, + 0x65, 0xdb, 0x4, 0xba, 0xa7, 0x19, 0xc6, 0x78, 0xfc, 0x42, 0x9d, 0x23, 0x3e, 0x80, 0x5f, 0xe1, + 0x4a, 0xf4, 0x2b, 0x95, 0x88, 0x36, 0xe9, 0x57, 0xd3, 0x6d, 0xb2, 0xc, 0x11, 0xaf, 0x70, 0xce, + 0x3b, 0x85, 0x5a, 0xe4, 0xf9, 0x47, 0x98, 0x26, 0xa2, 0x1c, 0xc3, 0x7d, 0x60, 0xde, 0x1, 0xbf, + 0x14, 0xaa, 0x75, 0xcb, 0xd6, 0x68, 0xb7, 0x9, 0x8d, 0x33, 0xec, 0x52, 0x4f, 0xf1, 0x2e, 0x90, + 0xd9, 0x67, 0xb8, 0x6, 0x1b, 0xa5, 0x7a, 0xc4, 0x40, 0xfe, 0x21, 0x9f, 0x82, 0x3c, 0xe3, 0x5d, + 0xf6, 0x48, 0x97, 0x29, 0x34, 0x8a, 0x55, 0xeb, 0x6f, 0xd1, 0xe, 0xb0, 0xad, 0x13, 0xcc, 0x72, + 0x87, 0x39, 0xe6, 0x58, 0x45, 0xfb, 0x24, 0x9a, 0x1e, 0xa0, 0x7f, 0xc1, 0xdc, 0x62, 0xbd, 0x3, + 0xa8, 0x16, 0xc9, 0x77, 0x6a, 0xd4, 0xb, 0xb5, 0x31, 0x8f, 0x50, 0xee, 0xf3, 0x4d, 0x92, 0x2c, + ], + [ + 0x0, 0xbf, 0x63, 0xdc, 0xc6, 0x79, 0xa5, 0x1a, 0x91, 0x2e, 0xf2, 0x4d, 0x57, 0xe8, 0x34, 0x8b, + 0x3f, 0x80, 0x5c, 0xe3, 0xf9, 0x46, 0x9a, 0x25, 0xae, 0x11, 0xcd, 0x72, 0x68, 0xd7, 0xb, 0xb4, + 0x7e, 0xc1, 0x1d, 0xa2, 0xb8, 0x7, 0xdb, 0x64, 0xef, 0x50, 0x8c, 0x33, 0x29, 0x96, 0x4a, 0xf5, + 0x41, 0xfe, 0x22, 0x9d, 0x87, 0x38, 0xe4, 0x5b, 0xd0, 0x6f, 0xb3, 0xc, 0x16, 0xa9, 0x75, 0xca, + 0xfc, 0x43, 0x9f, 0x20, 0x3a, 0x85, 0x59, 0xe6, 0x6d, 0xd2, 0xe, 0xb1, 0xab, 0x14, 0xc8, 0x77, + 0xc3, 0x7c, 0xa0, 0x1f, 0x5, 0xba, 0x66, 0xd9, 0x52, 0xed, 0x31, 0x8e, 0x94, 0x2b, 0xf7, 0x48, + 0x82, 0x3d, 0xe1, 0x5e, 0x44, 0xfb, 0x27, 0x98, 0x13, 0xac, 0x70, 0xcf, 0xd5, 0x6a, 0xb6, 0x9, + 0xbd, 0x2, 0xde, 0x61, 0x7b, 0xc4, 0x18, 0xa7, 0x2c, 0x93, 0x4f, 0xf0, 0xea, 0x55, 0x89, 0x36, + 0xe5, 0x5a, 0x86, 0x39, 0x23, 0x9c, 0x40, 0xff, 0x74, 0xcb, 0x17, 0xa8, 0xb2, 0xd, 0xd1, 0x6e, + 0xda, 0x65, 0xb9, 0x6, 0x1c, 0xa3, 0x7f, 0xc0, 0x4b, 0xf4, 0x28, 0x97, 0x8d, 0x32, 0xee, 0x51, + 0x9b, 0x24, 0xf8, 0x47, 0x5d, 0xe2, 0x3e, 0x81, 0xa, 0xb5, 0x69, 0xd6, 0xcc, 0x73, 0xaf, 0x10, + 0xa4, 0x1b, 0xc7, 0x78, 0x62, 0xdd, 0x1, 0xbe, 0x35, 0x8a, 0x56, 0xe9, 0xf3, 0x4c, 0x90, 0x2f, + 0x19, 0xa6, 0x7a, 0xc5, 0xdf, 0x60, 0xbc, 0x3, 0x88, 0x37, 0xeb, 0x54, 0x4e, 0xf1, 0x2d, 0x92, + 0x26, 0x99, 0x45, 0xfa, 0xe0, 0x5f, 0x83, 0x3c, 0xb7, 0x8, 0xd4, 0x6b, 0x71, 0xce, 0x12, 0xad, + 0x67, 0xd8, 0x4, 0xbb, 0xa1, 0x1e, 0xc2, 0x7d, 0xf6, 0x49, 0x95, 0x2a, 0x30, 0x8f, 0x53, 0xec, + 0x58, 0xe7, 0x3b, 0x84, 0x9e, 0x21, 0xfd, 0x42, 0xc9, 0x76, 0xaa, 0x15, 0xf, 0xb0, 0x6c, 0xd3, + ], + [ + 0x0, 0xc0, 0x9d, 0x5d, 0x27, 0xe7, 0xba, 0x7a, 0x4e, 0x8e, 0xd3, 0x13, 0x69, 0xa9, 0xf4, 0x34, + 0x9c, 0x5c, 0x1, 0xc1, 0xbb, 0x7b, 0x26, 0xe6, 0xd2, 0x12, 0x4f, 0x8f, 0xf5, 0x35, 0x68, 0xa8, + 0x25, 0xe5, 0xb8, 0x78, 0x2, 0xc2, 0x9f, 0x5f, 0x6b, 0xab, 0xf6, 0x36, 0x4c, 0x8c, 0xd1, 0x11, + 0xb9, 0x79, 0x24, 0xe4, 0x9e, 0x5e, 0x3, 0xc3, 0xf7, 0x37, 0x6a, 0xaa, 0xd0, 0x10, 0x4d, 0x8d, + 0x4a, 0x8a, 0xd7, 0x17, 0x6d, 0xad, 0xf0, 0x30, 0x4, 0xc4, 0x99, 0x59, 0x23, 0xe3, 0xbe, 0x7e, + 0xd6, 0x16, 0x4b, 0x8b, 0xf1, 0x31, 0x6c, 0xac, 0x98, 0x58, 0x5, 0xc5, 0xbf, 0x7f, 0x22, 0xe2, + 0x6f, 0xaf, 0xf2, 0x32, 0x48, 0x88, 0xd5, 0x15, 0x21, 0xe1, 0xbc, 0x7c, 0x6, 0xc6, 0x9b, 0x5b, + 0xf3, 0x33, 0x6e, 0xae, 0xd4, 0x14, 0x49, 0x89, 0xbd, 0x7d, 0x20, 0xe0, 0x9a, 0x5a, 0x7, 0xc7, + 0x94, 0x54, 0x9, 0xc9, 0xb3, 0x73, 0x2e, 0xee, 0xda, 0x1a, 0x47, 0x87, 0xfd, 0x3d, 0x60, 0xa0, + 0x8, 0xc8, 0x95, 0x55, 0x2f, 0xef, 0xb2, 0x72, 0x46, 0x86, 0xdb, 0x1b, 0x61, 0xa1, 0xfc, 0x3c, + 0xb1, 0x71, 0x2c, 0xec, 0x96, 0x56, 0xb, 0xcb, 0xff, 0x3f, 0x62, 0xa2, 0xd8, 0x18, 0x45, 0x85, + 0x2d, 0xed, 0xb0, 0x70, 0xa, 0xca, 0x97, 0x57, 0x63, 0xa3, 0xfe, 0x3e, 0x44, 0x84, 0xd9, 0x19, + 0xde, 0x1e, 0x43, 0x83, 0xf9, 0x39, 0x64, 0xa4, 0x90, 0x50, 0xd, 0xcd, 0xb7, 0x77, 0x2a, 0xea, + 0x42, 0x82, 0xdf, 0x1f, 0x65, 0xa5, 0xf8, 0x38, 0xc, 0xcc, 0x91, 0x51, 0x2b, 0xeb, 0xb6, 0x76, + 0xfb, 0x3b, 0x66, 0xa6, 0xdc, 0x1c, 0x41, 0x81, 0xb5, 0x75, 0x28, 0xe8, 0x92, 0x52, 0xf, 0xcf, + 0x67, 0xa7, 0xfa, 0x3a, 0x40, 0x80, 0xdd, 0x1d, 0x29, 0xe9, 0xb4, 0x74, 0xe, 0xce, 0x93, 0x53, + ], + [ + 0x0, 0xc1, 0x9f, 0x5e, 0x23, 0xe2, 0xbc, 0x7d, 0x46, 0x87, 0xd9, 0x18, 0x65, 0xa4, 0xfa, 0x3b, + 0x8c, 0x4d, 0x13, 0xd2, 0xaf, 0x6e, 0x30, 0xf1, 0xca, 0xb, 0x55, 0x94, 0xe9, 0x28, 0x76, 0xb7, + 0x5, 0xc4, 0x9a, 0x5b, 0x26, 0xe7, 0xb9, 0x78, 0x43, 0x82, 0xdc, 0x1d, 0x60, 0xa1, 0xff, 0x3e, + 0x89, 0x48, 0x16, 0xd7, 0xaa, 0x6b, 0x35, 0xf4, 0xcf, 0xe, 0x50, 0x91, 0xec, 0x2d, 0x73, 0xb2, + 0xa, 0xcb, 0x95, 0x54, 0x29, 0xe8, 0xb6, 0x77, 0x4c, 0x8d, 0xd3, 0x12, 0x6f, 0xae, 0xf0, 0x31, + 0x86, 0x47, 0x19, 0xd8, 0xa5, 0x64, 0x3a, 0xfb, 0xc0, 0x1, 0x5f, 0x9e, 0xe3, 0x22, 0x7c, 0xbd, + 0xf, 0xce, 0x90, 0x51, 0x2c, 0xed, 0xb3, 0x72, 0x49, 0x88, 0xd6, 0x17, 0x6a, 0xab, 0xf5, 0x34, + 0x83, 0x42, 0x1c, 0xdd, 0xa0, 0x61, 0x3f, 0xfe, 0xc5, 0x4, 0x5a, 0x9b, 0xe6, 0x27, 0x79, 0xb8, + 0x14, 0xd5, 0x8b, 0x4a, 0x37, 0xf6, 0xa8, 0x69, 0x52, 0x93, 0xcd, 0xc, 0x71, 0xb0, 0xee, 0x2f, + 0x98, 0x59, 0x7, 0xc6, 0xbb, 0x7a, 0x24, 0xe5, 0xde, 0x1f, 0x41, 0x80, 0xfd, 0x3c, 0x62, 0xa3, + 0x11, 0xd0, 0x8e, 0x4f, 0x32, 0xf3, 0xad, 0x6c, 0x57, 0x96, 0xc8, 0x9, 0x74, 0xb5, 0xeb, 0x2a, + 0x9d, 0x5c, 0x2, 0xc3, 0xbe, 0x7f, 0x21, 0xe0, 0xdb, 0x1a, 0x44, 0x85, 0xf8, 0x39, 0x67, 0xa6, + 0x1e, 0xdf, 0x81, 0x40, 0x3d, 0xfc, 0xa2, 0x63, 0x58, 0x99, 0xc7, 0x6, 0x7b, 0xba, 0xe4, 0x25, + 0x92, 0x53, 0xd, 0xcc, 0xb1, 0x70, 0x2e, 0xef, 0xd4, 0x15, 0x4b, 0x8a, 0xf7, 0x36, 0x68, 0xa9, + 0x1b, 0xda, 0x84, 0x45, 0x38, 0xf9, 0xa7, 0x66, 0x5d, 0x9c, 0xc2, 0x3, 0x7e, 0xbf, 0xe1, 0x20, + 0x97, 0x56, 0x8, 0xc9, 0xb4, 0x75, 0x2b, 0xea, 0xd1, 0x10, 0x4e, 0x8f, 0xf2, 0x33, 0x6d, 0xac, + ], + [ + 0x0, 0xc2, 0x99, 0x5b, 0x2f, 0xed, 0xb6, 0x74, 0x5e, 0x9c, 0xc7, 0x5, 0x71, 0xb3, 0xe8, 0x2a, + 0xbc, 0x7e, 0x25, 0xe7, 0x93, 0x51, 0xa, 0xc8, 0xe2, 0x20, 0x7b, 0xb9, 0xcd, 0xf, 0x54, 0x96, + 0x65, 0xa7, 0xfc, 0x3e, 0x4a, 0x88, 0xd3, 0x11, 0x3b, 0xf9, 0xa2, 0x60, 0x14, 0xd6, 0x8d, 0x4f, + 0xd9, 0x1b, 0x40, 0x82, 0xf6, 0x34, 0x6f, 0xad, 0x87, 0x45, 0x1e, 0xdc, 0xa8, 0x6a, 0x31, 0xf3, + 0xca, 0x8, 0x53, 0x91, 0xe5, 0x27, 0x7c, 0xbe, 0x94, 0x56, 0xd, 0xcf, 0xbb, 0x79, 0x22, 0xe0, + 0x76, 0xb4, 0xef, 0x2d, 0x59, 0x9b, 0xc0, 0x2, 0x28, 0xea, 0xb1, 0x73, 0x7, 0xc5, 0x9e, 0x5c, + 0xaf, 0x6d, 0x36, 0xf4, 0x80, 0x42, 0x19, 0xdb, 0xf1, 0x33, 0x68, 0xaa, 0xde, 0x1c, 0x47, 0x85, + 0x13, 0xd1, 0x8a, 0x48, 0x3c, 0xfe, 0xa5, 0x67, 0x4d, 0x8f, 0xd4, 0x16, 0x62, 0xa0, 0xfb, 0x39, + 0x89, 0x4b, 0x10, 0xd2, 0xa6, 0x64, 0x3f, 0xfd, 0xd7, 0x15, 0x4e, 0x8c, 0xf8, 0x3a, 0x61, 0xa3, + 0x35, 0xf7, 0xac, 0x6e, 0x1a, 0xd8, 0x83, 0x41, 0x6b, 0xa9, 0xf2, 0x30, 0x44, 0x86, 0xdd, 0x1f, + 0xec, 0x2e, 0x75, 0xb7, 0xc3, 0x1, 0x5a, 0x98, 0xb2, 0x70, 0x2b, 0xe9, 0x9d, 0x5f, 0x4, 0xc6, + 0x50, 0x92, 0xc9, 0xb, 0x7f, 0xbd, 0xe6, 0x24, 0xe, 0xcc, 0x97, 0x55, 0x21, 0xe3, 0xb8, 0x7a, + 0x43, 0x81, 0xda, 0x18, 0x6c, 0xae, 0xf5, 0x37, 0x1d, 0xdf, 0x84, 0x46, 0x32, 0xf0, 0xab, 0x69, + 0xff, 0x3d, 0x66, 0xa4, 0xd0, 0x12, 0x49, 0x8b, 0xa1, 0x63, 0x38, 0xfa, 0x8e, 0x4c, 0x17, 0xd5, + 0x26, 0xe4, 0xbf, 0x7d, 0x9, 0xcb, 0x90, 0x52, 0x78, 0xba, 0xe1, 0x23, 0x57, 0x95, 0xce, 0xc, + 0x9a, 0x58, 0x3, 0xc1, 0xb5, 0x77, 0x2c, 0xee, 0xc4, 0x6, 0x5d, 0x9f, 0xeb, 0x29, 0x72, 0xb0, + ], + [ + 0x0, 0xc3, 0x9b, 0x58, 0x2b, 0xe8, 0xb0, 0x73, 0x56, 0x95, 0xcd, 0xe, 0x7d, 0xbe, 0xe6, 0x25, + 0xac, 0x6f, 0x37, 0xf4, 0x87, 0x44, 0x1c, 0xdf, 0xfa, 0x39, 0x61, 0xa2, 0xd1, 0x12, 0x4a, 0x89, + 0x45, 0x86, 0xde, 0x1d, 0x6e, 0xad, 0xf5, 0x36, 0x13, 0xd0, 0x88, 0x4b, 0x38, 0xfb, 0xa3, 0x60, + 0xe9, 0x2a, 0x72, 0xb1, 0xc2, 0x1, 0x59, 0x9a, 0xbf, 0x7c, 0x24, 0xe7, 0x94, 0x57, 0xf, 0xcc, + 0x8a, 0x49, 0x11, 0xd2, 0xa1, 0x62, 0x3a, 0xf9, 0xdc, 0x1f, 0x47, 0x84, 0xf7, 0x34, 0x6c, 0xaf, + 0x26, 0xe5, 0xbd, 0x7e, 0xd, 0xce, 0x96, 0x55, 0x70, 0xb3, 0xeb, 0x28, 0x5b, 0x98, 0xc0, 0x3, + 0xcf, 0xc, 0x54, 0x97, 0xe4, 0x27, 0x7f, 0xbc, 0x99, 0x5a, 0x2, 0xc1, 0xb2, 0x71, 0x29, 0xea, + 0x63, 0xa0, 0xf8, 0x3b, 0x48, 0x8b, 0xd3, 0x10, 0x35, 0xf6, 0xae, 0x6d, 0x1e, 0xdd, 0x85, 0x46, + 0x9, 0xca, 0x92, 0x51, 0x22, 0xe1, 0xb9, 0x7a, 0x5f, 0x9c, 0xc4, 0x7, 0x74, 0xb7, 0xef, 0x2c, + 0xa5, 0x66, 0x3e, 0xfd, 0x8e, 0x4d, 0x15, 0xd6, 0xf3, 0x30, 0x68, 0xab, 0xd8, 0x1b, 0x43, 0x80, + 0x4c, 0x8f, 0xd7, 0x14, 0x67, 0xa4, 0xfc, 0x3f, 0x1a, 0xd9, 0x81, 0x42, 0x31, 0xf2, 0xaa, 0x69, + 0xe0, 0x23, 0x7b, 0xb8, 0xcb, 0x8, 0x50, 0x93, 0xb6, 0x75, 0x2d, 0xee, 0x9d, 0x5e, 0x6, 0xc5, + 0x83, 0x40, 0x18, 0xdb, 0xa8, 0x6b, 0x33, 0xf0, 0xd5, 0x16, 0x4e, 0x8d, 0xfe, 0x3d, 0x65, 0xa6, + 0x2f, 0xec, 0xb4, 0x77, 0x4, 0xc7, 0x9f, 0x5c, 0x79, 0xba, 0xe2, 0x21, 0x52, 0x91, 0xc9, 0xa, + 0xc6, 0x5, 0x5d, 0x9e, 0xed, 0x2e, 0x76, 0xb5, 0x90, 0x53, 0xb, 0xc8, 0xbb, 0x78, 0x20, 0xe3, + 0x6a, 0xa9, 0xf1, 0x32, 0x41, 0x82, 0xda, 0x19, 0x3c, 0xff, 0xa7, 0x64, 0x17, 0xd4, 0x8c, 0x4f, + ], + [ + 0x0, 0xc4, 0x95, 0x51, 0x37, 0xf3, 0xa2, 0x66, 0x6e, 0xaa, 0xfb, 0x3f, 0x59, 0x9d, 0xcc, 0x8, + 0xdc, 0x18, 0x49, 0x8d, 0xeb, 0x2f, 0x7e, 0xba, 0xb2, 0x76, 0x27, 0xe3, 0x85, 0x41, 0x10, 0xd4, + 0xa5, 0x61, 0x30, 0xf4, 0x92, 0x56, 0x7, 0xc3, 0xcb, 0xf, 0x5e, 0x9a, 0xfc, 0x38, 0x69, 0xad, + 0x79, 0xbd, 0xec, 0x28, 0x4e, 0x8a, 0xdb, 0x1f, 0x17, 0xd3, 0x82, 0x46, 0x20, 0xe4, 0xb5, 0x71, + 0x57, 0x93, 0xc2, 0x6, 0x60, 0xa4, 0xf5, 0x31, 0x39, 0xfd, 0xac, 0x68, 0xe, 0xca, 0x9b, 0x5f, + 0x8b, 0x4f, 0x1e, 0xda, 0xbc, 0x78, 0x29, 0xed, 0xe5, 0x21, 0x70, 0xb4, 0xd2, 0x16, 0x47, 0x83, + 0xf2, 0x36, 0x67, 0xa3, 0xc5, 0x1, 0x50, 0x94, 0x9c, 0x58, 0x9, 0xcd, 0xab, 0x6f, 0x3e, 0xfa, + 0x2e, 0xea, 0xbb, 0x7f, 0x19, 0xdd, 0x8c, 0x48, 0x40, 0x84, 0xd5, 0x11, 0x77, 0xb3, 0xe2, 0x26, + 0xae, 0x6a, 0x3b, 0xff, 0x99, 0x5d, 0xc, 0xc8, 0xc0, 0x4, 0x55, 0x91, 0xf7, 0x33, 0x62, 0xa6, + 0x72, 0xb6, 0xe7, 0x23, 0x45, 0x81, 0xd0, 0x14, 0x1c, 0xd8, 0x89, 0x4d, 0x2b, 0xef, 0xbe, 0x7a, + 0xb, 0xcf, 0x9e, 0x5a, 0x3c, 0xf8, 0xa9, 0x6d, 0x65, 0xa1, 0xf0, 0x34, 0x52, 0x96, 0xc7, 0x3, + 0xd7, 0x13, 0x42, 0x86, 0xe0, 0x24, 0x75, 0xb1, 0xb9, 0x7d, 0x2c, 0xe8, 0x8e, 0x4a, 0x1b, 0xdf, + 0xf9, 0x3d, 0x6c, 0xa8, 0xce, 0xa, 0x5b, 0x9f, 0x97, 0x53, 0x2, 0xc6, 0xa0, 0x64, 0x35, 0xf1, + 0x25, 0xe1, 0xb0, 0x74, 0x12, 0xd6, 0x87, 0x43, 0x4b, 0x8f, 0xde, 0x1a, 0x7c, 0xb8, 0xe9, 0x2d, + 0x5c, 0x98, 0xc9, 0xd, 0x6b, 0xaf, 0xfe, 0x3a, 0x32, 0xf6, 0xa7, 0x63, 0x5, 0xc1, 0x90, 0x54, + 0x80, 0x44, 0x15, 0xd1, 0xb7, 0x73, 0x22, 0xe6, 0xee, 0x2a, 0x7b, 0xbf, 0xd9, 0x1d, 0x4c, 0x88, + ], + [ + 0x0, 0xc5, 0x97, 0x52, 0x33, 0xf6, 0xa4, 0x61, 0x66, 0xa3, 0xf1, 0x34, 0x55, 0x90, 0xc2, 0x7, + 0xcc, 0x9, 0x5b, 0x9e, 0xff, 0x3a, 0x68, 0xad, 0xaa, 0x6f, 0x3d, 0xf8, 0x99, 0x5c, 0xe, 0xcb, + 0x85, 0x40, 0x12, 0xd7, 0xb6, 0x73, 0x21, 0xe4, 0xe3, 0x26, 0x74, 0xb1, 0xd0, 0x15, 0x47, 0x82, + 0x49, 0x8c, 0xde, 0x1b, 0x7a, 0xbf, 0xed, 0x28, 0x2f, 0xea, 0xb8, 0x7d, 0x1c, 0xd9, 0x8b, 0x4e, + 0x17, 0xd2, 0x80, 0x45, 0x24, 0xe1, 0xb3, 0x76, 0x71, 0xb4, 0xe6, 0x23, 0x42, 0x87, 0xd5, 0x10, + 0xdb, 0x1e, 0x4c, 0x89, 0xe8, 0x2d, 0x7f, 0xba, 0xbd, 0x78, 0x2a, 0xef, 0x8e, 0x4b, 0x19, 0xdc, + 0x92, 0x57, 0x5, 0xc0, 0xa1, 0x64, 0x36, 0xf3, 0xf4, 0x31, 0x63, 0xa6, 0xc7, 0x2, 0x50, 0x95, + 0x5e, 0x9b, 0xc9, 0xc, 0x6d, 0xa8, 0xfa, 0x3f, 0x38, 0xfd, 0xaf, 0x6a, 0xb, 0xce, 0x9c, 0x59, + 0x2e, 0xeb, 0xb9, 0x7c, 0x1d, 0xd8, 0x8a, 0x4f, 0x48, 0x8d, 0xdf, 0x1a, 0x7b, 0xbe, 0xec, 0x29, + 0xe2, 0x27, 0x75, 0xb0, 0xd1, 0x14, 0x46, 0x83, 0x84, 0x41, 0x13, 0xd6, 0xb7, 0x72, 0x20, 0xe5, + 0xab, 0x6e, 0x3c, 0xf9, 0x98, 0x5d, 0xf, 0xca, 0xcd, 0x8, 0x5a, 0x9f, 0xfe, 0x3b, 0x69, 0xac, + 0x67, 0xa2, 0xf0, 0x35, 0x54, 0x91, 0xc3, 0x6, 0x1, 0xc4, 0x96, 0x53, 0x32, 0xf7, 0xa5, 0x60, + 0x39, 0xfc, 0xae, 0x6b, 0xa, 0xcf, 0x9d, 0x58, 0x5f, 0x9a, 0xc8, 0xd, 0x6c, 0xa9, 0xfb, 0x3e, + 0xf5, 0x30, 0x62, 0xa7, 0xc6, 0x3, 0x51, 0x94, 0x93, 0x56, 0x4, 0xc1, 0xa0, 0x65, 0x37, 0xf2, + 0xbc, 0x79, 0x2b, 0xee, 0x8f, 0x4a, 0x18, 0xdd, 0xda, 0x1f, 0x4d, 0x88, 0xe9, 0x2c, 0x7e, 0xbb, + 0x70, 0xb5, 0xe7, 0x22, 0x43, 0x86, 0xd4, 0x11, 0x16, 0xd3, 0x81, 0x44, 0x25, 0xe0, 0xb2, 0x77, + ], + [ + 0x0, 0xc6, 0x91, 0x57, 0x3f, 0xf9, 0xae, 0x68, 0x7e, 0xb8, 0xef, 0x29, 0x41, 0x87, 0xd0, 0x16, + 0xfc, 0x3a, 0x6d, 0xab, 0xc3, 0x5, 0x52, 0x94, 0x82, 0x44, 0x13, 0xd5, 0xbd, 0x7b, 0x2c, 0xea, + 0xe5, 0x23, 0x74, 0xb2, 0xda, 0x1c, 0x4b, 0x8d, 0x9b, 0x5d, 0xa, 0xcc, 0xa4, 0x62, 0x35, 0xf3, + 0x19, 0xdf, 0x88, 0x4e, 0x26, 0xe0, 0xb7, 0x71, 0x67, 0xa1, 0xf6, 0x30, 0x58, 0x9e, 0xc9, 0xf, + 0xd7, 0x11, 0x46, 0x80, 0xe8, 0x2e, 0x79, 0xbf, 0xa9, 0x6f, 0x38, 0xfe, 0x96, 0x50, 0x7, 0xc1, + 0x2b, 0xed, 0xba, 0x7c, 0x14, 0xd2, 0x85, 0x43, 0x55, 0x93, 0xc4, 0x2, 0x6a, 0xac, 0xfb, 0x3d, + 0x32, 0xf4, 0xa3, 0x65, 0xd, 0xcb, 0x9c, 0x5a, 0x4c, 0x8a, 0xdd, 0x1b, 0x73, 0xb5, 0xe2, 0x24, + 0xce, 0x8, 0x5f, 0x99, 0xf1, 0x37, 0x60, 0xa6, 0xb0, 0x76, 0x21, 0xe7, 0x8f, 0x49, 0x1e, 0xd8, + 0xb3, 0x75, 0x22, 0xe4, 0x8c, 0x4a, 0x1d, 0xdb, 0xcd, 0xb, 0x5c, 0x9a, 0xf2, 0x34, 0x63, 0xa5, + 0x4f, 0x89, 0xde, 0x18, 0x70, 0xb6, 0xe1, 0x27, 0x31, 0xf7, 0xa0, 0x66, 0xe, 0xc8, 0x9f, 0x59, + 0x56, 0x90, 0xc7, 0x1, 0x69, 0xaf, 0xf8, 0x3e, 0x28, 0xee, 0xb9, 0x7f, 0x17, 0xd1, 0x86, 0x40, + 0xaa, 0x6c, 0x3b, 0xfd, 0x95, 0x53, 0x4, 0xc2, 0xd4, 0x12, 0x45, 0x83, 0xeb, 0x2d, 0x7a, 0xbc, + 0x64, 0xa2, 0xf5, 0x33, 0x5b, 0x9d, 0xca, 0xc, 0x1a, 0xdc, 0x8b, 0x4d, 0x25, 0xe3, 0xb4, 0x72, + 0x98, 0x5e, 0x9, 0xcf, 0xa7, 0x61, 0x36, 0xf0, 0xe6, 0x20, 0x77, 0xb1, 0xd9, 0x1f, 0x48, 0x8e, + 0x81, 0x47, 0x10, 0xd6, 0xbe, 0x78, 0x2f, 0xe9, 0xff, 0x39, 0x6e, 0xa8, 0xc0, 0x6, 0x51, 0x97, + 0x7d, 0xbb, 0xec, 0x2a, 0x42, 0x84, 0xd3, 0x15, 0x3, 0xc5, 0x92, 0x54, 0x3c, 0xfa, 0xad, 0x6b, + ], + [ + 0x0, 0xc7, 0x93, 0x54, 0x3b, 0xfc, 0xa8, 0x6f, 0x76, 0xb1, 0xe5, 0x22, 0x4d, 0x8a, 0xde, 0x19, + 0xec, 0x2b, 0x7f, 0xb8, 0xd7, 0x10, 0x44, 0x83, 0x9a, 0x5d, 0x9, 0xce, 0xa1, 0x66, 0x32, 0xf5, + 0xc5, 0x2, 0x56, 0x91, 0xfe, 0x39, 0x6d, 0xaa, 0xb3, 0x74, 0x20, 0xe7, 0x88, 0x4f, 0x1b, 0xdc, + 0x29, 0xee, 0xba, 0x7d, 0x12, 0xd5, 0x81, 0x46, 0x5f, 0x98, 0xcc, 0xb, 0x64, 0xa3, 0xf7, 0x30, + 0x97, 0x50, 0x4, 0xc3, 0xac, 0x6b, 0x3f, 0xf8, 0xe1, 0x26, 0x72, 0xb5, 0xda, 0x1d, 0x49, 0x8e, + 0x7b, 0xbc, 0xe8, 0x2f, 0x40, 0x87, 0xd3, 0x14, 0xd, 0xca, 0x9e, 0x59, 0x36, 0xf1, 0xa5, 0x62, + 0x52, 0x95, 0xc1, 0x6, 0x69, 0xae, 0xfa, 0x3d, 0x24, 0xe3, 0xb7, 0x70, 0x1f, 0xd8, 0x8c, 0x4b, + 0xbe, 0x79, 0x2d, 0xea, 0x85, 0x42, 0x16, 0xd1, 0xc8, 0xf, 0x5b, 0x9c, 0xf3, 0x34, 0x60, 0xa7, + 0x33, 0xf4, 0xa0, 0x67, 0x8, 0xcf, 0x9b, 0x5c, 0x45, 0x82, 0xd6, 0x11, 0x7e, 0xb9, 0xed, 0x2a, + 0xdf, 0x18, 0x4c, 0x8b, 0xe4, 0x23, 0x77, 0xb0, 0xa9, 0x6e, 0x3a, 0xfd, 0x92, 0x55, 0x1, 0xc6, + 0xf6, 0x31, 0x65, 0xa2, 0xcd, 0xa, 0x5e, 0x99, 0x80, 0x47, 0x13, 0xd4, 0xbb, 0x7c, 0x28, 0xef, + 0x1a, 0xdd, 0x89, 0x4e, 0x21, 0xe6, 0xb2, 0x75, 0x6c, 0xab, 0xff, 0x38, 0x57, 0x90, 0xc4, 0x3, + 0xa4, 0x63, 0x37, 0xf0, 0x9f, 0x58, 0xc, 0xcb, 0xd2, 0x15, 0x41, 0x86, 0xe9, 0x2e, 0x7a, 0xbd, + 0x48, 0x8f, 0xdb, 0x1c, 0x73, 0xb4, 0xe0, 0x27, 0x3e, 0xf9, 0xad, 0x6a, 0x5, 0xc2, 0x96, 0x51, + 0x61, 0xa6, 0xf2, 0x35, 0x5a, 0x9d, 0xc9, 0xe, 0x17, 0xd0, 0x84, 0x43, 0x2c, 0xeb, 0xbf, 0x78, + 0x8d, 0x4a, 0x1e, 0xd9, 0xb6, 0x71, 0x25, 0xe2, 0xfb, 0x3c, 0x68, 0xaf, 0xc0, 0x7, 0x53, 0x94, + ], + [ + 0x0, 0xc8, 0x8d, 0x45, 0x7, 0xcf, 0x8a, 0x42, 0xe, 0xc6, 0x83, 0x4b, 0x9, 0xc1, 0x84, 0x4c, + 0x1c, 0xd4, 0x91, 0x59, 0x1b, 0xd3, 0x96, 0x5e, 0x12, 0xda, 0x9f, 0x57, 0x15, 0xdd, 0x98, 0x50, + 0x38, 0xf0, 0xb5, 0x7d, 0x3f, 0xf7, 0xb2, 0x7a, 0x36, 0xfe, 0xbb, 0x73, 0x31, 0xf9, 0xbc, 0x74, + 0x24, 0xec, 0xa9, 0x61, 0x23, 0xeb, 0xae, 0x66, 0x2a, 0xe2, 0xa7, 0x6f, 0x2d, 0xe5, 0xa0, 0x68, + 0x70, 0xb8, 0xfd, 0x35, 0x77, 0xbf, 0xfa, 0x32, 0x7e, 0xb6, 0xf3, 0x3b, 0x79, 0xb1, 0xf4, 0x3c, + 0x6c, 0xa4, 0xe1, 0x29, 0x6b, 0xa3, 0xe6, 0x2e, 0x62, 0xaa, 0xef, 0x27, 0x65, 0xad, 0xe8, 0x20, + 0x48, 0x80, 0xc5, 0xd, 0x4f, 0x87, 0xc2, 0xa, 0x46, 0x8e, 0xcb, 0x3, 0x41, 0x89, 0xcc, 0x4, + 0x54, 0x9c, 0xd9, 0x11, 0x53, 0x9b, 0xde, 0x16, 0x5a, 0x92, 0xd7, 0x1f, 0x5d, 0x95, 0xd0, 0x18, + 0xe0, 0x28, 0x6d, 0xa5, 0xe7, 0x2f, 0x6a, 0xa2, 0xee, 0x26, 0x63, 0xab, 0xe9, 0x21, 0x64, 0xac, + 0xfc, 0x34, 0x71, 0xb9, 0xfb, 0x33, 0x76, 0xbe, 0xf2, 0x3a, 0x7f, 0xb7, 0xf5, 0x3d, 0x78, 0xb0, + 0xd8, 0x10, 0x55, 0x9d, 0xdf, 0x17, 0x52, 0x9a, 0xd6, 0x1e, 0x5b, 0x93, 0xd1, 0x19, 0x5c, 0x94, + 0xc4, 0xc, 0x49, 0x81, 0xc3, 0xb, 0x4e, 0x86, 0xca, 0x2, 0x47, 0x8f, 0xcd, 0x5, 0x40, 0x88, + 0x90, 0x58, 0x1d, 0xd5, 0x97, 0x5f, 0x1a, 0xd2, 0x9e, 0x56, 0x13, 0xdb, 0x99, 0x51, 0x14, 0xdc, + 0x8c, 0x44, 0x1, 0xc9, 0x8b, 0x43, 0x6, 0xce, 0x82, 0x4a, 0xf, 0xc7, 0x85, 0x4d, 0x8, 0xc0, + 0xa8, 0x60, 0x25, 0xed, 0xaf, 0x67, 0x22, 0xea, 0xa6, 0x6e, 0x2b, 0xe3, 0xa1, 0x69, 0x2c, 0xe4, + 0xb4, 0x7c, 0x39, 0xf1, 0xb3, 0x7b, 0x3e, 0xf6, 0xba, 0x72, 0x37, 0xff, 0xbd, 0x75, 0x30, 0xf8, + ], + [ + 0x0, 0xc9, 0x8f, 0x46, 0x3, 0xca, 0x8c, 0x45, 0x6, 0xcf, 0x89, 0x40, 0x5, 0xcc, 0x8a, 0x43, 0xc, + 0xc5, 0x83, 0x4a, 0xf, 0xc6, 0x80, 0x49, 0xa, 0xc3, 0x85, 0x4c, 0x9, 0xc0, 0x86, 0x4f, 0x18, + 0xd1, 0x97, 0x5e, 0x1b, 0xd2, 0x94, 0x5d, 0x1e, 0xd7, 0x91, 0x58, 0x1d, 0xd4, 0x92, 0x5b, 0x14, + 0xdd, 0x9b, 0x52, 0x17, 0xde, 0x98, 0x51, 0x12, 0xdb, 0x9d, 0x54, 0x11, 0xd8, 0x9e, 0x57, 0x30, + 0xf9, 0xbf, 0x76, 0x33, 0xfa, 0xbc, 0x75, 0x36, 0xff, 0xb9, 0x70, 0x35, 0xfc, 0xba, 0x73, 0x3c, + 0xf5, 0xb3, 0x7a, 0x3f, 0xf6, 0xb0, 0x79, 0x3a, 0xf3, 0xb5, 0x7c, 0x39, 0xf0, 0xb6, 0x7f, 0x28, + 0xe1, 0xa7, 0x6e, 0x2b, 0xe2, 0xa4, 0x6d, 0x2e, 0xe7, 0xa1, 0x68, 0x2d, 0xe4, 0xa2, 0x6b, 0x24, + 0xed, 0xab, 0x62, 0x27, 0xee, 0xa8, 0x61, 0x22, 0xeb, 0xad, 0x64, 0x21, 0xe8, 0xae, 0x67, 0x60, + 0xa9, 0xef, 0x26, 0x63, 0xaa, 0xec, 0x25, 0x66, 0xaf, 0xe9, 0x20, 0x65, 0xac, 0xea, 0x23, 0x6c, + 0xa5, 0xe3, 0x2a, 0x6f, 0xa6, 0xe0, 0x29, 0x6a, 0xa3, 0xe5, 0x2c, 0x69, 0xa0, 0xe6, 0x2f, 0x78, + 0xb1, 0xf7, 0x3e, 0x7b, 0xb2, 0xf4, 0x3d, 0x7e, 0xb7, 0xf1, 0x38, 0x7d, 0xb4, 0xf2, 0x3b, 0x74, + 0xbd, 0xfb, 0x32, 0x77, 0xbe, 0xf8, 0x31, 0x72, 0xbb, 0xfd, 0x34, 0x71, 0xb8, 0xfe, 0x37, 0x50, + 0x99, 0xdf, 0x16, 0x53, 0x9a, 0xdc, 0x15, 0x56, 0x9f, 0xd9, 0x10, 0x55, 0x9c, 0xda, 0x13, 0x5c, + 0x95, 0xd3, 0x1a, 0x5f, 0x96, 0xd0, 0x19, 0x5a, 0x93, 0xd5, 0x1c, 0x59, 0x90, 0xd6, 0x1f, 0x48, + 0x81, 0xc7, 0xe, 0x4b, 0x82, 0xc4, 0xd, 0x4e, 0x87, 0xc1, 0x8, 0x4d, 0x84, 0xc2, 0xb, 0x44, + 0x8d, 0xcb, 0x2, 0x47, 0x8e, 0xc8, 0x1, 0x42, 0x8b, 0xcd, 0x4, 0x41, 0x88, 0xce, 0x7, + ], + [ + 0x0, 0xca, 0x89, 0x43, 0xf, 0xc5, 0x86, 0x4c, 0x1e, 0xd4, 0x97, 0x5d, 0x11, 0xdb, 0x98, 0x52, + 0x3c, 0xf6, 0xb5, 0x7f, 0x33, 0xf9, 0xba, 0x70, 0x22, 0xe8, 0xab, 0x61, 0x2d, 0xe7, 0xa4, 0x6e, + 0x78, 0xb2, 0xf1, 0x3b, 0x77, 0xbd, 0xfe, 0x34, 0x66, 0xac, 0xef, 0x25, 0x69, 0xa3, 0xe0, 0x2a, + 0x44, 0x8e, 0xcd, 0x7, 0x4b, 0x81, 0xc2, 0x8, 0x5a, 0x90, 0xd3, 0x19, 0x55, 0x9f, 0xdc, 0x16, + 0xf0, 0x3a, 0x79, 0xb3, 0xff, 0x35, 0x76, 0xbc, 0xee, 0x24, 0x67, 0xad, 0xe1, 0x2b, 0x68, 0xa2, + 0xcc, 0x6, 0x45, 0x8f, 0xc3, 0x9, 0x4a, 0x80, 0xd2, 0x18, 0x5b, 0x91, 0xdd, 0x17, 0x54, 0x9e, + 0x88, 0x42, 0x1, 0xcb, 0x87, 0x4d, 0xe, 0xc4, 0x96, 0x5c, 0x1f, 0xd5, 0x99, 0x53, 0x10, 0xda, + 0xb4, 0x7e, 0x3d, 0xf7, 0xbb, 0x71, 0x32, 0xf8, 0xaa, 0x60, 0x23, 0xe9, 0xa5, 0x6f, 0x2c, 0xe6, + 0xfd, 0x37, 0x74, 0xbe, 0xf2, 0x38, 0x7b, 0xb1, 0xe3, 0x29, 0x6a, 0xa0, 0xec, 0x26, 0x65, 0xaf, + 0xc1, 0xb, 0x48, 0x82, 0xce, 0x4, 0x47, 0x8d, 0xdf, 0x15, 0x56, 0x9c, 0xd0, 0x1a, 0x59, 0x93, + 0x85, 0x4f, 0xc, 0xc6, 0x8a, 0x40, 0x3, 0xc9, 0x9b, 0x51, 0x12, 0xd8, 0x94, 0x5e, 0x1d, 0xd7, + 0xb9, 0x73, 0x30, 0xfa, 0xb6, 0x7c, 0x3f, 0xf5, 0xa7, 0x6d, 0x2e, 0xe4, 0xa8, 0x62, 0x21, 0xeb, + 0xd, 0xc7, 0x84, 0x4e, 0x2, 0xc8, 0x8b, 0x41, 0x13, 0xd9, 0x9a, 0x50, 0x1c, 0xd6, 0x95, 0x5f, + 0x31, 0xfb, 0xb8, 0x72, 0x3e, 0xf4, 0xb7, 0x7d, 0x2f, 0xe5, 0xa6, 0x6c, 0x20, 0xea, 0xa9, 0x63, + 0x75, 0xbf, 0xfc, 0x36, 0x7a, 0xb0, 0xf3, 0x39, 0x6b, 0xa1, 0xe2, 0x28, 0x64, 0xae, 0xed, 0x27, + 0x49, 0x83, 0xc0, 0xa, 0x46, 0x8c, 0xcf, 0x5, 0x57, 0x9d, 0xde, 0x14, 0x58, 0x92, 0xd1, 0x1b, + ], + [ + 0x0, 0xcb, 0x8b, 0x40, 0xb, 0xc0, 0x80, 0x4b, 0x16, 0xdd, 0x9d, 0x56, 0x1d, 0xd6, 0x96, 0x5d, + 0x2c, 0xe7, 0xa7, 0x6c, 0x27, 0xec, 0xac, 0x67, 0x3a, 0xf1, 0xb1, 0x7a, 0x31, 0xfa, 0xba, 0x71, + 0x58, 0x93, 0xd3, 0x18, 0x53, 0x98, 0xd8, 0x13, 0x4e, 0x85, 0xc5, 0xe, 0x45, 0x8e, 0xce, 0x5, + 0x74, 0xbf, 0xff, 0x34, 0x7f, 0xb4, 0xf4, 0x3f, 0x62, 0xa9, 0xe9, 0x22, 0x69, 0xa2, 0xe2, 0x29, + 0xb0, 0x7b, 0x3b, 0xf0, 0xbb, 0x70, 0x30, 0xfb, 0xa6, 0x6d, 0x2d, 0xe6, 0xad, 0x66, 0x26, 0xed, + 0x9c, 0x57, 0x17, 0xdc, 0x97, 0x5c, 0x1c, 0xd7, 0x8a, 0x41, 0x1, 0xca, 0x81, 0x4a, 0xa, 0xc1, + 0xe8, 0x23, 0x63, 0xa8, 0xe3, 0x28, 0x68, 0xa3, 0xfe, 0x35, 0x75, 0xbe, 0xf5, 0x3e, 0x7e, 0xb5, + 0xc4, 0xf, 0x4f, 0x84, 0xcf, 0x4, 0x44, 0x8f, 0xd2, 0x19, 0x59, 0x92, 0xd9, 0x12, 0x52, 0x99, + 0x7d, 0xb6, 0xf6, 0x3d, 0x76, 0xbd, 0xfd, 0x36, 0x6b, 0xa0, 0xe0, 0x2b, 0x60, 0xab, 0xeb, 0x20, + 0x51, 0x9a, 0xda, 0x11, 0x5a, 0x91, 0xd1, 0x1a, 0x47, 0x8c, 0xcc, 0x7, 0x4c, 0x87, 0xc7, 0xc, + 0x25, 0xee, 0xae, 0x65, 0x2e, 0xe5, 0xa5, 0x6e, 0x33, 0xf8, 0xb8, 0x73, 0x38, 0xf3, 0xb3, 0x78, + 0x9, 0xc2, 0x82, 0x49, 0x2, 0xc9, 0x89, 0x42, 0x1f, 0xd4, 0x94, 0x5f, 0x14, 0xdf, 0x9f, 0x54, + 0xcd, 0x6, 0x46, 0x8d, 0xc6, 0xd, 0x4d, 0x86, 0xdb, 0x10, 0x50, 0x9b, 0xd0, 0x1b, 0x5b, 0x90, + 0xe1, 0x2a, 0x6a, 0xa1, 0xea, 0x21, 0x61, 0xaa, 0xf7, 0x3c, 0x7c, 0xb7, 0xfc, 0x37, 0x77, 0xbc, + 0x95, 0x5e, 0x1e, 0xd5, 0x9e, 0x55, 0x15, 0xde, 0x83, 0x48, 0x8, 0xc3, 0x88, 0x43, 0x3, 0xc8, + 0xb9, 0x72, 0x32, 0xf9, 0xb2, 0x79, 0x39, 0xf2, 0xaf, 0x64, 0x24, 0xef, 0xa4, 0x6f, 0x2f, 0xe4, + ], + [ + 0x0, 0xcc, 0x85, 0x49, 0x17, 0xdb, 0x92, 0x5e, 0x2e, 0xe2, 0xab, 0x67, 0x39, 0xf5, 0xbc, 0x70, + 0x5c, 0x90, 0xd9, 0x15, 0x4b, 0x87, 0xce, 0x2, 0x72, 0xbe, 0xf7, 0x3b, 0x65, 0xa9, 0xe0, 0x2c, + 0xb8, 0x74, 0x3d, 0xf1, 0xaf, 0x63, 0x2a, 0xe6, 0x96, 0x5a, 0x13, 0xdf, 0x81, 0x4d, 0x4, 0xc8, + 0xe4, 0x28, 0x61, 0xad, 0xf3, 0x3f, 0x76, 0xba, 0xca, 0x6, 0x4f, 0x83, 0xdd, 0x11, 0x58, 0x94, + 0x6d, 0xa1, 0xe8, 0x24, 0x7a, 0xb6, 0xff, 0x33, 0x43, 0x8f, 0xc6, 0xa, 0x54, 0x98, 0xd1, 0x1d, + 0x31, 0xfd, 0xb4, 0x78, 0x26, 0xea, 0xa3, 0x6f, 0x1f, 0xd3, 0x9a, 0x56, 0x8, 0xc4, 0x8d, 0x41, + 0xd5, 0x19, 0x50, 0x9c, 0xc2, 0xe, 0x47, 0x8b, 0xfb, 0x37, 0x7e, 0xb2, 0xec, 0x20, 0x69, 0xa5, + 0x89, 0x45, 0xc, 0xc0, 0x9e, 0x52, 0x1b, 0xd7, 0xa7, 0x6b, 0x22, 0xee, 0xb0, 0x7c, 0x35, 0xf9, + 0xda, 0x16, 0x5f, 0x93, 0xcd, 0x1, 0x48, 0x84, 0xf4, 0x38, 0x71, 0xbd, 0xe3, 0x2f, 0x66, 0xaa, + 0x86, 0x4a, 0x3, 0xcf, 0x91, 0x5d, 0x14, 0xd8, 0xa8, 0x64, 0x2d, 0xe1, 0xbf, 0x73, 0x3a, 0xf6, + 0x62, 0xae, 0xe7, 0x2b, 0x75, 0xb9, 0xf0, 0x3c, 0x4c, 0x80, 0xc9, 0x5, 0x5b, 0x97, 0xde, 0x12, + 0x3e, 0xf2, 0xbb, 0x77, 0x29, 0xe5, 0xac, 0x60, 0x10, 0xdc, 0x95, 0x59, 0x7, 0xcb, 0x82, 0x4e, + 0xb7, 0x7b, 0x32, 0xfe, 0xa0, 0x6c, 0x25, 0xe9, 0x99, 0x55, 0x1c, 0xd0, 0x8e, 0x42, 0xb, 0xc7, + 0xeb, 0x27, 0x6e, 0xa2, 0xfc, 0x30, 0x79, 0xb5, 0xc5, 0x9, 0x40, 0x8c, 0xd2, 0x1e, 0x57, 0x9b, + 0xf, 0xc3, 0x8a, 0x46, 0x18, 0xd4, 0x9d, 0x51, 0x21, 0xed, 0xa4, 0x68, 0x36, 0xfa, 0xb3, 0x7f, + 0x53, 0x9f, 0xd6, 0x1a, 0x44, 0x88, 0xc1, 0xd, 0x7d, 0xb1, 0xf8, 0x34, 0x6a, 0xa6, 0xef, 0x23, + ], + [ + 0x0, 0xcd, 0x87, 0x4a, 0x13, 0xde, 0x94, 0x59, 0x26, 0xeb, 0xa1, 0x6c, 0x35, 0xf8, 0xb2, 0x7f, + 0x4c, 0x81, 0xcb, 0x6, 0x5f, 0x92, 0xd8, 0x15, 0x6a, 0xa7, 0xed, 0x20, 0x79, 0xb4, 0xfe, 0x33, + 0x98, 0x55, 0x1f, 0xd2, 0x8b, 0x46, 0xc, 0xc1, 0xbe, 0x73, 0x39, 0xf4, 0xad, 0x60, 0x2a, 0xe7, + 0xd4, 0x19, 0x53, 0x9e, 0xc7, 0xa, 0x40, 0x8d, 0xf2, 0x3f, 0x75, 0xb8, 0xe1, 0x2c, 0x66, 0xab, + 0x2d, 0xe0, 0xaa, 0x67, 0x3e, 0xf3, 0xb9, 0x74, 0xb, 0xc6, 0x8c, 0x41, 0x18, 0xd5, 0x9f, 0x52, + 0x61, 0xac, 0xe6, 0x2b, 0x72, 0xbf, 0xf5, 0x38, 0x47, 0x8a, 0xc0, 0xd, 0x54, 0x99, 0xd3, 0x1e, + 0xb5, 0x78, 0x32, 0xff, 0xa6, 0x6b, 0x21, 0xec, 0x93, 0x5e, 0x14, 0xd9, 0x80, 0x4d, 0x7, 0xca, + 0xf9, 0x34, 0x7e, 0xb3, 0xea, 0x27, 0x6d, 0xa0, 0xdf, 0x12, 0x58, 0x95, 0xcc, 0x1, 0x4b, 0x86, + 0x5a, 0x97, 0xdd, 0x10, 0x49, 0x84, 0xce, 0x3, 0x7c, 0xb1, 0xfb, 0x36, 0x6f, 0xa2, 0xe8, 0x25, + 0x16, 0xdb, 0x91, 0x5c, 0x5, 0xc8, 0x82, 0x4f, 0x30, 0xfd, 0xb7, 0x7a, 0x23, 0xee, 0xa4, 0x69, + 0xc2, 0xf, 0x45, 0x88, 0xd1, 0x1c, 0x56, 0x9b, 0xe4, 0x29, 0x63, 0xae, 0xf7, 0x3a, 0x70, 0xbd, + 0x8e, 0x43, 0x9, 0xc4, 0x9d, 0x50, 0x1a, 0xd7, 0xa8, 0x65, 0x2f, 0xe2, 0xbb, 0x76, 0x3c, 0xf1, + 0x77, 0xba, 0xf0, 0x3d, 0x64, 0xa9, 0xe3, 0x2e, 0x51, 0x9c, 0xd6, 0x1b, 0x42, 0x8f, 0xc5, 0x8, + 0x3b, 0xf6, 0xbc, 0x71, 0x28, 0xe5, 0xaf, 0x62, 0x1d, 0xd0, 0x9a, 0x57, 0xe, 0xc3, 0x89, 0x44, + 0xef, 0x22, 0x68, 0xa5, 0xfc, 0x31, 0x7b, 0xb6, 0xc9, 0x4, 0x4e, 0x83, 0xda, 0x17, 0x5d, 0x90, + 0xa3, 0x6e, 0x24, 0xe9, 0xb0, 0x7d, 0x37, 0xfa, 0x85, 0x48, 0x2, 0xcf, 0x96, 0x5b, 0x11, 0xdc, + ], + [ + 0x0, 0xce, 0x81, 0x4f, 0x1f, 0xd1, 0x9e, 0x50, 0x3e, 0xf0, 0xbf, 0x71, 0x21, 0xef, 0xa0, 0x6e, + 0x7c, 0xb2, 0xfd, 0x33, 0x63, 0xad, 0xe2, 0x2c, 0x42, 0x8c, 0xc3, 0xd, 0x5d, 0x93, 0xdc, 0x12, + 0xf8, 0x36, 0x79, 0xb7, 0xe7, 0x29, 0x66, 0xa8, 0xc6, 0x8, 0x47, 0x89, 0xd9, 0x17, 0x58, 0x96, + 0x84, 0x4a, 0x5, 0xcb, 0x9b, 0x55, 0x1a, 0xd4, 0xba, 0x74, 0x3b, 0xf5, 0xa5, 0x6b, 0x24, 0xea, + 0xed, 0x23, 0x6c, 0xa2, 0xf2, 0x3c, 0x73, 0xbd, 0xd3, 0x1d, 0x52, 0x9c, 0xcc, 0x2, 0x4d, 0x83, + 0x91, 0x5f, 0x10, 0xde, 0x8e, 0x40, 0xf, 0xc1, 0xaf, 0x61, 0x2e, 0xe0, 0xb0, 0x7e, 0x31, 0xff, + 0x15, 0xdb, 0x94, 0x5a, 0xa, 0xc4, 0x8b, 0x45, 0x2b, 0xe5, 0xaa, 0x64, 0x34, 0xfa, 0xb5, 0x7b, + 0x69, 0xa7, 0xe8, 0x26, 0x76, 0xb8, 0xf7, 0x39, 0x57, 0x99, 0xd6, 0x18, 0x48, 0x86, 0xc9, 0x7, + 0xc7, 0x9, 0x46, 0x88, 0xd8, 0x16, 0x59, 0x97, 0xf9, 0x37, 0x78, 0xb6, 0xe6, 0x28, 0x67, 0xa9, + 0xbb, 0x75, 0x3a, 0xf4, 0xa4, 0x6a, 0x25, 0xeb, 0x85, 0x4b, 0x4, 0xca, 0x9a, 0x54, 0x1b, 0xd5, + 0x3f, 0xf1, 0xbe, 0x70, 0x20, 0xee, 0xa1, 0x6f, 0x1, 0xcf, 0x80, 0x4e, 0x1e, 0xd0, 0x9f, 0x51, + 0x43, 0x8d, 0xc2, 0xc, 0x5c, 0x92, 0xdd, 0x13, 0x7d, 0xb3, 0xfc, 0x32, 0x62, 0xac, 0xe3, 0x2d, + 0x2a, 0xe4, 0xab, 0x65, 0x35, 0xfb, 0xb4, 0x7a, 0x14, 0xda, 0x95, 0x5b, 0xb, 0xc5, 0x8a, 0x44, + 0x56, 0x98, 0xd7, 0x19, 0x49, 0x87, 0xc8, 0x6, 0x68, 0xa6, 0xe9, 0x27, 0x77, 0xb9, 0xf6, 0x38, + 0xd2, 0x1c, 0x53, 0x9d, 0xcd, 0x3, 0x4c, 0x82, 0xec, 0x22, 0x6d, 0xa3, 0xf3, 0x3d, 0x72, 0xbc, + 0xae, 0x60, 0x2f, 0xe1, 0xb1, 0x7f, 0x30, 0xfe, 0x90, 0x5e, 0x11, 0xdf, 0x8f, 0x41, 0xe, 0xc0, + ], + [ + 0x0, 0xcf, 0x83, 0x4c, 0x1b, 0xd4, 0x98, 0x57, 0x36, 0xf9, 0xb5, 0x7a, 0x2d, 0xe2, 0xae, 0x61, + 0x6c, 0xa3, 0xef, 0x20, 0x77, 0xb8, 0xf4, 0x3b, 0x5a, 0x95, 0xd9, 0x16, 0x41, 0x8e, 0xc2, 0xd, + 0xd8, 0x17, 0x5b, 0x94, 0xc3, 0xc, 0x40, 0x8f, 0xee, 0x21, 0x6d, 0xa2, 0xf5, 0x3a, 0x76, 0xb9, + 0xb4, 0x7b, 0x37, 0xf8, 0xaf, 0x60, 0x2c, 0xe3, 0x82, 0x4d, 0x1, 0xce, 0x99, 0x56, 0x1a, 0xd5, + 0xad, 0x62, 0x2e, 0xe1, 0xb6, 0x79, 0x35, 0xfa, 0x9b, 0x54, 0x18, 0xd7, 0x80, 0x4f, 0x3, 0xcc, + 0xc1, 0xe, 0x42, 0x8d, 0xda, 0x15, 0x59, 0x96, 0xf7, 0x38, 0x74, 0xbb, 0xec, 0x23, 0x6f, 0xa0, + 0x75, 0xba, 0xf6, 0x39, 0x6e, 0xa1, 0xed, 0x22, 0x43, 0x8c, 0xc0, 0xf, 0x58, 0x97, 0xdb, 0x14, + 0x19, 0xd6, 0x9a, 0x55, 0x2, 0xcd, 0x81, 0x4e, 0x2f, 0xe0, 0xac, 0x63, 0x34, 0xfb, 0xb7, 0x78, + 0x47, 0x88, 0xc4, 0xb, 0x5c, 0x93, 0xdf, 0x10, 0x71, 0xbe, 0xf2, 0x3d, 0x6a, 0xa5, 0xe9, 0x26, + 0x2b, 0xe4, 0xa8, 0x67, 0x30, 0xff, 0xb3, 0x7c, 0x1d, 0xd2, 0x9e, 0x51, 0x6, 0xc9, 0x85, 0x4a, + 0x9f, 0x50, 0x1c, 0xd3, 0x84, 0x4b, 0x7, 0xc8, 0xa9, 0x66, 0x2a, 0xe5, 0xb2, 0x7d, 0x31, 0xfe, + 0xf3, 0x3c, 0x70, 0xbf, 0xe8, 0x27, 0x6b, 0xa4, 0xc5, 0xa, 0x46, 0x89, 0xde, 0x11, 0x5d, 0x92, + 0xea, 0x25, 0x69, 0xa6, 0xf1, 0x3e, 0x72, 0xbd, 0xdc, 0x13, 0x5f, 0x90, 0xc7, 0x8, 0x44, 0x8b, + 0x86, 0x49, 0x5, 0xca, 0x9d, 0x52, 0x1e, 0xd1, 0xb0, 0x7f, 0x33, 0xfc, 0xab, 0x64, 0x28, 0xe7, + 0x32, 0xfd, 0xb1, 0x7e, 0x29, 0xe6, 0xaa, 0x65, 0x4, 0xcb, 0x87, 0x48, 0x1f, 0xd0, 0x9c, 0x53, + 0x5e, 0x91, 0xdd, 0x12, 0x45, 0x8a, 0xc6, 0x9, 0x68, 0xa7, 0xeb, 0x24, 0x73, 0xbc, 0xf0, 0x3f, + ], + [ + 0x0, 0xd0, 0xbd, 0x6d, 0x67, 0xb7, 0xda, 0xa, 0xce, 0x1e, 0x73, 0xa3, 0xa9, 0x79, 0x14, 0xc4, + 0x81, 0x51, 0x3c, 0xec, 0xe6, 0x36, 0x5b, 0x8b, 0x4f, 0x9f, 0xf2, 0x22, 0x28, 0xf8, 0x95, 0x45, + 0x1f, 0xcf, 0xa2, 0x72, 0x78, 0xa8, 0xc5, 0x15, 0xd1, 0x1, 0x6c, 0xbc, 0xb6, 0x66, 0xb, 0xdb, + 0x9e, 0x4e, 0x23, 0xf3, 0xf9, 0x29, 0x44, 0x94, 0x50, 0x80, 0xed, 0x3d, 0x37, 0xe7, 0x8a, 0x5a, + 0x3e, 0xee, 0x83, 0x53, 0x59, 0x89, 0xe4, 0x34, 0xf0, 0x20, 0x4d, 0x9d, 0x97, 0x47, 0x2a, 0xfa, + 0xbf, 0x6f, 0x2, 0xd2, 0xd8, 0x8, 0x65, 0xb5, 0x71, 0xa1, 0xcc, 0x1c, 0x16, 0xc6, 0xab, 0x7b, + 0x21, 0xf1, 0x9c, 0x4c, 0x46, 0x96, 0xfb, 0x2b, 0xef, 0x3f, 0x52, 0x82, 0x88, 0x58, 0x35, 0xe5, + 0xa0, 0x70, 0x1d, 0xcd, 0xc7, 0x17, 0x7a, 0xaa, 0x6e, 0xbe, 0xd3, 0x3, 0x9, 0xd9, 0xb4, 0x64, + 0x7c, 0xac, 0xc1, 0x11, 0x1b, 0xcb, 0xa6, 0x76, 0xb2, 0x62, 0xf, 0xdf, 0xd5, 0x5, 0x68, 0xb8, + 0xfd, 0x2d, 0x40, 0x90, 0x9a, 0x4a, 0x27, 0xf7, 0x33, 0xe3, 0x8e, 0x5e, 0x54, 0x84, 0xe9, 0x39, + 0x63, 0xb3, 0xde, 0xe, 0x4, 0xd4, 0xb9, 0x69, 0xad, 0x7d, 0x10, 0xc0, 0xca, 0x1a, 0x77, 0xa7, + 0xe2, 0x32, 0x5f, 0x8f, 0x85, 0x55, 0x38, 0xe8, 0x2c, 0xfc, 0x91, 0x41, 0x4b, 0x9b, 0xf6, 0x26, + 0x42, 0x92, 0xff, 0x2f, 0x25, 0xf5, 0x98, 0x48, 0x8c, 0x5c, 0x31, 0xe1, 0xeb, 0x3b, 0x56, 0x86, + 0xc3, 0x13, 0x7e, 0xae, 0xa4, 0x74, 0x19, 0xc9, 0xd, 0xdd, 0xb0, 0x60, 0x6a, 0xba, 0xd7, 0x7, + 0x5d, 0x8d, 0xe0, 0x30, 0x3a, 0xea, 0x87, 0x57, 0x93, 0x43, 0x2e, 0xfe, 0xf4, 0x24, 0x49, 0x99, + 0xdc, 0xc, 0x61, 0xb1, 0xbb, 0x6b, 0x6, 0xd6, 0x12, 0xc2, 0xaf, 0x7f, 0x75, 0xa5, 0xc8, 0x18, + ], + [ + 0x0, 0xd1, 0xbf, 0x6e, 0x63, 0xb2, 0xdc, 0xd, 0xc6, 0x17, 0x79, 0xa8, 0xa5, 0x74, 0x1a, 0xcb, + 0x91, 0x40, 0x2e, 0xff, 0xf2, 0x23, 0x4d, 0x9c, 0x57, 0x86, 0xe8, 0x39, 0x34, 0xe5, 0x8b, 0x5a, + 0x3f, 0xee, 0x80, 0x51, 0x5c, 0x8d, 0xe3, 0x32, 0xf9, 0x28, 0x46, 0x97, 0x9a, 0x4b, 0x25, 0xf4, + 0xae, 0x7f, 0x11, 0xc0, 0xcd, 0x1c, 0x72, 0xa3, 0x68, 0xb9, 0xd7, 0x6, 0xb, 0xda, 0xb4, 0x65, + 0x7e, 0xaf, 0xc1, 0x10, 0x1d, 0xcc, 0xa2, 0x73, 0xb8, 0x69, 0x7, 0xd6, 0xdb, 0xa, 0x64, 0xb5, + 0xef, 0x3e, 0x50, 0x81, 0x8c, 0x5d, 0x33, 0xe2, 0x29, 0xf8, 0x96, 0x47, 0x4a, 0x9b, 0xf5, 0x24, + 0x41, 0x90, 0xfe, 0x2f, 0x22, 0xf3, 0x9d, 0x4c, 0x87, 0x56, 0x38, 0xe9, 0xe4, 0x35, 0x5b, 0x8a, + 0xd0, 0x1, 0x6f, 0xbe, 0xb3, 0x62, 0xc, 0xdd, 0x16, 0xc7, 0xa9, 0x78, 0x75, 0xa4, 0xca, 0x1b, + 0xfc, 0x2d, 0x43, 0x92, 0x9f, 0x4e, 0x20, 0xf1, 0x3a, 0xeb, 0x85, 0x54, 0x59, 0x88, 0xe6, 0x37, + 0x6d, 0xbc, 0xd2, 0x3, 0xe, 0xdf, 0xb1, 0x60, 0xab, 0x7a, 0x14, 0xc5, 0xc8, 0x19, 0x77, 0xa6, + 0xc3, 0x12, 0x7c, 0xad, 0xa0, 0x71, 0x1f, 0xce, 0x5, 0xd4, 0xba, 0x6b, 0x66, 0xb7, 0xd9, 0x8, + 0x52, 0x83, 0xed, 0x3c, 0x31, 0xe0, 0x8e, 0x5f, 0x94, 0x45, 0x2b, 0xfa, 0xf7, 0x26, 0x48, 0x99, + 0x82, 0x53, 0x3d, 0xec, 0xe1, 0x30, 0x5e, 0x8f, 0x44, 0x95, 0xfb, 0x2a, 0x27, 0xf6, 0x98, 0x49, + 0x13, 0xc2, 0xac, 0x7d, 0x70, 0xa1, 0xcf, 0x1e, 0xd5, 0x4, 0x6a, 0xbb, 0xb6, 0x67, 0x9, 0xd8, + 0xbd, 0x6c, 0x2, 0xd3, 0xde, 0xf, 0x61, 0xb0, 0x7b, 0xaa, 0xc4, 0x15, 0x18, 0xc9, 0xa7, 0x76, + 0x2c, 0xfd, 0x93, 0x42, 0x4f, 0x9e, 0xf0, 0x21, 0xea, 0x3b, 0x55, 0x84, 0x89, 0x58, 0x36, 0xe7, + ], + [ + 0x0, 0xd2, 0xb9, 0x6b, 0x6f, 0xbd, 0xd6, 0x4, 0xde, 0xc, 0x67, 0xb5, 0xb1, 0x63, 0x8, 0xda, + 0xa1, 0x73, 0x18, 0xca, 0xce, 0x1c, 0x77, 0xa5, 0x7f, 0xad, 0xc6, 0x14, 0x10, 0xc2, 0xa9, 0x7b, + 0x5f, 0x8d, 0xe6, 0x34, 0x30, 0xe2, 0x89, 0x5b, 0x81, 0x53, 0x38, 0xea, 0xee, 0x3c, 0x57, 0x85, + 0xfe, 0x2c, 0x47, 0x95, 0x91, 0x43, 0x28, 0xfa, 0x20, 0xf2, 0x99, 0x4b, 0x4f, 0x9d, 0xf6, 0x24, + 0xbe, 0x6c, 0x7, 0xd5, 0xd1, 0x3, 0x68, 0xba, 0x60, 0xb2, 0xd9, 0xb, 0xf, 0xdd, 0xb6, 0x64, + 0x1f, 0xcd, 0xa6, 0x74, 0x70, 0xa2, 0xc9, 0x1b, 0xc1, 0x13, 0x78, 0xaa, 0xae, 0x7c, 0x17, 0xc5, + 0xe1, 0x33, 0x58, 0x8a, 0x8e, 0x5c, 0x37, 0xe5, 0x3f, 0xed, 0x86, 0x54, 0x50, 0x82, 0xe9, 0x3b, + 0x40, 0x92, 0xf9, 0x2b, 0x2f, 0xfd, 0x96, 0x44, 0x9e, 0x4c, 0x27, 0xf5, 0xf1, 0x23, 0x48, 0x9a, + 0x61, 0xb3, 0xd8, 0xa, 0xe, 0xdc, 0xb7, 0x65, 0xbf, 0x6d, 0x6, 0xd4, 0xd0, 0x2, 0x69, 0xbb, + 0xc0, 0x12, 0x79, 0xab, 0xaf, 0x7d, 0x16, 0xc4, 0x1e, 0xcc, 0xa7, 0x75, 0x71, 0xa3, 0xc8, 0x1a, + 0x3e, 0xec, 0x87, 0x55, 0x51, 0x83, 0xe8, 0x3a, 0xe0, 0x32, 0x59, 0x8b, 0x8f, 0x5d, 0x36, 0xe4, + 0x9f, 0x4d, 0x26, 0xf4, 0xf0, 0x22, 0x49, 0x9b, 0x41, 0x93, 0xf8, 0x2a, 0x2e, 0xfc, 0x97, 0x45, + 0xdf, 0xd, 0x66, 0xb4, 0xb0, 0x62, 0x9, 0xdb, 0x1, 0xd3, 0xb8, 0x6a, 0x6e, 0xbc, 0xd7, 0x5, + 0x7e, 0xac, 0xc7, 0x15, 0x11, 0xc3, 0xa8, 0x7a, 0xa0, 0x72, 0x19, 0xcb, 0xcf, 0x1d, 0x76, 0xa4, + 0x80, 0x52, 0x39, 0xeb, 0xef, 0x3d, 0x56, 0x84, 0x5e, 0x8c, 0xe7, 0x35, 0x31, 0xe3, 0x88, 0x5a, + 0x21, 0xf3, 0x98, 0x4a, 0x4e, 0x9c, 0xf7, 0x25, 0xff, 0x2d, 0x46, 0x94, 0x90, 0x42, 0x29, 0xfb, + ], + [ + 0x0, 0xd3, 0xbb, 0x68, 0x6b, 0xb8, 0xd0, 0x3, 0xd6, 0x5, 0x6d, 0xbe, 0xbd, 0x6e, 0x6, 0xd5, + 0xb1, 0x62, 0xa, 0xd9, 0xda, 0x9, 0x61, 0xb2, 0x67, 0xb4, 0xdc, 0xf, 0xc, 0xdf, 0xb7, 0x64, + 0x7f, 0xac, 0xc4, 0x17, 0x14, 0xc7, 0xaf, 0x7c, 0xa9, 0x7a, 0x12, 0xc1, 0xc2, 0x11, 0x79, 0xaa, + 0xce, 0x1d, 0x75, 0xa6, 0xa5, 0x76, 0x1e, 0xcd, 0x18, 0xcb, 0xa3, 0x70, 0x73, 0xa0, 0xc8, 0x1b, + 0xfe, 0x2d, 0x45, 0x96, 0x95, 0x46, 0x2e, 0xfd, 0x28, 0xfb, 0x93, 0x40, 0x43, 0x90, 0xf8, 0x2b, + 0x4f, 0x9c, 0xf4, 0x27, 0x24, 0xf7, 0x9f, 0x4c, 0x99, 0x4a, 0x22, 0xf1, 0xf2, 0x21, 0x49, 0x9a, + 0x81, 0x52, 0x3a, 0xe9, 0xea, 0x39, 0x51, 0x82, 0x57, 0x84, 0xec, 0x3f, 0x3c, 0xef, 0x87, 0x54, + 0x30, 0xe3, 0x8b, 0x58, 0x5b, 0x88, 0xe0, 0x33, 0xe6, 0x35, 0x5d, 0x8e, 0x8d, 0x5e, 0x36, 0xe5, + 0xe1, 0x32, 0x5a, 0x89, 0x8a, 0x59, 0x31, 0xe2, 0x37, 0xe4, 0x8c, 0x5f, 0x5c, 0x8f, 0xe7, 0x34, + 0x50, 0x83, 0xeb, 0x38, 0x3b, 0xe8, 0x80, 0x53, 0x86, 0x55, 0x3d, 0xee, 0xed, 0x3e, 0x56, 0x85, + 0x9e, 0x4d, 0x25, 0xf6, 0xf5, 0x26, 0x4e, 0x9d, 0x48, 0x9b, 0xf3, 0x20, 0x23, 0xf0, 0x98, 0x4b, + 0x2f, 0xfc, 0x94, 0x47, 0x44, 0x97, 0xff, 0x2c, 0xf9, 0x2a, 0x42, 0x91, 0x92, 0x41, 0x29, 0xfa, + 0x1f, 0xcc, 0xa4, 0x77, 0x74, 0xa7, 0xcf, 0x1c, 0xc9, 0x1a, 0x72, 0xa1, 0xa2, 0x71, 0x19, 0xca, + 0xae, 0x7d, 0x15, 0xc6, 0xc5, 0x16, 0x7e, 0xad, 0x78, 0xab, 0xc3, 0x10, 0x13, 0xc0, 0xa8, 0x7b, + 0x60, 0xb3, 0xdb, 0x8, 0xb, 0xd8, 0xb0, 0x63, 0xb6, 0x65, 0xd, 0xde, 0xdd, 0xe, 0x66, 0xb5, + 0xd1, 0x2, 0x6a, 0xb9, 0xba, 0x69, 0x1, 0xd2, 0x7, 0xd4, 0xbc, 0x6f, 0x6c, 0xbf, 0xd7, 0x4, + ], + [ + 0x0, 0xd4, 0xb5, 0x61, 0x77, 0xa3, 0xc2, 0x16, 0xee, 0x3a, 0x5b, 0x8f, 0x99, 0x4d, 0x2c, 0xf8, + 0xc1, 0x15, 0x74, 0xa0, 0xb6, 0x62, 0x3, 0xd7, 0x2f, 0xfb, 0x9a, 0x4e, 0x58, 0x8c, 0xed, 0x39, + 0x9f, 0x4b, 0x2a, 0xfe, 0xe8, 0x3c, 0x5d, 0x89, 0x71, 0xa5, 0xc4, 0x10, 0x6, 0xd2, 0xb3, 0x67, + 0x5e, 0x8a, 0xeb, 0x3f, 0x29, 0xfd, 0x9c, 0x48, 0xb0, 0x64, 0x5, 0xd1, 0xc7, 0x13, 0x72, 0xa6, + 0x23, 0xf7, 0x96, 0x42, 0x54, 0x80, 0xe1, 0x35, 0xcd, 0x19, 0x78, 0xac, 0xba, 0x6e, 0xf, 0xdb, + 0xe2, 0x36, 0x57, 0x83, 0x95, 0x41, 0x20, 0xf4, 0xc, 0xd8, 0xb9, 0x6d, 0x7b, 0xaf, 0xce, 0x1a, + 0xbc, 0x68, 0x9, 0xdd, 0xcb, 0x1f, 0x7e, 0xaa, 0x52, 0x86, 0xe7, 0x33, 0x25, 0xf1, 0x90, 0x44, + 0x7d, 0xa9, 0xc8, 0x1c, 0xa, 0xde, 0xbf, 0x6b, 0x93, 0x47, 0x26, 0xf2, 0xe4, 0x30, 0x51, 0x85, + 0x46, 0x92, 0xf3, 0x27, 0x31, 0xe5, 0x84, 0x50, 0xa8, 0x7c, 0x1d, 0xc9, 0xdf, 0xb, 0x6a, 0xbe, + 0x87, 0x53, 0x32, 0xe6, 0xf0, 0x24, 0x45, 0x91, 0x69, 0xbd, 0xdc, 0x8, 0x1e, 0xca, 0xab, 0x7f, + 0xd9, 0xd, 0x6c, 0xb8, 0xae, 0x7a, 0x1b, 0xcf, 0x37, 0xe3, 0x82, 0x56, 0x40, 0x94, 0xf5, 0x21, + 0x18, 0xcc, 0xad, 0x79, 0x6f, 0xbb, 0xda, 0xe, 0xf6, 0x22, 0x43, 0x97, 0x81, 0x55, 0x34, 0xe0, + 0x65, 0xb1, 0xd0, 0x4, 0x12, 0xc6, 0xa7, 0x73, 0x8b, 0x5f, 0x3e, 0xea, 0xfc, 0x28, 0x49, 0x9d, + 0xa4, 0x70, 0x11, 0xc5, 0xd3, 0x7, 0x66, 0xb2, 0x4a, 0x9e, 0xff, 0x2b, 0x3d, 0xe9, 0x88, 0x5c, + 0xfa, 0x2e, 0x4f, 0x9b, 0x8d, 0x59, 0x38, 0xec, 0x14, 0xc0, 0xa1, 0x75, 0x63, 0xb7, 0xd6, 0x2, + 0x3b, 0xef, 0x8e, 0x5a, 0x4c, 0x98, 0xf9, 0x2d, 0xd5, 0x1, 0x60, 0xb4, 0xa2, 0x76, 0x17, 0xc3, + ], + [ + 0x0, 0xd5, 0xb7, 0x62, 0x73, 0xa6, 0xc4, 0x11, 0xe6, 0x33, 0x51, 0x84, 0x95, 0x40, 0x22, 0xf7, + 0xd1, 0x4, 0x66, 0xb3, 0xa2, 0x77, 0x15, 0xc0, 0x37, 0xe2, 0x80, 0x55, 0x44, 0x91, 0xf3, 0x26, + 0xbf, 0x6a, 0x8, 0xdd, 0xcc, 0x19, 0x7b, 0xae, 0x59, 0x8c, 0xee, 0x3b, 0x2a, 0xff, 0x9d, 0x48, + 0x6e, 0xbb, 0xd9, 0xc, 0x1d, 0xc8, 0xaa, 0x7f, 0x88, 0x5d, 0x3f, 0xea, 0xfb, 0x2e, 0x4c, 0x99, + 0x63, 0xb6, 0xd4, 0x1, 0x10, 0xc5, 0xa7, 0x72, 0x85, 0x50, 0x32, 0xe7, 0xf6, 0x23, 0x41, 0x94, + 0xb2, 0x67, 0x5, 0xd0, 0xc1, 0x14, 0x76, 0xa3, 0x54, 0x81, 0xe3, 0x36, 0x27, 0xf2, 0x90, 0x45, + 0xdc, 0x9, 0x6b, 0xbe, 0xaf, 0x7a, 0x18, 0xcd, 0x3a, 0xef, 0x8d, 0x58, 0x49, 0x9c, 0xfe, 0x2b, + 0xd, 0xd8, 0xba, 0x6f, 0x7e, 0xab, 0xc9, 0x1c, 0xeb, 0x3e, 0x5c, 0x89, 0x98, 0x4d, 0x2f, 0xfa, + 0xc6, 0x13, 0x71, 0xa4, 0xb5, 0x60, 0x2, 0xd7, 0x20, 0xf5, 0x97, 0x42, 0x53, 0x86, 0xe4, 0x31, + 0x17, 0xc2, 0xa0, 0x75, 0x64, 0xb1, 0xd3, 0x6, 0xf1, 0x24, 0x46, 0x93, 0x82, 0x57, 0x35, 0xe0, + 0x79, 0xac, 0xce, 0x1b, 0xa, 0xdf, 0xbd, 0x68, 0x9f, 0x4a, 0x28, 0xfd, 0xec, 0x39, 0x5b, 0x8e, + 0xa8, 0x7d, 0x1f, 0xca, 0xdb, 0xe, 0x6c, 0xb9, 0x4e, 0x9b, 0xf9, 0x2c, 0x3d, 0xe8, 0x8a, 0x5f, + 0xa5, 0x70, 0x12, 0xc7, 0xd6, 0x3, 0x61, 0xb4, 0x43, 0x96, 0xf4, 0x21, 0x30, 0xe5, 0x87, 0x52, + 0x74, 0xa1, 0xc3, 0x16, 0x7, 0xd2, 0xb0, 0x65, 0x92, 0x47, 0x25, 0xf0, 0xe1, 0x34, 0x56, 0x83, + 0x1a, 0xcf, 0xad, 0x78, 0x69, 0xbc, 0xde, 0xb, 0xfc, 0x29, 0x4b, 0x9e, 0x8f, 0x5a, 0x38, 0xed, + 0xcb, 0x1e, 0x7c, 0xa9, 0xb8, 0x6d, 0xf, 0xda, 0x2d, 0xf8, 0x9a, 0x4f, 0x5e, 0x8b, 0xe9, 0x3c, + ], + [ + 0x0, 0xd6, 0xb1, 0x67, 0x7f, 0xa9, 0xce, 0x18, 0xfe, 0x28, 0x4f, 0x99, 0x81, 0x57, 0x30, 0xe6, + 0xe1, 0x37, 0x50, 0x86, 0x9e, 0x48, 0x2f, 0xf9, 0x1f, 0xc9, 0xae, 0x78, 0x60, 0xb6, 0xd1, 0x7, + 0xdf, 0x9, 0x6e, 0xb8, 0xa0, 0x76, 0x11, 0xc7, 0x21, 0xf7, 0x90, 0x46, 0x5e, 0x88, 0xef, 0x39, + 0x3e, 0xe8, 0x8f, 0x59, 0x41, 0x97, 0xf0, 0x26, 0xc0, 0x16, 0x71, 0xa7, 0xbf, 0x69, 0xe, 0xd8, + 0xa3, 0x75, 0x12, 0xc4, 0xdc, 0xa, 0x6d, 0xbb, 0x5d, 0x8b, 0xec, 0x3a, 0x22, 0xf4, 0x93, 0x45, + 0x42, 0x94, 0xf3, 0x25, 0x3d, 0xeb, 0x8c, 0x5a, 0xbc, 0x6a, 0xd, 0xdb, 0xc3, 0x15, 0x72, 0xa4, + 0x7c, 0xaa, 0xcd, 0x1b, 0x3, 0xd5, 0xb2, 0x64, 0x82, 0x54, 0x33, 0xe5, 0xfd, 0x2b, 0x4c, 0x9a, + 0x9d, 0x4b, 0x2c, 0xfa, 0xe2, 0x34, 0x53, 0x85, 0x63, 0xb5, 0xd2, 0x4, 0x1c, 0xca, 0xad, 0x7b, + 0x5b, 0x8d, 0xea, 0x3c, 0x24, 0xf2, 0x95, 0x43, 0xa5, 0x73, 0x14, 0xc2, 0xda, 0xc, 0x6b, 0xbd, + 0xba, 0x6c, 0xb, 0xdd, 0xc5, 0x13, 0x74, 0xa2, 0x44, 0x92, 0xf5, 0x23, 0x3b, 0xed, 0x8a, 0x5c, + 0x84, 0x52, 0x35, 0xe3, 0xfb, 0x2d, 0x4a, 0x9c, 0x7a, 0xac, 0xcb, 0x1d, 0x5, 0xd3, 0xb4, 0x62, + 0x65, 0xb3, 0xd4, 0x2, 0x1a, 0xcc, 0xab, 0x7d, 0x9b, 0x4d, 0x2a, 0xfc, 0xe4, 0x32, 0x55, 0x83, + 0xf8, 0x2e, 0x49, 0x9f, 0x87, 0x51, 0x36, 0xe0, 0x6, 0xd0, 0xb7, 0x61, 0x79, 0xaf, 0xc8, 0x1e, + 0x19, 0xcf, 0xa8, 0x7e, 0x66, 0xb0, 0xd7, 0x1, 0xe7, 0x31, 0x56, 0x80, 0x98, 0x4e, 0x29, 0xff, + 0x27, 0xf1, 0x96, 0x40, 0x58, 0x8e, 0xe9, 0x3f, 0xd9, 0xf, 0x68, 0xbe, 0xa6, 0x70, 0x17, 0xc1, + 0xc6, 0x10, 0x77, 0xa1, 0xb9, 0x6f, 0x8, 0xde, 0x38, 0xee, 0x89, 0x5f, 0x47, 0x91, 0xf6, 0x20, + ], + [ + 0x0, 0xd7, 0xb3, 0x64, 0x7b, 0xac, 0xc8, 0x1f, 0xf6, 0x21, 0x45, 0x92, 0x8d, 0x5a, 0x3e, 0xe9, + 0xf1, 0x26, 0x42, 0x95, 0x8a, 0x5d, 0x39, 0xee, 0x7, 0xd0, 0xb4, 0x63, 0x7c, 0xab, 0xcf, 0x18, + 0xff, 0x28, 0x4c, 0x9b, 0x84, 0x53, 0x37, 0xe0, 0x9, 0xde, 0xba, 0x6d, 0x72, 0xa5, 0xc1, 0x16, + 0xe, 0xd9, 0xbd, 0x6a, 0x75, 0xa2, 0xc6, 0x11, 0xf8, 0x2f, 0x4b, 0x9c, 0x83, 0x54, 0x30, 0xe7, + 0xe3, 0x34, 0x50, 0x87, 0x98, 0x4f, 0x2b, 0xfc, 0x15, 0xc2, 0xa6, 0x71, 0x6e, 0xb9, 0xdd, 0xa, + 0x12, 0xc5, 0xa1, 0x76, 0x69, 0xbe, 0xda, 0xd, 0xe4, 0x33, 0x57, 0x80, 0x9f, 0x48, 0x2c, 0xfb, + 0x1c, 0xcb, 0xaf, 0x78, 0x67, 0xb0, 0xd4, 0x3, 0xea, 0x3d, 0x59, 0x8e, 0x91, 0x46, 0x22, 0xf5, + 0xed, 0x3a, 0x5e, 0x89, 0x96, 0x41, 0x25, 0xf2, 0x1b, 0xcc, 0xa8, 0x7f, 0x60, 0xb7, 0xd3, 0x4, + 0xdb, 0xc, 0x68, 0xbf, 0xa0, 0x77, 0x13, 0xc4, 0x2d, 0xfa, 0x9e, 0x49, 0x56, 0x81, 0xe5, 0x32, + 0x2a, 0xfd, 0x99, 0x4e, 0x51, 0x86, 0xe2, 0x35, 0xdc, 0xb, 0x6f, 0xb8, 0xa7, 0x70, 0x14, 0xc3, + 0x24, 0xf3, 0x97, 0x40, 0x5f, 0x88, 0xec, 0x3b, 0xd2, 0x5, 0x61, 0xb6, 0xa9, 0x7e, 0x1a, 0xcd, + 0xd5, 0x2, 0x66, 0xb1, 0xae, 0x79, 0x1d, 0xca, 0x23, 0xf4, 0x90, 0x47, 0x58, 0x8f, 0xeb, 0x3c, + 0x38, 0xef, 0x8b, 0x5c, 0x43, 0x94, 0xf0, 0x27, 0xce, 0x19, 0x7d, 0xaa, 0xb5, 0x62, 0x6, 0xd1, + 0xc9, 0x1e, 0x7a, 0xad, 0xb2, 0x65, 0x1, 0xd6, 0x3f, 0xe8, 0x8c, 0x5b, 0x44, 0x93, 0xf7, 0x20, + 0xc7, 0x10, 0x74, 0xa3, 0xbc, 0x6b, 0xf, 0xd8, 0x31, 0xe6, 0x82, 0x55, 0x4a, 0x9d, 0xf9, 0x2e, + 0x36, 0xe1, 0x85, 0x52, 0x4d, 0x9a, 0xfe, 0x29, 0xc0, 0x17, 0x73, 0xa4, 0xbb, 0x6c, 0x8, 0xdf, + ], + [ + 0x0, 0xd8, 0xad, 0x75, 0x47, 0x9f, 0xea, 0x32, 0x8e, 0x56, 0x23, 0xfb, 0xc9, 0x11, 0x64, 0xbc, + 0x1, 0xd9, 0xac, 0x74, 0x46, 0x9e, 0xeb, 0x33, 0x8f, 0x57, 0x22, 0xfa, 0xc8, 0x10, 0x65, 0xbd, + 0x2, 0xda, 0xaf, 0x77, 0x45, 0x9d, 0xe8, 0x30, 0x8c, 0x54, 0x21, 0xf9, 0xcb, 0x13, 0x66, 0xbe, + 0x3, 0xdb, 0xae, 0x76, 0x44, 0x9c, 0xe9, 0x31, 0x8d, 0x55, 0x20, 0xf8, 0xca, 0x12, 0x67, 0xbf, + 0x4, 0xdc, 0xa9, 0x71, 0x43, 0x9b, 0xee, 0x36, 0x8a, 0x52, 0x27, 0xff, 0xcd, 0x15, 0x60, 0xb8, + 0x5, 0xdd, 0xa8, 0x70, 0x42, 0x9a, 0xef, 0x37, 0x8b, 0x53, 0x26, 0xfe, 0xcc, 0x14, 0x61, 0xb9, + 0x6, 0xde, 0xab, 0x73, 0x41, 0x99, 0xec, 0x34, 0x88, 0x50, 0x25, 0xfd, 0xcf, 0x17, 0x62, 0xba, + 0x7, 0xdf, 0xaa, 0x72, 0x40, 0x98, 0xed, 0x35, 0x89, 0x51, 0x24, 0xfc, 0xce, 0x16, 0x63, 0xbb, + 0x8, 0xd0, 0xa5, 0x7d, 0x4f, 0x97, 0xe2, 0x3a, 0x86, 0x5e, 0x2b, 0xf3, 0xc1, 0x19, 0x6c, 0xb4, + 0x9, 0xd1, 0xa4, 0x7c, 0x4e, 0x96, 0xe3, 0x3b, 0x87, 0x5f, 0x2a, 0xf2, 0xc0, 0x18, 0x6d, 0xb5, + 0xa, 0xd2, 0xa7, 0x7f, 0x4d, 0x95, 0xe0, 0x38, 0x84, 0x5c, 0x29, 0xf1, 0xc3, 0x1b, 0x6e, 0xb6, + 0xb, 0xd3, 0xa6, 0x7e, 0x4c, 0x94, 0xe1, 0x39, 0x85, 0x5d, 0x28, 0xf0, 0xc2, 0x1a, 0x6f, 0xb7, + 0xc, 0xd4, 0xa1, 0x79, 0x4b, 0x93, 0xe6, 0x3e, 0x82, 0x5a, 0x2f, 0xf7, 0xc5, 0x1d, 0x68, 0xb0, + 0xd, 0xd5, 0xa0, 0x78, 0x4a, 0x92, 0xe7, 0x3f, 0x83, 0x5b, 0x2e, 0xf6, 0xc4, 0x1c, 0x69, 0xb1, + 0xe, 0xd6, 0xa3, 0x7b, 0x49, 0x91, 0xe4, 0x3c, 0x80, 0x58, 0x2d, 0xf5, 0xc7, 0x1f, 0x6a, 0xb2, + 0xf, 0xd7, 0xa2, 0x7a, 0x48, 0x90, 0xe5, 0x3d, 0x81, 0x59, 0x2c, 0xf4, 0xc6, 0x1e, 0x6b, 0xb3, + ], + [ + 0x0, 0xd9, 0xaf, 0x76, 0x43, 0x9a, 0xec, 0x35, 0x86, 0x5f, 0x29, 0xf0, 0xc5, 0x1c, 0x6a, 0xb3, + 0x11, 0xc8, 0xbe, 0x67, 0x52, 0x8b, 0xfd, 0x24, 0x97, 0x4e, 0x38, 0xe1, 0xd4, 0xd, 0x7b, 0xa2, + 0x22, 0xfb, 0x8d, 0x54, 0x61, 0xb8, 0xce, 0x17, 0xa4, 0x7d, 0xb, 0xd2, 0xe7, 0x3e, 0x48, 0x91, + 0x33, 0xea, 0x9c, 0x45, 0x70, 0xa9, 0xdf, 0x6, 0xb5, 0x6c, 0x1a, 0xc3, 0xf6, 0x2f, 0x59, 0x80, + 0x44, 0x9d, 0xeb, 0x32, 0x7, 0xde, 0xa8, 0x71, 0xc2, 0x1b, 0x6d, 0xb4, 0x81, 0x58, 0x2e, 0xf7, + 0x55, 0x8c, 0xfa, 0x23, 0x16, 0xcf, 0xb9, 0x60, 0xd3, 0xa, 0x7c, 0xa5, 0x90, 0x49, 0x3f, 0xe6, + 0x66, 0xbf, 0xc9, 0x10, 0x25, 0xfc, 0x8a, 0x53, 0xe0, 0x39, 0x4f, 0x96, 0xa3, 0x7a, 0xc, 0xd5, + 0x77, 0xae, 0xd8, 0x1, 0x34, 0xed, 0x9b, 0x42, 0xf1, 0x28, 0x5e, 0x87, 0xb2, 0x6b, 0x1d, 0xc4, + 0x88, 0x51, 0x27, 0xfe, 0xcb, 0x12, 0x64, 0xbd, 0xe, 0xd7, 0xa1, 0x78, 0x4d, 0x94, 0xe2, 0x3b, + 0x99, 0x40, 0x36, 0xef, 0xda, 0x3, 0x75, 0xac, 0x1f, 0xc6, 0xb0, 0x69, 0x5c, 0x85, 0xf3, 0x2a, + 0xaa, 0x73, 0x5, 0xdc, 0xe9, 0x30, 0x46, 0x9f, 0x2c, 0xf5, 0x83, 0x5a, 0x6f, 0xb6, 0xc0, 0x19, + 0xbb, 0x62, 0x14, 0xcd, 0xf8, 0x21, 0x57, 0x8e, 0x3d, 0xe4, 0x92, 0x4b, 0x7e, 0xa7, 0xd1, 0x8, + 0xcc, 0x15, 0x63, 0xba, 0x8f, 0x56, 0x20, 0xf9, 0x4a, 0x93, 0xe5, 0x3c, 0x9, 0xd0, 0xa6, 0x7f, + 0xdd, 0x4, 0x72, 0xab, 0x9e, 0x47, 0x31, 0xe8, 0x5b, 0x82, 0xf4, 0x2d, 0x18, 0xc1, 0xb7, 0x6e, + 0xee, 0x37, 0x41, 0x98, 0xad, 0x74, 0x2, 0xdb, 0x68, 0xb1, 0xc7, 0x1e, 0x2b, 0xf2, 0x84, 0x5d, + 0xff, 0x26, 0x50, 0x89, 0xbc, 0x65, 0x13, 0xca, 0x79, 0xa0, 0xd6, 0xf, 0x3a, 0xe3, 0x95, 0x4c, + ], + [ + 0x0, 0xda, 0xa9, 0x73, 0x4f, 0x95, 0xe6, 0x3c, 0x9e, 0x44, 0x37, 0xed, 0xd1, 0xb, 0x78, 0xa2, + 0x21, 0xfb, 0x88, 0x52, 0x6e, 0xb4, 0xc7, 0x1d, 0xbf, 0x65, 0x16, 0xcc, 0xf0, 0x2a, 0x59, 0x83, + 0x42, 0x98, 0xeb, 0x31, 0xd, 0xd7, 0xa4, 0x7e, 0xdc, 0x6, 0x75, 0xaf, 0x93, 0x49, 0x3a, 0xe0, + 0x63, 0xb9, 0xca, 0x10, 0x2c, 0xf6, 0x85, 0x5f, 0xfd, 0x27, 0x54, 0x8e, 0xb2, 0x68, 0x1b, 0xc1, + 0x84, 0x5e, 0x2d, 0xf7, 0xcb, 0x11, 0x62, 0xb8, 0x1a, 0xc0, 0xb3, 0x69, 0x55, 0x8f, 0xfc, 0x26, + 0xa5, 0x7f, 0xc, 0xd6, 0xea, 0x30, 0x43, 0x99, 0x3b, 0xe1, 0x92, 0x48, 0x74, 0xae, 0xdd, 0x7, + 0xc6, 0x1c, 0x6f, 0xb5, 0x89, 0x53, 0x20, 0xfa, 0x58, 0x82, 0xf1, 0x2b, 0x17, 0xcd, 0xbe, 0x64, + 0xe7, 0x3d, 0x4e, 0x94, 0xa8, 0x72, 0x1, 0xdb, 0x79, 0xa3, 0xd0, 0xa, 0x36, 0xec, 0x9f, 0x45, + 0x15, 0xcf, 0xbc, 0x66, 0x5a, 0x80, 0xf3, 0x29, 0x8b, 0x51, 0x22, 0xf8, 0xc4, 0x1e, 0x6d, 0xb7, + 0x34, 0xee, 0x9d, 0x47, 0x7b, 0xa1, 0xd2, 0x8, 0xaa, 0x70, 0x3, 0xd9, 0xe5, 0x3f, 0x4c, 0x96, + 0x57, 0x8d, 0xfe, 0x24, 0x18, 0xc2, 0xb1, 0x6b, 0xc9, 0x13, 0x60, 0xba, 0x86, 0x5c, 0x2f, 0xf5, + 0x76, 0xac, 0xdf, 0x5, 0x39, 0xe3, 0x90, 0x4a, 0xe8, 0x32, 0x41, 0x9b, 0xa7, 0x7d, 0xe, 0xd4, + 0x91, 0x4b, 0x38, 0xe2, 0xde, 0x4, 0x77, 0xad, 0xf, 0xd5, 0xa6, 0x7c, 0x40, 0x9a, 0xe9, 0x33, + 0xb0, 0x6a, 0x19, 0xc3, 0xff, 0x25, 0x56, 0x8c, 0x2e, 0xf4, 0x87, 0x5d, 0x61, 0xbb, 0xc8, 0x12, + 0xd3, 0x9, 0x7a, 0xa0, 0x9c, 0x46, 0x35, 0xef, 0x4d, 0x97, 0xe4, 0x3e, 0x2, 0xd8, 0xab, 0x71, + 0xf2, 0x28, 0x5b, 0x81, 0xbd, 0x67, 0x14, 0xce, 0x6c, 0xb6, 0xc5, 0x1f, 0x23, 0xf9, 0x8a, 0x50, + ], + [ + 0x0, 0xdb, 0xab, 0x70, 0x4b, 0x90, 0xe0, 0x3b, 0x96, 0x4d, 0x3d, 0xe6, 0xdd, 0x6, 0x76, 0xad, + 0x31, 0xea, 0x9a, 0x41, 0x7a, 0xa1, 0xd1, 0xa, 0xa7, 0x7c, 0xc, 0xd7, 0xec, 0x37, 0x47, 0x9c, + 0x62, 0xb9, 0xc9, 0x12, 0x29, 0xf2, 0x82, 0x59, 0xf4, 0x2f, 0x5f, 0x84, 0xbf, 0x64, 0x14, 0xcf, + 0x53, 0x88, 0xf8, 0x23, 0x18, 0xc3, 0xb3, 0x68, 0xc5, 0x1e, 0x6e, 0xb5, 0x8e, 0x55, 0x25, 0xfe, + 0xc4, 0x1f, 0x6f, 0xb4, 0x8f, 0x54, 0x24, 0xff, 0x52, 0x89, 0xf9, 0x22, 0x19, 0xc2, 0xb2, 0x69, + 0xf5, 0x2e, 0x5e, 0x85, 0xbe, 0x65, 0x15, 0xce, 0x63, 0xb8, 0xc8, 0x13, 0x28, 0xf3, 0x83, 0x58, + 0xa6, 0x7d, 0xd, 0xd6, 0xed, 0x36, 0x46, 0x9d, 0x30, 0xeb, 0x9b, 0x40, 0x7b, 0xa0, 0xd0, 0xb, + 0x97, 0x4c, 0x3c, 0xe7, 0xdc, 0x7, 0x77, 0xac, 0x1, 0xda, 0xaa, 0x71, 0x4a, 0x91, 0xe1, 0x3a, + 0x95, 0x4e, 0x3e, 0xe5, 0xde, 0x5, 0x75, 0xae, 0x3, 0xd8, 0xa8, 0x73, 0x48, 0x93, 0xe3, 0x38, + 0xa4, 0x7f, 0xf, 0xd4, 0xef, 0x34, 0x44, 0x9f, 0x32, 0xe9, 0x99, 0x42, 0x79, 0xa2, 0xd2, 0x9, + 0xf7, 0x2c, 0x5c, 0x87, 0xbc, 0x67, 0x17, 0xcc, 0x61, 0xba, 0xca, 0x11, 0x2a, 0xf1, 0x81, 0x5a, + 0xc6, 0x1d, 0x6d, 0xb6, 0x8d, 0x56, 0x26, 0xfd, 0x50, 0x8b, 0xfb, 0x20, 0x1b, 0xc0, 0xb0, 0x6b, + 0x51, 0x8a, 0xfa, 0x21, 0x1a, 0xc1, 0xb1, 0x6a, 0xc7, 0x1c, 0x6c, 0xb7, 0x8c, 0x57, 0x27, 0xfc, + 0x60, 0xbb, 0xcb, 0x10, 0x2b, 0xf0, 0x80, 0x5b, 0xf6, 0x2d, 0x5d, 0x86, 0xbd, 0x66, 0x16, 0xcd, + 0x33, 0xe8, 0x98, 0x43, 0x78, 0xa3, 0xd3, 0x8, 0xa5, 0x7e, 0xe, 0xd5, 0xee, 0x35, 0x45, 0x9e, + 0x2, 0xd9, 0xa9, 0x72, 0x49, 0x92, 0xe2, 0x39, 0x94, 0x4f, 0x3f, 0xe4, 0xdf, 0x4, 0x74, 0xaf, + ], + [ + 0x0, 0xdc, 0xa5, 0x79, 0x57, 0x8b, 0xf2, 0x2e, 0xae, 0x72, 0xb, 0xd7, 0xf9, 0x25, 0x5c, 0x80, + 0x41, 0x9d, 0xe4, 0x38, 0x16, 0xca, 0xb3, 0x6f, 0xef, 0x33, 0x4a, 0x96, 0xb8, 0x64, 0x1d, 0xc1, + 0x82, 0x5e, 0x27, 0xfb, 0xd5, 0x9, 0x70, 0xac, 0x2c, 0xf0, 0x89, 0x55, 0x7b, 0xa7, 0xde, 0x2, + 0xc3, 0x1f, 0x66, 0xba, 0x94, 0x48, 0x31, 0xed, 0x6d, 0xb1, 0xc8, 0x14, 0x3a, 0xe6, 0x9f, 0x43, + 0x19, 0xc5, 0xbc, 0x60, 0x4e, 0x92, 0xeb, 0x37, 0xb7, 0x6b, 0x12, 0xce, 0xe0, 0x3c, 0x45, 0x99, + 0x58, 0x84, 0xfd, 0x21, 0xf, 0xd3, 0xaa, 0x76, 0xf6, 0x2a, 0x53, 0x8f, 0xa1, 0x7d, 0x4, 0xd8, + 0x9b, 0x47, 0x3e, 0xe2, 0xcc, 0x10, 0x69, 0xb5, 0x35, 0xe9, 0x90, 0x4c, 0x62, 0xbe, 0xc7, 0x1b, + 0xda, 0x6, 0x7f, 0xa3, 0x8d, 0x51, 0x28, 0xf4, 0x74, 0xa8, 0xd1, 0xd, 0x23, 0xff, 0x86, 0x5a, + 0x32, 0xee, 0x97, 0x4b, 0x65, 0xb9, 0xc0, 0x1c, 0x9c, 0x40, 0x39, 0xe5, 0xcb, 0x17, 0x6e, 0xb2, + 0x73, 0xaf, 0xd6, 0xa, 0x24, 0xf8, 0x81, 0x5d, 0xdd, 0x1, 0x78, 0xa4, 0x8a, 0x56, 0x2f, 0xf3, + 0xb0, 0x6c, 0x15, 0xc9, 0xe7, 0x3b, 0x42, 0x9e, 0x1e, 0xc2, 0xbb, 0x67, 0x49, 0x95, 0xec, 0x30, + 0xf1, 0x2d, 0x54, 0x88, 0xa6, 0x7a, 0x3, 0xdf, 0x5f, 0x83, 0xfa, 0x26, 0x8, 0xd4, 0xad, 0x71, + 0x2b, 0xf7, 0x8e, 0x52, 0x7c, 0xa0, 0xd9, 0x5, 0x85, 0x59, 0x20, 0xfc, 0xd2, 0xe, 0x77, 0xab, + 0x6a, 0xb6, 0xcf, 0x13, 0x3d, 0xe1, 0x98, 0x44, 0xc4, 0x18, 0x61, 0xbd, 0x93, 0x4f, 0x36, 0xea, + 0xa9, 0x75, 0xc, 0xd0, 0xfe, 0x22, 0x5b, 0x87, 0x7, 0xdb, 0xa2, 0x7e, 0x50, 0x8c, 0xf5, 0x29, + 0xe8, 0x34, 0x4d, 0x91, 0xbf, 0x63, 0x1a, 0xc6, 0x46, 0x9a, 0xe3, 0x3f, 0x11, 0xcd, 0xb4, 0x68, + ], + [ + 0x0, 0xdd, 0xa7, 0x7a, 0x53, 0x8e, 0xf4, 0x29, 0xa6, 0x7b, 0x1, 0xdc, 0xf5, 0x28, 0x52, 0x8f, + 0x51, 0x8c, 0xf6, 0x2b, 0x2, 0xdf, 0xa5, 0x78, 0xf7, 0x2a, 0x50, 0x8d, 0xa4, 0x79, 0x3, 0xde, + 0xa2, 0x7f, 0x5, 0xd8, 0xf1, 0x2c, 0x56, 0x8b, 0x4, 0xd9, 0xa3, 0x7e, 0x57, 0x8a, 0xf0, 0x2d, + 0xf3, 0x2e, 0x54, 0x89, 0xa0, 0x7d, 0x7, 0xda, 0x55, 0x88, 0xf2, 0x2f, 0x6, 0xdb, 0xa1, 0x7c, + 0x59, 0x84, 0xfe, 0x23, 0xa, 0xd7, 0xad, 0x70, 0xff, 0x22, 0x58, 0x85, 0xac, 0x71, 0xb, 0xd6, + 0x8, 0xd5, 0xaf, 0x72, 0x5b, 0x86, 0xfc, 0x21, 0xae, 0x73, 0x9, 0xd4, 0xfd, 0x20, 0x5a, 0x87, + 0xfb, 0x26, 0x5c, 0x81, 0xa8, 0x75, 0xf, 0xd2, 0x5d, 0x80, 0xfa, 0x27, 0xe, 0xd3, 0xa9, 0x74, + 0xaa, 0x77, 0xd, 0xd0, 0xf9, 0x24, 0x5e, 0x83, 0xc, 0xd1, 0xab, 0x76, 0x5f, 0x82, 0xf8, 0x25, + 0xb2, 0x6f, 0x15, 0xc8, 0xe1, 0x3c, 0x46, 0x9b, 0x14, 0xc9, 0xb3, 0x6e, 0x47, 0x9a, 0xe0, 0x3d, + 0xe3, 0x3e, 0x44, 0x99, 0xb0, 0x6d, 0x17, 0xca, 0x45, 0x98, 0xe2, 0x3f, 0x16, 0xcb, 0xb1, 0x6c, + 0x10, 0xcd, 0xb7, 0x6a, 0x43, 0x9e, 0xe4, 0x39, 0xb6, 0x6b, 0x11, 0xcc, 0xe5, 0x38, 0x42, 0x9f, + 0x41, 0x9c, 0xe6, 0x3b, 0x12, 0xcf, 0xb5, 0x68, 0xe7, 0x3a, 0x40, 0x9d, 0xb4, 0x69, 0x13, 0xce, + 0xeb, 0x36, 0x4c, 0x91, 0xb8, 0x65, 0x1f, 0xc2, 0x4d, 0x90, 0xea, 0x37, 0x1e, 0xc3, 0xb9, 0x64, + 0xba, 0x67, 0x1d, 0xc0, 0xe9, 0x34, 0x4e, 0x93, 0x1c, 0xc1, 0xbb, 0x66, 0x4f, 0x92, 0xe8, 0x35, + 0x49, 0x94, 0xee, 0x33, 0x1a, 0xc7, 0xbd, 0x60, 0xef, 0x32, 0x48, 0x95, 0xbc, 0x61, 0x1b, 0xc6, + 0x18, 0xc5, 0xbf, 0x62, 0x4b, 0x96, 0xec, 0x31, 0xbe, 0x63, 0x19, 0xc4, 0xed, 0x30, 0x4a, 0x97, + ], + [ + 0x0, 0xde, 0xa1, 0x7f, 0x5f, 0x81, 0xfe, 0x20, 0xbe, 0x60, 0x1f, 0xc1, 0xe1, 0x3f, 0x40, 0x9e, + 0x61, 0xbf, 0xc0, 0x1e, 0x3e, 0xe0, 0x9f, 0x41, 0xdf, 0x1, 0x7e, 0xa0, 0x80, 0x5e, 0x21, 0xff, + 0xc2, 0x1c, 0x63, 0xbd, 0x9d, 0x43, 0x3c, 0xe2, 0x7c, 0xa2, 0xdd, 0x3, 0x23, 0xfd, 0x82, 0x5c, + 0xa3, 0x7d, 0x2, 0xdc, 0xfc, 0x22, 0x5d, 0x83, 0x1d, 0xc3, 0xbc, 0x62, 0x42, 0x9c, 0xe3, 0x3d, + 0x99, 0x47, 0x38, 0xe6, 0xc6, 0x18, 0x67, 0xb9, 0x27, 0xf9, 0x86, 0x58, 0x78, 0xa6, 0xd9, 0x7, + 0xf8, 0x26, 0x59, 0x87, 0xa7, 0x79, 0x6, 0xd8, 0x46, 0x98, 0xe7, 0x39, 0x19, 0xc7, 0xb8, 0x66, + 0x5b, 0x85, 0xfa, 0x24, 0x4, 0xda, 0xa5, 0x7b, 0xe5, 0x3b, 0x44, 0x9a, 0xba, 0x64, 0x1b, 0xc5, + 0x3a, 0xe4, 0x9b, 0x45, 0x65, 0xbb, 0xc4, 0x1a, 0x84, 0x5a, 0x25, 0xfb, 0xdb, 0x5, 0x7a, 0xa4, + 0x2f, 0xf1, 0x8e, 0x50, 0x70, 0xae, 0xd1, 0xf, 0x91, 0x4f, 0x30, 0xee, 0xce, 0x10, 0x6f, 0xb1, + 0x4e, 0x90, 0xef, 0x31, 0x11, 0xcf, 0xb0, 0x6e, 0xf0, 0x2e, 0x51, 0x8f, 0xaf, 0x71, 0xe, 0xd0, + 0xed, 0x33, 0x4c, 0x92, 0xb2, 0x6c, 0x13, 0xcd, 0x53, 0x8d, 0xf2, 0x2c, 0xc, 0xd2, 0xad, 0x73, + 0x8c, 0x52, 0x2d, 0xf3, 0xd3, 0xd, 0x72, 0xac, 0x32, 0xec, 0x93, 0x4d, 0x6d, 0xb3, 0xcc, 0x12, + 0xb6, 0x68, 0x17, 0xc9, 0xe9, 0x37, 0x48, 0x96, 0x8, 0xd6, 0xa9, 0x77, 0x57, 0x89, 0xf6, 0x28, + 0xd7, 0x9, 0x76, 0xa8, 0x88, 0x56, 0x29, 0xf7, 0x69, 0xb7, 0xc8, 0x16, 0x36, 0xe8, 0x97, 0x49, + 0x74, 0xaa, 0xd5, 0xb, 0x2b, 0xf5, 0x8a, 0x54, 0xca, 0x14, 0x6b, 0xb5, 0x95, 0x4b, 0x34, 0xea, + 0x15, 0xcb, 0xb4, 0x6a, 0x4a, 0x94, 0xeb, 0x35, 0xab, 0x75, 0xa, 0xd4, 0xf4, 0x2a, 0x55, 0x8b, + ], + [ + 0x0, 0xdf, 0xa3, 0x7c, 0x5b, 0x84, 0xf8, 0x27, 0xb6, 0x69, 0x15, 0xca, 0xed, 0x32, 0x4e, 0x91, + 0x71, 0xae, 0xd2, 0xd, 0x2a, 0xf5, 0x89, 0x56, 0xc7, 0x18, 0x64, 0xbb, 0x9c, 0x43, 0x3f, 0xe0, + 0xe2, 0x3d, 0x41, 0x9e, 0xb9, 0x66, 0x1a, 0xc5, 0x54, 0x8b, 0xf7, 0x28, 0xf, 0xd0, 0xac, 0x73, + 0x93, 0x4c, 0x30, 0xef, 0xc8, 0x17, 0x6b, 0xb4, 0x25, 0xfa, 0x86, 0x59, 0x7e, 0xa1, 0xdd, 0x2, + 0xd9, 0x6, 0x7a, 0xa5, 0x82, 0x5d, 0x21, 0xfe, 0x6f, 0xb0, 0xcc, 0x13, 0x34, 0xeb, 0x97, 0x48, + 0xa8, 0x77, 0xb, 0xd4, 0xf3, 0x2c, 0x50, 0x8f, 0x1e, 0xc1, 0xbd, 0x62, 0x45, 0x9a, 0xe6, 0x39, + 0x3b, 0xe4, 0x98, 0x47, 0x60, 0xbf, 0xc3, 0x1c, 0x8d, 0x52, 0x2e, 0xf1, 0xd6, 0x9, 0x75, 0xaa, + 0x4a, 0x95, 0xe9, 0x36, 0x11, 0xce, 0xb2, 0x6d, 0xfc, 0x23, 0x5f, 0x80, 0xa7, 0x78, 0x4, 0xdb, + 0xaf, 0x70, 0xc, 0xd3, 0xf4, 0x2b, 0x57, 0x88, 0x19, 0xc6, 0xba, 0x65, 0x42, 0x9d, 0xe1, 0x3e, + 0xde, 0x1, 0x7d, 0xa2, 0x85, 0x5a, 0x26, 0xf9, 0x68, 0xb7, 0xcb, 0x14, 0x33, 0xec, 0x90, 0x4f, + 0x4d, 0x92, 0xee, 0x31, 0x16, 0xc9, 0xb5, 0x6a, 0xfb, 0x24, 0x58, 0x87, 0xa0, 0x7f, 0x3, 0xdc, + 0x3c, 0xe3, 0x9f, 0x40, 0x67, 0xb8, 0xc4, 0x1b, 0x8a, 0x55, 0x29, 0xf6, 0xd1, 0xe, 0x72, 0xad, + 0x76, 0xa9, 0xd5, 0xa, 0x2d, 0xf2, 0x8e, 0x51, 0xc0, 0x1f, 0x63, 0xbc, 0x9b, 0x44, 0x38, 0xe7, + 0x7, 0xd8, 0xa4, 0x7b, 0x5c, 0x83, 0xff, 0x20, 0xb1, 0x6e, 0x12, 0xcd, 0xea, 0x35, 0x49, 0x96, + 0x94, 0x4b, 0x37, 0xe8, 0xcf, 0x10, 0x6c, 0xb3, 0x22, 0xfd, 0x81, 0x5e, 0x79, 0xa6, 0xda, 0x5, + 0xe5, 0x3a, 0x46, 0x99, 0xbe, 0x61, 0x1d, 0xc2, 0x53, 0x8c, 0xf0, 0x2f, 0x8, 0xd7, 0xab, 0x74, + ], + [ + 0x0, 0xe0, 0xdd, 0x3d, 0xa7, 0x47, 0x7a, 0x9a, 0x53, 0xb3, 0x8e, 0x6e, 0xf4, 0x14, 0x29, 0xc9, + 0xa6, 0x46, 0x7b, 0x9b, 0x1, 0xe1, 0xdc, 0x3c, 0xf5, 0x15, 0x28, 0xc8, 0x52, 0xb2, 0x8f, 0x6f, + 0x51, 0xb1, 0x8c, 0x6c, 0xf6, 0x16, 0x2b, 0xcb, 0x2, 0xe2, 0xdf, 0x3f, 0xa5, 0x45, 0x78, 0x98, + 0xf7, 0x17, 0x2a, 0xca, 0x50, 0xb0, 0x8d, 0x6d, 0xa4, 0x44, 0x79, 0x99, 0x3, 0xe3, 0xde, 0x3e, + 0xa2, 0x42, 0x7f, 0x9f, 0x5, 0xe5, 0xd8, 0x38, 0xf1, 0x11, 0x2c, 0xcc, 0x56, 0xb6, 0x8b, 0x6b, + 0x4, 0xe4, 0xd9, 0x39, 0xa3, 0x43, 0x7e, 0x9e, 0x57, 0xb7, 0x8a, 0x6a, 0xf0, 0x10, 0x2d, 0xcd, + 0xf3, 0x13, 0x2e, 0xce, 0x54, 0xb4, 0x89, 0x69, 0xa0, 0x40, 0x7d, 0x9d, 0x7, 0xe7, 0xda, 0x3a, + 0x55, 0xb5, 0x88, 0x68, 0xf2, 0x12, 0x2f, 0xcf, 0x6, 0xe6, 0xdb, 0x3b, 0xa1, 0x41, 0x7c, 0x9c, + 0x59, 0xb9, 0x84, 0x64, 0xfe, 0x1e, 0x23, 0xc3, 0xa, 0xea, 0xd7, 0x37, 0xad, 0x4d, 0x70, 0x90, + 0xff, 0x1f, 0x22, 0xc2, 0x58, 0xb8, 0x85, 0x65, 0xac, 0x4c, 0x71, 0x91, 0xb, 0xeb, 0xd6, 0x36, + 0x8, 0xe8, 0xd5, 0x35, 0xaf, 0x4f, 0x72, 0x92, 0x5b, 0xbb, 0x86, 0x66, 0xfc, 0x1c, 0x21, 0xc1, + 0xae, 0x4e, 0x73, 0x93, 0x9, 0xe9, 0xd4, 0x34, 0xfd, 0x1d, 0x20, 0xc0, 0x5a, 0xba, 0x87, 0x67, + 0xfb, 0x1b, 0x26, 0xc6, 0x5c, 0xbc, 0x81, 0x61, 0xa8, 0x48, 0x75, 0x95, 0xf, 0xef, 0xd2, 0x32, + 0x5d, 0xbd, 0x80, 0x60, 0xfa, 0x1a, 0x27, 0xc7, 0xe, 0xee, 0xd3, 0x33, 0xa9, 0x49, 0x74, 0x94, + 0xaa, 0x4a, 0x77, 0x97, 0xd, 0xed, 0xd0, 0x30, 0xf9, 0x19, 0x24, 0xc4, 0x5e, 0xbe, 0x83, 0x63, + 0xc, 0xec, 0xd1, 0x31, 0xab, 0x4b, 0x76, 0x96, 0x5f, 0xbf, 0x82, 0x62, 0xf8, 0x18, 0x25, 0xc5, + ], + [ + 0x0, 0xe1, 0xdf, 0x3e, 0xa3, 0x42, 0x7c, 0x9d, 0x5b, 0xba, 0x84, 0x65, 0xf8, 0x19, 0x27, 0xc6, + 0xb6, 0x57, 0x69, 0x88, 0x15, 0xf4, 0xca, 0x2b, 0xed, 0xc, 0x32, 0xd3, 0x4e, 0xaf, 0x91, 0x70, + 0x71, 0x90, 0xae, 0x4f, 0xd2, 0x33, 0xd, 0xec, 0x2a, 0xcb, 0xf5, 0x14, 0x89, 0x68, 0x56, 0xb7, + 0xc7, 0x26, 0x18, 0xf9, 0x64, 0x85, 0xbb, 0x5a, 0x9c, 0x7d, 0x43, 0xa2, 0x3f, 0xde, 0xe0, 0x1, + 0xe2, 0x3, 0x3d, 0xdc, 0x41, 0xa0, 0x9e, 0x7f, 0xb9, 0x58, 0x66, 0x87, 0x1a, 0xfb, 0xc5, 0x24, + 0x54, 0xb5, 0x8b, 0x6a, 0xf7, 0x16, 0x28, 0xc9, 0xf, 0xee, 0xd0, 0x31, 0xac, 0x4d, 0x73, 0x92, + 0x93, 0x72, 0x4c, 0xad, 0x30, 0xd1, 0xef, 0xe, 0xc8, 0x29, 0x17, 0xf6, 0x6b, 0x8a, 0xb4, 0x55, + 0x25, 0xc4, 0xfa, 0x1b, 0x86, 0x67, 0x59, 0xb8, 0x7e, 0x9f, 0xa1, 0x40, 0xdd, 0x3c, 0x2, 0xe3, + 0xd9, 0x38, 0x6, 0xe7, 0x7a, 0x9b, 0xa5, 0x44, 0x82, 0x63, 0x5d, 0xbc, 0x21, 0xc0, 0xfe, 0x1f, + 0x6f, 0x8e, 0xb0, 0x51, 0xcc, 0x2d, 0x13, 0xf2, 0x34, 0xd5, 0xeb, 0xa, 0x97, 0x76, 0x48, 0xa9, + 0xa8, 0x49, 0x77, 0x96, 0xb, 0xea, 0xd4, 0x35, 0xf3, 0x12, 0x2c, 0xcd, 0x50, 0xb1, 0x8f, 0x6e, + 0x1e, 0xff, 0xc1, 0x20, 0xbd, 0x5c, 0x62, 0x83, 0x45, 0xa4, 0x9a, 0x7b, 0xe6, 0x7, 0x39, 0xd8, + 0x3b, 0xda, 0xe4, 0x5, 0x98, 0x79, 0x47, 0xa6, 0x60, 0x81, 0xbf, 0x5e, 0xc3, 0x22, 0x1c, 0xfd, + 0x8d, 0x6c, 0x52, 0xb3, 0x2e, 0xcf, 0xf1, 0x10, 0xd6, 0x37, 0x9, 0xe8, 0x75, 0x94, 0xaa, 0x4b, + 0x4a, 0xab, 0x95, 0x74, 0xe9, 0x8, 0x36, 0xd7, 0x11, 0xf0, 0xce, 0x2f, 0xb2, 0x53, 0x6d, 0x8c, + 0xfc, 0x1d, 0x23, 0xc2, 0x5f, 0xbe, 0x80, 0x61, 0xa7, 0x46, 0x78, 0x99, 0x4, 0xe5, 0xdb, 0x3a, + ], + [ + 0x0, 0xe2, 0xd9, 0x3b, 0xaf, 0x4d, 0x76, 0x94, 0x43, 0xa1, 0x9a, 0x78, 0xec, 0xe, 0x35, 0xd7, + 0x86, 0x64, 0x5f, 0xbd, 0x29, 0xcb, 0xf0, 0x12, 0xc5, 0x27, 0x1c, 0xfe, 0x6a, 0x88, 0xb3, 0x51, + 0x11, 0xf3, 0xc8, 0x2a, 0xbe, 0x5c, 0x67, 0x85, 0x52, 0xb0, 0x8b, 0x69, 0xfd, 0x1f, 0x24, 0xc6, + 0x97, 0x75, 0x4e, 0xac, 0x38, 0xda, 0xe1, 0x3, 0xd4, 0x36, 0xd, 0xef, 0x7b, 0x99, 0xa2, 0x40, + 0x22, 0xc0, 0xfb, 0x19, 0x8d, 0x6f, 0x54, 0xb6, 0x61, 0x83, 0xb8, 0x5a, 0xce, 0x2c, 0x17, 0xf5, + 0xa4, 0x46, 0x7d, 0x9f, 0xb, 0xe9, 0xd2, 0x30, 0xe7, 0x5, 0x3e, 0xdc, 0x48, 0xaa, 0x91, 0x73, + 0x33, 0xd1, 0xea, 0x8, 0x9c, 0x7e, 0x45, 0xa7, 0x70, 0x92, 0xa9, 0x4b, 0xdf, 0x3d, 0x6, 0xe4, + 0xb5, 0x57, 0x6c, 0x8e, 0x1a, 0xf8, 0xc3, 0x21, 0xf6, 0x14, 0x2f, 0xcd, 0x59, 0xbb, 0x80, 0x62, + 0x44, 0xa6, 0x9d, 0x7f, 0xeb, 0x9, 0x32, 0xd0, 0x7, 0xe5, 0xde, 0x3c, 0xa8, 0x4a, 0x71, 0x93, + 0xc2, 0x20, 0x1b, 0xf9, 0x6d, 0x8f, 0xb4, 0x56, 0x81, 0x63, 0x58, 0xba, 0x2e, 0xcc, 0xf7, 0x15, + 0x55, 0xb7, 0x8c, 0x6e, 0xfa, 0x18, 0x23, 0xc1, 0x16, 0xf4, 0xcf, 0x2d, 0xb9, 0x5b, 0x60, 0x82, + 0xd3, 0x31, 0xa, 0xe8, 0x7c, 0x9e, 0xa5, 0x47, 0x90, 0x72, 0x49, 0xab, 0x3f, 0xdd, 0xe6, 0x4, + 0x66, 0x84, 0xbf, 0x5d, 0xc9, 0x2b, 0x10, 0xf2, 0x25, 0xc7, 0xfc, 0x1e, 0x8a, 0x68, 0x53, 0xb1, + 0xe0, 0x2, 0x39, 0xdb, 0x4f, 0xad, 0x96, 0x74, 0xa3, 0x41, 0x7a, 0x98, 0xc, 0xee, 0xd5, 0x37, + 0x77, 0x95, 0xae, 0x4c, 0xd8, 0x3a, 0x1, 0xe3, 0x34, 0xd6, 0xed, 0xf, 0x9b, 0x79, 0x42, 0xa0, + 0xf1, 0x13, 0x28, 0xca, 0x5e, 0xbc, 0x87, 0x65, 0xb2, 0x50, 0x6b, 0x89, 0x1d, 0xff, 0xc4, 0x26, + ], + [ + 0x0, 0xe3, 0xdb, 0x38, 0xab, 0x48, 0x70, 0x93, 0x4b, 0xa8, 0x90, 0x73, 0xe0, 0x3, 0x3b, 0xd8, + 0x96, 0x75, 0x4d, 0xae, 0x3d, 0xde, 0xe6, 0x5, 0xdd, 0x3e, 0x6, 0xe5, 0x76, 0x95, 0xad, 0x4e, + 0x31, 0xd2, 0xea, 0x9, 0x9a, 0x79, 0x41, 0xa2, 0x7a, 0x99, 0xa1, 0x42, 0xd1, 0x32, 0xa, 0xe9, + 0xa7, 0x44, 0x7c, 0x9f, 0xc, 0xef, 0xd7, 0x34, 0xec, 0xf, 0x37, 0xd4, 0x47, 0xa4, 0x9c, 0x7f, + 0x62, 0x81, 0xb9, 0x5a, 0xc9, 0x2a, 0x12, 0xf1, 0x29, 0xca, 0xf2, 0x11, 0x82, 0x61, 0x59, 0xba, + 0xf4, 0x17, 0x2f, 0xcc, 0x5f, 0xbc, 0x84, 0x67, 0xbf, 0x5c, 0x64, 0x87, 0x14, 0xf7, 0xcf, 0x2c, + 0x53, 0xb0, 0x88, 0x6b, 0xf8, 0x1b, 0x23, 0xc0, 0x18, 0xfb, 0xc3, 0x20, 0xb3, 0x50, 0x68, 0x8b, + 0xc5, 0x26, 0x1e, 0xfd, 0x6e, 0x8d, 0xb5, 0x56, 0x8e, 0x6d, 0x55, 0xb6, 0x25, 0xc6, 0xfe, 0x1d, + 0xc4, 0x27, 0x1f, 0xfc, 0x6f, 0x8c, 0xb4, 0x57, 0x8f, 0x6c, 0x54, 0xb7, 0x24, 0xc7, 0xff, 0x1c, + 0x52, 0xb1, 0x89, 0x6a, 0xf9, 0x1a, 0x22, 0xc1, 0x19, 0xfa, 0xc2, 0x21, 0xb2, 0x51, 0x69, 0x8a, + 0xf5, 0x16, 0x2e, 0xcd, 0x5e, 0xbd, 0x85, 0x66, 0xbe, 0x5d, 0x65, 0x86, 0x15, 0xf6, 0xce, 0x2d, + 0x63, 0x80, 0xb8, 0x5b, 0xc8, 0x2b, 0x13, 0xf0, 0x28, 0xcb, 0xf3, 0x10, 0x83, 0x60, 0x58, 0xbb, + 0xa6, 0x45, 0x7d, 0x9e, 0xd, 0xee, 0xd6, 0x35, 0xed, 0xe, 0x36, 0xd5, 0x46, 0xa5, 0x9d, 0x7e, + 0x30, 0xd3, 0xeb, 0x8, 0x9b, 0x78, 0x40, 0xa3, 0x7b, 0x98, 0xa0, 0x43, 0xd0, 0x33, 0xb, 0xe8, + 0x97, 0x74, 0x4c, 0xaf, 0x3c, 0xdf, 0xe7, 0x4, 0xdc, 0x3f, 0x7, 0xe4, 0x77, 0x94, 0xac, 0x4f, + 0x1, 0xe2, 0xda, 0x39, 0xaa, 0x49, 0x71, 0x92, 0x4a, 0xa9, 0x91, 0x72, 0xe1, 0x2, 0x3a, 0xd9, + ], + [ + 0x0, 0xe4, 0xd5, 0x31, 0xb7, 0x53, 0x62, 0x86, 0x73, 0x97, 0xa6, 0x42, 0xc4, 0x20, 0x11, 0xf5, + 0xe6, 0x2, 0x33, 0xd7, 0x51, 0xb5, 0x84, 0x60, 0x95, 0x71, 0x40, 0xa4, 0x22, 0xc6, 0xf7, 0x13, + 0xd1, 0x35, 0x4, 0xe0, 0x66, 0x82, 0xb3, 0x57, 0xa2, 0x46, 0x77, 0x93, 0x15, 0xf1, 0xc0, 0x24, + 0x37, 0xd3, 0xe2, 0x6, 0x80, 0x64, 0x55, 0xb1, 0x44, 0xa0, 0x91, 0x75, 0xf3, 0x17, 0x26, 0xc2, + 0xbf, 0x5b, 0x6a, 0x8e, 0x8, 0xec, 0xdd, 0x39, 0xcc, 0x28, 0x19, 0xfd, 0x7b, 0x9f, 0xae, 0x4a, + 0x59, 0xbd, 0x8c, 0x68, 0xee, 0xa, 0x3b, 0xdf, 0x2a, 0xce, 0xff, 0x1b, 0x9d, 0x79, 0x48, 0xac, + 0x6e, 0x8a, 0xbb, 0x5f, 0xd9, 0x3d, 0xc, 0xe8, 0x1d, 0xf9, 0xc8, 0x2c, 0xaa, 0x4e, 0x7f, 0x9b, + 0x88, 0x6c, 0x5d, 0xb9, 0x3f, 0xdb, 0xea, 0xe, 0xfb, 0x1f, 0x2e, 0xca, 0x4c, 0xa8, 0x99, 0x7d, + 0x63, 0x87, 0xb6, 0x52, 0xd4, 0x30, 0x1, 0xe5, 0x10, 0xf4, 0xc5, 0x21, 0xa7, 0x43, 0x72, 0x96, + 0x85, 0x61, 0x50, 0xb4, 0x32, 0xd6, 0xe7, 0x3, 0xf6, 0x12, 0x23, 0xc7, 0x41, 0xa5, 0x94, 0x70, + 0xb2, 0x56, 0x67, 0x83, 0x5, 0xe1, 0xd0, 0x34, 0xc1, 0x25, 0x14, 0xf0, 0x76, 0x92, 0xa3, 0x47, + 0x54, 0xb0, 0x81, 0x65, 0xe3, 0x7, 0x36, 0xd2, 0x27, 0xc3, 0xf2, 0x16, 0x90, 0x74, 0x45, 0xa1, + 0xdc, 0x38, 0x9, 0xed, 0x6b, 0x8f, 0xbe, 0x5a, 0xaf, 0x4b, 0x7a, 0x9e, 0x18, 0xfc, 0xcd, 0x29, + 0x3a, 0xde, 0xef, 0xb, 0x8d, 0x69, 0x58, 0xbc, 0x49, 0xad, 0x9c, 0x78, 0xfe, 0x1a, 0x2b, 0xcf, + 0xd, 0xe9, 0xd8, 0x3c, 0xba, 0x5e, 0x6f, 0x8b, 0x7e, 0x9a, 0xab, 0x4f, 0xc9, 0x2d, 0x1c, 0xf8, + 0xeb, 0xf, 0x3e, 0xda, 0x5c, 0xb8, 0x89, 0x6d, 0x98, 0x7c, 0x4d, 0xa9, 0x2f, 0xcb, 0xfa, 0x1e, + ], + [ + 0x0, 0xe5, 0xd7, 0x32, 0xb3, 0x56, 0x64, 0x81, 0x7b, 0x9e, 0xac, 0x49, 0xc8, 0x2d, 0x1f, 0xfa, + 0xf6, 0x13, 0x21, 0xc4, 0x45, 0xa0, 0x92, 0x77, 0x8d, 0x68, 0x5a, 0xbf, 0x3e, 0xdb, 0xe9, 0xc, + 0xf1, 0x14, 0x26, 0xc3, 0x42, 0xa7, 0x95, 0x70, 0x8a, 0x6f, 0x5d, 0xb8, 0x39, 0xdc, 0xee, 0xb, + 0x7, 0xe2, 0xd0, 0x35, 0xb4, 0x51, 0x63, 0x86, 0x7c, 0x99, 0xab, 0x4e, 0xcf, 0x2a, 0x18, 0xfd, + 0xff, 0x1a, 0x28, 0xcd, 0x4c, 0xa9, 0x9b, 0x7e, 0x84, 0x61, 0x53, 0xb6, 0x37, 0xd2, 0xe0, 0x5, + 0x9, 0xec, 0xde, 0x3b, 0xba, 0x5f, 0x6d, 0x88, 0x72, 0x97, 0xa5, 0x40, 0xc1, 0x24, 0x16, 0xf3, + 0xe, 0xeb, 0xd9, 0x3c, 0xbd, 0x58, 0x6a, 0x8f, 0x75, 0x90, 0xa2, 0x47, 0xc6, 0x23, 0x11, 0xf4, + 0xf8, 0x1d, 0x2f, 0xca, 0x4b, 0xae, 0x9c, 0x79, 0x83, 0x66, 0x54, 0xb1, 0x30, 0xd5, 0xe7, 0x2, + 0xe3, 0x6, 0x34, 0xd1, 0x50, 0xb5, 0x87, 0x62, 0x98, 0x7d, 0x4f, 0xaa, 0x2b, 0xce, 0xfc, 0x19, + 0x15, 0xf0, 0xc2, 0x27, 0xa6, 0x43, 0x71, 0x94, 0x6e, 0x8b, 0xb9, 0x5c, 0xdd, 0x38, 0xa, 0xef, + 0x12, 0xf7, 0xc5, 0x20, 0xa1, 0x44, 0x76, 0x93, 0x69, 0x8c, 0xbe, 0x5b, 0xda, 0x3f, 0xd, 0xe8, + 0xe4, 0x1, 0x33, 0xd6, 0x57, 0xb2, 0x80, 0x65, 0x9f, 0x7a, 0x48, 0xad, 0x2c, 0xc9, 0xfb, 0x1e, + 0x1c, 0xf9, 0xcb, 0x2e, 0xaf, 0x4a, 0x78, 0x9d, 0x67, 0x82, 0xb0, 0x55, 0xd4, 0x31, 0x3, 0xe6, + 0xea, 0xf, 0x3d, 0xd8, 0x59, 0xbc, 0x8e, 0x6b, 0x91, 0x74, 0x46, 0xa3, 0x22, 0xc7, 0xf5, 0x10, + 0xed, 0x8, 0x3a, 0xdf, 0x5e, 0xbb, 0x89, 0x6c, 0x96, 0x73, 0x41, 0xa4, 0x25, 0xc0, 0xf2, 0x17, + 0x1b, 0xfe, 0xcc, 0x29, 0xa8, 0x4d, 0x7f, 0x9a, 0x60, 0x85, 0xb7, 0x52, 0xd3, 0x36, 0x4, 0xe1, + ], + [ + 0x0, 0xe6, 0xd1, 0x37, 0xbf, 0x59, 0x6e, 0x88, 0x63, 0x85, 0xb2, 0x54, 0xdc, 0x3a, 0xd, 0xeb, + 0xc6, 0x20, 0x17, 0xf1, 0x79, 0x9f, 0xa8, 0x4e, 0xa5, 0x43, 0x74, 0x92, 0x1a, 0xfc, 0xcb, 0x2d, + 0x91, 0x77, 0x40, 0xa6, 0x2e, 0xc8, 0xff, 0x19, 0xf2, 0x14, 0x23, 0xc5, 0x4d, 0xab, 0x9c, 0x7a, + 0x57, 0xb1, 0x86, 0x60, 0xe8, 0xe, 0x39, 0xdf, 0x34, 0xd2, 0xe5, 0x3, 0x8b, 0x6d, 0x5a, 0xbc, + 0x3f, 0xd9, 0xee, 0x8, 0x80, 0x66, 0x51, 0xb7, 0x5c, 0xba, 0x8d, 0x6b, 0xe3, 0x5, 0x32, 0xd4, + 0xf9, 0x1f, 0x28, 0xce, 0x46, 0xa0, 0x97, 0x71, 0x9a, 0x7c, 0x4b, 0xad, 0x25, 0xc3, 0xf4, 0x12, + 0xae, 0x48, 0x7f, 0x99, 0x11, 0xf7, 0xc0, 0x26, 0xcd, 0x2b, 0x1c, 0xfa, 0x72, 0x94, 0xa3, 0x45, + 0x68, 0x8e, 0xb9, 0x5f, 0xd7, 0x31, 0x6, 0xe0, 0xb, 0xed, 0xda, 0x3c, 0xb4, 0x52, 0x65, 0x83, + 0x7e, 0x98, 0xaf, 0x49, 0xc1, 0x27, 0x10, 0xf6, 0x1d, 0xfb, 0xcc, 0x2a, 0xa2, 0x44, 0x73, 0x95, + 0xb8, 0x5e, 0x69, 0x8f, 0x7, 0xe1, 0xd6, 0x30, 0xdb, 0x3d, 0xa, 0xec, 0x64, 0x82, 0xb5, 0x53, + 0xef, 0x9, 0x3e, 0xd8, 0x50, 0xb6, 0x81, 0x67, 0x8c, 0x6a, 0x5d, 0xbb, 0x33, 0xd5, 0xe2, 0x4, + 0x29, 0xcf, 0xf8, 0x1e, 0x96, 0x70, 0x47, 0xa1, 0x4a, 0xac, 0x9b, 0x7d, 0xf5, 0x13, 0x24, 0xc2, + 0x41, 0xa7, 0x90, 0x76, 0xfe, 0x18, 0x2f, 0xc9, 0x22, 0xc4, 0xf3, 0x15, 0x9d, 0x7b, 0x4c, 0xaa, + 0x87, 0x61, 0x56, 0xb0, 0x38, 0xde, 0xe9, 0xf, 0xe4, 0x2, 0x35, 0xd3, 0x5b, 0xbd, 0x8a, 0x6c, + 0xd0, 0x36, 0x1, 0xe7, 0x6f, 0x89, 0xbe, 0x58, 0xb3, 0x55, 0x62, 0x84, 0xc, 0xea, 0xdd, 0x3b, + 0x16, 0xf0, 0xc7, 0x21, 0xa9, 0x4f, 0x78, 0x9e, 0x75, 0x93, 0xa4, 0x42, 0xca, 0x2c, 0x1b, 0xfd, + ], + [ + 0x0, 0xe7, 0xd3, 0x34, 0xbb, 0x5c, 0x68, 0x8f, 0x6b, 0x8c, 0xb8, 0x5f, 0xd0, 0x37, 0x3, 0xe4, + 0xd6, 0x31, 0x5, 0xe2, 0x6d, 0x8a, 0xbe, 0x59, 0xbd, 0x5a, 0x6e, 0x89, 0x6, 0xe1, 0xd5, 0x32, + 0xb1, 0x56, 0x62, 0x85, 0xa, 0xed, 0xd9, 0x3e, 0xda, 0x3d, 0x9, 0xee, 0x61, 0x86, 0xb2, 0x55, + 0x67, 0x80, 0xb4, 0x53, 0xdc, 0x3b, 0xf, 0xe8, 0xc, 0xeb, 0xdf, 0x38, 0xb7, 0x50, 0x64, 0x83, + 0x7f, 0x98, 0xac, 0x4b, 0xc4, 0x23, 0x17, 0xf0, 0x14, 0xf3, 0xc7, 0x20, 0xaf, 0x48, 0x7c, 0x9b, + 0xa9, 0x4e, 0x7a, 0x9d, 0x12, 0xf5, 0xc1, 0x26, 0xc2, 0x25, 0x11, 0xf6, 0x79, 0x9e, 0xaa, 0x4d, + 0xce, 0x29, 0x1d, 0xfa, 0x75, 0x92, 0xa6, 0x41, 0xa5, 0x42, 0x76, 0x91, 0x1e, 0xf9, 0xcd, 0x2a, + 0x18, 0xff, 0xcb, 0x2c, 0xa3, 0x44, 0x70, 0x97, 0x73, 0x94, 0xa0, 0x47, 0xc8, 0x2f, 0x1b, 0xfc, + 0xfe, 0x19, 0x2d, 0xca, 0x45, 0xa2, 0x96, 0x71, 0x95, 0x72, 0x46, 0xa1, 0x2e, 0xc9, 0xfd, 0x1a, + 0x28, 0xcf, 0xfb, 0x1c, 0x93, 0x74, 0x40, 0xa7, 0x43, 0xa4, 0x90, 0x77, 0xf8, 0x1f, 0x2b, 0xcc, + 0x4f, 0xa8, 0x9c, 0x7b, 0xf4, 0x13, 0x27, 0xc0, 0x24, 0xc3, 0xf7, 0x10, 0x9f, 0x78, 0x4c, 0xab, + 0x99, 0x7e, 0x4a, 0xad, 0x22, 0xc5, 0xf1, 0x16, 0xf2, 0x15, 0x21, 0xc6, 0x49, 0xae, 0x9a, 0x7d, + 0x81, 0x66, 0x52, 0xb5, 0x3a, 0xdd, 0xe9, 0xe, 0xea, 0xd, 0x39, 0xde, 0x51, 0xb6, 0x82, 0x65, + 0x57, 0xb0, 0x84, 0x63, 0xec, 0xb, 0x3f, 0xd8, 0x3c, 0xdb, 0xef, 0x8, 0x87, 0x60, 0x54, 0xb3, + 0x30, 0xd7, 0xe3, 0x4, 0x8b, 0x6c, 0x58, 0xbf, 0x5b, 0xbc, 0x88, 0x6f, 0xe0, 0x7, 0x33, 0xd4, + 0xe6, 0x1, 0x35, 0xd2, 0x5d, 0xba, 0x8e, 0x69, 0x8d, 0x6a, 0x5e, 0xb9, 0x36, 0xd1, 0xe5, 0x2, + ], + [ + 0x0, 0xe8, 0xcd, 0x25, 0x87, 0x6f, 0x4a, 0xa2, 0x13, 0xfb, 0xde, 0x36, 0x94, 0x7c, 0x59, 0xb1, + 0x26, 0xce, 0xeb, 0x3, 0xa1, 0x49, 0x6c, 0x84, 0x35, 0xdd, 0xf8, 0x10, 0xb2, 0x5a, 0x7f, 0x97, + 0x4c, 0xa4, 0x81, 0x69, 0xcb, 0x23, 0x6, 0xee, 0x5f, 0xb7, 0x92, 0x7a, 0xd8, 0x30, 0x15, 0xfd, + 0x6a, 0x82, 0xa7, 0x4f, 0xed, 0x5, 0x20, 0xc8, 0x79, 0x91, 0xb4, 0x5c, 0xfe, 0x16, 0x33, 0xdb, + 0x98, 0x70, 0x55, 0xbd, 0x1f, 0xf7, 0xd2, 0x3a, 0x8b, 0x63, 0x46, 0xae, 0xc, 0xe4, 0xc1, 0x29, + 0xbe, 0x56, 0x73, 0x9b, 0x39, 0xd1, 0xf4, 0x1c, 0xad, 0x45, 0x60, 0x88, 0x2a, 0xc2, 0xe7, 0xf, + 0xd4, 0x3c, 0x19, 0xf1, 0x53, 0xbb, 0x9e, 0x76, 0xc7, 0x2f, 0xa, 0xe2, 0x40, 0xa8, 0x8d, 0x65, + 0xf2, 0x1a, 0x3f, 0xd7, 0x75, 0x9d, 0xb8, 0x50, 0xe1, 0x9, 0x2c, 0xc4, 0x66, 0x8e, 0xab, 0x43, + 0x2d, 0xc5, 0xe0, 0x8, 0xaa, 0x42, 0x67, 0x8f, 0x3e, 0xd6, 0xf3, 0x1b, 0xb9, 0x51, 0x74, 0x9c, + 0xb, 0xe3, 0xc6, 0x2e, 0x8c, 0x64, 0x41, 0xa9, 0x18, 0xf0, 0xd5, 0x3d, 0x9f, 0x77, 0x52, 0xba, + 0x61, 0x89, 0xac, 0x44, 0xe6, 0xe, 0x2b, 0xc3, 0x72, 0x9a, 0xbf, 0x57, 0xf5, 0x1d, 0x38, 0xd0, + 0x47, 0xaf, 0x8a, 0x62, 0xc0, 0x28, 0xd, 0xe5, 0x54, 0xbc, 0x99, 0x71, 0xd3, 0x3b, 0x1e, 0xf6, + 0xb5, 0x5d, 0x78, 0x90, 0x32, 0xda, 0xff, 0x17, 0xa6, 0x4e, 0x6b, 0x83, 0x21, 0xc9, 0xec, 0x4, + 0x93, 0x7b, 0x5e, 0xb6, 0x14, 0xfc, 0xd9, 0x31, 0x80, 0x68, 0x4d, 0xa5, 0x7, 0xef, 0xca, 0x22, + 0xf9, 0x11, 0x34, 0xdc, 0x7e, 0x96, 0xb3, 0x5b, 0xea, 0x2, 0x27, 0xcf, 0x6d, 0x85, 0xa0, 0x48, + 0xdf, 0x37, 0x12, 0xfa, 0x58, 0xb0, 0x95, 0x7d, 0xcc, 0x24, 0x1, 0xe9, 0x4b, 0xa3, 0x86, 0x6e, + ], + [ + 0x0, 0xe9, 0xcf, 0x26, 0x83, 0x6a, 0x4c, 0xa5, 0x1b, 0xf2, 0xd4, 0x3d, 0x98, 0x71, 0x57, 0xbe, + 0x36, 0xdf, 0xf9, 0x10, 0xb5, 0x5c, 0x7a, 0x93, 0x2d, 0xc4, 0xe2, 0xb, 0xae, 0x47, 0x61, 0x88, + 0x6c, 0x85, 0xa3, 0x4a, 0xef, 0x6, 0x20, 0xc9, 0x77, 0x9e, 0xb8, 0x51, 0xf4, 0x1d, 0x3b, 0xd2, + 0x5a, 0xb3, 0x95, 0x7c, 0xd9, 0x30, 0x16, 0xff, 0x41, 0xa8, 0x8e, 0x67, 0xc2, 0x2b, 0xd, 0xe4, + 0xd8, 0x31, 0x17, 0xfe, 0x5b, 0xb2, 0x94, 0x7d, 0xc3, 0x2a, 0xc, 0xe5, 0x40, 0xa9, 0x8f, 0x66, + 0xee, 0x7, 0x21, 0xc8, 0x6d, 0x84, 0xa2, 0x4b, 0xf5, 0x1c, 0x3a, 0xd3, 0x76, 0x9f, 0xb9, 0x50, + 0xb4, 0x5d, 0x7b, 0x92, 0x37, 0xde, 0xf8, 0x11, 0xaf, 0x46, 0x60, 0x89, 0x2c, 0xc5, 0xe3, 0xa, + 0x82, 0x6b, 0x4d, 0xa4, 0x1, 0xe8, 0xce, 0x27, 0x99, 0x70, 0x56, 0xbf, 0x1a, 0xf3, 0xd5, 0x3c, + 0xad, 0x44, 0x62, 0x8b, 0x2e, 0xc7, 0xe1, 0x8, 0xb6, 0x5f, 0x79, 0x90, 0x35, 0xdc, 0xfa, 0x13, + 0x9b, 0x72, 0x54, 0xbd, 0x18, 0xf1, 0xd7, 0x3e, 0x80, 0x69, 0x4f, 0xa6, 0x3, 0xea, 0xcc, 0x25, + 0xc1, 0x28, 0xe, 0xe7, 0x42, 0xab, 0x8d, 0x64, 0xda, 0x33, 0x15, 0xfc, 0x59, 0xb0, 0x96, 0x7f, + 0xf7, 0x1e, 0x38, 0xd1, 0x74, 0x9d, 0xbb, 0x52, 0xec, 0x5, 0x23, 0xca, 0x6f, 0x86, 0xa0, 0x49, + 0x75, 0x9c, 0xba, 0x53, 0xf6, 0x1f, 0x39, 0xd0, 0x6e, 0x87, 0xa1, 0x48, 0xed, 0x4, 0x22, 0xcb, + 0x43, 0xaa, 0x8c, 0x65, 0xc0, 0x29, 0xf, 0xe6, 0x58, 0xb1, 0x97, 0x7e, 0xdb, 0x32, 0x14, 0xfd, + 0x19, 0xf0, 0xd6, 0x3f, 0x9a, 0x73, 0x55, 0xbc, 0x2, 0xeb, 0xcd, 0x24, 0x81, 0x68, 0x4e, 0xa7, + 0x2f, 0xc6, 0xe0, 0x9, 0xac, 0x45, 0x63, 0x8a, 0x34, 0xdd, 0xfb, 0x12, 0xb7, 0x5e, 0x78, 0x91, + ], + [ + 0x0, 0xea, 0xc9, 0x23, 0x8f, 0x65, 0x46, 0xac, 0x3, 0xe9, 0xca, 0x20, 0x8c, 0x66, 0x45, 0xaf, + 0x6, 0xec, 0xcf, 0x25, 0x89, 0x63, 0x40, 0xaa, 0x5, 0xef, 0xcc, 0x26, 0x8a, 0x60, 0x43, 0xa9, + 0xc, 0xe6, 0xc5, 0x2f, 0x83, 0x69, 0x4a, 0xa0, 0xf, 0xe5, 0xc6, 0x2c, 0x80, 0x6a, 0x49, 0xa3, + 0xa, 0xe0, 0xc3, 0x29, 0x85, 0x6f, 0x4c, 0xa6, 0x9, 0xe3, 0xc0, 0x2a, 0x86, 0x6c, 0x4f, 0xa5, + 0x18, 0xf2, 0xd1, 0x3b, 0x97, 0x7d, 0x5e, 0xb4, 0x1b, 0xf1, 0xd2, 0x38, 0x94, 0x7e, 0x5d, 0xb7, + 0x1e, 0xf4, 0xd7, 0x3d, 0x91, 0x7b, 0x58, 0xb2, 0x1d, 0xf7, 0xd4, 0x3e, 0x92, 0x78, 0x5b, 0xb1, + 0x14, 0xfe, 0xdd, 0x37, 0x9b, 0x71, 0x52, 0xb8, 0x17, 0xfd, 0xde, 0x34, 0x98, 0x72, 0x51, 0xbb, + 0x12, 0xf8, 0xdb, 0x31, 0x9d, 0x77, 0x54, 0xbe, 0x11, 0xfb, 0xd8, 0x32, 0x9e, 0x74, 0x57, 0xbd, + 0x30, 0xda, 0xf9, 0x13, 0xbf, 0x55, 0x76, 0x9c, 0x33, 0xd9, 0xfa, 0x10, 0xbc, 0x56, 0x75, 0x9f, + 0x36, 0xdc, 0xff, 0x15, 0xb9, 0x53, 0x70, 0x9a, 0x35, 0xdf, 0xfc, 0x16, 0xba, 0x50, 0x73, 0x99, + 0x3c, 0xd6, 0xf5, 0x1f, 0xb3, 0x59, 0x7a, 0x90, 0x3f, 0xd5, 0xf6, 0x1c, 0xb0, 0x5a, 0x79, 0x93, + 0x3a, 0xd0, 0xf3, 0x19, 0xb5, 0x5f, 0x7c, 0x96, 0x39, 0xd3, 0xf0, 0x1a, 0xb6, 0x5c, 0x7f, 0x95, + 0x28, 0xc2, 0xe1, 0xb, 0xa7, 0x4d, 0x6e, 0x84, 0x2b, 0xc1, 0xe2, 0x8, 0xa4, 0x4e, 0x6d, 0x87, + 0x2e, 0xc4, 0xe7, 0xd, 0xa1, 0x4b, 0x68, 0x82, 0x2d, 0xc7, 0xe4, 0xe, 0xa2, 0x48, 0x6b, 0x81, + 0x24, 0xce, 0xed, 0x7, 0xab, 0x41, 0x62, 0x88, 0x27, 0xcd, 0xee, 0x4, 0xa8, 0x42, 0x61, 0x8b, + 0x22, 0xc8, 0xeb, 0x1, 0xad, 0x47, 0x64, 0x8e, 0x21, 0xcb, 0xe8, 0x2, 0xae, 0x44, 0x67, 0x8d, + ], + [ + 0x0, 0xeb, 0xcb, 0x20, 0x8b, 0x60, 0x40, 0xab, 0xb, 0xe0, 0xc0, 0x2b, 0x80, 0x6b, 0x4b, 0xa0, + 0x16, 0xfd, 0xdd, 0x36, 0x9d, 0x76, 0x56, 0xbd, 0x1d, 0xf6, 0xd6, 0x3d, 0x96, 0x7d, 0x5d, 0xb6, + 0x2c, 0xc7, 0xe7, 0xc, 0xa7, 0x4c, 0x6c, 0x87, 0x27, 0xcc, 0xec, 0x7, 0xac, 0x47, 0x67, 0x8c, + 0x3a, 0xd1, 0xf1, 0x1a, 0xb1, 0x5a, 0x7a, 0x91, 0x31, 0xda, 0xfa, 0x11, 0xba, 0x51, 0x71, 0x9a, + 0x58, 0xb3, 0x93, 0x78, 0xd3, 0x38, 0x18, 0xf3, 0x53, 0xb8, 0x98, 0x73, 0xd8, 0x33, 0x13, 0xf8, + 0x4e, 0xa5, 0x85, 0x6e, 0xc5, 0x2e, 0xe, 0xe5, 0x45, 0xae, 0x8e, 0x65, 0xce, 0x25, 0x5, 0xee, + 0x74, 0x9f, 0xbf, 0x54, 0xff, 0x14, 0x34, 0xdf, 0x7f, 0x94, 0xb4, 0x5f, 0xf4, 0x1f, 0x3f, 0xd4, + 0x62, 0x89, 0xa9, 0x42, 0xe9, 0x2, 0x22, 0xc9, 0x69, 0x82, 0xa2, 0x49, 0xe2, 0x9, 0x29, 0xc2, + 0xb0, 0x5b, 0x7b, 0x90, 0x3b, 0xd0, 0xf0, 0x1b, 0xbb, 0x50, 0x70, 0x9b, 0x30, 0xdb, 0xfb, 0x10, + 0xa6, 0x4d, 0x6d, 0x86, 0x2d, 0xc6, 0xe6, 0xd, 0xad, 0x46, 0x66, 0x8d, 0x26, 0xcd, 0xed, 0x6, + 0x9c, 0x77, 0x57, 0xbc, 0x17, 0xfc, 0xdc, 0x37, 0x97, 0x7c, 0x5c, 0xb7, 0x1c, 0xf7, 0xd7, 0x3c, + 0x8a, 0x61, 0x41, 0xaa, 0x1, 0xea, 0xca, 0x21, 0x81, 0x6a, 0x4a, 0xa1, 0xa, 0xe1, 0xc1, 0x2a, + 0xe8, 0x3, 0x23, 0xc8, 0x63, 0x88, 0xa8, 0x43, 0xe3, 0x8, 0x28, 0xc3, 0x68, 0x83, 0xa3, 0x48, + 0xfe, 0x15, 0x35, 0xde, 0x75, 0x9e, 0xbe, 0x55, 0xf5, 0x1e, 0x3e, 0xd5, 0x7e, 0x95, 0xb5, 0x5e, + 0xc4, 0x2f, 0xf, 0xe4, 0x4f, 0xa4, 0x84, 0x6f, 0xcf, 0x24, 0x4, 0xef, 0x44, 0xaf, 0x8f, 0x64, + 0xd2, 0x39, 0x19, 0xf2, 0x59, 0xb2, 0x92, 0x79, 0xd9, 0x32, 0x12, 0xf9, 0x52, 0xb9, 0x99, 0x72, + ], + [ + 0x0, 0xec, 0xc5, 0x29, 0x97, 0x7b, 0x52, 0xbe, 0x33, 0xdf, 0xf6, 0x1a, 0xa4, 0x48, 0x61, 0x8d, + 0x66, 0x8a, 0xa3, 0x4f, 0xf1, 0x1d, 0x34, 0xd8, 0x55, 0xb9, 0x90, 0x7c, 0xc2, 0x2e, 0x7, 0xeb, + 0xcc, 0x20, 0x9, 0xe5, 0x5b, 0xb7, 0x9e, 0x72, 0xff, 0x13, 0x3a, 0xd6, 0x68, 0x84, 0xad, 0x41, + 0xaa, 0x46, 0x6f, 0x83, 0x3d, 0xd1, 0xf8, 0x14, 0x99, 0x75, 0x5c, 0xb0, 0xe, 0xe2, 0xcb, 0x27, + 0x85, 0x69, 0x40, 0xac, 0x12, 0xfe, 0xd7, 0x3b, 0xb6, 0x5a, 0x73, 0x9f, 0x21, 0xcd, 0xe4, 0x8, + 0xe3, 0xf, 0x26, 0xca, 0x74, 0x98, 0xb1, 0x5d, 0xd0, 0x3c, 0x15, 0xf9, 0x47, 0xab, 0x82, 0x6e, + 0x49, 0xa5, 0x8c, 0x60, 0xde, 0x32, 0x1b, 0xf7, 0x7a, 0x96, 0xbf, 0x53, 0xed, 0x1, 0x28, 0xc4, + 0x2f, 0xc3, 0xea, 0x6, 0xb8, 0x54, 0x7d, 0x91, 0x1c, 0xf0, 0xd9, 0x35, 0x8b, 0x67, 0x4e, 0xa2, + 0x17, 0xfb, 0xd2, 0x3e, 0x80, 0x6c, 0x45, 0xa9, 0x24, 0xc8, 0xe1, 0xd, 0xb3, 0x5f, 0x76, 0x9a, + 0x71, 0x9d, 0xb4, 0x58, 0xe6, 0xa, 0x23, 0xcf, 0x42, 0xae, 0x87, 0x6b, 0xd5, 0x39, 0x10, 0xfc, + 0xdb, 0x37, 0x1e, 0xf2, 0x4c, 0xa0, 0x89, 0x65, 0xe8, 0x4, 0x2d, 0xc1, 0x7f, 0x93, 0xba, 0x56, + 0xbd, 0x51, 0x78, 0x94, 0x2a, 0xc6, 0xef, 0x3, 0x8e, 0x62, 0x4b, 0xa7, 0x19, 0xf5, 0xdc, 0x30, + 0x92, 0x7e, 0x57, 0xbb, 0x5, 0xe9, 0xc0, 0x2c, 0xa1, 0x4d, 0x64, 0x88, 0x36, 0xda, 0xf3, 0x1f, + 0xf4, 0x18, 0x31, 0xdd, 0x63, 0x8f, 0xa6, 0x4a, 0xc7, 0x2b, 0x2, 0xee, 0x50, 0xbc, 0x95, 0x79, + 0x5e, 0xb2, 0x9b, 0x77, 0xc9, 0x25, 0xc, 0xe0, 0x6d, 0x81, 0xa8, 0x44, 0xfa, 0x16, 0x3f, 0xd3, + 0x38, 0xd4, 0xfd, 0x11, 0xaf, 0x43, 0x6a, 0x86, 0xb, 0xe7, 0xce, 0x22, 0x9c, 0x70, 0x59, 0xb5, + ], + [ + 0x0, 0xed, 0xc7, 0x2a, 0x93, 0x7e, 0x54, 0xb9, 0x3b, 0xd6, 0xfc, 0x11, 0xa8, 0x45, 0x6f, 0x82, + 0x76, 0x9b, 0xb1, 0x5c, 0xe5, 0x8, 0x22, 0xcf, 0x4d, 0xa0, 0x8a, 0x67, 0xde, 0x33, 0x19, 0xf4, + 0xec, 0x1, 0x2b, 0xc6, 0x7f, 0x92, 0xb8, 0x55, 0xd7, 0x3a, 0x10, 0xfd, 0x44, 0xa9, 0x83, 0x6e, + 0x9a, 0x77, 0x5d, 0xb0, 0x9, 0xe4, 0xce, 0x23, 0xa1, 0x4c, 0x66, 0x8b, 0x32, 0xdf, 0xf5, 0x18, + 0xc5, 0x28, 0x2, 0xef, 0x56, 0xbb, 0x91, 0x7c, 0xfe, 0x13, 0x39, 0xd4, 0x6d, 0x80, 0xaa, 0x47, + 0xb3, 0x5e, 0x74, 0x99, 0x20, 0xcd, 0xe7, 0xa, 0x88, 0x65, 0x4f, 0xa2, 0x1b, 0xf6, 0xdc, 0x31, + 0x29, 0xc4, 0xee, 0x3, 0xba, 0x57, 0x7d, 0x90, 0x12, 0xff, 0xd5, 0x38, 0x81, 0x6c, 0x46, 0xab, + 0x5f, 0xb2, 0x98, 0x75, 0xcc, 0x21, 0xb, 0xe6, 0x64, 0x89, 0xa3, 0x4e, 0xf7, 0x1a, 0x30, 0xdd, + 0x97, 0x7a, 0x50, 0xbd, 0x4, 0xe9, 0xc3, 0x2e, 0xac, 0x41, 0x6b, 0x86, 0x3f, 0xd2, 0xf8, 0x15, + 0xe1, 0xc, 0x26, 0xcb, 0x72, 0x9f, 0xb5, 0x58, 0xda, 0x37, 0x1d, 0xf0, 0x49, 0xa4, 0x8e, 0x63, + 0x7b, 0x96, 0xbc, 0x51, 0xe8, 0x5, 0x2f, 0xc2, 0x40, 0xad, 0x87, 0x6a, 0xd3, 0x3e, 0x14, 0xf9, + 0xd, 0xe0, 0xca, 0x27, 0x9e, 0x73, 0x59, 0xb4, 0x36, 0xdb, 0xf1, 0x1c, 0xa5, 0x48, 0x62, 0x8f, + 0x52, 0xbf, 0x95, 0x78, 0xc1, 0x2c, 0x6, 0xeb, 0x69, 0x84, 0xae, 0x43, 0xfa, 0x17, 0x3d, 0xd0, + 0x24, 0xc9, 0xe3, 0xe, 0xb7, 0x5a, 0x70, 0x9d, 0x1f, 0xf2, 0xd8, 0x35, 0x8c, 0x61, 0x4b, 0xa6, + 0xbe, 0x53, 0x79, 0x94, 0x2d, 0xc0, 0xea, 0x7, 0x85, 0x68, 0x42, 0xaf, 0x16, 0xfb, 0xd1, 0x3c, + 0xc8, 0x25, 0xf, 0xe2, 0x5b, 0xb6, 0x9c, 0x71, 0xf3, 0x1e, 0x34, 0xd9, 0x60, 0x8d, 0xa7, 0x4a, + ], + [ + 0x0, 0xee, 0xc1, 0x2f, 0x9f, 0x71, 0x5e, 0xb0, 0x23, 0xcd, 0xe2, 0xc, 0xbc, 0x52, 0x7d, 0x93, + 0x46, 0xa8, 0x87, 0x69, 0xd9, 0x37, 0x18, 0xf6, 0x65, 0x8b, 0xa4, 0x4a, 0xfa, 0x14, 0x3b, 0xd5, + 0x8c, 0x62, 0x4d, 0xa3, 0x13, 0xfd, 0xd2, 0x3c, 0xaf, 0x41, 0x6e, 0x80, 0x30, 0xde, 0xf1, 0x1f, + 0xca, 0x24, 0xb, 0xe5, 0x55, 0xbb, 0x94, 0x7a, 0xe9, 0x7, 0x28, 0xc6, 0x76, 0x98, 0xb7, 0x59, + 0x5, 0xeb, 0xc4, 0x2a, 0x9a, 0x74, 0x5b, 0xb5, 0x26, 0xc8, 0xe7, 0x9, 0xb9, 0x57, 0x78, 0x96, + 0x43, 0xad, 0x82, 0x6c, 0xdc, 0x32, 0x1d, 0xf3, 0x60, 0x8e, 0xa1, 0x4f, 0xff, 0x11, 0x3e, 0xd0, + 0x89, 0x67, 0x48, 0xa6, 0x16, 0xf8, 0xd7, 0x39, 0xaa, 0x44, 0x6b, 0x85, 0x35, 0xdb, 0xf4, 0x1a, + 0xcf, 0x21, 0xe, 0xe0, 0x50, 0xbe, 0x91, 0x7f, 0xec, 0x2, 0x2d, 0xc3, 0x73, 0x9d, 0xb2, 0x5c, + 0xa, 0xe4, 0xcb, 0x25, 0x95, 0x7b, 0x54, 0xba, 0x29, 0xc7, 0xe8, 0x6, 0xb6, 0x58, 0x77, 0x99, + 0x4c, 0xa2, 0x8d, 0x63, 0xd3, 0x3d, 0x12, 0xfc, 0x6f, 0x81, 0xae, 0x40, 0xf0, 0x1e, 0x31, 0xdf, + 0x86, 0x68, 0x47, 0xa9, 0x19, 0xf7, 0xd8, 0x36, 0xa5, 0x4b, 0x64, 0x8a, 0x3a, 0xd4, 0xfb, 0x15, + 0xc0, 0x2e, 0x1, 0xef, 0x5f, 0xb1, 0x9e, 0x70, 0xe3, 0xd, 0x22, 0xcc, 0x7c, 0x92, 0xbd, 0x53, + 0xf, 0xe1, 0xce, 0x20, 0x90, 0x7e, 0x51, 0xbf, 0x2c, 0xc2, 0xed, 0x3, 0xb3, 0x5d, 0x72, 0x9c, + 0x49, 0xa7, 0x88, 0x66, 0xd6, 0x38, 0x17, 0xf9, 0x6a, 0x84, 0xab, 0x45, 0xf5, 0x1b, 0x34, 0xda, + 0x83, 0x6d, 0x42, 0xac, 0x1c, 0xf2, 0xdd, 0x33, 0xa0, 0x4e, 0x61, 0x8f, 0x3f, 0xd1, 0xfe, 0x10, + 0xc5, 0x2b, 0x4, 0xea, 0x5a, 0xb4, 0x9b, 0x75, 0xe6, 0x8, 0x27, 0xc9, 0x79, 0x97, 0xb8, 0x56, + ], + [ + 0x0, 0xef, 0xc3, 0x2c, 0x9b, 0x74, 0x58, 0xb7, 0x2b, 0xc4, 0xe8, 0x7, 0xb0, 0x5f, 0x73, 0x9c, + 0x56, 0xb9, 0x95, 0x7a, 0xcd, 0x22, 0xe, 0xe1, 0x7d, 0x92, 0xbe, 0x51, 0xe6, 0x9, 0x25, 0xca, + 0xac, 0x43, 0x6f, 0x80, 0x37, 0xd8, 0xf4, 0x1b, 0x87, 0x68, 0x44, 0xab, 0x1c, 0xf3, 0xdf, 0x30, + 0xfa, 0x15, 0x39, 0xd6, 0x61, 0x8e, 0xa2, 0x4d, 0xd1, 0x3e, 0x12, 0xfd, 0x4a, 0xa5, 0x89, 0x66, + 0x45, 0xaa, 0x86, 0x69, 0xde, 0x31, 0x1d, 0xf2, 0x6e, 0x81, 0xad, 0x42, 0xf5, 0x1a, 0x36, 0xd9, + 0x13, 0xfc, 0xd0, 0x3f, 0x88, 0x67, 0x4b, 0xa4, 0x38, 0xd7, 0xfb, 0x14, 0xa3, 0x4c, 0x60, 0x8f, + 0xe9, 0x6, 0x2a, 0xc5, 0x72, 0x9d, 0xb1, 0x5e, 0xc2, 0x2d, 0x1, 0xee, 0x59, 0xb6, 0x9a, 0x75, + 0xbf, 0x50, 0x7c, 0x93, 0x24, 0xcb, 0xe7, 0x8, 0x94, 0x7b, 0x57, 0xb8, 0xf, 0xe0, 0xcc, 0x23, + 0x8a, 0x65, 0x49, 0xa6, 0x11, 0xfe, 0xd2, 0x3d, 0xa1, 0x4e, 0x62, 0x8d, 0x3a, 0xd5, 0xf9, 0x16, + 0xdc, 0x33, 0x1f, 0xf0, 0x47, 0xa8, 0x84, 0x6b, 0xf7, 0x18, 0x34, 0xdb, 0x6c, 0x83, 0xaf, 0x40, + 0x26, 0xc9, 0xe5, 0xa, 0xbd, 0x52, 0x7e, 0x91, 0xd, 0xe2, 0xce, 0x21, 0x96, 0x79, 0x55, 0xba, + 0x70, 0x9f, 0xb3, 0x5c, 0xeb, 0x4, 0x28, 0xc7, 0x5b, 0xb4, 0x98, 0x77, 0xc0, 0x2f, 0x3, 0xec, + 0xcf, 0x20, 0xc, 0xe3, 0x54, 0xbb, 0x97, 0x78, 0xe4, 0xb, 0x27, 0xc8, 0x7f, 0x90, 0xbc, 0x53, + 0x99, 0x76, 0x5a, 0xb5, 0x2, 0xed, 0xc1, 0x2e, 0xb2, 0x5d, 0x71, 0x9e, 0x29, 0xc6, 0xea, 0x5, + 0x63, 0x8c, 0xa0, 0x4f, 0xf8, 0x17, 0x3b, 0xd4, 0x48, 0xa7, 0x8b, 0x64, 0xd3, 0x3c, 0x10, 0xff, + 0x35, 0xda, 0xf6, 0x19, 0xae, 0x41, 0x6d, 0x82, 0x1e, 0xf1, 0xdd, 0x32, 0x85, 0x6a, 0x46, 0xa9, + ], + [ + 0x0, 0xf0, 0xfd, 0xd, 0xe7, 0x17, 0x1a, 0xea, 0xd3, 0x23, 0x2e, 0xde, 0x34, 0xc4, 0xc9, 0x39, + 0xbb, 0x4b, 0x46, 0xb6, 0x5c, 0xac, 0xa1, 0x51, 0x68, 0x98, 0x95, 0x65, 0x8f, 0x7f, 0x72, 0x82, + 0x6b, 0x9b, 0x96, 0x66, 0x8c, 0x7c, 0x71, 0x81, 0xb8, 0x48, 0x45, 0xb5, 0x5f, 0xaf, 0xa2, 0x52, + 0xd0, 0x20, 0x2d, 0xdd, 0x37, 0xc7, 0xca, 0x3a, 0x3, 0xf3, 0xfe, 0xe, 0xe4, 0x14, 0x19, 0xe9, + 0xd6, 0x26, 0x2b, 0xdb, 0x31, 0xc1, 0xcc, 0x3c, 0x5, 0xf5, 0xf8, 0x8, 0xe2, 0x12, 0x1f, 0xef, + 0x6d, 0x9d, 0x90, 0x60, 0x8a, 0x7a, 0x77, 0x87, 0xbe, 0x4e, 0x43, 0xb3, 0x59, 0xa9, 0xa4, 0x54, + 0xbd, 0x4d, 0x40, 0xb0, 0x5a, 0xaa, 0xa7, 0x57, 0x6e, 0x9e, 0x93, 0x63, 0x89, 0x79, 0x74, 0x84, + 0x6, 0xf6, 0xfb, 0xb, 0xe1, 0x11, 0x1c, 0xec, 0xd5, 0x25, 0x28, 0xd8, 0x32, 0xc2, 0xcf, 0x3f, + 0xb1, 0x41, 0x4c, 0xbc, 0x56, 0xa6, 0xab, 0x5b, 0x62, 0x92, 0x9f, 0x6f, 0x85, 0x75, 0x78, 0x88, + 0xa, 0xfa, 0xf7, 0x7, 0xed, 0x1d, 0x10, 0xe0, 0xd9, 0x29, 0x24, 0xd4, 0x3e, 0xce, 0xc3, 0x33, + 0xda, 0x2a, 0x27, 0xd7, 0x3d, 0xcd, 0xc0, 0x30, 0x9, 0xf9, 0xf4, 0x4, 0xee, 0x1e, 0x13, 0xe3, + 0x61, 0x91, 0x9c, 0x6c, 0x86, 0x76, 0x7b, 0x8b, 0xb2, 0x42, 0x4f, 0xbf, 0x55, 0xa5, 0xa8, 0x58, + 0x67, 0x97, 0x9a, 0x6a, 0x80, 0x70, 0x7d, 0x8d, 0xb4, 0x44, 0x49, 0xb9, 0x53, 0xa3, 0xae, 0x5e, + 0xdc, 0x2c, 0x21, 0xd1, 0x3b, 0xcb, 0xc6, 0x36, 0xf, 0xff, 0xf2, 0x2, 0xe8, 0x18, 0x15, 0xe5, + 0xc, 0xfc, 0xf1, 0x1, 0xeb, 0x1b, 0x16, 0xe6, 0xdf, 0x2f, 0x22, 0xd2, 0x38, 0xc8, 0xc5, 0x35, + 0xb7, 0x47, 0x4a, 0xba, 0x50, 0xa0, 0xad, 0x5d, 0x64, 0x94, 0x99, 0x69, 0x83, 0x73, 0x7e, 0x8e, + ], + [ + 0x0, 0xf1, 0xff, 0xe, 0xe3, 0x12, 0x1c, 0xed, 0xdb, 0x2a, 0x24, 0xd5, 0x38, 0xc9, 0xc7, 0x36, + 0xab, 0x5a, 0x54, 0xa5, 0x48, 0xb9, 0xb7, 0x46, 0x70, 0x81, 0x8f, 0x7e, 0x93, 0x62, 0x6c, 0x9d, + 0x4b, 0xba, 0xb4, 0x45, 0xa8, 0x59, 0x57, 0xa6, 0x90, 0x61, 0x6f, 0x9e, 0x73, 0x82, 0x8c, 0x7d, + 0xe0, 0x11, 0x1f, 0xee, 0x3, 0xf2, 0xfc, 0xd, 0x3b, 0xca, 0xc4, 0x35, 0xd8, 0x29, 0x27, 0xd6, + 0x96, 0x67, 0x69, 0x98, 0x75, 0x84, 0x8a, 0x7b, 0x4d, 0xbc, 0xb2, 0x43, 0xae, 0x5f, 0x51, 0xa0, + 0x3d, 0xcc, 0xc2, 0x33, 0xde, 0x2f, 0x21, 0xd0, 0xe6, 0x17, 0x19, 0xe8, 0x5, 0xf4, 0xfa, 0xb, + 0xdd, 0x2c, 0x22, 0xd3, 0x3e, 0xcf, 0xc1, 0x30, 0x6, 0xf7, 0xf9, 0x8, 0xe5, 0x14, 0x1a, 0xeb, + 0x76, 0x87, 0x89, 0x78, 0x95, 0x64, 0x6a, 0x9b, 0xad, 0x5c, 0x52, 0xa3, 0x4e, 0xbf, 0xb1, 0x40, + 0x31, 0xc0, 0xce, 0x3f, 0xd2, 0x23, 0x2d, 0xdc, 0xea, 0x1b, 0x15, 0xe4, 0x9, 0xf8, 0xf6, 0x7, + 0x9a, 0x6b, 0x65, 0x94, 0x79, 0x88, 0x86, 0x77, 0x41, 0xb0, 0xbe, 0x4f, 0xa2, 0x53, 0x5d, 0xac, + 0x7a, 0x8b, 0x85, 0x74, 0x99, 0x68, 0x66, 0x97, 0xa1, 0x50, 0x5e, 0xaf, 0x42, 0xb3, 0xbd, 0x4c, + 0xd1, 0x20, 0x2e, 0xdf, 0x32, 0xc3, 0xcd, 0x3c, 0xa, 0xfb, 0xf5, 0x4, 0xe9, 0x18, 0x16, 0xe7, + 0xa7, 0x56, 0x58, 0xa9, 0x44, 0xb5, 0xbb, 0x4a, 0x7c, 0x8d, 0x83, 0x72, 0x9f, 0x6e, 0x60, 0x91, + 0xc, 0xfd, 0xf3, 0x2, 0xef, 0x1e, 0x10, 0xe1, 0xd7, 0x26, 0x28, 0xd9, 0x34, 0xc5, 0xcb, 0x3a, + 0xec, 0x1d, 0x13, 0xe2, 0xf, 0xfe, 0xf0, 0x1, 0x37, 0xc6, 0xc8, 0x39, 0xd4, 0x25, 0x2b, 0xda, + 0x47, 0xb6, 0xb8, 0x49, 0xa4, 0x55, 0x5b, 0xaa, 0x9c, 0x6d, 0x63, 0x92, 0x7f, 0x8e, 0x80, 0x71, + ], + [ + 0x0, 0xf2, 0xf9, 0xb, 0xef, 0x1d, 0x16, 0xe4, 0xc3, 0x31, 0x3a, 0xc8, 0x2c, 0xde, 0xd5, 0x27, + 0x9b, 0x69, 0x62, 0x90, 0x74, 0x86, 0x8d, 0x7f, 0x58, 0xaa, 0xa1, 0x53, 0xb7, 0x45, 0x4e, 0xbc, + 0x2b, 0xd9, 0xd2, 0x20, 0xc4, 0x36, 0x3d, 0xcf, 0xe8, 0x1a, 0x11, 0xe3, 0x7, 0xf5, 0xfe, 0xc, + 0xb0, 0x42, 0x49, 0xbb, 0x5f, 0xad, 0xa6, 0x54, 0x73, 0x81, 0x8a, 0x78, 0x9c, 0x6e, 0x65, 0x97, + 0x56, 0xa4, 0xaf, 0x5d, 0xb9, 0x4b, 0x40, 0xb2, 0x95, 0x67, 0x6c, 0x9e, 0x7a, 0x88, 0x83, 0x71, + 0xcd, 0x3f, 0x34, 0xc6, 0x22, 0xd0, 0xdb, 0x29, 0xe, 0xfc, 0xf7, 0x5, 0xe1, 0x13, 0x18, 0xea, + 0x7d, 0x8f, 0x84, 0x76, 0x92, 0x60, 0x6b, 0x99, 0xbe, 0x4c, 0x47, 0xb5, 0x51, 0xa3, 0xa8, 0x5a, + 0xe6, 0x14, 0x1f, 0xed, 0x9, 0xfb, 0xf0, 0x2, 0x25, 0xd7, 0xdc, 0x2e, 0xca, 0x38, 0x33, 0xc1, + 0xac, 0x5e, 0x55, 0xa7, 0x43, 0xb1, 0xba, 0x48, 0x6f, 0x9d, 0x96, 0x64, 0x80, 0x72, 0x79, 0x8b, + 0x37, 0xc5, 0xce, 0x3c, 0xd8, 0x2a, 0x21, 0xd3, 0xf4, 0x6, 0xd, 0xff, 0x1b, 0xe9, 0xe2, 0x10, + 0x87, 0x75, 0x7e, 0x8c, 0x68, 0x9a, 0x91, 0x63, 0x44, 0xb6, 0xbd, 0x4f, 0xab, 0x59, 0x52, 0xa0, + 0x1c, 0xee, 0xe5, 0x17, 0xf3, 0x1, 0xa, 0xf8, 0xdf, 0x2d, 0x26, 0xd4, 0x30, 0xc2, 0xc9, 0x3b, + 0xfa, 0x8, 0x3, 0xf1, 0x15, 0xe7, 0xec, 0x1e, 0x39, 0xcb, 0xc0, 0x32, 0xd6, 0x24, 0x2f, 0xdd, + 0x61, 0x93, 0x98, 0x6a, 0x8e, 0x7c, 0x77, 0x85, 0xa2, 0x50, 0x5b, 0xa9, 0x4d, 0xbf, 0xb4, 0x46, + 0xd1, 0x23, 0x28, 0xda, 0x3e, 0xcc, 0xc7, 0x35, 0x12, 0xe0, 0xeb, 0x19, 0xfd, 0xf, 0x4, 0xf6, + 0x4a, 0xb8, 0xb3, 0x41, 0xa5, 0x57, 0x5c, 0xae, 0x89, 0x7b, 0x70, 0x82, 0x66, 0x94, 0x9f, 0x6d, + ], + [ + 0x0, 0xf3, 0xfb, 0x8, 0xeb, 0x18, 0x10, 0xe3, 0xcb, 0x38, 0x30, 0xc3, 0x20, 0xd3, 0xdb, 0x28, + 0x8b, 0x78, 0x70, 0x83, 0x60, 0x93, 0x9b, 0x68, 0x40, 0xb3, 0xbb, 0x48, 0xab, 0x58, 0x50, 0xa3, + 0xb, 0xf8, 0xf0, 0x3, 0xe0, 0x13, 0x1b, 0xe8, 0xc0, 0x33, 0x3b, 0xc8, 0x2b, 0xd8, 0xd0, 0x23, + 0x80, 0x73, 0x7b, 0x88, 0x6b, 0x98, 0x90, 0x63, 0x4b, 0xb8, 0xb0, 0x43, 0xa0, 0x53, 0x5b, 0xa8, + 0x16, 0xe5, 0xed, 0x1e, 0xfd, 0xe, 0x6, 0xf5, 0xdd, 0x2e, 0x26, 0xd5, 0x36, 0xc5, 0xcd, 0x3e, + 0x9d, 0x6e, 0x66, 0x95, 0x76, 0x85, 0x8d, 0x7e, 0x56, 0xa5, 0xad, 0x5e, 0xbd, 0x4e, 0x46, 0xb5, + 0x1d, 0xee, 0xe6, 0x15, 0xf6, 0x5, 0xd, 0xfe, 0xd6, 0x25, 0x2d, 0xde, 0x3d, 0xce, 0xc6, 0x35, + 0x96, 0x65, 0x6d, 0x9e, 0x7d, 0x8e, 0x86, 0x75, 0x5d, 0xae, 0xa6, 0x55, 0xb6, 0x45, 0x4d, 0xbe, + 0x2c, 0xdf, 0xd7, 0x24, 0xc7, 0x34, 0x3c, 0xcf, 0xe7, 0x14, 0x1c, 0xef, 0xc, 0xff, 0xf7, 0x4, + 0xa7, 0x54, 0x5c, 0xaf, 0x4c, 0xbf, 0xb7, 0x44, 0x6c, 0x9f, 0x97, 0x64, 0x87, 0x74, 0x7c, 0x8f, + 0x27, 0xd4, 0xdc, 0x2f, 0xcc, 0x3f, 0x37, 0xc4, 0xec, 0x1f, 0x17, 0xe4, 0x7, 0xf4, 0xfc, 0xf, + 0xac, 0x5f, 0x57, 0xa4, 0x47, 0xb4, 0xbc, 0x4f, 0x67, 0x94, 0x9c, 0x6f, 0x8c, 0x7f, 0x77, 0x84, + 0x3a, 0xc9, 0xc1, 0x32, 0xd1, 0x22, 0x2a, 0xd9, 0xf1, 0x2, 0xa, 0xf9, 0x1a, 0xe9, 0xe1, 0x12, + 0xb1, 0x42, 0x4a, 0xb9, 0x5a, 0xa9, 0xa1, 0x52, 0x7a, 0x89, 0x81, 0x72, 0x91, 0x62, 0x6a, 0x99, + 0x31, 0xc2, 0xca, 0x39, 0xda, 0x29, 0x21, 0xd2, 0xfa, 0x9, 0x1, 0xf2, 0x11, 0xe2, 0xea, 0x19, + 0xba, 0x49, 0x41, 0xb2, 0x51, 0xa2, 0xaa, 0x59, 0x71, 0x82, 0x8a, 0x79, 0x9a, 0x69, 0x61, 0x92, + ], + [ + 0x0, 0xf4, 0xf5, 0x1, 0xf7, 0x3, 0x2, 0xf6, 0xf3, 0x7, 0x6, 0xf2, 0x4, 0xf0, 0xf1, 0x5, 0xfb, + 0xf, 0xe, 0xfa, 0xc, 0xf8, 0xf9, 0xd, 0x8, 0xfc, 0xfd, 0x9, 0xff, 0xb, 0xa, 0xfe, 0xeb, 0x1f, + 0x1e, 0xea, 0x1c, 0xe8, 0xe9, 0x1d, 0x18, 0xec, 0xed, 0x19, 0xef, 0x1b, 0x1a, 0xee, 0x10, 0xe4, + 0xe5, 0x11, 0xe7, 0x13, 0x12, 0xe6, 0xe3, 0x17, 0x16, 0xe2, 0x14, 0xe0, 0xe1, 0x15, 0xcb, 0x3f, + 0x3e, 0xca, 0x3c, 0xc8, 0xc9, 0x3d, 0x38, 0xcc, 0xcd, 0x39, 0xcf, 0x3b, 0x3a, 0xce, 0x30, 0xc4, + 0xc5, 0x31, 0xc7, 0x33, 0x32, 0xc6, 0xc3, 0x37, 0x36, 0xc2, 0x34, 0xc0, 0xc1, 0x35, 0x20, 0xd4, + 0xd5, 0x21, 0xd7, 0x23, 0x22, 0xd6, 0xd3, 0x27, 0x26, 0xd2, 0x24, 0xd0, 0xd1, 0x25, 0xdb, 0x2f, + 0x2e, 0xda, 0x2c, 0xd8, 0xd9, 0x2d, 0x28, 0xdc, 0xdd, 0x29, 0xdf, 0x2b, 0x2a, 0xde, 0x8b, 0x7f, + 0x7e, 0x8a, 0x7c, 0x88, 0x89, 0x7d, 0x78, 0x8c, 0x8d, 0x79, 0x8f, 0x7b, 0x7a, 0x8e, 0x70, 0x84, + 0x85, 0x71, 0x87, 0x73, 0x72, 0x86, 0x83, 0x77, 0x76, 0x82, 0x74, 0x80, 0x81, 0x75, 0x60, 0x94, + 0x95, 0x61, 0x97, 0x63, 0x62, 0x96, 0x93, 0x67, 0x66, 0x92, 0x64, 0x90, 0x91, 0x65, 0x9b, 0x6f, + 0x6e, 0x9a, 0x6c, 0x98, 0x99, 0x6d, 0x68, 0x9c, 0x9d, 0x69, 0x9f, 0x6b, 0x6a, 0x9e, 0x40, 0xb4, + 0xb5, 0x41, 0xb7, 0x43, 0x42, 0xb6, 0xb3, 0x47, 0x46, 0xb2, 0x44, 0xb0, 0xb1, 0x45, 0xbb, 0x4f, + 0x4e, 0xba, 0x4c, 0xb8, 0xb9, 0x4d, 0x48, 0xbc, 0xbd, 0x49, 0xbf, 0x4b, 0x4a, 0xbe, 0xab, 0x5f, + 0x5e, 0xaa, 0x5c, 0xa8, 0xa9, 0x5d, 0x58, 0xac, 0xad, 0x59, 0xaf, 0x5b, 0x5a, 0xae, 0x50, 0xa4, + 0xa5, 0x51, 0xa7, 0x53, 0x52, 0xa6, 0xa3, 0x57, 0x56, 0xa2, 0x54, 0xa0, 0xa1, 0x55, + ], + [ + 0x0, 0xf5, 0xf7, 0x2, 0xf3, 0x6, 0x4, 0xf1, 0xfb, 0xe, 0xc, 0xf9, 0x8, 0xfd, 0xff, 0xa, 0xeb, + 0x1e, 0x1c, 0xe9, 0x18, 0xed, 0xef, 0x1a, 0x10, 0xe5, 0xe7, 0x12, 0xe3, 0x16, 0x14, 0xe1, 0xcb, + 0x3e, 0x3c, 0xc9, 0x38, 0xcd, 0xcf, 0x3a, 0x30, 0xc5, 0xc7, 0x32, 0xc3, 0x36, 0x34, 0xc1, 0x20, + 0xd5, 0xd7, 0x22, 0xd3, 0x26, 0x24, 0xd1, 0xdb, 0x2e, 0x2c, 0xd9, 0x28, 0xdd, 0xdf, 0x2a, 0x8b, + 0x7e, 0x7c, 0x89, 0x78, 0x8d, 0x8f, 0x7a, 0x70, 0x85, 0x87, 0x72, 0x83, 0x76, 0x74, 0x81, 0x60, + 0x95, 0x97, 0x62, 0x93, 0x66, 0x64, 0x91, 0x9b, 0x6e, 0x6c, 0x99, 0x68, 0x9d, 0x9f, 0x6a, 0x40, + 0xb5, 0xb7, 0x42, 0xb3, 0x46, 0x44, 0xb1, 0xbb, 0x4e, 0x4c, 0xb9, 0x48, 0xbd, 0xbf, 0x4a, 0xab, + 0x5e, 0x5c, 0xa9, 0x58, 0xad, 0xaf, 0x5a, 0x50, 0xa5, 0xa7, 0x52, 0xa3, 0x56, 0x54, 0xa1, 0xb, + 0xfe, 0xfc, 0x9, 0xf8, 0xd, 0xf, 0xfa, 0xf0, 0x5, 0x7, 0xf2, 0x3, 0xf6, 0xf4, 0x1, 0xe0, 0x15, + 0x17, 0xe2, 0x13, 0xe6, 0xe4, 0x11, 0x1b, 0xee, 0xec, 0x19, 0xe8, 0x1d, 0x1f, 0xea, 0xc0, 0x35, + 0x37, 0xc2, 0x33, 0xc6, 0xc4, 0x31, 0x3b, 0xce, 0xcc, 0x39, 0xc8, 0x3d, 0x3f, 0xca, 0x2b, 0xde, + 0xdc, 0x29, 0xd8, 0x2d, 0x2f, 0xda, 0xd0, 0x25, 0x27, 0xd2, 0x23, 0xd6, 0xd4, 0x21, 0x80, 0x75, + 0x77, 0x82, 0x73, 0x86, 0x84, 0x71, 0x7b, 0x8e, 0x8c, 0x79, 0x88, 0x7d, 0x7f, 0x8a, 0x6b, 0x9e, + 0x9c, 0x69, 0x98, 0x6d, 0x6f, 0x9a, 0x90, 0x65, 0x67, 0x92, 0x63, 0x96, 0x94, 0x61, 0x4b, 0xbe, + 0xbc, 0x49, 0xb8, 0x4d, 0x4f, 0xba, 0xb0, 0x45, 0x47, 0xb2, 0x43, 0xb6, 0xb4, 0x41, 0xa0, 0x55, + 0x57, 0xa2, 0x53, 0xa6, 0xa4, 0x51, 0x5b, 0xae, 0xac, 0x59, 0xa8, 0x5d, 0x5f, 0xaa, + ], + [ + 0x0, 0xf6, 0xf1, 0x7, 0xff, 0x9, 0xe, 0xf8, 0xe3, 0x15, 0x12, 0xe4, 0x1c, 0xea, 0xed, 0x1b, + 0xdb, 0x2d, 0x2a, 0xdc, 0x24, 0xd2, 0xd5, 0x23, 0x38, 0xce, 0xc9, 0x3f, 0xc7, 0x31, 0x36, 0xc0, + 0xab, 0x5d, 0x5a, 0xac, 0x54, 0xa2, 0xa5, 0x53, 0x48, 0xbe, 0xb9, 0x4f, 0xb7, 0x41, 0x46, 0xb0, + 0x70, 0x86, 0x81, 0x77, 0x8f, 0x79, 0x7e, 0x88, 0x93, 0x65, 0x62, 0x94, 0x6c, 0x9a, 0x9d, 0x6b, + 0x4b, 0xbd, 0xba, 0x4c, 0xb4, 0x42, 0x45, 0xb3, 0xa8, 0x5e, 0x59, 0xaf, 0x57, 0xa1, 0xa6, 0x50, + 0x90, 0x66, 0x61, 0x97, 0x6f, 0x99, 0x9e, 0x68, 0x73, 0x85, 0x82, 0x74, 0x8c, 0x7a, 0x7d, 0x8b, + 0xe0, 0x16, 0x11, 0xe7, 0x1f, 0xe9, 0xee, 0x18, 0x3, 0xf5, 0xf2, 0x4, 0xfc, 0xa, 0xd, 0xfb, + 0x3b, 0xcd, 0xca, 0x3c, 0xc4, 0x32, 0x35, 0xc3, 0xd8, 0x2e, 0x29, 0xdf, 0x27, 0xd1, 0xd6, 0x20, + 0x96, 0x60, 0x67, 0x91, 0x69, 0x9f, 0x98, 0x6e, 0x75, 0x83, 0x84, 0x72, 0x8a, 0x7c, 0x7b, 0x8d, + 0x4d, 0xbb, 0xbc, 0x4a, 0xb2, 0x44, 0x43, 0xb5, 0xae, 0x58, 0x5f, 0xa9, 0x51, 0xa7, 0xa0, 0x56, + 0x3d, 0xcb, 0xcc, 0x3a, 0xc2, 0x34, 0x33, 0xc5, 0xde, 0x28, 0x2f, 0xd9, 0x21, 0xd7, 0xd0, 0x26, + 0xe6, 0x10, 0x17, 0xe1, 0x19, 0xef, 0xe8, 0x1e, 0x5, 0xf3, 0xf4, 0x2, 0xfa, 0xc, 0xb, 0xfd, + 0xdd, 0x2b, 0x2c, 0xda, 0x22, 0xd4, 0xd3, 0x25, 0x3e, 0xc8, 0xcf, 0x39, 0xc1, 0x37, 0x30, 0xc6, + 0x6, 0xf0, 0xf7, 0x1, 0xf9, 0xf, 0x8, 0xfe, 0xe5, 0x13, 0x14, 0xe2, 0x1a, 0xec, 0xeb, 0x1d, + 0x76, 0x80, 0x87, 0x71, 0x89, 0x7f, 0x78, 0x8e, 0x95, 0x63, 0x64, 0x92, 0x6a, 0x9c, 0x9b, 0x6d, + 0xad, 0x5b, 0x5c, 0xaa, 0x52, 0xa4, 0xa3, 0x55, 0x4e, 0xb8, 0xbf, 0x49, 0xb1, 0x47, 0x40, 0xb6, + ], + [ + 0x0, 0xf7, 0xf3, 0x4, 0xfb, 0xc, 0x8, 0xff, 0xeb, 0x1c, 0x18, 0xef, 0x10, 0xe7, 0xe3, 0x14, + 0xcb, 0x3c, 0x38, 0xcf, 0x30, 0xc7, 0xc3, 0x34, 0x20, 0xd7, 0xd3, 0x24, 0xdb, 0x2c, 0x28, 0xdf, + 0x8b, 0x7c, 0x78, 0x8f, 0x70, 0x87, 0x83, 0x74, 0x60, 0x97, 0x93, 0x64, 0x9b, 0x6c, 0x68, 0x9f, + 0x40, 0xb7, 0xb3, 0x44, 0xbb, 0x4c, 0x48, 0xbf, 0xab, 0x5c, 0x58, 0xaf, 0x50, 0xa7, 0xa3, 0x54, + 0xb, 0xfc, 0xf8, 0xf, 0xf0, 0x7, 0x3, 0xf4, 0xe0, 0x17, 0x13, 0xe4, 0x1b, 0xec, 0xe8, 0x1f, + 0xc0, 0x37, 0x33, 0xc4, 0x3b, 0xcc, 0xc8, 0x3f, 0x2b, 0xdc, 0xd8, 0x2f, 0xd0, 0x27, 0x23, 0xd4, + 0x80, 0x77, 0x73, 0x84, 0x7b, 0x8c, 0x88, 0x7f, 0x6b, 0x9c, 0x98, 0x6f, 0x90, 0x67, 0x63, 0x94, + 0x4b, 0xbc, 0xb8, 0x4f, 0xb0, 0x47, 0x43, 0xb4, 0xa0, 0x57, 0x53, 0xa4, 0x5b, 0xac, 0xa8, 0x5f, + 0x16, 0xe1, 0xe5, 0x12, 0xed, 0x1a, 0x1e, 0xe9, 0xfd, 0xa, 0xe, 0xf9, 0x6, 0xf1, 0xf5, 0x2, + 0xdd, 0x2a, 0x2e, 0xd9, 0x26, 0xd1, 0xd5, 0x22, 0x36, 0xc1, 0xc5, 0x32, 0xcd, 0x3a, 0x3e, 0xc9, + 0x9d, 0x6a, 0x6e, 0x99, 0x66, 0x91, 0x95, 0x62, 0x76, 0x81, 0x85, 0x72, 0x8d, 0x7a, 0x7e, 0x89, + 0x56, 0xa1, 0xa5, 0x52, 0xad, 0x5a, 0x5e, 0xa9, 0xbd, 0x4a, 0x4e, 0xb9, 0x46, 0xb1, 0xb5, 0x42, + 0x1d, 0xea, 0xee, 0x19, 0xe6, 0x11, 0x15, 0xe2, 0xf6, 0x1, 0x5, 0xf2, 0xd, 0xfa, 0xfe, 0x9, + 0xd6, 0x21, 0x25, 0xd2, 0x2d, 0xda, 0xde, 0x29, 0x3d, 0xca, 0xce, 0x39, 0xc6, 0x31, 0x35, 0xc2, + 0x96, 0x61, 0x65, 0x92, 0x6d, 0x9a, 0x9e, 0x69, 0x7d, 0x8a, 0x8e, 0x79, 0x86, 0x71, 0x75, 0x82, + 0x5d, 0xaa, 0xae, 0x59, 0xa6, 0x51, 0x55, 0xa2, 0xb6, 0x41, 0x45, 0xb2, 0x4d, 0xba, 0xbe, 0x49, + ], + [ + 0x0, 0xf8, 0xed, 0x15, 0xc7, 0x3f, 0x2a, 0xd2, 0x93, 0x6b, 0x7e, 0x86, 0x54, 0xac, 0xb9, 0x41, + 0x3b, 0xc3, 0xd6, 0x2e, 0xfc, 0x4, 0x11, 0xe9, 0xa8, 0x50, 0x45, 0xbd, 0x6f, 0x97, 0x82, 0x7a, + 0x76, 0x8e, 0x9b, 0x63, 0xb1, 0x49, 0x5c, 0xa4, 0xe5, 0x1d, 0x8, 0xf0, 0x22, 0xda, 0xcf, 0x37, + 0x4d, 0xb5, 0xa0, 0x58, 0x8a, 0x72, 0x67, 0x9f, 0xde, 0x26, 0x33, 0xcb, 0x19, 0xe1, 0xf4, 0xc, + 0xec, 0x14, 0x1, 0xf9, 0x2b, 0xd3, 0xc6, 0x3e, 0x7f, 0x87, 0x92, 0x6a, 0xb8, 0x40, 0x55, 0xad, + 0xd7, 0x2f, 0x3a, 0xc2, 0x10, 0xe8, 0xfd, 0x5, 0x44, 0xbc, 0xa9, 0x51, 0x83, 0x7b, 0x6e, 0x96, + 0x9a, 0x62, 0x77, 0x8f, 0x5d, 0xa5, 0xb0, 0x48, 0x9, 0xf1, 0xe4, 0x1c, 0xce, 0x36, 0x23, 0xdb, + 0xa1, 0x59, 0x4c, 0xb4, 0x66, 0x9e, 0x8b, 0x73, 0x32, 0xca, 0xdf, 0x27, 0xf5, 0xd, 0x18, 0xe0, + 0xc5, 0x3d, 0x28, 0xd0, 0x2, 0xfa, 0xef, 0x17, 0x56, 0xae, 0xbb, 0x43, 0x91, 0x69, 0x7c, 0x84, + 0xfe, 0x6, 0x13, 0xeb, 0x39, 0xc1, 0xd4, 0x2c, 0x6d, 0x95, 0x80, 0x78, 0xaa, 0x52, 0x47, 0xbf, + 0xb3, 0x4b, 0x5e, 0xa6, 0x74, 0x8c, 0x99, 0x61, 0x20, 0xd8, 0xcd, 0x35, 0xe7, 0x1f, 0xa, 0xf2, + 0x88, 0x70, 0x65, 0x9d, 0x4f, 0xb7, 0xa2, 0x5a, 0x1b, 0xe3, 0xf6, 0xe, 0xdc, 0x24, 0x31, 0xc9, + 0x29, 0xd1, 0xc4, 0x3c, 0xee, 0x16, 0x3, 0xfb, 0xba, 0x42, 0x57, 0xaf, 0x7d, 0x85, 0x90, 0x68, + 0x12, 0xea, 0xff, 0x7, 0xd5, 0x2d, 0x38, 0xc0, 0x81, 0x79, 0x6c, 0x94, 0x46, 0xbe, 0xab, 0x53, + 0x5f, 0xa7, 0xb2, 0x4a, 0x98, 0x60, 0x75, 0x8d, 0xcc, 0x34, 0x21, 0xd9, 0xb, 0xf3, 0xe6, 0x1e, + 0x64, 0x9c, 0x89, 0x71, 0xa3, 0x5b, 0x4e, 0xb6, 0xf7, 0xf, 0x1a, 0xe2, 0x30, 0xc8, 0xdd, 0x25, + ], + [ + 0x0, 0xf9, 0xef, 0x16, 0xc3, 0x3a, 0x2c, 0xd5, 0x9b, 0x62, 0x74, 0x8d, 0x58, 0xa1, 0xb7, 0x4e, + 0x2b, 0xd2, 0xc4, 0x3d, 0xe8, 0x11, 0x7, 0xfe, 0xb0, 0x49, 0x5f, 0xa6, 0x73, 0x8a, 0x9c, 0x65, + 0x56, 0xaf, 0xb9, 0x40, 0x95, 0x6c, 0x7a, 0x83, 0xcd, 0x34, 0x22, 0xdb, 0xe, 0xf7, 0xe1, 0x18, + 0x7d, 0x84, 0x92, 0x6b, 0xbe, 0x47, 0x51, 0xa8, 0xe6, 0x1f, 0x9, 0xf0, 0x25, 0xdc, 0xca, 0x33, + 0xac, 0x55, 0x43, 0xba, 0x6f, 0x96, 0x80, 0x79, 0x37, 0xce, 0xd8, 0x21, 0xf4, 0xd, 0x1b, 0xe2, + 0x87, 0x7e, 0x68, 0x91, 0x44, 0xbd, 0xab, 0x52, 0x1c, 0xe5, 0xf3, 0xa, 0xdf, 0x26, 0x30, 0xc9, + 0xfa, 0x3, 0x15, 0xec, 0x39, 0xc0, 0xd6, 0x2f, 0x61, 0x98, 0x8e, 0x77, 0xa2, 0x5b, 0x4d, 0xb4, + 0xd1, 0x28, 0x3e, 0xc7, 0x12, 0xeb, 0xfd, 0x4, 0x4a, 0xb3, 0xa5, 0x5c, 0x89, 0x70, 0x66, 0x9f, + 0x45, 0xbc, 0xaa, 0x53, 0x86, 0x7f, 0x69, 0x90, 0xde, 0x27, 0x31, 0xc8, 0x1d, 0xe4, 0xf2, 0xb, + 0x6e, 0x97, 0x81, 0x78, 0xad, 0x54, 0x42, 0xbb, 0xf5, 0xc, 0x1a, 0xe3, 0x36, 0xcf, 0xd9, 0x20, + 0x13, 0xea, 0xfc, 0x5, 0xd0, 0x29, 0x3f, 0xc6, 0x88, 0x71, 0x67, 0x9e, 0x4b, 0xb2, 0xa4, 0x5d, + 0x38, 0xc1, 0xd7, 0x2e, 0xfb, 0x2, 0x14, 0xed, 0xa3, 0x5a, 0x4c, 0xb5, 0x60, 0x99, 0x8f, 0x76, + 0xe9, 0x10, 0x6, 0xff, 0x2a, 0xd3, 0xc5, 0x3c, 0x72, 0x8b, 0x9d, 0x64, 0xb1, 0x48, 0x5e, 0xa7, + 0xc2, 0x3b, 0x2d, 0xd4, 0x1, 0xf8, 0xee, 0x17, 0x59, 0xa0, 0xb6, 0x4f, 0x9a, 0x63, 0x75, 0x8c, + 0xbf, 0x46, 0x50, 0xa9, 0x7c, 0x85, 0x93, 0x6a, 0x24, 0xdd, 0xcb, 0x32, 0xe7, 0x1e, 0x8, 0xf1, + 0x94, 0x6d, 0x7b, 0x82, 0x57, 0xae, 0xb8, 0x41, 0xf, 0xf6, 0xe0, 0x19, 0xcc, 0x35, 0x23, 0xda, + ], + [ + 0x0, 0xfa, 0xe9, 0x13, 0xcf, 0x35, 0x26, 0xdc, 0x83, 0x79, 0x6a, 0x90, 0x4c, 0xb6, 0xa5, 0x5f, + 0x1b, 0xe1, 0xf2, 0x8, 0xd4, 0x2e, 0x3d, 0xc7, 0x98, 0x62, 0x71, 0x8b, 0x57, 0xad, 0xbe, 0x44, + 0x36, 0xcc, 0xdf, 0x25, 0xf9, 0x3, 0x10, 0xea, 0xb5, 0x4f, 0x5c, 0xa6, 0x7a, 0x80, 0x93, 0x69, + 0x2d, 0xd7, 0xc4, 0x3e, 0xe2, 0x18, 0xb, 0xf1, 0xae, 0x54, 0x47, 0xbd, 0x61, 0x9b, 0x88, 0x72, + 0x6c, 0x96, 0x85, 0x7f, 0xa3, 0x59, 0x4a, 0xb0, 0xef, 0x15, 0x6, 0xfc, 0x20, 0xda, 0xc9, 0x33, + 0x77, 0x8d, 0x9e, 0x64, 0xb8, 0x42, 0x51, 0xab, 0xf4, 0xe, 0x1d, 0xe7, 0x3b, 0xc1, 0xd2, 0x28, + 0x5a, 0xa0, 0xb3, 0x49, 0x95, 0x6f, 0x7c, 0x86, 0xd9, 0x23, 0x30, 0xca, 0x16, 0xec, 0xff, 0x5, + 0x41, 0xbb, 0xa8, 0x52, 0x8e, 0x74, 0x67, 0x9d, 0xc2, 0x38, 0x2b, 0xd1, 0xd, 0xf7, 0xe4, 0x1e, + 0xd8, 0x22, 0x31, 0xcb, 0x17, 0xed, 0xfe, 0x4, 0x5b, 0xa1, 0xb2, 0x48, 0x94, 0x6e, 0x7d, 0x87, + 0xc3, 0x39, 0x2a, 0xd0, 0xc, 0xf6, 0xe5, 0x1f, 0x40, 0xba, 0xa9, 0x53, 0x8f, 0x75, 0x66, 0x9c, + 0xee, 0x14, 0x7, 0xfd, 0x21, 0xdb, 0xc8, 0x32, 0x6d, 0x97, 0x84, 0x7e, 0xa2, 0x58, 0x4b, 0xb1, + 0xf5, 0xf, 0x1c, 0xe6, 0x3a, 0xc0, 0xd3, 0x29, 0x76, 0x8c, 0x9f, 0x65, 0xb9, 0x43, 0x50, 0xaa, + 0xb4, 0x4e, 0x5d, 0xa7, 0x7b, 0x81, 0x92, 0x68, 0x37, 0xcd, 0xde, 0x24, 0xf8, 0x2, 0x11, 0xeb, + 0xaf, 0x55, 0x46, 0xbc, 0x60, 0x9a, 0x89, 0x73, 0x2c, 0xd6, 0xc5, 0x3f, 0xe3, 0x19, 0xa, 0xf0, + 0x82, 0x78, 0x6b, 0x91, 0x4d, 0xb7, 0xa4, 0x5e, 0x1, 0xfb, 0xe8, 0x12, 0xce, 0x34, 0x27, 0xdd, + 0x99, 0x63, 0x70, 0x8a, 0x56, 0xac, 0xbf, 0x45, 0x1a, 0xe0, 0xf3, 0x9, 0xd5, 0x2f, 0x3c, 0xc6, + ], + [ + 0x0, 0xfb, 0xeb, 0x10, 0xcb, 0x30, 0x20, 0xdb, 0x8b, 0x70, 0x60, 0x9b, 0x40, 0xbb, 0xab, 0x50, + 0xb, 0xf0, 0xe0, 0x1b, 0xc0, 0x3b, 0x2b, 0xd0, 0x80, 0x7b, 0x6b, 0x90, 0x4b, 0xb0, 0xa0, 0x5b, + 0x16, 0xed, 0xfd, 0x6, 0xdd, 0x26, 0x36, 0xcd, 0x9d, 0x66, 0x76, 0x8d, 0x56, 0xad, 0xbd, 0x46, + 0x1d, 0xe6, 0xf6, 0xd, 0xd6, 0x2d, 0x3d, 0xc6, 0x96, 0x6d, 0x7d, 0x86, 0x5d, 0xa6, 0xb6, 0x4d, + 0x2c, 0xd7, 0xc7, 0x3c, 0xe7, 0x1c, 0xc, 0xf7, 0xa7, 0x5c, 0x4c, 0xb7, 0x6c, 0x97, 0x87, 0x7c, + 0x27, 0xdc, 0xcc, 0x37, 0xec, 0x17, 0x7, 0xfc, 0xac, 0x57, 0x47, 0xbc, 0x67, 0x9c, 0x8c, 0x77, + 0x3a, 0xc1, 0xd1, 0x2a, 0xf1, 0xa, 0x1a, 0xe1, 0xb1, 0x4a, 0x5a, 0xa1, 0x7a, 0x81, 0x91, 0x6a, + 0x31, 0xca, 0xda, 0x21, 0xfa, 0x1, 0x11, 0xea, 0xba, 0x41, 0x51, 0xaa, 0x71, 0x8a, 0x9a, 0x61, + 0x58, 0xa3, 0xb3, 0x48, 0x93, 0x68, 0x78, 0x83, 0xd3, 0x28, 0x38, 0xc3, 0x18, 0xe3, 0xf3, 0x8, + 0x53, 0xa8, 0xb8, 0x43, 0x98, 0x63, 0x73, 0x88, 0xd8, 0x23, 0x33, 0xc8, 0x13, 0xe8, 0xf8, 0x3, + 0x4e, 0xb5, 0xa5, 0x5e, 0x85, 0x7e, 0x6e, 0x95, 0xc5, 0x3e, 0x2e, 0xd5, 0xe, 0xf5, 0xe5, 0x1e, + 0x45, 0xbe, 0xae, 0x55, 0x8e, 0x75, 0x65, 0x9e, 0xce, 0x35, 0x25, 0xde, 0x5, 0xfe, 0xee, 0x15, + 0x74, 0x8f, 0x9f, 0x64, 0xbf, 0x44, 0x54, 0xaf, 0xff, 0x4, 0x14, 0xef, 0x34, 0xcf, 0xdf, 0x24, + 0x7f, 0x84, 0x94, 0x6f, 0xb4, 0x4f, 0x5f, 0xa4, 0xf4, 0xf, 0x1f, 0xe4, 0x3f, 0xc4, 0xd4, 0x2f, + 0x62, 0x99, 0x89, 0x72, 0xa9, 0x52, 0x42, 0xb9, 0xe9, 0x12, 0x2, 0xf9, 0x22, 0xd9, 0xc9, 0x32, + 0x69, 0x92, 0x82, 0x79, 0xa2, 0x59, 0x49, 0xb2, 0xe2, 0x19, 0x9, 0xf2, 0x29, 0xd2, 0xc2, 0x39, + ], + [ + 0x0, 0xfc, 0xe5, 0x19, 0xd7, 0x2b, 0x32, 0xce, 0xb3, 0x4f, 0x56, 0xaa, 0x64, 0x98, 0x81, 0x7d, + 0x7b, 0x87, 0x9e, 0x62, 0xac, 0x50, 0x49, 0xb5, 0xc8, 0x34, 0x2d, 0xd1, 0x1f, 0xe3, 0xfa, 0x6, + 0xf6, 0xa, 0x13, 0xef, 0x21, 0xdd, 0xc4, 0x38, 0x45, 0xb9, 0xa0, 0x5c, 0x92, 0x6e, 0x77, 0x8b, + 0x8d, 0x71, 0x68, 0x94, 0x5a, 0xa6, 0xbf, 0x43, 0x3e, 0xc2, 0xdb, 0x27, 0xe9, 0x15, 0xc, 0xf0, + 0xf1, 0xd, 0x14, 0xe8, 0x26, 0xda, 0xc3, 0x3f, 0x42, 0xbe, 0xa7, 0x5b, 0x95, 0x69, 0x70, 0x8c, + 0x8a, 0x76, 0x6f, 0x93, 0x5d, 0xa1, 0xb8, 0x44, 0x39, 0xc5, 0xdc, 0x20, 0xee, 0x12, 0xb, 0xf7, + 0x7, 0xfb, 0xe2, 0x1e, 0xd0, 0x2c, 0x35, 0xc9, 0xb4, 0x48, 0x51, 0xad, 0x63, 0x9f, 0x86, 0x7a, + 0x7c, 0x80, 0x99, 0x65, 0xab, 0x57, 0x4e, 0xb2, 0xcf, 0x33, 0x2a, 0xd6, 0x18, 0xe4, 0xfd, 0x1, + 0xff, 0x3, 0x1a, 0xe6, 0x28, 0xd4, 0xcd, 0x31, 0x4c, 0xb0, 0xa9, 0x55, 0x9b, 0x67, 0x7e, 0x82, + 0x84, 0x78, 0x61, 0x9d, 0x53, 0xaf, 0xb6, 0x4a, 0x37, 0xcb, 0xd2, 0x2e, 0xe0, 0x1c, 0x5, 0xf9, + 0x9, 0xf5, 0xec, 0x10, 0xde, 0x22, 0x3b, 0xc7, 0xba, 0x46, 0x5f, 0xa3, 0x6d, 0x91, 0x88, 0x74, + 0x72, 0x8e, 0x97, 0x6b, 0xa5, 0x59, 0x40, 0xbc, 0xc1, 0x3d, 0x24, 0xd8, 0x16, 0xea, 0xf3, 0xf, + 0xe, 0xf2, 0xeb, 0x17, 0xd9, 0x25, 0x3c, 0xc0, 0xbd, 0x41, 0x58, 0xa4, 0x6a, 0x96, 0x8f, 0x73, + 0x75, 0x89, 0x90, 0x6c, 0xa2, 0x5e, 0x47, 0xbb, 0xc6, 0x3a, 0x23, 0xdf, 0x11, 0xed, 0xf4, 0x8, + 0xf8, 0x4, 0x1d, 0xe1, 0x2f, 0xd3, 0xca, 0x36, 0x4b, 0xb7, 0xae, 0x52, 0x9c, 0x60, 0x79, 0x85, + 0x83, 0x7f, 0x66, 0x9a, 0x54, 0xa8, 0xb1, 0x4d, 0x30, 0xcc, 0xd5, 0x29, 0xe7, 0x1b, 0x2, 0xfe, + ], + [ + 0x0, 0xfd, 0xe7, 0x1a, 0xd3, 0x2e, 0x34, 0xc9, 0xbb, 0x46, 0x5c, 0xa1, 0x68, 0x95, 0x8f, 0x72, + 0x6b, 0x96, 0x8c, 0x71, 0xb8, 0x45, 0x5f, 0xa2, 0xd0, 0x2d, 0x37, 0xca, 0x3, 0xfe, 0xe4, 0x19, + 0xd6, 0x2b, 0x31, 0xcc, 0x5, 0xf8, 0xe2, 0x1f, 0x6d, 0x90, 0x8a, 0x77, 0xbe, 0x43, 0x59, 0xa4, + 0xbd, 0x40, 0x5a, 0xa7, 0x6e, 0x93, 0x89, 0x74, 0x6, 0xfb, 0xe1, 0x1c, 0xd5, 0x28, 0x32, 0xcf, + 0xb1, 0x4c, 0x56, 0xab, 0x62, 0x9f, 0x85, 0x78, 0xa, 0xf7, 0xed, 0x10, 0xd9, 0x24, 0x3e, 0xc3, + 0xda, 0x27, 0x3d, 0xc0, 0x9, 0xf4, 0xee, 0x13, 0x61, 0x9c, 0x86, 0x7b, 0xb2, 0x4f, 0x55, 0xa8, + 0x67, 0x9a, 0x80, 0x7d, 0xb4, 0x49, 0x53, 0xae, 0xdc, 0x21, 0x3b, 0xc6, 0xf, 0xf2, 0xe8, 0x15, + 0xc, 0xf1, 0xeb, 0x16, 0xdf, 0x22, 0x38, 0xc5, 0xb7, 0x4a, 0x50, 0xad, 0x64, 0x99, 0x83, 0x7e, + 0x7f, 0x82, 0x98, 0x65, 0xac, 0x51, 0x4b, 0xb6, 0xc4, 0x39, 0x23, 0xde, 0x17, 0xea, 0xf0, 0xd, + 0x14, 0xe9, 0xf3, 0xe, 0xc7, 0x3a, 0x20, 0xdd, 0xaf, 0x52, 0x48, 0xb5, 0x7c, 0x81, 0x9b, 0x66, + 0xa9, 0x54, 0x4e, 0xb3, 0x7a, 0x87, 0x9d, 0x60, 0x12, 0xef, 0xf5, 0x8, 0xc1, 0x3c, 0x26, 0xdb, + 0xc2, 0x3f, 0x25, 0xd8, 0x11, 0xec, 0xf6, 0xb, 0x79, 0x84, 0x9e, 0x63, 0xaa, 0x57, 0x4d, 0xb0, + 0xce, 0x33, 0x29, 0xd4, 0x1d, 0xe0, 0xfa, 0x7, 0x75, 0x88, 0x92, 0x6f, 0xa6, 0x5b, 0x41, 0xbc, + 0xa5, 0x58, 0x42, 0xbf, 0x76, 0x8b, 0x91, 0x6c, 0x1e, 0xe3, 0xf9, 0x4, 0xcd, 0x30, 0x2a, 0xd7, + 0x18, 0xe5, 0xff, 0x2, 0xcb, 0x36, 0x2c, 0xd1, 0xa3, 0x5e, 0x44, 0xb9, 0x70, 0x8d, 0x97, 0x6a, + 0x73, 0x8e, 0x94, 0x69, 0xa0, 0x5d, 0x47, 0xba, 0xc8, 0x35, 0x2f, 0xd2, 0x1b, 0xe6, 0xfc, 0x1, + ], + [ + 0x0, 0xfe, 0xe1, 0x1f, 0xdf, 0x21, 0x3e, 0xc0, 0xa3, 0x5d, 0x42, 0xbc, 0x7c, 0x82, 0x9d, 0x63, + 0x5b, 0xa5, 0xba, 0x44, 0x84, 0x7a, 0x65, 0x9b, 0xf8, 0x6, 0x19, 0xe7, 0x27, 0xd9, 0xc6, 0x38, + 0xb6, 0x48, 0x57, 0xa9, 0x69, 0x97, 0x88, 0x76, 0x15, 0xeb, 0xf4, 0xa, 0xca, 0x34, 0x2b, 0xd5, + 0xed, 0x13, 0xc, 0xf2, 0x32, 0xcc, 0xd3, 0x2d, 0x4e, 0xb0, 0xaf, 0x51, 0x91, 0x6f, 0x70, 0x8e, + 0x71, 0x8f, 0x90, 0x6e, 0xae, 0x50, 0x4f, 0xb1, 0xd2, 0x2c, 0x33, 0xcd, 0xd, 0xf3, 0xec, 0x12, + 0x2a, 0xd4, 0xcb, 0x35, 0xf5, 0xb, 0x14, 0xea, 0x89, 0x77, 0x68, 0x96, 0x56, 0xa8, 0xb7, 0x49, + 0xc7, 0x39, 0x26, 0xd8, 0x18, 0xe6, 0xf9, 0x7, 0x64, 0x9a, 0x85, 0x7b, 0xbb, 0x45, 0x5a, 0xa4, + 0x9c, 0x62, 0x7d, 0x83, 0x43, 0xbd, 0xa2, 0x5c, 0x3f, 0xc1, 0xde, 0x20, 0xe0, 0x1e, 0x1, 0xff, + 0xe2, 0x1c, 0x3, 0xfd, 0x3d, 0xc3, 0xdc, 0x22, 0x41, 0xbf, 0xa0, 0x5e, 0x9e, 0x60, 0x7f, 0x81, + 0xb9, 0x47, 0x58, 0xa6, 0x66, 0x98, 0x87, 0x79, 0x1a, 0xe4, 0xfb, 0x5, 0xc5, 0x3b, 0x24, 0xda, + 0x54, 0xaa, 0xb5, 0x4b, 0x8b, 0x75, 0x6a, 0x94, 0xf7, 0x9, 0x16, 0xe8, 0x28, 0xd6, 0xc9, 0x37, + 0xf, 0xf1, 0xee, 0x10, 0xd0, 0x2e, 0x31, 0xcf, 0xac, 0x52, 0x4d, 0xb3, 0x73, 0x8d, 0x92, 0x6c, + 0x93, 0x6d, 0x72, 0x8c, 0x4c, 0xb2, 0xad, 0x53, 0x30, 0xce, 0xd1, 0x2f, 0xef, 0x11, 0xe, 0xf0, + 0xc8, 0x36, 0x29, 0xd7, 0x17, 0xe9, 0xf6, 0x8, 0x6b, 0x95, 0x8a, 0x74, 0xb4, 0x4a, 0x55, 0xab, + 0x25, 0xdb, 0xc4, 0x3a, 0xfa, 0x4, 0x1b, 0xe5, 0x86, 0x78, 0x67, 0x99, 0x59, 0xa7, 0xb8, 0x46, + 0x7e, 0x80, 0x9f, 0x61, 0xa1, 0x5f, 0x40, 0xbe, 0xdd, 0x23, 0x3c, 0xc2, 0x2, 0xfc, 0xe3, 0x1d, + ], + [ + 0x0, 0xff, 0xe3, 0x1c, 0xdb, 0x24, 0x38, 0xc7, 0xab, 0x54, 0x48, 0xb7, 0x70, 0x8f, 0x93, 0x6c, + 0x4b, 0xb4, 0xa8, 0x57, 0x90, 0x6f, 0x73, 0x8c, 0xe0, 0x1f, 0x3, 0xfc, 0x3b, 0xc4, 0xd8, 0x27, + 0x96, 0x69, 0x75, 0x8a, 0x4d, 0xb2, 0xae, 0x51, 0x3d, 0xc2, 0xde, 0x21, 0xe6, 0x19, 0x5, 0xfa, + 0xdd, 0x22, 0x3e, 0xc1, 0x6, 0xf9, 0xe5, 0x1a, 0x76, 0x89, 0x95, 0x6a, 0xad, 0x52, 0x4e, 0xb1, + 0x31, 0xce, 0xd2, 0x2d, 0xea, 0x15, 0x9, 0xf6, 0x9a, 0x65, 0x79, 0x86, 0x41, 0xbe, 0xa2, 0x5d, + 0x7a, 0x85, 0x99, 0x66, 0xa1, 0x5e, 0x42, 0xbd, 0xd1, 0x2e, 0x32, 0xcd, 0xa, 0xf5, 0xe9, 0x16, + 0xa7, 0x58, 0x44, 0xbb, 0x7c, 0x83, 0x9f, 0x60, 0xc, 0xf3, 0xef, 0x10, 0xd7, 0x28, 0x34, 0xcb, + 0xec, 0x13, 0xf, 0xf0, 0x37, 0xc8, 0xd4, 0x2b, 0x47, 0xb8, 0xa4, 0x5b, 0x9c, 0x63, 0x7f, 0x80, + 0x62, 0x9d, 0x81, 0x7e, 0xb9, 0x46, 0x5a, 0xa5, 0xc9, 0x36, 0x2a, 0xd5, 0x12, 0xed, 0xf1, 0xe, + 0x29, 0xd6, 0xca, 0x35, 0xf2, 0xd, 0x11, 0xee, 0x82, 0x7d, 0x61, 0x9e, 0x59, 0xa6, 0xba, 0x45, + 0xf4, 0xb, 0x17, 0xe8, 0x2f, 0xd0, 0xcc, 0x33, 0x5f, 0xa0, 0xbc, 0x43, 0x84, 0x7b, 0x67, 0x98, + 0xbf, 0x40, 0x5c, 0xa3, 0x64, 0x9b, 0x87, 0x78, 0x14, 0xeb, 0xf7, 0x8, 0xcf, 0x30, 0x2c, 0xd3, + 0x53, 0xac, 0xb0, 0x4f, 0x88, 0x77, 0x6b, 0x94, 0xf8, 0x7, 0x1b, 0xe4, 0x23, 0xdc, 0xc0, 0x3f, + 0x18, 0xe7, 0xfb, 0x4, 0xc3, 0x3c, 0x20, 0xdf, 0xb3, 0x4c, 0x50, 0xaf, 0x68, 0x97, 0x8b, 0x74, + 0xc5, 0x3a, 0x26, 0xd9, 0x1e, 0xe1, 0xfd, 0x2, 0x6e, 0x91, 0x8d, 0x72, 0xb5, 0x4a, 0x56, 0xa9, + 0x8e, 0x71, 0x6d, 0x92, 0x55, 0xaa, 0xb6, 0x49, 0x25, 0xda, 0xc6, 0x39, 0xfe, 0x1, 0x1d, 0xe2, + ], +]; + +const logTable = [ + 0, 0, 1, 25, 2, 50, 26, 198, 3, 223, 51, 238, 27, 104, 199, 75, 4, 100, 224, 14, 52, 141, 239, + 129, 28, 193, 105, 248, 200, 8, 76, 113, 5, 138, 101, 47, 225, 36, 15, 33, 53, 147, 142, 218, 240, + 18, 130, 69, 29, 181, 194, 125, 106, 39, 249, 185, 201, 154, 9, 120, 77, 228, 114, 166, 6, 191, + 139, 98, 102, 221, 48, 253, 226, 152, 37, 179, 16, 145, 34, 136, 54, 208, 148, 206, 143, 150, 219, + 189, 241, 210, 19, 92, 131, 56, 70, 64, 30, 66, 182, 163, 195, 72, 126, 110, 107, 58, 40, 84, 250, + 133, 186, 61, 202, 94, 155, 159, 10, 21, 121, 43, 78, 212, 229, 172, 115, 243, 167, 87, 7, 112, + 192, 247, 140, 128, 99, 13, 103, 74, 222, 237, 49, 197, 254, 24, 227, 165, 153, 119, 38, 184, 180, + 124, 17, 68, 146, 217, 35, 32, 137, 46, 55, 63, 209, 91, 149, 188, 207, 205, 144, 135, 151, 178, + 220, 252, 190, 97, 242, 86, 211, 171, 20, 42, 93, 158, 132, 60, 57, 83, 71, 109, 65, 162, 31, 45, + 67, 216, 183, 123, 164, 118, 196, 23, 73, 236, 127, 12, 111, 246, 108, 161, 59, 82, 41, 157, 85, + 170, 251, 96, 134, 177, 187, 204, 62, 90, 203, 89, 95, 176, 156, 169, 160, 81, 11, 245, 22, 235, + 122, 117, 44, 215, 79, 174, 213, 233, 230, 231, 173, 232, 116, 214, 244, 234, 168, 80, 88, 175, +]; diff --git a/packages/reed-solomon/src/index.js b/packages/reed-solomon/src/index.js new file mode 100644 index 00000000..c76e7a7d --- /dev/null +++ b/packages/reed-solomon/src/index.js @@ -0,0 +1,188 @@ +import { sha256 } from 'ethereum-cryptography/sha256.js'; +import { galMulSlice, galMulSliceXor } from './galois'; +import { buildMatrix } from './matrix'; +import { concat, getIntegrityUint8Array, splitPrice, toBase64 } from './utils'; + +export class ReedSolomon { + constructor( + dataShards = 4, + parityShards = 2, + // 16 * 1024 * 1024 , 16m + segmentSize = 16777216, + ) { + this.parityShards = parityShards; + this.dataShards = dataShards; + this.totalShards = dataShards + parityShards; + this.segmentSize = segmentSize; + } + + _allocAligned(shards, each) { + // const eachAligned = (parseInt((each + 63) / 64)) * 64; // Use Math.ceil instead of ((each + 63) / 64) * 64 + + const eachAligned = ((each + 63) >>> 6) << 6; + let total = new ArrayBuffer(eachAligned * shards + 63); + + // Allocate slices + let res = new Array(shards); + for (let i = 0; i < shards; i++) { + res[i] = new Uint8Array(total, i * eachAligned, each); + total = new Uint8Array(total.slice(eachAligned)); + } + return res; + } + + _split(data) { + if (data.length === 0) { + return []; + } + + if (this.totalShards === 1) { + return [data]; + } + + const dataLen = data.length; + + const perShard = parseInt((dataLen + this.dataShards - 1) / this.dataShards); + const needTotal = this.totalShards * perShard; + + // console.log('dataLen', dataLen) + // console.log('needTotal', needTotal) + // console.log('perShard', perShard) + + let tmp = Array.prototype.slice.call(data); + if (this.segmentSize > data.length) { + if (this.segmentSize > needTotal) { + tmp = tmp.slice(0, needTotal); + for (let i = data.length; i < needTotal; i++) { + tmp.push(0); + } + } else { + for (let i = data.length; i < this.segmentSize; i++) { + tmp[i] = 0; + } + } + } + data = Uint8Array.from(tmp); + + let padding = []; + if (data.length < needTotal) { + const fullShards = data.length / perShard; + // padding = new Array(this.totalShards - fullShards).fill(0); + padding = this._allocAligned(this.totalShards - fullShards, perShard); + + if (dataLen > perShard * fullShards) { + const copyFrom = data.slice(perShard * fullShards, dataLen); + for (let i = 0; i < padding.length; i++) { + if (copyFrom.length > 0) { + padding[i] = copyFrom.slice(0, perShard); + copyFrom = copyFrom.slice(perShard); + } + } + } + } + + // split data to same length price + const dst = new Array(this.totalShards); + let i = 0; + for (; i < dst.length && data.length >= perShard; i++) { + dst[i] = data.slice(0, perShard); + data = data.slice(perShard); + } + + for (let j = 0; i + j < dst.length; j++) { + dst[i + j] = padding[j]; + padding[j] = padding[j + 1]; + } + + return dst; + } + + _codeSomeShards(matrixRows, inputs, outputs) { + let start = 0; + let end = inputs[0].length; + + while (start < inputs[0].length) { + for (let c = 0; c < inputs.length; c++) { + const ins = inputs[c].slice(start, end); + for (let iRow = 0; iRow < outputs.length; iRow++) { + if (c === 0) { + outputs[iRow] = galMulSlice(matrixRows[iRow][c], ins, outputs[iRow].slice(start, end)); + } else { + outputs[iRow] = galMulSliceXor( + matrixRows[iRow][c], + ins, + outputs[iRow].slice(start, end), + ); + } + } + } + + start = end; + // end += r.o.perRound; + end += 1398144; + if (end > inputs[0].length) { + end = inputs[0].length; + } + } + return concat(inputs, outputs); + } + + encodeSegment(data) { + if (data.length == 0) throw new Error('data buffer length is 0'); + + const shared = this._split(data); + + const output = shared.slice(this.dataShards); + + // r.m + const matrix = buildMatrix(this.totalShards, this.dataShards); + + let parity = []; + for (let i = 0; i < this.parityShards; i++) { + parity.push(matrix[this.dataShards + i]); + } + + return this._codeSomeShards( + parity, + shared.slice(0, this.dataShards), + output.slice(0, this.parityShards), + shared[0].length, + ); + } + + encode(sourceData) { + if (sourceData.length == 0) { + throw new Error('file buffer is empty'); + } + + const chunkList = splitPrice(sourceData, this.segmentSize); + + let encodeDataHashList = new Array(this.totalShards); + for (let i = 0; i < encodeDataHashList.length; i++) { + encodeDataHashList[i] = []; + } + let hashList = []; + let segChecksumList = []; + + for (let i = 0; i < chunkList.length; i++) { + const data = chunkList[i]; + // console.log('data i', i) + const encodeShards = this.encodeSegment(data); + // console.log('data done', i) + segChecksumList.push(sha256(data)); + + for (let i = 0; i < encodeShards.length; i++) { + const priceHash = sha256(encodeShards[i]); + encodeDataHashList[i].push(priceHash); + } + } + + hashList[0] = sha256(getIntegrityUint8Array(segChecksumList)); + + for (let i = 0; i < encodeDataHashList.length; i++) { + hashList[i + 1] = sha256(getIntegrityUint8Array(encodeDataHashList[i])); + } + + return toBase64(hashList); + } +} diff --git a/packages/reed-solomon/src/matrix.js b/packages/reed-solomon/src/matrix.js new file mode 100644 index 00000000..b80cbc2d --- /dev/null +++ b/packages/reed-solomon/src/matrix.js @@ -0,0 +1,182 @@ +import { galExp, galDivide, galMultiply } from './galois'; + +function newMatrix(rows, cols) { + if (rows <= 0) { + return null; + } + if (cols <= 0) { + return null; + } + + const m = []; + for (let i = 0; i < rows; i++) { + m[i] = []; + for (let j = 0; j < cols; j++) { + m[i][j] = 0; + } + } + return m; +} + +function vandermonde(rows, cols) { + const result = newMatrix(rows, cols); + + for (let r = 0; r < result.length; r++) { + for (let c = 0; c < result[r].length; c++) { + // console.log('r', r) + // console.log('c', c) + result[r][c] = galExp(r, c); + } + } + + return result; +} + +function SubMatrix(m, rmin, cmin, rmax, cmax) { + const result = newMatrix(rmax - rmin, cmax - cmin); + + for (let r = rmin; r < rmax; r++) { + for (let c = cmin; c < cmax; c++) { + result[r - rmin][c - cmin] = m[r][c]; + } + } + + return result; +} + +function identityMatrix(size) { + const result = newMatrix(size, size); + + for (let i = 0; i < result.length; i++) { + result[i][i] = 1; + } + + return result; +} + +// Multiply multiplies this matrix (the one on the left) by another +// matrix (the one on the right) and returns a new matrix with the result. +function Multiply(m, right) { + if (m[0].length !== right.length) { + return null; + throw new Error( + `columns on left (${m[0].length}) is different than rows on right (${right.length})`, + ); + } + let result = []; + for (let r = 0; r < m.length; r++) { + result[r] = []; + for (let c = 0; c < right[0].length; c++) { + let value = 0; + for (let i = 0; i < m[0].length; i++) { + value ^= galMultiply(m[r][i], right[i][c]); + } + result[r][c] = value; + } + } + return result; +} + +function Augment(m, right) { + if (m.length !== right.length) throw new Error('matrix sizes do not match'); + + const result = newMatrix(m.length, m[0].length + right[0].length); + + for (let r = 0; r < m.length; r++) { + for (let c = 0; c < m[r].length; c++) { + result[r][c] = m[r][c]; + } + + let cols = m[0].length; + for (let c = 0; c < right[0].length; c++) { + result[r][cols + c] = right[r][c]; + } + } + + return result; +} + +function Invert(m) { + const size = m.length; + let work = identityMatrix(size); + work = Augment(m, work); + work = gaussianElimination(work); + + return SubMatrix(work, 0, size, size, size * 2); +} + +function SwapRows(m, r1, r2) { + if (r1 < 0 || m.length <= r1 || r2 < 0 || m.length <= r2) { + return new Error('Invalid row size'); + } + [m[r2], m[r1]] = [m[r1], m[r2]]; + return m; +} + +function gaussianElimination(m) { + const rows = m.length; + const columns = m[0].length; + + // Clear out the part below the main diagonal and scale the main + // diagonal to be 1. + for (let r = 0; r < rows; r++) { + // If the element on the diagonal is 0, find a row below + // that has a non-zero and swap them. + if (m[r][r] === 0) { + for (let rowBelow = r + 1; rowBelow < rows; rowBelow++) { + if (m[rowBelow][r] !== 0) { + let err = SwapRows(r, rowBelow); + if (err !== null) { + return err; + } + break; + } + } + } + // If we couldn't find one, the matrix is singular. + // if (m[r][r] === 0) { + // return errSingular; + // } + // Scale to 1. + if (m[r][r] !== 1) { + let scale = galDivide(1, m[r][r]); + for (let c = 0; c < columns; c++) { + m[r][c] = galMultiply(m[r][c], scale); + } + } + // Make everything below the 1 be a 0 by subtracting + // a multiple of it. (Subtraction and addition are + // both exclusive or in the Galois field.) + for (let rowBelow = r + 1; rowBelow < rows; rowBelow++) { + if (m[rowBelow][r] !== 0) { + let scale = m[rowBelow][r]; + for (let c = 0; c < columns; c++) { + m[rowBelow][c] ^= galMultiply(scale, m[r][c]); + } + } + } + } + + // Now clear the part above the main diagonal. + for (let d = 0; d < rows; d++) { + for (let rowAbove = 0; rowAbove < d; rowAbove++) { + if (m[rowAbove][d] !== 0) { + let scale = m[rowAbove][d]; + for (let c = 0; c < columns; c++) { + m[rowAbove][c] ^= galMultiply(scale, m[d][c]); + } + } + } + } + + return m; +} + +function buildMatrix(totalShards, dataShards) { + const vm = vandermonde(totalShards, dataShards); + const top = SubMatrix(vm, 0, 0, dataShards, dataShards); + const topInv = Invert(top); + return Multiply(vm, topInv); +} + +export { buildMatrix }; diff --git a/packages/reed-solomon/src/node.adapter.js b/packages/reed-solomon/src/node.adapter.js new file mode 100644 index 00000000..76a3d887 --- /dev/null +++ b/packages/reed-solomon/src/node.adapter.js @@ -0,0 +1,88 @@ +import { sha256 } from 'ethereum-cryptography/sha256.js'; +import { isMainThread, parentPort, Worker, workerData } from 'node:worker_threads'; +import { ReedSolomon } from './index'; +import { getIntegrityUint8Array, toBase64, splitPrice } from './utils'; + +export class NodeAdapterReedSolomon extends ReedSolomon { + async encodeInWorker(p, sourceData) { + return new Promise((resolve, reject) => { + if (isMainThread) { + const chunkList = splitPrice(sourceData, this.segmentSize); + + let hashList = []; + let segChecksumList = []; + let encodeDataHashList = new Array(6); + + for (let i = 0; i < encodeDataHashList.length; i++) { + encodeDataHashList[i] = []; + } + + const threads = new Set(); + let RES = []; + + for (let i = 0; i < chunkList.length; i++) { + const worker = new Worker(p, { + workerData: { + index: i, + chunk: chunkList[i], + }, + }); + threads.add(worker); + } + + for (let w of threads) { + w.on('error', (err) => { + throw err; + }); + w.on('exit', () => { + threads.delete(w); + // console.log(`Thread exiting, ${threads.size} running...`) + if (threads.size === 0) { + for (let i = 0; i < RES.length; i++) { + segChecksumList.push(RES[i].segChecksum); + } + + for (let i = 0; i < chunkList.length; i++) { + for (let j = 0; j < encodeDataHashList.length; j++) { + encodeDataHashList[j][i] = RES[i].encodeDataHash[j]; + } + } + + hashList[0] = sha256(getIntegrityUint8Array(segChecksumList)); + + for (let i = 0; i < encodeDataHashList.length; i++) { + hashList[i + 1] = sha256(getIntegrityUint8Array(encodeDataHashList[i])); + } + + const res = toBase64(hashList); + resolve(res); + } + }); + + w.on('message', (message) => { + // console.log('message', message.encodeData.index) + RES[message.index] = message; + }); + } + } else { + const encodeShards = this.encodeSegment(workerData.chunk); + let encodeDataHash = []; + + for (let i = 0; i < encodeShards.length; i++) { + const priceHash = sha256(encodeShards[i]); + encodeDataHash.push(priceHash); + } + + // console.log('encodeShards', encodeShards.length) + // console.log('encodeDataHash', encodeDataHash.length) + // console.log('workerData.index', workerData.index) + + parentPort.postMessage({ + index: workerData.index, + segChecksum: sha256(workerData.chunk), + encodeDataHash: encodeDataHash, + }); + } + }); + } +} diff --git a/packages/reed-solomon/src/utils.js b/packages/reed-solomon/src/utils.js new file mode 100644 index 00000000..55f81d2b --- /dev/null +++ b/packages/reed-solomon/src/utils.js @@ -0,0 +1,43 @@ +import { encode } from '@ethersproject/base64'; + +export function concat(a, b) { + let res = []; + a.forEach((i) => { + res.push(i); + }); + b.forEach((i) => { + res.push(i); + }); + return res; +} + +export function getIntegrityUint8Array(uint8arr) { + const arr = uint8arr.reduce((a, b) => { + return concat(a, b); + }); + + return Uint8Array.from(arr); +} + +export function toBase64(hashList) { + const res = []; + for (let i = 0; i < hashList.length; i++) { + res.push(encode(hashList[i])); + } + return res; +} + +/** + * split data to same length price + */ +export function splitPrice(data, size) { + let chunkList = []; + let cur = 0; + + while (cur < data.length) { + chunkList.push(data.slice(cur, cur + size)); + cur += size; + } + + return chunkList; +} diff --git a/packages/reed-solomon/types/index.d.ts b/packages/reed-solomon/types/index.d.ts new file mode 100644 index 00000000..1a0251a5 --- /dev/null +++ b/packages/reed-solomon/types/index.d.ts @@ -0,0 +1,13 @@ +declare module '@bnb-chain/reed-solomon' { + export class ReedSolomon { + constructor(dataShards = 4, parityShards = 2, segmentSize = 16777216); + + encodeSegment(data: Uint8Array): Uint8Array[]; + + encode(data: Uint8Arary): string[]; + } +} + +// declare class NodeAdapterReedSolomon { +// encodeInWorker(p: string, data: Uint8Array): Promise; +// } diff --git a/packages/reed-solomon/types/node.adapter.d.ts b/packages/reed-solomon/types/node.adapter.d.ts new file mode 100644 index 00000000..8fe0f463 --- /dev/null +++ b/packages/reed-solomon/types/node.adapter.d.ts @@ -0,0 +1,5 @@ +declare module '@bnb-chain/reed-solomon/node.adapter' { + export class NodeAdapterReedSolomon { + encodeInWorker(p: string, data: Uint8Array): Promise; + } +} diff --git a/packages/reed-solomon/types/utils.d.ts b/packages/reed-solomon/types/utils.d.ts new file mode 100644 index 00000000..102a9ba1 --- /dev/null +++ b/packages/reed-solomon/types/utils.d.ts @@ -0,0 +1,9 @@ +declare module '@bnb-chain/reed-solomon/utils' { + export function concat(a: Uint8Array[], b: Uint8Array[]): Uint8Array[]; + + export function getIntegrityUint8Array(uin8arr: Uint8Array[]): Uint8Array; + + export function toBase64(hashList: Uint8Array[]): string[]; + + export function splitPrice(data: Uint8Array, size: number): Uint8Array[]; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ba6d3c39..9bc82386 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,7 +43,7 @@ importers: version: 3.0.2(rollup@2.79.1) '@rollup/plugin-typescript': specifier: ^11.1.3 - version: 11.1.3(rollup@2.79.1)(typescript@5.3.2) + version: 11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5) '@types/chai': specifier: ^4.3.5 version: 4.3.5 @@ -61,10 +61,10 @@ importers: version: 18.2.5 '@typescript-eslint/eslint-plugin': specifier: ^5.59.11 - version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.2) + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) '@typescript-eslint/parser': specifier: ^5.59.11 - version: 5.59.11(eslint@8.48.0)(typescript@5.3.2) + version: 5.59.11(eslint@8.48.0)(typescript@4.9.5) chai: specifier: ^4.3.7 version: 4.3.7 @@ -76,7 +76,7 @@ importers: version: 8.48.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.3.2) + version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5) eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.1(eslint@8.48.0)(prettier@2.8.8) @@ -112,10 +112,10 @@ importers: dependencies: '@docusaurus/core': specifier: 3.0.0 - version: 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + version: 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/preset-classic': specifier: 3.0.0 - version: 3.0.0(@algolia/client-search@4.20.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.2) + version: 3.0.0(@algolia/client-search@4.20.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5) '@mdx-js/react': specifier: ^3.0.0 version: 3.0.0(@types/react@18.2.41)(react@18.2.0) @@ -241,6 +241,9 @@ importers: '@bnb-chain/greenfiled-file-handle': specifier: workspace:* version: link:../../packages/file-handle + '@bnb-chain/reed-solomon': + specifier: workspace:* + version: link:../../packages/reed-solomon dotenv: specifier: ^16.0.3 version: 16.0.3 @@ -426,7 +429,7 @@ importers: version: 16.0.3 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@20.10.3)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) mime: specifier: ^3.0.0 version: 3.0.0 @@ -435,7 +438,7 @@ importers: version: 29.1.0(@babel/core@7.23.5)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.10.3)(typescript@4.9.5) + version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.2 @@ -443,6 +446,15 @@ importers: specifier: ^4.9.5 version: 4.9.5 + packages/reed-solomon: + dependencies: + '@ethersproject/base64': + specifier: ^5.7.0 + version: 5.7.0 + ethereum-cryptography: + specifier: ^2.0.0 + version: 2.0.0 + packages/zk-crypto: devDependencies: clean-webpack-plugin: @@ -3545,7 +3557,7 @@ packages: lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.3.2) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -3650,7 +3662,7 @@ packages: '@cosmjs/encoding': 0.28.13 '@cosmjs/math': 0.28.13 '@cosmjs/utils': 0.28.13 - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.2 bn.js: 5.2.1 elliptic: 6.5.4 libsodium-wrappers: 0.7.11 @@ -3834,7 +3846,7 @@ packages: - '@algolia/client-search' dev: false - /@docusaurus/core@3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): + /@docusaurus/core@3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-bHWtY55tJTkd6pZhHrWz1MpWuwN4edZe0/UWgFF7PW/oJeDZvLSXKqwny3L91X1/LGGoypBGkeZn8EOuKeL4yQ==} engines: {node: '>=18.0'} hasBin: true @@ -3889,10 +3901,10 @@ packages: lodash: 4.17.21 mini-css-extract-plugin: 2.7.6(webpack@5.89.0) postcss: 8.4.31 - postcss-loader: 7.3.3(postcss@8.4.31)(typescript@5.3.2)(webpack@5.89.0) + postcss-loader: 7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0) prompts: 2.4.2 react: 18.2.0 - react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@5.3.2)(webpack@5.89.0) + react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) react-dom: 18.2.0(react@18.2.0) react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) @@ -4017,14 +4029,14 @@ packages: - uglify-js - webpack-cli - /@docusaurus/plugin-content-blog@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): + /@docusaurus/plugin-content-blog@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-iA8Wc3tIzVnROJxrbIsU/iSfixHW16YeW9RWsBw7hgEk4dyGsip9AsvEDXobnRq3lVv4mfdgoS545iGWf1Ip9w==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/logger': 3.0.0 '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) @@ -4061,14 +4073,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): + /@docusaurus/plugin-content-docs@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-MFZsOSwmeJ6rvoZMLieXxPuJsA9M9vn7/mUZmfUzSUTeHAeq+fEqvLltFOxcj4DVVDTYlQhgWYd+PISIWgamKw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/logger': 3.0.0 '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.0(react-dom@18.2.0)(react@18.2.0) @@ -4103,14 +4115,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): + /@docusaurus/plugin-content-pages@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-EXYHXK2Ea1B5BUmM0DgSwaOYt8EMSzWtYUToNo62Q/EoWxYOQFdWglYnw3n7ZEGyw5Kog4LHaRwlazAdmDomvQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) @@ -4138,14 +4150,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): + /@docusaurus/plugin-debug@3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-gSV07HfQgnUboVEb3lucuVyv5pEoy33E7QXzzn++3kSc/NLEimkjXh3sSnTGOishkxCqlFV9BHfY/VMm5Lko5g==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) '@microlink/react-json-view': 1.23.0(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) @@ -4173,14 +4185,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): + /@docusaurus/plugin-google-analytics@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-0zcLK8w+ohmSm1fjUQCqeRsjmQc0gflvXnaVA/QVVCtm2yCiBtkrSGQXqt4MdpD7Xq8mwo3qVd5nhIcvrcebqw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) react: 18.2.0 @@ -4204,14 +4216,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): + /@docusaurus/plugin-google-gtag@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-asEKavw8fczUqvXu/s9kG2m1epLnHJ19W6CCCRZEmpnkZUZKiM8rlkDiEmxApwIc2JDDbIMk+Y2TMkJI8mInbQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) '@types/gtag.js': 0.0.12 @@ -4236,14 +4248,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): + /@docusaurus/plugin-google-tag-manager@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-lytgu2eyn+7p4WklJkpMGRhwC29ezj4IjPPmVJ8vGzcSl6JkR1sADTHLG5xWOMuci420xZl9dGEiLTQ8FjCRyA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) react: 18.2.0 @@ -4267,14 +4279,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): + /@docusaurus/plugin-sitemap@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-cfcONdWku56Oi7Hdus2uvUw/RKRRlIGMViiHLjvQ21CEsEqnQ297MRoIgjU28kL7/CXD/+OiANSq3T1ezAiMhA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/logger': 3.0.0 '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) @@ -4303,25 +4315,25 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.0.0(@algolia/client-search@4.20.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.2): + /@docusaurus/preset-classic@3.0.0(@algolia/client-search@4.20.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5): resolution: {integrity: sha512-90aOKZGZdi0+GVQV+wt8xx4M4GiDrBRke8NO8nWwytMEXNrxrBxsQYFRD1YlISLJSCiHikKf3Z/MovMnQpnZyg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@docusaurus/plugin-debug': 3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@docusaurus/plugin-google-analytics': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@docusaurus/plugin-google-gtag': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@docusaurus/plugin-google-tag-manager': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@docusaurus/plugin-sitemap': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@docusaurus/theme-classic': 3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@docusaurus/theme-search-algolia': 3.0.0(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.2) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-debug': 3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-google-analytics': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-google-gtag': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-google-tag-manager': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-sitemap': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-classic': 3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-search-algolia': 3.0.0(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5) '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4352,24 +4364,24 @@ packages: peerDependencies: react: '*' dependencies: - '@types/react': 18.2.37 + '@types/react': 18.2.41 prop-types: 15.8.1 react: 18.2.0 - /@docusaurus/theme-classic@3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): + /@docusaurus/theme-classic@3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-wWOHSrKMn7L4jTtXBsb5iEJ3xvTddBye5PjYBnWiCkTAlhle2yMdc4/qRXW35Ot+OV/VXu6YFG8XVUJEl99z0A==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/theme-translations': 3.0.0 '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) @@ -4409,7 +4421,7 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): + /@docusaurus/theme-common@3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-PahRpCLRK5owCMEqcNtUeTMOkTUCzrJlKA+HLu7f+8osYOni617YurXvHASCsSTxurjXaLz/RqZMnASnqATxIA==} engines: {node: '>=18.0'} peerDependencies: @@ -4418,9 +4430,9 @@ packages: dependencies: '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) '@types/history': 4.7.11 @@ -4452,7 +4464,7 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.0.0(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@5.3.2): + /@docusaurus/theme-search-algolia@3.0.0(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5): resolution: {integrity: sha512-PyMUNIS9yu0dx7XffB13ti4TG47pJq3G2KE/INvOFb6M0kWh+wwCnucPg4WAOysHOPh+SD9fjlXILoLQstgEIA==} engines: {node: '>=18.0'} peerDependencies: @@ -4460,10 +4472,10 @@ packages: react-dom: ^18.0.0 dependencies: '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0) - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/logger': 3.0.0 - '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/theme-translations': 3.0.0 '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) @@ -5881,7 +5893,6 @@ packages: picocolors: 1.0.0 tiny-glob: 0.2.9 tslib: 2.5.2 - dev: false /@pnpm/config.env-replace@1.1.0: resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} @@ -6092,25 +6103,6 @@ packages: typescript: 4.9.5 dev: true - /@rollup/plugin-typescript@11.1.3(rollup@2.79.1)(typescript@5.3.2): - resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.14.0||^3.0.0 - tslib: '*' - typescript: '>=3.7.0' - peerDependenciesMeta: - rollup: - optional: true - tslib: - optional: true - dependencies: - '@rollup/pluginutils': 5.0.2(rollup@2.79.1) - resolve: 1.22.2 - rollup: 2.79.1 - typescript: 5.3.2 - dev: true - /@rollup/pluginutils@3.1.0(rollup@2.79.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} @@ -6198,7 +6190,7 @@ packages: resolution: {integrity: sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==} dependencies: '@noble/curves': 1.0.0 - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.2 '@scure/base': 1.1.1 dev: false @@ -6212,7 +6204,7 @@ packages: /@scure/bip39@1.2.0: resolution: {integrity: sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==} dependencies: - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.2 '@scure/base': 1.1.1 dev: false @@ -7019,6 +7011,7 @@ packages: resolution: {integrity: sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg==} dependencies: undici-types: 5.26.5 + dev: false /@types/node@20.6.0: resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} @@ -7060,7 +7053,6 @@ packages: /@types/prop-types@15.7.11: resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} - dev: false /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} @@ -7118,7 +7110,6 @@ packages: '@types/prop-types': 15.7.11 '@types/scheduler': 0.16.8 csstype: 3.1.2 - dev: false /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} @@ -7150,7 +7141,6 @@ packages: /@types/scheduler@0.16.8: resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} - dev: false /@types/secp256k1@4.0.3: resolution: {integrity: sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==} @@ -7255,7 +7245,7 @@ packages: '@types/yargs-parser': 21.0.3 dev: false - /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.2): + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7267,29 +7257,29 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.2) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@5.3.2) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.2) + '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.2 - tsutils: 3.21.0(typescript@5.3.2) - typescript: 5.3.2 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@5.3.2): + /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@5.3.2) + '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -7314,26 +7304,6 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: false - - /@typescript-eslint/parser@5.59.11(eslint@8.48.0)(typescript@5.3.2): - resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.2) - debug: 4.3.4(supports-color@8.1.1) - eslint: 8.48.0 - typescript: 5.3.2 - transitivePeerDependencies: - - supports-color /@typescript-eslint/scope-manager@5.59.11: resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} @@ -7350,7 +7320,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.7 dev: true - /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@5.3.2): + /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7360,12 +7330,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.2) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.2) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 - tsutils: 3.21.0(typescript@5.3.2) - typescript: 5.3.2 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true @@ -7398,29 +7368,8 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: false - /@typescript-eslint/typescript-estree@5.59.11(typescript@5.3.2): - resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/visitor-keys': 5.59.11 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.2 - tsutils: 3.21.0(typescript@5.3.2) - typescript: 5.3.2 - transitivePeerDependencies: - - supports-color - - /@typescript-eslint/typescript-estree@5.59.7(typescript@5.3.2): + /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7435,13 +7384,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.2 - tsutils: 3.21.0(typescript@5.3.2) - typescript: 5.3.2 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@5.3.2): + /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7452,7 +7401,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.2) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.2 @@ -7461,7 +7410,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@5.3.2): + /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7472,7 +7421,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.7 '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.3.2) + '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.2 @@ -9895,7 +9844,7 @@ packages: dependencies: '@types/node': 18.16.18 cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.3.2) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) typescript: 4.9.5 dev: true @@ -9930,7 +9879,7 @@ packages: path-type: 4.0.0 dev: true - /cosmiconfig@8.3.6(typescript@5.3.2): + /cosmiconfig@8.3.6(typescript@4.9.5): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -9943,7 +9892,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 5.3.2 + typescript: 4.9.5 dev: false /cosmjs-types@0.4.1: @@ -10485,7 +10434,6 @@ packages: /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} - dev: false /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} @@ -11030,7 +10978,7 @@ packages: eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) @@ -11040,7 +10988,7 @@ packages: - supports-color dev: false - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.3.2): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -11053,19 +11001,19 @@ packages: '@babel/core': 7.23.3 '@babel/eslint-parser': 7.21.8(@babel/core@7.23.3)(eslint@8.48.0) '@rushstack/eslint-patch': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.2) - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.2) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.48.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.3.2) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) - eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@5.3.2) - typescript: 5.3.2 + eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -11094,7 +11042,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.15.0 eslint: 8.48.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) get-tsconfig: 4.5.0 globby: 13.1.3 is-core-module: 2.12.1 @@ -11102,9 +11050,8 @@ packages: synckit: 0.8.5 transitivePeerDependencies: - supports-color - dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -11125,10 +11072,11 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.2) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 3.2.7 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) transitivePeerDependencies: - supports-color @@ -11147,7 +11095,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -11157,7 +11105,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.2) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -11165,7 +11113,7 @@ packages: doctrine: 2.1.0 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 @@ -11179,7 +11127,7 @@ packages: - eslint-import-resolver-webpack - supports-color - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.3.2): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -11192,8 +11140,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.2) - '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@5.3.2) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -11271,13 +11219,13 @@ packages: semver: 6.3.1 string.prototype.matchall: 4.0.8 - /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@5.3.2): + /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.2) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -12019,7 +11967,7 @@ packages: dependencies: is-callable: 1.2.7 - /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@5.3.2)(webpack@5.89.0): + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -12047,7 +11995,7 @@ packages: schema-utils: 2.7.0 semver: 7.5.4 tapable: 1.1.3 - typescript: 5.3.2 + typescript: 4.9.5 webpack: 5.89.0 dev: false @@ -12248,7 +12196,6 @@ packages: /get-tsconfig@4.5.0: resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} - dev: false /git-clone@0.1.0: resolution: {integrity: sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==} @@ -12365,7 +12312,6 @@ packages: /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - dev: false /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -12401,7 +12347,6 @@ packages: /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - dev: false /google-protobuf@3.21.2: resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} @@ -13196,7 +13141,6 @@ packages: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true - dev: false /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} @@ -13482,7 +13426,6 @@ packages: engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - dev: false /is-yarn-global@0.4.1: resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} @@ -13635,7 +13578,7 @@ packages: - supports-color dev: true - /jest-cli@29.5.0(@types/node@20.10.3)(ts-node@10.9.1): + /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -13652,7 +13595,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@20.10.3)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -13698,47 +13641,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.10.3)(typescript@4.9.5) - transitivePeerDependencies: - - supports-color - dev: true - - /jest-config@29.5.0(@types/node@20.10.3)(ts-node@10.9.1): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.23.3 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.10.3 - babel-jest: 29.5.0(@babel/core@7.23.3) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.10.3)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true @@ -14068,7 +13971,7 @@ packages: supports-color: 8.1.1 dev: false - /jest@29.5.0(@types/node@20.10.3)(ts-node@10.9.1): + /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -14081,7 +13984,7 @@ packages: '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@20.10.3)(ts-node@10.9.1) + jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color @@ -15927,7 +15830,6 @@ packages: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 - dev: false /opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} @@ -16440,14 +16342,14 @@ packages: postcss-selector-parser: 6.0.13 dev: false - /postcss-loader@7.3.3(postcss@8.4.31)(typescript@5.3.2)(webpack@5.89.0): + /postcss-loader@7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0): resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} engines: {node: '>= 14.15.0'} peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 dependencies: - cosmiconfig: 8.3.6(typescript@5.3.2) + cosmiconfig: 8.3.6(typescript@4.9.5) jiti: 1.21.0 postcss: 8.4.31 semver: 7.5.4 @@ -17082,7 +16984,7 @@ packages: pure-color: 1.3.0 dev: false - /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@5.3.2)(webpack@5.89.0): + /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -17101,7 +17003,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@5.3.2)(webpack@5.89.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -17116,7 +17018,7 @@ packages: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - typescript: 5.3.2 + typescript: 4.9.5 webpack: 5.89.0 transitivePeerDependencies: - eslint @@ -18711,7 +18613,6 @@ packages: dependencies: '@pkgr/utils': 2.3.1 tslib: 2.5.2 - dev: false /tapable@1.1.3: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} @@ -18858,7 +18759,6 @@ packages: dependencies: globalyzer: 0.1.0 globrex: 0.1.2 - dev: false /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} @@ -18953,7 +18853,7 @@ packages: '@babel/core': 7.23.5 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@20.10.3)(ts-node@10.9.1) + jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -18963,7 +18863,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.16.18)(typescript@5.3.2): + /ts-node@10.9.1(@types/node@18.16.18)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -18989,37 +18889,6 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.3.2 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - - /ts-node@10.9.1(@types/node@20.10.3)(typescript@4.9.5): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 20.10.3 - acorn: 8.10.0 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -19051,16 +18920,6 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 - dev: false - - /tsutils@3.21.0(typescript@5.3.2): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.3.2 /tsyringe@4.8.0: resolution: {integrity: sha512-YB1FG+axdxADa3ncEtRnQCFq/M0lALGLxSZeVNbTU8NqhOVc51nnv2CISTcvc1kyv6EGPtXVr0v6lWeDxiijOA==} @@ -19178,11 +19037,6 @@ packages: hasBin: true dev: true - /typescript@5.3.2: - resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} - engines: {node: '>=14.17'} - hasBin: true - /ua-parser-js@1.0.37: resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} dev: false @@ -19226,6 +19080,7 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: false /unenv@1.8.0: resolution: {integrity: sha512-uIGbdCWZfhRRmyKj1UioCepQ0jpq638j/Cf0xFTn4zD1nGJ2lSdzYHLzfdXN791oo/0juUiSWW1fBklXMTsuqg==} From b44c413902aa8b209ec8e831d888c70a37039fc1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 19 Dec 2023 00:14:45 +0800 Subject: [PATCH 335/433] chore: [ci] release (alpha) (#419) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 7 ++++++- examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 12 ++++++++++++ examples/nodejs/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 8 ++++++++ packages/js-sdk/package.json | 2 +- packages/reed-solomon/CHANGELOG.md | 17 +++++++++++++++++ packages/reed-solomon/package.json | 2 +- 9 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 packages/reed-solomon/CHANGELOG.md diff --git a/.changeset/pre.json b/.changeset/pre.json index 904db04c..820361ed 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -8,9 +8,14 @@ "@bnb-chain/create-gnfd-app": "1.0.0", "@bnb-chain/greenfiled-file-handle": "1.0.2", "@bnb-chain/greenfield-js-sdk": "1.0.6", - "@bnb-chain/greenfield-zk-crypto": "1.0.0" + "@bnb-chain/greenfield-zk-crypto": "1.0.0", + "@bnb-chain/reed-solomon": "1.0.0" }, "changesets": [ + "beige-beds-lay", + "eighty-foxes-train", + "gold-tigers-taste", + "happy-ears-tap", "tricky-chicken-knock" ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index a3e462fc..15e0c764 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.17-alpha.1 + +### Patch Changes + +- Updated dependencies + [[`a940e06`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a940e065954aadd021c76bcb59be69254f50735e)]: + - @bnb-chain/greenfield-js-sdk@1.1.0-alpha.1 + ## 0.0.17-alpha.0 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 6dfdc8a6..0b5b9caf 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.17-alpha.0", + "version": "0.0.17-alpha.1", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index f89431c1..77dc26b2 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,17 @@ # @demo/nodejs +## 0.0.20-alpha.1 + +### Patch Changes + +- Updated dependencies + [[`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f), + [`a940e06`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a940e065954aadd021c76bcb59be69254f50735e), + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f), + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f)]: + - @bnb-chain/reed-solomon@1.0.1-alpha.0 + - @bnb-chain/greenfield-js-sdk@1.1.0-alpha.1 + ## 0.0.20-alpha.0 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 47630051..85e3ebb6 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.20-alpha.0", + "version": "0.0.20-alpha.1", "type": "commonjs", "private": true, "scripts": {}, diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index 89c87e44..c80fa797 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 1.1.0-alpha.1 + +### Patch Changes + +- [#418](https://github.com/bnb-chain/greenfield-js-sdk/pull/418) + [`a940e06`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a940e065954aadd021c76bcb59be69254f50735e) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Remove engines filed in package.json + ## 1.1.0-alpha.0 ### Minor Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index cf66e4a5..1813f206 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.1.0-alpha.0", + "version": "1.1.0-alpha.1", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", diff --git a/packages/reed-solomon/CHANGELOG.md b/packages/reed-solomon/CHANGELOG.md new file mode 100644 index 00000000..9a9f41eb --- /dev/null +++ b/packages/reed-solomon/CHANGELOG.md @@ -0,0 +1,17 @@ +# @bnb-chain/reed-solomon + +## 1.0.1-alpha.0 + +### Patch Changes + +- [#422](https://github.com/bnb-chain/greenfield-js-sdk/pull/422) + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f) + Thanks [@rrr523](https://github.com/rrr523)! - js reed solomon + +- [#422](https://github.com/bnb-chain/greenfield-js-sdk/pull/422) + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add types + +- [#422](https://github.com/bnb-chain/greenfield-js-sdk/pull/422) + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Nodejs Support Worker diff --git a/packages/reed-solomon/package.json b/packages/reed-solomon/package.json index 5c856710..c6ff6d92 100644 --- a/packages/reed-solomon/package.json +++ b/packages/reed-solomon/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/reed-solomon", - "version": "1.0.0", + "version": "1.0.1-alpha.0", "description": "lighting implement for reed solomon", "module": "./dist/index.esm.js", "main": "./dist/index.js", From 6771bed0f17ed6b82cbae83324bce0d0eb882608 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Tue, 19 Dec 2023 00:31:37 +0800 Subject: [PATCH 336/433] chore: Update example (#423) --- packages/reed-solomon/examples/folder.js | 9 +++++---- packages/reed-solomon/examples/singlefile.js | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/reed-solomon/examples/folder.js b/packages/reed-solomon/examples/folder.js index eaa68e15..6c9679bd 100644 --- a/packages/reed-solomon/examples/folder.js +++ b/packages/reed-solomon/examples/folder.js @@ -8,7 +8,7 @@ const folderPath = './dist'; (async () => { async function traverse(currentPath) { - const start = Date.now(); + console.time('total'); const files = await fs.readdir(currentPath); for (let i = 0; i < files.length; i++) { @@ -16,14 +16,15 @@ const folderPath = './dist'; const filePath = path.join(currentPath, file); const stat = await fs.stat(filePath); - const start = Date.now(); + console.time('file', file); const fileBuffer = await fs.readFile(filePath); const res = await rs.encodeInWorker(__filename, Uint8Array.from(fileBuffer)); - console.log('res', file, Date.now() - start, res); + console.timeEnd('file'); + console.log(file, 'res: ', res); } console.log('files count: ', files.length); - console.log('total cost time: ', Date.now() - start); + console.timeEnd('total'); } await traverse(folderPath); diff --git a/packages/reed-solomon/examples/singlefile.js b/packages/reed-solomon/examples/singlefile.js index cf1bc321..c5196d1c 100644 --- a/packages/reed-solomon/examples/singlefile.js +++ b/packages/reed-solomon/examples/singlefile.js @@ -9,8 +9,8 @@ const rs = new NodeAdapterReedSolomon(); // single file (async () => { - const start = Date.now(); + console.time('cost'); const res = await rs.encodeInWorker(__filename, Uint8Array.from(fileBuffer)); console.log('res', res); - console.log('cost time', Date.now() - start); + console.timeEnd('cost'); })(); From a9999603b3a66e360952580da09716e85d26cc5c Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Tue, 19 Dec 2023 18:35:25 +0800 Subject: [PATCH 337/433] feat: Add SP Api types (#424) --- .changeset/early-kids-remain.md | 5 ++ .../src/components/group/info/index.tsx | 2 +- .../src/components/group/update/index.tsx | 2 +- packages/js-sdk/src/api/storage.ts | 6 +- .../messages/greenfield/storage/MsgSetTag.ts | 67 +++++++++++++------ packages/js-sdk/src/types/sp/Common.ts | 48 ++++++++++++- 6 files changed, 103 insertions(+), 27 deletions(-) create mode 100644 .changeset/early-kids-remain.md diff --git a/.changeset/early-kids-remain.md b/.changeset/early-kids-remain.md new file mode 100644 index 00000000..ba30f872 --- /dev/null +++ b/.changeset/early-kids-remain.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Add SP create API types diff --git a/examples/nextjs/src/components/group/info/index.tsx b/examples/nextjs/src/components/group/info/index.tsx index bbb8562a..65c30f5e 100644 --- a/examples/nextjs/src/components/group/info/index.tsx +++ b/examples/nextjs/src/components/group/info/index.tsx @@ -37,7 +37,7 @@ export const GroupInfo = () => { console.log('headGroupMember', headGroupMember); }} > - get group info + get group member info ); diff --git a/examples/nextjs/src/components/group/update/index.tsx b/examples/nextjs/src/components/group/update/index.tsx index 479f97c8..202e8af5 100644 --- a/examples/nextjs/src/components/group/update/index.tsx +++ b/examples/nextjs/src/components/group/update/index.tsx @@ -125,7 +125,7 @@ export const GroupUpdate = () => { onClick={async () => { if (!address) return; - const resource = GRNToString(newGroupGRN(address, 'zzxc1')); + const resource = GRNToString(newGroupGRN(address, groupName)); const updateGroupTx = await client.storage.setTag({ operator: address, diff --git a/packages/js-sdk/src/api/storage.ts b/packages/js-sdk/src/api/storage.ts index 4f53cf95..97c849b9 100644 --- a/packages/js-sdk/src/api/storage.ts +++ b/packages/js-sdk/src/api/storage.ts @@ -31,7 +31,7 @@ import { TxResponse, } from '..'; import { RpcQueryClient } from '../clients/queryclient'; -import { MsgSetTagSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgSetTag'; +import { getMsgSetTagSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgSetTag'; export interface IStorage { params(): Promise; @@ -108,6 +108,10 @@ export class Storage implements IStorage { } public async setTag(msg: MsgSetTag) { + const isTagsEmpty = msg?.tags?.tags?.length === 0; + + const MsgSetTagSDKTypeEIP712 = getMsgSetTagSDKTypeEIP712(isTagsEmpty); + return await this.txClient.tx( MsgSetTagTypeUrl, msg.operator, diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts index 47a9e343..c29b64ff 100644 --- a/packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts @@ -1,4 +1,49 @@ -export const MsgSetTagSDKTypeEIP712 = { +import type { EIP712Msg } from '@/messages/utils'; +import cloneDeep from 'lodash.clonedeep'; + +export const getMsgSetTagSDKTypeEIP712 = (isTagsEmpty: boolean) => { + const res: EIP712Msg = cloneDeep(MsgSetTagSDKTypeEIP712); + + if (!isTagsEmpty) { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'TypeMsg1TagsTags[]', + }, + ]; + res.TypeMsg1TagsTags = [ + { + name: 'key', + type: 'string', + }, + { + name: 'value', + type: 'string', + }, + ]; + } else { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'string[]', + }, + ]; + } + + return res; +}; + +const MsgSetTagSDKTypeEIP712 = { Msg1: [ { name: 'operator', @@ -8,29 +53,9 @@ export const MsgSetTagSDKTypeEIP712 = { name: 'resource', type: 'string', }, - { - name: 'tags', - type: 'TypeMsg1Tags', - }, { name: 'type', type: 'string', }, ], - TypeMsg1Tags: [ - { - name: 'tags', - type: 'TypeMsg1TagsTags[]', - }, - ], - TypeMsg1TagsTags: [ - { - name: 'key', - type: 'string', - }, - { - name: 'value', - type: 'string', - }, - ], }; diff --git a/packages/js-sdk/src/types/sp/Common.ts b/packages/js-sdk/src/types/sp/Common.ts index fc2a85ee..d669aaf6 100644 --- a/packages/js-sdk/src/types/sp/Common.ts +++ b/packages/js-sdk/src/types/sp/Common.ts @@ -42,6 +42,12 @@ export interface BucketInfo { PaymentAddress: string; SourceType: number; Visibility: number; + Tags: { + Tags: { + Key: string; + Value: string; + }[]; + }; } export interface StreamRecord { @@ -85,9 +91,20 @@ export interface ObjectInfo { RedundancyType: number; SourceType: number; Visibility: number; + Tags: { + Tags: { + Key: string; + Value: string; + }[]; + }; } -export function formatBucketInfo(o: BucketInfo) { +export function formatBucketInfo(o: BucketInfo): BucketInfo { + let tags = o.Tags.Tags || []; + if (!Array.isArray(tags)) { + tags = [tags]; + } + return { ...o, // PrimarySpId: Number(item.BucketInfo.PrimarySpId), @@ -97,10 +114,18 @@ export function formatBucketInfo(o: BucketInfo) { GlobalVirtualGroupFamilyId: Number(o.GlobalVirtualGroupFamilyId), SourceType: Number(o.SourceType), Visibility: Number(o.Visibility), + Tags: { + Tags: tags, + }, }; } -export function formatObjectInfo(o: ObjectInfo) { +export function formatObjectInfo(o: ObjectInfo): ObjectInfo { + let tags = o.Tags.Tags || []; + if (!Array.isArray(tags)) { + tags = [tags]; + } + return { ...o, CreateAt: Number(o.CreateAt), @@ -111,6 +136,9 @@ export function formatObjectInfo(o: ObjectInfo) { RedundancyType: Number(o.RedundancyType), SourceType: Number(o.SourceType), Visibility: Number(o.Visibility), + Tags: { + Tags: tags, + }, }; } @@ -140,13 +168,27 @@ export interface GroupInfo { SourceType: number; Id: number; Extra: string; + Tags: { + Tags: { + Key: string; + Value: string; + }[]; + }; } -export function formatGroupInfo(o: GroupInfo) { +export function formatGroupInfo(o: GroupInfo): GroupInfo { + let tags = o.Tags.Tags || []; + if (!Array.isArray(tags)) { + tags = [tags]; + } + return { ...o, SourceType: Number(o.SourceType), Id: Number(o.Id), + Tags: { + Tags: tags, + }, }; } From 020b2a54d7fe608fdaef4b10c816216680f6c0c6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 19 Dec 2023 18:37:09 +0800 Subject: [PATCH 338/433] chore: [ci] release (alpha) (#425) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 8 ++++++++ packages/js-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 820361ed..a33a06ce 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -13,6 +13,7 @@ }, "changesets": [ "beige-beds-lay", + "early-kids-remain", "eighty-foxes-train", "gold-tigers-taste", "happy-ears-tap", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 15e0c764..ac726fdc 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.17-alpha.2 + +### Patch Changes + +- Updated dependencies + [[`a999960`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a9999603b3a66e360952580da09716e85d26cc5c)]: + - @bnb-chain/greenfield-js-sdk@1.1.0-alpha.2 + ## 0.0.17-alpha.1 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 0b5b9caf..b7ad1c92 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.17-alpha.1", + "version": "0.0.17-alpha.2", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 77dc26b2..be6bf277 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.20-alpha.2 + +### Patch Changes + +- Updated dependencies + [[`a999960`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a9999603b3a66e360952580da09716e85d26cc5c)]: + - @bnb-chain/greenfield-js-sdk@1.1.0-alpha.2 + ## 0.0.20-alpha.1 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 85e3ebb6..66675189 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.20-alpha.1", + "version": "0.0.20-alpha.2", "type": "commonjs", "private": true, "scripts": {}, diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index c80fa797..58310139 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 1.1.0-alpha.2 + +### Patch Changes + +- [#424](https://github.com/bnb-chain/greenfield-js-sdk/pull/424) + [`a999960`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a9999603b3a66e360952580da09716e85d26cc5c) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add SP create API types + ## 1.1.0-alpha.1 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 1813f206..c1720076 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.1.0-alpha.1", + "version": "1.1.0-alpha.2", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From d9df56ca6a68337fe14f89ba5654d333f2583505 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Tue, 19 Dec 2023 21:23:17 +0800 Subject: [PATCH 339/433] feat: Add bucket meta type (#426) --- .../src/clients/spclient/spApis/listBucketsByPayment.ts | 1 + packages/js-sdk/src/types/sp/GetBucketMeta.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/js-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts b/packages/js-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts index ba971dff..b2792d18 100644 --- a/packages/js-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts +++ b/packages/js-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts @@ -6,6 +6,7 @@ import { import { XMLParser } from 'fast-xml-parser'; import { getSortQueryParams } from '../auth'; +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/list_payment_account_streams export const getListBucketByPaymentMetaInfo = ( endpoint: string, params: ListBucketsByPaymentAccountRequest, diff --git a/packages/js-sdk/src/types/sp/GetBucketMeta.ts b/packages/js-sdk/src/types/sp/GetBucketMeta.ts index f9e63ce1..e22ee67f 100644 --- a/packages/js-sdk/src/types/sp/GetBucketMeta.ts +++ b/packages/js-sdk/src/types/sp/GetBucketMeta.ts @@ -1,4 +1,4 @@ -import { BucketMeta, StreamRecord } from './Common'; +import { BucketMetaWithVGF, StreamRecord } from './Common'; export interface GetBucketMetaRequest { bucketName: string; @@ -10,6 +10,6 @@ export interface GetBucketMetaResponse { } export interface GfSPGetBucketMetaResponse { - Bucket: BucketMeta; + Bucket: BucketMetaWithVGF; StreamRecord: StreamRecord; } From d579137fd6ecd0d226f4d79fcc0b3f9b44f8952b Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Tue, 19 Dec 2023 21:30:13 +0800 Subject: [PATCH 340/433] feat: Add bucket meta type (#427) --- .changeset/shaggy-cups-care.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/shaggy-cups-care.md diff --git a/.changeset/shaggy-cups-care.md b/.changeset/shaggy-cups-care.md new file mode 100644 index 00000000..40aad295 --- /dev/null +++ b/.changeset/shaggy-cups-care.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Add bucket meta types From cfb0941255f45a3232c416ec02544af24021bb76 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 19 Dec 2023 21:32:12 +0800 Subject: [PATCH 341/433] chore: [ci] release (alpha) (#428) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 8 ++++++++ packages/js-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index a33a06ce..65bd871f 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -17,6 +17,7 @@ "eighty-foxes-train", "gold-tigers-taste", "happy-ears-tap", + "shaggy-cups-care", "tricky-chicken-knock" ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index ac726fdc..c49204cc 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.17-alpha.3 + +### Patch Changes + +- Updated dependencies + [[`d579137`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d579137fd6ecd0d226f4d79fcc0b3f9b44f8952b)]: + - @bnb-chain/greenfield-js-sdk@1.1.0-alpha.3 + ## 0.0.17-alpha.2 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index b7ad1c92..1fe739d5 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.17-alpha.2", + "version": "0.0.17-alpha.3", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index be6bf277..27d7cc8f 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.20-alpha.3 + +### Patch Changes + +- Updated dependencies + [[`d579137`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d579137fd6ecd0d226f4d79fcc0b3f9b44f8952b)]: + - @bnb-chain/greenfield-js-sdk@1.1.0-alpha.3 + ## 0.0.20-alpha.2 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 66675189..43314d65 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.20-alpha.2", + "version": "0.0.20-alpha.3", "type": "commonjs", "private": true, "scripts": {}, diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index 58310139..dcb830ff 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 1.1.0-alpha.3 + +### Patch Changes + +- [#427](https://github.com/bnb-chain/greenfield-js-sdk/pull/427) + [`d579137`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d579137fd6ecd0d226f4d79fcc0b3f9b44f8952b) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add bucket meta types + ## 1.1.0-alpha.2 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index c1720076..ea62cc3e 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.1.0-alpha.2", + "version": "1.1.0-alpha.3", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From afb54644683c8da508d250731a6462676cf44747 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Wed, 20 Dec 2023 00:53:45 +0800 Subject: [PATCH 342/433] Feat/rs webworker (#429) * chore: Update example, using reed solomon * chore: Update Rollup config * chore: Benchmark * docs: Update README * feat: Support WebWorker --- .changeset/dirty-buttons-care.md | 5 + examples/nextjs/package.json | 1 + .../src/components/object/create/index.tsx | 13 +-- packages/reed-solomon/README.md | 2 +- packages/reed-solomon/benchmark.md | 19 ++++ packages/reed-solomon/examples/singlefile.js | 16 --- packages/reed-solomon/examples/web.html | 57 ++++++++++ packages/reed-solomon/package.json | 17 ++- packages/reed-solomon/rollup.config.js | 43 +++++++- packages/reed-solomon/src/utils.js | 1 + packages/reed-solomon/src/web.adapter.js | 100 ++++++++++++++++++ packages/reed-solomon/types/index.d.ts | 4 - packages/reed-solomon/types/web.adapter.d.ts | 14 +++ pnpm-lock.yaml | 3 + 14 files changed, 263 insertions(+), 32 deletions(-) create mode 100644 .changeset/dirty-buttons-care.md create mode 100644 packages/reed-solomon/benchmark.md delete mode 100644 packages/reed-solomon/examples/singlefile.js create mode 100644 packages/reed-solomon/examples/web.html create mode 100644 packages/reed-solomon/src/web.adapter.js create mode 100644 packages/reed-solomon/types/web.adapter.d.ts diff --git a/.changeset/dirty-buttons-care.md b/.changeset/dirty-buttons-care.md new file mode 100644 index 00000000..b2cbcb65 --- /dev/null +++ b/.changeset/dirty-buttons-care.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/reed-solomon': patch +--- + +feat: Support Web Worker diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 1fe739d5..a3dd3282 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -14,6 +14,7 @@ "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.25", "@bnb-chain/greenfield-js-sdk": "workspace:*", "@bnb-chain/greenfiled-file-handle": "workspace:*", + "@bnb-chain/reed-solomon": "workspace:*", "@cosmjs/encoding": "^0.32.0", "@cosmjs/proto-signing": "^0.32.0", "@cosmjs/stargate": "^0.32.0", diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index ee9a8efb..9427665a 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -1,9 +1,9 @@ import { client } from '@/client'; -import { ACCOUNT_PRIVATEKEY } from '@/config/env'; import { getOffchainAuthKeys } from '@/utils/offchainAuth'; import { ChangeEvent, useState } from 'react'; import { useAccount } from 'wagmi'; import { getCheckSumsWorker } from '@bnb-chain/greenfiled-file-handle'; +import { ReedSolomon } from '@bnb-chain/reed-solomon'; export const CreateObject = () => { const { address, connector } = useAccount(); @@ -64,14 +64,11 @@ export const CreateObject = () => { const multiCal = await checksumWorker.generateCheckSumV2(file); console.log('multiCal', multiCal); + const rs = new ReedSolomon(); const fileBytes = await file.arrayBuffer(); - const hashResult = await (window as any).FileHandle.getCheckSums( - new Uint8Array(fileBytes), - ); - const { contentLength, expectCheckSums } = hashResult; + const expectCheckSums = rs.encode(new Uint8Array(fileBytes)); console.log('offChainData', offChainData); - console.log('hashResult', hashResult); const createObjectTx = await client.object.createObject( { @@ -81,8 +78,8 @@ export const CreateObject = () => { visibility: 'VISIBILITY_TYPE_PRIVATE', fileType: file.type, redundancyType: 'REDUNDANCY_EC_TYPE', - contentLength, - expectCheckSums: JSON.parse(expectCheckSums), + contentLength: fileBytes.byteLength, + expectCheckSums: expectCheckSums, // empty tags // tags: { // tags: [], diff --git a/packages/reed-solomon/README.md b/packages/reed-solomon/README.md index 43c03890..647d9d0a 100644 --- a/packages/reed-solomon/README.md +++ b/packages/reed-solomon/README.md @@ -22,7 +22,7 @@ Use directly in the browser via script tag: get reed solomon - + + + + + + diff --git a/packages/reed-solomon/package.json b/packages/reed-solomon/package.json index c6ff6d92..efec1ab1 100644 --- a/packages/reed-solomon/package.json +++ b/packages/reed-solomon/package.json @@ -7,7 +7,7 @@ "types": "./types/index.d.ts", "exports": { ".": { - "import": "./dist/index.aio.js", + "import": "./dist/index.js", "require": "./dist/index.js", "main": "./dist/index.js", "default": "./dist/index.js", @@ -19,11 +19,26 @@ "node": "./dist/node.adapter.js", "require": "./dist/node.adapter.js" }, + "./web.adapter": { + "default": "./dist/web.adapter.js", + "types": "./types/web.adapter.d.ts", + "import": "./dist/web.adapter.js" + }, "./utils": { + "import": "./dist/utils.esm.js", + "require": "./dist/utils.js", + "main": "./dist/utils.js", "default": "./dist/utils.js", "types": "./types/utils.d.ts" } }, + "typesVersions": { + "*": { + "node.adapter": ["./types/node.adapter.d.ts"], + "web.adapter": ["./types/web.adapter.d.ts"], + "utils": ["./types/utils.d.ts"] + } + }, "scripts": { "prebuild": "rimraf ./dist", "build": "rollup -c" diff --git a/packages/reed-solomon/rollup.config.js b/packages/reed-solomon/rollup.config.js index cc58f722..d7f4349d 100644 --- a/packages/reed-solomon/rollup.config.js +++ b/packages/reed-solomon/rollup.config.js @@ -9,10 +9,13 @@ function resolveExternal() { export default async () => { return [ + // ESM { - input: './src/index.js', + input: ['./src/index.js', './src/web.adapter.js'], output: { - file: 'dist/index.esm.js', + format: 'es', + dir: 'dist', + entryFileNames: '[name].esm.js', sourcemap: true, }, external: resolveExternal(), @@ -26,6 +29,8 @@ export default async () => { }), ], }, + + // CJS { input: ['./src/index.js', './src/node.adapter.js', './src/utils.js'], output: { @@ -43,6 +48,8 @@ export default async () => { // }), ], }, + + // UMD { input: './src/index.js', output: { @@ -59,5 +66,37 @@ export default async () => { }), ], }, + { + input: './src/web.adapter.js', + output: { + format: 'umd', + file: 'dist/web.adapter.aio.js', + name: 'WebAdapter', + sourcemap: true, + }, + plugins: [ + commonjs(), + resolve({ + browser: true, + preferBuiltins: false, + }), + ], + }, + { + input: './src/utils.js', + output: { + format: 'umd', + file: 'dist/utils.aio.js', + name: 'RSUtils', + sourcemap: true, + }, + plugins: [ + commonjs(), + resolve({ + browser: true, + preferBuiltins: false, + }), + ], + }, ]; }; diff --git a/packages/reed-solomon/src/utils.js b/packages/reed-solomon/src/utils.js index 55f81d2b..91fcdc7f 100644 --- a/packages/reed-solomon/src/utils.js +++ b/packages/reed-solomon/src/utils.js @@ -1,4 +1,5 @@ import { encode } from '@ethersproject/base64'; +export { sha256 } from 'ethereum-cryptography/sha256.js'; export function concat(a, b) { let res = []; diff --git a/packages/reed-solomon/src/web.adapter.js b/packages/reed-solomon/src/web.adapter.js new file mode 100644 index 00000000..9374b1ea --- /dev/null +++ b/packages/reed-solomon/src/web.adapter.js @@ -0,0 +1,100 @@ +import { ReedSolomon } from '.'; +import { sha256, getIntegrityUint8Array, toBase64, splitPrice } from './utils'; + +export class WebAdapterReedSolomon extends ReedSolomon { + async encodeInWorker(workerFn, sourceData, { webAdapterUrl, utilsUrl }) { + const chunkList = splitPrice(sourceData, this.segmentSize); + + const workers = []; + + for (let i = 0; i < chunkList.length; i++) { + // const worker = new Worker('worker.js'); + const worker = createWorker(workerFn, { + webAdapterUrl, + utilsUrl, + }); + workers.push(worker); + worker.postMessage({ + index: i, + chunk: chunkList[i], + }); + } + + const plist = workers.map( + (worker) => + new Promise((resolve) => { + worker.onmessage = (e) => { + resolve(e.data); + }; + }), + ); + + return Promise.all(plist).then((RES) => { + let hashList = []; + let segChecksumList = []; + let encodeDataHashList = new Array(this.totalShards); + for (let i = 0; i < encodeDataHashList.length; i++) { + encodeDataHashList[i] = []; + } + + for (let i = 0; i < RES.length; i++) { + segChecksumList.push(RES[i].segChecksum); + } + + for (let i = 0; i < chunkList.length; i++) { + for (let j = 0; j < encodeDataHashList.length; j++) { + encodeDataHashList[j][i] = RES[i].encodeDataHash[j]; + } + } + + hashList[0] = sha256(getIntegrityUint8Array(segChecksumList)); + + for (let i = 0; i < encodeDataHashList.length; i++) { + hashList[i + 1] = sha256(getIntegrityUint8Array(encodeDataHashList[i])); + } + + const res = toBase64(hashList); + + return res; + }); + } +} + +function createWorker(f, { webAdapterUrl, utilsUrl }) { + var blob = new Blob([ + '(' + f.toString() + ')(' + `'${webAdapterUrl}'` + ',' + `'${utilsUrl}'` + ')', + ]); + var url = window.URL.createObjectURL(blob); + var worker = new Worker(url); + return worker; +} + +// inject worker script +export function injectWorker(cdnsUrls) { + importScripts( + cdnsUrls.webAdapterUrl || + 'https://cdn.jsdelivr.net/npm/@bnb-chain/reed-solomon/dist/index.aio.js', + ); + importScripts('https://cdn.jsdelivr.net/npm/@bnb-chain/reed-solomon/dist/utils.aio.js'); + + const rs = new WebAdapter.WebAdapterReedSolomon(); + + onmessage = function (event) { + const { index, chunk } = event.data; + const encodeShards = rs.encodeSegment(chunk); + let encodeDataHash = []; + + for (let i = 0; i < encodeShards.length; i++) { + const priceHash = RSUtils.sha256(encodeShards[i]); + encodeDataHash.push(priceHash); + } + + postMessage({ + index, + segChecksum: RSUtils.sha256(chunk), + encodeDataHash, + }); + + self.close(); + }; +} diff --git a/packages/reed-solomon/types/index.d.ts b/packages/reed-solomon/types/index.d.ts index 1a0251a5..abff184a 100644 --- a/packages/reed-solomon/types/index.d.ts +++ b/packages/reed-solomon/types/index.d.ts @@ -7,7 +7,3 @@ declare module '@bnb-chain/reed-solomon' { encode(data: Uint8Arary): string[]; } } - -// declare class NodeAdapterReedSolomon { -// encodeInWorker(p: string, data: Uint8Array): Promise; -// } diff --git a/packages/reed-solomon/types/web.adapter.d.ts b/packages/reed-solomon/types/web.adapter.d.ts new file mode 100644 index 00000000..e965106a --- /dev/null +++ b/packages/reed-solomon/types/web.adapter.d.ts @@ -0,0 +1,14 @@ +declare module '@bnb-chain/reed-solomon/web.adapter' { + export class WebAdapterReedSolomon { + encodeInWorker( + workerFn: () => void, + data: Uint8Array, + cdnUrls: { + webAdapterUrl: string; + utilsUrl: string; + }, + ): Promise; + } + + export function injectWorker(cdnsUrls?: { webAdapterUrl: string; utilsUrl: string }): void; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9bc82386..ddc78440 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -147,6 +147,9 @@ importers: '@bnb-chain/greenfiled-file-handle': specifier: workspace:* version: link:../../packages/file-handle + '@bnb-chain/reed-solomon': + specifier: workspace:* + version: link:../../packages/reed-solomon '@cosmjs/encoding': specifier: ^0.32.0 version: 0.32.0 From dce67c474bcf5e6e72f76a015121060a1da42a9c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 20 Dec 2023 00:56:26 +0800 Subject: [PATCH 343/433] chore: [ci] release (alpha) (#430) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/reed-solomon/CHANGELOG.md | 8 ++++++++ packages/reed-solomon/package.json | 14 ++++++++++---- 7 files changed, 37 insertions(+), 6 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 65bd871f..62f0b302 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -13,6 +13,7 @@ }, "changesets": [ "beige-beds-lay", + "dirty-buttons-care", "early-kids-remain", "eighty-foxes-train", "gold-tigers-taste", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index c49204cc..b5d14dfc 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.17-alpha.4 + +### Patch Changes + +- Updated dependencies + [[`afb5464`](https://github.com/bnb-chain/greenfield-js-sdk/commit/afb54644683c8da508d250731a6462676cf44747)]: + - @bnb-chain/reed-solomon@1.0.1-alpha.1 + ## 0.0.17-alpha.3 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index a3dd3282..3faccdce 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.17-alpha.3", + "version": "0.0.17-alpha.4", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 27d7cc8f..1c3a0873 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.20-alpha.4 + +### Patch Changes + +- Updated dependencies + [[`afb5464`](https://github.com/bnb-chain/greenfield-js-sdk/commit/afb54644683c8da508d250731a6462676cf44747)]: + - @bnb-chain/reed-solomon@1.0.1-alpha.1 + ## 0.0.20-alpha.3 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 43314d65..c7882b6b 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.20-alpha.3", + "version": "0.0.20-alpha.4", "type": "commonjs", "private": true, "scripts": {}, diff --git a/packages/reed-solomon/CHANGELOG.md b/packages/reed-solomon/CHANGELOG.md index 9a9f41eb..819eebc2 100644 --- a/packages/reed-solomon/CHANGELOG.md +++ b/packages/reed-solomon/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/reed-solomon +## 1.0.1-alpha.1 + +### Patch Changes + +- [#429](https://github.com/bnb-chain/greenfield-js-sdk/pull/429) + [`afb5464`](https://github.com/bnb-chain/greenfield-js-sdk/commit/afb54644683c8da508d250731a6462676cf44747) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Support Web Worker + ## 1.0.1-alpha.0 ### Patch Changes diff --git a/packages/reed-solomon/package.json b/packages/reed-solomon/package.json index efec1ab1..acbe5596 100644 --- a/packages/reed-solomon/package.json +++ b/packages/reed-solomon/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/reed-solomon", - "version": "1.0.1-alpha.0", + "version": "1.0.1-alpha.1", "description": "lighting implement for reed solomon", "module": "./dist/index.esm.js", "main": "./dist/index.js", @@ -34,9 +34,15 @@ }, "typesVersions": { "*": { - "node.adapter": ["./types/node.adapter.d.ts"], - "web.adapter": ["./types/web.adapter.d.ts"], - "utils": ["./types/utils.d.ts"] + "node.adapter": [ + "./types/node.adapter.d.ts" + ], + "web.adapter": [ + "./types/web.adapter.d.ts" + ], + "utils": [ + "./types/utils.d.ts" + ] } }, "scripts": { From 2e9fce0c5b3da426feb0d6b03d95450ac83a6491 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Wed, 20 Dec 2023 01:39:51 +0800 Subject: [PATCH 344/433] Feat/rs webworker (#431) * chore: Update example, using reed solomon * chore: Update Rollup config * chore: Benchmark * docs: Update README * feat: Support WebWorker * feat: Add types * chore: Add benchmark * Merge branch 'alpha' into feat/rs_webworker --- .changeset/many-cars-jump.md | 5 ++ README.md | 2 +- packages/reed-solomon/README.md | 87 ++++++++++++++++--- packages/reed-solomon/benchmark.md | 15 +--- packages/reed-solomon/examples/node-worker.js | 16 ++++ packages/reed-solomon/examples/node.js | 15 ++++ .../reed-solomon/examples/web-worker.html | 63 ++++++++++++++ packages/reed-solomon/examples/web.html | 23 +---- packages/reed-solomon/package.json | 12 +-- packages/reed-solomon/src/web.adapter.js | 43 +-------- packages/reed-solomon/types/web.adapter.d.ts | 11 +-- 11 files changed, 190 insertions(+), 102 deletions(-) create mode 100644 .changeset/many-cars-jump.md create mode 100644 packages/reed-solomon/examples/node-worker.js create mode 100644 packages/reed-solomon/examples/node.js create mode 100644 packages/reed-solomon/examples/web-worker.html diff --git a/.changeset/many-cars-jump.md b/.changeset/many-cars-jump.md new file mode 100644 index 00000000..3d987e15 --- /dev/null +++ b/.changeset/many-cars-jump.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/reed-solomon': patch +--- + +feat: Add Types diff --git a/README.md b/README.md index f7bfc7ad..16319f3c 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ You can find some package documentation below: | Package | Description | Version | | --- | --- | --- | | [@bnb-chain/greenfield-js-sdk](./packages/js-sdk/README.md) | A client library for Greenfield Chain | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-js-sdk?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-js-sdk) | -| [@bnb-chain/greenfiled-file-handle](./packages/file-handle/README.md) | WASM module that handle file, such as `checksums` | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfiled-file-handle?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfiled-file-handle) | +| [@bnb-chain/reed-solomon](./packages/reed-solomon/README.md) | calculate file's `checksums` | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Freed-solomon?color=blue)](https://www.npmjs.com/package/@bnb-chain/reed-solomon) | | [@bnb-chain/greenfield-zk-crypto](./packages/zk-crypto/README.md) | WASM module about sign crypto | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-zk-crypto?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-zk-crypto) | | [@bnb-chain/create-gnfd-app](./packages/create-gnfd-app/README.md) | Create Greenfield App Quickly | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fcreate-gnfd-app?color=blue)](https://www.npmjs.com/package/@bnb-chain/create-gnfd-app) | diff --git a/packages/reed-solomon/README.md b/packages/reed-solomon/README.md index 647d9d0a..c62133d1 100644 --- a/packages/reed-solomon/README.md +++ b/packages/reed-solomon/README.md @@ -12,6 +12,17 @@ Compatible with [greenfield-common](https://github.com/bnb-chain/greenfield-comm ## Usage Examples +### ESM + +If you use module bundler such as [Webpack](https://webpack.js.org/), [Rollup](https://rollupjs.org/guide/en/), etc: + +```js +import {ReedSolomon} from '@bnb-chain/reed-solomon' + +const rs = new RS.ReedSolomon(); +const res = rs.encode(new Uint8Array(fileBuffer)) +``` + ### Browser Use directly in the browser via script tag: @@ -22,6 +33,7 @@ Use directly in the browser via script tag: get reed solomon + ``` -### ESM +[Code](./examples/web.html) -If you use module bundler such as [Webpack](https://webpack.js.org/), [Rollup](https://rollupjs.org/guide/en/), etc: +### Browser(WebWorker) -```js -import {ReedSolomon} from '@bnb-chain/reed-solomon' +```html + ``` +[Code](./examples/web-worker.html) + ### Nodejs +```js +const { ReedSolomon } = require('@bnb-chain/reed-solomon') + +const rs = new ReedSolomon(); +const res = await rs.encode(Uint8Array.from(fileBuffer)); +``` + +[Code](./examples/node.js) + +More examples: + +* [calcute several file in a folder](./examples/folder.js) + +### Nodejs(`worker_threads`) + Using in Nodejs: ```js @@ -62,5 +126,8 @@ const rs = new NodeAdapterReedSolomon(); const res = await rs.encodeInWorker(__filename, Uint8Array.from(fileBuffer)) ``` -* [calcute single file](./examples/singlefile.js) -* [calcute several file in a folder](./examples/folder.js) +[Code](./examples/node-worker.js) + +## Benchark + +[benchmark](./benchmark.md) diff --git a/packages/reed-solomon/benchmark.md b/packages/reed-solomon/benchmark.md index be874895..ce1f9180 100644 --- a/packages/reed-solomon/benchmark.md +++ b/packages/reed-solomon/benchmark.md @@ -1,16 +1,9 @@ # benchmarks -## 20M - -* Nodejs: 1s -* Nodejs(worker): 1s - -## 200M - -* Go: 300ms -* Nodejs: 10s -* Nodejs(worker): 2s -* Browser: 15s +| file size | [Nodejs](./examples/node.js) | [Nodejs(worker_threads)](./examples/node-worker.js) | [Browser](./examples/web.html) | [Browser(webworker)](./examples/web-worker.html) | +| - | - | - | - | - | +| 20M | 1s | 1s | 1.6s | 1.3s | +| 200M | 10s | 2s | 15s | 2.2s | ## conclusion diff --git a/packages/reed-solomon/examples/node-worker.js b/packages/reed-solomon/examples/node-worker.js new file mode 100644 index 00000000..712a27d7 --- /dev/null +++ b/packages/reed-solomon/examples/node-worker.js @@ -0,0 +1,16 @@ +/* eslint-disable */ +const fs = require('node:fs'); +const path = require('node:path'); +const { NodeAdapterReedSolomon } = require('../dist/node.adapter'); + +const fileBuffer = fs.readFileSync('./README.md'); + +(async () => { + const rs = new NodeAdapterReedSolomon(); + + console.time('cost worker_threads'); + console.log('file size', sourceData.length / 1024 / 1024, 'm'); + const res = await rs.encodeInWorker(__filename, Uint8Array.from(fileBuffer)); + console.log('res', res); + console.timeEnd('cost worker_threads'); +})(); diff --git a/packages/reed-solomon/examples/node.js b/packages/reed-solomon/examples/node.js new file mode 100644 index 00000000..372739bb --- /dev/null +++ b/packages/reed-solomon/examples/node.js @@ -0,0 +1,15 @@ +/* eslint-disable */ +const fs = require('node:fs'); +const path = require('node:path'); +const { ReedSolomon } = require('../dist/index'); + +const fileBuffer = fs.readFileSync('./README.md'); + +(async () => { + const rs = new ReedSolomon(); + console.log('file size', sourceData.length / 1024 / 1024, 'm'); + console.time('cost'); + const res = await rs.encode(Uint8Array.from(fileBuffer)); + console.log('res', res); + console.timeEnd('cost'); +})(); diff --git a/packages/reed-solomon/examples/web-worker.html b/packages/reed-solomon/examples/web-worker.html new file mode 100644 index 00000000..eadede31 --- /dev/null +++ b/packages/reed-solomon/examples/web-worker.html @@ -0,0 +1,63 @@ + + + + + + RS webworker + + + + + + + + + + + diff --git a/packages/reed-solomon/examples/web.html b/packages/reed-solomon/examples/web.html index 03385091..99c61eb6 100644 --- a/packages/reed-solomon/examples/web.html +++ b/packages/reed-solomon/examples/web.html @@ -3,7 +3,7 @@ - Document + RS @@ -12,13 +12,7 @@ get reed solomon - - - - diff --git a/packages/reed-solomon/package.json b/packages/reed-solomon/package.json index acbe5596..18f1472c 100644 --- a/packages/reed-solomon/package.json +++ b/packages/reed-solomon/package.json @@ -34,15 +34,9 @@ }, "typesVersions": { "*": { - "node.adapter": [ - "./types/node.adapter.d.ts" - ], - "web.adapter": [ - "./types/web.adapter.d.ts" - ], - "utils": [ - "./types/utils.d.ts" - ] + "node.adapter": ["./types/node.adapter.d.ts"], + "web.adapter": ["./types/web.adapter.d.ts"], + "utils": ["./types/utils.d.ts"] } }, "scripts": { diff --git a/packages/reed-solomon/src/web.adapter.js b/packages/reed-solomon/src/web.adapter.js index 9374b1ea..75cca210 100644 --- a/packages/reed-solomon/src/web.adapter.js +++ b/packages/reed-solomon/src/web.adapter.js @@ -2,17 +2,14 @@ import { ReedSolomon } from '.'; import { sha256, getIntegrityUint8Array, toBase64, splitPrice } from './utils'; export class WebAdapterReedSolomon extends ReedSolomon { - async encodeInWorker(workerFn, sourceData, { webAdapterUrl, utilsUrl }) { + async encodeInWorker(workerFn, sourceData) { const chunkList = splitPrice(sourceData, this.segmentSize); const workers = []; for (let i = 0; i < chunkList.length; i++) { // const worker = new Worker('worker.js'); - const worker = createWorker(workerFn, { - webAdapterUrl, - utilsUrl, - }); + const worker = createWorker(workerFn); workers.push(worker); worker.postMessage({ index: i, @@ -60,41 +57,9 @@ export class WebAdapterReedSolomon extends ReedSolomon { } } -function createWorker(f, { webAdapterUrl, utilsUrl }) { - var blob = new Blob([ - '(' + f.toString() + ')(' + `'${webAdapterUrl}'` + ',' + `'${utilsUrl}'` + ')', - ]); +function createWorker(f) { + var blob = new Blob(['(' + f.toString() + ')()']); var url = window.URL.createObjectURL(blob); var worker = new Worker(url); return worker; } - -// inject worker script -export function injectWorker(cdnsUrls) { - importScripts( - cdnsUrls.webAdapterUrl || - 'https://cdn.jsdelivr.net/npm/@bnb-chain/reed-solomon/dist/index.aio.js', - ); - importScripts('https://cdn.jsdelivr.net/npm/@bnb-chain/reed-solomon/dist/utils.aio.js'); - - const rs = new WebAdapter.WebAdapterReedSolomon(); - - onmessage = function (event) { - const { index, chunk } = event.data; - const encodeShards = rs.encodeSegment(chunk); - let encodeDataHash = []; - - for (let i = 0; i < encodeShards.length; i++) { - const priceHash = RSUtils.sha256(encodeShards[i]); - encodeDataHash.push(priceHash); - } - - postMessage({ - index, - segChecksum: RSUtils.sha256(chunk), - encodeDataHash, - }); - - self.close(); - }; -} diff --git a/packages/reed-solomon/types/web.adapter.d.ts b/packages/reed-solomon/types/web.adapter.d.ts index e965106a..ecb48500 100644 --- a/packages/reed-solomon/types/web.adapter.d.ts +++ b/packages/reed-solomon/types/web.adapter.d.ts @@ -1,14 +1,5 @@ declare module '@bnb-chain/reed-solomon/web.adapter' { export class WebAdapterReedSolomon { - encodeInWorker( - workerFn: () => void, - data: Uint8Array, - cdnUrls: { - webAdapterUrl: string; - utilsUrl: string; - }, - ): Promise; + encodeInWorker(workerFn: () => void, data: Uint8Array): Promise; } - - export function injectWorker(cdnsUrls?: { webAdapterUrl: string; utilsUrl: string }): void; } From fdf3f08c3139e2e0cdba33b5d8cc0296886aeefc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 20 Dec 2023 01:42:50 +0800 Subject: [PATCH 345/433] chore: [ci] release (alpha) (#432) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/reed-solomon/CHANGELOG.md | 8 ++++++++ packages/reed-solomon/package.json | 14 ++++++++++---- 7 files changed, 37 insertions(+), 6 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 62f0b302..46ab9c1b 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -18,6 +18,7 @@ "eighty-foxes-train", "gold-tigers-taste", "happy-ears-tap", + "many-cars-jump", "shaggy-cups-care", "tricky-chicken-knock" ] diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index b5d14dfc..f722a543 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.17-alpha.5 + +### Patch Changes + +- Updated dependencies + [[`2e9fce0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e9fce0c5b3da426feb0d6b03d95450ac83a6491)]: + - @bnb-chain/reed-solomon@1.0.1-alpha.2 + ## 0.0.17-alpha.4 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 3faccdce..89801765 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.17-alpha.4", + "version": "0.0.17-alpha.5", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 1c3a0873..1c8943d8 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.20-alpha.5 + +### Patch Changes + +- Updated dependencies + [[`2e9fce0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e9fce0c5b3da426feb0d6b03d95450ac83a6491)]: + - @bnb-chain/reed-solomon@1.0.1-alpha.2 + ## 0.0.20-alpha.4 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index c7882b6b..ff9511b0 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.20-alpha.4", + "version": "0.0.20-alpha.5", "type": "commonjs", "private": true, "scripts": {}, diff --git a/packages/reed-solomon/CHANGELOG.md b/packages/reed-solomon/CHANGELOG.md index 819eebc2..87764dc4 100644 --- a/packages/reed-solomon/CHANGELOG.md +++ b/packages/reed-solomon/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/reed-solomon +## 1.0.1-alpha.2 + +### Patch Changes + +- [#431](https://github.com/bnb-chain/greenfield-js-sdk/pull/431) + [`2e9fce0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e9fce0c5b3da426feb0d6b03d95450ac83a6491) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add Types + ## 1.0.1-alpha.1 ### Patch Changes diff --git a/packages/reed-solomon/package.json b/packages/reed-solomon/package.json index 18f1472c..1af56a21 100644 --- a/packages/reed-solomon/package.json +++ b/packages/reed-solomon/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/reed-solomon", - "version": "1.0.1-alpha.1", + "version": "1.0.1-alpha.2", "description": "lighting implement for reed solomon", "module": "./dist/index.esm.js", "main": "./dist/index.js", @@ -34,9 +34,15 @@ }, "typesVersions": { "*": { - "node.adapter": ["./types/node.adapter.d.ts"], - "web.adapter": ["./types/web.adapter.d.ts"], - "utils": ["./types/utils.d.ts"] + "node.adapter": [ + "./types/node.adapter.d.ts" + ], + "web.adapter": [ + "./types/web.adapter.d.ts" + ], + "utils": [ + "./types/utils.d.ts" + ] } }, "scripts": { From b2bc413cf3e008dde22104e0948b272b8cbb347c Mon Sep 17 00:00:00 2001 From: rrr523 Date: Wed, 20 Dec 2023 01:55:36 +0800 Subject: [PATCH 346/433] chore: Exit pre --- .changeset/pre.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 62f0b302..b381c794 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -1,5 +1,5 @@ { - "mode": "pre", + "mode": "exit", "tag": "alpha", "initialVersions": { "greenfield-js-sdk-docs": "0.0.0", From 1de16fff0ab1a5ec7259a350631171afc58e39d0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 20 Dec 2023 02:04:40 +0800 Subject: [PATCH 347/433] chore: [ci] release (#433) Co-authored-by: github-actions[bot] --- .changeset/beige-beds-lay.md | 5 ----- .changeset/dirty-buttons-care.md | 5 ----- .changeset/early-kids-remain.md | 5 ----- .changeset/eighty-foxes-train.md | 5 ----- .changeset/gold-tigers-taste.md | 5 ----- .changeset/happy-ears-tap.md | 5 ----- .changeset/many-cars-jump.md | 5 ----- .changeset/pre.json | 25 ------------------------- .changeset/shaggy-cups-care.md | 5 ----- .changeset/tricky-chicken-knock.md | 6 ------ examples/nextjs/CHANGELOG.md | 17 +++++++++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 17 +++++++++++++++++ examples/nodejs/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 23 +++++++++++++++++++++++ packages/js-sdk/package.json | 2 +- packages/reed-solomon/CHANGELOG.md | 24 ++++++++++++++++++++++++ packages/reed-solomon/package.json | 2 +- 18 files changed, 85 insertions(+), 75 deletions(-) delete mode 100644 .changeset/beige-beds-lay.md delete mode 100644 .changeset/dirty-buttons-care.md delete mode 100644 .changeset/early-kids-remain.md delete mode 100644 .changeset/eighty-foxes-train.md delete mode 100644 .changeset/gold-tigers-taste.md delete mode 100644 .changeset/happy-ears-tap.md delete mode 100644 .changeset/many-cars-jump.md delete mode 100644 .changeset/pre.json delete mode 100644 .changeset/shaggy-cups-care.md delete mode 100644 .changeset/tricky-chicken-knock.md diff --git a/.changeset/beige-beds-lay.md b/.changeset/beige-beds-lay.md deleted file mode 100644 index 8038afa6..00000000 --- a/.changeset/beige-beds-lay.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@bnb-chain/reed-solomon": patch ---- - -js reed solomon diff --git a/.changeset/dirty-buttons-care.md b/.changeset/dirty-buttons-care.md deleted file mode 100644 index b2cbcb65..00000000 --- a/.changeset/dirty-buttons-care.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/reed-solomon': patch ---- - -feat: Support Web Worker diff --git a/.changeset/early-kids-remain.md b/.changeset/early-kids-remain.md deleted file mode 100644 index ba30f872..00000000 --- a/.changeset/early-kids-remain.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Add SP create API types diff --git a/.changeset/eighty-foxes-train.md b/.changeset/eighty-foxes-train.md deleted file mode 100644 index d8ee3988..00000000 --- a/.changeset/eighty-foxes-train.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -chore: Remove engines filed in package.json diff --git a/.changeset/gold-tigers-taste.md b/.changeset/gold-tigers-taste.md deleted file mode 100644 index ca43894c..00000000 --- a/.changeset/gold-tigers-taste.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/reed-solomon': patch ---- - -feat: Add types diff --git a/.changeset/happy-ears-tap.md b/.changeset/happy-ears-tap.md deleted file mode 100644 index a9fd7ec6..00000000 --- a/.changeset/happy-ears-tap.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/reed-solomon': patch ---- - -feat: Nodejs Support Worker diff --git a/.changeset/many-cars-jump.md b/.changeset/many-cars-jump.md deleted file mode 100644 index 3d987e15..00000000 --- a/.changeset/many-cars-jump.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/reed-solomon': patch ---- - -feat: Add Types diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index 96ca7551..00000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "mode": "exit", - "tag": "alpha", - "initialVersions": { - "greenfield-js-sdk-docs": "0.0.0", - "@demo/wallet": "0.0.16", - "@demo/nodejs": "0.0.19", - "@bnb-chain/create-gnfd-app": "1.0.0", - "@bnb-chain/greenfiled-file-handle": "1.0.2", - "@bnb-chain/greenfield-js-sdk": "1.0.6", - "@bnb-chain/greenfield-zk-crypto": "1.0.0", - "@bnb-chain/reed-solomon": "1.0.0" - }, - "changesets": [ - "beige-beds-lay", - "dirty-buttons-care", - "early-kids-remain", - "eighty-foxes-train", - "gold-tigers-taste", - "happy-ears-tap", - "many-cars-jump", - "shaggy-cups-care", - "tricky-chicken-knock" - ] -} diff --git a/.changeset/shaggy-cups-care.md b/.changeset/shaggy-cups-care.md deleted file mode 100644 index 40aad295..00000000 --- a/.changeset/shaggy-cups-care.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Add bucket meta types diff --git a/.changeset/tricky-chicken-knock.md b/.changeset/tricky-chicken-knock.md deleted file mode 100644 index 02f49815..00000000 --- a/.changeset/tricky-chicken-knock.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': minor ---- - -feat(BREAKING CHANGE): create group / bucket / object must have `tags` arguments and supply `setMsg` -method to update tags. diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index f722a543..da4d0aee 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,22 @@ # @demo/wallet +## 0.0.17 + +### Patch Changes + +- Updated dependencies + [[`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f), + [`afb5464`](https://github.com/bnb-chain/greenfield-js-sdk/commit/afb54644683c8da508d250731a6462676cf44747), + [`a999960`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a9999603b3a66e360952580da09716e85d26cc5c), + [`a940e06`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a940e065954aadd021c76bcb59be69254f50735e), + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f), + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f), + [`2e9fce0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e9fce0c5b3da426feb0d6b03d95450ac83a6491), + [`d579137`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d579137fd6ecd0d226f4d79fcc0b3f9b44f8952b), + [`47d59a1`](https://github.com/bnb-chain/greenfield-js-sdk/commit/47d59a1355b0a7788727daaf077a644206ffcc05)]: + - @bnb-chain/reed-solomon@1.0.1 + - @bnb-chain/greenfield-js-sdk@1.1.0 + ## 0.0.17-alpha.5 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 89801765..cc0db30d 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.17-alpha.5", + "version": "0.0.17", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 1c8943d8..5296b4e7 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,22 @@ # @demo/nodejs +## 0.0.20 + +### Patch Changes + +- Updated dependencies + [[`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f), + [`afb5464`](https://github.com/bnb-chain/greenfield-js-sdk/commit/afb54644683c8da508d250731a6462676cf44747), + [`a999960`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a9999603b3a66e360952580da09716e85d26cc5c), + [`a940e06`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a940e065954aadd021c76bcb59be69254f50735e), + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f), + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f), + [`2e9fce0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e9fce0c5b3da426feb0d6b03d95450ac83a6491), + [`d579137`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d579137fd6ecd0d226f4d79fcc0b3f9b44f8952b), + [`47d59a1`](https://github.com/bnb-chain/greenfield-js-sdk/commit/47d59a1355b0a7788727daaf077a644206ffcc05)]: + - @bnb-chain/reed-solomon@1.0.1 + - @bnb-chain/greenfield-js-sdk@1.1.0 + ## 0.0.20-alpha.5 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index ff9511b0..9a37fc59 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.20-alpha.5", + "version": "0.0.20", "type": "commonjs", "private": true, "scripts": {}, diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index dcb830ff..5540cf3c 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,28 @@ # @bnb-chain/greenfield-js-sdk +## 1.1.0 + +### Minor Changes + +- [#413](https://github.com/bnb-chain/greenfield-js-sdk/pull/413) + [`47d59a1`](https://github.com/bnb-chain/greenfield-js-sdk/commit/47d59a1355b0a7788727daaf077a644206ffcc05) + Thanks [@rrr523](https://github.com/rrr523)! - feat(BREAKING CHANGE): create group / bucket / + object must have `tags` arguments and supply `setMsg` method to update tags. + +### Patch Changes + +- [#424](https://github.com/bnb-chain/greenfield-js-sdk/pull/424) + [`a999960`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a9999603b3a66e360952580da09716e85d26cc5c) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add SP create API types + +- [#418](https://github.com/bnb-chain/greenfield-js-sdk/pull/418) + [`a940e06`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a940e065954aadd021c76bcb59be69254f50735e) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Remove engines filed in package.json + +- [#427](https://github.com/bnb-chain/greenfield-js-sdk/pull/427) + [`d579137`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d579137fd6ecd0d226f4d79fcc0b3f9b44f8952b) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add bucket meta types + ## 1.1.0-alpha.3 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index ea62cc3e..2107c91c 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.1.0-alpha.3", + "version": "1.1.0", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", diff --git a/packages/reed-solomon/CHANGELOG.md b/packages/reed-solomon/CHANGELOG.md index 87764dc4..b1105310 100644 --- a/packages/reed-solomon/CHANGELOG.md +++ b/packages/reed-solomon/CHANGELOG.md @@ -1,5 +1,29 @@ # @bnb-chain/reed-solomon +## 1.0.1 + +### Patch Changes + +- [#422](https://github.com/bnb-chain/greenfield-js-sdk/pull/422) + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f) + Thanks [@rrr523](https://github.com/rrr523)! - js reed solomon + +- [#429](https://github.com/bnb-chain/greenfield-js-sdk/pull/429) + [`afb5464`](https://github.com/bnb-chain/greenfield-js-sdk/commit/afb54644683c8da508d250731a6462676cf44747) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Support Web Worker + +- [#422](https://github.com/bnb-chain/greenfield-js-sdk/pull/422) + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add types + +- [#422](https://github.com/bnb-chain/greenfield-js-sdk/pull/422) + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Nodejs Support Worker + +- [#431](https://github.com/bnb-chain/greenfield-js-sdk/pull/431) + [`2e9fce0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e9fce0c5b3da426feb0d6b03d95450ac83a6491) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add Types + ## 1.0.1-alpha.2 ### Patch Changes diff --git a/packages/reed-solomon/package.json b/packages/reed-solomon/package.json index 1af56a21..c42f6682 100644 --- a/packages/reed-solomon/package.json +++ b/packages/reed-solomon/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/reed-solomon", - "version": "1.0.1-alpha.2", + "version": "1.0.1", "description": "lighting implement for reed solomon", "module": "./dist/index.esm.js", "main": "./dist/index.js", From 773961c78e06a184579773c020bd65a5a8beed9f Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Wed, 20 Dec 2023 02:21:34 +0800 Subject: [PATCH 348/433] Release 1.2.0 (#434) * chore(example): BucketPolicy (#127) * Chore/update policy example (#128) * chore(example): BucketPolicy * chore(example): BucketPolicy * Feat/gashub (#129) * feat: Add gas hub API * refactor: TypeUrl as constants * chore: [ci] release (alpha) (#130) Co-authored-by: github-actions[bot] * feat: Export queryClient (#131) * feat: Export queryClient * Create calm-birds-sleep.md * Update README.md * fix: Compatiable net error (#133) * fix: Compatiable net error * Create old-roses-play.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#132) Co-authored-by: github-actions[bot] * Test/test case (#134) * feat: Isomorphic fetch * test: Uint test and e2e test * feat: Sync Types (#136) * feat: Sync Types * Create weak-hounds-sell.md * chore: [ci] release (alpha) (#135) Co-authored-by: github-actions[bot] * Fix/sort types (#137) * feat: Sort EIP712 message field * feat: Extra field * Create happy-humans-thank.md * chore: [ci] release (alpha) (#138) Co-authored-by: github-actions[bot] * feat: Bump version (#139) * chore: [ci] release (alpha) (#140) Co-authored-by: github-actions[bot] * feat: Split approval and simulate (#141) * chore: [ci] release (alpha) (#142) Co-authored-by: github-actions[bot] * Revert "feat: Split approval and simulate" (#143) * Revert "feat: Split approval and simulate" This reverts commit 76defa7f31b7f2d4683f8ed04e8dc2786dd1ef6c. * Create dirty-parrots-hear.md * chore: [ci] release (alpha) (#144) Co-authored-by: github-actions[bot] * Chore/test case (#145) * chore(test): Remove private key from config * chore: Test CI * chore: Update rainkit version (#146) * feat: Query Lock Fee API (#147) * feat: Query Lock Fee API * Create green-avocados-jump.md * chore: [ci] release (alpha) (#148) Co-authored-by: github-actions[bot] * Update bucket.ts (#149) * Update bucket.ts throw error * Create hot-countries-begin.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#150) Co-authored-by: github-actions[bot] * fix: Return real statuscode when call metaservice (#164) * fix: Return real statuscode when call metaservice * Create kind-eyes-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#166) Co-authored-by: github-actions[bot] * feat: Upgrade types version (#167) * chore: [ci] release (alpha) (#168) Co-authored-by: github-actions[bot] * Feat/sp exit (#169) * feat: Add Virtual Group API * feat: Compatibility createBukcet and createObject API * feat: Add Migrate bucket API * Feat/batch upload (#171) * feat: Feegrant * feat: Feegrant * Create angry-horses-enjoy.md * Feat/batch upload (#174) * feat: Feegrant * feat: Feegrant * feat: Feegrant grantAllowance API * feat: CreateObject example * feat: CreateBucket example * feat: Transfer example * feat: AuthInfoBytes add feePayer and feeGranter * feat: Add Two Apis (#179) * feat: Add Two Apis * Create mean-wombats-remain.md * chore: [ci] release (alpha) (#170) Co-authored-by: github-actions[bot] * feat AuthV1 (#182) * chore: Update example * chore: Update Example * feat: V1Auth * feat: V1Auth generate * feat: V1Auth createObject Approval * Create shaggy-experts-approve.md * Feat/com new (#186) * feat: Remove GetUserBuckets API Auth * feat: Update BucketProps type * feat: Remove listObjects api auth and update response type * feat: Remove listGroup api auth * feat: Update Types * chore: [ci] release (alpha) (#183) Co-authored-by: github-actions[bot] * feat: Offchainauth timeout reduced to 2s (#187) * feat: Offchainauth timeout reduced to 2s * Create warm-planets-exercise.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#188) Co-authored-by: github-actions[bot] * Feat/auth v1 (#189) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * Create empty-pens-sing.md * chore: [ci] release (alpha) (#190) Co-authored-by: github-actions[bot] * Feat/auth v1 (#191) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * feat: API getStorageProviderInfo params update * chore: Upgrade types * feat: GetSpURLfrom bucket * feat: Remove Sp param when create object and bucket * chore: [ci] release (alpha) (#192) Co-authored-by: github-actions[bot] * feat: Change Allwance value type (#193) * chore: Test config update * feat: Change Allowance Type * chore: [ci] release (alpha) (#194) Co-authored-by: github-actions[bot] * feat: MultiTx support private key (#195) * fix: Throw sp error code and message (#197) * fix: Throw sp error code and message * Create good-bobcats-hang.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#196) Co-authored-by: github-actions[bot] * fix: No sp available error (#200) * fix: No sp available error * Create khaki-ducks-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Opt (#198) * chore: Update Example * refactor: Replace @ethereumjs/util with @ethersproject/bytes * feat: Upload Object V1 auth * fix: CreateObjectTx content-type msg * chore: [ci] release (alpha) (#201) Co-authored-by: github-actions[bot] * feat: Extend response time to 3s (#202) * feat: Extend response time to 3s * Create orange-spiders-add.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#203) Co-authored-by: github-actions[bot] * Chore/conflict (#209) * release 0.2.2 (#204) * feat: Update Types * chore: [ci] release (alpha) * Feat/query status (#42) * fix: Return types * feat: Feegrant * fix: Pubkey typeUrl * feat: Upgrade Cosmos SDK * refactor: Simply broadcast and simulate tx * feat: Support Tx by PrivateKey * feat: Replace local message with types npm * test: Test Framework * chore: Upgrade Example wagmi version, Replace ethersjs with viem * feat: Support EIP712 callback use external provider * feat: Support dynamic provider * test: Support jest test * test: Account Query * feat: Change Tx API * feat: Type Complete * chore: Complate Example in New API * fix: Rollup bundle Support Nodejs * feat: Resolute Module (IoC) * docs: Update README * chore: [ci] release (alpha) (#43) Co-authored-by: github-actions[bot] * Feat/multi msg (#49) * feat: Multi Send * feat: Compatibility multi tx message * Revert "Feat/multi msg (#49)" (#53) This reverts commit fc3dd986646624c81f3cc43bdffb02e70d170b4f. * Update WASM (#55) * feat: Update WASM * feat: Update create object tx * docs: Update doc (#56) * feat: Pre alpha (#57) * chore: [ci] release (alpha) (#58) Co-authored-by: github-actions[bot] * Update README.md * multi msg (#59) * feat: Multi Send * feat: Compatibility multi tx message * chore: [ci] release (alpha) (#62) Co-authored-by: github-actions[bot] * fix: CreateObject Msg (#65) * feat: add offchainauth method (#64) * feat: Add offchainauth method * feat: Compatiable old get approval method * Create ten-suits-crash.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> Co-authored-by: rrr523 * chore: [ci] release (alpha) (#66) Co-authored-by: github-actions[bot] * feat: Add Sp params (#67) * feat: Optimize get approval types and add throw error (#70) * feat: Optimize get approval types and add throw error * Create fluffy-snails-explain.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#68) Co-authored-by: github-actions[bot] * chore: Update example without greenfield-cosmos-types (#71) * fix: Return Promise (#72) * fix: Return Promise * Create strong-snails-count.md * chore: [ci] release (alpha) (#73) Co-authored-by: github-actions[bot] * fix: Create Group message (#74) * fix: Create Group message * Create young-bears-scream.md * feat: Add Storage Params API (#76) * chore: [ci] release (alpha) (#75) Co-authored-by: github-actions[bot] * Chore/group example (#77) * feat: Group API * chore: Group and Mirror example * chore: [ci] release (alpha) (#78) Co-authored-by: github-actions[bot] * chore: Update example (#79) * feat: Add query param to ListObjects API for display folder. (#80) * feat: Add query params to ListObjects API for folder * Create clean-dogs-joke.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/group (#82) * chore: Update Example * feat: Add some group API * Create sweet-feet-hide.md * chore: [ci] release (alpha) (#81) Co-authored-by: github-actions[bot] * Update objectt.ts (#83) * Update objectt.ts add missing resp params * Create cold-suns-accept.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/policy (#86) * feat: Policy API * fix: Object API name * Create pretty-bulldogs-notice.md * feat: Migrate out zkbas-js-sdk and upate the sign msg format (#85) * feat: Migrate out zkbas-js-sdk and upate the sign msg format * Create fluffy-pumas-yawn.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#84) Co-authored-by: github-actions[bot] * fix: Head Group (#96) * fix: Head Group * Create cyan-ties-cross.md * feat: Multi Send Txs (#97) * feat: Multi Send Txs * Create lovely-knives-smile.md * chore: [ci] release (alpha) (#98) Co-authored-by: github-actions[bot] * feat: Allow to have sp auth fail (#101) * feat: Allow to have sp auth fail * fix: Replace endpoint with address when auth failed * Create tidy-dodos-care.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: TS lib (#104) * feat: Sync cosmos types (#106) * chore: [ci] release (alpha) (#102) Co-authored-by: github-actions[bot] * chore: Use rainbowkit simply wallet of example (#107) * Feat/update group (#108) * feat: Update group extra api * chore: Test group api * Create quiet-planets-shop.md * chore: [ci] release (alpha) (#109) Co-authored-by: github-actions[bot] * Feat/sp listgroup (#110) * feat: Add sp.listGroup API * chore: Update Example * chore: [ci] release (alpha) (#111) Co-authored-by: github-actions[bot] * chore: Update Example (#112) * chore: Update Examples (#114) * chore(dep): Add cross-env * chore(dep): Npm script * chore: Pnpm engines * chore: Codesandbox Example (#115) * chore(docs): Update stackblitz url (#116) * refactor: CreateFoler API params (#119) * chore: [ci] release (alpha) (#120) Co-authored-by: github-actions[bot] * feat: TimeStamp format * chore: [ci] release (alpha) (#121) Co-authored-by: github-actions[bot] * Refactor/policy (#122) * refactor: Bucket policy * refactor: Bucket policy * chore: [ci] release (alpha) (#123) Co-authored-by: github-actions[bot] * chore(example): BucketPolicy (#127) * Chore/update policy example (#128) * chore(example): BucketPolicy * chore(example): BucketPolicy * Feat/gashub (#129) * feat: Add gas hub API * refactor: TypeUrl as constants * chore: [ci] release (alpha) (#130) Co-authored-by: github-actions[bot] * feat: Export queryClient (#131) * feat: Export queryClient * Create calm-birds-sleep.md * Update README.md * fix: Compatiable net error (#133) * fix: Compatiable net error * Create old-roses-play.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#132) Co-authored-by: github-actions[bot] * Test/test case (#134) * feat: Isomorphic fetch * test: Uint test and e2e test * feat: Sync Types (#136) * feat: Sync Types * Create weak-hounds-sell.md * chore: [ci] release (alpha) (#135) Co-authored-by: github-actions[bot] * Fix/sort types (#137) * feat: Sort EIP712 message field * feat: Extra field * Create happy-humans-thank.md * chore: [ci] release (alpha) (#138) Co-authored-by: github-actions[bot] * feat: Bump version (#139) * chore: [ci] release (alpha) (#140) Co-authored-by: github-actions[bot] * feat: Split approval and simulate (#141) * chore: [ci] release (alpha) (#142) Co-authored-by: github-actions[bot] * Revert "feat: Split approval and simulate" (#143) * Revert "feat: Split approval and simulate" This reverts commit 76defa7f31b7f2d4683f8ed04e8dc2786dd1ef6c. * Create dirty-parrots-hear.md * chore: [ci] release (alpha) (#144) Co-authored-by: github-actions[bot] * Chore/test case (#145) * chore(test): Remove private key from config * chore: Test CI * chore: Update rainkit version (#146) * feat: Query Lock Fee API (#147) * feat: Query Lock Fee API * Create green-avocados-jump.md * chore: [ci] release (alpha) (#148) Co-authored-by: github-actions[bot] * Update bucket.ts (#149) * Update bucket.ts throw error * Create hot-countries-begin.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#150) Co-authored-by: github-actions[bot] * fix: Return real statuscode when call metaservice (#164) * fix: Return real statuscode when call metaservice * Create kind-eyes-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#166) Co-authored-by: github-actions[bot] * feat: Upgrade types version (#167) * chore: [ci] release (alpha) (#168) Co-authored-by: github-actions[bot] * Feat/sp exit (#169) * feat: Add Virtual Group API * feat: Compatibility createBukcet and createObject API * feat: Add Migrate bucket API * Feat/batch upload (#171) * feat: Feegrant * feat: Feegrant * Create angry-horses-enjoy.md * Feat/batch upload (#174) * feat: Feegrant * feat: Feegrant * feat: Feegrant grantAllowance API * feat: CreateObject example * feat: CreateBucket example * feat: Transfer example * feat: AuthInfoBytes add feePayer and feeGranter * feat: Add Two Apis (#179) * feat: Add Two Apis * Create mean-wombats-remain.md * chore: [ci] release (alpha) (#170) Co-authored-by: github-actions[bot] * feat AuthV1 (#182) * chore: Update example * chore: Update Example * feat: V1Auth * feat: V1Auth generate * feat: V1Auth createObject Approval * Create shaggy-experts-approve.md * Feat/com new (#186) * feat: Remove GetUserBuckets API Auth * feat: Update BucketProps type * feat: Remove listObjects api auth and update response type * feat: Remove listGroup api auth * feat: Update Types * chore: [ci] release (alpha) (#183) Co-authored-by: github-actions[bot] * feat: Offchainauth timeout reduced to 2s (#187) * feat: Offchainauth timeout reduced to 2s * Create warm-planets-exercise.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#188) Co-authored-by: github-actions[bot] * Feat/auth v1 (#189) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * Create empty-pens-sing.md * chore: [ci] release (alpha) (#190) Co-authored-by: github-actions[bot] * Feat/auth v1 (#191) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * feat: API getStorageProviderInfo params update * chore: Upgrade types * feat: GetSpURLfrom bucket * feat: Remove Sp param when create object and bucket * chore: [ci] release (alpha) (#192) Co-authored-by: github-actions[bot] * feat: Change Allwance value type (#193) * chore: Test config update * feat: Change Allowance Type * chore: [ci] release (alpha) (#194) Co-authored-by: github-actions[bot] * feat: MultiTx support private key (#195) * fix: Throw sp error code and message (#197) * fix: Throw sp error code and message * Create good-bobcats-hang.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#196) Co-authored-by: github-actions[bot] * fix: No sp available error (#200) * fix: No sp available error * Create khaki-ducks-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Opt (#198) * chore: Update Example * refactor: Replace @ethereumjs/util with @ethersproject/bytes * feat: Upload Object V1 auth * fix: CreateObjectTx content-type msg * chore: [ci] release (alpha) (#201) Co-authored-by: github-actions[bot] * feat: Extend response time to 3s (#202) * feat: Extend response time to 3s * Create orange-spiders-add.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#203) Co-authored-by: github-actions[bot] --------- Co-authored-by: github-actions[bot] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> * chore: Pre exit (#205) * chore: [ci] release (#206) Co-authored-by: github-actions[bot] * chore: Rename package (#207) * chore: [ci] release (#208) Co-authored-by: github-actions[bot] --------- Co-authored-by: github-actions[bot] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> * Feat/payment (#210) * feat: Add Payment query API * fix: Create Payment Account * fix: Payment disableRefund * chore: Update Example * chore: [ci] release (alpha) (#211) Co-authored-by: github-actions[bot] * chore: Update README link (#214) * fix: Return Types (#213) * chore: Update withdraw example params (#212) * chore: Update withdraw example params * feat: Zk crypto wasm package * chore: Nodejs example update package * chore: Add comment * chore: Update UMD name * feat: Upgrade file handle package * chore: Update OffchainAuth example * feat: New Zk package * chore: Changeset (#215) * chore: [ci] release (alpha) (#216) Co-authored-by: github-actions[bot] * Feat/group api (#217) * fix: Dynamic add and delete members string array * chore: Release zk crypto * chore: [ci] release (alpha) (#218) Co-authored-by: github-actions[bot] * chore: Release zk crypto (#219) * chore: [ci] release (alpha) (#220) Co-authored-by: github-actions[bot] * fix: Zk version bump (#221) * chore: [ci] release (alpha) (#222) Co-authored-by: github-actions[bot] * fix: DeepClone EIP712 (#223) * chore: [ci] release (alpha) (#224) Co-authored-by: github-actions[bot] * fix: Error try catch (#230) * chore: [ci] release (alpha) (#231) Co-authored-by: github-actions[bot] * Feat/auth (#232) * feat: Compatibility new payment api * feat: Compatibility updateGroupMember api * chore: Update example * feat: Feegrant api add timestamp * feat: EDDSA Sign * feat: Remove log (#234) * chore: [ci] release (alpha) (#233) Co-authored-by: github-actions[bot] * fix: Feegrant add expiration time (#235) * fix: Feegrant add expiration time * chore(example): GetAllowence support pagination * refactor (#236) * refactor: Tx * fix: Type * feat: Add Group API * feat: Update Sp API * feat: Bucket add authType * feat: and add params * fix: Types * feat: Change type * chore: [ci] release (alpha) (#237) Co-authored-by: github-actions[bot] * Fix/read quota (#238) * fix: CreateBucketApproval * feat: ReadQuota * chore(example): Update Example * chore: [ci] release (alpha) (#239) Co-authored-by: github-actions[bot] * XML response (#240) * feat: Return XML type * feat: CreateBucket Add payment address * chore: [ci] release (alpha) (#241) Co-authored-by: github-actions[bot] * fix: XMLParser force array not object (#242) * Feat/export req (#243) * fix: XMLParser force array not object * fix: XMLParser force array not object * chore: [ci] release (alpha) (#244) Co-authored-by: github-actions[bot] * feat: Export types (#245) * Export types (#247) * feat: Export types * fix: Hex number convert to string not big number * chore: [ci] release (alpha) (#246) Co-authored-by: github-actions[bot] * Feat/up and down (#248) * feat: Upload Object add AuthType * feat: Download s3 object * feat: Migrate Bucket add authType * feat: SpClient expose makeHeaders method * chore: Update constant pathj * chore: [ci] release (alpha) (#249) Co-authored-by: github-actions[bot] * Feat/xml null (#250) * feat: Add default XML value * feat: Add default XML value * chore: [ci] release (alpha) (#251) Co-authored-by: github-actions[bot] * Fix/gap time (#252) * fix: Gap time * fix: Gap time * Feat/meta (#254) * feat: GetBucketMeta * feat: Object Meta * Create curly-fishes-bow.md * chore: [ci] release (alpha) (#253) Co-authored-by: github-actions[bot] * Refactor/sp client (#255) * chore: Exact parseError * feat: Remove deps * chore: Structor * feat: Refeactor Sp Client * chore: [ci] release (alpha) (#256) Co-authored-by: github-actions[bot] * feat: Custom HTTP method (#257) * feat: Custom HTTP method * chore(example): Update * chore: [ci] release (alpha) (#258) Co-authored-by: github-actions[bot] * chore(docs): Update README (#259) * chore: Add comment (#260) * fix: Sp types (#261) * Feat/upload progress (#263) * fix: GfSpGetUserBucketsResponse Bucket types * feat: Cross fetch * chore: [ci] release (alpha) (#262) Co-authored-by: github-actions[bot] * fix: EncodePath (#264) * chore: [ci] release (alpha) (#265) Co-authored-by: github-actions[bot] * fix: Download http method (#266) * fix: Download http method (#267) * chore: [ci] release (alpha) (#268) Co-authored-by: github-actions[bot] * feat: New API getObjectPreviewUrl (#270) * chore: [ci] release (alpha) (#271) Co-authored-by: github-actions[bot] * fix: XML type align to go struct (#272) * feat: Optional endpoint param (#273) * chore: [ci] release (alpha) (#274) Co-authored-by: github-actions[bot] * fix: XML parse boolean (#275) * chore: [ci] release (alpha) (#276) Co-authored-by: github-actions[bot] * fix: Common Prefix parse as array (#277) * chore: [ci] release (alpha) (#278) Co-authored-by: github-actions[bot] * test: Parse XML test case (#279) * feat: Migrate bucket (#280) * fix: Create bucket quota params (#282) * chore: [ci] release (alpha) (#281) Co-authored-by: github-actions[bot] * feat: Replace xml2js to fast-xml-parse (#283) * Feat/update bucket info (#284) * feat: Update Bucket Info API * chore(example): Update * chore: [ci] release (alpha) (#285) Co-authored-by: github-actions[bot] * fix: EncodePath function (#286) * fix: Convert enum to number (#287) * chore: [ci] release (alpha) (#288) Co-authored-by: github-actions[bot] * feat: Add listReadRecords api * feat: ListGroups API * feat: ListObjectsByIds API * feat: ListBucketsByIds api * feat: Add verifyPermission api * feat: ListGroupsMembers * feat: ListUserGroups api * feat: Add listUserOwnedGroups api * chore: [ci] release (alpha) * feat: Sort query (#292) * feat: Sort query * Create healthy-chicken-beam.md * chore: [ci] release (alpha) (#293) Co-authored-by: github-actions[bot] * chore(exmaple): Group (#294) * docs: Update API (#295) * chore: Pre Exit (#296) * Pre exit (#297) * chore: Pre Exit * chore: Pre Exit * chore: [ci] release (#298) Co-authored-by: github-actions[bot] * chore: Pre Enter (#299) * Refactor/sp (#302) * feat: Auth expiry timestamp add default value * refactor: Sp types * fix: Expire time * feat: Upgrade TinyGo version * Refactor/sp (#305) * feat: Auth expiry timestamp add default value * refactor: Sp types * fix: Expire time * feat: Upgrade TinyGo version * refactor: Sp metainfo * chore: Update Example * chore: [ci] release (alpha) (#303) Co-authored-by: github-actions[bot] * fix: Build (#306) * chore: Update Deps (#308) * chore: [ci] release (alpha) (#307) Co-authored-by: github-actions[bot] * docs: Update README (#309) * Feat/validator (#310) * feat: EditValidator * feat: Add proposal api * refactor: TxClient * feat: Bucket listBucketsByPaymentAccount api * fix: Proposal and Validator API * feat: ListUserPaymentAccount api * chore: [ci] release (alpha) (#311) Co-authored-by: github-actions[bot] * chore: Nodejs example update * test: Test case update * chore: README update * feat: ListBuckets * fix: QueryClient and TxClient is not singleton * chore: Upgrade types * fix: PutPolicy * feat: ListObjectPolicies api * chore: [ci] release (alpha) * fix: IOC (#314) fix: All class use injectable * chore: [ci] release (alpha) (#315) Co-authored-by: github-actions[bot] * chore: Update exmaple (#316) * feat: Distribution API (#317) * chore: [ci] release (alpha) (#318) Co-authored-by: github-actions[bot] * feat: MsgSettle (#319) * feat: MsgSettle * Create fast-houses-do.md * chore: [ci] release (alpha) (#320) Co-authored-by: github-actions[bot] * chore(example): Update custom tx (#321) * chore: [ci] release (alpha) (#322) Co-authored-by: github-actions[bot] * chore: Github Action issue close (#323) * feat: Bucket headBucketExtra api (#324) * chore: [ci] release (alpha) (#325) Co-authored-by: github-actions[bot] * chore: Nodejs Example update (#326) * chore: Example Update (#327) * Chore/example (#328) * chore: Example Update * chore: Example Update * chore: Update (#329) * feat: Custom Tx (#330) * chore: [ci] release (alpha) (#331) Co-authored-by: github-actions[bot] * fix: Delete Policy (#332) * chore: [ci] release (alpha) (#333) Co-authored-by: github-actions[bot] * Feat/create app (#334) * feat: Template Init * feat: Template Init * feat: Create App Commander * chore: [ci] release (alpha) (#335) Co-authored-by: github-actions[bot] * feat: Create App Commander (#336) * chore: [ci] release (alpha) (#337) Co-authored-by: github-actions[bot] * chore: Update README (#338) * feat: Add vite template (#339) * chore: [ci] release (alpha) (#340) Co-authored-by: github-actions[bot] * release 0.2.5 (#341) chore: Pre Exit * chore: [ci] release (#342) Co-authored-by: github-actions[bot] * chore: Enter pre (#343) * chore(docs): Update README (#344) * Chore/package (#346) * chore: Update package.json * chore: Update package.json * Chore/package js sdk (#347) * chore: Update deps * chore: Update deps * chore: [ci] release (alpha) (#348) Co-authored-by: github-actions[bot] * Chore/update deps (#349) * chore: Update deps * chore: Update deps * Docs site ! (#350) * feat: Docs init * feat: Docs init * chore: Update README * docs: Update Docs * chore: Update deps * chore: Update docs * chore: Update docs * chore: Update * docs: Update * docs: Update * docs: Update * docs: Update Crosschain doc * chore: Update docs * chore: Pre exit (#351) * chore: [ci] release (#352) Co-authored-by: github-actions[bot] * feat: Custom Tx support any type! (#355) * chore: Pre enter (#357) * chore: [ci] release (alpha) (#356) Co-authored-by: github-actions[bot] * fix: Offchain auth ei.data undefined (#358) * fix: Offchain auth ei.data undefined * Create witty-bikes-flash.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#359) Co-authored-by: github-actions[bot] * fix: Offchain auth ei.data undefined (#360) * fix: Offchain auth ei.data undefined * Create ten-maps-travel.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#361) Co-authored-by: github-actions[bot] * chore: Release 1.0.0 (#365) * chore: [ci] release (alpha) (#366) Co-authored-by: github-actions[bot] * chore: Pre exit (#367) * chore: [ci] release (#368) Co-authored-by: github-actions[bot] * chore: Pre enter * fix(types): Payment listUserPaymentAccounts return response (#370) * fix(types): Payment listUserPaymentAccounts return response * fix(types): Payment listUserPaymentAccounts return response * Create chilly-pens-listen.md * chore: [ci] release (alpha) (#371) Co-authored-by: github-actions[bot] * chore: Update doc url (#372) * chore: Pre exit (#377) * chore: [ci] release (#378) Co-authored-by: github-actions[bot] * fix: Replace legacy method (#381) * fix: Replace legacy method * Create cool-shoes-visit.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: Update Deps (#382) * docs: Update README (#384) * chore: [ci] release (#383) Co-authored-by: github-actions[bot] * Feat/new msg tag (#413) * feat: Upgrade types to 0.4.0-alpha-25 * feat: Create Group with tags * feat: SetTag tx * chore(example): Update Group Tag * feat: Create Bucket with tags * chore(example): Create bucket with tags * refactor: Rename Object class name * feat: Create Object with tags * chore(example): Create Object with tags * chore: Enter pre changeset * chore: Minor Changeset * chore: [ci] release (alpha) (#414) Co-authored-by: github-actions[bot] * Chore/update create tags (#415) * chore(example): Nodejs example update new create tx * docs: Update Docs - new create tx * chore: Remove engines filed (#418) * Feat/js reed solomon (#422) * feat: Js implement reed solomon * docs: Update README * docs: Update README * Create beige-beds-lay.md * feat: Empty buffer * chore: Update params * feat: Nodejs support worker * feat: Nodejs support worker * feat: Add types * chore: Update Nodejs example * chore: Update docs and example * chore: [ci] release (alpha) (#419) Co-authored-by: github-actions[bot] * chore: Update example (#423) * feat: Add SP Api types (#424) * chore: [ci] release (alpha) (#425) Co-authored-by: github-actions[bot] * feat: Add bucket meta type (#426) * feat: Add bucket meta type (#427) * chore: [ci] release (alpha) (#428) Co-authored-by: github-actions[bot] * Feat/rs webworker (#429) * chore: Update example, using reed solomon * chore: Update Rollup config * chore: Benchmark * docs: Update README * feat: Support WebWorker * chore: [ci] release (alpha) (#430) Co-authored-by: github-actions[bot] * Feat/rs webworker (#431) * chore: Update example, using reed solomon * chore: Update Rollup config * chore: Benchmark * docs: Update README * feat: Support WebWorker * feat: Add types * chore: Add benchmark * Merge branch 'alpha' into feat/rs_webworker * chore: [ci] release (alpha) (#432) Co-authored-by: github-actions[bot] * chore: Exit pre * chore: [ci] release (#433) Co-authored-by: github-actions[bot] --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> --- README.md | 2 +- doc-site/docs/api/bucket.mdx | 4 + doc-site/docs/api/object.mdx | 8 + examples/nextjs/CHANGELOG.md | 65 + examples/nextjs/package.json | 5 +- examples/nextjs/src/client/index.ts | 2 + .../src/components/bucket/create/index.tsx | 15 +- .../src/components/group/create/index.tsx | 59 +- .../src/components/group/info/index.tsx | 2 +- .../src/components/group/update/index.tsx | 44 +- .../src/components/object/create/index.tsx | 37 +- examples/nodejs/CHANGELOG.md | 69 + examples/nodejs/cases/policy.js | 3 + examples/nodejs/cases/storage.js | 15 +- examples/nodejs/package.json | 3 +- packages/js-sdk/CHANGELOG.md | 56 + packages/js-sdk/package.json | 8 +- packages/js-sdk/src/api/bucket.ts | 10 +- packages/js-sdk/src/api/group.ts | 18 +- .../js-sdk/src/api/{objectt.ts => objects.ts} | 13 +- packages/js-sdk/src/api/storage.ts | 26 +- packages/js-sdk/src/client.ts | 6 +- .../spclient/spApis/listBucketsByPayment.ts | 1 + packages/js-sdk/src/constants/typeUrl.ts | 1 + .../greenfield/storage/MsgCreateBucket.ts | 47 +- .../greenfield/storage/MsgCreateGroup.ts | 47 +- .../greenfield/storage/MsgCreateObject.ts | 47 +- .../messages/greenfield/storage/MsgSetTag.ts | 61 + .../js-sdk/src/types/sp/BucketApproval.ts | 3 + packages/js-sdk/src/types/sp/Common.ts | 55 +- packages/js-sdk/src/types/sp/GetBucketMeta.ts | 4 +- .../js-sdk/src/types/sp/ObjectApproval.ts | 3 + packages/reed-solomon/CHANGELOG.md | 57 + packages/reed-solomon/README.md | 133 + packages/reed-solomon/benchmark.md | 12 + packages/reed-solomon/examples/folder.js | 31 + packages/reed-solomon/examples/node-worker.js | 16 + packages/reed-solomon/examples/node.js | 15 + .../reed-solomon/examples/web-worker.html | 63 + packages/reed-solomon/examples/web.html | 36 + packages/reed-solomon/package.json | 78 + packages/reed-solomon/rollup.config.js | 102 + packages/reed-solomon/src/galois.js | 4778 +++++++++++++++++ packages/reed-solomon/src/index.js | 188 + packages/reed-solomon/src/matrix.js | 182 + packages/reed-solomon/src/node.adapter.js | 88 + packages/reed-solomon/src/utils.js | 44 + packages/reed-solomon/src/web.adapter.js | 65 + packages/reed-solomon/types/index.d.ts | 9 + packages/reed-solomon/types/node.adapter.d.ts | 5 + packages/reed-solomon/types/utils.d.ts | 9 + packages/reed-solomon/types/web.adapter.d.ts | 5 + pnpm-lock.yaml | 3149 +++++------ 53 files changed, 7854 insertions(+), 1950 deletions(-) rename packages/js-sdk/src/api/{objectt.ts => objects.ts} (97%) create mode 100644 packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts create mode 100644 packages/reed-solomon/CHANGELOG.md create mode 100644 packages/reed-solomon/README.md create mode 100644 packages/reed-solomon/benchmark.md create mode 100644 packages/reed-solomon/examples/folder.js create mode 100644 packages/reed-solomon/examples/node-worker.js create mode 100644 packages/reed-solomon/examples/node.js create mode 100644 packages/reed-solomon/examples/web-worker.html create mode 100644 packages/reed-solomon/examples/web.html create mode 100644 packages/reed-solomon/package.json create mode 100644 packages/reed-solomon/rollup.config.js create mode 100644 packages/reed-solomon/src/galois.js create mode 100644 packages/reed-solomon/src/index.js create mode 100644 packages/reed-solomon/src/matrix.js create mode 100644 packages/reed-solomon/src/node.adapter.js create mode 100644 packages/reed-solomon/src/utils.js create mode 100644 packages/reed-solomon/src/web.adapter.js create mode 100644 packages/reed-solomon/types/index.d.ts create mode 100644 packages/reed-solomon/types/node.adapter.d.ts create mode 100644 packages/reed-solomon/types/utils.d.ts create mode 100644 packages/reed-solomon/types/web.adapter.d.ts diff --git a/README.md b/README.md index f7bfc7ad..16319f3c 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ You can find some package documentation below: | Package | Description | Version | | --- | --- | --- | | [@bnb-chain/greenfield-js-sdk](./packages/js-sdk/README.md) | A client library for Greenfield Chain | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-js-sdk?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-js-sdk) | -| [@bnb-chain/greenfiled-file-handle](./packages/file-handle/README.md) | WASM module that handle file, such as `checksums` | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfiled-file-handle?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfiled-file-handle) | +| [@bnb-chain/reed-solomon](./packages/reed-solomon/README.md) | calculate file's `checksums` | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Freed-solomon?color=blue)](https://www.npmjs.com/package/@bnb-chain/reed-solomon) | | [@bnb-chain/greenfield-zk-crypto](./packages/zk-crypto/README.md) | WASM module about sign crypto | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-zk-crypto?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-zk-crypto) | | [@bnb-chain/create-gnfd-app](./packages/create-gnfd-app/README.md) | Create Greenfield App Quickly | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fcreate-gnfd-app?color=blue)](https://www.npmjs.com/package/@bnb-chain/create-gnfd-app) | diff --git a/doc-site/docs/api/bucket.mdx b/doc-site/docs/api/bucket.mdx index 436a36bc..171d28c2 100644 --- a/doc-site/docs/api/bucket.mdx +++ b/doc-site/docs/api/bucket.mdx @@ -21,6 +21,7 @@ for creating bucket and sends the createBucket transaction to the Greenfield. | chargedReadQuota | defines the traffic quota that you read from primary sp | | spInfo | primary sp address | | paymentAddress | payment address | +| tags | defines a list of tags which will be set to the bucket | | authType | [AuthType](/client/sp-client#authtype) | @@ -38,6 +39,9 @@ const tx = await client.bucket.createBucket( primarySpAddress: 'primary_sp_address', }, paymentAddress: address, + tags: { + tags: [], + }, }, // highlight-start { diff --git a/doc-site/docs/api/object.mdx b/doc-site/docs/api/object.mdx index a6ef0e40..8c786d8f 100644 --- a/doc-site/docs/api/object.mdx +++ b/doc-site/docs/api/object.mdx @@ -29,6 +29,7 @@ Send create empty object txn to greenfield chain. | bucketName | bucket name | | objectName | object name | | creator | the creator of object | +| tags | defines a list of tags which will be set to the object | | authType | [AuthType](/client/sp-client#authtype) | @@ -40,6 +41,9 @@ const tx = await client.object.createFolder( bucketName: createObjectInfo.bucketName, objectName: createObjectInfo.objectName + '/', creator: address, + tags: { + tags: [], + }, }, // highlight-start { @@ -91,6 +95,7 @@ Get approval of creating object and send createObject txn to greenfield chain. | authType | [AuthType](/client/sp-client#authtype) | | contentLength | file content length | | expectCheckSums | file's expectCheckSums | +| tags | defines a list of tags which will be set to the object | @@ -107,6 +112,9 @@ const tx = await client.object.createObject( redundancyType: 'REDUNDANCY_EC_TYPE', contentLength: 13311, expectCheckSums: JSON.parse(expectCheckSums), + tags: { + tags: [], + }, }, // highlight-start { diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 15a2297c..da4d0aee 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,70 @@ # @demo/wallet +## 0.0.17 + +### Patch Changes + +- Updated dependencies + [[`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f), + [`afb5464`](https://github.com/bnb-chain/greenfield-js-sdk/commit/afb54644683c8da508d250731a6462676cf44747), + [`a999960`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a9999603b3a66e360952580da09716e85d26cc5c), + [`a940e06`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a940e065954aadd021c76bcb59be69254f50735e), + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f), + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f), + [`2e9fce0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e9fce0c5b3da426feb0d6b03d95450ac83a6491), + [`d579137`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d579137fd6ecd0d226f4d79fcc0b3f9b44f8952b), + [`47d59a1`](https://github.com/bnb-chain/greenfield-js-sdk/commit/47d59a1355b0a7788727daaf077a644206ffcc05)]: + - @bnb-chain/reed-solomon@1.0.1 + - @bnb-chain/greenfield-js-sdk@1.1.0 + +## 0.0.17-alpha.5 + +### Patch Changes + +- Updated dependencies + [[`2e9fce0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e9fce0c5b3da426feb0d6b03d95450ac83a6491)]: + - @bnb-chain/reed-solomon@1.0.1-alpha.2 + +## 0.0.17-alpha.4 + +### Patch Changes + +- Updated dependencies + [[`afb5464`](https://github.com/bnb-chain/greenfield-js-sdk/commit/afb54644683c8da508d250731a6462676cf44747)]: + - @bnb-chain/reed-solomon@1.0.1-alpha.1 + +## 0.0.17-alpha.3 + +### Patch Changes + +- Updated dependencies + [[`d579137`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d579137fd6ecd0d226f4d79fcc0b3f9b44f8952b)]: + - @bnb-chain/greenfield-js-sdk@1.1.0-alpha.3 + +## 0.0.17-alpha.2 + +### Patch Changes + +- Updated dependencies + [[`a999960`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a9999603b3a66e360952580da09716e85d26cc5c)]: + - @bnb-chain/greenfield-js-sdk@1.1.0-alpha.2 + +## 0.0.17-alpha.1 + +### Patch Changes + +- Updated dependencies + [[`a940e06`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a940e065954aadd021c76bcb59be69254f50735e)]: + - @bnb-chain/greenfield-js-sdk@1.1.0-alpha.1 + +## 0.0.17-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`47d59a1`](https://github.com/bnb-chain/greenfield-js-sdk/commit/47d59a1355b0a7788727daaf077a644206ffcc05)]: + - @bnb-chain/greenfield-js-sdk@1.1.0-alpha.0 + ## 0.0.16 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 5ff6d4f2..cc0db30d 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.16", + "version": "0.0.17", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", @@ -11,9 +11,10 @@ "lint": "next lint" }, "dependencies": { - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.23", + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.25", "@bnb-chain/greenfield-js-sdk": "workspace:*", "@bnb-chain/greenfiled-file-handle": "workspace:*", + "@bnb-chain/reed-solomon": "workspace:*", "@cosmjs/encoding": "^0.32.0", "@cosmjs/proto-signing": "^0.32.0", "@cosmjs/stargate": "^0.32.0", diff --git a/examples/nextjs/src/client/index.ts b/examples/nextjs/src/client/index.ts index 760862a2..aa0712cf 100644 --- a/examples/nextjs/src/client/index.ts +++ b/examples/nextjs/src/client/index.ts @@ -9,6 +9,8 @@ export const getSps = async () => { const sps = await client.sp.getStorageProviders(); const finalSps = (sps ?? []).filter((v: any) => v.endpoint.includes('nodereal')); + // const finalSps = sps.filter((v) => v.id === 4); + return finalSps; }; diff --git a/examples/nextjs/src/components/bucket/create/index.tsx b/examples/nextjs/src/components/bucket/create/index.tsx index 62569b20..5209776a 100644 --- a/examples/nextjs/src/components/bucket/create/index.tsx +++ b/examples/nextjs/src/components/bucket/create/index.tsx @@ -1,5 +1,4 @@ import { client, selectSp } from '@/client'; -import { ACCOUNT_PRIVATEKEY } from '@/config/env'; import { getOffchainAuthKeys } from '@/utils/offchainAuth'; import { useState } from 'react'; import { useAccount } from 'wagmi'; @@ -48,6 +47,20 @@ export const CreateBucket = () => { primarySpAddress: spInfo.primarySpAddress, }, paymentAddress: address, + // empty tags + tags: { + tags: [], + }, + + // with tags: + // tags: { + // tags: [ + // { + // key: 'test', + // value: 'test', + // }, + // ], + // }, }, { // type: 'ECDSA', diff --git a/examples/nextjs/src/components/group/create/index.tsx b/examples/nextjs/src/components/group/create/index.tsx index f7b1e5c5..924ab087 100644 --- a/examples/nextjs/src/components/group/create/index.tsx +++ b/examples/nextjs/src/components/group/create/index.tsx @@ -28,6 +28,9 @@ export const CreateGroup = () => { creator: address, groupName: createGroupInfo.groupName, extra: 'extra info', + tags: { + tags: [], + }, }); const simulateInfo = await createGroupTx.simulate({ @@ -42,15 +45,57 @@ export const CreateGroup = () => { gasPrice: simulateInfo.gasPrice, payer: address, granter: '', - signTypedDataCallback: async (addr: string, message: string) => { - const provider = await connector?.getProvider(); - return await provider?.request({ - method: 'eth_signTypedData_v4', - params: [addr, message], - }); + // signTypedDataCallback: async (addr: string, message: string) => { + // const provider = await connector?.getProvider(); + // return await provider?.request({ + // method: 'eth_signTypedData_v4', + // params: [addr, message], + // }); + // }, + }); + + if (res.code === 0) { + alert('create group success'); + } + + console.log(res); + }} + > + create group with empty tags + + + ); diff --git a/examples/nextjs/src/components/group/info/index.tsx b/examples/nextjs/src/components/group/info/index.tsx index bbb8562a..65c30f5e 100644 --- a/examples/nextjs/src/components/group/info/index.tsx +++ b/examples/nextjs/src/components/group/info/index.tsx @@ -37,7 +37,7 @@ export const GroupInfo = () => { console.log('headGroupMember', headGroupMember); }} > - get group info + get group member info ); diff --git a/examples/nextjs/src/components/group/update/index.tsx b/examples/nextjs/src/components/group/update/index.tsx index ec51a2bc..202e8af5 100644 --- a/examples/nextjs/src/components/group/update/index.tsx +++ b/examples/nextjs/src/components/group/update/index.tsx @@ -1,5 +1,5 @@ import { client } from '@/client'; -import { toTimestamp } from '@bnb-chain/greenfield-js-sdk'; +import { GRNToString, newBucketGRN, newGroupGRN, toTimestamp } from '@bnb-chain/greenfield-js-sdk'; import { useState } from 'react'; import { zeroAddress } from 'viem'; import { useAccount } from 'wagmi'; @@ -17,6 +17,7 @@ export const GroupUpdate = () => { setGroupName(e.target.value); }} /> +
    +
    +
    +
    + ); }; diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index 8fde0f1b..b1c5671a 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -1,9 +1,9 @@ import { client } from '@/client'; -import { ACCOUNT_PRIVATEKEY } from '@/config/env'; import { getOffchainAuthKeys } from '@/utils/offchainAuth'; import { ChangeEvent, useState } from 'react'; import { useAccount } from 'wagmi'; import { getCheckSumsWorker } from '@bnb-chain/greenfiled-file-handle'; +import { ReedSolomon } from '@bnb-chain/reed-solomon'; export const CreateObject = () => { const { address, connector } = useAccount(); @@ -64,14 +64,11 @@ export const CreateObject = () => { // const multiCal = await checksumWorker.generateCheckSumV2(file); // console.log('multiCal', multiCal); + const rs = new ReedSolomon(); const fileBytes = await file.arrayBuffer(); - const hashResult = await (window as any).FileHandle.getCheckSums( - new Uint8Array(fileBytes), - ); - const { contentLength, expectCheckSums } = hashResult; + const expectCheckSums = rs.encode(new Uint8Array(fileBytes)); console.log('offChainData', offChainData); - console.log('hashResult', hashResult); const createObjectTx = await client.object.createObject( { @@ -81,8 +78,20 @@ export const CreateObject = () => { visibility: 'VISIBILITY_TYPE_PRIVATE', fileType: file.type, redundancyType: 'REDUNDANCY_EC_TYPE', - contentLength, - expectCheckSums: JSON.parse(expectCheckSums), + contentLength: fileBytes.byteLength, + expectCheckSums: expectCheckSums, + // empty tags + // tags: { + // tags: [], + // }, + tags: { + tags: [ + { + key: 'test', + value: 'test', + }, + ], + }, }, { type: 'EDDSA', @@ -172,6 +181,18 @@ export const CreateObject = () => { bucketName: createObjectInfo.bucketName, objectName: createObjectInfo.objectName + '/', creator: address, + // empty tags + // tags: { + // tags: [], + // }, + tags: { + tags: [ + { + key: 'test', + value: 'test', + }, + ], + }, }, { type: 'EDDSA', diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 34edfee1..5296b4e7 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,74 @@ # @demo/nodejs +## 0.0.20 + +### Patch Changes + +- Updated dependencies + [[`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f), + [`afb5464`](https://github.com/bnb-chain/greenfield-js-sdk/commit/afb54644683c8da508d250731a6462676cf44747), + [`a999960`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a9999603b3a66e360952580da09716e85d26cc5c), + [`a940e06`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a940e065954aadd021c76bcb59be69254f50735e), + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f), + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f), + [`2e9fce0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e9fce0c5b3da426feb0d6b03d95450ac83a6491), + [`d579137`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d579137fd6ecd0d226f4d79fcc0b3f9b44f8952b), + [`47d59a1`](https://github.com/bnb-chain/greenfield-js-sdk/commit/47d59a1355b0a7788727daaf077a644206ffcc05)]: + - @bnb-chain/reed-solomon@1.0.1 + - @bnb-chain/greenfield-js-sdk@1.1.0 + +## 0.0.20-alpha.5 + +### Patch Changes + +- Updated dependencies + [[`2e9fce0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e9fce0c5b3da426feb0d6b03d95450ac83a6491)]: + - @bnb-chain/reed-solomon@1.0.1-alpha.2 + +## 0.0.20-alpha.4 + +### Patch Changes + +- Updated dependencies + [[`afb5464`](https://github.com/bnb-chain/greenfield-js-sdk/commit/afb54644683c8da508d250731a6462676cf44747)]: + - @bnb-chain/reed-solomon@1.0.1-alpha.1 + +## 0.0.20-alpha.3 + +### Patch Changes + +- Updated dependencies + [[`d579137`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d579137fd6ecd0d226f4d79fcc0b3f9b44f8952b)]: + - @bnb-chain/greenfield-js-sdk@1.1.0-alpha.3 + +## 0.0.20-alpha.2 + +### Patch Changes + +- Updated dependencies + [[`a999960`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a9999603b3a66e360952580da09716e85d26cc5c)]: + - @bnb-chain/greenfield-js-sdk@1.1.0-alpha.2 + +## 0.0.20-alpha.1 + +### Patch Changes + +- Updated dependencies + [[`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f), + [`a940e06`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a940e065954aadd021c76bcb59be69254f50735e), + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f), + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f)]: + - @bnb-chain/reed-solomon@1.0.1-alpha.0 + - @bnb-chain/greenfield-js-sdk@1.1.0-alpha.1 + +## 0.0.20-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`47d59a1`](https://github.com/bnb-chain/greenfield-js-sdk/commit/47d59a1355b0a7788727daaf077a644206ffcc05)]: + - @bnb-chain/greenfield-js-sdk@1.1.0-alpha.0 + ## 0.0.19 ### Patch Changes diff --git a/examples/nodejs/cases/policy.js b/examples/nodejs/cases/policy.js index d24209a8..9ce4570e 100644 --- a/examples/nodejs/cases/policy.js +++ b/examples/nodejs/cases/policy.js @@ -11,6 +11,9 @@ const { ACCOUNT_ADDRESS, ACCOUNT_PRIVATEKEY } = require('../env'); creator: ACCOUNT_ADDRESS, extra: EXTRA, groupName: GROUP_NAME, + tags: { + tags: [], + }, }); const createGroupTxSimulateInfo = await createGroupTx.simulate({ diff --git a/examples/nodejs/cases/storage.js b/examples/nodejs/cases/storage.js index 02e76140..d2ccf954 100644 --- a/examples/nodejs/cases/storage.js +++ b/examples/nodejs/cases/storage.js @@ -3,6 +3,7 @@ const fs = require('fs'); const path = require('path'); const mimeTypes = require('mime-types'); const { getCheckSums } = require('@bnb-chain/greenfiled-file-handle'); +const { NodeAdapterReedSolomon } = require('@bnb-chain/reed-solomon/node.adapter'); const { client, selectSp, generateString } = require('../client'); const { ACCOUNT_ADDRESS, ACCOUNT_PRIVATEKEY } = require('../env'); @@ -12,6 +13,7 @@ const objectName = generateString(10); const fileBuffer = fs.readFileSync(filePath); const extname = path.extname(filePath); const fileType = mimeTypes.lookup(extname); +const rs = new NodeAdapterReedSolomon(); console.log('bucketName', bucketName); console.log('objectName', objectName); @@ -30,6 +32,9 @@ console.log('objectName', objectName); primarySpAddress: spInfo.primarySpAddress, }, paymentAddress: ACCOUNT_ADDRESS, + tags: { + tags: [], + }, }, { type: 'ECDSA', @@ -55,8 +60,7 @@ console.log('objectName', objectName); console.log('create bucket success', createBucketTxRes); // create object example: - const hashResult = await getCheckSums(fileBuffer); - const { contentLength, expectCheckSums } = hashResult; + const expectCheckSums = await rs.encodeInWorker(__filename, Uint8Array.from(fileBuffer)); const createObjectTx = await client.object.createObject( { @@ -66,8 +70,11 @@ console.log('objectName', objectName); visibility: 'VISIBILITY_TYPE_PRIVATE', fileType: fileType, redundancyType: 'REDUNDANCY_EC_TYPE', - contentLength, - expectCheckSums: JSON.parse(expectCheckSums), + contentLength: fileBuffer.length, + expectCheckSums, + tags: { + tags: [], + }, }, { type: 'ECDSA', diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 0eda40ce..9a37fc59 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,12 +1,13 @@ { "name": "@demo/nodejs", - "version": "0.0.19", + "version": "0.0.20", "type": "commonjs", "private": true, "scripts": {}, "dependencies": { "@bnb-chain/greenfield-js-sdk": "workspace:*", "@bnb-chain/greenfiled-file-handle": "workspace:*", + "@bnb-chain/reed-solomon": "workspace:*", "dotenv": "^16.0.3", "mime-types": "^2.1.35" } diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index f568dbbf..5540cf3c 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,61 @@ # @bnb-chain/greenfield-js-sdk +## 1.1.0 + +### Minor Changes + +- [#413](https://github.com/bnb-chain/greenfield-js-sdk/pull/413) + [`47d59a1`](https://github.com/bnb-chain/greenfield-js-sdk/commit/47d59a1355b0a7788727daaf077a644206ffcc05) + Thanks [@rrr523](https://github.com/rrr523)! - feat(BREAKING CHANGE): create group / bucket / + object must have `tags` arguments and supply `setMsg` method to update tags. + +### Patch Changes + +- [#424](https://github.com/bnb-chain/greenfield-js-sdk/pull/424) + [`a999960`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a9999603b3a66e360952580da09716e85d26cc5c) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add SP create API types + +- [#418](https://github.com/bnb-chain/greenfield-js-sdk/pull/418) + [`a940e06`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a940e065954aadd021c76bcb59be69254f50735e) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Remove engines filed in package.json + +- [#427](https://github.com/bnb-chain/greenfield-js-sdk/pull/427) + [`d579137`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d579137fd6ecd0d226f4d79fcc0b3f9b44f8952b) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add bucket meta types + +## 1.1.0-alpha.3 + +### Patch Changes + +- [#427](https://github.com/bnb-chain/greenfield-js-sdk/pull/427) + [`d579137`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d579137fd6ecd0d226f4d79fcc0b3f9b44f8952b) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add bucket meta types + +## 1.1.0-alpha.2 + +### Patch Changes + +- [#424](https://github.com/bnb-chain/greenfield-js-sdk/pull/424) + [`a999960`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a9999603b3a66e360952580da09716e85d26cc5c) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add SP create API types + +## 1.1.0-alpha.1 + +### Patch Changes + +- [#418](https://github.com/bnb-chain/greenfield-js-sdk/pull/418) + [`a940e06`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a940e065954aadd021c76bcb59be69254f50735e) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Remove engines filed in package.json + +## 1.1.0-alpha.0 + +### Minor Changes + +- [#413](https://github.com/bnb-chain/greenfield-js-sdk/pull/413) + [`47d59a1`](https://github.com/bnb-chain/greenfield-js-sdk/commit/47d59a1355b0a7788727daaf077a644206ffcc05) + Thanks [@rrr523](https://github.com/rrr523)! - feat(BREAKING CHANGE): create group / bucket / + object must have `tags` arguments and supply `setMsg` method to update tags. + ## 1.0.6 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 68e64a72..2107c91c 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.0.6", + "version": "1.1.0", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", @@ -42,10 +42,6 @@ ], "author": "", "license": "GPLv3", - "engines": { - "yarn": "please use pnpm", - "npm": "please use pnpm" - }, "files": [ "dist", "types" @@ -63,7 +59,7 @@ ] }, "dependencies": { - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.23", + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.25", "@bnb-chain/greenfield-zk-crypto": "workspace:*", "@cosmjs/proto-signing": "^0.32.0", "@cosmjs/stargate": "^0.32.0", diff --git a/packages/js-sdk/src/api/bucket.ts b/packages/js-sdk/src/api/bucket.ts index 1ddd2d44..ec5b8ec8 100644 --- a/packages/js-sdk/src/api/bucket.ts +++ b/packages/js-sdk/src/api/bucket.ts @@ -23,6 +23,7 @@ import { MsgPutPolicy, MsgUpdateBucketInfo, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; +import { ResourceTags } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/types'; import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { Headers } from 'cross-fetch'; import { bytesToUtf8, hexToBytes } from 'ethereum-cryptography/utils'; @@ -68,7 +69,7 @@ import { import { AuthType, SpClient } from '../clients/spclient/spClient'; import { TxClient } from '../clients/txClient'; import { METHOD_GET, NORMAL_ERROR_CODE } from '../constants/http'; -import { MsgCreateBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateBucket'; +import { getMsgCreateBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateBucket'; import { MsgDeleteBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgDeleteBucket'; import { MsgMigrateBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgMigrateBucket'; import { MsgUpdateBucketInfoSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateBucketInfo'; @@ -212,6 +213,7 @@ export class Bucket implements IBucket { spInfo, duration, paymentAddress, + tags, } = params; try { @@ -240,6 +242,7 @@ export class Bucket implements IBucket { }, charged_read_quota: chargedReadQuota, payment_address: paymentAddress, + tags: tags, }); const signHeaders = await this.spClient.signHeaders(reqMeta, authType); @@ -271,6 +274,10 @@ export class Bucket implements IBucket { } private async createBucketTx(msg: MsgCreateBucket, signedMsg: CreateBucketApprovalResponse) { + const isTagsEmpty = msg?.tags?.tags?.length === 0; + + const MsgCreateBucketSDKTypeEIP712 = getMsgCreateBucketSDKTypeEIP712(isTagsEmpty); + return await this.txClient.tx( MsgCreateBucketTypeUrl, msg.creator, @@ -307,6 +314,7 @@ export class Bucket implements IBucket { }, chargedReadQuota: Long.fromString(signedMsg.charged_read_quota), paymentAddress: signedMsg.payment_address, + tags: ResourceTags.fromJSON(signedMsg.tags), }; return await this.createBucketTx(msg, signedMsg); diff --git a/packages/js-sdk/src/api/group.ts b/packages/js-sdk/src/api/group.ts index a4525871..4404d0f7 100644 --- a/packages/js-sdk/src/api/group.ts +++ b/packages/js-sdk/src/api/group.ts @@ -1,10 +1,3 @@ -import { TxClient } from '../clients/txClient'; -import { MsgCreateGroupSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateGroup'; -import { MsgDeleteGroupSDKTypeEIP712 } from '../messages/greenfield/storage/MsgDeleteGroup'; -import { MsgLeaveGroupSDKTypeEIP712 } from '../messages/greenfield/storage/MsgLeaveGroup'; -import { MsgUpdateGroupExtraSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateGroupExtra'; -import { getMsgUpdateGroupMemberSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateGroupMember'; -import { GRNToString, newBucketGRN, newGroupGRN, newObjectGRN } from '../utils/grn'; import { QueryGroupNFTResponse, QueryHeadGroupMemberResponse, @@ -34,6 +27,13 @@ import { TxResponse, } from '..'; import { RpcQueryClient } from '../clients/queryclient'; +import { TxClient } from '../clients/txClient'; +import { getMsgCreateGroupSDKTypeWithTagEIP712 } from '../messages/greenfield/storage/MsgCreateGroup'; +import { MsgDeleteGroupSDKTypeEIP712 } from '../messages/greenfield/storage/MsgDeleteGroup'; +import { MsgLeaveGroupSDKTypeEIP712 } from '../messages/greenfield/storage/MsgLeaveGroup'; +import { MsgUpdateGroupExtraSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateGroupExtra'; +import { getMsgUpdateGroupMemberSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateGroupMember'; +import { GRNToString, newBucketGRN, newGroupGRN, newObjectGRN } from '../utils/grn'; import { Storage } from './storage'; export interface IGroup { @@ -111,6 +111,10 @@ export class Group implements IGroup { private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); public async createGroup(msg: MsgCreateGroup) { + const isTagsEmpty = msg?.tags?.tags?.length === 0; + + const MsgCreateGroupSDKTypeEIP712 = getMsgCreateGroupSDKTypeWithTagEIP712(isTagsEmpty); + return await this.txClient.tx( MsgCreateGroupTypeUrl, msg.creator, diff --git a/packages/js-sdk/src/api/objectt.ts b/packages/js-sdk/src/api/objects.ts similarity index 97% rename from packages/js-sdk/src/api/objectt.ts rename to packages/js-sdk/src/api/objects.ts index 6b924ec1..1d1969b5 100644 --- a/packages/js-sdk/src/api/objectt.ts +++ b/packages/js-sdk/src/api/objects.ts @@ -19,7 +19,7 @@ import { getPutObjectMetaInfo } from '../clients/spclient/spApis/putObject'; import { TxClient } from '../clients/txClient'; import { METHOD_GET, NORMAL_ERROR_CODE } from '../constants/http'; import { MsgCancelCreateObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCancelCreateObject'; -import { MsgCreateObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateObject'; +import { getMsgCreateObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateObject'; import { MsgDeleteObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgDeleteObject'; import { MsgUpdateObjectInfoSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateObjectInfo'; import { signSignatureByEddsa } from '../offchainauth'; @@ -88,6 +88,7 @@ import { } from '../utils/s3'; import { Sp } from './sp'; import { Storage } from './storage'; +import { ResourceTags } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/types'; export interface IObject { getCreateObjectApproval( @@ -176,7 +177,7 @@ export interface IObject { } @injectable() -export class Objectt implements IObject { +export class Objects implements IObject { constructor( @inject(delay(() => TxClient)) private txClient: TxClient, @inject(delay(() => Storage)) private storage: Storage, @@ -197,6 +198,7 @@ export class Objectt implements IObject { redundancyType = 'REDUNDANCY_EC_TYPE', contentLength, expectCheckSums, + tags, } = params; try { @@ -229,6 +231,7 @@ export class Objectt implements IObject { }, redundancy_type: redundancyType, visibility, + tags, }); const signHeaders = await this.spClient.signHeaders(reqMeta, authType); @@ -268,6 +271,10 @@ export class Objectt implements IObject { } private async createObjectTx(msg: MsgCreateObject, signedMsg: CreateObjectApprovalResponse) { + const isTagsEmpty = msg?.tags?.tags?.length === 0; + + const MsgCreateObjectSDKTypeEIP712 = getMsgCreateObjectSDKTypeEIP712(isTagsEmpty); + return await this.txClient.tx( MsgCreateObjectTypeUrl, msg.creator, @@ -306,6 +313,7 @@ export class Objectt implements IObject { sig: bytesFromBase64(signedMsg.primary_sp_approval.sig || ''), globalVirtualGroupFamilyId: signedMsg.primary_sp_approval.global_virtual_group_family_id, }, + tags: ResourceTags.fromJSON(signedMsg.tags), }; return await this.createObjectTx(msg, signedMsg); @@ -621,6 +629,7 @@ export class Objectt implements IObject { '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', ], creator: getApprovalParams.creator, + tags: getApprovalParams.tags, }; return this.createObject(params, authType); diff --git a/packages/js-sdk/src/api/storage.ts b/packages/js-sdk/src/api/storage.ts index 8dbc518c..97c849b9 100644 --- a/packages/js-sdk/src/api/storage.ts +++ b/packages/js-sdk/src/api/storage.ts @@ -20,10 +20,18 @@ import { import { MsgDeletePolicy, MsgPutPolicy, + MsgSetTag, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import { container, delay, inject, injectable } from 'tsyringe'; -import { fromTimestamp, MsgDeletePolicyTypeUrl, MsgPutPolicyTypeUrl, TxResponse } from '..'; +import { + fromTimestamp, + MsgDeletePolicyTypeUrl, + MsgPutPolicyTypeUrl, + MsgSetTagTypeUrl, + TxResponse, +} from '..'; import { RpcQueryClient } from '../clients/queryclient'; +import { getMsgSetTagSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgSetTag'; export interface IStorage { params(): Promise; @@ -32,6 +40,8 @@ export interface IStorage { deletePolicy(msg: MsgDeletePolicy): Promise; + setTag(msg: MsgSetTag): Promise; + getPolicyForGroup(request: QueryPolicyForGroupRequest): Promise; getQueryPolicyForAccount( @@ -97,6 +107,20 @@ export class Storage implements IStorage { ); } + public async setTag(msg: MsgSetTag) { + const isTagsEmpty = msg?.tags?.tags?.length === 0; + + const MsgSetTagSDKTypeEIP712 = getMsgSetTagSDKTypeEIP712(isTagsEmpty); + + return await this.txClient.tx( + MsgSetTagTypeUrl, + msg.operator, + MsgSetTagSDKTypeEIP712, + MsgSetTag.toSDK(msg), + MsgSetTag.encode(msg).finish(), + ); + } + public async getPolicyForGroup(request: QueryPolicyForGroupRequest) { const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.QueryPolicyForGroup(request); diff --git a/packages/js-sdk/src/client.ts b/packages/js-sdk/src/client.ts index 776f1711..b87185b7 100644 --- a/packages/js-sdk/src/client.ts +++ b/packages/js-sdk/src/client.ts @@ -9,7 +9,7 @@ import { Distribution, IDistribution } from './api/distribution'; import { FeeGrant, IFeeGrant } from './api/feegrant'; import { Gashub, IGashub } from './api/gashub'; import { Group, IGroup } from './api/group'; -import { IObject, Objectt } from './api/objectt'; +import { IObject, Objects } from './api/objects'; import { IOffChainAuth, OffChainAuth } from './api/offchainauth'; import { IPayment, Payment } from './api/payment'; import { IProposal, Proposal } from './api/proposal'; @@ -51,7 +51,7 @@ export class Client { const feegrant = container.resolve(FeeGrant); const gashub = container.resolve(Gashub); const group = container.resolve(Group); - const objectt = container.resolve(Objectt); + const objects = container.resolve(Objects); const payment = container.resolve(Payment); const proposal = container.resolve(Proposal); const queryClient = container.resolve(RpcQueryClient); @@ -73,7 +73,7 @@ export class Client { feegrant, gashub, group, - objectt, + objects, payment, proposal, queryClient, diff --git a/packages/js-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts b/packages/js-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts index ba971dff..b2792d18 100644 --- a/packages/js-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts +++ b/packages/js-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts @@ -6,6 +6,7 @@ import { import { XMLParser } from 'fast-xml-parser'; import { getSortQueryParams } from '../auth'; +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/list_payment_account_streams export const getListBucketByPaymentMetaInfo = ( endpoint: string, params: ListBucketsByPaymentAccountRequest, diff --git a/packages/js-sdk/src/constants/typeUrl.ts b/packages/js-sdk/src/constants/typeUrl.ts index 690027a3..e76e990b 100644 --- a/packages/js-sdk/src/constants/typeUrl.ts +++ b/packages/js-sdk/src/constants/typeUrl.ts @@ -19,6 +19,7 @@ export const MsgDeleteBucketTypeUrl = '/greenfield.storage.MsgDeleteBucket'; export const MsgDeleteGroupTypeUrl = '/greenfield.storage.MsgDeleteGroup'; export const MsgDeleteObjectTypeUrl = '/greenfield.storage.MsgDeleteObject'; export const MsgDeletePolicyTypeUrl = '/greenfield.storage.MsgDeletePolicy'; +export const MsgSetTagTypeUrl = '/greenfield.storage.MsgSetTag'; export const MsgLeaveGroupTypeUrl = '/greenfield.storage.MsgLeaveGroup'; export const MsgMirrorBucketTypeUrl = '/greenfield.storage.MsgMirrorBucket'; export const MsgMirrorGroupTypeUrl = '/greenfield.storage.MsgMirrorGroup'; diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts index c56a2136..c669f51b 100644 --- a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts @@ -1,4 +1,49 @@ -export const MsgCreateBucketSDKTypeEIP712 = { +import type { EIP712Msg } from '@/messages/utils'; +import cloneDeep from 'lodash.clonedeep'; + +export const getMsgCreateBucketSDKTypeEIP712 = (isTagsEmpty: boolean) => { + const res: EIP712Msg = cloneDeep(MsgCreateBucketSDKTypeEIP712); + + if (!isTagsEmpty) { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'TypeMsg1TagsTags[]', + }, + ]; + res.TypeMsg1TagsTags = [ + { + name: 'key', + type: 'string', + }, + { + name: 'value', + type: 'string', + }, + ]; + } else { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'string[]', + }, + ]; + } + + return res; +}; + +const MsgCreateBucketSDKTypeEIP712 = { Msg1: [ { name: 'bucket_name', diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts index 6badab86..212bf1d7 100644 --- a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts @@ -1,4 +1,7 @@ -export const MsgCreateGroupSDKTypeEIP712 = { +import type { EIP712Msg } from '@/messages/utils'; +import cloneDeep from 'lodash.clonedeep'; + +const MsgCreateGroupSDKTypeEIP712 = { Msg1: [ { name: 'creator', @@ -18,3 +21,45 @@ export const MsgCreateGroupSDKTypeEIP712 = { }, ], }; + +export const getMsgCreateGroupSDKTypeWithTagEIP712 = (isTagsEmpty: boolean) => { + const res: EIP712Msg = cloneDeep(MsgCreateGroupSDKTypeEIP712); + + if (!isTagsEmpty) { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'TypeMsg1TagsTags[]', + }, + ]; + res.TypeMsg1TagsTags = [ + { + name: 'key', + type: 'string', + }, + { + name: 'value', + type: 'string', + }, + ]; + } else { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'string[]', + }, + ]; + } + + return res; +}; diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts index b1b92a4e..489ec21a 100644 --- a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts @@ -1,4 +1,49 @@ -export const MsgCreateObjectSDKTypeEIP712 = { +import type { EIP712Msg } from '@/messages/utils'; +import cloneDeep from 'lodash.clonedeep'; + +export const getMsgCreateObjectSDKTypeEIP712 = (isTagsEmpty: boolean) => { + const res: EIP712Msg = cloneDeep(MsgCreateObjectSDKTypeEIP712); + + if (!isTagsEmpty) { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'TypeMsg1TagsTags[]', + }, + ]; + res.TypeMsg1TagsTags = [ + { + name: 'key', + type: 'string', + }, + { + name: 'value', + type: 'string', + }, + ]; + } else { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'string[]', + }, + ]; + } + + return res; +}; + +const MsgCreateObjectSDKTypeEIP712 = { Msg1: [ { name: 'bucket_name', diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts new file mode 100644 index 00000000..c29b64ff --- /dev/null +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts @@ -0,0 +1,61 @@ +import type { EIP712Msg } from '@/messages/utils'; +import cloneDeep from 'lodash.clonedeep'; + +export const getMsgSetTagSDKTypeEIP712 = (isTagsEmpty: boolean) => { + const res: EIP712Msg = cloneDeep(MsgSetTagSDKTypeEIP712); + + if (!isTagsEmpty) { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'TypeMsg1TagsTags[]', + }, + ]; + res.TypeMsg1TagsTags = [ + { + name: 'key', + type: 'string', + }, + { + name: 'value', + type: 'string', + }, + ]; + } else { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'string[]', + }, + ]; + } + + return res; +}; + +const MsgSetTagSDKTypeEIP712 = { + Msg1: [ + { + name: 'operator', + type: 'string', + }, + { + name: 'resource', + type: 'string', + }, + { + name: 'type', + type: 'string', + }, + ], +}; diff --git a/packages/js-sdk/src/types/sp/BucketApproval.ts b/packages/js-sdk/src/types/sp/BucketApproval.ts index 1ca043ba..eb8304c0 100644 --- a/packages/js-sdk/src/types/sp/BucketApproval.ts +++ b/packages/js-sdk/src/types/sp/BucketApproval.ts @@ -1,4 +1,5 @@ import { VisibilityType } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; +import { TagsInCreateTxApproval } from './Common'; export type CreateBucketApprovalRequest = { bucketName: string; @@ -10,6 +11,7 @@ export type CreateBucketApprovalRequest = { }; duration?: number; paymentAddress: string; + tags: TagsInCreateTxApproval; }; export interface CreateBucketApprovalResponse { @@ -24,4 +26,5 @@ export interface CreateBucketApprovalResponse { global_virtual_group_family_id: number; }; charged_read_quota: string; + tags: TagsInCreateTxApproval; } diff --git a/packages/js-sdk/src/types/sp/Common.ts b/packages/js-sdk/src/types/sp/Common.ts index a1436bb7..d669aaf6 100644 --- a/packages/js-sdk/src/types/sp/Common.ts +++ b/packages/js-sdk/src/types/sp/Common.ts @@ -42,6 +42,12 @@ export interface BucketInfo { PaymentAddress: string; SourceType: number; Visibility: number; + Tags: { + Tags: { + Key: string; + Value: string; + }[]; + }; } export interface StreamRecord { @@ -85,9 +91,20 @@ export interface ObjectInfo { RedundancyType: number; SourceType: number; Visibility: number; + Tags: { + Tags: { + Key: string; + Value: string; + }[]; + }; } -export function formatBucketInfo(o: BucketInfo) { +export function formatBucketInfo(o: BucketInfo): BucketInfo { + let tags = o.Tags.Tags || []; + if (!Array.isArray(tags)) { + tags = [tags]; + } + return { ...o, // PrimarySpId: Number(item.BucketInfo.PrimarySpId), @@ -97,10 +114,18 @@ export function formatBucketInfo(o: BucketInfo) { GlobalVirtualGroupFamilyId: Number(o.GlobalVirtualGroupFamilyId), SourceType: Number(o.SourceType), Visibility: Number(o.Visibility), + Tags: { + Tags: tags, + }, }; } -export function formatObjectInfo(o: ObjectInfo) { +export function formatObjectInfo(o: ObjectInfo): ObjectInfo { + let tags = o.Tags.Tags || []; + if (!Array.isArray(tags)) { + tags = [tags]; + } + return { ...o, CreateAt: Number(o.CreateAt), @@ -111,6 +136,9 @@ export function formatObjectInfo(o: ObjectInfo) { RedundancyType: Number(o.RedundancyType), SourceType: Number(o.SourceType), Visibility: Number(o.Visibility), + Tags: { + Tags: tags, + }, }; } @@ -140,13 +168,27 @@ export interface GroupInfo { SourceType: number; Id: number; Extra: string; + Tags: { + Tags: { + Key: string; + Value: string; + }[]; + }; } -export function formatGroupInfo(o: GroupInfo) { +export function formatGroupInfo(o: GroupInfo): GroupInfo { + let tags = o.Tags.Tags || []; + if (!Array.isArray(tags)) { + tags = [tags]; + } + return { ...o, SourceType: Number(o.SourceType), Id: Number(o.Id), + Tags: { + Tags: tags, + }, }; } @@ -180,3 +222,10 @@ export interface PolicyMeta { */ ExpirationTime: number; } + +/** + * create bucket / object approval's tags + */ +export type TagsInCreateTxApproval = { + tags: string[] | { key: string; value: string }[]; +}; diff --git a/packages/js-sdk/src/types/sp/GetBucketMeta.ts b/packages/js-sdk/src/types/sp/GetBucketMeta.ts index f9e63ce1..e22ee67f 100644 --- a/packages/js-sdk/src/types/sp/GetBucketMeta.ts +++ b/packages/js-sdk/src/types/sp/GetBucketMeta.ts @@ -1,4 +1,4 @@ -import { BucketMeta, StreamRecord } from './Common'; +import { BucketMetaWithVGF, StreamRecord } from './Common'; export interface GetBucketMetaRequest { bucketName: string; @@ -10,6 +10,6 @@ export interface GetBucketMetaResponse { } export interface GfSPGetBucketMetaResponse { - Bucket: BucketMeta; + Bucket: BucketMetaWithVGF; StreamRecord: StreamRecord; } diff --git a/packages/js-sdk/src/types/sp/ObjectApproval.ts b/packages/js-sdk/src/types/sp/ObjectApproval.ts index da504c2c..f3c2ba91 100644 --- a/packages/js-sdk/src/types/sp/ObjectApproval.ts +++ b/packages/js-sdk/src/types/sp/ObjectApproval.ts @@ -2,6 +2,7 @@ import { RedundancyType, VisibilityType, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; +import { TagsInCreateTxApproval } from './Common'; export type CreateObjectApprovalRequest = { bucketName: string; @@ -13,6 +14,7 @@ export type CreateObjectApprovalRequest = { duration?: number; contentLength: number; expectCheckSums: string[]; + tags: TagsInCreateTxApproval; endpoint?: string; }; @@ -32,4 +34,5 @@ export type CreateObjectApprovalResponse = { // expect_secondary_sp_addresses: string[]; redundancy_type: keyof typeof RedundancyType; // charged_read_quota: string; + tags: TagsInCreateTxApproval; }; diff --git a/packages/reed-solomon/CHANGELOG.md b/packages/reed-solomon/CHANGELOG.md new file mode 100644 index 00000000..b1105310 --- /dev/null +++ b/packages/reed-solomon/CHANGELOG.md @@ -0,0 +1,57 @@ +# @bnb-chain/reed-solomon + +## 1.0.1 + +### Patch Changes + +- [#422](https://github.com/bnb-chain/greenfield-js-sdk/pull/422) + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f) + Thanks [@rrr523](https://github.com/rrr523)! - js reed solomon + +- [#429](https://github.com/bnb-chain/greenfield-js-sdk/pull/429) + [`afb5464`](https://github.com/bnb-chain/greenfield-js-sdk/commit/afb54644683c8da508d250731a6462676cf44747) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Support Web Worker + +- [#422](https://github.com/bnb-chain/greenfield-js-sdk/pull/422) + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add types + +- [#422](https://github.com/bnb-chain/greenfield-js-sdk/pull/422) + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Nodejs Support Worker + +- [#431](https://github.com/bnb-chain/greenfield-js-sdk/pull/431) + [`2e9fce0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e9fce0c5b3da426feb0d6b03d95450ac83a6491) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add Types + +## 1.0.1-alpha.2 + +### Patch Changes + +- [#431](https://github.com/bnb-chain/greenfield-js-sdk/pull/431) + [`2e9fce0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e9fce0c5b3da426feb0d6b03d95450ac83a6491) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add Types + +## 1.0.1-alpha.1 + +### Patch Changes + +- [#429](https://github.com/bnb-chain/greenfield-js-sdk/pull/429) + [`afb5464`](https://github.com/bnb-chain/greenfield-js-sdk/commit/afb54644683c8da508d250731a6462676cf44747) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Support Web Worker + +## 1.0.1-alpha.0 + +### Patch Changes + +- [#422](https://github.com/bnb-chain/greenfield-js-sdk/pull/422) + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f) + Thanks [@rrr523](https://github.com/rrr523)! - js reed solomon + +- [#422](https://github.com/bnb-chain/greenfield-js-sdk/pull/422) + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add types + +- [#422](https://github.com/bnb-chain/greenfield-js-sdk/pull/422) + [`18891a4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/18891a45cf06120b042427493422fd469a5c393f) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Nodejs Support Worker diff --git a/packages/reed-solomon/README.md b/packages/reed-solomon/README.md new file mode 100644 index 00000000..c62133d1 --- /dev/null +++ b/packages/reed-solomon/README.md @@ -0,0 +1,133 @@ +# Reed Solomon + +Lighting implementation for [klauspost/reedsolomon](https://github.com/klauspost/reedsolomon). + +Compatible with [greenfield-common](https://github.com/bnb-chain/greenfield-common/blob/master/go/hash/hash.go). + +## Install + +```bash +> npm install @bnb-chain/reed-solomon +``` + +## Usage Examples + +### ESM + +If you use module bundler such as [Webpack](https://webpack.js.org/), [Rollup](https://rollupjs.org/guide/en/), etc: + +```js +import {ReedSolomon} from '@bnb-chain/reed-solomon' + +const rs = new RS.ReedSolomon(); +const res = rs.encode(new Uint8Array(fileBuffer)) +``` + +### Browser + +Use directly in the browser via script tag: + +```html + + + + + + +``` + +[Code](./examples/web.html) + +### Browser(WebWorker) + +```html + +``` + +[Code](./examples/web-worker.html) + +### Nodejs + +```js +const { ReedSolomon } = require('@bnb-chain/reed-solomon') + +const rs = new ReedSolomon(); +const res = await rs.encode(Uint8Array.from(fileBuffer)); +``` + +[Code](./examples/node.js) + +More examples: + +* [calcute several file in a folder](./examples/folder.js) + +### Nodejs(`worker_threads`) + +Using in Nodejs: + +```js +const { NodeAdapterReedSolomon } = require('@bnb-chain/reed-solomon/node.adapter'); + +const fileBuffer = fs.readFileSync('./output_file'); + +const rs = new NodeAdapterReedSolomon(); +const res = await rs.encodeInWorker(__filename, Uint8Array.from(fileBuffer)) +``` + +[Code](./examples/node-worker.js) + +## Benchark + +[benchmark](./benchmark.md) diff --git a/packages/reed-solomon/benchmark.md b/packages/reed-solomon/benchmark.md new file mode 100644 index 00000000..ce1f9180 --- /dev/null +++ b/packages/reed-solomon/benchmark.md @@ -0,0 +1,12 @@ +# benchmarks + +| file size | [Nodejs](./examples/node.js) | [Nodejs(worker_threads)](./examples/node-worker.js) | [Browser](./examples/web.html) | [Browser(webworker)](./examples/web-worker.html) | +| - | - | - | - | - | +| 20M | 1s | 1s | 1.6s | 1.3s | +| 200M | 10s | 2s | 15s | 2.2s | + +## conclusion + +When there are not many shards, using worker will not make performance faster. + +Because worker communication is also a performance loss. diff --git a/packages/reed-solomon/examples/folder.js b/packages/reed-solomon/examples/folder.js new file mode 100644 index 00000000..6c9679bd --- /dev/null +++ b/packages/reed-solomon/examples/folder.js @@ -0,0 +1,31 @@ +/* eslint-disable */ +const fs = require('node:fs/promises'); +const path = require('node:path'); +const { NodeAdapterReedSolomon } = require('../dist/node.adapter'); + +const rs = new NodeAdapterReedSolomon(); +const folderPath = './dist'; + +(async () => { + async function traverse(currentPath) { + console.time('total'); + const files = await fs.readdir(currentPath); + + for (let i = 0; i < files.length; i++) { + const file = files[i]; + const filePath = path.join(currentPath, file); + const stat = await fs.stat(filePath); + + console.time('file', file); + const fileBuffer = await fs.readFile(filePath); + const res = await rs.encodeInWorker(__filename, Uint8Array.from(fileBuffer)); + console.timeEnd('file'); + console.log(file, 'res: ', res); + } + + console.log('files count: ', files.length); + console.timeEnd('total'); + } + + await traverse(folderPath); +})(); diff --git a/packages/reed-solomon/examples/node-worker.js b/packages/reed-solomon/examples/node-worker.js new file mode 100644 index 00000000..712a27d7 --- /dev/null +++ b/packages/reed-solomon/examples/node-worker.js @@ -0,0 +1,16 @@ +/* eslint-disable */ +const fs = require('node:fs'); +const path = require('node:path'); +const { NodeAdapterReedSolomon } = require('../dist/node.adapter'); + +const fileBuffer = fs.readFileSync('./README.md'); + +(async () => { + const rs = new NodeAdapterReedSolomon(); + + console.time('cost worker_threads'); + console.log('file size', sourceData.length / 1024 / 1024, 'm'); + const res = await rs.encodeInWorker(__filename, Uint8Array.from(fileBuffer)); + console.log('res', res); + console.timeEnd('cost worker_threads'); +})(); diff --git a/packages/reed-solomon/examples/node.js b/packages/reed-solomon/examples/node.js new file mode 100644 index 00000000..372739bb --- /dev/null +++ b/packages/reed-solomon/examples/node.js @@ -0,0 +1,15 @@ +/* eslint-disable */ +const fs = require('node:fs'); +const path = require('node:path'); +const { ReedSolomon } = require('../dist/index'); + +const fileBuffer = fs.readFileSync('./README.md'); + +(async () => { + const rs = new ReedSolomon(); + console.log('file size', sourceData.length / 1024 / 1024, 'm'); + console.time('cost'); + const res = await rs.encode(Uint8Array.from(fileBuffer)); + console.log('res', res); + console.timeEnd('cost'); +})(); diff --git a/packages/reed-solomon/examples/web-worker.html b/packages/reed-solomon/examples/web-worker.html new file mode 100644 index 00000000..eadede31 --- /dev/null +++ b/packages/reed-solomon/examples/web-worker.html @@ -0,0 +1,63 @@ + + + + + + RS webworker + + + + + + + + + + + diff --git a/packages/reed-solomon/examples/web.html b/packages/reed-solomon/examples/web.html new file mode 100644 index 00000000..99c61eb6 --- /dev/null +++ b/packages/reed-solomon/examples/web.html @@ -0,0 +1,36 @@ + + + + + + RS + + + + + + + + + + diff --git a/packages/reed-solomon/package.json b/packages/reed-solomon/package.json new file mode 100644 index 00000000..c42f6682 --- /dev/null +++ b/packages/reed-solomon/package.json @@ -0,0 +1,78 @@ +{ + "name": "@bnb-chain/reed-solomon", + "version": "1.0.1", + "description": "lighting implement for reed solomon", + "module": "./dist/index.esm.js", + "main": "./dist/index.js", + "types": "./types/index.d.ts", + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/index.js", + "main": "./dist/index.js", + "default": "./dist/index.js", + "types": "./types/index.d.ts" + }, + "./node.adapter": { + "default": "./dist/node.adapter.js", + "types": "./types/node.adapter.d.ts", + "node": "./dist/node.adapter.js", + "require": "./dist/node.adapter.js" + }, + "./web.adapter": { + "default": "./dist/web.adapter.js", + "types": "./types/web.adapter.d.ts", + "import": "./dist/web.adapter.js" + }, + "./utils": { + "import": "./dist/utils.esm.js", + "require": "./dist/utils.js", + "main": "./dist/utils.js", + "default": "./dist/utils.js", + "types": "./types/utils.d.ts" + } + }, + "typesVersions": { + "*": { + "node.adapter": [ + "./types/node.adapter.d.ts" + ], + "web.adapter": [ + "./types/web.adapter.d.ts" + ], + "utils": [ + "./types/utils.d.ts" + ] + } + }, + "scripts": { + "prebuild": "rimraf ./dist", + "build": "rollup -c" + }, + "repository": { + "type": "git", + "url": "https://github.com/bnb-chain/greenfield-js-sdk", + "directory": "packages/reed-solomon" + }, + "homepage": "https://github.com/bnb-chain/greenfield-js-sdk/tree/alpha/packages/reed-solomon#readme", + "bugs": "https://github.com/bnb-chain/greenfield-js-sdk/issues", + "keywords": [ + "greenfiled", + "checksums", + "reed-solomon" + ], + "author": "", + "license": "GPLv3", + "files": [ + "dist", + "types" + ], + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "ethereum-cryptography": "^2.0.0" + } +} diff --git a/packages/reed-solomon/rollup.config.js b/packages/reed-solomon/rollup.config.js new file mode 100644 index 00000000..d7f4349d --- /dev/null +++ b/packages/reed-solomon/rollup.config.js @@ -0,0 +1,102 @@ +import commonjs from '@rollup/plugin-commonjs'; +import resolve from '@rollup/plugin-node-resolve'; +import pkg from './package.json'; +// const pathResolve = (p) => path.resolve(__dirname, p); + +function resolveExternal() { + return [...Object.keys(pkg.dependencies || {}), ...Object.keys(pkg.peerDependencies || {})]; +} + +export default async () => { + return [ + // ESM + { + input: ['./src/index.js', './src/web.adapter.js'], + output: { + format: 'es', + dir: 'dist', + entryFileNames: '[name].esm.js', + sourcemap: true, + }, + external: resolveExternal(), + context: 'window', + treeshake: true, + plugins: [ + commonjs(), + resolve({ + browser: true, + preferBuiltins: false, + }), + ], + }, + + // CJS + { + input: ['./src/index.js', './src/node.adapter.js', './src/utils.js'], + output: { + format: 'cjs', + // file: 'dist/index.js', + dir: 'dist', + sourcemap: true, + }, + external: resolveExternal(), + plugins: [ + // commonjs(), + // resolve({ + // browser: true, + // preferBuiltins: false, + // }), + ], + }, + + // UMD + { + input: './src/index.js', + output: { + format: 'umd', + file: 'dist/index.aio.js', + name: 'RS', + sourcemap: true, + }, + plugins: [ + commonjs(), + resolve({ + browser: true, + preferBuiltins: false, + }), + ], + }, + { + input: './src/web.adapter.js', + output: { + format: 'umd', + file: 'dist/web.adapter.aio.js', + name: 'WebAdapter', + sourcemap: true, + }, + plugins: [ + commonjs(), + resolve({ + browser: true, + preferBuiltins: false, + }), + ], + }, + { + input: './src/utils.js', + output: { + format: 'umd', + file: 'dist/utils.aio.js', + name: 'RSUtils', + sourcemap: true, + }, + plugins: [ + commonjs(), + resolve({ + browser: true, + preferBuiltins: false, + }), + ], + }, + ]; +}; diff --git a/packages/reed-solomon/src/galois.js b/packages/reed-solomon/src/galois.js new file mode 100644 index 00000000..bb53e394 --- /dev/null +++ b/packages/reed-solomon/src/galois.js @@ -0,0 +1,4778 @@ +const galExp = function (a, n) { + if (n === 0) { + return 1; + } + if (a === 0) { + return 0; + } + + const logA = logTable[a]; + const logResult = Math.floor(logA * n); + while (logResult >= 255) { + logResult -= 255; + } + return expTable[logResult]; +}; + +function galDivide(a, b) { + if (a == 0) { + return 0; + } + if (b == 0) { + throw new Error("Argument 'divisor' is 0"); + } + + const logA = Number(logTable[a]); + const logB = Number(logTable[b]); + let logResult = logA - logB; + if (logResult < 0) { + logResult += 255; + } + return expTable[logResult]; +} + +function galMultiply(a, b) { + return mulTable[a][b]; +} + +function galMulSlice(c, ins, out) { + out = out.slice(0, ins.length); + if (c === 1) { + return ins; + } + const mt = mulTable[c].slice(0, 256); + for (let n = 0; n < ins.length; n++) { + out[n] = mt[ins[n]]; + } + + return out; +} + +const galMulSliceXor = (c, inArray, outArray, o) => { + let out = outArray.slice(0, inArray.length); + + if (c === 1) { + sliceXor(inArray, out, o); + return out; + } + + const mt = mulTable[c].slice(0, 256); + + for (let n = 0; n < inArray.length; n++) { + out[n] ^= mt[inArray[n]]; + } + + return out; +}; + +const sliceXor = (inArray, outArray, o) => { + return sliceXorGo(inArray, outArray, o); +}; + +const sliceXorGo = (inArray, outArray) => { + while (outArray.length >= 32) { + const inS = inArray.slice(0, 32); + const v0 = uint8ArrayToUint64(outArray.slice(0, 8)) ^ uint8ArrayToUint64(inS.slice(0, 8)); + const v1 = uint8ArrayToUint64(outArray.slice(8, 16)) ^ uint8ArrayToUint64(inS.slice(8, 16)); + const v2 = uint8ArrayToUint64(outArray.slice(16, 24)) ^ uint8ArrayToUint64(inS.slice(16, 24)); + const v3 = uint8ArrayToUint64(outArray.slice(24, 32)) ^ uint8ArrayToUint64(inS.slice(24, 32)); + + uint64ToUint8Array(outArray, 0, v0); + uint64ToUint8Array(outArray, 8, v1); + uint64ToUint8Array(outArray, 16, v2); + uint64ToUint8Array(outArray, 24, v3); + + outArray = outArray.slice(32); + inArray = inArray.slice(32); + } + + outArray = outArray.slice(0, inArray.length); + + for (let n = 0; n < inArray.length; n++) { + outArray[n] ^= inArray[n]; + } + + return outArray; +}; + +// 辅助函数:将 Uint8Array 转换为 Uint64 +const uint8ArrayToUint64 = (array) => { + return ( + (array[0] << 0) | + (array[1] << 8) | + (array[2] << 16) | + (array[3] << 24) | + (array[4] << 32) | + (array[5] << 40) | + (array[6] << 48) | + (array[7] << 56) + ); +}; + +// 辅助函数:将 Uint64 转换为 Uint8Array +const uint64ToUint8Array = (array, offset, value) => { + for (let i = 0; i < 8; i++) { + array[offset + i] = (value >> (i * 8)) & 0xff; + } +}; + +export { galExp, galDivide, galMultiply, galMulSlice, galMulSliceXor }; + +const expTable = [ + 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, 0x4c, + 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x3, 0x6, 0xc, 0x18, 0x30, 0x60, 0xc0, 0x9d, 0x27, + 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23, 0x46, 0x8c, + 0x5, 0xa, 0x14, 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1, 0x5f, 0xbe, + 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0xf, 0x1e, 0x3c, 0x78, 0xf0, 0xfd, 0xe7, + 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2, 0xd9, 0xaf, + 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, 0xd, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce, 0x81, 0x1f, + 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc, 0x85, 0x17, + 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54, 0xa8, 0x4d, + 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73, 0xe6, 0xd1, + 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff, 0xe3, 0xdb, + 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41, 0x82, 0x19, + 0x32, 0x64, 0xc8, 0x8d, 0x7, 0xe, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6, 0x51, 0xa2, + 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x9, 0x12, 0x24, + 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0xb, 0x16, 0x2c, 0x58, + 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, 0x1, 0x2, 0x4, 0x8, + 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, 0x4c, 0x98, 0x2d, 0x5a, + 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x3, 0x6, 0xc, 0x18, 0x30, 0x60, 0xc0, 0x9d, 0x27, 0x4e, 0x9c, 0x25, + 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23, 0x46, 0x8c, 0x5, 0xa, 0x14, + 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1, 0x5f, 0xbe, 0x61, 0xc2, 0x99, + 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0xf, 0x1e, 0x3c, 0x78, 0xf0, 0xfd, 0xe7, 0xd3, 0xbb, 0x6b, + 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2, 0xd9, 0xaf, 0x43, 0x86, 0x11, + 0x22, 0x44, 0x88, 0xd, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce, 0x81, 0x1f, 0x3e, 0x7c, 0xf8, + 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc, 0x85, 0x17, 0x2e, 0x5c, 0xb8, + 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54, 0xa8, 0x4d, 0x9a, 0x29, 0x52, + 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73, 0xe6, 0xd1, 0xbf, 0x63, 0xc6, + 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff, 0xe3, 0xdb, 0xab, 0x4b, 0x96, + 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41, 0x82, 0x19, 0x32, 0x64, 0xc8, + 0x8d, 0x7, 0xe, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6, 0x51, 0xa2, 0x59, 0xb2, 0x79, + 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x9, 0x12, 0x24, 0x48, 0x90, 0x3d, + 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0xb, 0x16, 0x2c, 0x58, 0xb0, 0x7d, 0xfa, + 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, +]; + +const mulTable = [ + [ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + ], + [ + 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, + 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, + 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, + 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, + 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, + 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, + 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, + 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, + 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, + 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, + 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, + 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, + 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, + 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, + 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, + ], + [ + 0x0, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, + 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, 0x40, + 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e, 0x50, 0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e, 0x60, + 0x62, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7c, 0x7e, 0x80, + 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, 0xa0, + 0xa2, 0xa4, 0xa6, 0xa8, 0xaa, 0xac, 0xae, 0xb0, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, 0xc0, + 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, 0xe0, + 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0xfe, 0x1d, + 0x1f, 0x19, 0x1b, 0x15, 0x17, 0x11, 0x13, 0xd, 0xf, 0x9, 0xb, 0x5, 0x7, 0x1, 0x3, 0x3d, 0x3f, + 0x39, 0x3b, 0x35, 0x37, 0x31, 0x33, 0x2d, 0x2f, 0x29, 0x2b, 0x25, 0x27, 0x21, 0x23, 0x5d, 0x5f, + 0x59, 0x5b, 0x55, 0x57, 0x51, 0x53, 0x4d, 0x4f, 0x49, 0x4b, 0x45, 0x47, 0x41, 0x43, 0x7d, 0x7f, + 0x79, 0x7b, 0x75, 0x77, 0x71, 0x73, 0x6d, 0x6f, 0x69, 0x6b, 0x65, 0x67, 0x61, 0x63, 0x9d, 0x9f, + 0x99, 0x9b, 0x95, 0x97, 0x91, 0x93, 0x8d, 0x8f, 0x89, 0x8b, 0x85, 0x87, 0x81, 0x83, 0xbd, 0xbf, + 0xb9, 0xbb, 0xb5, 0xb7, 0xb1, 0xb3, 0xad, 0xaf, 0xa9, 0xab, 0xa5, 0xa7, 0xa1, 0xa3, 0xdd, 0xdf, + 0xd9, 0xdb, 0xd5, 0xd7, 0xd1, 0xd3, 0xcd, 0xcf, 0xc9, 0xcb, 0xc5, 0xc7, 0xc1, 0xc3, 0xfd, 0xff, + 0xf9, 0xfb, 0xf5, 0xf7, 0xf1, 0xf3, 0xed, 0xef, 0xe9, 0xeb, 0xe5, 0xe7, 0xe1, 0xe3, + ], + [ + 0x0, 0x3, 0x6, 0x5, 0xc, 0xf, 0xa, 0x9, 0x18, 0x1b, 0x1e, 0x1d, 0x14, 0x17, 0x12, 0x11, 0x30, + 0x33, 0x36, 0x35, 0x3c, 0x3f, 0x3a, 0x39, 0x28, 0x2b, 0x2e, 0x2d, 0x24, 0x27, 0x22, 0x21, 0x60, + 0x63, 0x66, 0x65, 0x6c, 0x6f, 0x6a, 0x69, 0x78, 0x7b, 0x7e, 0x7d, 0x74, 0x77, 0x72, 0x71, 0x50, + 0x53, 0x56, 0x55, 0x5c, 0x5f, 0x5a, 0x59, 0x48, 0x4b, 0x4e, 0x4d, 0x44, 0x47, 0x42, 0x41, 0xc0, + 0xc3, 0xc6, 0xc5, 0xcc, 0xcf, 0xca, 0xc9, 0xd8, 0xdb, 0xde, 0xdd, 0xd4, 0xd7, 0xd2, 0xd1, 0xf0, + 0xf3, 0xf6, 0xf5, 0xfc, 0xff, 0xfa, 0xf9, 0xe8, 0xeb, 0xee, 0xed, 0xe4, 0xe7, 0xe2, 0xe1, 0xa0, + 0xa3, 0xa6, 0xa5, 0xac, 0xaf, 0xaa, 0xa9, 0xb8, 0xbb, 0xbe, 0xbd, 0xb4, 0xb7, 0xb2, 0xb1, 0x90, + 0x93, 0x96, 0x95, 0x9c, 0x9f, 0x9a, 0x99, 0x88, 0x8b, 0x8e, 0x8d, 0x84, 0x87, 0x82, 0x81, 0x9d, + 0x9e, 0x9b, 0x98, 0x91, 0x92, 0x97, 0x94, 0x85, 0x86, 0x83, 0x80, 0x89, 0x8a, 0x8f, 0x8c, 0xad, + 0xae, 0xab, 0xa8, 0xa1, 0xa2, 0xa7, 0xa4, 0xb5, 0xb6, 0xb3, 0xb0, 0xb9, 0xba, 0xbf, 0xbc, 0xfd, + 0xfe, 0xfb, 0xf8, 0xf1, 0xf2, 0xf7, 0xf4, 0xe5, 0xe6, 0xe3, 0xe0, 0xe9, 0xea, 0xef, 0xec, 0xcd, + 0xce, 0xcb, 0xc8, 0xc1, 0xc2, 0xc7, 0xc4, 0xd5, 0xd6, 0xd3, 0xd0, 0xd9, 0xda, 0xdf, 0xdc, 0x5d, + 0x5e, 0x5b, 0x58, 0x51, 0x52, 0x57, 0x54, 0x45, 0x46, 0x43, 0x40, 0x49, 0x4a, 0x4f, 0x4c, 0x6d, + 0x6e, 0x6b, 0x68, 0x61, 0x62, 0x67, 0x64, 0x75, 0x76, 0x73, 0x70, 0x79, 0x7a, 0x7f, 0x7c, 0x3d, + 0x3e, 0x3b, 0x38, 0x31, 0x32, 0x37, 0x34, 0x25, 0x26, 0x23, 0x20, 0x29, 0x2a, 0x2f, 0x2c, 0xd, + 0xe, 0xb, 0x8, 0x1, 0x2, 0x7, 0x4, 0x15, 0x16, 0x13, 0x10, 0x19, 0x1a, 0x1f, 0x1c, + ], + [ + 0x0, 0x4, 0x8, 0xc, 0x10, 0x14, 0x18, 0x1c, 0x20, 0x24, 0x28, 0x2c, 0x30, 0x34, 0x38, 0x3c, + 0x40, 0x44, 0x48, 0x4c, 0x50, 0x54, 0x58, 0x5c, 0x60, 0x64, 0x68, 0x6c, 0x70, 0x74, 0x78, 0x7c, + 0x80, 0x84, 0x88, 0x8c, 0x90, 0x94, 0x98, 0x9c, 0xa0, 0xa4, 0xa8, 0xac, 0xb0, 0xb4, 0xb8, 0xbc, + 0xc0, 0xc4, 0xc8, 0xcc, 0xd0, 0xd4, 0xd8, 0xdc, 0xe0, 0xe4, 0xe8, 0xec, 0xf0, 0xf4, 0xf8, 0xfc, + 0x1d, 0x19, 0x15, 0x11, 0xd, 0x9, 0x5, 0x1, 0x3d, 0x39, 0x35, 0x31, 0x2d, 0x29, 0x25, 0x21, + 0x5d, 0x59, 0x55, 0x51, 0x4d, 0x49, 0x45, 0x41, 0x7d, 0x79, 0x75, 0x71, 0x6d, 0x69, 0x65, 0x61, + 0x9d, 0x99, 0x95, 0x91, 0x8d, 0x89, 0x85, 0x81, 0xbd, 0xb9, 0xb5, 0xb1, 0xad, 0xa9, 0xa5, 0xa1, + 0xdd, 0xd9, 0xd5, 0xd1, 0xcd, 0xc9, 0xc5, 0xc1, 0xfd, 0xf9, 0xf5, 0xf1, 0xed, 0xe9, 0xe5, 0xe1, + 0x3a, 0x3e, 0x32, 0x36, 0x2a, 0x2e, 0x22, 0x26, 0x1a, 0x1e, 0x12, 0x16, 0xa, 0xe, 0x2, 0x6, + 0x7a, 0x7e, 0x72, 0x76, 0x6a, 0x6e, 0x62, 0x66, 0x5a, 0x5e, 0x52, 0x56, 0x4a, 0x4e, 0x42, 0x46, + 0xba, 0xbe, 0xb2, 0xb6, 0xaa, 0xae, 0xa2, 0xa6, 0x9a, 0x9e, 0x92, 0x96, 0x8a, 0x8e, 0x82, 0x86, + 0xfa, 0xfe, 0xf2, 0xf6, 0xea, 0xee, 0xe2, 0xe6, 0xda, 0xde, 0xd2, 0xd6, 0xca, 0xce, 0xc2, 0xc6, + 0x27, 0x23, 0x2f, 0x2b, 0x37, 0x33, 0x3f, 0x3b, 0x7, 0x3, 0xf, 0xb, 0x17, 0x13, 0x1f, 0x1b, + 0x67, 0x63, 0x6f, 0x6b, 0x77, 0x73, 0x7f, 0x7b, 0x47, 0x43, 0x4f, 0x4b, 0x57, 0x53, 0x5f, 0x5b, + 0xa7, 0xa3, 0xaf, 0xab, 0xb7, 0xb3, 0xbf, 0xbb, 0x87, 0x83, 0x8f, 0x8b, 0x97, 0x93, 0x9f, 0x9b, + 0xe7, 0xe3, 0xef, 0xeb, 0xf7, 0xf3, 0xff, 0xfb, 0xc7, 0xc3, 0xcf, 0xcb, 0xd7, 0xd3, 0xdf, 0xdb, + ], + [ + 0x0, 0x5, 0xa, 0xf, 0x14, 0x11, 0x1e, 0x1b, 0x28, 0x2d, 0x22, 0x27, 0x3c, 0x39, 0x36, 0x33, + 0x50, 0x55, 0x5a, 0x5f, 0x44, 0x41, 0x4e, 0x4b, 0x78, 0x7d, 0x72, 0x77, 0x6c, 0x69, 0x66, 0x63, + 0xa0, 0xa5, 0xaa, 0xaf, 0xb4, 0xb1, 0xbe, 0xbb, 0x88, 0x8d, 0x82, 0x87, 0x9c, 0x99, 0x96, 0x93, + 0xf0, 0xf5, 0xfa, 0xff, 0xe4, 0xe1, 0xee, 0xeb, 0xd8, 0xdd, 0xd2, 0xd7, 0xcc, 0xc9, 0xc6, 0xc3, + 0x5d, 0x58, 0x57, 0x52, 0x49, 0x4c, 0x43, 0x46, 0x75, 0x70, 0x7f, 0x7a, 0x61, 0x64, 0x6b, 0x6e, + 0xd, 0x8, 0x7, 0x2, 0x19, 0x1c, 0x13, 0x16, 0x25, 0x20, 0x2f, 0x2a, 0x31, 0x34, 0x3b, 0x3e, + 0xfd, 0xf8, 0xf7, 0xf2, 0xe9, 0xec, 0xe3, 0xe6, 0xd5, 0xd0, 0xdf, 0xda, 0xc1, 0xc4, 0xcb, 0xce, + 0xad, 0xa8, 0xa7, 0xa2, 0xb9, 0xbc, 0xb3, 0xb6, 0x85, 0x80, 0x8f, 0x8a, 0x91, 0x94, 0x9b, 0x9e, + 0xba, 0xbf, 0xb0, 0xb5, 0xae, 0xab, 0xa4, 0xa1, 0x92, 0x97, 0x98, 0x9d, 0x86, 0x83, 0x8c, 0x89, + 0xea, 0xef, 0xe0, 0xe5, 0xfe, 0xfb, 0xf4, 0xf1, 0xc2, 0xc7, 0xc8, 0xcd, 0xd6, 0xd3, 0xdc, 0xd9, + 0x1a, 0x1f, 0x10, 0x15, 0xe, 0xb, 0x4, 0x1, 0x32, 0x37, 0x38, 0x3d, 0x26, 0x23, 0x2c, 0x29, + 0x4a, 0x4f, 0x40, 0x45, 0x5e, 0x5b, 0x54, 0x51, 0x62, 0x67, 0x68, 0x6d, 0x76, 0x73, 0x7c, 0x79, + 0xe7, 0xe2, 0xed, 0xe8, 0xf3, 0xf6, 0xf9, 0xfc, 0xcf, 0xca, 0xc5, 0xc0, 0xdb, 0xde, 0xd1, 0xd4, + 0xb7, 0xb2, 0xbd, 0xb8, 0xa3, 0xa6, 0xa9, 0xac, 0x9f, 0x9a, 0x95, 0x90, 0x8b, 0x8e, 0x81, 0x84, + 0x47, 0x42, 0x4d, 0x48, 0x53, 0x56, 0x59, 0x5c, 0x6f, 0x6a, 0x65, 0x60, 0x7b, 0x7e, 0x71, 0x74, + 0x17, 0x12, 0x1d, 0x18, 0x3, 0x6, 0x9, 0xc, 0x3f, 0x3a, 0x35, 0x30, 0x2b, 0x2e, 0x21, 0x24, + ], + [ + 0x0, 0x6, 0xc, 0xa, 0x18, 0x1e, 0x14, 0x12, 0x30, 0x36, 0x3c, 0x3a, 0x28, 0x2e, 0x24, 0x22, + 0x60, 0x66, 0x6c, 0x6a, 0x78, 0x7e, 0x74, 0x72, 0x50, 0x56, 0x5c, 0x5a, 0x48, 0x4e, 0x44, 0x42, + 0xc0, 0xc6, 0xcc, 0xca, 0xd8, 0xde, 0xd4, 0xd2, 0xf0, 0xf6, 0xfc, 0xfa, 0xe8, 0xee, 0xe4, 0xe2, + 0xa0, 0xa6, 0xac, 0xaa, 0xb8, 0xbe, 0xb4, 0xb2, 0x90, 0x96, 0x9c, 0x9a, 0x88, 0x8e, 0x84, 0x82, + 0x9d, 0x9b, 0x91, 0x97, 0x85, 0x83, 0x89, 0x8f, 0xad, 0xab, 0xa1, 0xa7, 0xb5, 0xb3, 0xb9, 0xbf, + 0xfd, 0xfb, 0xf1, 0xf7, 0xe5, 0xe3, 0xe9, 0xef, 0xcd, 0xcb, 0xc1, 0xc7, 0xd5, 0xd3, 0xd9, 0xdf, + 0x5d, 0x5b, 0x51, 0x57, 0x45, 0x43, 0x49, 0x4f, 0x6d, 0x6b, 0x61, 0x67, 0x75, 0x73, 0x79, 0x7f, + 0x3d, 0x3b, 0x31, 0x37, 0x25, 0x23, 0x29, 0x2f, 0xd, 0xb, 0x1, 0x7, 0x15, 0x13, 0x19, 0x1f, + 0x27, 0x21, 0x2b, 0x2d, 0x3f, 0x39, 0x33, 0x35, 0x17, 0x11, 0x1b, 0x1d, 0xf, 0x9, 0x3, 0x5, + 0x47, 0x41, 0x4b, 0x4d, 0x5f, 0x59, 0x53, 0x55, 0x77, 0x71, 0x7b, 0x7d, 0x6f, 0x69, 0x63, 0x65, + 0xe7, 0xe1, 0xeb, 0xed, 0xff, 0xf9, 0xf3, 0xf5, 0xd7, 0xd1, 0xdb, 0xdd, 0xcf, 0xc9, 0xc3, 0xc5, + 0x87, 0x81, 0x8b, 0x8d, 0x9f, 0x99, 0x93, 0x95, 0xb7, 0xb1, 0xbb, 0xbd, 0xaf, 0xa9, 0xa3, 0xa5, + 0xba, 0xbc, 0xb6, 0xb0, 0xa2, 0xa4, 0xae, 0xa8, 0x8a, 0x8c, 0x86, 0x80, 0x92, 0x94, 0x9e, 0x98, + 0xda, 0xdc, 0xd6, 0xd0, 0xc2, 0xc4, 0xce, 0xc8, 0xea, 0xec, 0xe6, 0xe0, 0xf2, 0xf4, 0xfe, 0xf8, + 0x7a, 0x7c, 0x76, 0x70, 0x62, 0x64, 0x6e, 0x68, 0x4a, 0x4c, 0x46, 0x40, 0x52, 0x54, 0x5e, 0x58, + 0x1a, 0x1c, 0x16, 0x10, 0x2, 0x4, 0xe, 0x8, 0x2a, 0x2c, 0x26, 0x20, 0x32, 0x34, 0x3e, 0x38, + ], + [ + 0x0, 0x7, 0xe, 0x9, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d, + 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65, 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d, + 0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5, 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd, + 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85, 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd, + 0xdd, 0xda, 0xd3, 0xd4, 0xc1, 0xc6, 0xcf, 0xc8, 0xe5, 0xe2, 0xeb, 0xec, 0xf9, 0xfe, 0xf7, 0xf0, + 0xad, 0xaa, 0xa3, 0xa4, 0xb1, 0xb6, 0xbf, 0xb8, 0x95, 0x92, 0x9b, 0x9c, 0x89, 0x8e, 0x87, 0x80, + 0x3d, 0x3a, 0x33, 0x34, 0x21, 0x26, 0x2f, 0x28, 0x5, 0x2, 0xb, 0xc, 0x19, 0x1e, 0x17, 0x10, + 0x4d, 0x4a, 0x43, 0x44, 0x51, 0x56, 0x5f, 0x58, 0x75, 0x72, 0x7b, 0x7c, 0x69, 0x6e, 0x67, 0x60, + 0xa7, 0xa0, 0xa9, 0xae, 0xbb, 0xbc, 0xb5, 0xb2, 0x9f, 0x98, 0x91, 0x96, 0x83, 0x84, 0x8d, 0x8a, + 0xd7, 0xd0, 0xd9, 0xde, 0xcb, 0xcc, 0xc5, 0xc2, 0xef, 0xe8, 0xe1, 0xe6, 0xf3, 0xf4, 0xfd, 0xfa, + 0x47, 0x40, 0x49, 0x4e, 0x5b, 0x5c, 0x55, 0x52, 0x7f, 0x78, 0x71, 0x76, 0x63, 0x64, 0x6d, 0x6a, + 0x37, 0x30, 0x39, 0x3e, 0x2b, 0x2c, 0x25, 0x22, 0xf, 0x8, 0x1, 0x6, 0x13, 0x14, 0x1d, 0x1a, + 0x7a, 0x7d, 0x74, 0x73, 0x66, 0x61, 0x68, 0x6f, 0x42, 0x45, 0x4c, 0x4b, 0x5e, 0x59, 0x50, 0x57, + 0xa, 0xd, 0x4, 0x3, 0x16, 0x11, 0x18, 0x1f, 0x32, 0x35, 0x3c, 0x3b, 0x2e, 0x29, 0x20, 0x27, + 0x9a, 0x9d, 0x94, 0x93, 0x86, 0x81, 0x88, 0x8f, 0xa2, 0xa5, 0xac, 0xab, 0xbe, 0xb9, 0xb0, 0xb7, + 0xea, 0xed, 0xe4, 0xe3, 0xf6, 0xf1, 0xf8, 0xff, 0xd2, 0xd5, 0xdc, 0xdb, 0xce, 0xc9, 0xc0, 0xc7, + ], + [ + 0x0, 0x8, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, 0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78, + 0x80, 0x88, 0x90, 0x98, 0xa0, 0xa8, 0xb0, 0xb8, 0xc0, 0xc8, 0xd0, 0xd8, 0xe0, 0xe8, 0xf0, 0xf8, + 0x1d, 0x15, 0xd, 0x5, 0x3d, 0x35, 0x2d, 0x25, 0x5d, 0x55, 0x4d, 0x45, 0x7d, 0x75, 0x6d, 0x65, + 0x9d, 0x95, 0x8d, 0x85, 0xbd, 0xb5, 0xad, 0xa5, 0xdd, 0xd5, 0xcd, 0xc5, 0xfd, 0xf5, 0xed, 0xe5, + 0x3a, 0x32, 0x2a, 0x22, 0x1a, 0x12, 0xa, 0x2, 0x7a, 0x72, 0x6a, 0x62, 0x5a, 0x52, 0x4a, 0x42, + 0xba, 0xb2, 0xaa, 0xa2, 0x9a, 0x92, 0x8a, 0x82, 0xfa, 0xf2, 0xea, 0xe2, 0xda, 0xd2, 0xca, 0xc2, + 0x27, 0x2f, 0x37, 0x3f, 0x7, 0xf, 0x17, 0x1f, 0x67, 0x6f, 0x77, 0x7f, 0x47, 0x4f, 0x57, 0x5f, + 0xa7, 0xaf, 0xb7, 0xbf, 0x87, 0x8f, 0x97, 0x9f, 0xe7, 0xef, 0xf7, 0xff, 0xc7, 0xcf, 0xd7, 0xdf, + 0x74, 0x7c, 0x64, 0x6c, 0x54, 0x5c, 0x44, 0x4c, 0x34, 0x3c, 0x24, 0x2c, 0x14, 0x1c, 0x4, 0xc, + 0xf4, 0xfc, 0xe4, 0xec, 0xd4, 0xdc, 0xc4, 0xcc, 0xb4, 0xbc, 0xa4, 0xac, 0x94, 0x9c, 0x84, 0x8c, + 0x69, 0x61, 0x79, 0x71, 0x49, 0x41, 0x59, 0x51, 0x29, 0x21, 0x39, 0x31, 0x9, 0x1, 0x19, 0x11, + 0xe9, 0xe1, 0xf9, 0xf1, 0xc9, 0xc1, 0xd9, 0xd1, 0xa9, 0xa1, 0xb9, 0xb1, 0x89, 0x81, 0x99, 0x91, + 0x4e, 0x46, 0x5e, 0x56, 0x6e, 0x66, 0x7e, 0x76, 0xe, 0x6, 0x1e, 0x16, 0x2e, 0x26, 0x3e, 0x36, + 0xce, 0xc6, 0xde, 0xd6, 0xee, 0xe6, 0xfe, 0xf6, 0x8e, 0x86, 0x9e, 0x96, 0xae, 0xa6, 0xbe, 0xb6, + 0x53, 0x5b, 0x43, 0x4b, 0x73, 0x7b, 0x63, 0x6b, 0x13, 0x1b, 0x3, 0xb, 0x33, 0x3b, 0x23, 0x2b, + 0xd3, 0xdb, 0xc3, 0xcb, 0xf3, 0xfb, 0xe3, 0xeb, 0x93, 0x9b, 0x83, 0x8b, 0xb3, 0xbb, 0xa3, 0xab, + ], + [ + 0x0, 0x9, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77, + 0x90, 0x99, 0x82, 0x8b, 0xb4, 0xbd, 0xa6, 0xaf, 0xd8, 0xd1, 0xca, 0xc3, 0xfc, 0xf5, 0xee, 0xe7, + 0x3d, 0x34, 0x2f, 0x26, 0x19, 0x10, 0xb, 0x2, 0x75, 0x7c, 0x67, 0x6e, 0x51, 0x58, 0x43, 0x4a, + 0xad, 0xa4, 0xbf, 0xb6, 0x89, 0x80, 0x9b, 0x92, 0xe5, 0xec, 0xf7, 0xfe, 0xc1, 0xc8, 0xd3, 0xda, + 0x7a, 0x73, 0x68, 0x61, 0x5e, 0x57, 0x4c, 0x45, 0x32, 0x3b, 0x20, 0x29, 0x16, 0x1f, 0x4, 0xd, + 0xea, 0xe3, 0xf8, 0xf1, 0xce, 0xc7, 0xdc, 0xd5, 0xa2, 0xab, 0xb0, 0xb9, 0x86, 0x8f, 0x94, 0x9d, + 0x47, 0x4e, 0x55, 0x5c, 0x63, 0x6a, 0x71, 0x78, 0xf, 0x6, 0x1d, 0x14, 0x2b, 0x22, 0x39, 0x30, + 0xd7, 0xde, 0xc5, 0xcc, 0xf3, 0xfa, 0xe1, 0xe8, 0x9f, 0x96, 0x8d, 0x84, 0xbb, 0xb2, 0xa9, 0xa0, + 0xf4, 0xfd, 0xe6, 0xef, 0xd0, 0xd9, 0xc2, 0xcb, 0xbc, 0xb5, 0xae, 0xa7, 0x98, 0x91, 0x8a, 0x83, + 0x64, 0x6d, 0x76, 0x7f, 0x40, 0x49, 0x52, 0x5b, 0x2c, 0x25, 0x3e, 0x37, 0x8, 0x1, 0x1a, 0x13, + 0xc9, 0xc0, 0xdb, 0xd2, 0xed, 0xe4, 0xff, 0xf6, 0x81, 0x88, 0x93, 0x9a, 0xa5, 0xac, 0xb7, 0xbe, + 0x59, 0x50, 0x4b, 0x42, 0x7d, 0x74, 0x6f, 0x66, 0x11, 0x18, 0x3, 0xa, 0x35, 0x3c, 0x27, 0x2e, + 0x8e, 0x87, 0x9c, 0x95, 0xaa, 0xa3, 0xb8, 0xb1, 0xc6, 0xcf, 0xd4, 0xdd, 0xe2, 0xeb, 0xf0, 0xf9, + 0x1e, 0x17, 0xc, 0x5, 0x3a, 0x33, 0x28, 0x21, 0x56, 0x5f, 0x44, 0x4d, 0x72, 0x7b, 0x60, 0x69, + 0xb3, 0xba, 0xa1, 0xa8, 0x97, 0x9e, 0x85, 0x8c, 0xfb, 0xf2, 0xe9, 0xe0, 0xdf, 0xd6, 0xcd, 0xc4, + 0x23, 0x2a, 0x31, 0x38, 0x7, 0xe, 0x15, 0x1c, 0x6b, 0x62, 0x79, 0x70, 0x4f, 0x46, 0x5d, 0x54, + ], + [ + 0x0, 0xa, 0x14, 0x1e, 0x28, 0x22, 0x3c, 0x36, 0x50, 0x5a, 0x44, 0x4e, 0x78, 0x72, 0x6c, 0x66, + 0xa0, 0xaa, 0xb4, 0xbe, 0x88, 0x82, 0x9c, 0x96, 0xf0, 0xfa, 0xe4, 0xee, 0xd8, 0xd2, 0xcc, 0xc6, + 0x5d, 0x57, 0x49, 0x43, 0x75, 0x7f, 0x61, 0x6b, 0xd, 0x7, 0x19, 0x13, 0x25, 0x2f, 0x31, 0x3b, + 0xfd, 0xf7, 0xe9, 0xe3, 0xd5, 0xdf, 0xc1, 0xcb, 0xad, 0xa7, 0xb9, 0xb3, 0x85, 0x8f, 0x91, 0x9b, + 0xba, 0xb0, 0xae, 0xa4, 0x92, 0x98, 0x86, 0x8c, 0xea, 0xe0, 0xfe, 0xf4, 0xc2, 0xc8, 0xd6, 0xdc, + 0x1a, 0x10, 0xe, 0x4, 0x32, 0x38, 0x26, 0x2c, 0x4a, 0x40, 0x5e, 0x54, 0x62, 0x68, 0x76, 0x7c, + 0xe7, 0xed, 0xf3, 0xf9, 0xcf, 0xc5, 0xdb, 0xd1, 0xb7, 0xbd, 0xa3, 0xa9, 0x9f, 0x95, 0x8b, 0x81, + 0x47, 0x4d, 0x53, 0x59, 0x6f, 0x65, 0x7b, 0x71, 0x17, 0x1d, 0x3, 0x9, 0x3f, 0x35, 0x2b, 0x21, + 0x69, 0x63, 0x7d, 0x77, 0x41, 0x4b, 0x55, 0x5f, 0x39, 0x33, 0x2d, 0x27, 0x11, 0x1b, 0x5, 0xf, + 0xc9, 0xc3, 0xdd, 0xd7, 0xe1, 0xeb, 0xf5, 0xff, 0x99, 0x93, 0x8d, 0x87, 0xb1, 0xbb, 0xa5, 0xaf, + 0x34, 0x3e, 0x20, 0x2a, 0x1c, 0x16, 0x8, 0x2, 0x64, 0x6e, 0x70, 0x7a, 0x4c, 0x46, 0x58, 0x52, + 0x94, 0x9e, 0x80, 0x8a, 0xbc, 0xb6, 0xa8, 0xa2, 0xc4, 0xce, 0xd0, 0xda, 0xec, 0xe6, 0xf8, 0xf2, + 0xd3, 0xd9, 0xc7, 0xcd, 0xfb, 0xf1, 0xef, 0xe5, 0x83, 0x89, 0x97, 0x9d, 0xab, 0xa1, 0xbf, 0xb5, + 0x73, 0x79, 0x67, 0x6d, 0x5b, 0x51, 0x4f, 0x45, 0x23, 0x29, 0x37, 0x3d, 0xb, 0x1, 0x1f, 0x15, + 0x8e, 0x84, 0x9a, 0x90, 0xa6, 0xac, 0xb2, 0xb8, 0xde, 0xd4, 0xca, 0xc0, 0xf6, 0xfc, 0xe2, 0xe8, + 0x2e, 0x24, 0x3a, 0x30, 0x6, 0xc, 0x12, 0x18, 0x7e, 0x74, 0x6a, 0x60, 0x56, 0x5c, 0x42, 0x48, + ], + [ + 0x0, 0xb, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69, + 0xb0, 0xbb, 0xa6, 0xad, 0x9c, 0x97, 0x8a, 0x81, 0xe8, 0xe3, 0xfe, 0xf5, 0xc4, 0xcf, 0xd2, 0xd9, + 0x7d, 0x76, 0x6b, 0x60, 0x51, 0x5a, 0x47, 0x4c, 0x25, 0x2e, 0x33, 0x38, 0x9, 0x2, 0x1f, 0x14, + 0xcd, 0xc6, 0xdb, 0xd0, 0xe1, 0xea, 0xf7, 0xfc, 0x95, 0x9e, 0x83, 0x88, 0xb9, 0xb2, 0xaf, 0xa4, + 0xfa, 0xf1, 0xec, 0xe7, 0xd6, 0xdd, 0xc0, 0xcb, 0xa2, 0xa9, 0xb4, 0xbf, 0x8e, 0x85, 0x98, 0x93, + 0x4a, 0x41, 0x5c, 0x57, 0x66, 0x6d, 0x70, 0x7b, 0x12, 0x19, 0x4, 0xf, 0x3e, 0x35, 0x28, 0x23, + 0x87, 0x8c, 0x91, 0x9a, 0xab, 0xa0, 0xbd, 0xb6, 0xdf, 0xd4, 0xc9, 0xc2, 0xf3, 0xf8, 0xe5, 0xee, + 0x37, 0x3c, 0x21, 0x2a, 0x1b, 0x10, 0xd, 0x6, 0x6f, 0x64, 0x79, 0x72, 0x43, 0x48, 0x55, 0x5e, + 0xe9, 0xe2, 0xff, 0xf4, 0xc5, 0xce, 0xd3, 0xd8, 0xb1, 0xba, 0xa7, 0xac, 0x9d, 0x96, 0x8b, 0x80, + 0x59, 0x52, 0x4f, 0x44, 0x75, 0x7e, 0x63, 0x68, 0x1, 0xa, 0x17, 0x1c, 0x2d, 0x26, 0x3b, 0x30, + 0x94, 0x9f, 0x82, 0x89, 0xb8, 0xb3, 0xae, 0xa5, 0xcc, 0xc7, 0xda, 0xd1, 0xe0, 0xeb, 0xf6, 0xfd, + 0x24, 0x2f, 0x32, 0x39, 0x8, 0x3, 0x1e, 0x15, 0x7c, 0x77, 0x6a, 0x61, 0x50, 0x5b, 0x46, 0x4d, + 0x13, 0x18, 0x5, 0xe, 0x3f, 0x34, 0x29, 0x22, 0x4b, 0x40, 0x5d, 0x56, 0x67, 0x6c, 0x71, 0x7a, + 0xa3, 0xa8, 0xb5, 0xbe, 0x8f, 0x84, 0x99, 0x92, 0xfb, 0xf0, 0xed, 0xe6, 0xd7, 0xdc, 0xc1, 0xca, + 0x6e, 0x65, 0x78, 0x73, 0x42, 0x49, 0x54, 0x5f, 0x36, 0x3d, 0x20, 0x2b, 0x1a, 0x11, 0xc, 0x7, + 0xde, 0xd5, 0xc8, 0xc3, 0xf2, 0xf9, 0xe4, 0xef, 0x86, 0x8d, 0x90, 0x9b, 0xaa, 0xa1, 0xbc, 0xb7, + ], + [ + 0x0, 0xc, 0x18, 0x14, 0x30, 0x3c, 0x28, 0x24, 0x60, 0x6c, 0x78, 0x74, 0x50, 0x5c, 0x48, 0x44, + 0xc0, 0xcc, 0xd8, 0xd4, 0xf0, 0xfc, 0xe8, 0xe4, 0xa0, 0xac, 0xb8, 0xb4, 0x90, 0x9c, 0x88, 0x84, + 0x9d, 0x91, 0x85, 0x89, 0xad, 0xa1, 0xb5, 0xb9, 0xfd, 0xf1, 0xe5, 0xe9, 0xcd, 0xc1, 0xd5, 0xd9, + 0x5d, 0x51, 0x45, 0x49, 0x6d, 0x61, 0x75, 0x79, 0x3d, 0x31, 0x25, 0x29, 0xd, 0x1, 0x15, 0x19, + 0x27, 0x2b, 0x3f, 0x33, 0x17, 0x1b, 0xf, 0x3, 0x47, 0x4b, 0x5f, 0x53, 0x77, 0x7b, 0x6f, 0x63, + 0xe7, 0xeb, 0xff, 0xf3, 0xd7, 0xdb, 0xcf, 0xc3, 0x87, 0x8b, 0x9f, 0x93, 0xb7, 0xbb, 0xaf, 0xa3, + 0xba, 0xb6, 0xa2, 0xae, 0x8a, 0x86, 0x92, 0x9e, 0xda, 0xd6, 0xc2, 0xce, 0xea, 0xe6, 0xf2, 0xfe, + 0x7a, 0x76, 0x62, 0x6e, 0x4a, 0x46, 0x52, 0x5e, 0x1a, 0x16, 0x2, 0xe, 0x2a, 0x26, 0x32, 0x3e, + 0x4e, 0x42, 0x56, 0x5a, 0x7e, 0x72, 0x66, 0x6a, 0x2e, 0x22, 0x36, 0x3a, 0x1e, 0x12, 0x6, 0xa, + 0x8e, 0x82, 0x96, 0x9a, 0xbe, 0xb2, 0xa6, 0xaa, 0xee, 0xe2, 0xf6, 0xfa, 0xde, 0xd2, 0xc6, 0xca, + 0xd3, 0xdf, 0xcb, 0xc7, 0xe3, 0xef, 0xfb, 0xf7, 0xb3, 0xbf, 0xab, 0xa7, 0x83, 0x8f, 0x9b, 0x97, + 0x13, 0x1f, 0xb, 0x7, 0x23, 0x2f, 0x3b, 0x37, 0x73, 0x7f, 0x6b, 0x67, 0x43, 0x4f, 0x5b, 0x57, + 0x69, 0x65, 0x71, 0x7d, 0x59, 0x55, 0x41, 0x4d, 0x9, 0x5, 0x11, 0x1d, 0x39, 0x35, 0x21, 0x2d, + 0xa9, 0xa5, 0xb1, 0xbd, 0x99, 0x95, 0x81, 0x8d, 0xc9, 0xc5, 0xd1, 0xdd, 0xf9, 0xf5, 0xe1, 0xed, + 0xf4, 0xf8, 0xec, 0xe0, 0xc4, 0xc8, 0xdc, 0xd0, 0x94, 0x98, 0x8c, 0x80, 0xa4, 0xa8, 0xbc, 0xb0, + 0x34, 0x38, 0x2c, 0x20, 0x4, 0x8, 0x1c, 0x10, 0x54, 0x58, 0x4c, 0x40, 0x64, 0x68, 0x7c, 0x70, + ], + [ + 0x0, 0xd, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b, + 0xd0, 0xdd, 0xca, 0xc7, 0xe4, 0xe9, 0xfe, 0xf3, 0xb8, 0xb5, 0xa2, 0xaf, 0x8c, 0x81, 0x96, 0x9b, + 0xbd, 0xb0, 0xa7, 0xaa, 0x89, 0x84, 0x93, 0x9e, 0xd5, 0xd8, 0xcf, 0xc2, 0xe1, 0xec, 0xfb, 0xf6, + 0x6d, 0x60, 0x77, 0x7a, 0x59, 0x54, 0x43, 0x4e, 0x5, 0x8, 0x1f, 0x12, 0x31, 0x3c, 0x2b, 0x26, + 0x67, 0x6a, 0x7d, 0x70, 0x53, 0x5e, 0x49, 0x44, 0xf, 0x2, 0x15, 0x18, 0x3b, 0x36, 0x21, 0x2c, + 0xb7, 0xba, 0xad, 0xa0, 0x83, 0x8e, 0x99, 0x94, 0xdf, 0xd2, 0xc5, 0xc8, 0xeb, 0xe6, 0xf1, 0xfc, + 0xda, 0xd7, 0xc0, 0xcd, 0xee, 0xe3, 0xf4, 0xf9, 0xb2, 0xbf, 0xa8, 0xa5, 0x86, 0x8b, 0x9c, 0x91, + 0xa, 0x7, 0x10, 0x1d, 0x3e, 0x33, 0x24, 0x29, 0x62, 0x6f, 0x78, 0x75, 0x56, 0x5b, 0x4c, 0x41, + 0xce, 0xc3, 0xd4, 0xd9, 0xfa, 0xf7, 0xe0, 0xed, 0xa6, 0xab, 0xbc, 0xb1, 0x92, 0x9f, 0x88, 0x85, + 0x1e, 0x13, 0x4, 0x9, 0x2a, 0x27, 0x30, 0x3d, 0x76, 0x7b, 0x6c, 0x61, 0x42, 0x4f, 0x58, 0x55, + 0x73, 0x7e, 0x69, 0x64, 0x47, 0x4a, 0x5d, 0x50, 0x1b, 0x16, 0x1, 0xc, 0x2f, 0x22, 0x35, 0x38, + 0xa3, 0xae, 0xb9, 0xb4, 0x97, 0x9a, 0x8d, 0x80, 0xcb, 0xc6, 0xd1, 0xdc, 0xff, 0xf2, 0xe5, 0xe8, + 0xa9, 0xa4, 0xb3, 0xbe, 0x9d, 0x90, 0x87, 0x8a, 0xc1, 0xcc, 0xdb, 0xd6, 0xf5, 0xf8, 0xef, 0xe2, + 0x79, 0x74, 0x63, 0x6e, 0x4d, 0x40, 0x57, 0x5a, 0x11, 0x1c, 0xb, 0x6, 0x25, 0x28, 0x3f, 0x32, + 0x14, 0x19, 0xe, 0x3, 0x20, 0x2d, 0x3a, 0x37, 0x7c, 0x71, 0x66, 0x6b, 0x48, 0x45, 0x52, 0x5f, + 0xc4, 0xc9, 0xde, 0xd3, 0xf0, 0xfd, 0xea, 0xe7, 0xac, 0xa1, 0xb6, 0xbb, 0x98, 0x95, 0x82, 0x8f, + ], + [ + 0x0, 0xe, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a, + 0xe0, 0xee, 0xfc, 0xf2, 0xd8, 0xd6, 0xc4, 0xca, 0x90, 0x9e, 0x8c, 0x82, 0xa8, 0xa6, 0xb4, 0xba, + 0xdd, 0xd3, 0xc1, 0xcf, 0xe5, 0xeb, 0xf9, 0xf7, 0xad, 0xa3, 0xb1, 0xbf, 0x95, 0x9b, 0x89, 0x87, + 0x3d, 0x33, 0x21, 0x2f, 0x5, 0xb, 0x19, 0x17, 0x4d, 0x43, 0x51, 0x5f, 0x75, 0x7b, 0x69, 0x67, + 0xa7, 0xa9, 0xbb, 0xb5, 0x9f, 0x91, 0x83, 0x8d, 0xd7, 0xd9, 0xcb, 0xc5, 0xef, 0xe1, 0xf3, 0xfd, + 0x47, 0x49, 0x5b, 0x55, 0x7f, 0x71, 0x63, 0x6d, 0x37, 0x39, 0x2b, 0x25, 0xf, 0x1, 0x13, 0x1d, + 0x7a, 0x74, 0x66, 0x68, 0x42, 0x4c, 0x5e, 0x50, 0xa, 0x4, 0x16, 0x18, 0x32, 0x3c, 0x2e, 0x20, + 0x9a, 0x94, 0x86, 0x88, 0xa2, 0xac, 0xbe, 0xb0, 0xea, 0xe4, 0xf6, 0xf8, 0xd2, 0xdc, 0xce, 0xc0, + 0x53, 0x5d, 0x4f, 0x41, 0x6b, 0x65, 0x77, 0x79, 0x23, 0x2d, 0x3f, 0x31, 0x1b, 0x15, 0x7, 0x9, + 0xb3, 0xbd, 0xaf, 0xa1, 0x8b, 0x85, 0x97, 0x99, 0xc3, 0xcd, 0xdf, 0xd1, 0xfb, 0xf5, 0xe7, 0xe9, + 0x8e, 0x80, 0x92, 0x9c, 0xb6, 0xb8, 0xaa, 0xa4, 0xfe, 0xf0, 0xe2, 0xec, 0xc6, 0xc8, 0xda, 0xd4, + 0x6e, 0x60, 0x72, 0x7c, 0x56, 0x58, 0x4a, 0x44, 0x1e, 0x10, 0x2, 0xc, 0x26, 0x28, 0x3a, 0x34, + 0xf4, 0xfa, 0xe8, 0xe6, 0xcc, 0xc2, 0xd0, 0xde, 0x84, 0x8a, 0x98, 0x96, 0xbc, 0xb2, 0xa0, 0xae, + 0x14, 0x1a, 0x8, 0x6, 0x2c, 0x22, 0x30, 0x3e, 0x64, 0x6a, 0x78, 0x76, 0x5c, 0x52, 0x40, 0x4e, + 0x29, 0x27, 0x35, 0x3b, 0x11, 0x1f, 0xd, 0x3, 0x59, 0x57, 0x45, 0x4b, 0x61, 0x6f, 0x7d, 0x73, + 0xc9, 0xc7, 0xd5, 0xdb, 0xf1, 0xff, 0xed, 0xe3, 0xb9, 0xb7, 0xa5, 0xab, 0x81, 0x8f, 0x9d, 0x93, + ], + [ + 0x0, 0xf, 0x1e, 0x11, 0x3c, 0x33, 0x22, 0x2d, 0x78, 0x77, 0x66, 0x69, 0x44, 0x4b, 0x5a, 0x55, + 0xf0, 0xff, 0xee, 0xe1, 0xcc, 0xc3, 0xd2, 0xdd, 0x88, 0x87, 0x96, 0x99, 0xb4, 0xbb, 0xaa, 0xa5, + 0xfd, 0xf2, 0xe3, 0xec, 0xc1, 0xce, 0xdf, 0xd0, 0x85, 0x8a, 0x9b, 0x94, 0xb9, 0xb6, 0xa7, 0xa8, + 0xd, 0x2, 0x13, 0x1c, 0x31, 0x3e, 0x2f, 0x20, 0x75, 0x7a, 0x6b, 0x64, 0x49, 0x46, 0x57, 0x58, + 0xe7, 0xe8, 0xf9, 0xf6, 0xdb, 0xd4, 0xc5, 0xca, 0x9f, 0x90, 0x81, 0x8e, 0xa3, 0xac, 0xbd, 0xb2, + 0x17, 0x18, 0x9, 0x6, 0x2b, 0x24, 0x35, 0x3a, 0x6f, 0x60, 0x71, 0x7e, 0x53, 0x5c, 0x4d, 0x42, + 0x1a, 0x15, 0x4, 0xb, 0x26, 0x29, 0x38, 0x37, 0x62, 0x6d, 0x7c, 0x73, 0x5e, 0x51, 0x40, 0x4f, + 0xea, 0xe5, 0xf4, 0xfb, 0xd6, 0xd9, 0xc8, 0xc7, 0x92, 0x9d, 0x8c, 0x83, 0xae, 0xa1, 0xb0, 0xbf, + 0xd3, 0xdc, 0xcd, 0xc2, 0xef, 0xe0, 0xf1, 0xfe, 0xab, 0xa4, 0xb5, 0xba, 0x97, 0x98, 0x89, 0x86, + 0x23, 0x2c, 0x3d, 0x32, 0x1f, 0x10, 0x1, 0xe, 0x5b, 0x54, 0x45, 0x4a, 0x67, 0x68, 0x79, 0x76, + 0x2e, 0x21, 0x30, 0x3f, 0x12, 0x1d, 0xc, 0x3, 0x56, 0x59, 0x48, 0x47, 0x6a, 0x65, 0x74, 0x7b, + 0xde, 0xd1, 0xc0, 0xcf, 0xe2, 0xed, 0xfc, 0xf3, 0xa6, 0xa9, 0xb8, 0xb7, 0x9a, 0x95, 0x84, 0x8b, + 0x34, 0x3b, 0x2a, 0x25, 0x8, 0x7, 0x16, 0x19, 0x4c, 0x43, 0x52, 0x5d, 0x70, 0x7f, 0x6e, 0x61, + 0xc4, 0xcb, 0xda, 0xd5, 0xf8, 0xf7, 0xe6, 0xe9, 0xbc, 0xb3, 0xa2, 0xad, 0x80, 0x8f, 0x9e, 0x91, + 0xc9, 0xc6, 0xd7, 0xd8, 0xf5, 0xfa, 0xeb, 0xe4, 0xb1, 0xbe, 0xaf, 0xa0, 0x8d, 0x82, 0x93, 0x9c, + 0x39, 0x36, 0x27, 0x28, 0x5, 0xa, 0x1b, 0x14, 0x41, 0x4e, 0x5f, 0x50, 0x7d, 0x72, 0x63, 0x6c, + ], + [ + 0x0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0, + 0x1d, 0xd, 0x3d, 0x2d, 0x5d, 0x4d, 0x7d, 0x6d, 0x9d, 0x8d, 0xbd, 0xad, 0xdd, 0xcd, 0xfd, 0xed, + 0x3a, 0x2a, 0x1a, 0xa, 0x7a, 0x6a, 0x5a, 0x4a, 0xba, 0xaa, 0x9a, 0x8a, 0xfa, 0xea, 0xda, 0xca, + 0x27, 0x37, 0x7, 0x17, 0x67, 0x77, 0x47, 0x57, 0xa7, 0xb7, 0x87, 0x97, 0xe7, 0xf7, 0xc7, 0xd7, + 0x74, 0x64, 0x54, 0x44, 0x34, 0x24, 0x14, 0x4, 0xf4, 0xe4, 0xd4, 0xc4, 0xb4, 0xa4, 0x94, 0x84, + 0x69, 0x79, 0x49, 0x59, 0x29, 0x39, 0x9, 0x19, 0xe9, 0xf9, 0xc9, 0xd9, 0xa9, 0xb9, 0x89, 0x99, + 0x4e, 0x5e, 0x6e, 0x7e, 0xe, 0x1e, 0x2e, 0x3e, 0xce, 0xde, 0xee, 0xfe, 0x8e, 0x9e, 0xae, 0xbe, + 0x53, 0x43, 0x73, 0x63, 0x13, 0x3, 0x33, 0x23, 0xd3, 0xc3, 0xf3, 0xe3, 0x93, 0x83, 0xb3, 0xa3, + 0xe8, 0xf8, 0xc8, 0xd8, 0xa8, 0xb8, 0x88, 0x98, 0x68, 0x78, 0x48, 0x58, 0x28, 0x38, 0x8, 0x18, + 0xf5, 0xe5, 0xd5, 0xc5, 0xb5, 0xa5, 0x95, 0x85, 0x75, 0x65, 0x55, 0x45, 0x35, 0x25, 0x15, 0x5, + 0xd2, 0xc2, 0xf2, 0xe2, 0x92, 0x82, 0xb2, 0xa2, 0x52, 0x42, 0x72, 0x62, 0x12, 0x2, 0x32, 0x22, + 0xcf, 0xdf, 0xef, 0xff, 0x8f, 0x9f, 0xaf, 0xbf, 0x4f, 0x5f, 0x6f, 0x7f, 0xf, 0x1f, 0x2f, 0x3f, + 0x9c, 0x8c, 0xbc, 0xac, 0xdc, 0xcc, 0xfc, 0xec, 0x1c, 0xc, 0x3c, 0x2c, 0x5c, 0x4c, 0x7c, 0x6c, + 0x81, 0x91, 0xa1, 0xb1, 0xc1, 0xd1, 0xe1, 0xf1, 0x1, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71, + 0xa6, 0xb6, 0x86, 0x96, 0xe6, 0xf6, 0xc6, 0xd6, 0x26, 0x36, 0x6, 0x16, 0x66, 0x76, 0x46, 0x56, + 0xbb, 0xab, 0x9b, 0x8b, 0xfb, 0xeb, 0xdb, 0xcb, 0x3b, 0x2b, 0x1b, 0xb, 0x7b, 0x6b, 0x5b, 0x4b, + ], + [ + 0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, + 0xd, 0x1c, 0x2f, 0x3e, 0x49, 0x58, 0x6b, 0x7a, 0x85, 0x94, 0xa7, 0xb6, 0xc1, 0xd0, 0xe3, 0xf2, + 0x1a, 0xb, 0x38, 0x29, 0x5e, 0x4f, 0x7c, 0x6d, 0x92, 0x83, 0xb0, 0xa1, 0xd6, 0xc7, 0xf4, 0xe5, + 0x17, 0x6, 0x35, 0x24, 0x53, 0x42, 0x71, 0x60, 0x9f, 0x8e, 0xbd, 0xac, 0xdb, 0xca, 0xf9, 0xe8, + 0x34, 0x25, 0x16, 0x7, 0x70, 0x61, 0x52, 0x43, 0xbc, 0xad, 0x9e, 0x8f, 0xf8, 0xe9, 0xda, 0xcb, + 0x39, 0x28, 0x1b, 0xa, 0x7d, 0x6c, 0x5f, 0x4e, 0xb1, 0xa0, 0x93, 0x82, 0xf5, 0xe4, 0xd7, 0xc6, + 0x2e, 0x3f, 0xc, 0x1d, 0x6a, 0x7b, 0x48, 0x59, 0xa6, 0xb7, 0x84, 0x95, 0xe2, 0xf3, 0xc0, 0xd1, + 0x23, 0x32, 0x1, 0x10, 0x67, 0x76, 0x45, 0x54, 0xab, 0xba, 0x89, 0x98, 0xef, 0xfe, 0xcd, 0xdc, + 0x68, 0x79, 0x4a, 0x5b, 0x2c, 0x3d, 0xe, 0x1f, 0xe0, 0xf1, 0xc2, 0xd3, 0xa4, 0xb5, 0x86, 0x97, + 0x65, 0x74, 0x47, 0x56, 0x21, 0x30, 0x3, 0x12, 0xed, 0xfc, 0xcf, 0xde, 0xa9, 0xb8, 0x8b, 0x9a, + 0x72, 0x63, 0x50, 0x41, 0x36, 0x27, 0x14, 0x5, 0xfa, 0xeb, 0xd8, 0xc9, 0xbe, 0xaf, 0x9c, 0x8d, + 0x7f, 0x6e, 0x5d, 0x4c, 0x3b, 0x2a, 0x19, 0x8, 0xf7, 0xe6, 0xd5, 0xc4, 0xb3, 0xa2, 0x91, 0x80, + 0x5c, 0x4d, 0x7e, 0x6f, 0x18, 0x9, 0x3a, 0x2b, 0xd4, 0xc5, 0xf6, 0xe7, 0x90, 0x81, 0xb2, 0xa3, + 0x51, 0x40, 0x73, 0x62, 0x15, 0x4, 0x37, 0x26, 0xd9, 0xc8, 0xfb, 0xea, 0x9d, 0x8c, 0xbf, 0xae, + 0x46, 0x57, 0x64, 0x75, 0x2, 0x13, 0x20, 0x31, 0xce, 0xdf, 0xec, 0xfd, 0x8a, 0x9b, 0xa8, 0xb9, + 0x4b, 0x5a, 0x69, 0x78, 0xf, 0x1e, 0x2d, 0x3c, 0xc3, 0xd2, 0xe1, 0xf0, 0x87, 0x96, 0xa5, 0xb4, + ], + [ + 0x0, 0x12, 0x24, 0x36, 0x48, 0x5a, 0x6c, 0x7e, 0x90, 0x82, 0xb4, 0xa6, 0xd8, 0xca, 0xfc, 0xee, + 0x3d, 0x2f, 0x19, 0xb, 0x75, 0x67, 0x51, 0x43, 0xad, 0xbf, 0x89, 0x9b, 0xe5, 0xf7, 0xc1, 0xd3, + 0x7a, 0x68, 0x5e, 0x4c, 0x32, 0x20, 0x16, 0x4, 0xea, 0xf8, 0xce, 0xdc, 0xa2, 0xb0, 0x86, 0x94, + 0x47, 0x55, 0x63, 0x71, 0xf, 0x1d, 0x2b, 0x39, 0xd7, 0xc5, 0xf3, 0xe1, 0x9f, 0x8d, 0xbb, 0xa9, + 0xf4, 0xe6, 0xd0, 0xc2, 0xbc, 0xae, 0x98, 0x8a, 0x64, 0x76, 0x40, 0x52, 0x2c, 0x3e, 0x8, 0x1a, + 0xc9, 0xdb, 0xed, 0xff, 0x81, 0x93, 0xa5, 0xb7, 0x59, 0x4b, 0x7d, 0x6f, 0x11, 0x3, 0x35, 0x27, + 0x8e, 0x9c, 0xaa, 0xb8, 0xc6, 0xd4, 0xe2, 0xf0, 0x1e, 0xc, 0x3a, 0x28, 0x56, 0x44, 0x72, 0x60, + 0xb3, 0xa1, 0x97, 0x85, 0xfb, 0xe9, 0xdf, 0xcd, 0x23, 0x31, 0x7, 0x15, 0x6b, 0x79, 0x4f, 0x5d, + 0xf5, 0xe7, 0xd1, 0xc3, 0xbd, 0xaf, 0x99, 0x8b, 0x65, 0x77, 0x41, 0x53, 0x2d, 0x3f, 0x9, 0x1b, + 0xc8, 0xda, 0xec, 0xfe, 0x80, 0x92, 0xa4, 0xb6, 0x58, 0x4a, 0x7c, 0x6e, 0x10, 0x2, 0x34, 0x26, + 0x8f, 0x9d, 0xab, 0xb9, 0xc7, 0xd5, 0xe3, 0xf1, 0x1f, 0xd, 0x3b, 0x29, 0x57, 0x45, 0x73, 0x61, + 0xb2, 0xa0, 0x96, 0x84, 0xfa, 0xe8, 0xde, 0xcc, 0x22, 0x30, 0x6, 0x14, 0x6a, 0x78, 0x4e, 0x5c, + 0x1, 0x13, 0x25, 0x37, 0x49, 0x5b, 0x6d, 0x7f, 0x91, 0x83, 0xb5, 0xa7, 0xd9, 0xcb, 0xfd, 0xef, + 0x3c, 0x2e, 0x18, 0xa, 0x74, 0x66, 0x50, 0x42, 0xac, 0xbe, 0x88, 0x9a, 0xe4, 0xf6, 0xc0, 0xd2, + 0x7b, 0x69, 0x5f, 0x4d, 0x33, 0x21, 0x17, 0x5, 0xeb, 0xf9, 0xcf, 0xdd, 0xa3, 0xb1, 0x87, 0x95, + 0x46, 0x54, 0x62, 0x70, 0xe, 0x1c, 0x2a, 0x38, 0xd6, 0xc4, 0xf2, 0xe0, 0x9e, 0x8c, 0xba, 0xa8, + ], + [ + 0x0, 0x13, 0x26, 0x35, 0x4c, 0x5f, 0x6a, 0x79, 0x98, 0x8b, 0xbe, 0xad, 0xd4, 0xc7, 0xf2, 0xe1, + 0x2d, 0x3e, 0xb, 0x18, 0x61, 0x72, 0x47, 0x54, 0xb5, 0xa6, 0x93, 0x80, 0xf9, 0xea, 0xdf, 0xcc, + 0x5a, 0x49, 0x7c, 0x6f, 0x16, 0x5, 0x30, 0x23, 0xc2, 0xd1, 0xe4, 0xf7, 0x8e, 0x9d, 0xa8, 0xbb, + 0x77, 0x64, 0x51, 0x42, 0x3b, 0x28, 0x1d, 0xe, 0xef, 0xfc, 0xc9, 0xda, 0xa3, 0xb0, 0x85, 0x96, + 0xb4, 0xa7, 0x92, 0x81, 0xf8, 0xeb, 0xde, 0xcd, 0x2c, 0x3f, 0xa, 0x19, 0x60, 0x73, 0x46, 0x55, + 0x99, 0x8a, 0xbf, 0xac, 0xd5, 0xc6, 0xf3, 0xe0, 0x1, 0x12, 0x27, 0x34, 0x4d, 0x5e, 0x6b, 0x78, + 0xee, 0xfd, 0xc8, 0xdb, 0xa2, 0xb1, 0x84, 0x97, 0x76, 0x65, 0x50, 0x43, 0x3a, 0x29, 0x1c, 0xf, + 0xc3, 0xd0, 0xe5, 0xf6, 0x8f, 0x9c, 0xa9, 0xba, 0x5b, 0x48, 0x7d, 0x6e, 0x17, 0x4, 0x31, 0x22, + 0x75, 0x66, 0x53, 0x40, 0x39, 0x2a, 0x1f, 0xc, 0xed, 0xfe, 0xcb, 0xd8, 0xa1, 0xb2, 0x87, 0x94, + 0x58, 0x4b, 0x7e, 0x6d, 0x14, 0x7, 0x32, 0x21, 0xc0, 0xd3, 0xe6, 0xf5, 0x8c, 0x9f, 0xaa, 0xb9, + 0x2f, 0x3c, 0x9, 0x1a, 0x63, 0x70, 0x45, 0x56, 0xb7, 0xa4, 0x91, 0x82, 0xfb, 0xe8, 0xdd, 0xce, + 0x2, 0x11, 0x24, 0x37, 0x4e, 0x5d, 0x68, 0x7b, 0x9a, 0x89, 0xbc, 0xaf, 0xd6, 0xc5, 0xf0, 0xe3, + 0xc1, 0xd2, 0xe7, 0xf4, 0x8d, 0x9e, 0xab, 0xb8, 0x59, 0x4a, 0x7f, 0x6c, 0x15, 0x6, 0x33, 0x20, + 0xec, 0xff, 0xca, 0xd9, 0xa0, 0xb3, 0x86, 0x95, 0x74, 0x67, 0x52, 0x41, 0x38, 0x2b, 0x1e, 0xd, + 0x9b, 0x88, 0xbd, 0xae, 0xd7, 0xc4, 0xf1, 0xe2, 0x3, 0x10, 0x25, 0x36, 0x4f, 0x5c, 0x69, 0x7a, + 0xb6, 0xa5, 0x90, 0x83, 0xfa, 0xe9, 0xdc, 0xcf, 0x2e, 0x3d, 0x8, 0x1b, 0x62, 0x71, 0x44, 0x57, + ], + [ + 0x0, 0x14, 0x28, 0x3c, 0x50, 0x44, 0x78, 0x6c, 0xa0, 0xb4, 0x88, 0x9c, 0xf0, 0xe4, 0xd8, 0xcc, + 0x5d, 0x49, 0x75, 0x61, 0xd, 0x19, 0x25, 0x31, 0xfd, 0xe9, 0xd5, 0xc1, 0xad, 0xb9, 0x85, 0x91, + 0xba, 0xae, 0x92, 0x86, 0xea, 0xfe, 0xc2, 0xd6, 0x1a, 0xe, 0x32, 0x26, 0x4a, 0x5e, 0x62, 0x76, + 0xe7, 0xf3, 0xcf, 0xdb, 0xb7, 0xa3, 0x9f, 0x8b, 0x47, 0x53, 0x6f, 0x7b, 0x17, 0x3, 0x3f, 0x2b, + 0x69, 0x7d, 0x41, 0x55, 0x39, 0x2d, 0x11, 0x5, 0xc9, 0xdd, 0xe1, 0xf5, 0x99, 0x8d, 0xb1, 0xa5, + 0x34, 0x20, 0x1c, 0x8, 0x64, 0x70, 0x4c, 0x58, 0x94, 0x80, 0xbc, 0xa8, 0xc4, 0xd0, 0xec, 0xf8, + 0xd3, 0xc7, 0xfb, 0xef, 0x83, 0x97, 0xab, 0xbf, 0x73, 0x67, 0x5b, 0x4f, 0x23, 0x37, 0xb, 0x1f, + 0x8e, 0x9a, 0xa6, 0xb2, 0xde, 0xca, 0xf6, 0xe2, 0x2e, 0x3a, 0x6, 0x12, 0x7e, 0x6a, 0x56, 0x42, + 0xd2, 0xc6, 0xfa, 0xee, 0x82, 0x96, 0xaa, 0xbe, 0x72, 0x66, 0x5a, 0x4e, 0x22, 0x36, 0xa, 0x1e, + 0x8f, 0x9b, 0xa7, 0xb3, 0xdf, 0xcb, 0xf7, 0xe3, 0x2f, 0x3b, 0x7, 0x13, 0x7f, 0x6b, 0x57, 0x43, + 0x68, 0x7c, 0x40, 0x54, 0x38, 0x2c, 0x10, 0x4, 0xc8, 0xdc, 0xe0, 0xf4, 0x98, 0x8c, 0xb0, 0xa4, + 0x35, 0x21, 0x1d, 0x9, 0x65, 0x71, 0x4d, 0x59, 0x95, 0x81, 0xbd, 0xa9, 0xc5, 0xd1, 0xed, 0xf9, + 0xbb, 0xaf, 0x93, 0x87, 0xeb, 0xff, 0xc3, 0xd7, 0x1b, 0xf, 0x33, 0x27, 0x4b, 0x5f, 0x63, 0x77, + 0xe6, 0xf2, 0xce, 0xda, 0xb6, 0xa2, 0x9e, 0x8a, 0x46, 0x52, 0x6e, 0x7a, 0x16, 0x2, 0x3e, 0x2a, + 0x1, 0x15, 0x29, 0x3d, 0x51, 0x45, 0x79, 0x6d, 0xa1, 0xb5, 0x89, 0x9d, 0xf1, 0xe5, 0xd9, 0xcd, + 0x5c, 0x48, 0x74, 0x60, 0xc, 0x18, 0x24, 0x30, 0xfc, 0xe8, 0xd4, 0xc0, 0xac, 0xb8, 0x84, 0x90, + ], + [ + 0x0, 0x15, 0x2a, 0x3f, 0x54, 0x41, 0x7e, 0x6b, 0xa8, 0xbd, 0x82, 0x97, 0xfc, 0xe9, 0xd6, 0xc3, + 0x4d, 0x58, 0x67, 0x72, 0x19, 0xc, 0x33, 0x26, 0xe5, 0xf0, 0xcf, 0xda, 0xb1, 0xa4, 0x9b, 0x8e, + 0x9a, 0x8f, 0xb0, 0xa5, 0xce, 0xdb, 0xe4, 0xf1, 0x32, 0x27, 0x18, 0xd, 0x66, 0x73, 0x4c, 0x59, + 0xd7, 0xc2, 0xfd, 0xe8, 0x83, 0x96, 0xa9, 0xbc, 0x7f, 0x6a, 0x55, 0x40, 0x2b, 0x3e, 0x1, 0x14, + 0x29, 0x3c, 0x3, 0x16, 0x7d, 0x68, 0x57, 0x42, 0x81, 0x94, 0xab, 0xbe, 0xd5, 0xc0, 0xff, 0xea, + 0x64, 0x71, 0x4e, 0x5b, 0x30, 0x25, 0x1a, 0xf, 0xcc, 0xd9, 0xe6, 0xf3, 0x98, 0x8d, 0xb2, 0xa7, + 0xb3, 0xa6, 0x99, 0x8c, 0xe7, 0xf2, 0xcd, 0xd8, 0x1b, 0xe, 0x31, 0x24, 0x4f, 0x5a, 0x65, 0x70, + 0xfe, 0xeb, 0xd4, 0xc1, 0xaa, 0xbf, 0x80, 0x95, 0x56, 0x43, 0x7c, 0x69, 0x2, 0x17, 0x28, 0x3d, + 0x52, 0x47, 0x78, 0x6d, 0x6, 0x13, 0x2c, 0x39, 0xfa, 0xef, 0xd0, 0xc5, 0xae, 0xbb, 0x84, 0x91, + 0x1f, 0xa, 0x35, 0x20, 0x4b, 0x5e, 0x61, 0x74, 0xb7, 0xa2, 0x9d, 0x88, 0xe3, 0xf6, 0xc9, 0xdc, + 0xc8, 0xdd, 0xe2, 0xf7, 0x9c, 0x89, 0xb6, 0xa3, 0x60, 0x75, 0x4a, 0x5f, 0x34, 0x21, 0x1e, 0xb, + 0x85, 0x90, 0xaf, 0xba, 0xd1, 0xc4, 0xfb, 0xee, 0x2d, 0x38, 0x7, 0x12, 0x79, 0x6c, 0x53, 0x46, + 0x7b, 0x6e, 0x51, 0x44, 0x2f, 0x3a, 0x5, 0x10, 0xd3, 0xc6, 0xf9, 0xec, 0x87, 0x92, 0xad, 0xb8, + 0x36, 0x23, 0x1c, 0x9, 0x62, 0x77, 0x48, 0x5d, 0x9e, 0x8b, 0xb4, 0xa1, 0xca, 0xdf, 0xe0, 0xf5, + 0xe1, 0xf4, 0xcb, 0xde, 0xb5, 0xa0, 0x9f, 0x8a, 0x49, 0x5c, 0x63, 0x76, 0x1d, 0x8, 0x37, 0x22, + 0xac, 0xb9, 0x86, 0x93, 0xf8, 0xed, 0xd2, 0xc7, 0x4, 0x11, 0x2e, 0x3b, 0x50, 0x45, 0x7a, 0x6f, + ], + [ + 0x0, 0x16, 0x2c, 0x3a, 0x58, 0x4e, 0x74, 0x62, 0xb0, 0xa6, 0x9c, 0x8a, 0xe8, 0xfe, 0xc4, 0xd2, + 0x7d, 0x6b, 0x51, 0x47, 0x25, 0x33, 0x9, 0x1f, 0xcd, 0xdb, 0xe1, 0xf7, 0x95, 0x83, 0xb9, 0xaf, + 0xfa, 0xec, 0xd6, 0xc0, 0xa2, 0xb4, 0x8e, 0x98, 0x4a, 0x5c, 0x66, 0x70, 0x12, 0x4, 0x3e, 0x28, + 0x87, 0x91, 0xab, 0xbd, 0xdf, 0xc9, 0xf3, 0xe5, 0x37, 0x21, 0x1b, 0xd, 0x6f, 0x79, 0x43, 0x55, + 0xe9, 0xff, 0xc5, 0xd3, 0xb1, 0xa7, 0x9d, 0x8b, 0x59, 0x4f, 0x75, 0x63, 0x1, 0x17, 0x2d, 0x3b, + 0x94, 0x82, 0xb8, 0xae, 0xcc, 0xda, 0xe0, 0xf6, 0x24, 0x32, 0x8, 0x1e, 0x7c, 0x6a, 0x50, 0x46, + 0x13, 0x5, 0x3f, 0x29, 0x4b, 0x5d, 0x67, 0x71, 0xa3, 0xb5, 0x8f, 0x99, 0xfb, 0xed, 0xd7, 0xc1, + 0x6e, 0x78, 0x42, 0x54, 0x36, 0x20, 0x1a, 0xc, 0xde, 0xc8, 0xf2, 0xe4, 0x86, 0x90, 0xaa, 0xbc, + 0xcf, 0xd9, 0xe3, 0xf5, 0x97, 0x81, 0xbb, 0xad, 0x7f, 0x69, 0x53, 0x45, 0x27, 0x31, 0xb, 0x1d, + 0xb2, 0xa4, 0x9e, 0x88, 0xea, 0xfc, 0xc6, 0xd0, 0x2, 0x14, 0x2e, 0x38, 0x5a, 0x4c, 0x76, 0x60, + 0x35, 0x23, 0x19, 0xf, 0x6d, 0x7b, 0x41, 0x57, 0x85, 0x93, 0xa9, 0xbf, 0xdd, 0xcb, 0xf1, 0xe7, + 0x48, 0x5e, 0x64, 0x72, 0x10, 0x6, 0x3c, 0x2a, 0xf8, 0xee, 0xd4, 0xc2, 0xa0, 0xb6, 0x8c, 0x9a, + 0x26, 0x30, 0xa, 0x1c, 0x7e, 0x68, 0x52, 0x44, 0x96, 0x80, 0xba, 0xac, 0xce, 0xd8, 0xe2, 0xf4, + 0x5b, 0x4d, 0x77, 0x61, 0x3, 0x15, 0x2f, 0x39, 0xeb, 0xfd, 0xc7, 0xd1, 0xb3, 0xa5, 0x9f, 0x89, + 0xdc, 0xca, 0xf0, 0xe6, 0x84, 0x92, 0xa8, 0xbe, 0x6c, 0x7a, 0x40, 0x56, 0x34, 0x22, 0x18, 0xe, + 0xa1, 0xb7, 0x8d, 0x9b, 0xf9, 0xef, 0xd5, 0xc3, 0x11, 0x7, 0x3d, 0x2b, 0x49, 0x5f, 0x65, 0x73, + ], + [ + 0x0, 0x17, 0x2e, 0x39, 0x5c, 0x4b, 0x72, 0x65, 0xb8, 0xaf, 0x96, 0x81, 0xe4, 0xf3, 0xca, 0xdd, + 0x6d, 0x7a, 0x43, 0x54, 0x31, 0x26, 0x1f, 0x8, 0xd5, 0xc2, 0xfb, 0xec, 0x89, 0x9e, 0xa7, 0xb0, + 0xda, 0xcd, 0xf4, 0xe3, 0x86, 0x91, 0xa8, 0xbf, 0x62, 0x75, 0x4c, 0x5b, 0x3e, 0x29, 0x10, 0x7, + 0xb7, 0xa0, 0x99, 0x8e, 0xeb, 0xfc, 0xc5, 0xd2, 0xf, 0x18, 0x21, 0x36, 0x53, 0x44, 0x7d, 0x6a, + 0xa9, 0xbe, 0x87, 0x90, 0xf5, 0xe2, 0xdb, 0xcc, 0x11, 0x6, 0x3f, 0x28, 0x4d, 0x5a, 0x63, 0x74, + 0xc4, 0xd3, 0xea, 0xfd, 0x98, 0x8f, 0xb6, 0xa1, 0x7c, 0x6b, 0x52, 0x45, 0x20, 0x37, 0xe, 0x19, + 0x73, 0x64, 0x5d, 0x4a, 0x2f, 0x38, 0x1, 0x16, 0xcb, 0xdc, 0xe5, 0xf2, 0x97, 0x80, 0xb9, 0xae, + 0x1e, 0x9, 0x30, 0x27, 0x42, 0x55, 0x6c, 0x7b, 0xa6, 0xb1, 0x88, 0x9f, 0xfa, 0xed, 0xd4, 0xc3, + 0x4f, 0x58, 0x61, 0x76, 0x13, 0x4, 0x3d, 0x2a, 0xf7, 0xe0, 0xd9, 0xce, 0xab, 0xbc, 0x85, 0x92, + 0x22, 0x35, 0xc, 0x1b, 0x7e, 0x69, 0x50, 0x47, 0x9a, 0x8d, 0xb4, 0xa3, 0xc6, 0xd1, 0xe8, 0xff, + 0x95, 0x82, 0xbb, 0xac, 0xc9, 0xde, 0xe7, 0xf0, 0x2d, 0x3a, 0x3, 0x14, 0x71, 0x66, 0x5f, 0x48, + 0xf8, 0xef, 0xd6, 0xc1, 0xa4, 0xb3, 0x8a, 0x9d, 0x40, 0x57, 0x6e, 0x79, 0x1c, 0xb, 0x32, 0x25, + 0xe6, 0xf1, 0xc8, 0xdf, 0xba, 0xad, 0x94, 0x83, 0x5e, 0x49, 0x70, 0x67, 0x2, 0x15, 0x2c, 0x3b, + 0x8b, 0x9c, 0xa5, 0xb2, 0xd7, 0xc0, 0xf9, 0xee, 0x33, 0x24, 0x1d, 0xa, 0x6f, 0x78, 0x41, 0x56, + 0x3c, 0x2b, 0x12, 0x5, 0x60, 0x77, 0x4e, 0x59, 0x84, 0x93, 0xaa, 0xbd, 0xd8, 0xcf, 0xf6, 0xe1, + 0x51, 0x46, 0x7f, 0x68, 0xd, 0x1a, 0x23, 0x34, 0xe9, 0xfe, 0xc7, 0xd0, 0xb5, 0xa2, 0x9b, 0x8c, + ], + [ + 0x0, 0x18, 0x30, 0x28, 0x60, 0x78, 0x50, 0x48, 0xc0, 0xd8, 0xf0, 0xe8, 0xa0, 0xb8, 0x90, 0x88, + 0x9d, 0x85, 0xad, 0xb5, 0xfd, 0xe5, 0xcd, 0xd5, 0x5d, 0x45, 0x6d, 0x75, 0x3d, 0x25, 0xd, 0x15, + 0x27, 0x3f, 0x17, 0xf, 0x47, 0x5f, 0x77, 0x6f, 0xe7, 0xff, 0xd7, 0xcf, 0x87, 0x9f, 0xb7, 0xaf, + 0xba, 0xa2, 0x8a, 0x92, 0xda, 0xc2, 0xea, 0xf2, 0x7a, 0x62, 0x4a, 0x52, 0x1a, 0x2, 0x2a, 0x32, + 0x4e, 0x56, 0x7e, 0x66, 0x2e, 0x36, 0x1e, 0x6, 0x8e, 0x96, 0xbe, 0xa6, 0xee, 0xf6, 0xde, 0xc6, + 0xd3, 0xcb, 0xe3, 0xfb, 0xb3, 0xab, 0x83, 0x9b, 0x13, 0xb, 0x23, 0x3b, 0x73, 0x6b, 0x43, 0x5b, + 0x69, 0x71, 0x59, 0x41, 0x9, 0x11, 0x39, 0x21, 0xa9, 0xb1, 0x99, 0x81, 0xc9, 0xd1, 0xf9, 0xe1, + 0xf4, 0xec, 0xc4, 0xdc, 0x94, 0x8c, 0xa4, 0xbc, 0x34, 0x2c, 0x4, 0x1c, 0x54, 0x4c, 0x64, 0x7c, + 0x9c, 0x84, 0xac, 0xb4, 0xfc, 0xe4, 0xcc, 0xd4, 0x5c, 0x44, 0x6c, 0x74, 0x3c, 0x24, 0xc, 0x14, + 0x1, 0x19, 0x31, 0x29, 0x61, 0x79, 0x51, 0x49, 0xc1, 0xd9, 0xf1, 0xe9, 0xa1, 0xb9, 0x91, 0x89, + 0xbb, 0xa3, 0x8b, 0x93, 0xdb, 0xc3, 0xeb, 0xf3, 0x7b, 0x63, 0x4b, 0x53, 0x1b, 0x3, 0x2b, 0x33, + 0x26, 0x3e, 0x16, 0xe, 0x46, 0x5e, 0x76, 0x6e, 0xe6, 0xfe, 0xd6, 0xce, 0x86, 0x9e, 0xb6, 0xae, + 0xd2, 0xca, 0xe2, 0xfa, 0xb2, 0xaa, 0x82, 0x9a, 0x12, 0xa, 0x22, 0x3a, 0x72, 0x6a, 0x42, 0x5a, + 0x4f, 0x57, 0x7f, 0x67, 0x2f, 0x37, 0x1f, 0x7, 0x8f, 0x97, 0xbf, 0xa7, 0xef, 0xf7, 0xdf, 0xc7, + 0xf5, 0xed, 0xc5, 0xdd, 0x95, 0x8d, 0xa5, 0xbd, 0x35, 0x2d, 0x5, 0x1d, 0x55, 0x4d, 0x65, 0x7d, + 0x68, 0x70, 0x58, 0x40, 0x8, 0x10, 0x38, 0x20, 0xa8, 0xb0, 0x98, 0x80, 0xc8, 0xd0, 0xf8, 0xe0, + ], + [ + 0x0, 0x19, 0x32, 0x2b, 0x64, 0x7d, 0x56, 0x4f, 0xc8, 0xd1, 0xfa, 0xe3, 0xac, 0xb5, 0x9e, 0x87, + 0x8d, 0x94, 0xbf, 0xa6, 0xe9, 0xf0, 0xdb, 0xc2, 0x45, 0x5c, 0x77, 0x6e, 0x21, 0x38, 0x13, 0xa, + 0x7, 0x1e, 0x35, 0x2c, 0x63, 0x7a, 0x51, 0x48, 0xcf, 0xd6, 0xfd, 0xe4, 0xab, 0xb2, 0x99, 0x80, + 0x8a, 0x93, 0xb8, 0xa1, 0xee, 0xf7, 0xdc, 0xc5, 0x42, 0x5b, 0x70, 0x69, 0x26, 0x3f, 0x14, 0xd, + 0xe, 0x17, 0x3c, 0x25, 0x6a, 0x73, 0x58, 0x41, 0xc6, 0xdf, 0xf4, 0xed, 0xa2, 0xbb, 0x90, 0x89, + 0x83, 0x9a, 0xb1, 0xa8, 0xe7, 0xfe, 0xd5, 0xcc, 0x4b, 0x52, 0x79, 0x60, 0x2f, 0x36, 0x1d, 0x4, + 0x9, 0x10, 0x3b, 0x22, 0x6d, 0x74, 0x5f, 0x46, 0xc1, 0xd8, 0xf3, 0xea, 0xa5, 0xbc, 0x97, 0x8e, + 0x84, 0x9d, 0xb6, 0xaf, 0xe0, 0xf9, 0xd2, 0xcb, 0x4c, 0x55, 0x7e, 0x67, 0x28, 0x31, 0x1a, 0x3, + 0x1c, 0x5, 0x2e, 0x37, 0x78, 0x61, 0x4a, 0x53, 0xd4, 0xcd, 0xe6, 0xff, 0xb0, 0xa9, 0x82, 0x9b, + 0x91, 0x88, 0xa3, 0xba, 0xf5, 0xec, 0xc7, 0xde, 0x59, 0x40, 0x6b, 0x72, 0x3d, 0x24, 0xf, 0x16, + 0x1b, 0x2, 0x29, 0x30, 0x7f, 0x66, 0x4d, 0x54, 0xd3, 0xca, 0xe1, 0xf8, 0xb7, 0xae, 0x85, 0x9c, + 0x96, 0x8f, 0xa4, 0xbd, 0xf2, 0xeb, 0xc0, 0xd9, 0x5e, 0x47, 0x6c, 0x75, 0x3a, 0x23, 0x8, 0x11, + 0x12, 0xb, 0x20, 0x39, 0x76, 0x6f, 0x44, 0x5d, 0xda, 0xc3, 0xe8, 0xf1, 0xbe, 0xa7, 0x8c, 0x95, + 0x9f, 0x86, 0xad, 0xb4, 0xfb, 0xe2, 0xc9, 0xd0, 0x57, 0x4e, 0x65, 0x7c, 0x33, 0x2a, 0x1, 0x18, + 0x15, 0xc, 0x27, 0x3e, 0x71, 0x68, 0x43, 0x5a, 0xdd, 0xc4, 0xef, 0xf6, 0xb9, 0xa0, 0x8b, 0x92, + 0x98, 0x81, 0xaa, 0xb3, 0xfc, 0xe5, 0xce, 0xd7, 0x50, 0x49, 0x62, 0x7b, 0x34, 0x2d, 0x6, 0x1f, + ], + [ + 0x0, 0x1a, 0x34, 0x2e, 0x68, 0x72, 0x5c, 0x46, 0xd0, 0xca, 0xe4, 0xfe, 0xb8, 0xa2, 0x8c, 0x96, + 0xbd, 0xa7, 0x89, 0x93, 0xd5, 0xcf, 0xe1, 0xfb, 0x6d, 0x77, 0x59, 0x43, 0x5, 0x1f, 0x31, 0x2b, + 0x67, 0x7d, 0x53, 0x49, 0xf, 0x15, 0x3b, 0x21, 0xb7, 0xad, 0x83, 0x99, 0xdf, 0xc5, 0xeb, 0xf1, + 0xda, 0xc0, 0xee, 0xf4, 0xb2, 0xa8, 0x86, 0x9c, 0xa, 0x10, 0x3e, 0x24, 0x62, 0x78, 0x56, 0x4c, + 0xce, 0xd4, 0xfa, 0xe0, 0xa6, 0xbc, 0x92, 0x88, 0x1e, 0x4, 0x2a, 0x30, 0x76, 0x6c, 0x42, 0x58, + 0x73, 0x69, 0x47, 0x5d, 0x1b, 0x1, 0x2f, 0x35, 0xa3, 0xb9, 0x97, 0x8d, 0xcb, 0xd1, 0xff, 0xe5, + 0xa9, 0xb3, 0x9d, 0x87, 0xc1, 0xdb, 0xf5, 0xef, 0x79, 0x63, 0x4d, 0x57, 0x11, 0xb, 0x25, 0x3f, + 0x14, 0xe, 0x20, 0x3a, 0x7c, 0x66, 0x48, 0x52, 0xc4, 0xde, 0xf0, 0xea, 0xac, 0xb6, 0x98, 0x82, + 0x81, 0x9b, 0xb5, 0xaf, 0xe9, 0xf3, 0xdd, 0xc7, 0x51, 0x4b, 0x65, 0x7f, 0x39, 0x23, 0xd, 0x17, + 0x3c, 0x26, 0x8, 0x12, 0x54, 0x4e, 0x60, 0x7a, 0xec, 0xf6, 0xd8, 0xc2, 0x84, 0x9e, 0xb0, 0xaa, + 0xe6, 0xfc, 0xd2, 0xc8, 0x8e, 0x94, 0xba, 0xa0, 0x36, 0x2c, 0x2, 0x18, 0x5e, 0x44, 0x6a, 0x70, + 0x5b, 0x41, 0x6f, 0x75, 0x33, 0x29, 0x7, 0x1d, 0x8b, 0x91, 0xbf, 0xa5, 0xe3, 0xf9, 0xd7, 0xcd, + 0x4f, 0x55, 0x7b, 0x61, 0x27, 0x3d, 0x13, 0x9, 0x9f, 0x85, 0xab, 0xb1, 0xf7, 0xed, 0xc3, 0xd9, + 0xf2, 0xe8, 0xc6, 0xdc, 0x9a, 0x80, 0xae, 0xb4, 0x22, 0x38, 0x16, 0xc, 0x4a, 0x50, 0x7e, 0x64, + 0x28, 0x32, 0x1c, 0x6, 0x40, 0x5a, 0x74, 0x6e, 0xf8, 0xe2, 0xcc, 0xd6, 0x90, 0x8a, 0xa4, 0xbe, + 0x95, 0x8f, 0xa1, 0xbb, 0xfd, 0xe7, 0xc9, 0xd3, 0x45, 0x5f, 0x71, 0x6b, 0x2d, 0x37, 0x19, 0x3, + ], + [ + 0x0, 0x1b, 0x36, 0x2d, 0x6c, 0x77, 0x5a, 0x41, 0xd8, 0xc3, 0xee, 0xf5, 0xb4, 0xaf, 0x82, 0x99, + 0xad, 0xb6, 0x9b, 0x80, 0xc1, 0xda, 0xf7, 0xec, 0x75, 0x6e, 0x43, 0x58, 0x19, 0x2, 0x2f, 0x34, + 0x47, 0x5c, 0x71, 0x6a, 0x2b, 0x30, 0x1d, 0x6, 0x9f, 0x84, 0xa9, 0xb2, 0xf3, 0xe8, 0xc5, 0xde, + 0xea, 0xf1, 0xdc, 0xc7, 0x86, 0x9d, 0xb0, 0xab, 0x32, 0x29, 0x4, 0x1f, 0x5e, 0x45, 0x68, 0x73, + 0x8e, 0x95, 0xb8, 0xa3, 0xe2, 0xf9, 0xd4, 0xcf, 0x56, 0x4d, 0x60, 0x7b, 0x3a, 0x21, 0xc, 0x17, + 0x23, 0x38, 0x15, 0xe, 0x4f, 0x54, 0x79, 0x62, 0xfb, 0xe0, 0xcd, 0xd6, 0x97, 0x8c, 0xa1, 0xba, + 0xc9, 0xd2, 0xff, 0xe4, 0xa5, 0xbe, 0x93, 0x88, 0x11, 0xa, 0x27, 0x3c, 0x7d, 0x66, 0x4b, 0x50, + 0x64, 0x7f, 0x52, 0x49, 0x8, 0x13, 0x3e, 0x25, 0xbc, 0xa7, 0x8a, 0x91, 0xd0, 0xcb, 0xe6, 0xfd, + 0x1, 0x1a, 0x37, 0x2c, 0x6d, 0x76, 0x5b, 0x40, 0xd9, 0xc2, 0xef, 0xf4, 0xb5, 0xae, 0x83, 0x98, + 0xac, 0xb7, 0x9a, 0x81, 0xc0, 0xdb, 0xf6, 0xed, 0x74, 0x6f, 0x42, 0x59, 0x18, 0x3, 0x2e, 0x35, + 0x46, 0x5d, 0x70, 0x6b, 0x2a, 0x31, 0x1c, 0x7, 0x9e, 0x85, 0xa8, 0xb3, 0xf2, 0xe9, 0xc4, 0xdf, + 0xeb, 0xf0, 0xdd, 0xc6, 0x87, 0x9c, 0xb1, 0xaa, 0x33, 0x28, 0x5, 0x1e, 0x5f, 0x44, 0x69, 0x72, + 0x8f, 0x94, 0xb9, 0xa2, 0xe3, 0xf8, 0xd5, 0xce, 0x57, 0x4c, 0x61, 0x7a, 0x3b, 0x20, 0xd, 0x16, + 0x22, 0x39, 0x14, 0xf, 0x4e, 0x55, 0x78, 0x63, 0xfa, 0xe1, 0xcc, 0xd7, 0x96, 0x8d, 0xa0, 0xbb, + 0xc8, 0xd3, 0xfe, 0xe5, 0xa4, 0xbf, 0x92, 0x89, 0x10, 0xb, 0x26, 0x3d, 0x7c, 0x67, 0x4a, 0x51, + 0x65, 0x7e, 0x53, 0x48, 0x9, 0x12, 0x3f, 0x24, 0xbd, 0xa6, 0x8b, 0x90, 0xd1, 0xca, 0xe7, 0xfc, + ], + [ + 0x0, 0x1c, 0x38, 0x24, 0x70, 0x6c, 0x48, 0x54, 0xe0, 0xfc, 0xd8, 0xc4, 0x90, 0x8c, 0xa8, 0xb4, + 0xdd, 0xc1, 0xe5, 0xf9, 0xad, 0xb1, 0x95, 0x89, 0x3d, 0x21, 0x5, 0x19, 0x4d, 0x51, 0x75, 0x69, + 0xa7, 0xbb, 0x9f, 0x83, 0xd7, 0xcb, 0xef, 0xf3, 0x47, 0x5b, 0x7f, 0x63, 0x37, 0x2b, 0xf, 0x13, + 0x7a, 0x66, 0x42, 0x5e, 0xa, 0x16, 0x32, 0x2e, 0x9a, 0x86, 0xa2, 0xbe, 0xea, 0xf6, 0xd2, 0xce, + 0x53, 0x4f, 0x6b, 0x77, 0x23, 0x3f, 0x1b, 0x7, 0xb3, 0xaf, 0x8b, 0x97, 0xc3, 0xdf, 0xfb, 0xe7, + 0x8e, 0x92, 0xb6, 0xaa, 0xfe, 0xe2, 0xc6, 0xda, 0x6e, 0x72, 0x56, 0x4a, 0x1e, 0x2, 0x26, 0x3a, + 0xf4, 0xe8, 0xcc, 0xd0, 0x84, 0x98, 0xbc, 0xa0, 0x14, 0x8, 0x2c, 0x30, 0x64, 0x78, 0x5c, 0x40, + 0x29, 0x35, 0x11, 0xd, 0x59, 0x45, 0x61, 0x7d, 0xc9, 0xd5, 0xf1, 0xed, 0xb9, 0xa5, 0x81, 0x9d, + 0xa6, 0xba, 0x9e, 0x82, 0xd6, 0xca, 0xee, 0xf2, 0x46, 0x5a, 0x7e, 0x62, 0x36, 0x2a, 0xe, 0x12, + 0x7b, 0x67, 0x43, 0x5f, 0xb, 0x17, 0x33, 0x2f, 0x9b, 0x87, 0xa3, 0xbf, 0xeb, 0xf7, 0xd3, 0xcf, + 0x1, 0x1d, 0x39, 0x25, 0x71, 0x6d, 0x49, 0x55, 0xe1, 0xfd, 0xd9, 0xc5, 0x91, 0x8d, 0xa9, 0xb5, + 0xdc, 0xc0, 0xe4, 0xf8, 0xac, 0xb0, 0x94, 0x88, 0x3c, 0x20, 0x4, 0x18, 0x4c, 0x50, 0x74, 0x68, + 0xf5, 0xe9, 0xcd, 0xd1, 0x85, 0x99, 0xbd, 0xa1, 0x15, 0x9, 0x2d, 0x31, 0x65, 0x79, 0x5d, 0x41, + 0x28, 0x34, 0x10, 0xc, 0x58, 0x44, 0x60, 0x7c, 0xc8, 0xd4, 0xf0, 0xec, 0xb8, 0xa4, 0x80, 0x9c, + 0x52, 0x4e, 0x6a, 0x76, 0x22, 0x3e, 0x1a, 0x6, 0xb2, 0xae, 0x8a, 0x96, 0xc2, 0xde, 0xfa, 0xe6, + 0x8f, 0x93, 0xb7, 0xab, 0xff, 0xe3, 0xc7, 0xdb, 0x6f, 0x73, 0x57, 0x4b, 0x1f, 0x3, 0x27, 0x3b, + ], + [ + 0x0, 0x1d, 0x3a, 0x27, 0x74, 0x69, 0x4e, 0x53, 0xe8, 0xf5, 0xd2, 0xcf, 0x9c, 0x81, 0xa6, 0xbb, + 0xcd, 0xd0, 0xf7, 0xea, 0xb9, 0xa4, 0x83, 0x9e, 0x25, 0x38, 0x1f, 0x2, 0x51, 0x4c, 0x6b, 0x76, + 0x87, 0x9a, 0xbd, 0xa0, 0xf3, 0xee, 0xc9, 0xd4, 0x6f, 0x72, 0x55, 0x48, 0x1b, 0x6, 0x21, 0x3c, + 0x4a, 0x57, 0x70, 0x6d, 0x3e, 0x23, 0x4, 0x19, 0xa2, 0xbf, 0x98, 0x85, 0xd6, 0xcb, 0xec, 0xf1, + 0x13, 0xe, 0x29, 0x34, 0x67, 0x7a, 0x5d, 0x40, 0xfb, 0xe6, 0xc1, 0xdc, 0x8f, 0x92, 0xb5, 0xa8, + 0xde, 0xc3, 0xe4, 0xf9, 0xaa, 0xb7, 0x90, 0x8d, 0x36, 0x2b, 0xc, 0x11, 0x42, 0x5f, 0x78, 0x65, + 0x94, 0x89, 0xae, 0xb3, 0xe0, 0xfd, 0xda, 0xc7, 0x7c, 0x61, 0x46, 0x5b, 0x8, 0x15, 0x32, 0x2f, + 0x59, 0x44, 0x63, 0x7e, 0x2d, 0x30, 0x17, 0xa, 0xb1, 0xac, 0x8b, 0x96, 0xc5, 0xd8, 0xff, 0xe2, + 0x26, 0x3b, 0x1c, 0x1, 0x52, 0x4f, 0x68, 0x75, 0xce, 0xd3, 0xf4, 0xe9, 0xba, 0xa7, 0x80, 0x9d, + 0xeb, 0xf6, 0xd1, 0xcc, 0x9f, 0x82, 0xa5, 0xb8, 0x3, 0x1e, 0x39, 0x24, 0x77, 0x6a, 0x4d, 0x50, + 0xa1, 0xbc, 0x9b, 0x86, 0xd5, 0xc8, 0xef, 0xf2, 0x49, 0x54, 0x73, 0x6e, 0x3d, 0x20, 0x7, 0x1a, + 0x6c, 0x71, 0x56, 0x4b, 0x18, 0x5, 0x22, 0x3f, 0x84, 0x99, 0xbe, 0xa3, 0xf0, 0xed, 0xca, 0xd7, + 0x35, 0x28, 0xf, 0x12, 0x41, 0x5c, 0x7b, 0x66, 0xdd, 0xc0, 0xe7, 0xfa, 0xa9, 0xb4, 0x93, 0x8e, + 0xf8, 0xe5, 0xc2, 0xdf, 0x8c, 0x91, 0xb6, 0xab, 0x10, 0xd, 0x2a, 0x37, 0x64, 0x79, 0x5e, 0x43, + 0xb2, 0xaf, 0x88, 0x95, 0xc6, 0xdb, 0xfc, 0xe1, 0x5a, 0x47, 0x60, 0x7d, 0x2e, 0x33, 0x14, 0x9, + 0x7f, 0x62, 0x45, 0x58, 0xb, 0x16, 0x31, 0x2c, 0x97, 0x8a, 0xad, 0xb0, 0xe3, 0xfe, 0xd9, 0xc4, + ], + [ + 0x0, 0x1e, 0x3c, 0x22, 0x78, 0x66, 0x44, 0x5a, 0xf0, 0xee, 0xcc, 0xd2, 0x88, 0x96, 0xb4, 0xaa, + 0xfd, 0xe3, 0xc1, 0xdf, 0x85, 0x9b, 0xb9, 0xa7, 0xd, 0x13, 0x31, 0x2f, 0x75, 0x6b, 0x49, 0x57, + 0xe7, 0xf9, 0xdb, 0xc5, 0x9f, 0x81, 0xa3, 0xbd, 0x17, 0x9, 0x2b, 0x35, 0x6f, 0x71, 0x53, 0x4d, + 0x1a, 0x4, 0x26, 0x38, 0x62, 0x7c, 0x5e, 0x40, 0xea, 0xf4, 0xd6, 0xc8, 0x92, 0x8c, 0xae, 0xb0, + 0xd3, 0xcd, 0xef, 0xf1, 0xab, 0xb5, 0x97, 0x89, 0x23, 0x3d, 0x1f, 0x1, 0x5b, 0x45, 0x67, 0x79, + 0x2e, 0x30, 0x12, 0xc, 0x56, 0x48, 0x6a, 0x74, 0xde, 0xc0, 0xe2, 0xfc, 0xa6, 0xb8, 0x9a, 0x84, + 0x34, 0x2a, 0x8, 0x16, 0x4c, 0x52, 0x70, 0x6e, 0xc4, 0xda, 0xf8, 0xe6, 0xbc, 0xa2, 0x80, 0x9e, + 0xc9, 0xd7, 0xf5, 0xeb, 0xb1, 0xaf, 0x8d, 0x93, 0x39, 0x27, 0x5, 0x1b, 0x41, 0x5f, 0x7d, 0x63, + 0xbb, 0xa5, 0x87, 0x99, 0xc3, 0xdd, 0xff, 0xe1, 0x4b, 0x55, 0x77, 0x69, 0x33, 0x2d, 0xf, 0x11, + 0x46, 0x58, 0x7a, 0x64, 0x3e, 0x20, 0x2, 0x1c, 0xb6, 0xa8, 0x8a, 0x94, 0xce, 0xd0, 0xf2, 0xec, + 0x5c, 0x42, 0x60, 0x7e, 0x24, 0x3a, 0x18, 0x6, 0xac, 0xb2, 0x90, 0x8e, 0xd4, 0xca, 0xe8, 0xf6, + 0xa1, 0xbf, 0x9d, 0x83, 0xd9, 0xc7, 0xe5, 0xfb, 0x51, 0x4f, 0x6d, 0x73, 0x29, 0x37, 0x15, 0xb, + 0x68, 0x76, 0x54, 0x4a, 0x10, 0xe, 0x2c, 0x32, 0x98, 0x86, 0xa4, 0xba, 0xe0, 0xfe, 0xdc, 0xc2, + 0x95, 0x8b, 0xa9, 0xb7, 0xed, 0xf3, 0xd1, 0xcf, 0x65, 0x7b, 0x59, 0x47, 0x1d, 0x3, 0x21, 0x3f, + 0x8f, 0x91, 0xb3, 0xad, 0xf7, 0xe9, 0xcb, 0xd5, 0x7f, 0x61, 0x43, 0x5d, 0x7, 0x19, 0x3b, 0x25, + 0x72, 0x6c, 0x4e, 0x50, 0xa, 0x14, 0x36, 0x28, 0x82, 0x9c, 0xbe, 0xa0, 0xfa, 0xe4, 0xc6, 0xd8, + ], + [ + 0x0, 0x1f, 0x3e, 0x21, 0x7c, 0x63, 0x42, 0x5d, 0xf8, 0xe7, 0xc6, 0xd9, 0x84, 0x9b, 0xba, 0xa5, + 0xed, 0xf2, 0xd3, 0xcc, 0x91, 0x8e, 0xaf, 0xb0, 0x15, 0xa, 0x2b, 0x34, 0x69, 0x76, 0x57, 0x48, + 0xc7, 0xd8, 0xf9, 0xe6, 0xbb, 0xa4, 0x85, 0x9a, 0x3f, 0x20, 0x1, 0x1e, 0x43, 0x5c, 0x7d, 0x62, + 0x2a, 0x35, 0x14, 0xb, 0x56, 0x49, 0x68, 0x77, 0xd2, 0xcd, 0xec, 0xf3, 0xae, 0xb1, 0x90, 0x8f, + 0x93, 0x8c, 0xad, 0xb2, 0xef, 0xf0, 0xd1, 0xce, 0x6b, 0x74, 0x55, 0x4a, 0x17, 0x8, 0x29, 0x36, + 0x7e, 0x61, 0x40, 0x5f, 0x2, 0x1d, 0x3c, 0x23, 0x86, 0x99, 0xb8, 0xa7, 0xfa, 0xe5, 0xc4, 0xdb, + 0x54, 0x4b, 0x6a, 0x75, 0x28, 0x37, 0x16, 0x9, 0xac, 0xb3, 0x92, 0x8d, 0xd0, 0xcf, 0xee, 0xf1, + 0xb9, 0xa6, 0x87, 0x98, 0xc5, 0xda, 0xfb, 0xe4, 0x41, 0x5e, 0x7f, 0x60, 0x3d, 0x22, 0x3, 0x1c, + 0x3b, 0x24, 0x5, 0x1a, 0x47, 0x58, 0x79, 0x66, 0xc3, 0xdc, 0xfd, 0xe2, 0xbf, 0xa0, 0x81, 0x9e, + 0xd6, 0xc9, 0xe8, 0xf7, 0xaa, 0xb5, 0x94, 0x8b, 0x2e, 0x31, 0x10, 0xf, 0x52, 0x4d, 0x6c, 0x73, + 0xfc, 0xe3, 0xc2, 0xdd, 0x80, 0x9f, 0xbe, 0xa1, 0x4, 0x1b, 0x3a, 0x25, 0x78, 0x67, 0x46, 0x59, + 0x11, 0xe, 0x2f, 0x30, 0x6d, 0x72, 0x53, 0x4c, 0xe9, 0xf6, 0xd7, 0xc8, 0x95, 0x8a, 0xab, 0xb4, + 0xa8, 0xb7, 0x96, 0x89, 0xd4, 0xcb, 0xea, 0xf5, 0x50, 0x4f, 0x6e, 0x71, 0x2c, 0x33, 0x12, 0xd, + 0x45, 0x5a, 0x7b, 0x64, 0x39, 0x26, 0x7, 0x18, 0xbd, 0xa2, 0x83, 0x9c, 0xc1, 0xde, 0xff, 0xe0, + 0x6f, 0x70, 0x51, 0x4e, 0x13, 0xc, 0x2d, 0x32, 0x97, 0x88, 0xa9, 0xb6, 0xeb, 0xf4, 0xd5, 0xca, + 0x82, 0x9d, 0xbc, 0xa3, 0xfe, 0xe1, 0xc0, 0xdf, 0x7a, 0x65, 0x44, 0x5b, 0x6, 0x19, 0x38, 0x27, + ], + [ + 0x0, 0x20, 0x40, 0x60, 0x80, 0xa0, 0xc0, 0xe0, 0x1d, 0x3d, 0x5d, 0x7d, 0x9d, 0xbd, 0xdd, 0xfd, + 0x3a, 0x1a, 0x7a, 0x5a, 0xba, 0x9a, 0xfa, 0xda, 0x27, 0x7, 0x67, 0x47, 0xa7, 0x87, 0xe7, 0xc7, + 0x74, 0x54, 0x34, 0x14, 0xf4, 0xd4, 0xb4, 0x94, 0x69, 0x49, 0x29, 0x9, 0xe9, 0xc9, 0xa9, 0x89, + 0x4e, 0x6e, 0xe, 0x2e, 0xce, 0xee, 0x8e, 0xae, 0x53, 0x73, 0x13, 0x33, 0xd3, 0xf3, 0x93, 0xb3, + 0xe8, 0xc8, 0xa8, 0x88, 0x68, 0x48, 0x28, 0x8, 0xf5, 0xd5, 0xb5, 0x95, 0x75, 0x55, 0x35, 0x15, + 0xd2, 0xf2, 0x92, 0xb2, 0x52, 0x72, 0x12, 0x32, 0xcf, 0xef, 0x8f, 0xaf, 0x4f, 0x6f, 0xf, 0x2f, + 0x9c, 0xbc, 0xdc, 0xfc, 0x1c, 0x3c, 0x5c, 0x7c, 0x81, 0xa1, 0xc1, 0xe1, 0x1, 0x21, 0x41, 0x61, + 0xa6, 0x86, 0xe6, 0xc6, 0x26, 0x6, 0x66, 0x46, 0xbb, 0x9b, 0xfb, 0xdb, 0x3b, 0x1b, 0x7b, 0x5b, + 0xcd, 0xed, 0x8d, 0xad, 0x4d, 0x6d, 0xd, 0x2d, 0xd0, 0xf0, 0x90, 0xb0, 0x50, 0x70, 0x10, 0x30, + 0xf7, 0xd7, 0xb7, 0x97, 0x77, 0x57, 0x37, 0x17, 0xea, 0xca, 0xaa, 0x8a, 0x6a, 0x4a, 0x2a, 0xa, + 0xb9, 0x99, 0xf9, 0xd9, 0x39, 0x19, 0x79, 0x59, 0xa4, 0x84, 0xe4, 0xc4, 0x24, 0x4, 0x64, 0x44, + 0x83, 0xa3, 0xc3, 0xe3, 0x3, 0x23, 0x43, 0x63, 0x9e, 0xbe, 0xde, 0xfe, 0x1e, 0x3e, 0x5e, 0x7e, + 0x25, 0x5, 0x65, 0x45, 0xa5, 0x85, 0xe5, 0xc5, 0x38, 0x18, 0x78, 0x58, 0xb8, 0x98, 0xf8, 0xd8, + 0x1f, 0x3f, 0x5f, 0x7f, 0x9f, 0xbf, 0xdf, 0xff, 0x2, 0x22, 0x42, 0x62, 0x82, 0xa2, 0xc2, 0xe2, + 0x51, 0x71, 0x11, 0x31, 0xd1, 0xf1, 0x91, 0xb1, 0x4c, 0x6c, 0xc, 0x2c, 0xcc, 0xec, 0x8c, 0xac, + 0x6b, 0x4b, 0x2b, 0xb, 0xeb, 0xcb, 0xab, 0x8b, 0x76, 0x56, 0x36, 0x16, 0xf6, 0xd6, 0xb6, 0x96, + ], + [ + 0x0, 0x21, 0x42, 0x63, 0x84, 0xa5, 0xc6, 0xe7, 0x15, 0x34, 0x57, 0x76, 0x91, 0xb0, 0xd3, 0xf2, + 0x2a, 0xb, 0x68, 0x49, 0xae, 0x8f, 0xec, 0xcd, 0x3f, 0x1e, 0x7d, 0x5c, 0xbb, 0x9a, 0xf9, 0xd8, + 0x54, 0x75, 0x16, 0x37, 0xd0, 0xf1, 0x92, 0xb3, 0x41, 0x60, 0x3, 0x22, 0xc5, 0xe4, 0x87, 0xa6, + 0x7e, 0x5f, 0x3c, 0x1d, 0xfa, 0xdb, 0xb8, 0x99, 0x6b, 0x4a, 0x29, 0x8, 0xef, 0xce, 0xad, 0x8c, + 0xa8, 0x89, 0xea, 0xcb, 0x2c, 0xd, 0x6e, 0x4f, 0xbd, 0x9c, 0xff, 0xde, 0x39, 0x18, 0x7b, 0x5a, + 0x82, 0xa3, 0xc0, 0xe1, 0x6, 0x27, 0x44, 0x65, 0x97, 0xb6, 0xd5, 0xf4, 0x13, 0x32, 0x51, 0x70, + 0xfc, 0xdd, 0xbe, 0x9f, 0x78, 0x59, 0x3a, 0x1b, 0xe9, 0xc8, 0xab, 0x8a, 0x6d, 0x4c, 0x2f, 0xe, + 0xd6, 0xf7, 0x94, 0xb5, 0x52, 0x73, 0x10, 0x31, 0xc3, 0xe2, 0x81, 0xa0, 0x47, 0x66, 0x5, 0x24, + 0x4d, 0x6c, 0xf, 0x2e, 0xc9, 0xe8, 0x8b, 0xaa, 0x58, 0x79, 0x1a, 0x3b, 0xdc, 0xfd, 0x9e, 0xbf, + 0x67, 0x46, 0x25, 0x4, 0xe3, 0xc2, 0xa1, 0x80, 0x72, 0x53, 0x30, 0x11, 0xf6, 0xd7, 0xb4, 0x95, + 0x19, 0x38, 0x5b, 0x7a, 0x9d, 0xbc, 0xdf, 0xfe, 0xc, 0x2d, 0x4e, 0x6f, 0x88, 0xa9, 0xca, 0xeb, + 0x33, 0x12, 0x71, 0x50, 0xb7, 0x96, 0xf5, 0xd4, 0x26, 0x7, 0x64, 0x45, 0xa2, 0x83, 0xe0, 0xc1, + 0xe5, 0xc4, 0xa7, 0x86, 0x61, 0x40, 0x23, 0x2, 0xf0, 0xd1, 0xb2, 0x93, 0x74, 0x55, 0x36, 0x17, + 0xcf, 0xee, 0x8d, 0xac, 0x4b, 0x6a, 0x9, 0x28, 0xda, 0xfb, 0x98, 0xb9, 0x5e, 0x7f, 0x1c, 0x3d, + 0xb1, 0x90, 0xf3, 0xd2, 0x35, 0x14, 0x77, 0x56, 0xa4, 0x85, 0xe6, 0xc7, 0x20, 0x1, 0x62, 0x43, + 0x9b, 0xba, 0xd9, 0xf8, 0x1f, 0x3e, 0x5d, 0x7c, 0x8e, 0xaf, 0xcc, 0xed, 0xa, 0x2b, 0x48, 0x69, + ], + [ + 0x0, 0x22, 0x44, 0x66, 0x88, 0xaa, 0xcc, 0xee, 0xd, 0x2f, 0x49, 0x6b, 0x85, 0xa7, 0xc1, 0xe3, + 0x1a, 0x38, 0x5e, 0x7c, 0x92, 0xb0, 0xd6, 0xf4, 0x17, 0x35, 0x53, 0x71, 0x9f, 0xbd, 0xdb, 0xf9, + 0x34, 0x16, 0x70, 0x52, 0xbc, 0x9e, 0xf8, 0xda, 0x39, 0x1b, 0x7d, 0x5f, 0xb1, 0x93, 0xf5, 0xd7, + 0x2e, 0xc, 0x6a, 0x48, 0xa6, 0x84, 0xe2, 0xc0, 0x23, 0x1, 0x67, 0x45, 0xab, 0x89, 0xef, 0xcd, + 0x68, 0x4a, 0x2c, 0xe, 0xe0, 0xc2, 0xa4, 0x86, 0x65, 0x47, 0x21, 0x3, 0xed, 0xcf, 0xa9, 0x8b, + 0x72, 0x50, 0x36, 0x14, 0xfa, 0xd8, 0xbe, 0x9c, 0x7f, 0x5d, 0x3b, 0x19, 0xf7, 0xd5, 0xb3, 0x91, + 0x5c, 0x7e, 0x18, 0x3a, 0xd4, 0xf6, 0x90, 0xb2, 0x51, 0x73, 0x15, 0x37, 0xd9, 0xfb, 0x9d, 0xbf, + 0x46, 0x64, 0x2, 0x20, 0xce, 0xec, 0x8a, 0xa8, 0x4b, 0x69, 0xf, 0x2d, 0xc3, 0xe1, 0x87, 0xa5, + 0xd0, 0xf2, 0x94, 0xb6, 0x58, 0x7a, 0x1c, 0x3e, 0xdd, 0xff, 0x99, 0xbb, 0x55, 0x77, 0x11, 0x33, + 0xca, 0xe8, 0x8e, 0xac, 0x42, 0x60, 0x6, 0x24, 0xc7, 0xe5, 0x83, 0xa1, 0x4f, 0x6d, 0xb, 0x29, + 0xe4, 0xc6, 0xa0, 0x82, 0x6c, 0x4e, 0x28, 0xa, 0xe9, 0xcb, 0xad, 0x8f, 0x61, 0x43, 0x25, 0x7, + 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0xf3, 0xd1, 0xb7, 0x95, 0x7b, 0x59, 0x3f, 0x1d, + 0xb8, 0x9a, 0xfc, 0xde, 0x30, 0x12, 0x74, 0x56, 0xb5, 0x97, 0xf1, 0xd3, 0x3d, 0x1f, 0x79, 0x5b, + 0xa2, 0x80, 0xe6, 0xc4, 0x2a, 0x8, 0x6e, 0x4c, 0xaf, 0x8d, 0xeb, 0xc9, 0x27, 0x5, 0x63, 0x41, + 0x8c, 0xae, 0xc8, 0xea, 0x4, 0x26, 0x40, 0x62, 0x81, 0xa3, 0xc5, 0xe7, 0x9, 0x2b, 0x4d, 0x6f, + 0x96, 0xb4, 0xd2, 0xf0, 0x1e, 0x3c, 0x5a, 0x78, 0x9b, 0xb9, 0xdf, 0xfd, 0x13, 0x31, 0x57, 0x75, + ], + [ + 0x0, 0x23, 0x46, 0x65, 0x8c, 0xaf, 0xca, 0xe9, 0x5, 0x26, 0x43, 0x60, 0x89, 0xaa, 0xcf, 0xec, + 0xa, 0x29, 0x4c, 0x6f, 0x86, 0xa5, 0xc0, 0xe3, 0xf, 0x2c, 0x49, 0x6a, 0x83, 0xa0, 0xc5, 0xe6, + 0x14, 0x37, 0x52, 0x71, 0x98, 0xbb, 0xde, 0xfd, 0x11, 0x32, 0x57, 0x74, 0x9d, 0xbe, 0xdb, 0xf8, + 0x1e, 0x3d, 0x58, 0x7b, 0x92, 0xb1, 0xd4, 0xf7, 0x1b, 0x38, 0x5d, 0x7e, 0x97, 0xb4, 0xd1, 0xf2, + 0x28, 0xb, 0x6e, 0x4d, 0xa4, 0x87, 0xe2, 0xc1, 0x2d, 0xe, 0x6b, 0x48, 0xa1, 0x82, 0xe7, 0xc4, + 0x22, 0x1, 0x64, 0x47, 0xae, 0x8d, 0xe8, 0xcb, 0x27, 0x4, 0x61, 0x42, 0xab, 0x88, 0xed, 0xce, + 0x3c, 0x1f, 0x7a, 0x59, 0xb0, 0x93, 0xf6, 0xd5, 0x39, 0x1a, 0x7f, 0x5c, 0xb5, 0x96, 0xf3, 0xd0, + 0x36, 0x15, 0x70, 0x53, 0xba, 0x99, 0xfc, 0xdf, 0x33, 0x10, 0x75, 0x56, 0xbf, 0x9c, 0xf9, 0xda, + 0x50, 0x73, 0x16, 0x35, 0xdc, 0xff, 0x9a, 0xb9, 0x55, 0x76, 0x13, 0x30, 0xd9, 0xfa, 0x9f, 0xbc, + 0x5a, 0x79, 0x1c, 0x3f, 0xd6, 0xf5, 0x90, 0xb3, 0x5f, 0x7c, 0x19, 0x3a, 0xd3, 0xf0, 0x95, 0xb6, + 0x44, 0x67, 0x2, 0x21, 0xc8, 0xeb, 0x8e, 0xad, 0x41, 0x62, 0x7, 0x24, 0xcd, 0xee, 0x8b, 0xa8, + 0x4e, 0x6d, 0x8, 0x2b, 0xc2, 0xe1, 0x84, 0xa7, 0x4b, 0x68, 0xd, 0x2e, 0xc7, 0xe4, 0x81, 0xa2, + 0x78, 0x5b, 0x3e, 0x1d, 0xf4, 0xd7, 0xb2, 0x91, 0x7d, 0x5e, 0x3b, 0x18, 0xf1, 0xd2, 0xb7, 0x94, + 0x72, 0x51, 0x34, 0x17, 0xfe, 0xdd, 0xb8, 0x9b, 0x77, 0x54, 0x31, 0x12, 0xfb, 0xd8, 0xbd, 0x9e, + 0x6c, 0x4f, 0x2a, 0x9, 0xe0, 0xc3, 0xa6, 0x85, 0x69, 0x4a, 0x2f, 0xc, 0xe5, 0xc6, 0xa3, 0x80, + 0x66, 0x45, 0x20, 0x3, 0xea, 0xc9, 0xac, 0x8f, 0x63, 0x40, 0x25, 0x6, 0xef, 0xcc, 0xa9, 0x8a, + ], + [ + 0x0, 0x24, 0x48, 0x6c, 0x90, 0xb4, 0xd8, 0xfc, 0x3d, 0x19, 0x75, 0x51, 0xad, 0x89, 0xe5, 0xc1, + 0x7a, 0x5e, 0x32, 0x16, 0xea, 0xce, 0xa2, 0x86, 0x47, 0x63, 0xf, 0x2b, 0xd7, 0xf3, 0x9f, 0xbb, + 0xf4, 0xd0, 0xbc, 0x98, 0x64, 0x40, 0x2c, 0x8, 0xc9, 0xed, 0x81, 0xa5, 0x59, 0x7d, 0x11, 0x35, + 0x8e, 0xaa, 0xc6, 0xe2, 0x1e, 0x3a, 0x56, 0x72, 0xb3, 0x97, 0xfb, 0xdf, 0x23, 0x7, 0x6b, 0x4f, + 0xf5, 0xd1, 0xbd, 0x99, 0x65, 0x41, 0x2d, 0x9, 0xc8, 0xec, 0x80, 0xa4, 0x58, 0x7c, 0x10, 0x34, + 0x8f, 0xab, 0xc7, 0xe3, 0x1f, 0x3b, 0x57, 0x73, 0xb2, 0x96, 0xfa, 0xde, 0x22, 0x6, 0x6a, 0x4e, + 0x1, 0x25, 0x49, 0x6d, 0x91, 0xb5, 0xd9, 0xfd, 0x3c, 0x18, 0x74, 0x50, 0xac, 0x88, 0xe4, 0xc0, + 0x7b, 0x5f, 0x33, 0x17, 0xeb, 0xcf, 0xa3, 0x87, 0x46, 0x62, 0xe, 0x2a, 0xd6, 0xf2, 0x9e, 0xba, + 0xf7, 0xd3, 0xbf, 0x9b, 0x67, 0x43, 0x2f, 0xb, 0xca, 0xee, 0x82, 0xa6, 0x5a, 0x7e, 0x12, 0x36, + 0x8d, 0xa9, 0xc5, 0xe1, 0x1d, 0x39, 0x55, 0x71, 0xb0, 0x94, 0xf8, 0xdc, 0x20, 0x4, 0x68, 0x4c, + 0x3, 0x27, 0x4b, 0x6f, 0x93, 0xb7, 0xdb, 0xff, 0x3e, 0x1a, 0x76, 0x52, 0xae, 0x8a, 0xe6, 0xc2, + 0x79, 0x5d, 0x31, 0x15, 0xe9, 0xcd, 0xa1, 0x85, 0x44, 0x60, 0xc, 0x28, 0xd4, 0xf0, 0x9c, 0xb8, + 0x2, 0x26, 0x4a, 0x6e, 0x92, 0xb6, 0xda, 0xfe, 0x3f, 0x1b, 0x77, 0x53, 0xaf, 0x8b, 0xe7, 0xc3, + 0x78, 0x5c, 0x30, 0x14, 0xe8, 0xcc, 0xa0, 0x84, 0x45, 0x61, 0xd, 0x29, 0xd5, 0xf1, 0x9d, 0xb9, + 0xf6, 0xd2, 0xbe, 0x9a, 0x66, 0x42, 0x2e, 0xa, 0xcb, 0xef, 0x83, 0xa7, 0x5b, 0x7f, 0x13, 0x37, + 0x8c, 0xa8, 0xc4, 0xe0, 0x1c, 0x38, 0x54, 0x70, 0xb1, 0x95, 0xf9, 0xdd, 0x21, 0x5, 0x69, 0x4d, + ], + [ + 0x0, 0x25, 0x4a, 0x6f, 0x94, 0xb1, 0xde, 0xfb, 0x35, 0x10, 0x7f, 0x5a, 0xa1, 0x84, 0xeb, 0xce, + 0x6a, 0x4f, 0x20, 0x5, 0xfe, 0xdb, 0xb4, 0x91, 0x5f, 0x7a, 0x15, 0x30, 0xcb, 0xee, 0x81, 0xa4, + 0xd4, 0xf1, 0x9e, 0xbb, 0x40, 0x65, 0xa, 0x2f, 0xe1, 0xc4, 0xab, 0x8e, 0x75, 0x50, 0x3f, 0x1a, + 0xbe, 0x9b, 0xf4, 0xd1, 0x2a, 0xf, 0x60, 0x45, 0x8b, 0xae, 0xc1, 0xe4, 0x1f, 0x3a, 0x55, 0x70, + 0xb5, 0x90, 0xff, 0xda, 0x21, 0x4, 0x6b, 0x4e, 0x80, 0xa5, 0xca, 0xef, 0x14, 0x31, 0x5e, 0x7b, + 0xdf, 0xfa, 0x95, 0xb0, 0x4b, 0x6e, 0x1, 0x24, 0xea, 0xcf, 0xa0, 0x85, 0x7e, 0x5b, 0x34, 0x11, + 0x61, 0x44, 0x2b, 0xe, 0xf5, 0xd0, 0xbf, 0x9a, 0x54, 0x71, 0x1e, 0x3b, 0xc0, 0xe5, 0x8a, 0xaf, + 0xb, 0x2e, 0x41, 0x64, 0x9f, 0xba, 0xd5, 0xf0, 0x3e, 0x1b, 0x74, 0x51, 0xaa, 0x8f, 0xe0, 0xc5, + 0x77, 0x52, 0x3d, 0x18, 0xe3, 0xc6, 0xa9, 0x8c, 0x42, 0x67, 0x8, 0x2d, 0xd6, 0xf3, 0x9c, 0xb9, + 0x1d, 0x38, 0x57, 0x72, 0x89, 0xac, 0xc3, 0xe6, 0x28, 0xd, 0x62, 0x47, 0xbc, 0x99, 0xf6, 0xd3, + 0xa3, 0x86, 0xe9, 0xcc, 0x37, 0x12, 0x7d, 0x58, 0x96, 0xb3, 0xdc, 0xf9, 0x2, 0x27, 0x48, 0x6d, + 0xc9, 0xec, 0x83, 0xa6, 0x5d, 0x78, 0x17, 0x32, 0xfc, 0xd9, 0xb6, 0x93, 0x68, 0x4d, 0x22, 0x7, + 0xc2, 0xe7, 0x88, 0xad, 0x56, 0x73, 0x1c, 0x39, 0xf7, 0xd2, 0xbd, 0x98, 0x63, 0x46, 0x29, 0xc, + 0xa8, 0x8d, 0xe2, 0xc7, 0x3c, 0x19, 0x76, 0x53, 0x9d, 0xb8, 0xd7, 0xf2, 0x9, 0x2c, 0x43, 0x66, + 0x16, 0x33, 0x5c, 0x79, 0x82, 0xa7, 0xc8, 0xed, 0x23, 0x6, 0x69, 0x4c, 0xb7, 0x92, 0xfd, 0xd8, + 0x7c, 0x59, 0x36, 0x13, 0xe8, 0xcd, 0xa2, 0x87, 0x49, 0x6c, 0x3, 0x26, 0xdd, 0xf8, 0x97, 0xb2, + ], + [ + 0x0, 0x26, 0x4c, 0x6a, 0x98, 0xbe, 0xd4, 0xf2, 0x2d, 0xb, 0x61, 0x47, 0xb5, 0x93, 0xf9, 0xdf, + 0x5a, 0x7c, 0x16, 0x30, 0xc2, 0xe4, 0x8e, 0xa8, 0x77, 0x51, 0x3b, 0x1d, 0xef, 0xc9, 0xa3, 0x85, + 0xb4, 0x92, 0xf8, 0xde, 0x2c, 0xa, 0x60, 0x46, 0x99, 0xbf, 0xd5, 0xf3, 0x1, 0x27, 0x4d, 0x6b, + 0xee, 0xc8, 0xa2, 0x84, 0x76, 0x50, 0x3a, 0x1c, 0xc3, 0xe5, 0x8f, 0xa9, 0x5b, 0x7d, 0x17, 0x31, + 0x75, 0x53, 0x39, 0x1f, 0xed, 0xcb, 0xa1, 0x87, 0x58, 0x7e, 0x14, 0x32, 0xc0, 0xe6, 0x8c, 0xaa, + 0x2f, 0x9, 0x63, 0x45, 0xb7, 0x91, 0xfb, 0xdd, 0x2, 0x24, 0x4e, 0x68, 0x9a, 0xbc, 0xd6, 0xf0, + 0xc1, 0xe7, 0x8d, 0xab, 0x59, 0x7f, 0x15, 0x33, 0xec, 0xca, 0xa0, 0x86, 0x74, 0x52, 0x38, 0x1e, + 0x9b, 0xbd, 0xd7, 0xf1, 0x3, 0x25, 0x4f, 0x69, 0xb6, 0x90, 0xfa, 0xdc, 0x2e, 0x8, 0x62, 0x44, + 0xea, 0xcc, 0xa6, 0x80, 0x72, 0x54, 0x3e, 0x18, 0xc7, 0xe1, 0x8b, 0xad, 0x5f, 0x79, 0x13, 0x35, + 0xb0, 0x96, 0xfc, 0xda, 0x28, 0xe, 0x64, 0x42, 0x9d, 0xbb, 0xd1, 0xf7, 0x5, 0x23, 0x49, 0x6f, + 0x5e, 0x78, 0x12, 0x34, 0xc6, 0xe0, 0x8a, 0xac, 0x73, 0x55, 0x3f, 0x19, 0xeb, 0xcd, 0xa7, 0x81, + 0x4, 0x22, 0x48, 0x6e, 0x9c, 0xba, 0xd0, 0xf6, 0x29, 0xf, 0x65, 0x43, 0xb1, 0x97, 0xfd, 0xdb, + 0x9f, 0xb9, 0xd3, 0xf5, 0x7, 0x21, 0x4b, 0x6d, 0xb2, 0x94, 0xfe, 0xd8, 0x2a, 0xc, 0x66, 0x40, + 0xc5, 0xe3, 0x89, 0xaf, 0x5d, 0x7b, 0x11, 0x37, 0xe8, 0xce, 0xa4, 0x82, 0x70, 0x56, 0x3c, 0x1a, + 0x2b, 0xd, 0x67, 0x41, 0xb3, 0x95, 0xff, 0xd9, 0x6, 0x20, 0x4a, 0x6c, 0x9e, 0xb8, 0xd2, 0xf4, + 0x71, 0x57, 0x3d, 0x1b, 0xe9, 0xcf, 0xa5, 0x83, 0x5c, 0x7a, 0x10, 0x36, 0xc4, 0xe2, 0x88, 0xae, + ], + [ + 0x0, 0x27, 0x4e, 0x69, 0x9c, 0xbb, 0xd2, 0xf5, 0x25, 0x2, 0x6b, 0x4c, 0xb9, 0x9e, 0xf7, 0xd0, + 0x4a, 0x6d, 0x4, 0x23, 0xd6, 0xf1, 0x98, 0xbf, 0x6f, 0x48, 0x21, 0x6, 0xf3, 0xd4, 0xbd, 0x9a, + 0x94, 0xb3, 0xda, 0xfd, 0x8, 0x2f, 0x46, 0x61, 0xb1, 0x96, 0xff, 0xd8, 0x2d, 0xa, 0x63, 0x44, + 0xde, 0xf9, 0x90, 0xb7, 0x42, 0x65, 0xc, 0x2b, 0xfb, 0xdc, 0xb5, 0x92, 0x67, 0x40, 0x29, 0xe, + 0x35, 0x12, 0x7b, 0x5c, 0xa9, 0x8e, 0xe7, 0xc0, 0x10, 0x37, 0x5e, 0x79, 0x8c, 0xab, 0xc2, 0xe5, + 0x7f, 0x58, 0x31, 0x16, 0xe3, 0xc4, 0xad, 0x8a, 0x5a, 0x7d, 0x14, 0x33, 0xc6, 0xe1, 0x88, 0xaf, + 0xa1, 0x86, 0xef, 0xc8, 0x3d, 0x1a, 0x73, 0x54, 0x84, 0xa3, 0xca, 0xed, 0x18, 0x3f, 0x56, 0x71, + 0xeb, 0xcc, 0xa5, 0x82, 0x77, 0x50, 0x39, 0x1e, 0xce, 0xe9, 0x80, 0xa7, 0x52, 0x75, 0x1c, 0x3b, + 0x6a, 0x4d, 0x24, 0x3, 0xf6, 0xd1, 0xb8, 0x9f, 0x4f, 0x68, 0x1, 0x26, 0xd3, 0xf4, 0x9d, 0xba, + 0x20, 0x7, 0x6e, 0x49, 0xbc, 0x9b, 0xf2, 0xd5, 0x5, 0x22, 0x4b, 0x6c, 0x99, 0xbe, 0xd7, 0xf0, + 0xfe, 0xd9, 0xb0, 0x97, 0x62, 0x45, 0x2c, 0xb, 0xdb, 0xfc, 0x95, 0xb2, 0x47, 0x60, 0x9, 0x2e, + 0xb4, 0x93, 0xfa, 0xdd, 0x28, 0xf, 0x66, 0x41, 0x91, 0xb6, 0xdf, 0xf8, 0xd, 0x2a, 0x43, 0x64, + 0x5f, 0x78, 0x11, 0x36, 0xc3, 0xe4, 0x8d, 0xaa, 0x7a, 0x5d, 0x34, 0x13, 0xe6, 0xc1, 0xa8, 0x8f, + 0x15, 0x32, 0x5b, 0x7c, 0x89, 0xae, 0xc7, 0xe0, 0x30, 0x17, 0x7e, 0x59, 0xac, 0x8b, 0xe2, 0xc5, + 0xcb, 0xec, 0x85, 0xa2, 0x57, 0x70, 0x19, 0x3e, 0xee, 0xc9, 0xa0, 0x87, 0x72, 0x55, 0x3c, 0x1b, + 0x81, 0xa6, 0xcf, 0xe8, 0x1d, 0x3a, 0x53, 0x74, 0xa4, 0x83, 0xea, 0xcd, 0x38, 0x1f, 0x76, 0x51, + ], + [ + 0x0, 0x28, 0x50, 0x78, 0xa0, 0x88, 0xf0, 0xd8, 0x5d, 0x75, 0xd, 0x25, 0xfd, 0xd5, 0xad, 0x85, + 0xba, 0x92, 0xea, 0xc2, 0x1a, 0x32, 0x4a, 0x62, 0xe7, 0xcf, 0xb7, 0x9f, 0x47, 0x6f, 0x17, 0x3f, + 0x69, 0x41, 0x39, 0x11, 0xc9, 0xe1, 0x99, 0xb1, 0x34, 0x1c, 0x64, 0x4c, 0x94, 0xbc, 0xc4, 0xec, + 0xd3, 0xfb, 0x83, 0xab, 0x73, 0x5b, 0x23, 0xb, 0x8e, 0xa6, 0xde, 0xf6, 0x2e, 0x6, 0x7e, 0x56, + 0xd2, 0xfa, 0x82, 0xaa, 0x72, 0x5a, 0x22, 0xa, 0x8f, 0xa7, 0xdf, 0xf7, 0x2f, 0x7, 0x7f, 0x57, + 0x68, 0x40, 0x38, 0x10, 0xc8, 0xe0, 0x98, 0xb0, 0x35, 0x1d, 0x65, 0x4d, 0x95, 0xbd, 0xc5, 0xed, + 0xbb, 0x93, 0xeb, 0xc3, 0x1b, 0x33, 0x4b, 0x63, 0xe6, 0xce, 0xb6, 0x9e, 0x46, 0x6e, 0x16, 0x3e, + 0x1, 0x29, 0x51, 0x79, 0xa1, 0x89, 0xf1, 0xd9, 0x5c, 0x74, 0xc, 0x24, 0xfc, 0xd4, 0xac, 0x84, + 0xb9, 0x91, 0xe9, 0xc1, 0x19, 0x31, 0x49, 0x61, 0xe4, 0xcc, 0xb4, 0x9c, 0x44, 0x6c, 0x14, 0x3c, + 0x3, 0x2b, 0x53, 0x7b, 0xa3, 0x8b, 0xf3, 0xdb, 0x5e, 0x76, 0xe, 0x26, 0xfe, 0xd6, 0xae, 0x86, + 0xd0, 0xf8, 0x80, 0xa8, 0x70, 0x58, 0x20, 0x8, 0x8d, 0xa5, 0xdd, 0xf5, 0x2d, 0x5, 0x7d, 0x55, + 0x6a, 0x42, 0x3a, 0x12, 0xca, 0xe2, 0x9a, 0xb2, 0x37, 0x1f, 0x67, 0x4f, 0x97, 0xbf, 0xc7, 0xef, + 0x6b, 0x43, 0x3b, 0x13, 0xcb, 0xe3, 0x9b, 0xb3, 0x36, 0x1e, 0x66, 0x4e, 0x96, 0xbe, 0xc6, 0xee, + 0xd1, 0xf9, 0x81, 0xa9, 0x71, 0x59, 0x21, 0x9, 0x8c, 0xa4, 0xdc, 0xf4, 0x2c, 0x4, 0x7c, 0x54, + 0x2, 0x2a, 0x52, 0x7a, 0xa2, 0x8a, 0xf2, 0xda, 0x5f, 0x77, 0xf, 0x27, 0xff, 0xd7, 0xaf, 0x87, + 0xb8, 0x90, 0xe8, 0xc0, 0x18, 0x30, 0x48, 0x60, 0xe5, 0xcd, 0xb5, 0x9d, 0x45, 0x6d, 0x15, 0x3d, + ], + [ + 0x0, 0x29, 0x52, 0x7b, 0xa4, 0x8d, 0xf6, 0xdf, 0x55, 0x7c, 0x7, 0x2e, 0xf1, 0xd8, 0xa3, 0x8a, + 0xaa, 0x83, 0xf8, 0xd1, 0xe, 0x27, 0x5c, 0x75, 0xff, 0xd6, 0xad, 0x84, 0x5b, 0x72, 0x9, 0x20, + 0x49, 0x60, 0x1b, 0x32, 0xed, 0xc4, 0xbf, 0x96, 0x1c, 0x35, 0x4e, 0x67, 0xb8, 0x91, 0xea, 0xc3, + 0xe3, 0xca, 0xb1, 0x98, 0x47, 0x6e, 0x15, 0x3c, 0xb6, 0x9f, 0xe4, 0xcd, 0x12, 0x3b, 0x40, 0x69, + 0x92, 0xbb, 0xc0, 0xe9, 0x36, 0x1f, 0x64, 0x4d, 0xc7, 0xee, 0x95, 0xbc, 0x63, 0x4a, 0x31, 0x18, + 0x38, 0x11, 0x6a, 0x43, 0x9c, 0xb5, 0xce, 0xe7, 0x6d, 0x44, 0x3f, 0x16, 0xc9, 0xe0, 0x9b, 0xb2, + 0xdb, 0xf2, 0x89, 0xa0, 0x7f, 0x56, 0x2d, 0x4, 0x8e, 0xa7, 0xdc, 0xf5, 0x2a, 0x3, 0x78, 0x51, + 0x71, 0x58, 0x23, 0xa, 0xd5, 0xfc, 0x87, 0xae, 0x24, 0xd, 0x76, 0x5f, 0x80, 0xa9, 0xd2, 0xfb, + 0x39, 0x10, 0x6b, 0x42, 0x9d, 0xb4, 0xcf, 0xe6, 0x6c, 0x45, 0x3e, 0x17, 0xc8, 0xe1, 0x9a, 0xb3, + 0x93, 0xba, 0xc1, 0xe8, 0x37, 0x1e, 0x65, 0x4c, 0xc6, 0xef, 0x94, 0xbd, 0x62, 0x4b, 0x30, 0x19, + 0x70, 0x59, 0x22, 0xb, 0xd4, 0xfd, 0x86, 0xaf, 0x25, 0xc, 0x77, 0x5e, 0x81, 0xa8, 0xd3, 0xfa, + 0xda, 0xf3, 0x88, 0xa1, 0x7e, 0x57, 0x2c, 0x5, 0x8f, 0xa6, 0xdd, 0xf4, 0x2b, 0x2, 0x79, 0x50, + 0xab, 0x82, 0xf9, 0xd0, 0xf, 0x26, 0x5d, 0x74, 0xfe, 0xd7, 0xac, 0x85, 0x5a, 0x73, 0x8, 0x21, + 0x1, 0x28, 0x53, 0x7a, 0xa5, 0x8c, 0xf7, 0xde, 0x54, 0x7d, 0x6, 0x2f, 0xf0, 0xd9, 0xa2, 0x8b, + 0xe2, 0xcb, 0xb0, 0x99, 0x46, 0x6f, 0x14, 0x3d, 0xb7, 0x9e, 0xe5, 0xcc, 0x13, 0x3a, 0x41, 0x68, + 0x48, 0x61, 0x1a, 0x33, 0xec, 0xc5, 0xbe, 0x97, 0x1d, 0x34, 0x4f, 0x66, 0xb9, 0x90, 0xeb, 0xc2, + ], + [ + 0x0, 0x2a, 0x54, 0x7e, 0xa8, 0x82, 0xfc, 0xd6, 0x4d, 0x67, 0x19, 0x33, 0xe5, 0xcf, 0xb1, 0x9b, + 0x9a, 0xb0, 0xce, 0xe4, 0x32, 0x18, 0x66, 0x4c, 0xd7, 0xfd, 0x83, 0xa9, 0x7f, 0x55, 0x2b, 0x1, + 0x29, 0x3, 0x7d, 0x57, 0x81, 0xab, 0xd5, 0xff, 0x64, 0x4e, 0x30, 0x1a, 0xcc, 0xe6, 0x98, 0xb2, + 0xb3, 0x99, 0xe7, 0xcd, 0x1b, 0x31, 0x4f, 0x65, 0xfe, 0xd4, 0xaa, 0x80, 0x56, 0x7c, 0x2, 0x28, + 0x52, 0x78, 0x6, 0x2c, 0xfa, 0xd0, 0xae, 0x84, 0x1f, 0x35, 0x4b, 0x61, 0xb7, 0x9d, 0xe3, 0xc9, + 0xc8, 0xe2, 0x9c, 0xb6, 0x60, 0x4a, 0x34, 0x1e, 0x85, 0xaf, 0xd1, 0xfb, 0x2d, 0x7, 0x79, 0x53, + 0x7b, 0x51, 0x2f, 0x5, 0xd3, 0xf9, 0x87, 0xad, 0x36, 0x1c, 0x62, 0x48, 0x9e, 0xb4, 0xca, 0xe0, + 0xe1, 0xcb, 0xb5, 0x9f, 0x49, 0x63, 0x1d, 0x37, 0xac, 0x86, 0xf8, 0xd2, 0x4, 0x2e, 0x50, 0x7a, + 0xa4, 0x8e, 0xf0, 0xda, 0xc, 0x26, 0x58, 0x72, 0xe9, 0xc3, 0xbd, 0x97, 0x41, 0x6b, 0x15, 0x3f, + 0x3e, 0x14, 0x6a, 0x40, 0x96, 0xbc, 0xc2, 0xe8, 0x73, 0x59, 0x27, 0xd, 0xdb, 0xf1, 0x8f, 0xa5, + 0x8d, 0xa7, 0xd9, 0xf3, 0x25, 0xf, 0x71, 0x5b, 0xc0, 0xea, 0x94, 0xbe, 0x68, 0x42, 0x3c, 0x16, + 0x17, 0x3d, 0x43, 0x69, 0xbf, 0x95, 0xeb, 0xc1, 0x5a, 0x70, 0xe, 0x24, 0xf2, 0xd8, 0xa6, 0x8c, + 0xf6, 0xdc, 0xa2, 0x88, 0x5e, 0x74, 0xa, 0x20, 0xbb, 0x91, 0xef, 0xc5, 0x13, 0x39, 0x47, 0x6d, + 0x6c, 0x46, 0x38, 0x12, 0xc4, 0xee, 0x90, 0xba, 0x21, 0xb, 0x75, 0x5f, 0x89, 0xa3, 0xdd, 0xf7, + 0xdf, 0xf5, 0x8b, 0xa1, 0x77, 0x5d, 0x23, 0x9, 0x92, 0xb8, 0xc6, 0xec, 0x3a, 0x10, 0x6e, 0x44, + 0x45, 0x6f, 0x11, 0x3b, 0xed, 0xc7, 0xb9, 0x93, 0x8, 0x22, 0x5c, 0x76, 0xa0, 0x8a, 0xf4, 0xde, + ], + [ + 0x0, 0x2b, 0x56, 0x7d, 0xac, 0x87, 0xfa, 0xd1, 0x45, 0x6e, 0x13, 0x38, 0xe9, 0xc2, 0xbf, 0x94, + 0x8a, 0xa1, 0xdc, 0xf7, 0x26, 0xd, 0x70, 0x5b, 0xcf, 0xe4, 0x99, 0xb2, 0x63, 0x48, 0x35, 0x1e, + 0x9, 0x22, 0x5f, 0x74, 0xa5, 0x8e, 0xf3, 0xd8, 0x4c, 0x67, 0x1a, 0x31, 0xe0, 0xcb, 0xb6, 0x9d, + 0x83, 0xa8, 0xd5, 0xfe, 0x2f, 0x4, 0x79, 0x52, 0xc6, 0xed, 0x90, 0xbb, 0x6a, 0x41, 0x3c, 0x17, + 0x12, 0x39, 0x44, 0x6f, 0xbe, 0x95, 0xe8, 0xc3, 0x57, 0x7c, 0x1, 0x2a, 0xfb, 0xd0, 0xad, 0x86, + 0x98, 0xb3, 0xce, 0xe5, 0x34, 0x1f, 0x62, 0x49, 0xdd, 0xf6, 0x8b, 0xa0, 0x71, 0x5a, 0x27, 0xc, + 0x1b, 0x30, 0x4d, 0x66, 0xb7, 0x9c, 0xe1, 0xca, 0x5e, 0x75, 0x8, 0x23, 0xf2, 0xd9, 0xa4, 0x8f, + 0x91, 0xba, 0xc7, 0xec, 0x3d, 0x16, 0x6b, 0x40, 0xd4, 0xff, 0x82, 0xa9, 0x78, 0x53, 0x2e, 0x5, + 0x24, 0xf, 0x72, 0x59, 0x88, 0xa3, 0xde, 0xf5, 0x61, 0x4a, 0x37, 0x1c, 0xcd, 0xe6, 0x9b, 0xb0, + 0xae, 0x85, 0xf8, 0xd3, 0x2, 0x29, 0x54, 0x7f, 0xeb, 0xc0, 0xbd, 0x96, 0x47, 0x6c, 0x11, 0x3a, + 0x2d, 0x6, 0x7b, 0x50, 0x81, 0xaa, 0xd7, 0xfc, 0x68, 0x43, 0x3e, 0x15, 0xc4, 0xef, 0x92, 0xb9, + 0xa7, 0x8c, 0xf1, 0xda, 0xb, 0x20, 0x5d, 0x76, 0xe2, 0xc9, 0xb4, 0x9f, 0x4e, 0x65, 0x18, 0x33, + 0x36, 0x1d, 0x60, 0x4b, 0x9a, 0xb1, 0xcc, 0xe7, 0x73, 0x58, 0x25, 0xe, 0xdf, 0xf4, 0x89, 0xa2, + 0xbc, 0x97, 0xea, 0xc1, 0x10, 0x3b, 0x46, 0x6d, 0xf9, 0xd2, 0xaf, 0x84, 0x55, 0x7e, 0x3, 0x28, + 0x3f, 0x14, 0x69, 0x42, 0x93, 0xb8, 0xc5, 0xee, 0x7a, 0x51, 0x2c, 0x7, 0xd6, 0xfd, 0x80, 0xab, + 0xb5, 0x9e, 0xe3, 0xc8, 0x19, 0x32, 0x4f, 0x64, 0xf0, 0xdb, 0xa6, 0x8d, 0x5c, 0x77, 0xa, 0x21, + ], + [ + 0x0, 0x2c, 0x58, 0x74, 0xb0, 0x9c, 0xe8, 0xc4, 0x7d, 0x51, 0x25, 0x9, 0xcd, 0xe1, 0x95, 0xb9, + 0xfa, 0xd6, 0xa2, 0x8e, 0x4a, 0x66, 0x12, 0x3e, 0x87, 0xab, 0xdf, 0xf3, 0x37, 0x1b, 0x6f, 0x43, + 0xe9, 0xc5, 0xb1, 0x9d, 0x59, 0x75, 0x1, 0x2d, 0x94, 0xb8, 0xcc, 0xe0, 0x24, 0x8, 0x7c, 0x50, + 0x13, 0x3f, 0x4b, 0x67, 0xa3, 0x8f, 0xfb, 0xd7, 0x6e, 0x42, 0x36, 0x1a, 0xde, 0xf2, 0x86, 0xaa, + 0xcf, 0xe3, 0x97, 0xbb, 0x7f, 0x53, 0x27, 0xb, 0xb2, 0x9e, 0xea, 0xc6, 0x2, 0x2e, 0x5a, 0x76, + 0x35, 0x19, 0x6d, 0x41, 0x85, 0xa9, 0xdd, 0xf1, 0x48, 0x64, 0x10, 0x3c, 0xf8, 0xd4, 0xa0, 0x8c, + 0x26, 0xa, 0x7e, 0x52, 0x96, 0xba, 0xce, 0xe2, 0x5b, 0x77, 0x3, 0x2f, 0xeb, 0xc7, 0xb3, 0x9f, + 0xdc, 0xf0, 0x84, 0xa8, 0x6c, 0x40, 0x34, 0x18, 0xa1, 0x8d, 0xf9, 0xd5, 0x11, 0x3d, 0x49, 0x65, + 0x83, 0xaf, 0xdb, 0xf7, 0x33, 0x1f, 0x6b, 0x47, 0xfe, 0xd2, 0xa6, 0x8a, 0x4e, 0x62, 0x16, 0x3a, + 0x79, 0x55, 0x21, 0xd, 0xc9, 0xe5, 0x91, 0xbd, 0x4, 0x28, 0x5c, 0x70, 0xb4, 0x98, 0xec, 0xc0, + 0x6a, 0x46, 0x32, 0x1e, 0xda, 0xf6, 0x82, 0xae, 0x17, 0x3b, 0x4f, 0x63, 0xa7, 0x8b, 0xff, 0xd3, + 0x90, 0xbc, 0xc8, 0xe4, 0x20, 0xc, 0x78, 0x54, 0xed, 0xc1, 0xb5, 0x99, 0x5d, 0x71, 0x5, 0x29, + 0x4c, 0x60, 0x14, 0x38, 0xfc, 0xd0, 0xa4, 0x88, 0x31, 0x1d, 0x69, 0x45, 0x81, 0xad, 0xd9, 0xf5, + 0xb6, 0x9a, 0xee, 0xc2, 0x6, 0x2a, 0x5e, 0x72, 0xcb, 0xe7, 0x93, 0xbf, 0x7b, 0x57, 0x23, 0xf, + 0xa5, 0x89, 0xfd, 0xd1, 0x15, 0x39, 0x4d, 0x61, 0xd8, 0xf4, 0x80, 0xac, 0x68, 0x44, 0x30, 0x1c, + 0x5f, 0x73, 0x7, 0x2b, 0xef, 0xc3, 0xb7, 0x9b, 0x22, 0xe, 0x7a, 0x56, 0x92, 0xbe, 0xca, 0xe6, + ], + [ + 0x0, 0x2d, 0x5a, 0x77, 0xb4, 0x99, 0xee, 0xc3, 0x75, 0x58, 0x2f, 0x2, 0xc1, 0xec, 0x9b, 0xb6, + 0xea, 0xc7, 0xb0, 0x9d, 0x5e, 0x73, 0x4, 0x29, 0x9f, 0xb2, 0xc5, 0xe8, 0x2b, 0x6, 0x71, 0x5c, + 0xc9, 0xe4, 0x93, 0xbe, 0x7d, 0x50, 0x27, 0xa, 0xbc, 0x91, 0xe6, 0xcb, 0x8, 0x25, 0x52, 0x7f, + 0x23, 0xe, 0x79, 0x54, 0x97, 0xba, 0xcd, 0xe0, 0x56, 0x7b, 0xc, 0x21, 0xe2, 0xcf, 0xb8, 0x95, + 0x8f, 0xa2, 0xd5, 0xf8, 0x3b, 0x16, 0x61, 0x4c, 0xfa, 0xd7, 0xa0, 0x8d, 0x4e, 0x63, 0x14, 0x39, + 0x65, 0x48, 0x3f, 0x12, 0xd1, 0xfc, 0x8b, 0xa6, 0x10, 0x3d, 0x4a, 0x67, 0xa4, 0x89, 0xfe, 0xd3, + 0x46, 0x6b, 0x1c, 0x31, 0xf2, 0xdf, 0xa8, 0x85, 0x33, 0x1e, 0x69, 0x44, 0x87, 0xaa, 0xdd, 0xf0, + 0xac, 0x81, 0xf6, 0xdb, 0x18, 0x35, 0x42, 0x6f, 0xd9, 0xf4, 0x83, 0xae, 0x6d, 0x40, 0x37, 0x1a, + 0x3, 0x2e, 0x59, 0x74, 0xb7, 0x9a, 0xed, 0xc0, 0x76, 0x5b, 0x2c, 0x1, 0xc2, 0xef, 0x98, 0xb5, + 0xe9, 0xc4, 0xb3, 0x9e, 0x5d, 0x70, 0x7, 0x2a, 0x9c, 0xb1, 0xc6, 0xeb, 0x28, 0x5, 0x72, 0x5f, + 0xca, 0xe7, 0x90, 0xbd, 0x7e, 0x53, 0x24, 0x9, 0xbf, 0x92, 0xe5, 0xc8, 0xb, 0x26, 0x51, 0x7c, + 0x20, 0xd, 0x7a, 0x57, 0x94, 0xb9, 0xce, 0xe3, 0x55, 0x78, 0xf, 0x22, 0xe1, 0xcc, 0xbb, 0x96, + 0x8c, 0xa1, 0xd6, 0xfb, 0x38, 0x15, 0x62, 0x4f, 0xf9, 0xd4, 0xa3, 0x8e, 0x4d, 0x60, 0x17, 0x3a, + 0x66, 0x4b, 0x3c, 0x11, 0xd2, 0xff, 0x88, 0xa5, 0x13, 0x3e, 0x49, 0x64, 0xa7, 0x8a, 0xfd, 0xd0, + 0x45, 0x68, 0x1f, 0x32, 0xf1, 0xdc, 0xab, 0x86, 0x30, 0x1d, 0x6a, 0x47, 0x84, 0xa9, 0xde, 0xf3, + 0xaf, 0x82, 0xf5, 0xd8, 0x1b, 0x36, 0x41, 0x6c, 0xda, 0xf7, 0x80, 0xad, 0x6e, 0x43, 0x34, 0x19, + ], + [ + 0x0, 0x2e, 0x5c, 0x72, 0xb8, 0x96, 0xe4, 0xca, 0x6d, 0x43, 0x31, 0x1f, 0xd5, 0xfb, 0x89, 0xa7, + 0xda, 0xf4, 0x86, 0xa8, 0x62, 0x4c, 0x3e, 0x10, 0xb7, 0x99, 0xeb, 0xc5, 0xf, 0x21, 0x53, 0x7d, + 0xa9, 0x87, 0xf5, 0xdb, 0x11, 0x3f, 0x4d, 0x63, 0xc4, 0xea, 0x98, 0xb6, 0x7c, 0x52, 0x20, 0xe, + 0x73, 0x5d, 0x2f, 0x1, 0xcb, 0xe5, 0x97, 0xb9, 0x1e, 0x30, 0x42, 0x6c, 0xa6, 0x88, 0xfa, 0xd4, + 0x4f, 0x61, 0x13, 0x3d, 0xf7, 0xd9, 0xab, 0x85, 0x22, 0xc, 0x7e, 0x50, 0x9a, 0xb4, 0xc6, 0xe8, + 0x95, 0xbb, 0xc9, 0xe7, 0x2d, 0x3, 0x71, 0x5f, 0xf8, 0xd6, 0xa4, 0x8a, 0x40, 0x6e, 0x1c, 0x32, + 0xe6, 0xc8, 0xba, 0x94, 0x5e, 0x70, 0x2, 0x2c, 0x8b, 0xa5, 0xd7, 0xf9, 0x33, 0x1d, 0x6f, 0x41, + 0x3c, 0x12, 0x60, 0x4e, 0x84, 0xaa, 0xd8, 0xf6, 0x51, 0x7f, 0xd, 0x23, 0xe9, 0xc7, 0xb5, 0x9b, + 0x9e, 0xb0, 0xc2, 0xec, 0x26, 0x8, 0x7a, 0x54, 0xf3, 0xdd, 0xaf, 0x81, 0x4b, 0x65, 0x17, 0x39, + 0x44, 0x6a, 0x18, 0x36, 0xfc, 0xd2, 0xa0, 0x8e, 0x29, 0x7, 0x75, 0x5b, 0x91, 0xbf, 0xcd, 0xe3, + 0x37, 0x19, 0x6b, 0x45, 0x8f, 0xa1, 0xd3, 0xfd, 0x5a, 0x74, 0x6, 0x28, 0xe2, 0xcc, 0xbe, 0x90, + 0xed, 0xc3, 0xb1, 0x9f, 0x55, 0x7b, 0x9, 0x27, 0x80, 0xae, 0xdc, 0xf2, 0x38, 0x16, 0x64, 0x4a, + 0xd1, 0xff, 0x8d, 0xa3, 0x69, 0x47, 0x35, 0x1b, 0xbc, 0x92, 0xe0, 0xce, 0x4, 0x2a, 0x58, 0x76, + 0xb, 0x25, 0x57, 0x79, 0xb3, 0x9d, 0xef, 0xc1, 0x66, 0x48, 0x3a, 0x14, 0xde, 0xf0, 0x82, 0xac, + 0x78, 0x56, 0x24, 0xa, 0xc0, 0xee, 0x9c, 0xb2, 0x15, 0x3b, 0x49, 0x67, 0xad, 0x83, 0xf1, 0xdf, + 0xa2, 0x8c, 0xfe, 0xd0, 0x1a, 0x34, 0x46, 0x68, 0xcf, 0xe1, 0x93, 0xbd, 0x77, 0x59, 0x2b, 0x5, + ], + [ + 0x0, 0x2f, 0x5e, 0x71, 0xbc, 0x93, 0xe2, 0xcd, 0x65, 0x4a, 0x3b, 0x14, 0xd9, 0xf6, 0x87, 0xa8, + 0xca, 0xe5, 0x94, 0xbb, 0x76, 0x59, 0x28, 0x7, 0xaf, 0x80, 0xf1, 0xde, 0x13, 0x3c, 0x4d, 0x62, + 0x89, 0xa6, 0xd7, 0xf8, 0x35, 0x1a, 0x6b, 0x44, 0xec, 0xc3, 0xb2, 0x9d, 0x50, 0x7f, 0xe, 0x21, + 0x43, 0x6c, 0x1d, 0x32, 0xff, 0xd0, 0xa1, 0x8e, 0x26, 0x9, 0x78, 0x57, 0x9a, 0xb5, 0xc4, 0xeb, + 0xf, 0x20, 0x51, 0x7e, 0xb3, 0x9c, 0xed, 0xc2, 0x6a, 0x45, 0x34, 0x1b, 0xd6, 0xf9, 0x88, 0xa7, + 0xc5, 0xea, 0x9b, 0xb4, 0x79, 0x56, 0x27, 0x8, 0xa0, 0x8f, 0xfe, 0xd1, 0x1c, 0x33, 0x42, 0x6d, + 0x86, 0xa9, 0xd8, 0xf7, 0x3a, 0x15, 0x64, 0x4b, 0xe3, 0xcc, 0xbd, 0x92, 0x5f, 0x70, 0x1, 0x2e, + 0x4c, 0x63, 0x12, 0x3d, 0xf0, 0xdf, 0xae, 0x81, 0x29, 0x6, 0x77, 0x58, 0x95, 0xba, 0xcb, 0xe4, + 0x1e, 0x31, 0x40, 0x6f, 0xa2, 0x8d, 0xfc, 0xd3, 0x7b, 0x54, 0x25, 0xa, 0xc7, 0xe8, 0x99, 0xb6, + 0xd4, 0xfb, 0x8a, 0xa5, 0x68, 0x47, 0x36, 0x19, 0xb1, 0x9e, 0xef, 0xc0, 0xd, 0x22, 0x53, 0x7c, + 0x97, 0xb8, 0xc9, 0xe6, 0x2b, 0x4, 0x75, 0x5a, 0xf2, 0xdd, 0xac, 0x83, 0x4e, 0x61, 0x10, 0x3f, + 0x5d, 0x72, 0x3, 0x2c, 0xe1, 0xce, 0xbf, 0x90, 0x38, 0x17, 0x66, 0x49, 0x84, 0xab, 0xda, 0xf5, + 0x11, 0x3e, 0x4f, 0x60, 0xad, 0x82, 0xf3, 0xdc, 0x74, 0x5b, 0x2a, 0x5, 0xc8, 0xe7, 0x96, 0xb9, + 0xdb, 0xf4, 0x85, 0xaa, 0x67, 0x48, 0x39, 0x16, 0xbe, 0x91, 0xe0, 0xcf, 0x2, 0x2d, 0x5c, 0x73, + 0x98, 0xb7, 0xc6, 0xe9, 0x24, 0xb, 0x7a, 0x55, 0xfd, 0xd2, 0xa3, 0x8c, 0x41, 0x6e, 0x1f, 0x30, + 0x52, 0x7d, 0xc, 0x23, 0xee, 0xc1, 0xb0, 0x9f, 0x37, 0x18, 0x69, 0x46, 0x8b, 0xa4, 0xd5, 0xfa, + ], + [ + 0x0, 0x30, 0x60, 0x50, 0xc0, 0xf0, 0xa0, 0x90, 0x9d, 0xad, 0xfd, 0xcd, 0x5d, 0x6d, 0x3d, 0xd, + 0x27, 0x17, 0x47, 0x77, 0xe7, 0xd7, 0x87, 0xb7, 0xba, 0x8a, 0xda, 0xea, 0x7a, 0x4a, 0x1a, 0x2a, + 0x4e, 0x7e, 0x2e, 0x1e, 0x8e, 0xbe, 0xee, 0xde, 0xd3, 0xe3, 0xb3, 0x83, 0x13, 0x23, 0x73, 0x43, + 0x69, 0x59, 0x9, 0x39, 0xa9, 0x99, 0xc9, 0xf9, 0xf4, 0xc4, 0x94, 0xa4, 0x34, 0x4, 0x54, 0x64, + 0x9c, 0xac, 0xfc, 0xcc, 0x5c, 0x6c, 0x3c, 0xc, 0x1, 0x31, 0x61, 0x51, 0xc1, 0xf1, 0xa1, 0x91, + 0xbb, 0x8b, 0xdb, 0xeb, 0x7b, 0x4b, 0x1b, 0x2b, 0x26, 0x16, 0x46, 0x76, 0xe6, 0xd6, 0x86, 0xb6, + 0xd2, 0xe2, 0xb2, 0x82, 0x12, 0x22, 0x72, 0x42, 0x4f, 0x7f, 0x2f, 0x1f, 0x8f, 0xbf, 0xef, 0xdf, + 0xf5, 0xc5, 0x95, 0xa5, 0x35, 0x5, 0x55, 0x65, 0x68, 0x58, 0x8, 0x38, 0xa8, 0x98, 0xc8, 0xf8, + 0x25, 0x15, 0x45, 0x75, 0xe5, 0xd5, 0x85, 0xb5, 0xb8, 0x88, 0xd8, 0xe8, 0x78, 0x48, 0x18, 0x28, + 0x2, 0x32, 0x62, 0x52, 0xc2, 0xf2, 0xa2, 0x92, 0x9f, 0xaf, 0xff, 0xcf, 0x5f, 0x6f, 0x3f, 0xf, + 0x6b, 0x5b, 0xb, 0x3b, 0xab, 0x9b, 0xcb, 0xfb, 0xf6, 0xc6, 0x96, 0xa6, 0x36, 0x6, 0x56, 0x66, + 0x4c, 0x7c, 0x2c, 0x1c, 0x8c, 0xbc, 0xec, 0xdc, 0xd1, 0xe1, 0xb1, 0x81, 0x11, 0x21, 0x71, 0x41, + 0xb9, 0x89, 0xd9, 0xe9, 0x79, 0x49, 0x19, 0x29, 0x24, 0x14, 0x44, 0x74, 0xe4, 0xd4, 0x84, 0xb4, + 0x9e, 0xae, 0xfe, 0xce, 0x5e, 0x6e, 0x3e, 0xe, 0x3, 0x33, 0x63, 0x53, 0xc3, 0xf3, 0xa3, 0x93, + 0xf7, 0xc7, 0x97, 0xa7, 0x37, 0x7, 0x57, 0x67, 0x6a, 0x5a, 0xa, 0x3a, 0xaa, 0x9a, 0xca, 0xfa, + 0xd0, 0xe0, 0xb0, 0x80, 0x10, 0x20, 0x70, 0x40, 0x4d, 0x7d, 0x2d, 0x1d, 0x8d, 0xbd, 0xed, 0xdd, + ], + [ + 0x0, 0x31, 0x62, 0x53, 0xc4, 0xf5, 0xa6, 0x97, 0x95, 0xa4, 0xf7, 0xc6, 0x51, 0x60, 0x33, 0x2, + 0x37, 0x6, 0x55, 0x64, 0xf3, 0xc2, 0x91, 0xa0, 0xa2, 0x93, 0xc0, 0xf1, 0x66, 0x57, 0x4, 0x35, + 0x6e, 0x5f, 0xc, 0x3d, 0xaa, 0x9b, 0xc8, 0xf9, 0xfb, 0xca, 0x99, 0xa8, 0x3f, 0xe, 0x5d, 0x6c, + 0x59, 0x68, 0x3b, 0xa, 0x9d, 0xac, 0xff, 0xce, 0xcc, 0xfd, 0xae, 0x9f, 0x8, 0x39, 0x6a, 0x5b, + 0xdc, 0xed, 0xbe, 0x8f, 0x18, 0x29, 0x7a, 0x4b, 0x49, 0x78, 0x2b, 0x1a, 0x8d, 0xbc, 0xef, 0xde, + 0xeb, 0xda, 0x89, 0xb8, 0x2f, 0x1e, 0x4d, 0x7c, 0x7e, 0x4f, 0x1c, 0x2d, 0xba, 0x8b, 0xd8, 0xe9, + 0xb2, 0x83, 0xd0, 0xe1, 0x76, 0x47, 0x14, 0x25, 0x27, 0x16, 0x45, 0x74, 0xe3, 0xd2, 0x81, 0xb0, + 0x85, 0xb4, 0xe7, 0xd6, 0x41, 0x70, 0x23, 0x12, 0x10, 0x21, 0x72, 0x43, 0xd4, 0xe5, 0xb6, 0x87, + 0xa5, 0x94, 0xc7, 0xf6, 0x61, 0x50, 0x3, 0x32, 0x30, 0x1, 0x52, 0x63, 0xf4, 0xc5, 0x96, 0xa7, + 0x92, 0xa3, 0xf0, 0xc1, 0x56, 0x67, 0x34, 0x5, 0x7, 0x36, 0x65, 0x54, 0xc3, 0xf2, 0xa1, 0x90, + 0xcb, 0xfa, 0xa9, 0x98, 0xf, 0x3e, 0x6d, 0x5c, 0x5e, 0x6f, 0x3c, 0xd, 0x9a, 0xab, 0xf8, 0xc9, + 0xfc, 0xcd, 0x9e, 0xaf, 0x38, 0x9, 0x5a, 0x6b, 0x69, 0x58, 0xb, 0x3a, 0xad, 0x9c, 0xcf, 0xfe, + 0x79, 0x48, 0x1b, 0x2a, 0xbd, 0x8c, 0xdf, 0xee, 0xec, 0xdd, 0x8e, 0xbf, 0x28, 0x19, 0x4a, 0x7b, + 0x4e, 0x7f, 0x2c, 0x1d, 0x8a, 0xbb, 0xe8, 0xd9, 0xdb, 0xea, 0xb9, 0x88, 0x1f, 0x2e, 0x7d, 0x4c, + 0x17, 0x26, 0x75, 0x44, 0xd3, 0xe2, 0xb1, 0x80, 0x82, 0xb3, 0xe0, 0xd1, 0x46, 0x77, 0x24, 0x15, + 0x20, 0x11, 0x42, 0x73, 0xe4, 0xd5, 0x86, 0xb7, 0xb5, 0x84, 0xd7, 0xe6, 0x71, 0x40, 0x13, 0x22, + ], + [ + 0x0, 0x32, 0x64, 0x56, 0xc8, 0xfa, 0xac, 0x9e, 0x8d, 0xbf, 0xe9, 0xdb, 0x45, 0x77, 0x21, 0x13, + 0x7, 0x35, 0x63, 0x51, 0xcf, 0xfd, 0xab, 0x99, 0x8a, 0xb8, 0xee, 0xdc, 0x42, 0x70, 0x26, 0x14, + 0xe, 0x3c, 0x6a, 0x58, 0xc6, 0xf4, 0xa2, 0x90, 0x83, 0xb1, 0xe7, 0xd5, 0x4b, 0x79, 0x2f, 0x1d, + 0x9, 0x3b, 0x6d, 0x5f, 0xc1, 0xf3, 0xa5, 0x97, 0x84, 0xb6, 0xe0, 0xd2, 0x4c, 0x7e, 0x28, 0x1a, + 0x1c, 0x2e, 0x78, 0x4a, 0xd4, 0xe6, 0xb0, 0x82, 0x91, 0xa3, 0xf5, 0xc7, 0x59, 0x6b, 0x3d, 0xf, + 0x1b, 0x29, 0x7f, 0x4d, 0xd3, 0xe1, 0xb7, 0x85, 0x96, 0xa4, 0xf2, 0xc0, 0x5e, 0x6c, 0x3a, 0x8, + 0x12, 0x20, 0x76, 0x44, 0xda, 0xe8, 0xbe, 0x8c, 0x9f, 0xad, 0xfb, 0xc9, 0x57, 0x65, 0x33, 0x1, + 0x15, 0x27, 0x71, 0x43, 0xdd, 0xef, 0xb9, 0x8b, 0x98, 0xaa, 0xfc, 0xce, 0x50, 0x62, 0x34, 0x6, + 0x38, 0xa, 0x5c, 0x6e, 0xf0, 0xc2, 0x94, 0xa6, 0xb5, 0x87, 0xd1, 0xe3, 0x7d, 0x4f, 0x19, 0x2b, + 0x3f, 0xd, 0x5b, 0x69, 0xf7, 0xc5, 0x93, 0xa1, 0xb2, 0x80, 0xd6, 0xe4, 0x7a, 0x48, 0x1e, 0x2c, + 0x36, 0x4, 0x52, 0x60, 0xfe, 0xcc, 0x9a, 0xa8, 0xbb, 0x89, 0xdf, 0xed, 0x73, 0x41, 0x17, 0x25, + 0x31, 0x3, 0x55, 0x67, 0xf9, 0xcb, 0x9d, 0xaf, 0xbc, 0x8e, 0xd8, 0xea, 0x74, 0x46, 0x10, 0x22, + 0x24, 0x16, 0x40, 0x72, 0xec, 0xde, 0x88, 0xba, 0xa9, 0x9b, 0xcd, 0xff, 0x61, 0x53, 0x5, 0x37, + 0x23, 0x11, 0x47, 0x75, 0xeb, 0xd9, 0x8f, 0xbd, 0xae, 0x9c, 0xca, 0xf8, 0x66, 0x54, 0x2, 0x30, + 0x2a, 0x18, 0x4e, 0x7c, 0xe2, 0xd0, 0x86, 0xb4, 0xa7, 0x95, 0xc3, 0xf1, 0x6f, 0x5d, 0xb, 0x39, + 0x2d, 0x1f, 0x49, 0x7b, 0xe5, 0xd7, 0x81, 0xb3, 0xa0, 0x92, 0xc4, 0xf6, 0x68, 0x5a, 0xc, 0x3e, + ], + [ + 0x0, 0x33, 0x66, 0x55, 0xcc, 0xff, 0xaa, 0x99, 0x85, 0xb6, 0xe3, 0xd0, 0x49, 0x7a, 0x2f, 0x1c, + 0x17, 0x24, 0x71, 0x42, 0xdb, 0xe8, 0xbd, 0x8e, 0x92, 0xa1, 0xf4, 0xc7, 0x5e, 0x6d, 0x38, 0xb, + 0x2e, 0x1d, 0x48, 0x7b, 0xe2, 0xd1, 0x84, 0xb7, 0xab, 0x98, 0xcd, 0xfe, 0x67, 0x54, 0x1, 0x32, + 0x39, 0xa, 0x5f, 0x6c, 0xf5, 0xc6, 0x93, 0xa0, 0xbc, 0x8f, 0xda, 0xe9, 0x70, 0x43, 0x16, 0x25, + 0x5c, 0x6f, 0x3a, 0x9, 0x90, 0xa3, 0xf6, 0xc5, 0xd9, 0xea, 0xbf, 0x8c, 0x15, 0x26, 0x73, 0x40, + 0x4b, 0x78, 0x2d, 0x1e, 0x87, 0xb4, 0xe1, 0xd2, 0xce, 0xfd, 0xa8, 0x9b, 0x2, 0x31, 0x64, 0x57, + 0x72, 0x41, 0x14, 0x27, 0xbe, 0x8d, 0xd8, 0xeb, 0xf7, 0xc4, 0x91, 0xa2, 0x3b, 0x8, 0x5d, 0x6e, + 0x65, 0x56, 0x3, 0x30, 0xa9, 0x9a, 0xcf, 0xfc, 0xe0, 0xd3, 0x86, 0xb5, 0x2c, 0x1f, 0x4a, 0x79, + 0xb8, 0x8b, 0xde, 0xed, 0x74, 0x47, 0x12, 0x21, 0x3d, 0xe, 0x5b, 0x68, 0xf1, 0xc2, 0x97, 0xa4, + 0xaf, 0x9c, 0xc9, 0xfa, 0x63, 0x50, 0x5, 0x36, 0x2a, 0x19, 0x4c, 0x7f, 0xe6, 0xd5, 0x80, 0xb3, + 0x96, 0xa5, 0xf0, 0xc3, 0x5a, 0x69, 0x3c, 0xf, 0x13, 0x20, 0x75, 0x46, 0xdf, 0xec, 0xb9, 0x8a, + 0x81, 0xb2, 0xe7, 0xd4, 0x4d, 0x7e, 0x2b, 0x18, 0x4, 0x37, 0x62, 0x51, 0xc8, 0xfb, 0xae, 0x9d, + 0xe4, 0xd7, 0x82, 0xb1, 0x28, 0x1b, 0x4e, 0x7d, 0x61, 0x52, 0x7, 0x34, 0xad, 0x9e, 0xcb, 0xf8, + 0xf3, 0xc0, 0x95, 0xa6, 0x3f, 0xc, 0x59, 0x6a, 0x76, 0x45, 0x10, 0x23, 0xba, 0x89, 0xdc, 0xef, + 0xca, 0xf9, 0xac, 0x9f, 0x6, 0x35, 0x60, 0x53, 0x4f, 0x7c, 0x29, 0x1a, 0x83, 0xb0, 0xe5, 0xd6, + 0xdd, 0xee, 0xbb, 0x88, 0x11, 0x22, 0x77, 0x44, 0x58, 0x6b, 0x3e, 0xd, 0x94, 0xa7, 0xf2, 0xc1, + ], + [ + 0x0, 0x34, 0x68, 0x5c, 0xd0, 0xe4, 0xb8, 0x8c, 0xbd, 0x89, 0xd5, 0xe1, 0x6d, 0x59, 0x5, 0x31, + 0x67, 0x53, 0xf, 0x3b, 0xb7, 0x83, 0xdf, 0xeb, 0xda, 0xee, 0xb2, 0x86, 0xa, 0x3e, 0x62, 0x56, + 0xce, 0xfa, 0xa6, 0x92, 0x1e, 0x2a, 0x76, 0x42, 0x73, 0x47, 0x1b, 0x2f, 0xa3, 0x97, 0xcb, 0xff, + 0xa9, 0x9d, 0xc1, 0xf5, 0x79, 0x4d, 0x11, 0x25, 0x14, 0x20, 0x7c, 0x48, 0xc4, 0xf0, 0xac, 0x98, + 0x81, 0xb5, 0xe9, 0xdd, 0x51, 0x65, 0x39, 0xd, 0x3c, 0x8, 0x54, 0x60, 0xec, 0xd8, 0x84, 0xb0, + 0xe6, 0xd2, 0x8e, 0xba, 0x36, 0x2, 0x5e, 0x6a, 0x5b, 0x6f, 0x33, 0x7, 0x8b, 0xbf, 0xe3, 0xd7, + 0x4f, 0x7b, 0x27, 0x13, 0x9f, 0xab, 0xf7, 0xc3, 0xf2, 0xc6, 0x9a, 0xae, 0x22, 0x16, 0x4a, 0x7e, + 0x28, 0x1c, 0x40, 0x74, 0xf8, 0xcc, 0x90, 0xa4, 0x95, 0xa1, 0xfd, 0xc9, 0x45, 0x71, 0x2d, 0x19, + 0x1f, 0x2b, 0x77, 0x43, 0xcf, 0xfb, 0xa7, 0x93, 0xa2, 0x96, 0xca, 0xfe, 0x72, 0x46, 0x1a, 0x2e, + 0x78, 0x4c, 0x10, 0x24, 0xa8, 0x9c, 0xc0, 0xf4, 0xc5, 0xf1, 0xad, 0x99, 0x15, 0x21, 0x7d, 0x49, + 0xd1, 0xe5, 0xb9, 0x8d, 0x1, 0x35, 0x69, 0x5d, 0x6c, 0x58, 0x4, 0x30, 0xbc, 0x88, 0xd4, 0xe0, + 0xb6, 0x82, 0xde, 0xea, 0x66, 0x52, 0xe, 0x3a, 0xb, 0x3f, 0x63, 0x57, 0xdb, 0xef, 0xb3, 0x87, + 0x9e, 0xaa, 0xf6, 0xc2, 0x4e, 0x7a, 0x26, 0x12, 0x23, 0x17, 0x4b, 0x7f, 0xf3, 0xc7, 0x9b, 0xaf, + 0xf9, 0xcd, 0x91, 0xa5, 0x29, 0x1d, 0x41, 0x75, 0x44, 0x70, 0x2c, 0x18, 0x94, 0xa0, 0xfc, 0xc8, + 0x50, 0x64, 0x38, 0xc, 0x80, 0xb4, 0xe8, 0xdc, 0xed, 0xd9, 0x85, 0xb1, 0x3d, 0x9, 0x55, 0x61, + 0x37, 0x3, 0x5f, 0x6b, 0xe7, 0xd3, 0x8f, 0xbb, 0x8a, 0xbe, 0xe2, 0xd6, 0x5a, 0x6e, 0x32, 0x6, + ], + [ + 0x0, 0x35, 0x6a, 0x5f, 0xd4, 0xe1, 0xbe, 0x8b, 0xb5, 0x80, 0xdf, 0xea, 0x61, 0x54, 0xb, 0x3e, + 0x77, 0x42, 0x1d, 0x28, 0xa3, 0x96, 0xc9, 0xfc, 0xc2, 0xf7, 0xa8, 0x9d, 0x16, 0x23, 0x7c, 0x49, + 0xee, 0xdb, 0x84, 0xb1, 0x3a, 0xf, 0x50, 0x65, 0x5b, 0x6e, 0x31, 0x4, 0x8f, 0xba, 0xe5, 0xd0, + 0x99, 0xac, 0xf3, 0xc6, 0x4d, 0x78, 0x27, 0x12, 0x2c, 0x19, 0x46, 0x73, 0xf8, 0xcd, 0x92, 0xa7, + 0xc1, 0xf4, 0xab, 0x9e, 0x15, 0x20, 0x7f, 0x4a, 0x74, 0x41, 0x1e, 0x2b, 0xa0, 0x95, 0xca, 0xff, + 0xb6, 0x83, 0xdc, 0xe9, 0x62, 0x57, 0x8, 0x3d, 0x3, 0x36, 0x69, 0x5c, 0xd7, 0xe2, 0xbd, 0x88, + 0x2f, 0x1a, 0x45, 0x70, 0xfb, 0xce, 0x91, 0xa4, 0x9a, 0xaf, 0xf0, 0xc5, 0x4e, 0x7b, 0x24, 0x11, + 0x58, 0x6d, 0x32, 0x7, 0x8c, 0xb9, 0xe6, 0xd3, 0xed, 0xd8, 0x87, 0xb2, 0x39, 0xc, 0x53, 0x66, + 0x9f, 0xaa, 0xf5, 0xc0, 0x4b, 0x7e, 0x21, 0x14, 0x2a, 0x1f, 0x40, 0x75, 0xfe, 0xcb, 0x94, 0xa1, + 0xe8, 0xdd, 0x82, 0xb7, 0x3c, 0x9, 0x56, 0x63, 0x5d, 0x68, 0x37, 0x2, 0x89, 0xbc, 0xe3, 0xd6, + 0x71, 0x44, 0x1b, 0x2e, 0xa5, 0x90, 0xcf, 0xfa, 0xc4, 0xf1, 0xae, 0x9b, 0x10, 0x25, 0x7a, 0x4f, + 0x6, 0x33, 0x6c, 0x59, 0xd2, 0xe7, 0xb8, 0x8d, 0xb3, 0x86, 0xd9, 0xec, 0x67, 0x52, 0xd, 0x38, + 0x5e, 0x6b, 0x34, 0x1, 0x8a, 0xbf, 0xe0, 0xd5, 0xeb, 0xde, 0x81, 0xb4, 0x3f, 0xa, 0x55, 0x60, + 0x29, 0x1c, 0x43, 0x76, 0xfd, 0xc8, 0x97, 0xa2, 0x9c, 0xa9, 0xf6, 0xc3, 0x48, 0x7d, 0x22, 0x17, + 0xb0, 0x85, 0xda, 0xef, 0x64, 0x51, 0xe, 0x3b, 0x5, 0x30, 0x6f, 0x5a, 0xd1, 0xe4, 0xbb, 0x8e, + 0xc7, 0xf2, 0xad, 0x98, 0x13, 0x26, 0x79, 0x4c, 0x72, 0x47, 0x18, 0x2d, 0xa6, 0x93, 0xcc, 0xf9, + ], + [ + 0x0, 0x36, 0x6c, 0x5a, 0xd8, 0xee, 0xb4, 0x82, 0xad, 0x9b, 0xc1, 0xf7, 0x75, 0x43, 0x19, 0x2f, + 0x47, 0x71, 0x2b, 0x1d, 0x9f, 0xa9, 0xf3, 0xc5, 0xea, 0xdc, 0x86, 0xb0, 0x32, 0x4, 0x5e, 0x68, + 0x8e, 0xb8, 0xe2, 0xd4, 0x56, 0x60, 0x3a, 0xc, 0x23, 0x15, 0x4f, 0x79, 0xfb, 0xcd, 0x97, 0xa1, + 0xc9, 0xff, 0xa5, 0x93, 0x11, 0x27, 0x7d, 0x4b, 0x64, 0x52, 0x8, 0x3e, 0xbc, 0x8a, 0xd0, 0xe6, + 0x1, 0x37, 0x6d, 0x5b, 0xd9, 0xef, 0xb5, 0x83, 0xac, 0x9a, 0xc0, 0xf6, 0x74, 0x42, 0x18, 0x2e, + 0x46, 0x70, 0x2a, 0x1c, 0x9e, 0xa8, 0xf2, 0xc4, 0xeb, 0xdd, 0x87, 0xb1, 0x33, 0x5, 0x5f, 0x69, + 0x8f, 0xb9, 0xe3, 0xd5, 0x57, 0x61, 0x3b, 0xd, 0x22, 0x14, 0x4e, 0x78, 0xfa, 0xcc, 0x96, 0xa0, + 0xc8, 0xfe, 0xa4, 0x92, 0x10, 0x26, 0x7c, 0x4a, 0x65, 0x53, 0x9, 0x3f, 0xbd, 0x8b, 0xd1, 0xe7, + 0x2, 0x34, 0x6e, 0x58, 0xda, 0xec, 0xb6, 0x80, 0xaf, 0x99, 0xc3, 0xf5, 0x77, 0x41, 0x1b, 0x2d, + 0x45, 0x73, 0x29, 0x1f, 0x9d, 0xab, 0xf1, 0xc7, 0xe8, 0xde, 0x84, 0xb2, 0x30, 0x6, 0x5c, 0x6a, + 0x8c, 0xba, 0xe0, 0xd6, 0x54, 0x62, 0x38, 0xe, 0x21, 0x17, 0x4d, 0x7b, 0xf9, 0xcf, 0x95, 0xa3, + 0xcb, 0xfd, 0xa7, 0x91, 0x13, 0x25, 0x7f, 0x49, 0x66, 0x50, 0xa, 0x3c, 0xbe, 0x88, 0xd2, 0xe4, + 0x3, 0x35, 0x6f, 0x59, 0xdb, 0xed, 0xb7, 0x81, 0xae, 0x98, 0xc2, 0xf4, 0x76, 0x40, 0x1a, 0x2c, + 0x44, 0x72, 0x28, 0x1e, 0x9c, 0xaa, 0xf0, 0xc6, 0xe9, 0xdf, 0x85, 0xb3, 0x31, 0x7, 0x5d, 0x6b, + 0x8d, 0xbb, 0xe1, 0xd7, 0x55, 0x63, 0x39, 0xf, 0x20, 0x16, 0x4c, 0x7a, 0xf8, 0xce, 0x94, 0xa2, + 0xca, 0xfc, 0xa6, 0x90, 0x12, 0x24, 0x7e, 0x48, 0x67, 0x51, 0xb, 0x3d, 0xbf, 0x89, 0xd3, 0xe5, + ], + [ + 0x0, 0x37, 0x6e, 0x59, 0xdc, 0xeb, 0xb2, 0x85, 0xa5, 0x92, 0xcb, 0xfc, 0x79, 0x4e, 0x17, 0x20, + 0x57, 0x60, 0x39, 0xe, 0x8b, 0xbc, 0xe5, 0xd2, 0xf2, 0xc5, 0x9c, 0xab, 0x2e, 0x19, 0x40, 0x77, + 0xae, 0x99, 0xc0, 0xf7, 0x72, 0x45, 0x1c, 0x2b, 0xb, 0x3c, 0x65, 0x52, 0xd7, 0xe0, 0xb9, 0x8e, + 0xf9, 0xce, 0x97, 0xa0, 0x25, 0x12, 0x4b, 0x7c, 0x5c, 0x6b, 0x32, 0x5, 0x80, 0xb7, 0xee, 0xd9, + 0x41, 0x76, 0x2f, 0x18, 0x9d, 0xaa, 0xf3, 0xc4, 0xe4, 0xd3, 0x8a, 0xbd, 0x38, 0xf, 0x56, 0x61, + 0x16, 0x21, 0x78, 0x4f, 0xca, 0xfd, 0xa4, 0x93, 0xb3, 0x84, 0xdd, 0xea, 0x6f, 0x58, 0x1, 0x36, + 0xef, 0xd8, 0x81, 0xb6, 0x33, 0x4, 0x5d, 0x6a, 0x4a, 0x7d, 0x24, 0x13, 0x96, 0xa1, 0xf8, 0xcf, + 0xb8, 0x8f, 0xd6, 0xe1, 0x64, 0x53, 0xa, 0x3d, 0x1d, 0x2a, 0x73, 0x44, 0xc1, 0xf6, 0xaf, 0x98, + 0x82, 0xb5, 0xec, 0xdb, 0x5e, 0x69, 0x30, 0x7, 0x27, 0x10, 0x49, 0x7e, 0xfb, 0xcc, 0x95, 0xa2, + 0xd5, 0xe2, 0xbb, 0x8c, 0x9, 0x3e, 0x67, 0x50, 0x70, 0x47, 0x1e, 0x29, 0xac, 0x9b, 0xc2, 0xf5, + 0x2c, 0x1b, 0x42, 0x75, 0xf0, 0xc7, 0x9e, 0xa9, 0x89, 0xbe, 0xe7, 0xd0, 0x55, 0x62, 0x3b, 0xc, + 0x7b, 0x4c, 0x15, 0x22, 0xa7, 0x90, 0xc9, 0xfe, 0xde, 0xe9, 0xb0, 0x87, 0x2, 0x35, 0x6c, 0x5b, + 0xc3, 0xf4, 0xad, 0x9a, 0x1f, 0x28, 0x71, 0x46, 0x66, 0x51, 0x8, 0x3f, 0xba, 0x8d, 0xd4, 0xe3, + 0x94, 0xa3, 0xfa, 0xcd, 0x48, 0x7f, 0x26, 0x11, 0x31, 0x6, 0x5f, 0x68, 0xed, 0xda, 0x83, 0xb4, + 0x6d, 0x5a, 0x3, 0x34, 0xb1, 0x86, 0xdf, 0xe8, 0xc8, 0xff, 0xa6, 0x91, 0x14, 0x23, 0x7a, 0x4d, + 0x3a, 0xd, 0x54, 0x63, 0xe6, 0xd1, 0x88, 0xbf, 0x9f, 0xa8, 0xf1, 0xc6, 0x43, 0x74, 0x2d, 0x1a, + ], + [ + 0x0, 0x38, 0x70, 0x48, 0xe0, 0xd8, 0x90, 0xa8, 0xdd, 0xe5, 0xad, 0x95, 0x3d, 0x5, 0x4d, 0x75, + 0xa7, 0x9f, 0xd7, 0xef, 0x47, 0x7f, 0x37, 0xf, 0x7a, 0x42, 0xa, 0x32, 0x9a, 0xa2, 0xea, 0xd2, + 0x53, 0x6b, 0x23, 0x1b, 0xb3, 0x8b, 0xc3, 0xfb, 0x8e, 0xb6, 0xfe, 0xc6, 0x6e, 0x56, 0x1e, 0x26, + 0xf4, 0xcc, 0x84, 0xbc, 0x14, 0x2c, 0x64, 0x5c, 0x29, 0x11, 0x59, 0x61, 0xc9, 0xf1, 0xb9, 0x81, + 0xa6, 0x9e, 0xd6, 0xee, 0x46, 0x7e, 0x36, 0xe, 0x7b, 0x43, 0xb, 0x33, 0x9b, 0xa3, 0xeb, 0xd3, + 0x1, 0x39, 0x71, 0x49, 0xe1, 0xd9, 0x91, 0xa9, 0xdc, 0xe4, 0xac, 0x94, 0x3c, 0x4, 0x4c, 0x74, + 0xf5, 0xcd, 0x85, 0xbd, 0x15, 0x2d, 0x65, 0x5d, 0x28, 0x10, 0x58, 0x60, 0xc8, 0xf0, 0xb8, 0x80, + 0x52, 0x6a, 0x22, 0x1a, 0xb2, 0x8a, 0xc2, 0xfa, 0x8f, 0xb7, 0xff, 0xc7, 0x6f, 0x57, 0x1f, 0x27, + 0x51, 0x69, 0x21, 0x19, 0xb1, 0x89, 0xc1, 0xf9, 0x8c, 0xb4, 0xfc, 0xc4, 0x6c, 0x54, 0x1c, 0x24, + 0xf6, 0xce, 0x86, 0xbe, 0x16, 0x2e, 0x66, 0x5e, 0x2b, 0x13, 0x5b, 0x63, 0xcb, 0xf3, 0xbb, 0x83, + 0x2, 0x3a, 0x72, 0x4a, 0xe2, 0xda, 0x92, 0xaa, 0xdf, 0xe7, 0xaf, 0x97, 0x3f, 0x7, 0x4f, 0x77, + 0xa5, 0x9d, 0xd5, 0xed, 0x45, 0x7d, 0x35, 0xd, 0x78, 0x40, 0x8, 0x30, 0x98, 0xa0, 0xe8, 0xd0, + 0xf7, 0xcf, 0x87, 0xbf, 0x17, 0x2f, 0x67, 0x5f, 0x2a, 0x12, 0x5a, 0x62, 0xca, 0xf2, 0xba, 0x82, + 0x50, 0x68, 0x20, 0x18, 0xb0, 0x88, 0xc0, 0xf8, 0x8d, 0xb5, 0xfd, 0xc5, 0x6d, 0x55, 0x1d, 0x25, + 0xa4, 0x9c, 0xd4, 0xec, 0x44, 0x7c, 0x34, 0xc, 0x79, 0x41, 0x9, 0x31, 0x99, 0xa1, 0xe9, 0xd1, + 0x3, 0x3b, 0x73, 0x4b, 0xe3, 0xdb, 0x93, 0xab, 0xde, 0xe6, 0xae, 0x96, 0x3e, 0x6, 0x4e, 0x76, + ], + [ + 0x0, 0x39, 0x72, 0x4b, 0xe4, 0xdd, 0x96, 0xaf, 0xd5, 0xec, 0xa7, 0x9e, 0x31, 0x8, 0x43, 0x7a, + 0xb7, 0x8e, 0xc5, 0xfc, 0x53, 0x6a, 0x21, 0x18, 0x62, 0x5b, 0x10, 0x29, 0x86, 0xbf, 0xf4, 0xcd, + 0x73, 0x4a, 0x1, 0x38, 0x97, 0xae, 0xe5, 0xdc, 0xa6, 0x9f, 0xd4, 0xed, 0x42, 0x7b, 0x30, 0x9, + 0xc4, 0xfd, 0xb6, 0x8f, 0x20, 0x19, 0x52, 0x6b, 0x11, 0x28, 0x63, 0x5a, 0xf5, 0xcc, 0x87, 0xbe, + 0xe6, 0xdf, 0x94, 0xad, 0x2, 0x3b, 0x70, 0x49, 0x33, 0xa, 0x41, 0x78, 0xd7, 0xee, 0xa5, 0x9c, + 0x51, 0x68, 0x23, 0x1a, 0xb5, 0x8c, 0xc7, 0xfe, 0x84, 0xbd, 0xf6, 0xcf, 0x60, 0x59, 0x12, 0x2b, + 0x95, 0xac, 0xe7, 0xde, 0x71, 0x48, 0x3, 0x3a, 0x40, 0x79, 0x32, 0xb, 0xa4, 0x9d, 0xd6, 0xef, + 0x22, 0x1b, 0x50, 0x69, 0xc6, 0xff, 0xb4, 0x8d, 0xf7, 0xce, 0x85, 0xbc, 0x13, 0x2a, 0x61, 0x58, + 0xd1, 0xe8, 0xa3, 0x9a, 0x35, 0xc, 0x47, 0x7e, 0x4, 0x3d, 0x76, 0x4f, 0xe0, 0xd9, 0x92, 0xab, + 0x66, 0x5f, 0x14, 0x2d, 0x82, 0xbb, 0xf0, 0xc9, 0xb3, 0x8a, 0xc1, 0xf8, 0x57, 0x6e, 0x25, 0x1c, + 0xa2, 0x9b, 0xd0, 0xe9, 0x46, 0x7f, 0x34, 0xd, 0x77, 0x4e, 0x5, 0x3c, 0x93, 0xaa, 0xe1, 0xd8, + 0x15, 0x2c, 0x67, 0x5e, 0xf1, 0xc8, 0x83, 0xba, 0xc0, 0xf9, 0xb2, 0x8b, 0x24, 0x1d, 0x56, 0x6f, + 0x37, 0xe, 0x45, 0x7c, 0xd3, 0xea, 0xa1, 0x98, 0xe2, 0xdb, 0x90, 0xa9, 0x6, 0x3f, 0x74, 0x4d, + 0x80, 0xb9, 0xf2, 0xcb, 0x64, 0x5d, 0x16, 0x2f, 0x55, 0x6c, 0x27, 0x1e, 0xb1, 0x88, 0xc3, 0xfa, + 0x44, 0x7d, 0x36, 0xf, 0xa0, 0x99, 0xd2, 0xeb, 0x91, 0xa8, 0xe3, 0xda, 0x75, 0x4c, 0x7, 0x3e, + 0xf3, 0xca, 0x81, 0xb8, 0x17, 0x2e, 0x65, 0x5c, 0x26, 0x1f, 0x54, 0x6d, 0xc2, 0xfb, 0xb0, 0x89, + ], + [ + 0x0, 0x3a, 0x74, 0x4e, 0xe8, 0xd2, 0x9c, 0xa6, 0xcd, 0xf7, 0xb9, 0x83, 0x25, 0x1f, 0x51, 0x6b, + 0x87, 0xbd, 0xf3, 0xc9, 0x6f, 0x55, 0x1b, 0x21, 0x4a, 0x70, 0x3e, 0x4, 0xa2, 0x98, 0xd6, 0xec, + 0x13, 0x29, 0x67, 0x5d, 0xfb, 0xc1, 0x8f, 0xb5, 0xde, 0xe4, 0xaa, 0x90, 0x36, 0xc, 0x42, 0x78, + 0x94, 0xae, 0xe0, 0xda, 0x7c, 0x46, 0x8, 0x32, 0x59, 0x63, 0x2d, 0x17, 0xb1, 0x8b, 0xc5, 0xff, + 0x26, 0x1c, 0x52, 0x68, 0xce, 0xf4, 0xba, 0x80, 0xeb, 0xd1, 0x9f, 0xa5, 0x3, 0x39, 0x77, 0x4d, + 0xa1, 0x9b, 0xd5, 0xef, 0x49, 0x73, 0x3d, 0x7, 0x6c, 0x56, 0x18, 0x22, 0x84, 0xbe, 0xf0, 0xca, + 0x35, 0xf, 0x41, 0x7b, 0xdd, 0xe7, 0xa9, 0x93, 0xf8, 0xc2, 0x8c, 0xb6, 0x10, 0x2a, 0x64, 0x5e, + 0xb2, 0x88, 0xc6, 0xfc, 0x5a, 0x60, 0x2e, 0x14, 0x7f, 0x45, 0xb, 0x31, 0x97, 0xad, 0xe3, 0xd9, + 0x4c, 0x76, 0x38, 0x2, 0xa4, 0x9e, 0xd0, 0xea, 0x81, 0xbb, 0xf5, 0xcf, 0x69, 0x53, 0x1d, 0x27, + 0xcb, 0xf1, 0xbf, 0x85, 0x23, 0x19, 0x57, 0x6d, 0x6, 0x3c, 0x72, 0x48, 0xee, 0xd4, 0x9a, 0xa0, + 0x5f, 0x65, 0x2b, 0x11, 0xb7, 0x8d, 0xc3, 0xf9, 0x92, 0xa8, 0xe6, 0xdc, 0x7a, 0x40, 0xe, 0x34, + 0xd8, 0xe2, 0xac, 0x96, 0x30, 0xa, 0x44, 0x7e, 0x15, 0x2f, 0x61, 0x5b, 0xfd, 0xc7, 0x89, 0xb3, + 0x6a, 0x50, 0x1e, 0x24, 0x82, 0xb8, 0xf6, 0xcc, 0xa7, 0x9d, 0xd3, 0xe9, 0x4f, 0x75, 0x3b, 0x1, + 0xed, 0xd7, 0x99, 0xa3, 0x5, 0x3f, 0x71, 0x4b, 0x20, 0x1a, 0x54, 0x6e, 0xc8, 0xf2, 0xbc, 0x86, + 0x79, 0x43, 0xd, 0x37, 0x91, 0xab, 0xe5, 0xdf, 0xb4, 0x8e, 0xc0, 0xfa, 0x5c, 0x66, 0x28, 0x12, + 0xfe, 0xc4, 0x8a, 0xb0, 0x16, 0x2c, 0x62, 0x58, 0x33, 0x9, 0x47, 0x7d, 0xdb, 0xe1, 0xaf, 0x95, + ], + [ + 0x0, 0x3b, 0x76, 0x4d, 0xec, 0xd7, 0x9a, 0xa1, 0xc5, 0xfe, 0xb3, 0x88, 0x29, 0x12, 0x5f, 0x64, + 0x97, 0xac, 0xe1, 0xda, 0x7b, 0x40, 0xd, 0x36, 0x52, 0x69, 0x24, 0x1f, 0xbe, 0x85, 0xc8, 0xf3, + 0x33, 0x8, 0x45, 0x7e, 0xdf, 0xe4, 0xa9, 0x92, 0xf6, 0xcd, 0x80, 0xbb, 0x1a, 0x21, 0x6c, 0x57, + 0xa4, 0x9f, 0xd2, 0xe9, 0x48, 0x73, 0x3e, 0x5, 0x61, 0x5a, 0x17, 0x2c, 0x8d, 0xb6, 0xfb, 0xc0, + 0x66, 0x5d, 0x10, 0x2b, 0x8a, 0xb1, 0xfc, 0xc7, 0xa3, 0x98, 0xd5, 0xee, 0x4f, 0x74, 0x39, 0x2, + 0xf1, 0xca, 0x87, 0xbc, 0x1d, 0x26, 0x6b, 0x50, 0x34, 0xf, 0x42, 0x79, 0xd8, 0xe3, 0xae, 0x95, + 0x55, 0x6e, 0x23, 0x18, 0xb9, 0x82, 0xcf, 0xf4, 0x90, 0xab, 0xe6, 0xdd, 0x7c, 0x47, 0xa, 0x31, + 0xc2, 0xf9, 0xb4, 0x8f, 0x2e, 0x15, 0x58, 0x63, 0x7, 0x3c, 0x71, 0x4a, 0xeb, 0xd0, 0x9d, 0xa6, + 0xcc, 0xf7, 0xba, 0x81, 0x20, 0x1b, 0x56, 0x6d, 0x9, 0x32, 0x7f, 0x44, 0xe5, 0xde, 0x93, 0xa8, + 0x5b, 0x60, 0x2d, 0x16, 0xb7, 0x8c, 0xc1, 0xfa, 0x9e, 0xa5, 0xe8, 0xd3, 0x72, 0x49, 0x4, 0x3f, + 0xff, 0xc4, 0x89, 0xb2, 0x13, 0x28, 0x65, 0x5e, 0x3a, 0x1, 0x4c, 0x77, 0xd6, 0xed, 0xa0, 0x9b, + 0x68, 0x53, 0x1e, 0x25, 0x84, 0xbf, 0xf2, 0xc9, 0xad, 0x96, 0xdb, 0xe0, 0x41, 0x7a, 0x37, 0xc, + 0xaa, 0x91, 0xdc, 0xe7, 0x46, 0x7d, 0x30, 0xb, 0x6f, 0x54, 0x19, 0x22, 0x83, 0xb8, 0xf5, 0xce, + 0x3d, 0x6, 0x4b, 0x70, 0xd1, 0xea, 0xa7, 0x9c, 0xf8, 0xc3, 0x8e, 0xb5, 0x14, 0x2f, 0x62, 0x59, + 0x99, 0xa2, 0xef, 0xd4, 0x75, 0x4e, 0x3, 0x38, 0x5c, 0x67, 0x2a, 0x11, 0xb0, 0x8b, 0xc6, 0xfd, + 0xe, 0x35, 0x78, 0x43, 0xe2, 0xd9, 0x94, 0xaf, 0xcb, 0xf0, 0xbd, 0x86, 0x27, 0x1c, 0x51, 0x6a, + ], + [ + 0x0, 0x3c, 0x78, 0x44, 0xf0, 0xcc, 0x88, 0xb4, 0xfd, 0xc1, 0x85, 0xb9, 0xd, 0x31, 0x75, 0x49, + 0xe7, 0xdb, 0x9f, 0xa3, 0x17, 0x2b, 0x6f, 0x53, 0x1a, 0x26, 0x62, 0x5e, 0xea, 0xd6, 0x92, 0xae, + 0xd3, 0xef, 0xab, 0x97, 0x23, 0x1f, 0x5b, 0x67, 0x2e, 0x12, 0x56, 0x6a, 0xde, 0xe2, 0xa6, 0x9a, + 0x34, 0x8, 0x4c, 0x70, 0xc4, 0xf8, 0xbc, 0x80, 0xc9, 0xf5, 0xb1, 0x8d, 0x39, 0x5, 0x41, 0x7d, + 0xbb, 0x87, 0xc3, 0xff, 0x4b, 0x77, 0x33, 0xf, 0x46, 0x7a, 0x3e, 0x2, 0xb6, 0x8a, 0xce, 0xf2, + 0x5c, 0x60, 0x24, 0x18, 0xac, 0x90, 0xd4, 0xe8, 0xa1, 0x9d, 0xd9, 0xe5, 0x51, 0x6d, 0x29, 0x15, + 0x68, 0x54, 0x10, 0x2c, 0x98, 0xa4, 0xe0, 0xdc, 0x95, 0xa9, 0xed, 0xd1, 0x65, 0x59, 0x1d, 0x21, + 0x8f, 0xb3, 0xf7, 0xcb, 0x7f, 0x43, 0x7, 0x3b, 0x72, 0x4e, 0xa, 0x36, 0x82, 0xbe, 0xfa, 0xc6, + 0x6b, 0x57, 0x13, 0x2f, 0x9b, 0xa7, 0xe3, 0xdf, 0x96, 0xaa, 0xee, 0xd2, 0x66, 0x5a, 0x1e, 0x22, + 0x8c, 0xb0, 0xf4, 0xc8, 0x7c, 0x40, 0x4, 0x38, 0x71, 0x4d, 0x9, 0x35, 0x81, 0xbd, 0xf9, 0xc5, + 0xb8, 0x84, 0xc0, 0xfc, 0x48, 0x74, 0x30, 0xc, 0x45, 0x79, 0x3d, 0x1, 0xb5, 0x89, 0xcd, 0xf1, + 0x5f, 0x63, 0x27, 0x1b, 0xaf, 0x93, 0xd7, 0xeb, 0xa2, 0x9e, 0xda, 0xe6, 0x52, 0x6e, 0x2a, 0x16, + 0xd0, 0xec, 0xa8, 0x94, 0x20, 0x1c, 0x58, 0x64, 0x2d, 0x11, 0x55, 0x69, 0xdd, 0xe1, 0xa5, 0x99, + 0x37, 0xb, 0x4f, 0x73, 0xc7, 0xfb, 0xbf, 0x83, 0xca, 0xf6, 0xb2, 0x8e, 0x3a, 0x6, 0x42, 0x7e, + 0x3, 0x3f, 0x7b, 0x47, 0xf3, 0xcf, 0x8b, 0xb7, 0xfe, 0xc2, 0x86, 0xba, 0xe, 0x32, 0x76, 0x4a, + 0xe4, 0xd8, 0x9c, 0xa0, 0x14, 0x28, 0x6c, 0x50, 0x19, 0x25, 0x61, 0x5d, 0xe9, 0xd5, 0x91, 0xad, + ], + [ + 0x0, 0x3d, 0x7a, 0x47, 0xf4, 0xc9, 0x8e, 0xb3, 0xf5, 0xc8, 0x8f, 0xb2, 0x1, 0x3c, 0x7b, 0x46, + 0xf7, 0xca, 0x8d, 0xb0, 0x3, 0x3e, 0x79, 0x44, 0x2, 0x3f, 0x78, 0x45, 0xf6, 0xcb, 0x8c, 0xb1, + 0xf3, 0xce, 0x89, 0xb4, 0x7, 0x3a, 0x7d, 0x40, 0x6, 0x3b, 0x7c, 0x41, 0xf2, 0xcf, 0x88, 0xb5, + 0x4, 0x39, 0x7e, 0x43, 0xf0, 0xcd, 0x8a, 0xb7, 0xf1, 0xcc, 0x8b, 0xb6, 0x5, 0x38, 0x7f, 0x42, + 0xfb, 0xc6, 0x81, 0xbc, 0xf, 0x32, 0x75, 0x48, 0xe, 0x33, 0x74, 0x49, 0xfa, 0xc7, 0x80, 0xbd, + 0xc, 0x31, 0x76, 0x4b, 0xf8, 0xc5, 0x82, 0xbf, 0xf9, 0xc4, 0x83, 0xbe, 0xd, 0x30, 0x77, 0x4a, + 0x8, 0x35, 0x72, 0x4f, 0xfc, 0xc1, 0x86, 0xbb, 0xfd, 0xc0, 0x87, 0xba, 0x9, 0x34, 0x73, 0x4e, + 0xff, 0xc2, 0x85, 0xb8, 0xb, 0x36, 0x71, 0x4c, 0xa, 0x37, 0x70, 0x4d, 0xfe, 0xc3, 0x84, 0xb9, + 0xeb, 0xd6, 0x91, 0xac, 0x1f, 0x22, 0x65, 0x58, 0x1e, 0x23, 0x64, 0x59, 0xea, 0xd7, 0x90, 0xad, + 0x1c, 0x21, 0x66, 0x5b, 0xe8, 0xd5, 0x92, 0xaf, 0xe9, 0xd4, 0x93, 0xae, 0x1d, 0x20, 0x67, 0x5a, + 0x18, 0x25, 0x62, 0x5f, 0xec, 0xd1, 0x96, 0xab, 0xed, 0xd0, 0x97, 0xaa, 0x19, 0x24, 0x63, 0x5e, + 0xef, 0xd2, 0x95, 0xa8, 0x1b, 0x26, 0x61, 0x5c, 0x1a, 0x27, 0x60, 0x5d, 0xee, 0xd3, 0x94, 0xa9, + 0x10, 0x2d, 0x6a, 0x57, 0xe4, 0xd9, 0x9e, 0xa3, 0xe5, 0xd8, 0x9f, 0xa2, 0x11, 0x2c, 0x6b, 0x56, + 0xe7, 0xda, 0x9d, 0xa0, 0x13, 0x2e, 0x69, 0x54, 0x12, 0x2f, 0x68, 0x55, 0xe6, 0xdb, 0x9c, 0xa1, + 0xe3, 0xde, 0x99, 0xa4, 0x17, 0x2a, 0x6d, 0x50, 0x16, 0x2b, 0x6c, 0x51, 0xe2, 0xdf, 0x98, 0xa5, + 0x14, 0x29, 0x6e, 0x53, 0xe0, 0xdd, 0x9a, 0xa7, 0xe1, 0xdc, 0x9b, 0xa6, 0x15, 0x28, 0x6f, 0x52, + ], + [ + 0x0, 0x3e, 0x7c, 0x42, 0xf8, 0xc6, 0x84, 0xba, 0xed, 0xd3, 0x91, 0xaf, 0x15, 0x2b, 0x69, 0x57, + 0xc7, 0xf9, 0xbb, 0x85, 0x3f, 0x1, 0x43, 0x7d, 0x2a, 0x14, 0x56, 0x68, 0xd2, 0xec, 0xae, 0x90, + 0x93, 0xad, 0xef, 0xd1, 0x6b, 0x55, 0x17, 0x29, 0x7e, 0x40, 0x2, 0x3c, 0x86, 0xb8, 0xfa, 0xc4, + 0x54, 0x6a, 0x28, 0x16, 0xac, 0x92, 0xd0, 0xee, 0xb9, 0x87, 0xc5, 0xfb, 0x41, 0x7f, 0x3d, 0x3, + 0x3b, 0x5, 0x47, 0x79, 0xc3, 0xfd, 0xbf, 0x81, 0xd6, 0xe8, 0xaa, 0x94, 0x2e, 0x10, 0x52, 0x6c, + 0xfc, 0xc2, 0x80, 0xbe, 0x4, 0x3a, 0x78, 0x46, 0x11, 0x2f, 0x6d, 0x53, 0xe9, 0xd7, 0x95, 0xab, + 0xa8, 0x96, 0xd4, 0xea, 0x50, 0x6e, 0x2c, 0x12, 0x45, 0x7b, 0x39, 0x7, 0xbd, 0x83, 0xc1, 0xff, + 0x6f, 0x51, 0x13, 0x2d, 0x97, 0xa9, 0xeb, 0xd5, 0x82, 0xbc, 0xfe, 0xc0, 0x7a, 0x44, 0x6, 0x38, + 0x76, 0x48, 0xa, 0x34, 0x8e, 0xb0, 0xf2, 0xcc, 0x9b, 0xa5, 0xe7, 0xd9, 0x63, 0x5d, 0x1f, 0x21, + 0xb1, 0x8f, 0xcd, 0xf3, 0x49, 0x77, 0x35, 0xb, 0x5c, 0x62, 0x20, 0x1e, 0xa4, 0x9a, 0xd8, 0xe6, + 0xe5, 0xdb, 0x99, 0xa7, 0x1d, 0x23, 0x61, 0x5f, 0x8, 0x36, 0x74, 0x4a, 0xf0, 0xce, 0x8c, 0xb2, + 0x22, 0x1c, 0x5e, 0x60, 0xda, 0xe4, 0xa6, 0x98, 0xcf, 0xf1, 0xb3, 0x8d, 0x37, 0x9, 0x4b, 0x75, + 0x4d, 0x73, 0x31, 0xf, 0xb5, 0x8b, 0xc9, 0xf7, 0xa0, 0x9e, 0xdc, 0xe2, 0x58, 0x66, 0x24, 0x1a, + 0x8a, 0xb4, 0xf6, 0xc8, 0x72, 0x4c, 0xe, 0x30, 0x67, 0x59, 0x1b, 0x25, 0x9f, 0xa1, 0xe3, 0xdd, + 0xde, 0xe0, 0xa2, 0x9c, 0x26, 0x18, 0x5a, 0x64, 0x33, 0xd, 0x4f, 0x71, 0xcb, 0xf5, 0xb7, 0x89, + 0x19, 0x27, 0x65, 0x5b, 0xe1, 0xdf, 0x9d, 0xa3, 0xf4, 0xca, 0x88, 0xb6, 0xc, 0x32, 0x70, 0x4e, + ], + [ + 0x0, 0x3f, 0x7e, 0x41, 0xfc, 0xc3, 0x82, 0xbd, 0xe5, 0xda, 0x9b, 0xa4, 0x19, 0x26, 0x67, 0x58, + 0xd7, 0xe8, 0xa9, 0x96, 0x2b, 0x14, 0x55, 0x6a, 0x32, 0xd, 0x4c, 0x73, 0xce, 0xf1, 0xb0, 0x8f, + 0xb3, 0x8c, 0xcd, 0xf2, 0x4f, 0x70, 0x31, 0xe, 0x56, 0x69, 0x28, 0x17, 0xaa, 0x95, 0xd4, 0xeb, + 0x64, 0x5b, 0x1a, 0x25, 0x98, 0xa7, 0xe6, 0xd9, 0x81, 0xbe, 0xff, 0xc0, 0x7d, 0x42, 0x3, 0x3c, + 0x7b, 0x44, 0x5, 0x3a, 0x87, 0xb8, 0xf9, 0xc6, 0x9e, 0xa1, 0xe0, 0xdf, 0x62, 0x5d, 0x1c, 0x23, + 0xac, 0x93, 0xd2, 0xed, 0x50, 0x6f, 0x2e, 0x11, 0x49, 0x76, 0x37, 0x8, 0xb5, 0x8a, 0xcb, 0xf4, + 0xc8, 0xf7, 0xb6, 0x89, 0x34, 0xb, 0x4a, 0x75, 0x2d, 0x12, 0x53, 0x6c, 0xd1, 0xee, 0xaf, 0x90, + 0x1f, 0x20, 0x61, 0x5e, 0xe3, 0xdc, 0x9d, 0xa2, 0xfa, 0xc5, 0x84, 0xbb, 0x6, 0x39, 0x78, 0x47, + 0xf6, 0xc9, 0x88, 0xb7, 0xa, 0x35, 0x74, 0x4b, 0x13, 0x2c, 0x6d, 0x52, 0xef, 0xd0, 0x91, 0xae, + 0x21, 0x1e, 0x5f, 0x60, 0xdd, 0xe2, 0xa3, 0x9c, 0xc4, 0xfb, 0xba, 0x85, 0x38, 0x7, 0x46, 0x79, + 0x45, 0x7a, 0x3b, 0x4, 0xb9, 0x86, 0xc7, 0xf8, 0xa0, 0x9f, 0xde, 0xe1, 0x5c, 0x63, 0x22, 0x1d, + 0x92, 0xad, 0xec, 0xd3, 0x6e, 0x51, 0x10, 0x2f, 0x77, 0x48, 0x9, 0x36, 0x8b, 0xb4, 0xf5, 0xca, + 0x8d, 0xb2, 0xf3, 0xcc, 0x71, 0x4e, 0xf, 0x30, 0x68, 0x57, 0x16, 0x29, 0x94, 0xab, 0xea, 0xd5, + 0x5a, 0x65, 0x24, 0x1b, 0xa6, 0x99, 0xd8, 0xe7, 0xbf, 0x80, 0xc1, 0xfe, 0x43, 0x7c, 0x3d, 0x2, + 0x3e, 0x1, 0x40, 0x7f, 0xc2, 0xfd, 0xbc, 0x83, 0xdb, 0xe4, 0xa5, 0x9a, 0x27, 0x18, 0x59, 0x66, + 0xe9, 0xd6, 0x97, 0xa8, 0x15, 0x2a, 0x6b, 0x54, 0xc, 0x33, 0x72, 0x4d, 0xf0, 0xcf, 0x8e, 0xb1, + ], + [ + 0x0, 0x40, 0x80, 0xc0, 0x1d, 0x5d, 0x9d, 0xdd, 0x3a, 0x7a, 0xba, 0xfa, 0x27, 0x67, 0xa7, 0xe7, + 0x74, 0x34, 0xf4, 0xb4, 0x69, 0x29, 0xe9, 0xa9, 0x4e, 0xe, 0xce, 0x8e, 0x53, 0x13, 0xd3, 0x93, + 0xe8, 0xa8, 0x68, 0x28, 0xf5, 0xb5, 0x75, 0x35, 0xd2, 0x92, 0x52, 0x12, 0xcf, 0x8f, 0x4f, 0xf, + 0x9c, 0xdc, 0x1c, 0x5c, 0x81, 0xc1, 0x1, 0x41, 0xa6, 0xe6, 0x26, 0x66, 0xbb, 0xfb, 0x3b, 0x7b, + 0xcd, 0x8d, 0x4d, 0xd, 0xd0, 0x90, 0x50, 0x10, 0xf7, 0xb7, 0x77, 0x37, 0xea, 0xaa, 0x6a, 0x2a, + 0xb9, 0xf9, 0x39, 0x79, 0xa4, 0xe4, 0x24, 0x64, 0x83, 0xc3, 0x3, 0x43, 0x9e, 0xde, 0x1e, 0x5e, + 0x25, 0x65, 0xa5, 0xe5, 0x38, 0x78, 0xb8, 0xf8, 0x1f, 0x5f, 0x9f, 0xdf, 0x2, 0x42, 0x82, 0xc2, + 0x51, 0x11, 0xd1, 0x91, 0x4c, 0xc, 0xcc, 0x8c, 0x6b, 0x2b, 0xeb, 0xab, 0x76, 0x36, 0xf6, 0xb6, + 0x87, 0xc7, 0x7, 0x47, 0x9a, 0xda, 0x1a, 0x5a, 0xbd, 0xfd, 0x3d, 0x7d, 0xa0, 0xe0, 0x20, 0x60, + 0xf3, 0xb3, 0x73, 0x33, 0xee, 0xae, 0x6e, 0x2e, 0xc9, 0x89, 0x49, 0x9, 0xd4, 0x94, 0x54, 0x14, + 0x6f, 0x2f, 0xef, 0xaf, 0x72, 0x32, 0xf2, 0xb2, 0x55, 0x15, 0xd5, 0x95, 0x48, 0x8, 0xc8, 0x88, + 0x1b, 0x5b, 0x9b, 0xdb, 0x6, 0x46, 0x86, 0xc6, 0x21, 0x61, 0xa1, 0xe1, 0x3c, 0x7c, 0xbc, 0xfc, + 0x4a, 0xa, 0xca, 0x8a, 0x57, 0x17, 0xd7, 0x97, 0x70, 0x30, 0xf0, 0xb0, 0x6d, 0x2d, 0xed, 0xad, + 0x3e, 0x7e, 0xbe, 0xfe, 0x23, 0x63, 0xa3, 0xe3, 0x4, 0x44, 0x84, 0xc4, 0x19, 0x59, 0x99, 0xd9, + 0xa2, 0xe2, 0x22, 0x62, 0xbf, 0xff, 0x3f, 0x7f, 0x98, 0xd8, 0x18, 0x58, 0x85, 0xc5, 0x5, 0x45, + 0xd6, 0x96, 0x56, 0x16, 0xcb, 0x8b, 0x4b, 0xb, 0xec, 0xac, 0x6c, 0x2c, 0xf1, 0xb1, 0x71, 0x31, + ], + [ + 0x0, 0x41, 0x82, 0xc3, 0x19, 0x58, 0x9b, 0xda, 0x32, 0x73, 0xb0, 0xf1, 0x2b, 0x6a, 0xa9, 0xe8, + 0x64, 0x25, 0xe6, 0xa7, 0x7d, 0x3c, 0xff, 0xbe, 0x56, 0x17, 0xd4, 0x95, 0x4f, 0xe, 0xcd, 0x8c, + 0xc8, 0x89, 0x4a, 0xb, 0xd1, 0x90, 0x53, 0x12, 0xfa, 0xbb, 0x78, 0x39, 0xe3, 0xa2, 0x61, 0x20, + 0xac, 0xed, 0x2e, 0x6f, 0xb5, 0xf4, 0x37, 0x76, 0x9e, 0xdf, 0x1c, 0x5d, 0x87, 0xc6, 0x5, 0x44, + 0x8d, 0xcc, 0xf, 0x4e, 0x94, 0xd5, 0x16, 0x57, 0xbf, 0xfe, 0x3d, 0x7c, 0xa6, 0xe7, 0x24, 0x65, + 0xe9, 0xa8, 0x6b, 0x2a, 0xf0, 0xb1, 0x72, 0x33, 0xdb, 0x9a, 0x59, 0x18, 0xc2, 0x83, 0x40, 0x1, + 0x45, 0x4, 0xc7, 0x86, 0x5c, 0x1d, 0xde, 0x9f, 0x77, 0x36, 0xf5, 0xb4, 0x6e, 0x2f, 0xec, 0xad, + 0x21, 0x60, 0xa3, 0xe2, 0x38, 0x79, 0xba, 0xfb, 0x13, 0x52, 0x91, 0xd0, 0xa, 0x4b, 0x88, 0xc9, + 0x7, 0x46, 0x85, 0xc4, 0x1e, 0x5f, 0x9c, 0xdd, 0x35, 0x74, 0xb7, 0xf6, 0x2c, 0x6d, 0xae, 0xef, + 0x63, 0x22, 0xe1, 0xa0, 0x7a, 0x3b, 0xf8, 0xb9, 0x51, 0x10, 0xd3, 0x92, 0x48, 0x9, 0xca, 0x8b, + 0xcf, 0x8e, 0x4d, 0xc, 0xd6, 0x97, 0x54, 0x15, 0xfd, 0xbc, 0x7f, 0x3e, 0xe4, 0xa5, 0x66, 0x27, + 0xab, 0xea, 0x29, 0x68, 0xb2, 0xf3, 0x30, 0x71, 0x99, 0xd8, 0x1b, 0x5a, 0x80, 0xc1, 0x2, 0x43, + 0x8a, 0xcb, 0x8, 0x49, 0x93, 0xd2, 0x11, 0x50, 0xb8, 0xf9, 0x3a, 0x7b, 0xa1, 0xe0, 0x23, 0x62, + 0xee, 0xaf, 0x6c, 0x2d, 0xf7, 0xb6, 0x75, 0x34, 0xdc, 0x9d, 0x5e, 0x1f, 0xc5, 0x84, 0x47, 0x6, + 0x42, 0x3, 0xc0, 0x81, 0x5b, 0x1a, 0xd9, 0x98, 0x70, 0x31, 0xf2, 0xb3, 0x69, 0x28, 0xeb, 0xaa, + 0x26, 0x67, 0xa4, 0xe5, 0x3f, 0x7e, 0xbd, 0xfc, 0x14, 0x55, 0x96, 0xd7, 0xd, 0x4c, 0x8f, 0xce, + ], + [ + 0x0, 0x42, 0x84, 0xc6, 0x15, 0x57, 0x91, 0xd3, 0x2a, 0x68, 0xae, 0xec, 0x3f, 0x7d, 0xbb, 0xf9, + 0x54, 0x16, 0xd0, 0x92, 0x41, 0x3, 0xc5, 0x87, 0x7e, 0x3c, 0xfa, 0xb8, 0x6b, 0x29, 0xef, 0xad, + 0xa8, 0xea, 0x2c, 0x6e, 0xbd, 0xff, 0x39, 0x7b, 0x82, 0xc0, 0x6, 0x44, 0x97, 0xd5, 0x13, 0x51, + 0xfc, 0xbe, 0x78, 0x3a, 0xe9, 0xab, 0x6d, 0x2f, 0xd6, 0x94, 0x52, 0x10, 0xc3, 0x81, 0x47, 0x5, + 0x4d, 0xf, 0xc9, 0x8b, 0x58, 0x1a, 0xdc, 0x9e, 0x67, 0x25, 0xe3, 0xa1, 0x72, 0x30, 0xf6, 0xb4, + 0x19, 0x5b, 0x9d, 0xdf, 0xc, 0x4e, 0x88, 0xca, 0x33, 0x71, 0xb7, 0xf5, 0x26, 0x64, 0xa2, 0xe0, + 0xe5, 0xa7, 0x61, 0x23, 0xf0, 0xb2, 0x74, 0x36, 0xcf, 0x8d, 0x4b, 0x9, 0xda, 0x98, 0x5e, 0x1c, + 0xb1, 0xf3, 0x35, 0x77, 0xa4, 0xe6, 0x20, 0x62, 0x9b, 0xd9, 0x1f, 0x5d, 0x8e, 0xcc, 0xa, 0x48, + 0x9a, 0xd8, 0x1e, 0x5c, 0x8f, 0xcd, 0xb, 0x49, 0xb0, 0xf2, 0x34, 0x76, 0xa5, 0xe7, 0x21, 0x63, + 0xce, 0x8c, 0x4a, 0x8, 0xdb, 0x99, 0x5f, 0x1d, 0xe4, 0xa6, 0x60, 0x22, 0xf1, 0xb3, 0x75, 0x37, + 0x32, 0x70, 0xb6, 0xf4, 0x27, 0x65, 0xa3, 0xe1, 0x18, 0x5a, 0x9c, 0xde, 0xd, 0x4f, 0x89, 0xcb, + 0x66, 0x24, 0xe2, 0xa0, 0x73, 0x31, 0xf7, 0xb5, 0x4c, 0xe, 0xc8, 0x8a, 0x59, 0x1b, 0xdd, 0x9f, + 0xd7, 0x95, 0x53, 0x11, 0xc2, 0x80, 0x46, 0x4, 0xfd, 0xbf, 0x79, 0x3b, 0xe8, 0xaa, 0x6c, 0x2e, + 0x83, 0xc1, 0x7, 0x45, 0x96, 0xd4, 0x12, 0x50, 0xa9, 0xeb, 0x2d, 0x6f, 0xbc, 0xfe, 0x38, 0x7a, + 0x7f, 0x3d, 0xfb, 0xb9, 0x6a, 0x28, 0xee, 0xac, 0x55, 0x17, 0xd1, 0x93, 0x40, 0x2, 0xc4, 0x86, + 0x2b, 0x69, 0xaf, 0xed, 0x3e, 0x7c, 0xba, 0xf8, 0x1, 0x43, 0x85, 0xc7, 0x14, 0x56, 0x90, 0xd2, + ], + [ + 0x0, 0x43, 0x86, 0xc5, 0x11, 0x52, 0x97, 0xd4, 0x22, 0x61, 0xa4, 0xe7, 0x33, 0x70, 0xb5, 0xf6, + 0x44, 0x7, 0xc2, 0x81, 0x55, 0x16, 0xd3, 0x90, 0x66, 0x25, 0xe0, 0xa3, 0x77, 0x34, 0xf1, 0xb2, + 0x88, 0xcb, 0xe, 0x4d, 0x99, 0xda, 0x1f, 0x5c, 0xaa, 0xe9, 0x2c, 0x6f, 0xbb, 0xf8, 0x3d, 0x7e, + 0xcc, 0x8f, 0x4a, 0x9, 0xdd, 0x9e, 0x5b, 0x18, 0xee, 0xad, 0x68, 0x2b, 0xff, 0xbc, 0x79, 0x3a, + 0xd, 0x4e, 0x8b, 0xc8, 0x1c, 0x5f, 0x9a, 0xd9, 0x2f, 0x6c, 0xa9, 0xea, 0x3e, 0x7d, 0xb8, 0xfb, + 0x49, 0xa, 0xcf, 0x8c, 0x58, 0x1b, 0xde, 0x9d, 0x6b, 0x28, 0xed, 0xae, 0x7a, 0x39, 0xfc, 0xbf, + 0x85, 0xc6, 0x3, 0x40, 0x94, 0xd7, 0x12, 0x51, 0xa7, 0xe4, 0x21, 0x62, 0xb6, 0xf5, 0x30, 0x73, + 0xc1, 0x82, 0x47, 0x4, 0xd0, 0x93, 0x56, 0x15, 0xe3, 0xa0, 0x65, 0x26, 0xf2, 0xb1, 0x74, 0x37, + 0x1a, 0x59, 0x9c, 0xdf, 0xb, 0x48, 0x8d, 0xce, 0x38, 0x7b, 0xbe, 0xfd, 0x29, 0x6a, 0xaf, 0xec, + 0x5e, 0x1d, 0xd8, 0x9b, 0x4f, 0xc, 0xc9, 0x8a, 0x7c, 0x3f, 0xfa, 0xb9, 0x6d, 0x2e, 0xeb, 0xa8, + 0x92, 0xd1, 0x14, 0x57, 0x83, 0xc0, 0x5, 0x46, 0xb0, 0xf3, 0x36, 0x75, 0xa1, 0xe2, 0x27, 0x64, + 0xd6, 0x95, 0x50, 0x13, 0xc7, 0x84, 0x41, 0x2, 0xf4, 0xb7, 0x72, 0x31, 0xe5, 0xa6, 0x63, 0x20, + 0x17, 0x54, 0x91, 0xd2, 0x6, 0x45, 0x80, 0xc3, 0x35, 0x76, 0xb3, 0xf0, 0x24, 0x67, 0xa2, 0xe1, + 0x53, 0x10, 0xd5, 0x96, 0x42, 0x1, 0xc4, 0x87, 0x71, 0x32, 0xf7, 0xb4, 0x60, 0x23, 0xe6, 0xa5, + 0x9f, 0xdc, 0x19, 0x5a, 0x8e, 0xcd, 0x8, 0x4b, 0xbd, 0xfe, 0x3b, 0x78, 0xac, 0xef, 0x2a, 0x69, + 0xdb, 0x98, 0x5d, 0x1e, 0xca, 0x89, 0x4c, 0xf, 0xf9, 0xba, 0x7f, 0x3c, 0xe8, 0xab, 0x6e, 0x2d, + ], + [ + 0x0, 0x44, 0x88, 0xcc, 0xd, 0x49, 0x85, 0xc1, 0x1a, 0x5e, 0x92, 0xd6, 0x17, 0x53, 0x9f, 0xdb, + 0x34, 0x70, 0xbc, 0xf8, 0x39, 0x7d, 0xb1, 0xf5, 0x2e, 0x6a, 0xa6, 0xe2, 0x23, 0x67, 0xab, 0xef, + 0x68, 0x2c, 0xe0, 0xa4, 0x65, 0x21, 0xed, 0xa9, 0x72, 0x36, 0xfa, 0xbe, 0x7f, 0x3b, 0xf7, 0xb3, + 0x5c, 0x18, 0xd4, 0x90, 0x51, 0x15, 0xd9, 0x9d, 0x46, 0x2, 0xce, 0x8a, 0x4b, 0xf, 0xc3, 0x87, + 0xd0, 0x94, 0x58, 0x1c, 0xdd, 0x99, 0x55, 0x11, 0xca, 0x8e, 0x42, 0x6, 0xc7, 0x83, 0x4f, 0xb, + 0xe4, 0xa0, 0x6c, 0x28, 0xe9, 0xad, 0x61, 0x25, 0xfe, 0xba, 0x76, 0x32, 0xf3, 0xb7, 0x7b, 0x3f, + 0xb8, 0xfc, 0x30, 0x74, 0xb5, 0xf1, 0x3d, 0x79, 0xa2, 0xe6, 0x2a, 0x6e, 0xaf, 0xeb, 0x27, 0x63, + 0x8c, 0xc8, 0x4, 0x40, 0x81, 0xc5, 0x9, 0x4d, 0x96, 0xd2, 0x1e, 0x5a, 0x9b, 0xdf, 0x13, 0x57, + 0xbd, 0xf9, 0x35, 0x71, 0xb0, 0xf4, 0x38, 0x7c, 0xa7, 0xe3, 0x2f, 0x6b, 0xaa, 0xee, 0x22, 0x66, + 0x89, 0xcd, 0x1, 0x45, 0x84, 0xc0, 0xc, 0x48, 0x93, 0xd7, 0x1b, 0x5f, 0x9e, 0xda, 0x16, 0x52, + 0xd5, 0x91, 0x5d, 0x19, 0xd8, 0x9c, 0x50, 0x14, 0xcf, 0x8b, 0x47, 0x3, 0xc2, 0x86, 0x4a, 0xe, + 0xe1, 0xa5, 0x69, 0x2d, 0xec, 0xa8, 0x64, 0x20, 0xfb, 0xbf, 0x73, 0x37, 0xf6, 0xb2, 0x7e, 0x3a, + 0x6d, 0x29, 0xe5, 0xa1, 0x60, 0x24, 0xe8, 0xac, 0x77, 0x33, 0xff, 0xbb, 0x7a, 0x3e, 0xf2, 0xb6, + 0x59, 0x1d, 0xd1, 0x95, 0x54, 0x10, 0xdc, 0x98, 0x43, 0x7, 0xcb, 0x8f, 0x4e, 0xa, 0xc6, 0x82, + 0x5, 0x41, 0x8d, 0xc9, 0x8, 0x4c, 0x80, 0xc4, 0x1f, 0x5b, 0x97, 0xd3, 0x12, 0x56, 0x9a, 0xde, + 0x31, 0x75, 0xb9, 0xfd, 0x3c, 0x78, 0xb4, 0xf0, 0x2b, 0x6f, 0xa3, 0xe7, 0x26, 0x62, 0xae, 0xea, + ], + [ + 0x0, 0x45, 0x8a, 0xcf, 0x9, 0x4c, 0x83, 0xc6, 0x12, 0x57, 0x98, 0xdd, 0x1b, 0x5e, 0x91, 0xd4, + 0x24, 0x61, 0xae, 0xeb, 0x2d, 0x68, 0xa7, 0xe2, 0x36, 0x73, 0xbc, 0xf9, 0x3f, 0x7a, 0xb5, 0xf0, + 0x48, 0xd, 0xc2, 0x87, 0x41, 0x4, 0xcb, 0x8e, 0x5a, 0x1f, 0xd0, 0x95, 0x53, 0x16, 0xd9, 0x9c, + 0x6c, 0x29, 0xe6, 0xa3, 0x65, 0x20, 0xef, 0xaa, 0x7e, 0x3b, 0xf4, 0xb1, 0x77, 0x32, 0xfd, 0xb8, + 0x90, 0xd5, 0x1a, 0x5f, 0x99, 0xdc, 0x13, 0x56, 0x82, 0xc7, 0x8, 0x4d, 0x8b, 0xce, 0x1, 0x44, + 0xb4, 0xf1, 0x3e, 0x7b, 0xbd, 0xf8, 0x37, 0x72, 0xa6, 0xe3, 0x2c, 0x69, 0xaf, 0xea, 0x25, 0x60, + 0xd8, 0x9d, 0x52, 0x17, 0xd1, 0x94, 0x5b, 0x1e, 0xca, 0x8f, 0x40, 0x5, 0xc3, 0x86, 0x49, 0xc, + 0xfc, 0xb9, 0x76, 0x33, 0xf5, 0xb0, 0x7f, 0x3a, 0xee, 0xab, 0x64, 0x21, 0xe7, 0xa2, 0x6d, 0x28, + 0x3d, 0x78, 0xb7, 0xf2, 0x34, 0x71, 0xbe, 0xfb, 0x2f, 0x6a, 0xa5, 0xe0, 0x26, 0x63, 0xac, 0xe9, + 0x19, 0x5c, 0x93, 0xd6, 0x10, 0x55, 0x9a, 0xdf, 0xb, 0x4e, 0x81, 0xc4, 0x2, 0x47, 0x88, 0xcd, + 0x75, 0x30, 0xff, 0xba, 0x7c, 0x39, 0xf6, 0xb3, 0x67, 0x22, 0xed, 0xa8, 0x6e, 0x2b, 0xe4, 0xa1, + 0x51, 0x14, 0xdb, 0x9e, 0x58, 0x1d, 0xd2, 0x97, 0x43, 0x6, 0xc9, 0x8c, 0x4a, 0xf, 0xc0, 0x85, + 0xad, 0xe8, 0x27, 0x62, 0xa4, 0xe1, 0x2e, 0x6b, 0xbf, 0xfa, 0x35, 0x70, 0xb6, 0xf3, 0x3c, 0x79, + 0x89, 0xcc, 0x3, 0x46, 0x80, 0xc5, 0xa, 0x4f, 0x9b, 0xde, 0x11, 0x54, 0x92, 0xd7, 0x18, 0x5d, + 0xe5, 0xa0, 0x6f, 0x2a, 0xec, 0xa9, 0x66, 0x23, 0xf7, 0xb2, 0x7d, 0x38, 0xfe, 0xbb, 0x74, 0x31, + 0xc1, 0x84, 0x4b, 0xe, 0xc8, 0x8d, 0x42, 0x7, 0xd3, 0x96, 0x59, 0x1c, 0xda, 0x9f, 0x50, 0x15, + ], + [ + 0x0, 0x46, 0x8c, 0xca, 0x5, 0x43, 0x89, 0xcf, 0xa, 0x4c, 0x86, 0xc0, 0xf, 0x49, 0x83, 0xc5, + 0x14, 0x52, 0x98, 0xde, 0x11, 0x57, 0x9d, 0xdb, 0x1e, 0x58, 0x92, 0xd4, 0x1b, 0x5d, 0x97, 0xd1, + 0x28, 0x6e, 0xa4, 0xe2, 0x2d, 0x6b, 0xa1, 0xe7, 0x22, 0x64, 0xae, 0xe8, 0x27, 0x61, 0xab, 0xed, + 0x3c, 0x7a, 0xb0, 0xf6, 0x39, 0x7f, 0xb5, 0xf3, 0x36, 0x70, 0xba, 0xfc, 0x33, 0x75, 0xbf, 0xf9, + 0x50, 0x16, 0xdc, 0x9a, 0x55, 0x13, 0xd9, 0x9f, 0x5a, 0x1c, 0xd6, 0x90, 0x5f, 0x19, 0xd3, 0x95, + 0x44, 0x2, 0xc8, 0x8e, 0x41, 0x7, 0xcd, 0x8b, 0x4e, 0x8, 0xc2, 0x84, 0x4b, 0xd, 0xc7, 0x81, + 0x78, 0x3e, 0xf4, 0xb2, 0x7d, 0x3b, 0xf1, 0xb7, 0x72, 0x34, 0xfe, 0xb8, 0x77, 0x31, 0xfb, 0xbd, + 0x6c, 0x2a, 0xe0, 0xa6, 0x69, 0x2f, 0xe5, 0xa3, 0x66, 0x20, 0xea, 0xac, 0x63, 0x25, 0xef, 0xa9, + 0xa0, 0xe6, 0x2c, 0x6a, 0xa5, 0xe3, 0x29, 0x6f, 0xaa, 0xec, 0x26, 0x60, 0xaf, 0xe9, 0x23, 0x65, + 0xb4, 0xf2, 0x38, 0x7e, 0xb1, 0xf7, 0x3d, 0x7b, 0xbe, 0xf8, 0x32, 0x74, 0xbb, 0xfd, 0x37, 0x71, + 0x88, 0xce, 0x4, 0x42, 0x8d, 0xcb, 0x1, 0x47, 0x82, 0xc4, 0xe, 0x48, 0x87, 0xc1, 0xb, 0x4d, + 0x9c, 0xda, 0x10, 0x56, 0x99, 0xdf, 0x15, 0x53, 0x96, 0xd0, 0x1a, 0x5c, 0x93, 0xd5, 0x1f, 0x59, + 0xf0, 0xb6, 0x7c, 0x3a, 0xf5, 0xb3, 0x79, 0x3f, 0xfa, 0xbc, 0x76, 0x30, 0xff, 0xb9, 0x73, 0x35, + 0xe4, 0xa2, 0x68, 0x2e, 0xe1, 0xa7, 0x6d, 0x2b, 0xee, 0xa8, 0x62, 0x24, 0xeb, 0xad, 0x67, 0x21, + 0xd8, 0x9e, 0x54, 0x12, 0xdd, 0x9b, 0x51, 0x17, 0xd2, 0x94, 0x5e, 0x18, 0xd7, 0x91, 0x5b, 0x1d, + 0xcc, 0x8a, 0x40, 0x6, 0xc9, 0x8f, 0x45, 0x3, 0xc6, 0x80, 0x4a, 0xc, 0xc3, 0x85, 0x4f, 0x9, + ], + [ + 0x0, 0x47, 0x8e, 0xc9, 0x1, 0x46, 0x8f, 0xc8, 0x2, 0x45, 0x8c, 0xcb, 0x3, 0x44, 0x8d, 0xca, 0x4, + 0x43, 0x8a, 0xcd, 0x5, 0x42, 0x8b, 0xcc, 0x6, 0x41, 0x88, 0xcf, 0x7, 0x40, 0x89, 0xce, 0x8, + 0x4f, 0x86, 0xc1, 0x9, 0x4e, 0x87, 0xc0, 0xa, 0x4d, 0x84, 0xc3, 0xb, 0x4c, 0x85, 0xc2, 0xc, + 0x4b, 0x82, 0xc5, 0xd, 0x4a, 0x83, 0xc4, 0xe, 0x49, 0x80, 0xc7, 0xf, 0x48, 0x81, 0xc6, 0x10, + 0x57, 0x9e, 0xd9, 0x11, 0x56, 0x9f, 0xd8, 0x12, 0x55, 0x9c, 0xdb, 0x13, 0x54, 0x9d, 0xda, 0x14, + 0x53, 0x9a, 0xdd, 0x15, 0x52, 0x9b, 0xdc, 0x16, 0x51, 0x98, 0xdf, 0x17, 0x50, 0x99, 0xde, 0x18, + 0x5f, 0x96, 0xd1, 0x19, 0x5e, 0x97, 0xd0, 0x1a, 0x5d, 0x94, 0xd3, 0x1b, 0x5c, 0x95, 0xd2, 0x1c, + 0x5b, 0x92, 0xd5, 0x1d, 0x5a, 0x93, 0xd4, 0x1e, 0x59, 0x90, 0xd7, 0x1f, 0x58, 0x91, 0xd6, 0x20, + 0x67, 0xae, 0xe9, 0x21, 0x66, 0xaf, 0xe8, 0x22, 0x65, 0xac, 0xeb, 0x23, 0x64, 0xad, 0xea, 0x24, + 0x63, 0xaa, 0xed, 0x25, 0x62, 0xab, 0xec, 0x26, 0x61, 0xa8, 0xef, 0x27, 0x60, 0xa9, 0xee, 0x28, + 0x6f, 0xa6, 0xe1, 0x29, 0x6e, 0xa7, 0xe0, 0x2a, 0x6d, 0xa4, 0xe3, 0x2b, 0x6c, 0xa5, 0xe2, 0x2c, + 0x6b, 0xa2, 0xe5, 0x2d, 0x6a, 0xa3, 0xe4, 0x2e, 0x69, 0xa0, 0xe7, 0x2f, 0x68, 0xa1, 0xe6, 0x30, + 0x77, 0xbe, 0xf9, 0x31, 0x76, 0xbf, 0xf8, 0x32, 0x75, 0xbc, 0xfb, 0x33, 0x74, 0xbd, 0xfa, 0x34, + 0x73, 0xba, 0xfd, 0x35, 0x72, 0xbb, 0xfc, 0x36, 0x71, 0xb8, 0xff, 0x37, 0x70, 0xb9, 0xfe, 0x38, + 0x7f, 0xb6, 0xf1, 0x39, 0x7e, 0xb7, 0xf0, 0x3a, 0x7d, 0xb4, 0xf3, 0x3b, 0x7c, 0xb5, 0xf2, 0x3c, + 0x7b, 0xb2, 0xf5, 0x3d, 0x7a, 0xb3, 0xf4, 0x3e, 0x79, 0xb0, 0xf7, 0x3f, 0x78, 0xb1, 0xf6, + ], + [ + 0x0, 0x48, 0x90, 0xd8, 0x3d, 0x75, 0xad, 0xe5, 0x7a, 0x32, 0xea, 0xa2, 0x47, 0xf, 0xd7, 0x9f, + 0xf4, 0xbc, 0x64, 0x2c, 0xc9, 0x81, 0x59, 0x11, 0x8e, 0xc6, 0x1e, 0x56, 0xb3, 0xfb, 0x23, 0x6b, + 0xf5, 0xbd, 0x65, 0x2d, 0xc8, 0x80, 0x58, 0x10, 0x8f, 0xc7, 0x1f, 0x57, 0xb2, 0xfa, 0x22, 0x6a, + 0x1, 0x49, 0x91, 0xd9, 0x3c, 0x74, 0xac, 0xe4, 0x7b, 0x33, 0xeb, 0xa3, 0x46, 0xe, 0xd6, 0x9e, + 0xf7, 0xbf, 0x67, 0x2f, 0xca, 0x82, 0x5a, 0x12, 0x8d, 0xc5, 0x1d, 0x55, 0xb0, 0xf8, 0x20, 0x68, + 0x3, 0x4b, 0x93, 0xdb, 0x3e, 0x76, 0xae, 0xe6, 0x79, 0x31, 0xe9, 0xa1, 0x44, 0xc, 0xd4, 0x9c, + 0x2, 0x4a, 0x92, 0xda, 0x3f, 0x77, 0xaf, 0xe7, 0x78, 0x30, 0xe8, 0xa0, 0x45, 0xd, 0xd5, 0x9d, + 0xf6, 0xbe, 0x66, 0x2e, 0xcb, 0x83, 0x5b, 0x13, 0x8c, 0xc4, 0x1c, 0x54, 0xb1, 0xf9, 0x21, 0x69, + 0xf3, 0xbb, 0x63, 0x2b, 0xce, 0x86, 0x5e, 0x16, 0x89, 0xc1, 0x19, 0x51, 0xb4, 0xfc, 0x24, 0x6c, + 0x7, 0x4f, 0x97, 0xdf, 0x3a, 0x72, 0xaa, 0xe2, 0x7d, 0x35, 0xed, 0xa5, 0x40, 0x8, 0xd0, 0x98, + 0x6, 0x4e, 0x96, 0xde, 0x3b, 0x73, 0xab, 0xe3, 0x7c, 0x34, 0xec, 0xa4, 0x41, 0x9, 0xd1, 0x99, + 0xf2, 0xba, 0x62, 0x2a, 0xcf, 0x87, 0x5f, 0x17, 0x88, 0xc0, 0x18, 0x50, 0xb5, 0xfd, 0x25, 0x6d, + 0x4, 0x4c, 0x94, 0xdc, 0x39, 0x71, 0xa9, 0xe1, 0x7e, 0x36, 0xee, 0xa6, 0x43, 0xb, 0xd3, 0x9b, + 0xf0, 0xb8, 0x60, 0x28, 0xcd, 0x85, 0x5d, 0x15, 0x8a, 0xc2, 0x1a, 0x52, 0xb7, 0xff, 0x27, 0x6f, + 0xf1, 0xb9, 0x61, 0x29, 0xcc, 0x84, 0x5c, 0x14, 0x8b, 0xc3, 0x1b, 0x53, 0xb6, 0xfe, 0x26, 0x6e, + 0x5, 0x4d, 0x95, 0xdd, 0x38, 0x70, 0xa8, 0xe0, 0x7f, 0x37, 0xef, 0xa7, 0x42, 0xa, 0xd2, 0x9a, + ], + [ + 0x0, 0x49, 0x92, 0xdb, 0x39, 0x70, 0xab, 0xe2, 0x72, 0x3b, 0xe0, 0xa9, 0x4b, 0x2, 0xd9, 0x90, + 0xe4, 0xad, 0x76, 0x3f, 0xdd, 0x94, 0x4f, 0x6, 0x96, 0xdf, 0x4, 0x4d, 0xaf, 0xe6, 0x3d, 0x74, + 0xd5, 0x9c, 0x47, 0xe, 0xec, 0xa5, 0x7e, 0x37, 0xa7, 0xee, 0x35, 0x7c, 0x9e, 0xd7, 0xc, 0x45, + 0x31, 0x78, 0xa3, 0xea, 0x8, 0x41, 0x9a, 0xd3, 0x43, 0xa, 0xd1, 0x98, 0x7a, 0x33, 0xe8, 0xa1, + 0xb7, 0xfe, 0x25, 0x6c, 0x8e, 0xc7, 0x1c, 0x55, 0xc5, 0x8c, 0x57, 0x1e, 0xfc, 0xb5, 0x6e, 0x27, + 0x53, 0x1a, 0xc1, 0x88, 0x6a, 0x23, 0xf8, 0xb1, 0x21, 0x68, 0xb3, 0xfa, 0x18, 0x51, 0x8a, 0xc3, + 0x62, 0x2b, 0xf0, 0xb9, 0x5b, 0x12, 0xc9, 0x80, 0x10, 0x59, 0x82, 0xcb, 0x29, 0x60, 0xbb, 0xf2, + 0x86, 0xcf, 0x14, 0x5d, 0xbf, 0xf6, 0x2d, 0x64, 0xf4, 0xbd, 0x66, 0x2f, 0xcd, 0x84, 0x5f, 0x16, + 0x73, 0x3a, 0xe1, 0xa8, 0x4a, 0x3, 0xd8, 0x91, 0x1, 0x48, 0x93, 0xda, 0x38, 0x71, 0xaa, 0xe3, + 0x97, 0xde, 0x5, 0x4c, 0xae, 0xe7, 0x3c, 0x75, 0xe5, 0xac, 0x77, 0x3e, 0xdc, 0x95, 0x4e, 0x7, + 0xa6, 0xef, 0x34, 0x7d, 0x9f, 0xd6, 0xd, 0x44, 0xd4, 0x9d, 0x46, 0xf, 0xed, 0xa4, 0x7f, 0x36, + 0x42, 0xb, 0xd0, 0x99, 0x7b, 0x32, 0xe9, 0xa0, 0x30, 0x79, 0xa2, 0xeb, 0x9, 0x40, 0x9b, 0xd2, + 0xc4, 0x8d, 0x56, 0x1f, 0xfd, 0xb4, 0x6f, 0x26, 0xb6, 0xff, 0x24, 0x6d, 0x8f, 0xc6, 0x1d, 0x54, + 0x20, 0x69, 0xb2, 0xfb, 0x19, 0x50, 0x8b, 0xc2, 0x52, 0x1b, 0xc0, 0x89, 0x6b, 0x22, 0xf9, 0xb0, + 0x11, 0x58, 0x83, 0xca, 0x28, 0x61, 0xba, 0xf3, 0x63, 0x2a, 0xf1, 0xb8, 0x5a, 0x13, 0xc8, 0x81, + 0xf5, 0xbc, 0x67, 0x2e, 0xcc, 0x85, 0x5e, 0x17, 0x87, 0xce, 0x15, 0x5c, 0xbe, 0xf7, 0x2c, 0x65, + ], + [ + 0x0, 0x4a, 0x94, 0xde, 0x35, 0x7f, 0xa1, 0xeb, 0x6a, 0x20, 0xfe, 0xb4, 0x5f, 0x15, 0xcb, 0x81, + 0xd4, 0x9e, 0x40, 0xa, 0xe1, 0xab, 0x75, 0x3f, 0xbe, 0xf4, 0x2a, 0x60, 0x8b, 0xc1, 0x1f, 0x55, + 0xb5, 0xff, 0x21, 0x6b, 0x80, 0xca, 0x14, 0x5e, 0xdf, 0x95, 0x4b, 0x1, 0xea, 0xa0, 0x7e, 0x34, + 0x61, 0x2b, 0xf5, 0xbf, 0x54, 0x1e, 0xc0, 0x8a, 0xb, 0x41, 0x9f, 0xd5, 0x3e, 0x74, 0xaa, 0xe0, + 0x77, 0x3d, 0xe3, 0xa9, 0x42, 0x8, 0xd6, 0x9c, 0x1d, 0x57, 0x89, 0xc3, 0x28, 0x62, 0xbc, 0xf6, + 0xa3, 0xe9, 0x37, 0x7d, 0x96, 0xdc, 0x2, 0x48, 0xc9, 0x83, 0x5d, 0x17, 0xfc, 0xb6, 0x68, 0x22, + 0xc2, 0x88, 0x56, 0x1c, 0xf7, 0xbd, 0x63, 0x29, 0xa8, 0xe2, 0x3c, 0x76, 0x9d, 0xd7, 0x9, 0x43, + 0x16, 0x5c, 0x82, 0xc8, 0x23, 0x69, 0xb7, 0xfd, 0x7c, 0x36, 0xe8, 0xa2, 0x49, 0x3, 0xdd, 0x97, + 0xee, 0xa4, 0x7a, 0x30, 0xdb, 0x91, 0x4f, 0x5, 0x84, 0xce, 0x10, 0x5a, 0xb1, 0xfb, 0x25, 0x6f, + 0x3a, 0x70, 0xae, 0xe4, 0xf, 0x45, 0x9b, 0xd1, 0x50, 0x1a, 0xc4, 0x8e, 0x65, 0x2f, 0xf1, 0xbb, + 0x5b, 0x11, 0xcf, 0x85, 0x6e, 0x24, 0xfa, 0xb0, 0x31, 0x7b, 0xa5, 0xef, 0x4, 0x4e, 0x90, 0xda, + 0x8f, 0xc5, 0x1b, 0x51, 0xba, 0xf0, 0x2e, 0x64, 0xe5, 0xaf, 0x71, 0x3b, 0xd0, 0x9a, 0x44, 0xe, + 0x99, 0xd3, 0xd, 0x47, 0xac, 0xe6, 0x38, 0x72, 0xf3, 0xb9, 0x67, 0x2d, 0xc6, 0x8c, 0x52, 0x18, + 0x4d, 0x7, 0xd9, 0x93, 0x78, 0x32, 0xec, 0xa6, 0x27, 0x6d, 0xb3, 0xf9, 0x12, 0x58, 0x86, 0xcc, + 0x2c, 0x66, 0xb8, 0xf2, 0x19, 0x53, 0x8d, 0xc7, 0x46, 0xc, 0xd2, 0x98, 0x73, 0x39, 0xe7, 0xad, + 0xf8, 0xb2, 0x6c, 0x26, 0xcd, 0x87, 0x59, 0x13, 0x92, 0xd8, 0x6, 0x4c, 0xa7, 0xed, 0x33, 0x79, + ], + [ + 0x0, 0x4b, 0x96, 0xdd, 0x31, 0x7a, 0xa7, 0xec, 0x62, 0x29, 0xf4, 0xbf, 0x53, 0x18, 0xc5, 0x8e, + 0xc4, 0x8f, 0x52, 0x19, 0xf5, 0xbe, 0x63, 0x28, 0xa6, 0xed, 0x30, 0x7b, 0x97, 0xdc, 0x1, 0x4a, + 0x95, 0xde, 0x3, 0x48, 0xa4, 0xef, 0x32, 0x79, 0xf7, 0xbc, 0x61, 0x2a, 0xc6, 0x8d, 0x50, 0x1b, + 0x51, 0x1a, 0xc7, 0x8c, 0x60, 0x2b, 0xf6, 0xbd, 0x33, 0x78, 0xa5, 0xee, 0x2, 0x49, 0x94, 0xdf, + 0x37, 0x7c, 0xa1, 0xea, 0x6, 0x4d, 0x90, 0xdb, 0x55, 0x1e, 0xc3, 0x88, 0x64, 0x2f, 0xf2, 0xb9, + 0xf3, 0xb8, 0x65, 0x2e, 0xc2, 0x89, 0x54, 0x1f, 0x91, 0xda, 0x7, 0x4c, 0xa0, 0xeb, 0x36, 0x7d, + 0xa2, 0xe9, 0x34, 0x7f, 0x93, 0xd8, 0x5, 0x4e, 0xc0, 0x8b, 0x56, 0x1d, 0xf1, 0xba, 0x67, 0x2c, + 0x66, 0x2d, 0xf0, 0xbb, 0x57, 0x1c, 0xc1, 0x8a, 0x4, 0x4f, 0x92, 0xd9, 0x35, 0x7e, 0xa3, 0xe8, + 0x6e, 0x25, 0xf8, 0xb3, 0x5f, 0x14, 0xc9, 0x82, 0xc, 0x47, 0x9a, 0xd1, 0x3d, 0x76, 0xab, 0xe0, + 0xaa, 0xe1, 0x3c, 0x77, 0x9b, 0xd0, 0xd, 0x46, 0xc8, 0x83, 0x5e, 0x15, 0xf9, 0xb2, 0x6f, 0x24, + 0xfb, 0xb0, 0x6d, 0x26, 0xca, 0x81, 0x5c, 0x17, 0x99, 0xd2, 0xf, 0x44, 0xa8, 0xe3, 0x3e, 0x75, + 0x3f, 0x74, 0xa9, 0xe2, 0xe, 0x45, 0x98, 0xd3, 0x5d, 0x16, 0xcb, 0x80, 0x6c, 0x27, 0xfa, 0xb1, + 0x59, 0x12, 0xcf, 0x84, 0x68, 0x23, 0xfe, 0xb5, 0x3b, 0x70, 0xad, 0xe6, 0xa, 0x41, 0x9c, 0xd7, + 0x9d, 0xd6, 0xb, 0x40, 0xac, 0xe7, 0x3a, 0x71, 0xff, 0xb4, 0x69, 0x22, 0xce, 0x85, 0x58, 0x13, + 0xcc, 0x87, 0x5a, 0x11, 0xfd, 0xb6, 0x6b, 0x20, 0xae, 0xe5, 0x38, 0x73, 0x9f, 0xd4, 0x9, 0x42, + 0x8, 0x43, 0x9e, 0xd5, 0x39, 0x72, 0xaf, 0xe4, 0x6a, 0x21, 0xfc, 0xb7, 0x5b, 0x10, 0xcd, 0x86, + ], + [ + 0x0, 0x4c, 0x98, 0xd4, 0x2d, 0x61, 0xb5, 0xf9, 0x5a, 0x16, 0xc2, 0x8e, 0x77, 0x3b, 0xef, 0xa3, + 0xb4, 0xf8, 0x2c, 0x60, 0x99, 0xd5, 0x1, 0x4d, 0xee, 0xa2, 0x76, 0x3a, 0xc3, 0x8f, 0x5b, 0x17, + 0x75, 0x39, 0xed, 0xa1, 0x58, 0x14, 0xc0, 0x8c, 0x2f, 0x63, 0xb7, 0xfb, 0x2, 0x4e, 0x9a, 0xd6, + 0xc1, 0x8d, 0x59, 0x15, 0xec, 0xa0, 0x74, 0x38, 0x9b, 0xd7, 0x3, 0x4f, 0xb6, 0xfa, 0x2e, 0x62, + 0xea, 0xa6, 0x72, 0x3e, 0xc7, 0x8b, 0x5f, 0x13, 0xb0, 0xfc, 0x28, 0x64, 0x9d, 0xd1, 0x5, 0x49, + 0x5e, 0x12, 0xc6, 0x8a, 0x73, 0x3f, 0xeb, 0xa7, 0x4, 0x48, 0x9c, 0xd0, 0x29, 0x65, 0xb1, 0xfd, + 0x9f, 0xd3, 0x7, 0x4b, 0xb2, 0xfe, 0x2a, 0x66, 0xc5, 0x89, 0x5d, 0x11, 0xe8, 0xa4, 0x70, 0x3c, + 0x2b, 0x67, 0xb3, 0xff, 0x6, 0x4a, 0x9e, 0xd2, 0x71, 0x3d, 0xe9, 0xa5, 0x5c, 0x10, 0xc4, 0x88, + 0xc9, 0x85, 0x51, 0x1d, 0xe4, 0xa8, 0x7c, 0x30, 0x93, 0xdf, 0xb, 0x47, 0xbe, 0xf2, 0x26, 0x6a, + 0x7d, 0x31, 0xe5, 0xa9, 0x50, 0x1c, 0xc8, 0x84, 0x27, 0x6b, 0xbf, 0xf3, 0xa, 0x46, 0x92, 0xde, + 0xbc, 0xf0, 0x24, 0x68, 0x91, 0xdd, 0x9, 0x45, 0xe6, 0xaa, 0x7e, 0x32, 0xcb, 0x87, 0x53, 0x1f, + 0x8, 0x44, 0x90, 0xdc, 0x25, 0x69, 0xbd, 0xf1, 0x52, 0x1e, 0xca, 0x86, 0x7f, 0x33, 0xe7, 0xab, + 0x23, 0x6f, 0xbb, 0xf7, 0xe, 0x42, 0x96, 0xda, 0x79, 0x35, 0xe1, 0xad, 0x54, 0x18, 0xcc, 0x80, + 0x97, 0xdb, 0xf, 0x43, 0xba, 0xf6, 0x22, 0x6e, 0xcd, 0x81, 0x55, 0x19, 0xe0, 0xac, 0x78, 0x34, + 0x56, 0x1a, 0xce, 0x82, 0x7b, 0x37, 0xe3, 0xaf, 0xc, 0x40, 0x94, 0xd8, 0x21, 0x6d, 0xb9, 0xf5, + 0xe2, 0xae, 0x7a, 0x36, 0xcf, 0x83, 0x57, 0x1b, 0xb8, 0xf4, 0x20, 0x6c, 0x95, 0xd9, 0xd, 0x41, + ], + [ + 0x0, 0x4d, 0x9a, 0xd7, 0x29, 0x64, 0xb3, 0xfe, 0x52, 0x1f, 0xc8, 0x85, 0x7b, 0x36, 0xe1, 0xac, + 0xa4, 0xe9, 0x3e, 0x73, 0x8d, 0xc0, 0x17, 0x5a, 0xf6, 0xbb, 0x6c, 0x21, 0xdf, 0x92, 0x45, 0x8, + 0x55, 0x18, 0xcf, 0x82, 0x7c, 0x31, 0xe6, 0xab, 0x7, 0x4a, 0x9d, 0xd0, 0x2e, 0x63, 0xb4, 0xf9, + 0xf1, 0xbc, 0x6b, 0x26, 0xd8, 0x95, 0x42, 0xf, 0xa3, 0xee, 0x39, 0x74, 0x8a, 0xc7, 0x10, 0x5d, + 0xaa, 0xe7, 0x30, 0x7d, 0x83, 0xce, 0x19, 0x54, 0xf8, 0xb5, 0x62, 0x2f, 0xd1, 0x9c, 0x4b, 0x6, + 0xe, 0x43, 0x94, 0xd9, 0x27, 0x6a, 0xbd, 0xf0, 0x5c, 0x11, 0xc6, 0x8b, 0x75, 0x38, 0xef, 0xa2, + 0xff, 0xb2, 0x65, 0x28, 0xd6, 0x9b, 0x4c, 0x1, 0xad, 0xe0, 0x37, 0x7a, 0x84, 0xc9, 0x1e, 0x53, + 0x5b, 0x16, 0xc1, 0x8c, 0x72, 0x3f, 0xe8, 0xa5, 0x9, 0x44, 0x93, 0xde, 0x20, 0x6d, 0xba, 0xf7, + 0x49, 0x4, 0xd3, 0x9e, 0x60, 0x2d, 0xfa, 0xb7, 0x1b, 0x56, 0x81, 0xcc, 0x32, 0x7f, 0xa8, 0xe5, + 0xed, 0xa0, 0x77, 0x3a, 0xc4, 0x89, 0x5e, 0x13, 0xbf, 0xf2, 0x25, 0x68, 0x96, 0xdb, 0xc, 0x41, + 0x1c, 0x51, 0x86, 0xcb, 0x35, 0x78, 0xaf, 0xe2, 0x4e, 0x3, 0xd4, 0x99, 0x67, 0x2a, 0xfd, 0xb0, + 0xb8, 0xf5, 0x22, 0x6f, 0x91, 0xdc, 0xb, 0x46, 0xea, 0xa7, 0x70, 0x3d, 0xc3, 0x8e, 0x59, 0x14, + 0xe3, 0xae, 0x79, 0x34, 0xca, 0x87, 0x50, 0x1d, 0xb1, 0xfc, 0x2b, 0x66, 0x98, 0xd5, 0x2, 0x4f, + 0x47, 0xa, 0xdd, 0x90, 0x6e, 0x23, 0xf4, 0xb9, 0x15, 0x58, 0x8f, 0xc2, 0x3c, 0x71, 0xa6, 0xeb, + 0xb6, 0xfb, 0x2c, 0x61, 0x9f, 0xd2, 0x5, 0x48, 0xe4, 0xa9, 0x7e, 0x33, 0xcd, 0x80, 0x57, 0x1a, + 0x12, 0x5f, 0x88, 0xc5, 0x3b, 0x76, 0xa1, 0xec, 0x40, 0xd, 0xda, 0x97, 0x69, 0x24, 0xf3, 0xbe, + ], + [ + 0x0, 0x4e, 0x9c, 0xd2, 0x25, 0x6b, 0xb9, 0xf7, 0x4a, 0x4, 0xd6, 0x98, 0x6f, 0x21, 0xf3, 0xbd, + 0x94, 0xda, 0x8, 0x46, 0xb1, 0xff, 0x2d, 0x63, 0xde, 0x90, 0x42, 0xc, 0xfb, 0xb5, 0x67, 0x29, + 0x35, 0x7b, 0xa9, 0xe7, 0x10, 0x5e, 0x8c, 0xc2, 0x7f, 0x31, 0xe3, 0xad, 0x5a, 0x14, 0xc6, 0x88, + 0xa1, 0xef, 0x3d, 0x73, 0x84, 0xca, 0x18, 0x56, 0xeb, 0xa5, 0x77, 0x39, 0xce, 0x80, 0x52, 0x1c, + 0x6a, 0x24, 0xf6, 0xb8, 0x4f, 0x1, 0xd3, 0x9d, 0x20, 0x6e, 0xbc, 0xf2, 0x5, 0x4b, 0x99, 0xd7, + 0xfe, 0xb0, 0x62, 0x2c, 0xdb, 0x95, 0x47, 0x9, 0xb4, 0xfa, 0x28, 0x66, 0x91, 0xdf, 0xd, 0x43, + 0x5f, 0x11, 0xc3, 0x8d, 0x7a, 0x34, 0xe6, 0xa8, 0x15, 0x5b, 0x89, 0xc7, 0x30, 0x7e, 0xac, 0xe2, + 0xcb, 0x85, 0x57, 0x19, 0xee, 0xa0, 0x72, 0x3c, 0x81, 0xcf, 0x1d, 0x53, 0xa4, 0xea, 0x38, 0x76, + 0xd4, 0x9a, 0x48, 0x6, 0xf1, 0xbf, 0x6d, 0x23, 0x9e, 0xd0, 0x2, 0x4c, 0xbb, 0xf5, 0x27, 0x69, + 0x40, 0xe, 0xdc, 0x92, 0x65, 0x2b, 0xf9, 0xb7, 0xa, 0x44, 0x96, 0xd8, 0x2f, 0x61, 0xb3, 0xfd, + 0xe1, 0xaf, 0x7d, 0x33, 0xc4, 0x8a, 0x58, 0x16, 0xab, 0xe5, 0x37, 0x79, 0x8e, 0xc0, 0x12, 0x5c, + 0x75, 0x3b, 0xe9, 0xa7, 0x50, 0x1e, 0xcc, 0x82, 0x3f, 0x71, 0xa3, 0xed, 0x1a, 0x54, 0x86, 0xc8, + 0xbe, 0xf0, 0x22, 0x6c, 0x9b, 0xd5, 0x7, 0x49, 0xf4, 0xba, 0x68, 0x26, 0xd1, 0x9f, 0x4d, 0x3, + 0x2a, 0x64, 0xb6, 0xf8, 0xf, 0x41, 0x93, 0xdd, 0x60, 0x2e, 0xfc, 0xb2, 0x45, 0xb, 0xd9, 0x97, + 0x8b, 0xc5, 0x17, 0x59, 0xae, 0xe0, 0x32, 0x7c, 0xc1, 0x8f, 0x5d, 0x13, 0xe4, 0xaa, 0x78, 0x36, + 0x1f, 0x51, 0x83, 0xcd, 0x3a, 0x74, 0xa6, 0xe8, 0x55, 0x1b, 0xc9, 0x87, 0x70, 0x3e, 0xec, 0xa2, + ], + [ + 0x0, 0x4f, 0x9e, 0xd1, 0x21, 0x6e, 0xbf, 0xf0, 0x42, 0xd, 0xdc, 0x93, 0x63, 0x2c, 0xfd, 0xb2, + 0x84, 0xcb, 0x1a, 0x55, 0xa5, 0xea, 0x3b, 0x74, 0xc6, 0x89, 0x58, 0x17, 0xe7, 0xa8, 0x79, 0x36, + 0x15, 0x5a, 0x8b, 0xc4, 0x34, 0x7b, 0xaa, 0xe5, 0x57, 0x18, 0xc9, 0x86, 0x76, 0x39, 0xe8, 0xa7, + 0x91, 0xde, 0xf, 0x40, 0xb0, 0xff, 0x2e, 0x61, 0xd3, 0x9c, 0x4d, 0x2, 0xf2, 0xbd, 0x6c, 0x23, + 0x2a, 0x65, 0xb4, 0xfb, 0xb, 0x44, 0x95, 0xda, 0x68, 0x27, 0xf6, 0xb9, 0x49, 0x6, 0xd7, 0x98, + 0xae, 0xe1, 0x30, 0x7f, 0x8f, 0xc0, 0x11, 0x5e, 0xec, 0xa3, 0x72, 0x3d, 0xcd, 0x82, 0x53, 0x1c, + 0x3f, 0x70, 0xa1, 0xee, 0x1e, 0x51, 0x80, 0xcf, 0x7d, 0x32, 0xe3, 0xac, 0x5c, 0x13, 0xc2, 0x8d, + 0xbb, 0xf4, 0x25, 0x6a, 0x9a, 0xd5, 0x4, 0x4b, 0xf9, 0xb6, 0x67, 0x28, 0xd8, 0x97, 0x46, 0x9, + 0x54, 0x1b, 0xca, 0x85, 0x75, 0x3a, 0xeb, 0xa4, 0x16, 0x59, 0x88, 0xc7, 0x37, 0x78, 0xa9, 0xe6, + 0xd0, 0x9f, 0x4e, 0x1, 0xf1, 0xbe, 0x6f, 0x20, 0x92, 0xdd, 0xc, 0x43, 0xb3, 0xfc, 0x2d, 0x62, + 0x41, 0xe, 0xdf, 0x90, 0x60, 0x2f, 0xfe, 0xb1, 0x3, 0x4c, 0x9d, 0xd2, 0x22, 0x6d, 0xbc, 0xf3, + 0xc5, 0x8a, 0x5b, 0x14, 0xe4, 0xab, 0x7a, 0x35, 0x87, 0xc8, 0x19, 0x56, 0xa6, 0xe9, 0x38, 0x77, + 0x7e, 0x31, 0xe0, 0xaf, 0x5f, 0x10, 0xc1, 0x8e, 0x3c, 0x73, 0xa2, 0xed, 0x1d, 0x52, 0x83, 0xcc, + 0xfa, 0xb5, 0x64, 0x2b, 0xdb, 0x94, 0x45, 0xa, 0xb8, 0xf7, 0x26, 0x69, 0x99, 0xd6, 0x7, 0x48, + 0x6b, 0x24, 0xf5, 0xba, 0x4a, 0x5, 0xd4, 0x9b, 0x29, 0x66, 0xb7, 0xf8, 0x8, 0x47, 0x96, 0xd9, + 0xef, 0xa0, 0x71, 0x3e, 0xce, 0x81, 0x50, 0x1f, 0xad, 0xe2, 0x33, 0x7c, 0x8c, 0xc3, 0x12, 0x5d, + ], + [ + 0x0, 0x50, 0xa0, 0xf0, 0x5d, 0xd, 0xfd, 0xad, 0xba, 0xea, 0x1a, 0x4a, 0xe7, 0xb7, 0x47, 0x17, + 0x69, 0x39, 0xc9, 0x99, 0x34, 0x64, 0x94, 0xc4, 0xd3, 0x83, 0x73, 0x23, 0x8e, 0xde, 0x2e, 0x7e, + 0xd2, 0x82, 0x72, 0x22, 0x8f, 0xdf, 0x2f, 0x7f, 0x68, 0x38, 0xc8, 0x98, 0x35, 0x65, 0x95, 0xc5, + 0xbb, 0xeb, 0x1b, 0x4b, 0xe6, 0xb6, 0x46, 0x16, 0x1, 0x51, 0xa1, 0xf1, 0x5c, 0xc, 0xfc, 0xac, + 0xb9, 0xe9, 0x19, 0x49, 0xe4, 0xb4, 0x44, 0x14, 0x3, 0x53, 0xa3, 0xf3, 0x5e, 0xe, 0xfe, 0xae, + 0xd0, 0x80, 0x70, 0x20, 0x8d, 0xdd, 0x2d, 0x7d, 0x6a, 0x3a, 0xca, 0x9a, 0x37, 0x67, 0x97, 0xc7, + 0x6b, 0x3b, 0xcb, 0x9b, 0x36, 0x66, 0x96, 0xc6, 0xd1, 0x81, 0x71, 0x21, 0x8c, 0xdc, 0x2c, 0x7c, + 0x2, 0x52, 0xa2, 0xf2, 0x5f, 0xf, 0xff, 0xaf, 0xb8, 0xe8, 0x18, 0x48, 0xe5, 0xb5, 0x45, 0x15, + 0x6f, 0x3f, 0xcf, 0x9f, 0x32, 0x62, 0x92, 0xc2, 0xd5, 0x85, 0x75, 0x25, 0x88, 0xd8, 0x28, 0x78, + 0x6, 0x56, 0xa6, 0xf6, 0x5b, 0xb, 0xfb, 0xab, 0xbc, 0xec, 0x1c, 0x4c, 0xe1, 0xb1, 0x41, 0x11, + 0xbd, 0xed, 0x1d, 0x4d, 0xe0, 0xb0, 0x40, 0x10, 0x7, 0x57, 0xa7, 0xf7, 0x5a, 0xa, 0xfa, 0xaa, + 0xd4, 0x84, 0x74, 0x24, 0x89, 0xd9, 0x29, 0x79, 0x6e, 0x3e, 0xce, 0x9e, 0x33, 0x63, 0x93, 0xc3, + 0xd6, 0x86, 0x76, 0x26, 0x8b, 0xdb, 0x2b, 0x7b, 0x6c, 0x3c, 0xcc, 0x9c, 0x31, 0x61, 0x91, 0xc1, + 0xbf, 0xef, 0x1f, 0x4f, 0xe2, 0xb2, 0x42, 0x12, 0x5, 0x55, 0xa5, 0xf5, 0x58, 0x8, 0xf8, 0xa8, + 0x4, 0x54, 0xa4, 0xf4, 0x59, 0x9, 0xf9, 0xa9, 0xbe, 0xee, 0x1e, 0x4e, 0xe3, 0xb3, 0x43, 0x13, + 0x6d, 0x3d, 0xcd, 0x9d, 0x30, 0x60, 0x90, 0xc0, 0xd7, 0x87, 0x77, 0x27, 0x8a, 0xda, 0x2a, 0x7a, + ], + [ + 0x0, 0x51, 0xa2, 0xf3, 0x59, 0x8, 0xfb, 0xaa, 0xb2, 0xe3, 0x10, 0x41, 0xeb, 0xba, 0x49, 0x18, + 0x79, 0x28, 0xdb, 0x8a, 0x20, 0x71, 0x82, 0xd3, 0xcb, 0x9a, 0x69, 0x38, 0x92, 0xc3, 0x30, 0x61, + 0xf2, 0xa3, 0x50, 0x1, 0xab, 0xfa, 0x9, 0x58, 0x40, 0x11, 0xe2, 0xb3, 0x19, 0x48, 0xbb, 0xea, + 0x8b, 0xda, 0x29, 0x78, 0xd2, 0x83, 0x70, 0x21, 0x39, 0x68, 0x9b, 0xca, 0x60, 0x31, 0xc2, 0x93, + 0xf9, 0xa8, 0x5b, 0xa, 0xa0, 0xf1, 0x2, 0x53, 0x4b, 0x1a, 0xe9, 0xb8, 0x12, 0x43, 0xb0, 0xe1, + 0x80, 0xd1, 0x22, 0x73, 0xd9, 0x88, 0x7b, 0x2a, 0x32, 0x63, 0x90, 0xc1, 0x6b, 0x3a, 0xc9, 0x98, + 0xb, 0x5a, 0xa9, 0xf8, 0x52, 0x3, 0xf0, 0xa1, 0xb9, 0xe8, 0x1b, 0x4a, 0xe0, 0xb1, 0x42, 0x13, + 0x72, 0x23, 0xd0, 0x81, 0x2b, 0x7a, 0x89, 0xd8, 0xc0, 0x91, 0x62, 0x33, 0x99, 0xc8, 0x3b, 0x6a, + 0xef, 0xbe, 0x4d, 0x1c, 0xb6, 0xe7, 0x14, 0x45, 0x5d, 0xc, 0xff, 0xae, 0x4, 0x55, 0xa6, 0xf7, + 0x96, 0xc7, 0x34, 0x65, 0xcf, 0x9e, 0x6d, 0x3c, 0x24, 0x75, 0x86, 0xd7, 0x7d, 0x2c, 0xdf, 0x8e, + 0x1d, 0x4c, 0xbf, 0xee, 0x44, 0x15, 0xe6, 0xb7, 0xaf, 0xfe, 0xd, 0x5c, 0xf6, 0xa7, 0x54, 0x5, + 0x64, 0x35, 0xc6, 0x97, 0x3d, 0x6c, 0x9f, 0xce, 0xd6, 0x87, 0x74, 0x25, 0x8f, 0xde, 0x2d, 0x7c, + 0x16, 0x47, 0xb4, 0xe5, 0x4f, 0x1e, 0xed, 0xbc, 0xa4, 0xf5, 0x6, 0x57, 0xfd, 0xac, 0x5f, 0xe, + 0x6f, 0x3e, 0xcd, 0x9c, 0x36, 0x67, 0x94, 0xc5, 0xdd, 0x8c, 0x7f, 0x2e, 0x84, 0xd5, 0x26, 0x77, + 0xe4, 0xb5, 0x46, 0x17, 0xbd, 0xec, 0x1f, 0x4e, 0x56, 0x7, 0xf4, 0xa5, 0xf, 0x5e, 0xad, 0xfc, + 0x9d, 0xcc, 0x3f, 0x6e, 0xc4, 0x95, 0x66, 0x37, 0x2f, 0x7e, 0x8d, 0xdc, 0x76, 0x27, 0xd4, 0x85, + ], + [ + 0x0, 0x52, 0xa4, 0xf6, 0x55, 0x7, 0xf1, 0xa3, 0xaa, 0xf8, 0xe, 0x5c, 0xff, 0xad, 0x5b, 0x9, + 0x49, 0x1b, 0xed, 0xbf, 0x1c, 0x4e, 0xb8, 0xea, 0xe3, 0xb1, 0x47, 0x15, 0xb6, 0xe4, 0x12, 0x40, + 0x92, 0xc0, 0x36, 0x64, 0xc7, 0x95, 0x63, 0x31, 0x38, 0x6a, 0x9c, 0xce, 0x6d, 0x3f, 0xc9, 0x9b, + 0xdb, 0x89, 0x7f, 0x2d, 0x8e, 0xdc, 0x2a, 0x78, 0x71, 0x23, 0xd5, 0x87, 0x24, 0x76, 0x80, 0xd2, + 0x39, 0x6b, 0x9d, 0xcf, 0x6c, 0x3e, 0xc8, 0x9a, 0x93, 0xc1, 0x37, 0x65, 0xc6, 0x94, 0x62, 0x30, + 0x70, 0x22, 0xd4, 0x86, 0x25, 0x77, 0x81, 0xd3, 0xda, 0x88, 0x7e, 0x2c, 0x8f, 0xdd, 0x2b, 0x79, + 0xab, 0xf9, 0xf, 0x5d, 0xfe, 0xac, 0x5a, 0x8, 0x1, 0x53, 0xa5, 0xf7, 0x54, 0x6, 0xf0, 0xa2, + 0xe2, 0xb0, 0x46, 0x14, 0xb7, 0xe5, 0x13, 0x41, 0x48, 0x1a, 0xec, 0xbe, 0x1d, 0x4f, 0xb9, 0xeb, + 0x72, 0x20, 0xd6, 0x84, 0x27, 0x75, 0x83, 0xd1, 0xd8, 0x8a, 0x7c, 0x2e, 0x8d, 0xdf, 0x29, 0x7b, + 0x3b, 0x69, 0x9f, 0xcd, 0x6e, 0x3c, 0xca, 0x98, 0x91, 0xc3, 0x35, 0x67, 0xc4, 0x96, 0x60, 0x32, + 0xe0, 0xb2, 0x44, 0x16, 0xb5, 0xe7, 0x11, 0x43, 0x4a, 0x18, 0xee, 0xbc, 0x1f, 0x4d, 0xbb, 0xe9, + 0xa9, 0xfb, 0xd, 0x5f, 0xfc, 0xae, 0x58, 0xa, 0x3, 0x51, 0xa7, 0xf5, 0x56, 0x4, 0xf2, 0xa0, + 0x4b, 0x19, 0xef, 0xbd, 0x1e, 0x4c, 0xba, 0xe8, 0xe1, 0xb3, 0x45, 0x17, 0xb4, 0xe6, 0x10, 0x42, + 0x2, 0x50, 0xa6, 0xf4, 0x57, 0x5, 0xf3, 0xa1, 0xa8, 0xfa, 0xc, 0x5e, 0xfd, 0xaf, 0x59, 0xb, + 0xd9, 0x8b, 0x7d, 0x2f, 0x8c, 0xde, 0x28, 0x7a, 0x73, 0x21, 0xd7, 0x85, 0x26, 0x74, 0x82, 0xd0, + 0x90, 0xc2, 0x34, 0x66, 0xc5, 0x97, 0x61, 0x33, 0x3a, 0x68, 0x9e, 0xcc, 0x6f, 0x3d, 0xcb, 0x99, + ], + [ + 0x0, 0x53, 0xa6, 0xf5, 0x51, 0x2, 0xf7, 0xa4, 0xa2, 0xf1, 0x4, 0x57, 0xf3, 0xa0, 0x55, 0x6, + 0x59, 0xa, 0xff, 0xac, 0x8, 0x5b, 0xae, 0xfd, 0xfb, 0xa8, 0x5d, 0xe, 0xaa, 0xf9, 0xc, 0x5f, + 0xb2, 0xe1, 0x14, 0x47, 0xe3, 0xb0, 0x45, 0x16, 0x10, 0x43, 0xb6, 0xe5, 0x41, 0x12, 0xe7, 0xb4, + 0xeb, 0xb8, 0x4d, 0x1e, 0xba, 0xe9, 0x1c, 0x4f, 0x49, 0x1a, 0xef, 0xbc, 0x18, 0x4b, 0xbe, 0xed, + 0x79, 0x2a, 0xdf, 0x8c, 0x28, 0x7b, 0x8e, 0xdd, 0xdb, 0x88, 0x7d, 0x2e, 0x8a, 0xd9, 0x2c, 0x7f, + 0x20, 0x73, 0x86, 0xd5, 0x71, 0x22, 0xd7, 0x84, 0x82, 0xd1, 0x24, 0x77, 0xd3, 0x80, 0x75, 0x26, + 0xcb, 0x98, 0x6d, 0x3e, 0x9a, 0xc9, 0x3c, 0x6f, 0x69, 0x3a, 0xcf, 0x9c, 0x38, 0x6b, 0x9e, 0xcd, + 0x92, 0xc1, 0x34, 0x67, 0xc3, 0x90, 0x65, 0x36, 0x30, 0x63, 0x96, 0xc5, 0x61, 0x32, 0xc7, 0x94, + 0xf2, 0xa1, 0x54, 0x7, 0xa3, 0xf0, 0x5, 0x56, 0x50, 0x3, 0xf6, 0xa5, 0x1, 0x52, 0xa7, 0xf4, + 0xab, 0xf8, 0xd, 0x5e, 0xfa, 0xa9, 0x5c, 0xf, 0x9, 0x5a, 0xaf, 0xfc, 0x58, 0xb, 0xfe, 0xad, + 0x40, 0x13, 0xe6, 0xb5, 0x11, 0x42, 0xb7, 0xe4, 0xe2, 0xb1, 0x44, 0x17, 0xb3, 0xe0, 0x15, 0x46, + 0x19, 0x4a, 0xbf, 0xec, 0x48, 0x1b, 0xee, 0xbd, 0xbb, 0xe8, 0x1d, 0x4e, 0xea, 0xb9, 0x4c, 0x1f, + 0x8b, 0xd8, 0x2d, 0x7e, 0xda, 0x89, 0x7c, 0x2f, 0x29, 0x7a, 0x8f, 0xdc, 0x78, 0x2b, 0xde, 0x8d, + 0xd2, 0x81, 0x74, 0x27, 0x83, 0xd0, 0x25, 0x76, 0x70, 0x23, 0xd6, 0x85, 0x21, 0x72, 0x87, 0xd4, + 0x39, 0x6a, 0x9f, 0xcc, 0x68, 0x3b, 0xce, 0x9d, 0x9b, 0xc8, 0x3d, 0x6e, 0xca, 0x99, 0x6c, 0x3f, + 0x60, 0x33, 0xc6, 0x95, 0x31, 0x62, 0x97, 0xc4, 0xc2, 0x91, 0x64, 0x37, 0x93, 0xc0, 0x35, 0x66, + ], + [ + 0x0, 0x54, 0xa8, 0xfc, 0x4d, 0x19, 0xe5, 0xb1, 0x9a, 0xce, 0x32, 0x66, 0xd7, 0x83, 0x7f, 0x2b, + 0x29, 0x7d, 0x81, 0xd5, 0x64, 0x30, 0xcc, 0x98, 0xb3, 0xe7, 0x1b, 0x4f, 0xfe, 0xaa, 0x56, 0x2, + 0x52, 0x6, 0xfa, 0xae, 0x1f, 0x4b, 0xb7, 0xe3, 0xc8, 0x9c, 0x60, 0x34, 0x85, 0xd1, 0x2d, 0x79, + 0x7b, 0x2f, 0xd3, 0x87, 0x36, 0x62, 0x9e, 0xca, 0xe1, 0xb5, 0x49, 0x1d, 0xac, 0xf8, 0x4, 0x50, + 0xa4, 0xf0, 0xc, 0x58, 0xe9, 0xbd, 0x41, 0x15, 0x3e, 0x6a, 0x96, 0xc2, 0x73, 0x27, 0xdb, 0x8f, + 0x8d, 0xd9, 0x25, 0x71, 0xc0, 0x94, 0x68, 0x3c, 0x17, 0x43, 0xbf, 0xeb, 0x5a, 0xe, 0xf2, 0xa6, + 0xf6, 0xa2, 0x5e, 0xa, 0xbb, 0xef, 0x13, 0x47, 0x6c, 0x38, 0xc4, 0x90, 0x21, 0x75, 0x89, 0xdd, + 0xdf, 0x8b, 0x77, 0x23, 0x92, 0xc6, 0x3a, 0x6e, 0x45, 0x11, 0xed, 0xb9, 0x8, 0x5c, 0xa0, 0xf4, + 0x55, 0x1, 0xfd, 0xa9, 0x18, 0x4c, 0xb0, 0xe4, 0xcf, 0x9b, 0x67, 0x33, 0x82, 0xd6, 0x2a, 0x7e, + 0x7c, 0x28, 0xd4, 0x80, 0x31, 0x65, 0x99, 0xcd, 0xe6, 0xb2, 0x4e, 0x1a, 0xab, 0xff, 0x3, 0x57, + 0x7, 0x53, 0xaf, 0xfb, 0x4a, 0x1e, 0xe2, 0xb6, 0x9d, 0xc9, 0x35, 0x61, 0xd0, 0x84, 0x78, 0x2c, + 0x2e, 0x7a, 0x86, 0xd2, 0x63, 0x37, 0xcb, 0x9f, 0xb4, 0xe0, 0x1c, 0x48, 0xf9, 0xad, 0x51, 0x5, + 0xf1, 0xa5, 0x59, 0xd, 0xbc, 0xe8, 0x14, 0x40, 0x6b, 0x3f, 0xc3, 0x97, 0x26, 0x72, 0x8e, 0xda, + 0xd8, 0x8c, 0x70, 0x24, 0x95, 0xc1, 0x3d, 0x69, 0x42, 0x16, 0xea, 0xbe, 0xf, 0x5b, 0xa7, 0xf3, + 0xa3, 0xf7, 0xb, 0x5f, 0xee, 0xba, 0x46, 0x12, 0x39, 0x6d, 0x91, 0xc5, 0x74, 0x20, 0xdc, 0x88, + 0x8a, 0xde, 0x22, 0x76, 0xc7, 0x93, 0x6f, 0x3b, 0x10, 0x44, 0xb8, 0xec, 0x5d, 0x9, 0xf5, 0xa1, + ], + [ + 0x0, 0x55, 0xaa, 0xff, 0x49, 0x1c, 0xe3, 0xb6, 0x92, 0xc7, 0x38, 0x6d, 0xdb, 0x8e, 0x71, 0x24, + 0x39, 0x6c, 0x93, 0xc6, 0x70, 0x25, 0xda, 0x8f, 0xab, 0xfe, 0x1, 0x54, 0xe2, 0xb7, 0x48, 0x1d, + 0x72, 0x27, 0xd8, 0x8d, 0x3b, 0x6e, 0x91, 0xc4, 0xe0, 0xb5, 0x4a, 0x1f, 0xa9, 0xfc, 0x3, 0x56, + 0x4b, 0x1e, 0xe1, 0xb4, 0x2, 0x57, 0xa8, 0xfd, 0xd9, 0x8c, 0x73, 0x26, 0x90, 0xc5, 0x3a, 0x6f, + 0xe4, 0xb1, 0x4e, 0x1b, 0xad, 0xf8, 0x7, 0x52, 0x76, 0x23, 0xdc, 0x89, 0x3f, 0x6a, 0x95, 0xc0, + 0xdd, 0x88, 0x77, 0x22, 0x94, 0xc1, 0x3e, 0x6b, 0x4f, 0x1a, 0xe5, 0xb0, 0x6, 0x53, 0xac, 0xf9, + 0x96, 0xc3, 0x3c, 0x69, 0xdf, 0x8a, 0x75, 0x20, 0x4, 0x51, 0xae, 0xfb, 0x4d, 0x18, 0xe7, 0xb2, + 0xaf, 0xfa, 0x5, 0x50, 0xe6, 0xb3, 0x4c, 0x19, 0x3d, 0x68, 0x97, 0xc2, 0x74, 0x21, 0xde, 0x8b, + 0xd5, 0x80, 0x7f, 0x2a, 0x9c, 0xc9, 0x36, 0x63, 0x47, 0x12, 0xed, 0xb8, 0xe, 0x5b, 0xa4, 0xf1, + 0xec, 0xb9, 0x46, 0x13, 0xa5, 0xf0, 0xf, 0x5a, 0x7e, 0x2b, 0xd4, 0x81, 0x37, 0x62, 0x9d, 0xc8, + 0xa7, 0xf2, 0xd, 0x58, 0xee, 0xbb, 0x44, 0x11, 0x35, 0x60, 0x9f, 0xca, 0x7c, 0x29, 0xd6, 0x83, + 0x9e, 0xcb, 0x34, 0x61, 0xd7, 0x82, 0x7d, 0x28, 0xc, 0x59, 0xa6, 0xf3, 0x45, 0x10, 0xef, 0xba, + 0x31, 0x64, 0x9b, 0xce, 0x78, 0x2d, 0xd2, 0x87, 0xa3, 0xf6, 0x9, 0x5c, 0xea, 0xbf, 0x40, 0x15, + 0x8, 0x5d, 0xa2, 0xf7, 0x41, 0x14, 0xeb, 0xbe, 0x9a, 0xcf, 0x30, 0x65, 0xd3, 0x86, 0x79, 0x2c, + 0x43, 0x16, 0xe9, 0xbc, 0xa, 0x5f, 0xa0, 0xf5, 0xd1, 0x84, 0x7b, 0x2e, 0x98, 0xcd, 0x32, 0x67, + 0x7a, 0x2f, 0xd0, 0x85, 0x33, 0x66, 0x99, 0xcc, 0xe8, 0xbd, 0x42, 0x17, 0xa1, 0xf4, 0xb, 0x5e, + ], + [ + 0x0, 0x56, 0xac, 0xfa, 0x45, 0x13, 0xe9, 0xbf, 0x8a, 0xdc, 0x26, 0x70, 0xcf, 0x99, 0x63, 0x35, + 0x9, 0x5f, 0xa5, 0xf3, 0x4c, 0x1a, 0xe0, 0xb6, 0x83, 0xd5, 0x2f, 0x79, 0xc6, 0x90, 0x6a, 0x3c, + 0x12, 0x44, 0xbe, 0xe8, 0x57, 0x1, 0xfb, 0xad, 0x98, 0xce, 0x34, 0x62, 0xdd, 0x8b, 0x71, 0x27, + 0x1b, 0x4d, 0xb7, 0xe1, 0x5e, 0x8, 0xf2, 0xa4, 0x91, 0xc7, 0x3d, 0x6b, 0xd4, 0x82, 0x78, 0x2e, + 0x24, 0x72, 0x88, 0xde, 0x61, 0x37, 0xcd, 0x9b, 0xae, 0xf8, 0x2, 0x54, 0xeb, 0xbd, 0x47, 0x11, + 0x2d, 0x7b, 0x81, 0xd7, 0x68, 0x3e, 0xc4, 0x92, 0xa7, 0xf1, 0xb, 0x5d, 0xe2, 0xb4, 0x4e, 0x18, + 0x36, 0x60, 0x9a, 0xcc, 0x73, 0x25, 0xdf, 0x89, 0xbc, 0xea, 0x10, 0x46, 0xf9, 0xaf, 0x55, 0x3, + 0x3f, 0x69, 0x93, 0xc5, 0x7a, 0x2c, 0xd6, 0x80, 0xb5, 0xe3, 0x19, 0x4f, 0xf0, 0xa6, 0x5c, 0xa, + 0x48, 0x1e, 0xe4, 0xb2, 0xd, 0x5b, 0xa1, 0xf7, 0xc2, 0x94, 0x6e, 0x38, 0x87, 0xd1, 0x2b, 0x7d, + 0x41, 0x17, 0xed, 0xbb, 0x4, 0x52, 0xa8, 0xfe, 0xcb, 0x9d, 0x67, 0x31, 0x8e, 0xd8, 0x22, 0x74, + 0x5a, 0xc, 0xf6, 0xa0, 0x1f, 0x49, 0xb3, 0xe5, 0xd0, 0x86, 0x7c, 0x2a, 0x95, 0xc3, 0x39, 0x6f, + 0x53, 0x5, 0xff, 0xa9, 0x16, 0x40, 0xba, 0xec, 0xd9, 0x8f, 0x75, 0x23, 0x9c, 0xca, 0x30, 0x66, + 0x6c, 0x3a, 0xc0, 0x96, 0x29, 0x7f, 0x85, 0xd3, 0xe6, 0xb0, 0x4a, 0x1c, 0xa3, 0xf5, 0xf, 0x59, + 0x65, 0x33, 0xc9, 0x9f, 0x20, 0x76, 0x8c, 0xda, 0xef, 0xb9, 0x43, 0x15, 0xaa, 0xfc, 0x6, 0x50, + 0x7e, 0x28, 0xd2, 0x84, 0x3b, 0x6d, 0x97, 0xc1, 0xf4, 0xa2, 0x58, 0xe, 0xb1, 0xe7, 0x1d, 0x4b, + 0x77, 0x21, 0xdb, 0x8d, 0x32, 0x64, 0x9e, 0xc8, 0xfd, 0xab, 0x51, 0x7, 0xb8, 0xee, 0x14, 0x42, + ], + [ + 0x0, 0x57, 0xae, 0xf9, 0x41, 0x16, 0xef, 0xb8, 0x82, 0xd5, 0x2c, 0x7b, 0xc3, 0x94, 0x6d, 0x3a, + 0x19, 0x4e, 0xb7, 0xe0, 0x58, 0xf, 0xf6, 0xa1, 0x9b, 0xcc, 0x35, 0x62, 0xda, 0x8d, 0x74, 0x23, + 0x32, 0x65, 0x9c, 0xcb, 0x73, 0x24, 0xdd, 0x8a, 0xb0, 0xe7, 0x1e, 0x49, 0xf1, 0xa6, 0x5f, 0x8, + 0x2b, 0x7c, 0x85, 0xd2, 0x6a, 0x3d, 0xc4, 0x93, 0xa9, 0xfe, 0x7, 0x50, 0xe8, 0xbf, 0x46, 0x11, + 0x64, 0x33, 0xca, 0x9d, 0x25, 0x72, 0x8b, 0xdc, 0xe6, 0xb1, 0x48, 0x1f, 0xa7, 0xf0, 0x9, 0x5e, + 0x7d, 0x2a, 0xd3, 0x84, 0x3c, 0x6b, 0x92, 0xc5, 0xff, 0xa8, 0x51, 0x6, 0xbe, 0xe9, 0x10, 0x47, + 0x56, 0x1, 0xf8, 0xaf, 0x17, 0x40, 0xb9, 0xee, 0xd4, 0x83, 0x7a, 0x2d, 0x95, 0xc2, 0x3b, 0x6c, + 0x4f, 0x18, 0xe1, 0xb6, 0xe, 0x59, 0xa0, 0xf7, 0xcd, 0x9a, 0x63, 0x34, 0x8c, 0xdb, 0x22, 0x75, + 0xc8, 0x9f, 0x66, 0x31, 0x89, 0xde, 0x27, 0x70, 0x4a, 0x1d, 0xe4, 0xb3, 0xb, 0x5c, 0xa5, 0xf2, + 0xd1, 0x86, 0x7f, 0x28, 0x90, 0xc7, 0x3e, 0x69, 0x53, 0x4, 0xfd, 0xaa, 0x12, 0x45, 0xbc, 0xeb, + 0xfa, 0xad, 0x54, 0x3, 0xbb, 0xec, 0x15, 0x42, 0x78, 0x2f, 0xd6, 0x81, 0x39, 0x6e, 0x97, 0xc0, + 0xe3, 0xb4, 0x4d, 0x1a, 0xa2, 0xf5, 0xc, 0x5b, 0x61, 0x36, 0xcf, 0x98, 0x20, 0x77, 0x8e, 0xd9, + 0xac, 0xfb, 0x2, 0x55, 0xed, 0xba, 0x43, 0x14, 0x2e, 0x79, 0x80, 0xd7, 0x6f, 0x38, 0xc1, 0x96, + 0xb5, 0xe2, 0x1b, 0x4c, 0xf4, 0xa3, 0x5a, 0xd, 0x37, 0x60, 0x99, 0xce, 0x76, 0x21, 0xd8, 0x8f, + 0x9e, 0xc9, 0x30, 0x67, 0xdf, 0x88, 0x71, 0x26, 0x1c, 0x4b, 0xb2, 0xe5, 0x5d, 0xa, 0xf3, 0xa4, + 0x87, 0xd0, 0x29, 0x7e, 0xc6, 0x91, 0x68, 0x3f, 0x5, 0x52, 0xab, 0xfc, 0x44, 0x13, 0xea, 0xbd, + ], + [ + 0x0, 0x58, 0xb0, 0xe8, 0x7d, 0x25, 0xcd, 0x95, 0xfa, 0xa2, 0x4a, 0x12, 0x87, 0xdf, 0x37, 0x6f, + 0xe9, 0xb1, 0x59, 0x1, 0x94, 0xcc, 0x24, 0x7c, 0x13, 0x4b, 0xa3, 0xfb, 0x6e, 0x36, 0xde, 0x86, + 0xcf, 0x97, 0x7f, 0x27, 0xb2, 0xea, 0x2, 0x5a, 0x35, 0x6d, 0x85, 0xdd, 0x48, 0x10, 0xf8, 0xa0, + 0x26, 0x7e, 0x96, 0xce, 0x5b, 0x3, 0xeb, 0xb3, 0xdc, 0x84, 0x6c, 0x34, 0xa1, 0xf9, 0x11, 0x49, + 0x83, 0xdb, 0x33, 0x6b, 0xfe, 0xa6, 0x4e, 0x16, 0x79, 0x21, 0xc9, 0x91, 0x4, 0x5c, 0xb4, 0xec, + 0x6a, 0x32, 0xda, 0x82, 0x17, 0x4f, 0xa7, 0xff, 0x90, 0xc8, 0x20, 0x78, 0xed, 0xb5, 0x5d, 0x5, + 0x4c, 0x14, 0xfc, 0xa4, 0x31, 0x69, 0x81, 0xd9, 0xb6, 0xee, 0x6, 0x5e, 0xcb, 0x93, 0x7b, 0x23, + 0xa5, 0xfd, 0x15, 0x4d, 0xd8, 0x80, 0x68, 0x30, 0x5f, 0x7, 0xef, 0xb7, 0x22, 0x7a, 0x92, 0xca, + 0x1b, 0x43, 0xab, 0xf3, 0x66, 0x3e, 0xd6, 0x8e, 0xe1, 0xb9, 0x51, 0x9, 0x9c, 0xc4, 0x2c, 0x74, + 0xf2, 0xaa, 0x42, 0x1a, 0x8f, 0xd7, 0x3f, 0x67, 0x8, 0x50, 0xb8, 0xe0, 0x75, 0x2d, 0xc5, 0x9d, + 0xd4, 0x8c, 0x64, 0x3c, 0xa9, 0xf1, 0x19, 0x41, 0x2e, 0x76, 0x9e, 0xc6, 0x53, 0xb, 0xe3, 0xbb, + 0x3d, 0x65, 0x8d, 0xd5, 0x40, 0x18, 0xf0, 0xa8, 0xc7, 0x9f, 0x77, 0x2f, 0xba, 0xe2, 0xa, 0x52, + 0x98, 0xc0, 0x28, 0x70, 0xe5, 0xbd, 0x55, 0xd, 0x62, 0x3a, 0xd2, 0x8a, 0x1f, 0x47, 0xaf, 0xf7, + 0x71, 0x29, 0xc1, 0x99, 0xc, 0x54, 0xbc, 0xe4, 0x8b, 0xd3, 0x3b, 0x63, 0xf6, 0xae, 0x46, 0x1e, + 0x57, 0xf, 0xe7, 0xbf, 0x2a, 0x72, 0x9a, 0xc2, 0xad, 0xf5, 0x1d, 0x45, 0xd0, 0x88, 0x60, 0x38, + 0xbe, 0xe6, 0xe, 0x56, 0xc3, 0x9b, 0x73, 0x2b, 0x44, 0x1c, 0xf4, 0xac, 0x39, 0x61, 0x89, 0xd1, + ], + [ + 0x0, 0x59, 0xb2, 0xeb, 0x79, 0x20, 0xcb, 0x92, 0xf2, 0xab, 0x40, 0x19, 0x8b, 0xd2, 0x39, 0x60, + 0xf9, 0xa0, 0x4b, 0x12, 0x80, 0xd9, 0x32, 0x6b, 0xb, 0x52, 0xb9, 0xe0, 0x72, 0x2b, 0xc0, 0x99, + 0xef, 0xb6, 0x5d, 0x4, 0x96, 0xcf, 0x24, 0x7d, 0x1d, 0x44, 0xaf, 0xf6, 0x64, 0x3d, 0xd6, 0x8f, + 0x16, 0x4f, 0xa4, 0xfd, 0x6f, 0x36, 0xdd, 0x84, 0xe4, 0xbd, 0x56, 0xf, 0x9d, 0xc4, 0x2f, 0x76, + 0xc3, 0x9a, 0x71, 0x28, 0xba, 0xe3, 0x8, 0x51, 0x31, 0x68, 0x83, 0xda, 0x48, 0x11, 0xfa, 0xa3, + 0x3a, 0x63, 0x88, 0xd1, 0x43, 0x1a, 0xf1, 0xa8, 0xc8, 0x91, 0x7a, 0x23, 0xb1, 0xe8, 0x3, 0x5a, + 0x2c, 0x75, 0x9e, 0xc7, 0x55, 0xc, 0xe7, 0xbe, 0xde, 0x87, 0x6c, 0x35, 0xa7, 0xfe, 0x15, 0x4c, + 0xd5, 0x8c, 0x67, 0x3e, 0xac, 0xf5, 0x1e, 0x47, 0x27, 0x7e, 0x95, 0xcc, 0x5e, 0x7, 0xec, 0xb5, + 0x9b, 0xc2, 0x29, 0x70, 0xe2, 0xbb, 0x50, 0x9, 0x69, 0x30, 0xdb, 0x82, 0x10, 0x49, 0xa2, 0xfb, + 0x62, 0x3b, 0xd0, 0x89, 0x1b, 0x42, 0xa9, 0xf0, 0x90, 0xc9, 0x22, 0x7b, 0xe9, 0xb0, 0x5b, 0x2, + 0x74, 0x2d, 0xc6, 0x9f, 0xd, 0x54, 0xbf, 0xe6, 0x86, 0xdf, 0x34, 0x6d, 0xff, 0xa6, 0x4d, 0x14, + 0x8d, 0xd4, 0x3f, 0x66, 0xf4, 0xad, 0x46, 0x1f, 0x7f, 0x26, 0xcd, 0x94, 0x6, 0x5f, 0xb4, 0xed, + 0x58, 0x1, 0xea, 0xb3, 0x21, 0x78, 0x93, 0xca, 0xaa, 0xf3, 0x18, 0x41, 0xd3, 0x8a, 0x61, 0x38, + 0xa1, 0xf8, 0x13, 0x4a, 0xd8, 0x81, 0x6a, 0x33, 0x53, 0xa, 0xe1, 0xb8, 0x2a, 0x73, 0x98, 0xc1, + 0xb7, 0xee, 0x5, 0x5c, 0xce, 0x97, 0x7c, 0x25, 0x45, 0x1c, 0xf7, 0xae, 0x3c, 0x65, 0x8e, 0xd7, + 0x4e, 0x17, 0xfc, 0xa5, 0x37, 0x6e, 0x85, 0xdc, 0xbc, 0xe5, 0xe, 0x57, 0xc5, 0x9c, 0x77, 0x2e, + ], + [ + 0x0, 0x5a, 0xb4, 0xee, 0x75, 0x2f, 0xc1, 0x9b, 0xea, 0xb0, 0x5e, 0x4, 0x9f, 0xc5, 0x2b, 0x71, + 0xc9, 0x93, 0x7d, 0x27, 0xbc, 0xe6, 0x8, 0x52, 0x23, 0x79, 0x97, 0xcd, 0x56, 0xc, 0xe2, 0xb8, + 0x8f, 0xd5, 0x3b, 0x61, 0xfa, 0xa0, 0x4e, 0x14, 0x65, 0x3f, 0xd1, 0x8b, 0x10, 0x4a, 0xa4, 0xfe, + 0x46, 0x1c, 0xf2, 0xa8, 0x33, 0x69, 0x87, 0xdd, 0xac, 0xf6, 0x18, 0x42, 0xd9, 0x83, 0x6d, 0x37, + 0x3, 0x59, 0xb7, 0xed, 0x76, 0x2c, 0xc2, 0x98, 0xe9, 0xb3, 0x5d, 0x7, 0x9c, 0xc6, 0x28, 0x72, + 0xca, 0x90, 0x7e, 0x24, 0xbf, 0xe5, 0xb, 0x51, 0x20, 0x7a, 0x94, 0xce, 0x55, 0xf, 0xe1, 0xbb, + 0x8c, 0xd6, 0x38, 0x62, 0xf9, 0xa3, 0x4d, 0x17, 0x66, 0x3c, 0xd2, 0x88, 0x13, 0x49, 0xa7, 0xfd, + 0x45, 0x1f, 0xf1, 0xab, 0x30, 0x6a, 0x84, 0xde, 0xaf, 0xf5, 0x1b, 0x41, 0xda, 0x80, 0x6e, 0x34, + 0x6, 0x5c, 0xb2, 0xe8, 0x73, 0x29, 0xc7, 0x9d, 0xec, 0xb6, 0x58, 0x2, 0x99, 0xc3, 0x2d, 0x77, + 0xcf, 0x95, 0x7b, 0x21, 0xba, 0xe0, 0xe, 0x54, 0x25, 0x7f, 0x91, 0xcb, 0x50, 0xa, 0xe4, 0xbe, + 0x89, 0xd3, 0x3d, 0x67, 0xfc, 0xa6, 0x48, 0x12, 0x63, 0x39, 0xd7, 0x8d, 0x16, 0x4c, 0xa2, 0xf8, + 0x40, 0x1a, 0xf4, 0xae, 0x35, 0x6f, 0x81, 0xdb, 0xaa, 0xf0, 0x1e, 0x44, 0xdf, 0x85, 0x6b, 0x31, + 0x5, 0x5f, 0xb1, 0xeb, 0x70, 0x2a, 0xc4, 0x9e, 0xef, 0xb5, 0x5b, 0x1, 0x9a, 0xc0, 0x2e, 0x74, + 0xcc, 0x96, 0x78, 0x22, 0xb9, 0xe3, 0xd, 0x57, 0x26, 0x7c, 0x92, 0xc8, 0x53, 0x9, 0xe7, 0xbd, + 0x8a, 0xd0, 0x3e, 0x64, 0xff, 0xa5, 0x4b, 0x11, 0x60, 0x3a, 0xd4, 0x8e, 0x15, 0x4f, 0xa1, 0xfb, + 0x43, 0x19, 0xf7, 0xad, 0x36, 0x6c, 0x82, 0xd8, 0xa9, 0xf3, 0x1d, 0x47, 0xdc, 0x86, 0x68, 0x32, + ], + [ + 0x0, 0x5b, 0xb6, 0xed, 0x71, 0x2a, 0xc7, 0x9c, 0xe2, 0xb9, 0x54, 0xf, 0x93, 0xc8, 0x25, 0x7e, + 0xd9, 0x82, 0x6f, 0x34, 0xa8, 0xf3, 0x1e, 0x45, 0x3b, 0x60, 0x8d, 0xd6, 0x4a, 0x11, 0xfc, 0xa7, + 0xaf, 0xf4, 0x19, 0x42, 0xde, 0x85, 0x68, 0x33, 0x4d, 0x16, 0xfb, 0xa0, 0x3c, 0x67, 0x8a, 0xd1, + 0x76, 0x2d, 0xc0, 0x9b, 0x7, 0x5c, 0xb1, 0xea, 0x94, 0xcf, 0x22, 0x79, 0xe5, 0xbe, 0x53, 0x8, + 0x43, 0x18, 0xf5, 0xae, 0x32, 0x69, 0x84, 0xdf, 0xa1, 0xfa, 0x17, 0x4c, 0xd0, 0x8b, 0x66, 0x3d, + 0x9a, 0xc1, 0x2c, 0x77, 0xeb, 0xb0, 0x5d, 0x6, 0x78, 0x23, 0xce, 0x95, 0x9, 0x52, 0xbf, 0xe4, + 0xec, 0xb7, 0x5a, 0x1, 0x9d, 0xc6, 0x2b, 0x70, 0xe, 0x55, 0xb8, 0xe3, 0x7f, 0x24, 0xc9, 0x92, + 0x35, 0x6e, 0x83, 0xd8, 0x44, 0x1f, 0xf2, 0xa9, 0xd7, 0x8c, 0x61, 0x3a, 0xa6, 0xfd, 0x10, 0x4b, + 0x86, 0xdd, 0x30, 0x6b, 0xf7, 0xac, 0x41, 0x1a, 0x64, 0x3f, 0xd2, 0x89, 0x15, 0x4e, 0xa3, 0xf8, + 0x5f, 0x4, 0xe9, 0xb2, 0x2e, 0x75, 0x98, 0xc3, 0xbd, 0xe6, 0xb, 0x50, 0xcc, 0x97, 0x7a, 0x21, + 0x29, 0x72, 0x9f, 0xc4, 0x58, 0x3, 0xee, 0xb5, 0xcb, 0x90, 0x7d, 0x26, 0xba, 0xe1, 0xc, 0x57, + 0xf0, 0xab, 0x46, 0x1d, 0x81, 0xda, 0x37, 0x6c, 0x12, 0x49, 0xa4, 0xff, 0x63, 0x38, 0xd5, 0x8e, + 0xc5, 0x9e, 0x73, 0x28, 0xb4, 0xef, 0x2, 0x59, 0x27, 0x7c, 0x91, 0xca, 0x56, 0xd, 0xe0, 0xbb, + 0x1c, 0x47, 0xaa, 0xf1, 0x6d, 0x36, 0xdb, 0x80, 0xfe, 0xa5, 0x48, 0x13, 0x8f, 0xd4, 0x39, 0x62, + 0x6a, 0x31, 0xdc, 0x87, 0x1b, 0x40, 0xad, 0xf6, 0x88, 0xd3, 0x3e, 0x65, 0xf9, 0xa2, 0x4f, 0x14, + 0xb3, 0xe8, 0x5, 0x5e, 0xc2, 0x99, 0x74, 0x2f, 0x51, 0xa, 0xe7, 0xbc, 0x20, 0x7b, 0x96, 0xcd, + ], + [ + 0x0, 0x5c, 0xb8, 0xe4, 0x6d, 0x31, 0xd5, 0x89, 0xda, 0x86, 0x62, 0x3e, 0xb7, 0xeb, 0xf, 0x53, + 0xa9, 0xf5, 0x11, 0x4d, 0xc4, 0x98, 0x7c, 0x20, 0x73, 0x2f, 0xcb, 0x97, 0x1e, 0x42, 0xa6, 0xfa, + 0x4f, 0x13, 0xf7, 0xab, 0x22, 0x7e, 0x9a, 0xc6, 0x95, 0xc9, 0x2d, 0x71, 0xf8, 0xa4, 0x40, 0x1c, + 0xe6, 0xba, 0x5e, 0x2, 0x8b, 0xd7, 0x33, 0x6f, 0x3c, 0x60, 0x84, 0xd8, 0x51, 0xd, 0xe9, 0xb5, + 0x9e, 0xc2, 0x26, 0x7a, 0xf3, 0xaf, 0x4b, 0x17, 0x44, 0x18, 0xfc, 0xa0, 0x29, 0x75, 0x91, 0xcd, + 0x37, 0x6b, 0x8f, 0xd3, 0x5a, 0x6, 0xe2, 0xbe, 0xed, 0xb1, 0x55, 0x9, 0x80, 0xdc, 0x38, 0x64, + 0xd1, 0x8d, 0x69, 0x35, 0xbc, 0xe0, 0x4, 0x58, 0xb, 0x57, 0xb3, 0xef, 0x66, 0x3a, 0xde, 0x82, + 0x78, 0x24, 0xc0, 0x9c, 0x15, 0x49, 0xad, 0xf1, 0xa2, 0xfe, 0x1a, 0x46, 0xcf, 0x93, 0x77, 0x2b, + 0x21, 0x7d, 0x99, 0xc5, 0x4c, 0x10, 0xf4, 0xa8, 0xfb, 0xa7, 0x43, 0x1f, 0x96, 0xca, 0x2e, 0x72, + 0x88, 0xd4, 0x30, 0x6c, 0xe5, 0xb9, 0x5d, 0x1, 0x52, 0xe, 0xea, 0xb6, 0x3f, 0x63, 0x87, 0xdb, + 0x6e, 0x32, 0xd6, 0x8a, 0x3, 0x5f, 0xbb, 0xe7, 0xb4, 0xe8, 0xc, 0x50, 0xd9, 0x85, 0x61, 0x3d, + 0xc7, 0x9b, 0x7f, 0x23, 0xaa, 0xf6, 0x12, 0x4e, 0x1d, 0x41, 0xa5, 0xf9, 0x70, 0x2c, 0xc8, 0x94, + 0xbf, 0xe3, 0x7, 0x5b, 0xd2, 0x8e, 0x6a, 0x36, 0x65, 0x39, 0xdd, 0x81, 0x8, 0x54, 0xb0, 0xec, + 0x16, 0x4a, 0xae, 0xf2, 0x7b, 0x27, 0xc3, 0x9f, 0xcc, 0x90, 0x74, 0x28, 0xa1, 0xfd, 0x19, 0x45, + 0xf0, 0xac, 0x48, 0x14, 0x9d, 0xc1, 0x25, 0x79, 0x2a, 0x76, 0x92, 0xce, 0x47, 0x1b, 0xff, 0xa3, + 0x59, 0x5, 0xe1, 0xbd, 0x34, 0x68, 0x8c, 0xd0, 0x83, 0xdf, 0x3b, 0x67, 0xee, 0xb2, 0x56, 0xa, + ], + [ + 0x0, 0x5d, 0xba, 0xe7, 0x69, 0x34, 0xd3, 0x8e, 0xd2, 0x8f, 0x68, 0x35, 0xbb, 0xe6, 0x1, 0x5c, + 0xb9, 0xe4, 0x3, 0x5e, 0xd0, 0x8d, 0x6a, 0x37, 0x6b, 0x36, 0xd1, 0x8c, 0x2, 0x5f, 0xb8, 0xe5, + 0x6f, 0x32, 0xd5, 0x88, 0x6, 0x5b, 0xbc, 0xe1, 0xbd, 0xe0, 0x7, 0x5a, 0xd4, 0x89, 0x6e, 0x33, + 0xd6, 0x8b, 0x6c, 0x31, 0xbf, 0xe2, 0x5, 0x58, 0x4, 0x59, 0xbe, 0xe3, 0x6d, 0x30, 0xd7, 0x8a, + 0xde, 0x83, 0x64, 0x39, 0xb7, 0xea, 0xd, 0x50, 0xc, 0x51, 0xb6, 0xeb, 0x65, 0x38, 0xdf, 0x82, + 0x67, 0x3a, 0xdd, 0x80, 0xe, 0x53, 0xb4, 0xe9, 0xb5, 0xe8, 0xf, 0x52, 0xdc, 0x81, 0x66, 0x3b, + 0xb1, 0xec, 0xb, 0x56, 0xd8, 0x85, 0x62, 0x3f, 0x63, 0x3e, 0xd9, 0x84, 0xa, 0x57, 0xb0, 0xed, + 0x8, 0x55, 0xb2, 0xef, 0x61, 0x3c, 0xdb, 0x86, 0xda, 0x87, 0x60, 0x3d, 0xb3, 0xee, 0x9, 0x54, + 0xa1, 0xfc, 0x1b, 0x46, 0xc8, 0x95, 0x72, 0x2f, 0x73, 0x2e, 0xc9, 0x94, 0x1a, 0x47, 0xa0, 0xfd, + 0x18, 0x45, 0xa2, 0xff, 0x71, 0x2c, 0xcb, 0x96, 0xca, 0x97, 0x70, 0x2d, 0xa3, 0xfe, 0x19, 0x44, + 0xce, 0x93, 0x74, 0x29, 0xa7, 0xfa, 0x1d, 0x40, 0x1c, 0x41, 0xa6, 0xfb, 0x75, 0x28, 0xcf, 0x92, + 0x77, 0x2a, 0xcd, 0x90, 0x1e, 0x43, 0xa4, 0xf9, 0xa5, 0xf8, 0x1f, 0x42, 0xcc, 0x91, 0x76, 0x2b, + 0x7f, 0x22, 0xc5, 0x98, 0x16, 0x4b, 0xac, 0xf1, 0xad, 0xf0, 0x17, 0x4a, 0xc4, 0x99, 0x7e, 0x23, + 0xc6, 0x9b, 0x7c, 0x21, 0xaf, 0xf2, 0x15, 0x48, 0x14, 0x49, 0xae, 0xf3, 0x7d, 0x20, 0xc7, 0x9a, + 0x10, 0x4d, 0xaa, 0xf7, 0x79, 0x24, 0xc3, 0x9e, 0xc2, 0x9f, 0x78, 0x25, 0xab, 0xf6, 0x11, 0x4c, + 0xa9, 0xf4, 0x13, 0x4e, 0xc0, 0x9d, 0x7a, 0x27, 0x7b, 0x26, 0xc1, 0x9c, 0x12, 0x4f, 0xa8, 0xf5, + ], + [ + 0x0, 0x5e, 0xbc, 0xe2, 0x65, 0x3b, 0xd9, 0x87, 0xca, 0x94, 0x76, 0x28, 0xaf, 0xf1, 0x13, 0x4d, + 0x89, 0xd7, 0x35, 0x6b, 0xec, 0xb2, 0x50, 0xe, 0x43, 0x1d, 0xff, 0xa1, 0x26, 0x78, 0x9a, 0xc4, + 0xf, 0x51, 0xb3, 0xed, 0x6a, 0x34, 0xd6, 0x88, 0xc5, 0x9b, 0x79, 0x27, 0xa0, 0xfe, 0x1c, 0x42, + 0x86, 0xd8, 0x3a, 0x64, 0xe3, 0xbd, 0x5f, 0x1, 0x4c, 0x12, 0xf0, 0xae, 0x29, 0x77, 0x95, 0xcb, + 0x1e, 0x40, 0xa2, 0xfc, 0x7b, 0x25, 0xc7, 0x99, 0xd4, 0x8a, 0x68, 0x36, 0xb1, 0xef, 0xd, 0x53, + 0x97, 0xc9, 0x2b, 0x75, 0xf2, 0xac, 0x4e, 0x10, 0x5d, 0x3, 0xe1, 0xbf, 0x38, 0x66, 0x84, 0xda, + 0x11, 0x4f, 0xad, 0xf3, 0x74, 0x2a, 0xc8, 0x96, 0xdb, 0x85, 0x67, 0x39, 0xbe, 0xe0, 0x2, 0x5c, + 0x98, 0xc6, 0x24, 0x7a, 0xfd, 0xa3, 0x41, 0x1f, 0x52, 0xc, 0xee, 0xb0, 0x37, 0x69, 0x8b, 0xd5, + 0x3c, 0x62, 0x80, 0xde, 0x59, 0x7, 0xe5, 0xbb, 0xf6, 0xa8, 0x4a, 0x14, 0x93, 0xcd, 0x2f, 0x71, + 0xb5, 0xeb, 0x9, 0x57, 0xd0, 0x8e, 0x6c, 0x32, 0x7f, 0x21, 0xc3, 0x9d, 0x1a, 0x44, 0xa6, 0xf8, + 0x33, 0x6d, 0x8f, 0xd1, 0x56, 0x8, 0xea, 0xb4, 0xf9, 0xa7, 0x45, 0x1b, 0x9c, 0xc2, 0x20, 0x7e, + 0xba, 0xe4, 0x6, 0x58, 0xdf, 0x81, 0x63, 0x3d, 0x70, 0x2e, 0xcc, 0x92, 0x15, 0x4b, 0xa9, 0xf7, + 0x22, 0x7c, 0x9e, 0xc0, 0x47, 0x19, 0xfb, 0xa5, 0xe8, 0xb6, 0x54, 0xa, 0x8d, 0xd3, 0x31, 0x6f, + 0xab, 0xf5, 0x17, 0x49, 0xce, 0x90, 0x72, 0x2c, 0x61, 0x3f, 0xdd, 0x83, 0x4, 0x5a, 0xb8, 0xe6, + 0x2d, 0x73, 0x91, 0xcf, 0x48, 0x16, 0xf4, 0xaa, 0xe7, 0xb9, 0x5b, 0x5, 0x82, 0xdc, 0x3e, 0x60, + 0xa4, 0xfa, 0x18, 0x46, 0xc1, 0x9f, 0x7d, 0x23, 0x6e, 0x30, 0xd2, 0x8c, 0xb, 0x55, 0xb7, 0xe9, + ], + [ + 0x0, 0x5f, 0xbe, 0xe1, 0x61, 0x3e, 0xdf, 0x80, 0xc2, 0x9d, 0x7c, 0x23, 0xa3, 0xfc, 0x1d, 0x42, + 0x99, 0xc6, 0x27, 0x78, 0xf8, 0xa7, 0x46, 0x19, 0x5b, 0x4, 0xe5, 0xba, 0x3a, 0x65, 0x84, 0xdb, + 0x2f, 0x70, 0x91, 0xce, 0x4e, 0x11, 0xf0, 0xaf, 0xed, 0xb2, 0x53, 0xc, 0x8c, 0xd3, 0x32, 0x6d, + 0xb6, 0xe9, 0x8, 0x57, 0xd7, 0x88, 0x69, 0x36, 0x74, 0x2b, 0xca, 0x95, 0x15, 0x4a, 0xab, 0xf4, + 0x5e, 0x1, 0xe0, 0xbf, 0x3f, 0x60, 0x81, 0xde, 0x9c, 0xc3, 0x22, 0x7d, 0xfd, 0xa2, 0x43, 0x1c, + 0xc7, 0x98, 0x79, 0x26, 0xa6, 0xf9, 0x18, 0x47, 0x5, 0x5a, 0xbb, 0xe4, 0x64, 0x3b, 0xda, 0x85, + 0x71, 0x2e, 0xcf, 0x90, 0x10, 0x4f, 0xae, 0xf1, 0xb3, 0xec, 0xd, 0x52, 0xd2, 0x8d, 0x6c, 0x33, + 0xe8, 0xb7, 0x56, 0x9, 0x89, 0xd6, 0x37, 0x68, 0x2a, 0x75, 0x94, 0xcb, 0x4b, 0x14, 0xf5, 0xaa, + 0xbc, 0xe3, 0x2, 0x5d, 0xdd, 0x82, 0x63, 0x3c, 0x7e, 0x21, 0xc0, 0x9f, 0x1f, 0x40, 0xa1, 0xfe, + 0x25, 0x7a, 0x9b, 0xc4, 0x44, 0x1b, 0xfa, 0xa5, 0xe7, 0xb8, 0x59, 0x6, 0x86, 0xd9, 0x38, 0x67, + 0x93, 0xcc, 0x2d, 0x72, 0xf2, 0xad, 0x4c, 0x13, 0x51, 0xe, 0xef, 0xb0, 0x30, 0x6f, 0x8e, 0xd1, + 0xa, 0x55, 0xb4, 0xeb, 0x6b, 0x34, 0xd5, 0x8a, 0xc8, 0x97, 0x76, 0x29, 0xa9, 0xf6, 0x17, 0x48, + 0xe2, 0xbd, 0x5c, 0x3, 0x83, 0xdc, 0x3d, 0x62, 0x20, 0x7f, 0x9e, 0xc1, 0x41, 0x1e, 0xff, 0xa0, + 0x7b, 0x24, 0xc5, 0x9a, 0x1a, 0x45, 0xa4, 0xfb, 0xb9, 0xe6, 0x7, 0x58, 0xd8, 0x87, 0x66, 0x39, + 0xcd, 0x92, 0x73, 0x2c, 0xac, 0xf3, 0x12, 0x4d, 0xf, 0x50, 0xb1, 0xee, 0x6e, 0x31, 0xd0, 0x8f, + 0x54, 0xb, 0xea, 0xb5, 0x35, 0x6a, 0x8b, 0xd4, 0x96, 0xc9, 0x28, 0x77, 0xf7, 0xa8, 0x49, 0x16, + ], + [ + 0x0, 0x60, 0xc0, 0xa0, 0x9d, 0xfd, 0x5d, 0x3d, 0x27, 0x47, 0xe7, 0x87, 0xba, 0xda, 0x7a, 0x1a, + 0x4e, 0x2e, 0x8e, 0xee, 0xd3, 0xb3, 0x13, 0x73, 0x69, 0x9, 0xa9, 0xc9, 0xf4, 0x94, 0x34, 0x54, + 0x9c, 0xfc, 0x5c, 0x3c, 0x1, 0x61, 0xc1, 0xa1, 0xbb, 0xdb, 0x7b, 0x1b, 0x26, 0x46, 0xe6, 0x86, + 0xd2, 0xb2, 0x12, 0x72, 0x4f, 0x2f, 0x8f, 0xef, 0xf5, 0x95, 0x35, 0x55, 0x68, 0x8, 0xa8, 0xc8, + 0x25, 0x45, 0xe5, 0x85, 0xb8, 0xd8, 0x78, 0x18, 0x2, 0x62, 0xc2, 0xa2, 0x9f, 0xff, 0x5f, 0x3f, + 0x6b, 0xb, 0xab, 0xcb, 0xf6, 0x96, 0x36, 0x56, 0x4c, 0x2c, 0x8c, 0xec, 0xd1, 0xb1, 0x11, 0x71, + 0xb9, 0xd9, 0x79, 0x19, 0x24, 0x44, 0xe4, 0x84, 0x9e, 0xfe, 0x5e, 0x3e, 0x3, 0x63, 0xc3, 0xa3, + 0xf7, 0x97, 0x37, 0x57, 0x6a, 0xa, 0xaa, 0xca, 0xd0, 0xb0, 0x10, 0x70, 0x4d, 0x2d, 0x8d, 0xed, + 0x4a, 0x2a, 0x8a, 0xea, 0xd7, 0xb7, 0x17, 0x77, 0x6d, 0xd, 0xad, 0xcd, 0xf0, 0x90, 0x30, 0x50, + 0x4, 0x64, 0xc4, 0xa4, 0x99, 0xf9, 0x59, 0x39, 0x23, 0x43, 0xe3, 0x83, 0xbe, 0xde, 0x7e, 0x1e, + 0xd6, 0xb6, 0x16, 0x76, 0x4b, 0x2b, 0x8b, 0xeb, 0xf1, 0x91, 0x31, 0x51, 0x6c, 0xc, 0xac, 0xcc, + 0x98, 0xf8, 0x58, 0x38, 0x5, 0x65, 0xc5, 0xa5, 0xbf, 0xdf, 0x7f, 0x1f, 0x22, 0x42, 0xe2, 0x82, + 0x6f, 0xf, 0xaf, 0xcf, 0xf2, 0x92, 0x32, 0x52, 0x48, 0x28, 0x88, 0xe8, 0xd5, 0xb5, 0x15, 0x75, + 0x21, 0x41, 0xe1, 0x81, 0xbc, 0xdc, 0x7c, 0x1c, 0x6, 0x66, 0xc6, 0xa6, 0x9b, 0xfb, 0x5b, 0x3b, + 0xf3, 0x93, 0x33, 0x53, 0x6e, 0xe, 0xae, 0xce, 0xd4, 0xb4, 0x14, 0x74, 0x49, 0x29, 0x89, 0xe9, + 0xbd, 0xdd, 0x7d, 0x1d, 0x20, 0x40, 0xe0, 0x80, 0x9a, 0xfa, 0x5a, 0x3a, 0x7, 0x67, 0xc7, 0xa7, + ], + [ + 0x0, 0x61, 0xc2, 0xa3, 0x99, 0xf8, 0x5b, 0x3a, 0x2f, 0x4e, 0xed, 0x8c, 0xb6, 0xd7, 0x74, 0x15, + 0x5e, 0x3f, 0x9c, 0xfd, 0xc7, 0xa6, 0x5, 0x64, 0x71, 0x10, 0xb3, 0xd2, 0xe8, 0x89, 0x2a, 0x4b, + 0xbc, 0xdd, 0x7e, 0x1f, 0x25, 0x44, 0xe7, 0x86, 0x93, 0xf2, 0x51, 0x30, 0xa, 0x6b, 0xc8, 0xa9, + 0xe2, 0x83, 0x20, 0x41, 0x7b, 0x1a, 0xb9, 0xd8, 0xcd, 0xac, 0xf, 0x6e, 0x54, 0x35, 0x96, 0xf7, + 0x65, 0x4, 0xa7, 0xc6, 0xfc, 0x9d, 0x3e, 0x5f, 0x4a, 0x2b, 0x88, 0xe9, 0xd3, 0xb2, 0x11, 0x70, + 0x3b, 0x5a, 0xf9, 0x98, 0xa2, 0xc3, 0x60, 0x1, 0x14, 0x75, 0xd6, 0xb7, 0x8d, 0xec, 0x4f, 0x2e, + 0xd9, 0xb8, 0x1b, 0x7a, 0x40, 0x21, 0x82, 0xe3, 0xf6, 0x97, 0x34, 0x55, 0x6f, 0xe, 0xad, 0xcc, + 0x87, 0xe6, 0x45, 0x24, 0x1e, 0x7f, 0xdc, 0xbd, 0xa8, 0xc9, 0x6a, 0xb, 0x31, 0x50, 0xf3, 0x92, + 0xca, 0xab, 0x8, 0x69, 0x53, 0x32, 0x91, 0xf0, 0xe5, 0x84, 0x27, 0x46, 0x7c, 0x1d, 0xbe, 0xdf, + 0x94, 0xf5, 0x56, 0x37, 0xd, 0x6c, 0xcf, 0xae, 0xbb, 0xda, 0x79, 0x18, 0x22, 0x43, 0xe0, 0x81, + 0x76, 0x17, 0xb4, 0xd5, 0xef, 0x8e, 0x2d, 0x4c, 0x59, 0x38, 0x9b, 0xfa, 0xc0, 0xa1, 0x2, 0x63, + 0x28, 0x49, 0xea, 0x8b, 0xb1, 0xd0, 0x73, 0x12, 0x7, 0x66, 0xc5, 0xa4, 0x9e, 0xff, 0x5c, 0x3d, + 0xaf, 0xce, 0x6d, 0xc, 0x36, 0x57, 0xf4, 0x95, 0x80, 0xe1, 0x42, 0x23, 0x19, 0x78, 0xdb, 0xba, + 0xf1, 0x90, 0x33, 0x52, 0x68, 0x9, 0xaa, 0xcb, 0xde, 0xbf, 0x1c, 0x7d, 0x47, 0x26, 0x85, 0xe4, + 0x13, 0x72, 0xd1, 0xb0, 0x8a, 0xeb, 0x48, 0x29, 0x3c, 0x5d, 0xfe, 0x9f, 0xa5, 0xc4, 0x67, 0x6, + 0x4d, 0x2c, 0x8f, 0xee, 0xd4, 0xb5, 0x16, 0x77, 0x62, 0x3, 0xa0, 0xc1, 0xfb, 0x9a, 0x39, 0x58, + ], + [ + 0x0, 0x62, 0xc4, 0xa6, 0x95, 0xf7, 0x51, 0x33, 0x37, 0x55, 0xf3, 0x91, 0xa2, 0xc0, 0x66, 0x4, + 0x6e, 0xc, 0xaa, 0xc8, 0xfb, 0x99, 0x3f, 0x5d, 0x59, 0x3b, 0x9d, 0xff, 0xcc, 0xae, 0x8, 0x6a, + 0xdc, 0xbe, 0x18, 0x7a, 0x49, 0x2b, 0x8d, 0xef, 0xeb, 0x89, 0x2f, 0x4d, 0x7e, 0x1c, 0xba, 0xd8, + 0xb2, 0xd0, 0x76, 0x14, 0x27, 0x45, 0xe3, 0x81, 0x85, 0xe7, 0x41, 0x23, 0x10, 0x72, 0xd4, 0xb6, + 0xa5, 0xc7, 0x61, 0x3, 0x30, 0x52, 0xf4, 0x96, 0x92, 0xf0, 0x56, 0x34, 0x7, 0x65, 0xc3, 0xa1, + 0xcb, 0xa9, 0xf, 0x6d, 0x5e, 0x3c, 0x9a, 0xf8, 0xfc, 0x9e, 0x38, 0x5a, 0x69, 0xb, 0xad, 0xcf, + 0x79, 0x1b, 0xbd, 0xdf, 0xec, 0x8e, 0x28, 0x4a, 0x4e, 0x2c, 0x8a, 0xe8, 0xdb, 0xb9, 0x1f, 0x7d, + 0x17, 0x75, 0xd3, 0xb1, 0x82, 0xe0, 0x46, 0x24, 0x20, 0x42, 0xe4, 0x86, 0xb5, 0xd7, 0x71, 0x13, + 0x57, 0x35, 0x93, 0xf1, 0xc2, 0xa0, 0x6, 0x64, 0x60, 0x2, 0xa4, 0xc6, 0xf5, 0x97, 0x31, 0x53, + 0x39, 0x5b, 0xfd, 0x9f, 0xac, 0xce, 0x68, 0xa, 0xe, 0x6c, 0xca, 0xa8, 0x9b, 0xf9, 0x5f, 0x3d, + 0x8b, 0xe9, 0x4f, 0x2d, 0x1e, 0x7c, 0xda, 0xb8, 0xbc, 0xde, 0x78, 0x1a, 0x29, 0x4b, 0xed, 0x8f, + 0xe5, 0x87, 0x21, 0x43, 0x70, 0x12, 0xb4, 0xd6, 0xd2, 0xb0, 0x16, 0x74, 0x47, 0x25, 0x83, 0xe1, + 0xf2, 0x90, 0x36, 0x54, 0x67, 0x5, 0xa3, 0xc1, 0xc5, 0xa7, 0x1, 0x63, 0x50, 0x32, 0x94, 0xf6, + 0x9c, 0xfe, 0x58, 0x3a, 0x9, 0x6b, 0xcd, 0xaf, 0xab, 0xc9, 0x6f, 0xd, 0x3e, 0x5c, 0xfa, 0x98, + 0x2e, 0x4c, 0xea, 0x88, 0xbb, 0xd9, 0x7f, 0x1d, 0x19, 0x7b, 0xdd, 0xbf, 0x8c, 0xee, 0x48, 0x2a, + 0x40, 0x22, 0x84, 0xe6, 0xd5, 0xb7, 0x11, 0x73, 0x77, 0x15, 0xb3, 0xd1, 0xe2, 0x80, 0x26, 0x44, + ], + [ + 0x0, 0x63, 0xc6, 0xa5, 0x91, 0xf2, 0x57, 0x34, 0x3f, 0x5c, 0xf9, 0x9a, 0xae, 0xcd, 0x68, 0xb, + 0x7e, 0x1d, 0xb8, 0xdb, 0xef, 0x8c, 0x29, 0x4a, 0x41, 0x22, 0x87, 0xe4, 0xd0, 0xb3, 0x16, 0x75, + 0xfc, 0x9f, 0x3a, 0x59, 0x6d, 0xe, 0xab, 0xc8, 0xc3, 0xa0, 0x5, 0x66, 0x52, 0x31, 0x94, 0xf7, + 0x82, 0xe1, 0x44, 0x27, 0x13, 0x70, 0xd5, 0xb6, 0xbd, 0xde, 0x7b, 0x18, 0x2c, 0x4f, 0xea, 0x89, + 0xe5, 0x86, 0x23, 0x40, 0x74, 0x17, 0xb2, 0xd1, 0xda, 0xb9, 0x1c, 0x7f, 0x4b, 0x28, 0x8d, 0xee, + 0x9b, 0xf8, 0x5d, 0x3e, 0xa, 0x69, 0xcc, 0xaf, 0xa4, 0xc7, 0x62, 0x1, 0x35, 0x56, 0xf3, 0x90, + 0x19, 0x7a, 0xdf, 0xbc, 0x88, 0xeb, 0x4e, 0x2d, 0x26, 0x45, 0xe0, 0x83, 0xb7, 0xd4, 0x71, 0x12, + 0x67, 0x4, 0xa1, 0xc2, 0xf6, 0x95, 0x30, 0x53, 0x58, 0x3b, 0x9e, 0xfd, 0xc9, 0xaa, 0xf, 0x6c, + 0xd7, 0xb4, 0x11, 0x72, 0x46, 0x25, 0x80, 0xe3, 0xe8, 0x8b, 0x2e, 0x4d, 0x79, 0x1a, 0xbf, 0xdc, + 0xa9, 0xca, 0x6f, 0xc, 0x38, 0x5b, 0xfe, 0x9d, 0x96, 0xf5, 0x50, 0x33, 0x7, 0x64, 0xc1, 0xa2, + 0x2b, 0x48, 0xed, 0x8e, 0xba, 0xd9, 0x7c, 0x1f, 0x14, 0x77, 0xd2, 0xb1, 0x85, 0xe6, 0x43, 0x20, + 0x55, 0x36, 0x93, 0xf0, 0xc4, 0xa7, 0x2, 0x61, 0x6a, 0x9, 0xac, 0xcf, 0xfb, 0x98, 0x3d, 0x5e, + 0x32, 0x51, 0xf4, 0x97, 0xa3, 0xc0, 0x65, 0x6, 0xd, 0x6e, 0xcb, 0xa8, 0x9c, 0xff, 0x5a, 0x39, + 0x4c, 0x2f, 0x8a, 0xe9, 0xdd, 0xbe, 0x1b, 0x78, 0x73, 0x10, 0xb5, 0xd6, 0xe2, 0x81, 0x24, 0x47, + 0xce, 0xad, 0x8, 0x6b, 0x5f, 0x3c, 0x99, 0xfa, 0xf1, 0x92, 0x37, 0x54, 0x60, 0x3, 0xa6, 0xc5, + 0xb0, 0xd3, 0x76, 0x15, 0x21, 0x42, 0xe7, 0x84, 0x8f, 0xec, 0x49, 0x2a, 0x1e, 0x7d, 0xd8, 0xbb, + ], + [ + 0x0, 0x64, 0xc8, 0xac, 0x8d, 0xe9, 0x45, 0x21, 0x7, 0x63, 0xcf, 0xab, 0x8a, 0xee, 0x42, 0x26, + 0xe, 0x6a, 0xc6, 0xa2, 0x83, 0xe7, 0x4b, 0x2f, 0x9, 0x6d, 0xc1, 0xa5, 0x84, 0xe0, 0x4c, 0x28, + 0x1c, 0x78, 0xd4, 0xb0, 0x91, 0xf5, 0x59, 0x3d, 0x1b, 0x7f, 0xd3, 0xb7, 0x96, 0xf2, 0x5e, 0x3a, + 0x12, 0x76, 0xda, 0xbe, 0x9f, 0xfb, 0x57, 0x33, 0x15, 0x71, 0xdd, 0xb9, 0x98, 0xfc, 0x50, 0x34, + 0x38, 0x5c, 0xf0, 0x94, 0xb5, 0xd1, 0x7d, 0x19, 0x3f, 0x5b, 0xf7, 0x93, 0xb2, 0xd6, 0x7a, 0x1e, + 0x36, 0x52, 0xfe, 0x9a, 0xbb, 0xdf, 0x73, 0x17, 0x31, 0x55, 0xf9, 0x9d, 0xbc, 0xd8, 0x74, 0x10, + 0x24, 0x40, 0xec, 0x88, 0xa9, 0xcd, 0x61, 0x5, 0x23, 0x47, 0xeb, 0x8f, 0xae, 0xca, 0x66, 0x2, + 0x2a, 0x4e, 0xe2, 0x86, 0xa7, 0xc3, 0x6f, 0xb, 0x2d, 0x49, 0xe5, 0x81, 0xa0, 0xc4, 0x68, 0xc, + 0x70, 0x14, 0xb8, 0xdc, 0xfd, 0x99, 0x35, 0x51, 0x77, 0x13, 0xbf, 0xdb, 0xfa, 0x9e, 0x32, 0x56, + 0x7e, 0x1a, 0xb6, 0xd2, 0xf3, 0x97, 0x3b, 0x5f, 0x79, 0x1d, 0xb1, 0xd5, 0xf4, 0x90, 0x3c, 0x58, + 0x6c, 0x8, 0xa4, 0xc0, 0xe1, 0x85, 0x29, 0x4d, 0x6b, 0xf, 0xa3, 0xc7, 0xe6, 0x82, 0x2e, 0x4a, + 0x62, 0x6, 0xaa, 0xce, 0xef, 0x8b, 0x27, 0x43, 0x65, 0x1, 0xad, 0xc9, 0xe8, 0x8c, 0x20, 0x44, + 0x48, 0x2c, 0x80, 0xe4, 0xc5, 0xa1, 0xd, 0x69, 0x4f, 0x2b, 0x87, 0xe3, 0xc2, 0xa6, 0xa, 0x6e, + 0x46, 0x22, 0x8e, 0xea, 0xcb, 0xaf, 0x3, 0x67, 0x41, 0x25, 0x89, 0xed, 0xcc, 0xa8, 0x4, 0x60, + 0x54, 0x30, 0x9c, 0xf8, 0xd9, 0xbd, 0x11, 0x75, 0x53, 0x37, 0x9b, 0xff, 0xde, 0xba, 0x16, 0x72, + 0x5a, 0x3e, 0x92, 0xf6, 0xd7, 0xb3, 0x1f, 0x7b, 0x5d, 0x39, 0x95, 0xf1, 0xd0, 0xb4, 0x18, 0x7c, + ], + [ + 0x0, 0x65, 0xca, 0xaf, 0x89, 0xec, 0x43, 0x26, 0xf, 0x6a, 0xc5, 0xa0, 0x86, 0xe3, 0x4c, 0x29, + 0x1e, 0x7b, 0xd4, 0xb1, 0x97, 0xf2, 0x5d, 0x38, 0x11, 0x74, 0xdb, 0xbe, 0x98, 0xfd, 0x52, 0x37, + 0x3c, 0x59, 0xf6, 0x93, 0xb5, 0xd0, 0x7f, 0x1a, 0x33, 0x56, 0xf9, 0x9c, 0xba, 0xdf, 0x70, 0x15, + 0x22, 0x47, 0xe8, 0x8d, 0xab, 0xce, 0x61, 0x4, 0x2d, 0x48, 0xe7, 0x82, 0xa4, 0xc1, 0x6e, 0xb, + 0x78, 0x1d, 0xb2, 0xd7, 0xf1, 0x94, 0x3b, 0x5e, 0x77, 0x12, 0xbd, 0xd8, 0xfe, 0x9b, 0x34, 0x51, + 0x66, 0x3, 0xac, 0xc9, 0xef, 0x8a, 0x25, 0x40, 0x69, 0xc, 0xa3, 0xc6, 0xe0, 0x85, 0x2a, 0x4f, + 0x44, 0x21, 0x8e, 0xeb, 0xcd, 0xa8, 0x7, 0x62, 0x4b, 0x2e, 0x81, 0xe4, 0xc2, 0xa7, 0x8, 0x6d, + 0x5a, 0x3f, 0x90, 0xf5, 0xd3, 0xb6, 0x19, 0x7c, 0x55, 0x30, 0x9f, 0xfa, 0xdc, 0xb9, 0x16, 0x73, + 0xf0, 0x95, 0x3a, 0x5f, 0x79, 0x1c, 0xb3, 0xd6, 0xff, 0x9a, 0x35, 0x50, 0x76, 0x13, 0xbc, 0xd9, + 0xee, 0x8b, 0x24, 0x41, 0x67, 0x2, 0xad, 0xc8, 0xe1, 0x84, 0x2b, 0x4e, 0x68, 0xd, 0xa2, 0xc7, + 0xcc, 0xa9, 0x6, 0x63, 0x45, 0x20, 0x8f, 0xea, 0xc3, 0xa6, 0x9, 0x6c, 0x4a, 0x2f, 0x80, 0xe5, + 0xd2, 0xb7, 0x18, 0x7d, 0x5b, 0x3e, 0x91, 0xf4, 0xdd, 0xb8, 0x17, 0x72, 0x54, 0x31, 0x9e, 0xfb, + 0x88, 0xed, 0x42, 0x27, 0x1, 0x64, 0xcb, 0xae, 0x87, 0xe2, 0x4d, 0x28, 0xe, 0x6b, 0xc4, 0xa1, + 0x96, 0xf3, 0x5c, 0x39, 0x1f, 0x7a, 0xd5, 0xb0, 0x99, 0xfc, 0x53, 0x36, 0x10, 0x75, 0xda, 0xbf, + 0xb4, 0xd1, 0x7e, 0x1b, 0x3d, 0x58, 0xf7, 0x92, 0xbb, 0xde, 0x71, 0x14, 0x32, 0x57, 0xf8, 0x9d, + 0xaa, 0xcf, 0x60, 0x5, 0x23, 0x46, 0xe9, 0x8c, 0xa5, 0xc0, 0x6f, 0xa, 0x2c, 0x49, 0xe6, 0x83, + ], + [ + 0x0, 0x66, 0xcc, 0xaa, 0x85, 0xe3, 0x49, 0x2f, 0x17, 0x71, 0xdb, 0xbd, 0x92, 0xf4, 0x5e, 0x38, + 0x2e, 0x48, 0xe2, 0x84, 0xab, 0xcd, 0x67, 0x1, 0x39, 0x5f, 0xf5, 0x93, 0xbc, 0xda, 0x70, 0x16, + 0x5c, 0x3a, 0x90, 0xf6, 0xd9, 0xbf, 0x15, 0x73, 0x4b, 0x2d, 0x87, 0xe1, 0xce, 0xa8, 0x2, 0x64, + 0x72, 0x14, 0xbe, 0xd8, 0xf7, 0x91, 0x3b, 0x5d, 0x65, 0x3, 0xa9, 0xcf, 0xe0, 0x86, 0x2c, 0x4a, + 0xb8, 0xde, 0x74, 0x12, 0x3d, 0x5b, 0xf1, 0x97, 0xaf, 0xc9, 0x63, 0x5, 0x2a, 0x4c, 0xe6, 0x80, + 0x96, 0xf0, 0x5a, 0x3c, 0x13, 0x75, 0xdf, 0xb9, 0x81, 0xe7, 0x4d, 0x2b, 0x4, 0x62, 0xc8, 0xae, + 0xe4, 0x82, 0x28, 0x4e, 0x61, 0x7, 0xad, 0xcb, 0xf3, 0x95, 0x3f, 0x59, 0x76, 0x10, 0xba, 0xdc, + 0xca, 0xac, 0x6, 0x60, 0x4f, 0x29, 0x83, 0xe5, 0xdd, 0xbb, 0x11, 0x77, 0x58, 0x3e, 0x94, 0xf2, + 0x6d, 0xb, 0xa1, 0xc7, 0xe8, 0x8e, 0x24, 0x42, 0x7a, 0x1c, 0xb6, 0xd0, 0xff, 0x99, 0x33, 0x55, + 0x43, 0x25, 0x8f, 0xe9, 0xc6, 0xa0, 0xa, 0x6c, 0x54, 0x32, 0x98, 0xfe, 0xd1, 0xb7, 0x1d, 0x7b, + 0x31, 0x57, 0xfd, 0x9b, 0xb4, 0xd2, 0x78, 0x1e, 0x26, 0x40, 0xea, 0x8c, 0xa3, 0xc5, 0x6f, 0x9, + 0x1f, 0x79, 0xd3, 0xb5, 0x9a, 0xfc, 0x56, 0x30, 0x8, 0x6e, 0xc4, 0xa2, 0x8d, 0xeb, 0x41, 0x27, + 0xd5, 0xb3, 0x19, 0x7f, 0x50, 0x36, 0x9c, 0xfa, 0xc2, 0xa4, 0xe, 0x68, 0x47, 0x21, 0x8b, 0xed, + 0xfb, 0x9d, 0x37, 0x51, 0x7e, 0x18, 0xb2, 0xd4, 0xec, 0x8a, 0x20, 0x46, 0x69, 0xf, 0xa5, 0xc3, + 0x89, 0xef, 0x45, 0x23, 0xc, 0x6a, 0xc0, 0xa6, 0x9e, 0xf8, 0x52, 0x34, 0x1b, 0x7d, 0xd7, 0xb1, + 0xa7, 0xc1, 0x6b, 0xd, 0x22, 0x44, 0xee, 0x88, 0xb0, 0xd6, 0x7c, 0x1a, 0x35, 0x53, 0xf9, 0x9f, + ], + [ + 0x0, 0x67, 0xce, 0xa9, 0x81, 0xe6, 0x4f, 0x28, 0x1f, 0x78, 0xd1, 0xb6, 0x9e, 0xf9, 0x50, 0x37, + 0x3e, 0x59, 0xf0, 0x97, 0xbf, 0xd8, 0x71, 0x16, 0x21, 0x46, 0xef, 0x88, 0xa0, 0xc7, 0x6e, 0x9, + 0x7c, 0x1b, 0xb2, 0xd5, 0xfd, 0x9a, 0x33, 0x54, 0x63, 0x4, 0xad, 0xca, 0xe2, 0x85, 0x2c, 0x4b, + 0x42, 0x25, 0x8c, 0xeb, 0xc3, 0xa4, 0xd, 0x6a, 0x5d, 0x3a, 0x93, 0xf4, 0xdc, 0xbb, 0x12, 0x75, + 0xf8, 0x9f, 0x36, 0x51, 0x79, 0x1e, 0xb7, 0xd0, 0xe7, 0x80, 0x29, 0x4e, 0x66, 0x1, 0xa8, 0xcf, + 0xc6, 0xa1, 0x8, 0x6f, 0x47, 0x20, 0x89, 0xee, 0xd9, 0xbe, 0x17, 0x70, 0x58, 0x3f, 0x96, 0xf1, + 0x84, 0xe3, 0x4a, 0x2d, 0x5, 0x62, 0xcb, 0xac, 0x9b, 0xfc, 0x55, 0x32, 0x1a, 0x7d, 0xd4, 0xb3, + 0xba, 0xdd, 0x74, 0x13, 0x3b, 0x5c, 0xf5, 0x92, 0xa5, 0xc2, 0x6b, 0xc, 0x24, 0x43, 0xea, 0x8d, + 0xed, 0x8a, 0x23, 0x44, 0x6c, 0xb, 0xa2, 0xc5, 0xf2, 0x95, 0x3c, 0x5b, 0x73, 0x14, 0xbd, 0xda, + 0xd3, 0xb4, 0x1d, 0x7a, 0x52, 0x35, 0x9c, 0xfb, 0xcc, 0xab, 0x2, 0x65, 0x4d, 0x2a, 0x83, 0xe4, + 0x91, 0xf6, 0x5f, 0x38, 0x10, 0x77, 0xde, 0xb9, 0x8e, 0xe9, 0x40, 0x27, 0xf, 0x68, 0xc1, 0xa6, + 0xaf, 0xc8, 0x61, 0x6, 0x2e, 0x49, 0xe0, 0x87, 0xb0, 0xd7, 0x7e, 0x19, 0x31, 0x56, 0xff, 0x98, + 0x15, 0x72, 0xdb, 0xbc, 0x94, 0xf3, 0x5a, 0x3d, 0xa, 0x6d, 0xc4, 0xa3, 0x8b, 0xec, 0x45, 0x22, + 0x2b, 0x4c, 0xe5, 0x82, 0xaa, 0xcd, 0x64, 0x3, 0x34, 0x53, 0xfa, 0x9d, 0xb5, 0xd2, 0x7b, 0x1c, + 0x69, 0xe, 0xa7, 0xc0, 0xe8, 0x8f, 0x26, 0x41, 0x76, 0x11, 0xb8, 0xdf, 0xf7, 0x90, 0x39, 0x5e, + 0x57, 0x30, 0x99, 0xfe, 0xd6, 0xb1, 0x18, 0x7f, 0x48, 0x2f, 0x86, 0xe1, 0xc9, 0xae, 0x7, 0x60, + ], + [ + 0x0, 0x68, 0xd0, 0xb8, 0xbd, 0xd5, 0x6d, 0x5, 0x67, 0xf, 0xb7, 0xdf, 0xda, 0xb2, 0xa, 0x62, + 0xce, 0xa6, 0x1e, 0x76, 0x73, 0x1b, 0xa3, 0xcb, 0xa9, 0xc1, 0x79, 0x11, 0x14, 0x7c, 0xc4, 0xac, + 0x81, 0xe9, 0x51, 0x39, 0x3c, 0x54, 0xec, 0x84, 0xe6, 0x8e, 0x36, 0x5e, 0x5b, 0x33, 0x8b, 0xe3, + 0x4f, 0x27, 0x9f, 0xf7, 0xf2, 0x9a, 0x22, 0x4a, 0x28, 0x40, 0xf8, 0x90, 0x95, 0xfd, 0x45, 0x2d, + 0x1f, 0x77, 0xcf, 0xa7, 0xa2, 0xca, 0x72, 0x1a, 0x78, 0x10, 0xa8, 0xc0, 0xc5, 0xad, 0x15, 0x7d, + 0xd1, 0xb9, 0x1, 0x69, 0x6c, 0x4, 0xbc, 0xd4, 0xb6, 0xde, 0x66, 0xe, 0xb, 0x63, 0xdb, 0xb3, + 0x9e, 0xf6, 0x4e, 0x26, 0x23, 0x4b, 0xf3, 0x9b, 0xf9, 0x91, 0x29, 0x41, 0x44, 0x2c, 0x94, 0xfc, + 0x50, 0x38, 0x80, 0xe8, 0xed, 0x85, 0x3d, 0x55, 0x37, 0x5f, 0xe7, 0x8f, 0x8a, 0xe2, 0x5a, 0x32, + 0x3e, 0x56, 0xee, 0x86, 0x83, 0xeb, 0x53, 0x3b, 0x59, 0x31, 0x89, 0xe1, 0xe4, 0x8c, 0x34, 0x5c, + 0xf0, 0x98, 0x20, 0x48, 0x4d, 0x25, 0x9d, 0xf5, 0x97, 0xff, 0x47, 0x2f, 0x2a, 0x42, 0xfa, 0x92, + 0xbf, 0xd7, 0x6f, 0x7, 0x2, 0x6a, 0xd2, 0xba, 0xd8, 0xb0, 0x8, 0x60, 0x65, 0xd, 0xb5, 0xdd, + 0x71, 0x19, 0xa1, 0xc9, 0xcc, 0xa4, 0x1c, 0x74, 0x16, 0x7e, 0xc6, 0xae, 0xab, 0xc3, 0x7b, 0x13, + 0x21, 0x49, 0xf1, 0x99, 0x9c, 0xf4, 0x4c, 0x24, 0x46, 0x2e, 0x96, 0xfe, 0xfb, 0x93, 0x2b, 0x43, + 0xef, 0x87, 0x3f, 0x57, 0x52, 0x3a, 0x82, 0xea, 0x88, 0xe0, 0x58, 0x30, 0x35, 0x5d, 0xe5, 0x8d, + 0xa0, 0xc8, 0x70, 0x18, 0x1d, 0x75, 0xcd, 0xa5, 0xc7, 0xaf, 0x17, 0x7f, 0x7a, 0x12, 0xaa, 0xc2, + 0x6e, 0x6, 0xbe, 0xd6, 0xd3, 0xbb, 0x3, 0x6b, 0x9, 0x61, 0xd9, 0xb1, 0xb4, 0xdc, 0x64, 0xc, + ], + [ + 0x0, 0x69, 0xd2, 0xbb, 0xb9, 0xd0, 0x6b, 0x2, 0x6f, 0x6, 0xbd, 0xd4, 0xd6, 0xbf, 0x4, 0x6d, + 0xde, 0xb7, 0xc, 0x65, 0x67, 0xe, 0xb5, 0xdc, 0xb1, 0xd8, 0x63, 0xa, 0x8, 0x61, 0xda, 0xb3, + 0xa1, 0xc8, 0x73, 0x1a, 0x18, 0x71, 0xca, 0xa3, 0xce, 0xa7, 0x1c, 0x75, 0x77, 0x1e, 0xa5, 0xcc, + 0x7f, 0x16, 0xad, 0xc4, 0xc6, 0xaf, 0x14, 0x7d, 0x10, 0x79, 0xc2, 0xab, 0xa9, 0xc0, 0x7b, 0x12, + 0x5f, 0x36, 0x8d, 0xe4, 0xe6, 0x8f, 0x34, 0x5d, 0x30, 0x59, 0xe2, 0x8b, 0x89, 0xe0, 0x5b, 0x32, + 0x81, 0xe8, 0x53, 0x3a, 0x38, 0x51, 0xea, 0x83, 0xee, 0x87, 0x3c, 0x55, 0x57, 0x3e, 0x85, 0xec, + 0xfe, 0x97, 0x2c, 0x45, 0x47, 0x2e, 0x95, 0xfc, 0x91, 0xf8, 0x43, 0x2a, 0x28, 0x41, 0xfa, 0x93, + 0x20, 0x49, 0xf2, 0x9b, 0x99, 0xf0, 0x4b, 0x22, 0x4f, 0x26, 0x9d, 0xf4, 0xf6, 0x9f, 0x24, 0x4d, + 0xbe, 0xd7, 0x6c, 0x5, 0x7, 0x6e, 0xd5, 0xbc, 0xd1, 0xb8, 0x3, 0x6a, 0x68, 0x1, 0xba, 0xd3, + 0x60, 0x9, 0xb2, 0xdb, 0xd9, 0xb0, 0xb, 0x62, 0xf, 0x66, 0xdd, 0xb4, 0xb6, 0xdf, 0x64, 0xd, + 0x1f, 0x76, 0xcd, 0xa4, 0xa6, 0xcf, 0x74, 0x1d, 0x70, 0x19, 0xa2, 0xcb, 0xc9, 0xa0, 0x1b, 0x72, + 0xc1, 0xa8, 0x13, 0x7a, 0x78, 0x11, 0xaa, 0xc3, 0xae, 0xc7, 0x7c, 0x15, 0x17, 0x7e, 0xc5, 0xac, + 0xe1, 0x88, 0x33, 0x5a, 0x58, 0x31, 0x8a, 0xe3, 0x8e, 0xe7, 0x5c, 0x35, 0x37, 0x5e, 0xe5, 0x8c, + 0x3f, 0x56, 0xed, 0x84, 0x86, 0xef, 0x54, 0x3d, 0x50, 0x39, 0x82, 0xeb, 0xe9, 0x80, 0x3b, 0x52, + 0x40, 0x29, 0x92, 0xfb, 0xf9, 0x90, 0x2b, 0x42, 0x2f, 0x46, 0xfd, 0x94, 0x96, 0xff, 0x44, 0x2d, + 0x9e, 0xf7, 0x4c, 0x25, 0x27, 0x4e, 0xf5, 0x9c, 0xf1, 0x98, 0x23, 0x4a, 0x48, 0x21, 0x9a, 0xf3, + ], + [ + 0x0, 0x6a, 0xd4, 0xbe, 0xb5, 0xdf, 0x61, 0xb, 0x77, 0x1d, 0xa3, 0xc9, 0xc2, 0xa8, 0x16, 0x7c, + 0xee, 0x84, 0x3a, 0x50, 0x5b, 0x31, 0x8f, 0xe5, 0x99, 0xf3, 0x4d, 0x27, 0x2c, 0x46, 0xf8, 0x92, + 0xc1, 0xab, 0x15, 0x7f, 0x74, 0x1e, 0xa0, 0xca, 0xb6, 0xdc, 0x62, 0x8, 0x3, 0x69, 0xd7, 0xbd, + 0x2f, 0x45, 0xfb, 0x91, 0x9a, 0xf0, 0x4e, 0x24, 0x58, 0x32, 0x8c, 0xe6, 0xed, 0x87, 0x39, 0x53, + 0x9f, 0xf5, 0x4b, 0x21, 0x2a, 0x40, 0xfe, 0x94, 0xe8, 0x82, 0x3c, 0x56, 0x5d, 0x37, 0x89, 0xe3, + 0x71, 0x1b, 0xa5, 0xcf, 0xc4, 0xae, 0x10, 0x7a, 0x6, 0x6c, 0xd2, 0xb8, 0xb3, 0xd9, 0x67, 0xd, + 0x5e, 0x34, 0x8a, 0xe0, 0xeb, 0x81, 0x3f, 0x55, 0x29, 0x43, 0xfd, 0x97, 0x9c, 0xf6, 0x48, 0x22, + 0xb0, 0xda, 0x64, 0xe, 0x5, 0x6f, 0xd1, 0xbb, 0xc7, 0xad, 0x13, 0x79, 0x72, 0x18, 0xa6, 0xcc, + 0x23, 0x49, 0xf7, 0x9d, 0x96, 0xfc, 0x42, 0x28, 0x54, 0x3e, 0x80, 0xea, 0xe1, 0x8b, 0x35, 0x5f, + 0xcd, 0xa7, 0x19, 0x73, 0x78, 0x12, 0xac, 0xc6, 0xba, 0xd0, 0x6e, 0x4, 0xf, 0x65, 0xdb, 0xb1, + 0xe2, 0x88, 0x36, 0x5c, 0x57, 0x3d, 0x83, 0xe9, 0x95, 0xff, 0x41, 0x2b, 0x20, 0x4a, 0xf4, 0x9e, + 0xc, 0x66, 0xd8, 0xb2, 0xb9, 0xd3, 0x6d, 0x7, 0x7b, 0x11, 0xaf, 0xc5, 0xce, 0xa4, 0x1a, 0x70, + 0xbc, 0xd6, 0x68, 0x2, 0x9, 0x63, 0xdd, 0xb7, 0xcb, 0xa1, 0x1f, 0x75, 0x7e, 0x14, 0xaa, 0xc0, + 0x52, 0x38, 0x86, 0xec, 0xe7, 0x8d, 0x33, 0x59, 0x25, 0x4f, 0xf1, 0x9b, 0x90, 0xfa, 0x44, 0x2e, + 0x7d, 0x17, 0xa9, 0xc3, 0xc8, 0xa2, 0x1c, 0x76, 0xa, 0x60, 0xde, 0xb4, 0xbf, 0xd5, 0x6b, 0x1, + 0x93, 0xf9, 0x47, 0x2d, 0x26, 0x4c, 0xf2, 0x98, 0xe4, 0x8e, 0x30, 0x5a, 0x51, 0x3b, 0x85, 0xef, + ], + [ + 0x0, 0x6b, 0xd6, 0xbd, 0xb1, 0xda, 0x67, 0xc, 0x7f, 0x14, 0xa9, 0xc2, 0xce, 0xa5, 0x18, 0x73, + 0xfe, 0x95, 0x28, 0x43, 0x4f, 0x24, 0x99, 0xf2, 0x81, 0xea, 0x57, 0x3c, 0x30, 0x5b, 0xe6, 0x8d, + 0xe1, 0x8a, 0x37, 0x5c, 0x50, 0x3b, 0x86, 0xed, 0x9e, 0xf5, 0x48, 0x23, 0x2f, 0x44, 0xf9, 0x92, + 0x1f, 0x74, 0xc9, 0xa2, 0xae, 0xc5, 0x78, 0x13, 0x60, 0xb, 0xb6, 0xdd, 0xd1, 0xba, 0x7, 0x6c, + 0xdf, 0xb4, 0x9, 0x62, 0x6e, 0x5, 0xb8, 0xd3, 0xa0, 0xcb, 0x76, 0x1d, 0x11, 0x7a, 0xc7, 0xac, + 0x21, 0x4a, 0xf7, 0x9c, 0x90, 0xfb, 0x46, 0x2d, 0x5e, 0x35, 0x88, 0xe3, 0xef, 0x84, 0x39, 0x52, + 0x3e, 0x55, 0xe8, 0x83, 0x8f, 0xe4, 0x59, 0x32, 0x41, 0x2a, 0x97, 0xfc, 0xf0, 0x9b, 0x26, 0x4d, + 0xc0, 0xab, 0x16, 0x7d, 0x71, 0x1a, 0xa7, 0xcc, 0xbf, 0xd4, 0x69, 0x2, 0xe, 0x65, 0xd8, 0xb3, + 0xa3, 0xc8, 0x75, 0x1e, 0x12, 0x79, 0xc4, 0xaf, 0xdc, 0xb7, 0xa, 0x61, 0x6d, 0x6, 0xbb, 0xd0, + 0x5d, 0x36, 0x8b, 0xe0, 0xec, 0x87, 0x3a, 0x51, 0x22, 0x49, 0xf4, 0x9f, 0x93, 0xf8, 0x45, 0x2e, + 0x42, 0x29, 0x94, 0xff, 0xf3, 0x98, 0x25, 0x4e, 0x3d, 0x56, 0xeb, 0x80, 0x8c, 0xe7, 0x5a, 0x31, + 0xbc, 0xd7, 0x6a, 0x1, 0xd, 0x66, 0xdb, 0xb0, 0xc3, 0xa8, 0x15, 0x7e, 0x72, 0x19, 0xa4, 0xcf, + 0x7c, 0x17, 0xaa, 0xc1, 0xcd, 0xa6, 0x1b, 0x70, 0x3, 0x68, 0xd5, 0xbe, 0xb2, 0xd9, 0x64, 0xf, + 0x82, 0xe9, 0x54, 0x3f, 0x33, 0x58, 0xe5, 0x8e, 0xfd, 0x96, 0x2b, 0x40, 0x4c, 0x27, 0x9a, 0xf1, + 0x9d, 0xf6, 0x4b, 0x20, 0x2c, 0x47, 0xfa, 0x91, 0xe2, 0x89, 0x34, 0x5f, 0x53, 0x38, 0x85, 0xee, + 0x63, 0x8, 0xb5, 0xde, 0xd2, 0xb9, 0x4, 0x6f, 0x1c, 0x77, 0xca, 0xa1, 0xad, 0xc6, 0x7b, 0x10, + ], + [ + 0x0, 0x6c, 0xd8, 0xb4, 0xad, 0xc1, 0x75, 0x19, 0x47, 0x2b, 0x9f, 0xf3, 0xea, 0x86, 0x32, 0x5e, + 0x8e, 0xe2, 0x56, 0x3a, 0x23, 0x4f, 0xfb, 0x97, 0xc9, 0xa5, 0x11, 0x7d, 0x64, 0x8, 0xbc, 0xd0, + 0x1, 0x6d, 0xd9, 0xb5, 0xac, 0xc0, 0x74, 0x18, 0x46, 0x2a, 0x9e, 0xf2, 0xeb, 0x87, 0x33, 0x5f, + 0x8f, 0xe3, 0x57, 0x3b, 0x22, 0x4e, 0xfa, 0x96, 0xc8, 0xa4, 0x10, 0x7c, 0x65, 0x9, 0xbd, 0xd1, + 0x2, 0x6e, 0xda, 0xb6, 0xaf, 0xc3, 0x77, 0x1b, 0x45, 0x29, 0x9d, 0xf1, 0xe8, 0x84, 0x30, 0x5c, + 0x8c, 0xe0, 0x54, 0x38, 0x21, 0x4d, 0xf9, 0x95, 0xcb, 0xa7, 0x13, 0x7f, 0x66, 0xa, 0xbe, 0xd2, + 0x3, 0x6f, 0xdb, 0xb7, 0xae, 0xc2, 0x76, 0x1a, 0x44, 0x28, 0x9c, 0xf0, 0xe9, 0x85, 0x31, 0x5d, + 0x8d, 0xe1, 0x55, 0x39, 0x20, 0x4c, 0xf8, 0x94, 0xca, 0xa6, 0x12, 0x7e, 0x67, 0xb, 0xbf, 0xd3, + 0x4, 0x68, 0xdc, 0xb0, 0xa9, 0xc5, 0x71, 0x1d, 0x43, 0x2f, 0x9b, 0xf7, 0xee, 0x82, 0x36, 0x5a, + 0x8a, 0xe6, 0x52, 0x3e, 0x27, 0x4b, 0xff, 0x93, 0xcd, 0xa1, 0x15, 0x79, 0x60, 0xc, 0xb8, 0xd4, + 0x5, 0x69, 0xdd, 0xb1, 0xa8, 0xc4, 0x70, 0x1c, 0x42, 0x2e, 0x9a, 0xf6, 0xef, 0x83, 0x37, 0x5b, + 0x8b, 0xe7, 0x53, 0x3f, 0x26, 0x4a, 0xfe, 0x92, 0xcc, 0xa0, 0x14, 0x78, 0x61, 0xd, 0xb9, 0xd5, + 0x6, 0x6a, 0xde, 0xb2, 0xab, 0xc7, 0x73, 0x1f, 0x41, 0x2d, 0x99, 0xf5, 0xec, 0x80, 0x34, 0x58, + 0x88, 0xe4, 0x50, 0x3c, 0x25, 0x49, 0xfd, 0x91, 0xcf, 0xa3, 0x17, 0x7b, 0x62, 0xe, 0xba, 0xd6, + 0x7, 0x6b, 0xdf, 0xb3, 0xaa, 0xc6, 0x72, 0x1e, 0x40, 0x2c, 0x98, 0xf4, 0xed, 0x81, 0x35, 0x59, + 0x89, 0xe5, 0x51, 0x3d, 0x24, 0x48, 0xfc, 0x90, 0xce, 0xa2, 0x16, 0x7a, 0x63, 0xf, 0xbb, 0xd7, + ], + [ + 0x0, 0x6d, 0xda, 0xb7, 0xa9, 0xc4, 0x73, 0x1e, 0x4f, 0x22, 0x95, 0xf8, 0xe6, 0x8b, 0x3c, 0x51, + 0x9e, 0xf3, 0x44, 0x29, 0x37, 0x5a, 0xed, 0x80, 0xd1, 0xbc, 0xb, 0x66, 0x78, 0x15, 0xa2, 0xcf, + 0x21, 0x4c, 0xfb, 0x96, 0x88, 0xe5, 0x52, 0x3f, 0x6e, 0x3, 0xb4, 0xd9, 0xc7, 0xaa, 0x1d, 0x70, + 0xbf, 0xd2, 0x65, 0x8, 0x16, 0x7b, 0xcc, 0xa1, 0xf0, 0x9d, 0x2a, 0x47, 0x59, 0x34, 0x83, 0xee, + 0x42, 0x2f, 0x98, 0xf5, 0xeb, 0x86, 0x31, 0x5c, 0xd, 0x60, 0xd7, 0xba, 0xa4, 0xc9, 0x7e, 0x13, + 0xdc, 0xb1, 0x6, 0x6b, 0x75, 0x18, 0xaf, 0xc2, 0x93, 0xfe, 0x49, 0x24, 0x3a, 0x57, 0xe0, 0x8d, + 0x63, 0xe, 0xb9, 0xd4, 0xca, 0xa7, 0x10, 0x7d, 0x2c, 0x41, 0xf6, 0x9b, 0x85, 0xe8, 0x5f, 0x32, + 0xfd, 0x90, 0x27, 0x4a, 0x54, 0x39, 0x8e, 0xe3, 0xb2, 0xdf, 0x68, 0x5, 0x1b, 0x76, 0xc1, 0xac, + 0x84, 0xe9, 0x5e, 0x33, 0x2d, 0x40, 0xf7, 0x9a, 0xcb, 0xa6, 0x11, 0x7c, 0x62, 0xf, 0xb8, 0xd5, + 0x1a, 0x77, 0xc0, 0xad, 0xb3, 0xde, 0x69, 0x4, 0x55, 0x38, 0x8f, 0xe2, 0xfc, 0x91, 0x26, 0x4b, + 0xa5, 0xc8, 0x7f, 0x12, 0xc, 0x61, 0xd6, 0xbb, 0xea, 0x87, 0x30, 0x5d, 0x43, 0x2e, 0x99, 0xf4, + 0x3b, 0x56, 0xe1, 0x8c, 0x92, 0xff, 0x48, 0x25, 0x74, 0x19, 0xae, 0xc3, 0xdd, 0xb0, 0x7, 0x6a, + 0xc6, 0xab, 0x1c, 0x71, 0x6f, 0x2, 0xb5, 0xd8, 0x89, 0xe4, 0x53, 0x3e, 0x20, 0x4d, 0xfa, 0x97, + 0x58, 0x35, 0x82, 0xef, 0xf1, 0x9c, 0x2b, 0x46, 0x17, 0x7a, 0xcd, 0xa0, 0xbe, 0xd3, 0x64, 0x9, + 0xe7, 0x8a, 0x3d, 0x50, 0x4e, 0x23, 0x94, 0xf9, 0xa8, 0xc5, 0x72, 0x1f, 0x1, 0x6c, 0xdb, 0xb6, + 0x79, 0x14, 0xa3, 0xce, 0xd0, 0xbd, 0xa, 0x67, 0x36, 0x5b, 0xec, 0x81, 0x9f, 0xf2, 0x45, 0x28, + ], + [ + 0x0, 0x6e, 0xdc, 0xb2, 0xa5, 0xcb, 0x79, 0x17, 0x57, 0x39, 0x8b, 0xe5, 0xf2, 0x9c, 0x2e, 0x40, + 0xae, 0xc0, 0x72, 0x1c, 0xb, 0x65, 0xd7, 0xb9, 0xf9, 0x97, 0x25, 0x4b, 0x5c, 0x32, 0x80, 0xee, + 0x41, 0x2f, 0x9d, 0xf3, 0xe4, 0x8a, 0x38, 0x56, 0x16, 0x78, 0xca, 0xa4, 0xb3, 0xdd, 0x6f, 0x1, + 0xef, 0x81, 0x33, 0x5d, 0x4a, 0x24, 0x96, 0xf8, 0xb8, 0xd6, 0x64, 0xa, 0x1d, 0x73, 0xc1, 0xaf, + 0x82, 0xec, 0x5e, 0x30, 0x27, 0x49, 0xfb, 0x95, 0xd5, 0xbb, 0x9, 0x67, 0x70, 0x1e, 0xac, 0xc2, + 0x2c, 0x42, 0xf0, 0x9e, 0x89, 0xe7, 0x55, 0x3b, 0x7b, 0x15, 0xa7, 0xc9, 0xde, 0xb0, 0x2, 0x6c, + 0xc3, 0xad, 0x1f, 0x71, 0x66, 0x8, 0xba, 0xd4, 0x94, 0xfa, 0x48, 0x26, 0x31, 0x5f, 0xed, 0x83, + 0x6d, 0x3, 0xb1, 0xdf, 0xc8, 0xa6, 0x14, 0x7a, 0x3a, 0x54, 0xe6, 0x88, 0x9f, 0xf1, 0x43, 0x2d, + 0x19, 0x77, 0xc5, 0xab, 0xbc, 0xd2, 0x60, 0xe, 0x4e, 0x20, 0x92, 0xfc, 0xeb, 0x85, 0x37, 0x59, + 0xb7, 0xd9, 0x6b, 0x5, 0x12, 0x7c, 0xce, 0xa0, 0xe0, 0x8e, 0x3c, 0x52, 0x45, 0x2b, 0x99, 0xf7, + 0x58, 0x36, 0x84, 0xea, 0xfd, 0x93, 0x21, 0x4f, 0xf, 0x61, 0xd3, 0xbd, 0xaa, 0xc4, 0x76, 0x18, + 0xf6, 0x98, 0x2a, 0x44, 0x53, 0x3d, 0x8f, 0xe1, 0xa1, 0xcf, 0x7d, 0x13, 0x4, 0x6a, 0xd8, 0xb6, + 0x9b, 0xf5, 0x47, 0x29, 0x3e, 0x50, 0xe2, 0x8c, 0xcc, 0xa2, 0x10, 0x7e, 0x69, 0x7, 0xb5, 0xdb, + 0x35, 0x5b, 0xe9, 0x87, 0x90, 0xfe, 0x4c, 0x22, 0x62, 0xc, 0xbe, 0xd0, 0xc7, 0xa9, 0x1b, 0x75, + 0xda, 0xb4, 0x6, 0x68, 0x7f, 0x11, 0xa3, 0xcd, 0x8d, 0xe3, 0x51, 0x3f, 0x28, 0x46, 0xf4, 0x9a, + 0x74, 0x1a, 0xa8, 0xc6, 0xd1, 0xbf, 0xd, 0x63, 0x23, 0x4d, 0xff, 0x91, 0x86, 0xe8, 0x5a, 0x34, + ], + [ + 0x0, 0x6f, 0xde, 0xb1, 0xa1, 0xce, 0x7f, 0x10, 0x5f, 0x30, 0x81, 0xee, 0xfe, 0x91, 0x20, 0x4f, + 0xbe, 0xd1, 0x60, 0xf, 0x1f, 0x70, 0xc1, 0xae, 0xe1, 0x8e, 0x3f, 0x50, 0x40, 0x2f, 0x9e, 0xf1, + 0x61, 0xe, 0xbf, 0xd0, 0xc0, 0xaf, 0x1e, 0x71, 0x3e, 0x51, 0xe0, 0x8f, 0x9f, 0xf0, 0x41, 0x2e, + 0xdf, 0xb0, 0x1, 0x6e, 0x7e, 0x11, 0xa0, 0xcf, 0x80, 0xef, 0x5e, 0x31, 0x21, 0x4e, 0xff, 0x90, + 0xc2, 0xad, 0x1c, 0x73, 0x63, 0xc, 0xbd, 0xd2, 0x9d, 0xf2, 0x43, 0x2c, 0x3c, 0x53, 0xe2, 0x8d, + 0x7c, 0x13, 0xa2, 0xcd, 0xdd, 0xb2, 0x3, 0x6c, 0x23, 0x4c, 0xfd, 0x92, 0x82, 0xed, 0x5c, 0x33, + 0xa3, 0xcc, 0x7d, 0x12, 0x2, 0x6d, 0xdc, 0xb3, 0xfc, 0x93, 0x22, 0x4d, 0x5d, 0x32, 0x83, 0xec, + 0x1d, 0x72, 0xc3, 0xac, 0xbc, 0xd3, 0x62, 0xd, 0x42, 0x2d, 0x9c, 0xf3, 0xe3, 0x8c, 0x3d, 0x52, + 0x99, 0xf6, 0x47, 0x28, 0x38, 0x57, 0xe6, 0x89, 0xc6, 0xa9, 0x18, 0x77, 0x67, 0x8, 0xb9, 0xd6, + 0x27, 0x48, 0xf9, 0x96, 0x86, 0xe9, 0x58, 0x37, 0x78, 0x17, 0xa6, 0xc9, 0xd9, 0xb6, 0x7, 0x68, + 0xf8, 0x97, 0x26, 0x49, 0x59, 0x36, 0x87, 0xe8, 0xa7, 0xc8, 0x79, 0x16, 0x6, 0x69, 0xd8, 0xb7, + 0x46, 0x29, 0x98, 0xf7, 0xe7, 0x88, 0x39, 0x56, 0x19, 0x76, 0xc7, 0xa8, 0xb8, 0xd7, 0x66, 0x9, + 0x5b, 0x34, 0x85, 0xea, 0xfa, 0x95, 0x24, 0x4b, 0x4, 0x6b, 0xda, 0xb5, 0xa5, 0xca, 0x7b, 0x14, + 0xe5, 0x8a, 0x3b, 0x54, 0x44, 0x2b, 0x9a, 0xf5, 0xba, 0xd5, 0x64, 0xb, 0x1b, 0x74, 0xc5, 0xaa, + 0x3a, 0x55, 0xe4, 0x8b, 0x9b, 0xf4, 0x45, 0x2a, 0x65, 0xa, 0xbb, 0xd4, 0xc4, 0xab, 0x1a, 0x75, + 0x84, 0xeb, 0x5a, 0x35, 0x25, 0x4a, 0xfb, 0x94, 0xdb, 0xb4, 0x5, 0x6a, 0x7a, 0x15, 0xa4, 0xcb, + ], + [ + 0x0, 0x70, 0xe0, 0x90, 0xdd, 0xad, 0x3d, 0x4d, 0xa7, 0xd7, 0x47, 0x37, 0x7a, 0xa, 0x9a, 0xea, + 0x53, 0x23, 0xb3, 0xc3, 0x8e, 0xfe, 0x6e, 0x1e, 0xf4, 0x84, 0x14, 0x64, 0x29, 0x59, 0xc9, 0xb9, + 0xa6, 0xd6, 0x46, 0x36, 0x7b, 0xb, 0x9b, 0xeb, 0x1, 0x71, 0xe1, 0x91, 0xdc, 0xac, 0x3c, 0x4c, + 0xf5, 0x85, 0x15, 0x65, 0x28, 0x58, 0xc8, 0xb8, 0x52, 0x22, 0xb2, 0xc2, 0x8f, 0xff, 0x6f, 0x1f, + 0x51, 0x21, 0xb1, 0xc1, 0x8c, 0xfc, 0x6c, 0x1c, 0xf6, 0x86, 0x16, 0x66, 0x2b, 0x5b, 0xcb, 0xbb, + 0x2, 0x72, 0xe2, 0x92, 0xdf, 0xaf, 0x3f, 0x4f, 0xa5, 0xd5, 0x45, 0x35, 0x78, 0x8, 0x98, 0xe8, + 0xf7, 0x87, 0x17, 0x67, 0x2a, 0x5a, 0xca, 0xba, 0x50, 0x20, 0xb0, 0xc0, 0x8d, 0xfd, 0x6d, 0x1d, + 0xa4, 0xd4, 0x44, 0x34, 0x79, 0x9, 0x99, 0xe9, 0x3, 0x73, 0xe3, 0x93, 0xde, 0xae, 0x3e, 0x4e, + 0xa2, 0xd2, 0x42, 0x32, 0x7f, 0xf, 0x9f, 0xef, 0x5, 0x75, 0xe5, 0x95, 0xd8, 0xa8, 0x38, 0x48, + 0xf1, 0x81, 0x11, 0x61, 0x2c, 0x5c, 0xcc, 0xbc, 0x56, 0x26, 0xb6, 0xc6, 0x8b, 0xfb, 0x6b, 0x1b, + 0x4, 0x74, 0xe4, 0x94, 0xd9, 0xa9, 0x39, 0x49, 0xa3, 0xd3, 0x43, 0x33, 0x7e, 0xe, 0x9e, 0xee, + 0x57, 0x27, 0xb7, 0xc7, 0x8a, 0xfa, 0x6a, 0x1a, 0xf0, 0x80, 0x10, 0x60, 0x2d, 0x5d, 0xcd, 0xbd, + 0xf3, 0x83, 0x13, 0x63, 0x2e, 0x5e, 0xce, 0xbe, 0x54, 0x24, 0xb4, 0xc4, 0x89, 0xf9, 0x69, 0x19, + 0xa0, 0xd0, 0x40, 0x30, 0x7d, 0xd, 0x9d, 0xed, 0x7, 0x77, 0xe7, 0x97, 0xda, 0xaa, 0x3a, 0x4a, + 0x55, 0x25, 0xb5, 0xc5, 0x88, 0xf8, 0x68, 0x18, 0xf2, 0x82, 0x12, 0x62, 0x2f, 0x5f, 0xcf, 0xbf, + 0x6, 0x76, 0xe6, 0x96, 0xdb, 0xab, 0x3b, 0x4b, 0xa1, 0xd1, 0x41, 0x31, 0x7c, 0xc, 0x9c, 0xec, + ], + [ + 0x0, 0x71, 0xe2, 0x93, 0xd9, 0xa8, 0x3b, 0x4a, 0xaf, 0xde, 0x4d, 0x3c, 0x76, 0x7, 0x94, 0xe5, + 0x43, 0x32, 0xa1, 0xd0, 0x9a, 0xeb, 0x78, 0x9, 0xec, 0x9d, 0xe, 0x7f, 0x35, 0x44, 0xd7, 0xa6, + 0x86, 0xf7, 0x64, 0x15, 0x5f, 0x2e, 0xbd, 0xcc, 0x29, 0x58, 0xcb, 0xba, 0xf0, 0x81, 0x12, 0x63, + 0xc5, 0xb4, 0x27, 0x56, 0x1c, 0x6d, 0xfe, 0x8f, 0x6a, 0x1b, 0x88, 0xf9, 0xb3, 0xc2, 0x51, 0x20, + 0x11, 0x60, 0xf3, 0x82, 0xc8, 0xb9, 0x2a, 0x5b, 0xbe, 0xcf, 0x5c, 0x2d, 0x67, 0x16, 0x85, 0xf4, + 0x52, 0x23, 0xb0, 0xc1, 0x8b, 0xfa, 0x69, 0x18, 0xfd, 0x8c, 0x1f, 0x6e, 0x24, 0x55, 0xc6, 0xb7, + 0x97, 0xe6, 0x75, 0x4, 0x4e, 0x3f, 0xac, 0xdd, 0x38, 0x49, 0xda, 0xab, 0xe1, 0x90, 0x3, 0x72, + 0xd4, 0xa5, 0x36, 0x47, 0xd, 0x7c, 0xef, 0x9e, 0x7b, 0xa, 0x99, 0xe8, 0xa2, 0xd3, 0x40, 0x31, + 0x22, 0x53, 0xc0, 0xb1, 0xfb, 0x8a, 0x19, 0x68, 0x8d, 0xfc, 0x6f, 0x1e, 0x54, 0x25, 0xb6, 0xc7, + 0x61, 0x10, 0x83, 0xf2, 0xb8, 0xc9, 0x5a, 0x2b, 0xce, 0xbf, 0x2c, 0x5d, 0x17, 0x66, 0xf5, 0x84, + 0xa4, 0xd5, 0x46, 0x37, 0x7d, 0xc, 0x9f, 0xee, 0xb, 0x7a, 0xe9, 0x98, 0xd2, 0xa3, 0x30, 0x41, + 0xe7, 0x96, 0x5, 0x74, 0x3e, 0x4f, 0xdc, 0xad, 0x48, 0x39, 0xaa, 0xdb, 0x91, 0xe0, 0x73, 0x2, + 0x33, 0x42, 0xd1, 0xa0, 0xea, 0x9b, 0x8, 0x79, 0x9c, 0xed, 0x7e, 0xf, 0x45, 0x34, 0xa7, 0xd6, + 0x70, 0x1, 0x92, 0xe3, 0xa9, 0xd8, 0x4b, 0x3a, 0xdf, 0xae, 0x3d, 0x4c, 0x6, 0x77, 0xe4, 0x95, + 0xb5, 0xc4, 0x57, 0x26, 0x6c, 0x1d, 0x8e, 0xff, 0x1a, 0x6b, 0xf8, 0x89, 0xc3, 0xb2, 0x21, 0x50, + 0xf6, 0x87, 0x14, 0x65, 0x2f, 0x5e, 0xcd, 0xbc, 0x59, 0x28, 0xbb, 0xca, 0x80, 0xf1, 0x62, 0x13, + ], + [ + 0x0, 0x72, 0xe4, 0x96, 0xd5, 0xa7, 0x31, 0x43, 0xb7, 0xc5, 0x53, 0x21, 0x62, 0x10, 0x86, 0xf4, + 0x73, 0x1, 0x97, 0xe5, 0xa6, 0xd4, 0x42, 0x30, 0xc4, 0xb6, 0x20, 0x52, 0x11, 0x63, 0xf5, 0x87, + 0xe6, 0x94, 0x2, 0x70, 0x33, 0x41, 0xd7, 0xa5, 0x51, 0x23, 0xb5, 0xc7, 0x84, 0xf6, 0x60, 0x12, + 0x95, 0xe7, 0x71, 0x3, 0x40, 0x32, 0xa4, 0xd6, 0x22, 0x50, 0xc6, 0xb4, 0xf7, 0x85, 0x13, 0x61, + 0xd1, 0xa3, 0x35, 0x47, 0x4, 0x76, 0xe0, 0x92, 0x66, 0x14, 0x82, 0xf0, 0xb3, 0xc1, 0x57, 0x25, + 0xa2, 0xd0, 0x46, 0x34, 0x77, 0x5, 0x93, 0xe1, 0x15, 0x67, 0xf1, 0x83, 0xc0, 0xb2, 0x24, 0x56, + 0x37, 0x45, 0xd3, 0xa1, 0xe2, 0x90, 0x6, 0x74, 0x80, 0xf2, 0x64, 0x16, 0x55, 0x27, 0xb1, 0xc3, + 0x44, 0x36, 0xa0, 0xd2, 0x91, 0xe3, 0x75, 0x7, 0xf3, 0x81, 0x17, 0x65, 0x26, 0x54, 0xc2, 0xb0, + 0xbf, 0xcd, 0x5b, 0x29, 0x6a, 0x18, 0x8e, 0xfc, 0x8, 0x7a, 0xec, 0x9e, 0xdd, 0xaf, 0x39, 0x4b, + 0xcc, 0xbe, 0x28, 0x5a, 0x19, 0x6b, 0xfd, 0x8f, 0x7b, 0x9, 0x9f, 0xed, 0xae, 0xdc, 0x4a, 0x38, + 0x59, 0x2b, 0xbd, 0xcf, 0x8c, 0xfe, 0x68, 0x1a, 0xee, 0x9c, 0xa, 0x78, 0x3b, 0x49, 0xdf, 0xad, + 0x2a, 0x58, 0xce, 0xbc, 0xff, 0x8d, 0x1b, 0x69, 0x9d, 0xef, 0x79, 0xb, 0x48, 0x3a, 0xac, 0xde, + 0x6e, 0x1c, 0x8a, 0xf8, 0xbb, 0xc9, 0x5f, 0x2d, 0xd9, 0xab, 0x3d, 0x4f, 0xc, 0x7e, 0xe8, 0x9a, + 0x1d, 0x6f, 0xf9, 0x8b, 0xc8, 0xba, 0x2c, 0x5e, 0xaa, 0xd8, 0x4e, 0x3c, 0x7f, 0xd, 0x9b, 0xe9, + 0x88, 0xfa, 0x6c, 0x1e, 0x5d, 0x2f, 0xb9, 0xcb, 0x3f, 0x4d, 0xdb, 0xa9, 0xea, 0x98, 0xe, 0x7c, + 0xfb, 0x89, 0x1f, 0x6d, 0x2e, 0x5c, 0xca, 0xb8, 0x4c, 0x3e, 0xa8, 0xda, 0x99, 0xeb, 0x7d, 0xf, + ], + [ + 0x0, 0x73, 0xe6, 0x95, 0xd1, 0xa2, 0x37, 0x44, 0xbf, 0xcc, 0x59, 0x2a, 0x6e, 0x1d, 0x88, 0xfb, + 0x63, 0x10, 0x85, 0xf6, 0xb2, 0xc1, 0x54, 0x27, 0xdc, 0xaf, 0x3a, 0x49, 0xd, 0x7e, 0xeb, 0x98, + 0xc6, 0xb5, 0x20, 0x53, 0x17, 0x64, 0xf1, 0x82, 0x79, 0xa, 0x9f, 0xec, 0xa8, 0xdb, 0x4e, 0x3d, + 0xa5, 0xd6, 0x43, 0x30, 0x74, 0x7, 0x92, 0xe1, 0x1a, 0x69, 0xfc, 0x8f, 0xcb, 0xb8, 0x2d, 0x5e, + 0x91, 0xe2, 0x77, 0x4, 0x40, 0x33, 0xa6, 0xd5, 0x2e, 0x5d, 0xc8, 0xbb, 0xff, 0x8c, 0x19, 0x6a, + 0xf2, 0x81, 0x14, 0x67, 0x23, 0x50, 0xc5, 0xb6, 0x4d, 0x3e, 0xab, 0xd8, 0x9c, 0xef, 0x7a, 0x9, + 0x57, 0x24, 0xb1, 0xc2, 0x86, 0xf5, 0x60, 0x13, 0xe8, 0x9b, 0xe, 0x7d, 0x39, 0x4a, 0xdf, 0xac, + 0x34, 0x47, 0xd2, 0xa1, 0xe5, 0x96, 0x3, 0x70, 0x8b, 0xf8, 0x6d, 0x1e, 0x5a, 0x29, 0xbc, 0xcf, + 0x3f, 0x4c, 0xd9, 0xaa, 0xee, 0x9d, 0x8, 0x7b, 0x80, 0xf3, 0x66, 0x15, 0x51, 0x22, 0xb7, 0xc4, + 0x5c, 0x2f, 0xba, 0xc9, 0x8d, 0xfe, 0x6b, 0x18, 0xe3, 0x90, 0x5, 0x76, 0x32, 0x41, 0xd4, 0xa7, + 0xf9, 0x8a, 0x1f, 0x6c, 0x28, 0x5b, 0xce, 0xbd, 0x46, 0x35, 0xa0, 0xd3, 0x97, 0xe4, 0x71, 0x2, + 0x9a, 0xe9, 0x7c, 0xf, 0x4b, 0x38, 0xad, 0xde, 0x25, 0x56, 0xc3, 0xb0, 0xf4, 0x87, 0x12, 0x61, + 0xae, 0xdd, 0x48, 0x3b, 0x7f, 0xc, 0x99, 0xea, 0x11, 0x62, 0xf7, 0x84, 0xc0, 0xb3, 0x26, 0x55, + 0xcd, 0xbe, 0x2b, 0x58, 0x1c, 0x6f, 0xfa, 0x89, 0x72, 0x1, 0x94, 0xe7, 0xa3, 0xd0, 0x45, 0x36, + 0x68, 0x1b, 0x8e, 0xfd, 0xb9, 0xca, 0x5f, 0x2c, 0xd7, 0xa4, 0x31, 0x42, 0x6, 0x75, 0xe0, 0x93, + 0xb, 0x78, 0xed, 0x9e, 0xda, 0xa9, 0x3c, 0x4f, 0xb4, 0xc7, 0x52, 0x21, 0x65, 0x16, 0x83, 0xf0, + ], + [ + 0x0, 0x74, 0xe8, 0x9c, 0xcd, 0xb9, 0x25, 0x51, 0x87, 0xf3, 0x6f, 0x1b, 0x4a, 0x3e, 0xa2, 0xd6, + 0x13, 0x67, 0xfb, 0x8f, 0xde, 0xaa, 0x36, 0x42, 0x94, 0xe0, 0x7c, 0x8, 0x59, 0x2d, 0xb1, 0xc5, + 0x26, 0x52, 0xce, 0xba, 0xeb, 0x9f, 0x3, 0x77, 0xa1, 0xd5, 0x49, 0x3d, 0x6c, 0x18, 0x84, 0xf0, + 0x35, 0x41, 0xdd, 0xa9, 0xf8, 0x8c, 0x10, 0x64, 0xb2, 0xc6, 0x5a, 0x2e, 0x7f, 0xb, 0x97, 0xe3, + 0x4c, 0x38, 0xa4, 0xd0, 0x81, 0xf5, 0x69, 0x1d, 0xcb, 0xbf, 0x23, 0x57, 0x6, 0x72, 0xee, 0x9a, + 0x5f, 0x2b, 0xb7, 0xc3, 0x92, 0xe6, 0x7a, 0xe, 0xd8, 0xac, 0x30, 0x44, 0x15, 0x61, 0xfd, 0x89, + 0x6a, 0x1e, 0x82, 0xf6, 0xa7, 0xd3, 0x4f, 0x3b, 0xed, 0x99, 0x5, 0x71, 0x20, 0x54, 0xc8, 0xbc, + 0x79, 0xd, 0x91, 0xe5, 0xb4, 0xc0, 0x5c, 0x28, 0xfe, 0x8a, 0x16, 0x62, 0x33, 0x47, 0xdb, 0xaf, + 0x98, 0xec, 0x70, 0x4, 0x55, 0x21, 0xbd, 0xc9, 0x1f, 0x6b, 0xf7, 0x83, 0xd2, 0xa6, 0x3a, 0x4e, + 0x8b, 0xff, 0x63, 0x17, 0x46, 0x32, 0xae, 0xda, 0xc, 0x78, 0xe4, 0x90, 0xc1, 0xb5, 0x29, 0x5d, + 0xbe, 0xca, 0x56, 0x22, 0x73, 0x7, 0x9b, 0xef, 0x39, 0x4d, 0xd1, 0xa5, 0xf4, 0x80, 0x1c, 0x68, + 0xad, 0xd9, 0x45, 0x31, 0x60, 0x14, 0x88, 0xfc, 0x2a, 0x5e, 0xc2, 0xb6, 0xe7, 0x93, 0xf, 0x7b, + 0xd4, 0xa0, 0x3c, 0x48, 0x19, 0x6d, 0xf1, 0x85, 0x53, 0x27, 0xbb, 0xcf, 0x9e, 0xea, 0x76, 0x2, + 0xc7, 0xb3, 0x2f, 0x5b, 0xa, 0x7e, 0xe2, 0x96, 0x40, 0x34, 0xa8, 0xdc, 0x8d, 0xf9, 0x65, 0x11, + 0xf2, 0x86, 0x1a, 0x6e, 0x3f, 0x4b, 0xd7, 0xa3, 0x75, 0x1, 0x9d, 0xe9, 0xb8, 0xcc, 0x50, 0x24, + 0xe1, 0x95, 0x9, 0x7d, 0x2c, 0x58, 0xc4, 0xb0, 0x66, 0x12, 0x8e, 0xfa, 0xab, 0xdf, 0x43, 0x37, + ], + [ + 0x0, 0x75, 0xea, 0x9f, 0xc9, 0xbc, 0x23, 0x56, 0x8f, 0xfa, 0x65, 0x10, 0x46, 0x33, 0xac, 0xd9, + 0x3, 0x76, 0xe9, 0x9c, 0xca, 0xbf, 0x20, 0x55, 0x8c, 0xf9, 0x66, 0x13, 0x45, 0x30, 0xaf, 0xda, + 0x6, 0x73, 0xec, 0x99, 0xcf, 0xba, 0x25, 0x50, 0x89, 0xfc, 0x63, 0x16, 0x40, 0x35, 0xaa, 0xdf, + 0x5, 0x70, 0xef, 0x9a, 0xcc, 0xb9, 0x26, 0x53, 0x8a, 0xff, 0x60, 0x15, 0x43, 0x36, 0xa9, 0xdc, + 0xc, 0x79, 0xe6, 0x93, 0xc5, 0xb0, 0x2f, 0x5a, 0x83, 0xf6, 0x69, 0x1c, 0x4a, 0x3f, 0xa0, 0xd5, + 0xf, 0x7a, 0xe5, 0x90, 0xc6, 0xb3, 0x2c, 0x59, 0x80, 0xf5, 0x6a, 0x1f, 0x49, 0x3c, 0xa3, 0xd6, + 0xa, 0x7f, 0xe0, 0x95, 0xc3, 0xb6, 0x29, 0x5c, 0x85, 0xf0, 0x6f, 0x1a, 0x4c, 0x39, 0xa6, 0xd3, + 0x9, 0x7c, 0xe3, 0x96, 0xc0, 0xb5, 0x2a, 0x5f, 0x86, 0xf3, 0x6c, 0x19, 0x4f, 0x3a, 0xa5, 0xd0, + 0x18, 0x6d, 0xf2, 0x87, 0xd1, 0xa4, 0x3b, 0x4e, 0x97, 0xe2, 0x7d, 0x8, 0x5e, 0x2b, 0xb4, 0xc1, + 0x1b, 0x6e, 0xf1, 0x84, 0xd2, 0xa7, 0x38, 0x4d, 0x94, 0xe1, 0x7e, 0xb, 0x5d, 0x28, 0xb7, 0xc2, + 0x1e, 0x6b, 0xf4, 0x81, 0xd7, 0xa2, 0x3d, 0x48, 0x91, 0xe4, 0x7b, 0xe, 0x58, 0x2d, 0xb2, 0xc7, + 0x1d, 0x68, 0xf7, 0x82, 0xd4, 0xa1, 0x3e, 0x4b, 0x92, 0xe7, 0x78, 0xd, 0x5b, 0x2e, 0xb1, 0xc4, + 0x14, 0x61, 0xfe, 0x8b, 0xdd, 0xa8, 0x37, 0x42, 0x9b, 0xee, 0x71, 0x4, 0x52, 0x27, 0xb8, 0xcd, + 0x17, 0x62, 0xfd, 0x88, 0xde, 0xab, 0x34, 0x41, 0x98, 0xed, 0x72, 0x7, 0x51, 0x24, 0xbb, 0xce, + 0x12, 0x67, 0xf8, 0x8d, 0xdb, 0xae, 0x31, 0x44, 0x9d, 0xe8, 0x77, 0x2, 0x54, 0x21, 0xbe, 0xcb, + 0x11, 0x64, 0xfb, 0x8e, 0xd8, 0xad, 0x32, 0x47, 0x9e, 0xeb, 0x74, 0x1, 0x57, 0x22, 0xbd, 0xc8, + ], + [ + 0x0, 0x76, 0xec, 0x9a, 0xc5, 0xb3, 0x29, 0x5f, 0x97, 0xe1, 0x7b, 0xd, 0x52, 0x24, 0xbe, 0xc8, + 0x33, 0x45, 0xdf, 0xa9, 0xf6, 0x80, 0x1a, 0x6c, 0xa4, 0xd2, 0x48, 0x3e, 0x61, 0x17, 0x8d, 0xfb, + 0x66, 0x10, 0x8a, 0xfc, 0xa3, 0xd5, 0x4f, 0x39, 0xf1, 0x87, 0x1d, 0x6b, 0x34, 0x42, 0xd8, 0xae, + 0x55, 0x23, 0xb9, 0xcf, 0x90, 0xe6, 0x7c, 0xa, 0xc2, 0xb4, 0x2e, 0x58, 0x7, 0x71, 0xeb, 0x9d, + 0xcc, 0xba, 0x20, 0x56, 0x9, 0x7f, 0xe5, 0x93, 0x5b, 0x2d, 0xb7, 0xc1, 0x9e, 0xe8, 0x72, 0x4, + 0xff, 0x89, 0x13, 0x65, 0x3a, 0x4c, 0xd6, 0xa0, 0x68, 0x1e, 0x84, 0xf2, 0xad, 0xdb, 0x41, 0x37, + 0xaa, 0xdc, 0x46, 0x30, 0x6f, 0x19, 0x83, 0xf5, 0x3d, 0x4b, 0xd1, 0xa7, 0xf8, 0x8e, 0x14, 0x62, + 0x99, 0xef, 0x75, 0x3, 0x5c, 0x2a, 0xb0, 0xc6, 0xe, 0x78, 0xe2, 0x94, 0xcb, 0xbd, 0x27, 0x51, + 0x85, 0xf3, 0x69, 0x1f, 0x40, 0x36, 0xac, 0xda, 0x12, 0x64, 0xfe, 0x88, 0xd7, 0xa1, 0x3b, 0x4d, + 0xb6, 0xc0, 0x5a, 0x2c, 0x73, 0x5, 0x9f, 0xe9, 0x21, 0x57, 0xcd, 0xbb, 0xe4, 0x92, 0x8, 0x7e, + 0xe3, 0x95, 0xf, 0x79, 0x26, 0x50, 0xca, 0xbc, 0x74, 0x2, 0x98, 0xee, 0xb1, 0xc7, 0x5d, 0x2b, + 0xd0, 0xa6, 0x3c, 0x4a, 0x15, 0x63, 0xf9, 0x8f, 0x47, 0x31, 0xab, 0xdd, 0x82, 0xf4, 0x6e, 0x18, + 0x49, 0x3f, 0xa5, 0xd3, 0x8c, 0xfa, 0x60, 0x16, 0xde, 0xa8, 0x32, 0x44, 0x1b, 0x6d, 0xf7, 0x81, + 0x7a, 0xc, 0x96, 0xe0, 0xbf, 0xc9, 0x53, 0x25, 0xed, 0x9b, 0x1, 0x77, 0x28, 0x5e, 0xc4, 0xb2, + 0x2f, 0x59, 0xc3, 0xb5, 0xea, 0x9c, 0x6, 0x70, 0xb8, 0xce, 0x54, 0x22, 0x7d, 0xb, 0x91, 0xe7, + 0x1c, 0x6a, 0xf0, 0x86, 0xd9, 0xaf, 0x35, 0x43, 0x8b, 0xfd, 0x67, 0x11, 0x4e, 0x38, 0xa2, 0xd4, + ], + [ + 0x0, 0x77, 0xee, 0x99, 0xc1, 0xb6, 0x2f, 0x58, 0x9f, 0xe8, 0x71, 0x6, 0x5e, 0x29, 0xb0, 0xc7, + 0x23, 0x54, 0xcd, 0xba, 0xe2, 0x95, 0xc, 0x7b, 0xbc, 0xcb, 0x52, 0x25, 0x7d, 0xa, 0x93, 0xe4, + 0x46, 0x31, 0xa8, 0xdf, 0x87, 0xf0, 0x69, 0x1e, 0xd9, 0xae, 0x37, 0x40, 0x18, 0x6f, 0xf6, 0x81, + 0x65, 0x12, 0x8b, 0xfc, 0xa4, 0xd3, 0x4a, 0x3d, 0xfa, 0x8d, 0x14, 0x63, 0x3b, 0x4c, 0xd5, 0xa2, + 0x8c, 0xfb, 0x62, 0x15, 0x4d, 0x3a, 0xa3, 0xd4, 0x13, 0x64, 0xfd, 0x8a, 0xd2, 0xa5, 0x3c, 0x4b, + 0xaf, 0xd8, 0x41, 0x36, 0x6e, 0x19, 0x80, 0xf7, 0x30, 0x47, 0xde, 0xa9, 0xf1, 0x86, 0x1f, 0x68, + 0xca, 0xbd, 0x24, 0x53, 0xb, 0x7c, 0xe5, 0x92, 0x55, 0x22, 0xbb, 0xcc, 0x94, 0xe3, 0x7a, 0xd, + 0xe9, 0x9e, 0x7, 0x70, 0x28, 0x5f, 0xc6, 0xb1, 0x76, 0x1, 0x98, 0xef, 0xb7, 0xc0, 0x59, 0x2e, + 0x5, 0x72, 0xeb, 0x9c, 0xc4, 0xb3, 0x2a, 0x5d, 0x9a, 0xed, 0x74, 0x3, 0x5b, 0x2c, 0xb5, 0xc2, + 0x26, 0x51, 0xc8, 0xbf, 0xe7, 0x90, 0x9, 0x7e, 0xb9, 0xce, 0x57, 0x20, 0x78, 0xf, 0x96, 0xe1, + 0x43, 0x34, 0xad, 0xda, 0x82, 0xf5, 0x6c, 0x1b, 0xdc, 0xab, 0x32, 0x45, 0x1d, 0x6a, 0xf3, 0x84, + 0x60, 0x17, 0x8e, 0xf9, 0xa1, 0xd6, 0x4f, 0x38, 0xff, 0x88, 0x11, 0x66, 0x3e, 0x49, 0xd0, 0xa7, + 0x89, 0xfe, 0x67, 0x10, 0x48, 0x3f, 0xa6, 0xd1, 0x16, 0x61, 0xf8, 0x8f, 0xd7, 0xa0, 0x39, 0x4e, + 0xaa, 0xdd, 0x44, 0x33, 0x6b, 0x1c, 0x85, 0xf2, 0x35, 0x42, 0xdb, 0xac, 0xf4, 0x83, 0x1a, 0x6d, + 0xcf, 0xb8, 0x21, 0x56, 0xe, 0x79, 0xe0, 0x97, 0x50, 0x27, 0xbe, 0xc9, 0x91, 0xe6, 0x7f, 0x8, + 0xec, 0x9b, 0x2, 0x75, 0x2d, 0x5a, 0xc3, 0xb4, 0x73, 0x4, 0x9d, 0xea, 0xb2, 0xc5, 0x5c, 0x2b, + ], + [ + 0x0, 0x78, 0xf0, 0x88, 0xfd, 0x85, 0xd, 0x75, 0xe7, 0x9f, 0x17, 0x6f, 0x1a, 0x62, 0xea, 0x92, + 0xd3, 0xab, 0x23, 0x5b, 0x2e, 0x56, 0xde, 0xa6, 0x34, 0x4c, 0xc4, 0xbc, 0xc9, 0xb1, 0x39, 0x41, + 0xbb, 0xc3, 0x4b, 0x33, 0x46, 0x3e, 0xb6, 0xce, 0x5c, 0x24, 0xac, 0xd4, 0xa1, 0xd9, 0x51, 0x29, + 0x68, 0x10, 0x98, 0xe0, 0x95, 0xed, 0x65, 0x1d, 0x8f, 0xf7, 0x7f, 0x7, 0x72, 0xa, 0x82, 0xfa, + 0x6b, 0x13, 0x9b, 0xe3, 0x96, 0xee, 0x66, 0x1e, 0x8c, 0xf4, 0x7c, 0x4, 0x71, 0x9, 0x81, 0xf9, + 0xb8, 0xc0, 0x48, 0x30, 0x45, 0x3d, 0xb5, 0xcd, 0x5f, 0x27, 0xaf, 0xd7, 0xa2, 0xda, 0x52, 0x2a, + 0xd0, 0xa8, 0x20, 0x58, 0x2d, 0x55, 0xdd, 0xa5, 0x37, 0x4f, 0xc7, 0xbf, 0xca, 0xb2, 0x3a, 0x42, + 0x3, 0x7b, 0xf3, 0x8b, 0xfe, 0x86, 0xe, 0x76, 0xe4, 0x9c, 0x14, 0x6c, 0x19, 0x61, 0xe9, 0x91, + 0xd6, 0xae, 0x26, 0x5e, 0x2b, 0x53, 0xdb, 0xa3, 0x31, 0x49, 0xc1, 0xb9, 0xcc, 0xb4, 0x3c, 0x44, + 0x5, 0x7d, 0xf5, 0x8d, 0xf8, 0x80, 0x8, 0x70, 0xe2, 0x9a, 0x12, 0x6a, 0x1f, 0x67, 0xef, 0x97, + 0x6d, 0x15, 0x9d, 0xe5, 0x90, 0xe8, 0x60, 0x18, 0x8a, 0xf2, 0x7a, 0x2, 0x77, 0xf, 0x87, 0xff, + 0xbe, 0xc6, 0x4e, 0x36, 0x43, 0x3b, 0xb3, 0xcb, 0x59, 0x21, 0xa9, 0xd1, 0xa4, 0xdc, 0x54, 0x2c, + 0xbd, 0xc5, 0x4d, 0x35, 0x40, 0x38, 0xb0, 0xc8, 0x5a, 0x22, 0xaa, 0xd2, 0xa7, 0xdf, 0x57, 0x2f, + 0x6e, 0x16, 0x9e, 0xe6, 0x93, 0xeb, 0x63, 0x1b, 0x89, 0xf1, 0x79, 0x1, 0x74, 0xc, 0x84, 0xfc, + 0x6, 0x7e, 0xf6, 0x8e, 0xfb, 0x83, 0xb, 0x73, 0xe1, 0x99, 0x11, 0x69, 0x1c, 0x64, 0xec, 0x94, + 0xd5, 0xad, 0x25, 0x5d, 0x28, 0x50, 0xd8, 0xa0, 0x32, 0x4a, 0xc2, 0xba, 0xcf, 0xb7, 0x3f, 0x47, + ], + [ + 0x0, 0x79, 0xf2, 0x8b, 0xf9, 0x80, 0xb, 0x72, 0xef, 0x96, 0x1d, 0x64, 0x16, 0x6f, 0xe4, 0x9d, + 0xc3, 0xba, 0x31, 0x48, 0x3a, 0x43, 0xc8, 0xb1, 0x2c, 0x55, 0xde, 0xa7, 0xd5, 0xac, 0x27, 0x5e, + 0x9b, 0xe2, 0x69, 0x10, 0x62, 0x1b, 0x90, 0xe9, 0x74, 0xd, 0x86, 0xff, 0x8d, 0xf4, 0x7f, 0x6, + 0x58, 0x21, 0xaa, 0xd3, 0xa1, 0xd8, 0x53, 0x2a, 0xb7, 0xce, 0x45, 0x3c, 0x4e, 0x37, 0xbc, 0xc5, + 0x2b, 0x52, 0xd9, 0xa0, 0xd2, 0xab, 0x20, 0x59, 0xc4, 0xbd, 0x36, 0x4f, 0x3d, 0x44, 0xcf, 0xb6, + 0xe8, 0x91, 0x1a, 0x63, 0x11, 0x68, 0xe3, 0x9a, 0x7, 0x7e, 0xf5, 0x8c, 0xfe, 0x87, 0xc, 0x75, + 0xb0, 0xc9, 0x42, 0x3b, 0x49, 0x30, 0xbb, 0xc2, 0x5f, 0x26, 0xad, 0xd4, 0xa6, 0xdf, 0x54, 0x2d, + 0x73, 0xa, 0x81, 0xf8, 0x8a, 0xf3, 0x78, 0x1, 0x9c, 0xe5, 0x6e, 0x17, 0x65, 0x1c, 0x97, 0xee, + 0x56, 0x2f, 0xa4, 0xdd, 0xaf, 0xd6, 0x5d, 0x24, 0xb9, 0xc0, 0x4b, 0x32, 0x40, 0x39, 0xb2, 0xcb, + 0x95, 0xec, 0x67, 0x1e, 0x6c, 0x15, 0x9e, 0xe7, 0x7a, 0x3, 0x88, 0xf1, 0x83, 0xfa, 0x71, 0x8, + 0xcd, 0xb4, 0x3f, 0x46, 0x34, 0x4d, 0xc6, 0xbf, 0x22, 0x5b, 0xd0, 0xa9, 0xdb, 0xa2, 0x29, 0x50, + 0xe, 0x77, 0xfc, 0x85, 0xf7, 0x8e, 0x5, 0x7c, 0xe1, 0x98, 0x13, 0x6a, 0x18, 0x61, 0xea, 0x93, + 0x7d, 0x4, 0x8f, 0xf6, 0x84, 0xfd, 0x76, 0xf, 0x92, 0xeb, 0x60, 0x19, 0x6b, 0x12, 0x99, 0xe0, + 0xbe, 0xc7, 0x4c, 0x35, 0x47, 0x3e, 0xb5, 0xcc, 0x51, 0x28, 0xa3, 0xda, 0xa8, 0xd1, 0x5a, 0x23, + 0xe6, 0x9f, 0x14, 0x6d, 0x1f, 0x66, 0xed, 0x94, 0x9, 0x70, 0xfb, 0x82, 0xf0, 0x89, 0x2, 0x7b, + 0x25, 0x5c, 0xd7, 0xae, 0xdc, 0xa5, 0x2e, 0x57, 0xca, 0xb3, 0x38, 0x41, 0x33, 0x4a, 0xc1, 0xb8, + ], + [ + 0x0, 0x7a, 0xf4, 0x8e, 0xf5, 0x8f, 0x1, 0x7b, 0xf7, 0x8d, 0x3, 0x79, 0x2, 0x78, 0xf6, 0x8c, + 0xf3, 0x89, 0x7, 0x7d, 0x6, 0x7c, 0xf2, 0x88, 0x4, 0x7e, 0xf0, 0x8a, 0xf1, 0x8b, 0x5, 0x7f, + 0xfb, 0x81, 0xf, 0x75, 0xe, 0x74, 0xfa, 0x80, 0xc, 0x76, 0xf8, 0x82, 0xf9, 0x83, 0xd, 0x77, 0x8, + 0x72, 0xfc, 0x86, 0xfd, 0x87, 0x9, 0x73, 0xff, 0x85, 0xb, 0x71, 0xa, 0x70, 0xfe, 0x84, 0xeb, + 0x91, 0x1f, 0x65, 0x1e, 0x64, 0xea, 0x90, 0x1c, 0x66, 0xe8, 0x92, 0xe9, 0x93, 0x1d, 0x67, 0x18, + 0x62, 0xec, 0x96, 0xed, 0x97, 0x19, 0x63, 0xef, 0x95, 0x1b, 0x61, 0x1a, 0x60, 0xee, 0x94, 0x10, + 0x6a, 0xe4, 0x9e, 0xe5, 0x9f, 0x11, 0x6b, 0xe7, 0x9d, 0x13, 0x69, 0x12, 0x68, 0xe6, 0x9c, 0xe3, + 0x99, 0x17, 0x6d, 0x16, 0x6c, 0xe2, 0x98, 0x14, 0x6e, 0xe0, 0x9a, 0xe1, 0x9b, 0x15, 0x6f, 0xcb, + 0xb1, 0x3f, 0x45, 0x3e, 0x44, 0xca, 0xb0, 0x3c, 0x46, 0xc8, 0xb2, 0xc9, 0xb3, 0x3d, 0x47, 0x38, + 0x42, 0xcc, 0xb6, 0xcd, 0xb7, 0x39, 0x43, 0xcf, 0xb5, 0x3b, 0x41, 0x3a, 0x40, 0xce, 0xb4, 0x30, + 0x4a, 0xc4, 0xbe, 0xc5, 0xbf, 0x31, 0x4b, 0xc7, 0xbd, 0x33, 0x49, 0x32, 0x48, 0xc6, 0xbc, 0xc3, + 0xb9, 0x37, 0x4d, 0x36, 0x4c, 0xc2, 0xb8, 0x34, 0x4e, 0xc0, 0xba, 0xc1, 0xbb, 0x35, 0x4f, 0x20, + 0x5a, 0xd4, 0xae, 0xd5, 0xaf, 0x21, 0x5b, 0xd7, 0xad, 0x23, 0x59, 0x22, 0x58, 0xd6, 0xac, 0xd3, + 0xa9, 0x27, 0x5d, 0x26, 0x5c, 0xd2, 0xa8, 0x24, 0x5e, 0xd0, 0xaa, 0xd1, 0xab, 0x25, 0x5f, 0xdb, + 0xa1, 0x2f, 0x55, 0x2e, 0x54, 0xda, 0xa0, 0x2c, 0x56, 0xd8, 0xa2, 0xd9, 0xa3, 0x2d, 0x57, 0x28, + 0x52, 0xdc, 0xa6, 0xdd, 0xa7, 0x29, 0x53, 0xdf, 0xa5, 0x2b, 0x51, 0x2a, 0x50, 0xde, 0xa4, + ], + [ + 0x0, 0x7b, 0xf6, 0x8d, 0xf1, 0x8a, 0x7, 0x7c, 0xff, 0x84, 0x9, 0x72, 0xe, 0x75, 0xf8, 0x83, + 0xe3, 0x98, 0x15, 0x6e, 0x12, 0x69, 0xe4, 0x9f, 0x1c, 0x67, 0xea, 0x91, 0xed, 0x96, 0x1b, 0x60, + 0xdb, 0xa0, 0x2d, 0x56, 0x2a, 0x51, 0xdc, 0xa7, 0x24, 0x5f, 0xd2, 0xa9, 0xd5, 0xae, 0x23, 0x58, + 0x38, 0x43, 0xce, 0xb5, 0xc9, 0xb2, 0x3f, 0x44, 0xc7, 0xbc, 0x31, 0x4a, 0x36, 0x4d, 0xc0, 0xbb, + 0xab, 0xd0, 0x5d, 0x26, 0x5a, 0x21, 0xac, 0xd7, 0x54, 0x2f, 0xa2, 0xd9, 0xa5, 0xde, 0x53, 0x28, + 0x48, 0x33, 0xbe, 0xc5, 0xb9, 0xc2, 0x4f, 0x34, 0xb7, 0xcc, 0x41, 0x3a, 0x46, 0x3d, 0xb0, 0xcb, + 0x70, 0xb, 0x86, 0xfd, 0x81, 0xfa, 0x77, 0xc, 0x8f, 0xf4, 0x79, 0x2, 0x7e, 0x5, 0x88, 0xf3, + 0x93, 0xe8, 0x65, 0x1e, 0x62, 0x19, 0x94, 0xef, 0x6c, 0x17, 0x9a, 0xe1, 0x9d, 0xe6, 0x6b, 0x10, + 0x4b, 0x30, 0xbd, 0xc6, 0xba, 0xc1, 0x4c, 0x37, 0xb4, 0xcf, 0x42, 0x39, 0x45, 0x3e, 0xb3, 0xc8, + 0xa8, 0xd3, 0x5e, 0x25, 0x59, 0x22, 0xaf, 0xd4, 0x57, 0x2c, 0xa1, 0xda, 0xa6, 0xdd, 0x50, 0x2b, + 0x90, 0xeb, 0x66, 0x1d, 0x61, 0x1a, 0x97, 0xec, 0x6f, 0x14, 0x99, 0xe2, 0x9e, 0xe5, 0x68, 0x13, + 0x73, 0x8, 0x85, 0xfe, 0x82, 0xf9, 0x74, 0xf, 0x8c, 0xf7, 0x7a, 0x1, 0x7d, 0x6, 0x8b, 0xf0, + 0xe0, 0x9b, 0x16, 0x6d, 0x11, 0x6a, 0xe7, 0x9c, 0x1f, 0x64, 0xe9, 0x92, 0xee, 0x95, 0x18, 0x63, + 0x3, 0x78, 0xf5, 0x8e, 0xf2, 0x89, 0x4, 0x7f, 0xfc, 0x87, 0xa, 0x71, 0xd, 0x76, 0xfb, 0x80, + 0x3b, 0x40, 0xcd, 0xb6, 0xca, 0xb1, 0x3c, 0x47, 0xc4, 0xbf, 0x32, 0x49, 0x35, 0x4e, 0xc3, 0xb8, + 0xd8, 0xa3, 0x2e, 0x55, 0x29, 0x52, 0xdf, 0xa4, 0x27, 0x5c, 0xd1, 0xaa, 0xd6, 0xad, 0x20, 0x5b, + ], + [ + 0x0, 0x7c, 0xf8, 0x84, 0xed, 0x91, 0x15, 0x69, 0xc7, 0xbb, 0x3f, 0x43, 0x2a, 0x56, 0xd2, 0xae, + 0x93, 0xef, 0x6b, 0x17, 0x7e, 0x2, 0x86, 0xfa, 0x54, 0x28, 0xac, 0xd0, 0xb9, 0xc5, 0x41, 0x3d, + 0x3b, 0x47, 0xc3, 0xbf, 0xd6, 0xaa, 0x2e, 0x52, 0xfc, 0x80, 0x4, 0x78, 0x11, 0x6d, 0xe9, 0x95, + 0xa8, 0xd4, 0x50, 0x2c, 0x45, 0x39, 0xbd, 0xc1, 0x6f, 0x13, 0x97, 0xeb, 0x82, 0xfe, 0x7a, 0x6, + 0x76, 0xa, 0x8e, 0xf2, 0x9b, 0xe7, 0x63, 0x1f, 0xb1, 0xcd, 0x49, 0x35, 0x5c, 0x20, 0xa4, 0xd8, + 0xe5, 0x99, 0x1d, 0x61, 0x8, 0x74, 0xf0, 0x8c, 0x22, 0x5e, 0xda, 0xa6, 0xcf, 0xb3, 0x37, 0x4b, + 0x4d, 0x31, 0xb5, 0xc9, 0xa0, 0xdc, 0x58, 0x24, 0x8a, 0xf6, 0x72, 0xe, 0x67, 0x1b, 0x9f, 0xe3, + 0xde, 0xa2, 0x26, 0x5a, 0x33, 0x4f, 0xcb, 0xb7, 0x19, 0x65, 0xe1, 0x9d, 0xf4, 0x88, 0xc, 0x70, + 0xec, 0x90, 0x14, 0x68, 0x1, 0x7d, 0xf9, 0x85, 0x2b, 0x57, 0xd3, 0xaf, 0xc6, 0xba, 0x3e, 0x42, + 0x7f, 0x3, 0x87, 0xfb, 0x92, 0xee, 0x6a, 0x16, 0xb8, 0xc4, 0x40, 0x3c, 0x55, 0x29, 0xad, 0xd1, + 0xd7, 0xab, 0x2f, 0x53, 0x3a, 0x46, 0xc2, 0xbe, 0x10, 0x6c, 0xe8, 0x94, 0xfd, 0x81, 0x5, 0x79, + 0x44, 0x38, 0xbc, 0xc0, 0xa9, 0xd5, 0x51, 0x2d, 0x83, 0xff, 0x7b, 0x7, 0x6e, 0x12, 0x96, 0xea, + 0x9a, 0xe6, 0x62, 0x1e, 0x77, 0xb, 0x8f, 0xf3, 0x5d, 0x21, 0xa5, 0xd9, 0xb0, 0xcc, 0x48, 0x34, + 0x9, 0x75, 0xf1, 0x8d, 0xe4, 0x98, 0x1c, 0x60, 0xce, 0xb2, 0x36, 0x4a, 0x23, 0x5f, 0xdb, 0xa7, + 0xa1, 0xdd, 0x59, 0x25, 0x4c, 0x30, 0xb4, 0xc8, 0x66, 0x1a, 0x9e, 0xe2, 0x8b, 0xf7, 0x73, 0xf, + 0x32, 0x4e, 0xca, 0xb6, 0xdf, 0xa3, 0x27, 0x5b, 0xf5, 0x89, 0xd, 0x71, 0x18, 0x64, 0xe0, 0x9c, + ], + [ + 0x0, 0x7d, 0xfa, 0x87, 0xe9, 0x94, 0x13, 0x6e, 0xcf, 0xb2, 0x35, 0x48, 0x26, 0x5b, 0xdc, 0xa1, + 0x83, 0xfe, 0x79, 0x4, 0x6a, 0x17, 0x90, 0xed, 0x4c, 0x31, 0xb6, 0xcb, 0xa5, 0xd8, 0x5f, 0x22, + 0x1b, 0x66, 0xe1, 0x9c, 0xf2, 0x8f, 0x8, 0x75, 0xd4, 0xa9, 0x2e, 0x53, 0x3d, 0x40, 0xc7, 0xba, + 0x98, 0xe5, 0x62, 0x1f, 0x71, 0xc, 0x8b, 0xf6, 0x57, 0x2a, 0xad, 0xd0, 0xbe, 0xc3, 0x44, 0x39, + 0x36, 0x4b, 0xcc, 0xb1, 0xdf, 0xa2, 0x25, 0x58, 0xf9, 0x84, 0x3, 0x7e, 0x10, 0x6d, 0xea, 0x97, + 0xb5, 0xc8, 0x4f, 0x32, 0x5c, 0x21, 0xa6, 0xdb, 0x7a, 0x7, 0x80, 0xfd, 0x93, 0xee, 0x69, 0x14, + 0x2d, 0x50, 0xd7, 0xaa, 0xc4, 0xb9, 0x3e, 0x43, 0xe2, 0x9f, 0x18, 0x65, 0xb, 0x76, 0xf1, 0x8c, + 0xae, 0xd3, 0x54, 0x29, 0x47, 0x3a, 0xbd, 0xc0, 0x61, 0x1c, 0x9b, 0xe6, 0x88, 0xf5, 0x72, 0xf, + 0x6c, 0x11, 0x96, 0xeb, 0x85, 0xf8, 0x7f, 0x2, 0xa3, 0xde, 0x59, 0x24, 0x4a, 0x37, 0xb0, 0xcd, + 0xef, 0x92, 0x15, 0x68, 0x6, 0x7b, 0xfc, 0x81, 0x20, 0x5d, 0xda, 0xa7, 0xc9, 0xb4, 0x33, 0x4e, + 0x77, 0xa, 0x8d, 0xf0, 0x9e, 0xe3, 0x64, 0x19, 0xb8, 0xc5, 0x42, 0x3f, 0x51, 0x2c, 0xab, 0xd6, + 0xf4, 0x89, 0xe, 0x73, 0x1d, 0x60, 0xe7, 0x9a, 0x3b, 0x46, 0xc1, 0xbc, 0xd2, 0xaf, 0x28, 0x55, + 0x5a, 0x27, 0xa0, 0xdd, 0xb3, 0xce, 0x49, 0x34, 0x95, 0xe8, 0x6f, 0x12, 0x7c, 0x1, 0x86, 0xfb, + 0xd9, 0xa4, 0x23, 0x5e, 0x30, 0x4d, 0xca, 0xb7, 0x16, 0x6b, 0xec, 0x91, 0xff, 0x82, 0x5, 0x78, + 0x41, 0x3c, 0xbb, 0xc6, 0xa8, 0xd5, 0x52, 0x2f, 0x8e, 0xf3, 0x74, 0x9, 0x67, 0x1a, 0x9d, 0xe0, + 0xc2, 0xbf, 0x38, 0x45, 0x2b, 0x56, 0xd1, 0xac, 0xd, 0x70, 0xf7, 0x8a, 0xe4, 0x99, 0x1e, 0x63, + ], + [ + 0x0, 0x7e, 0xfc, 0x82, 0xe5, 0x9b, 0x19, 0x67, 0xd7, 0xa9, 0x2b, 0x55, 0x32, 0x4c, 0xce, 0xb0, + 0xb3, 0xcd, 0x4f, 0x31, 0x56, 0x28, 0xaa, 0xd4, 0x64, 0x1a, 0x98, 0xe6, 0x81, 0xff, 0x7d, 0x3, + 0x7b, 0x5, 0x87, 0xf9, 0x9e, 0xe0, 0x62, 0x1c, 0xac, 0xd2, 0x50, 0x2e, 0x49, 0x37, 0xb5, 0xcb, + 0xc8, 0xb6, 0x34, 0x4a, 0x2d, 0x53, 0xd1, 0xaf, 0x1f, 0x61, 0xe3, 0x9d, 0xfa, 0x84, 0x6, 0x78, + 0xf6, 0x88, 0xa, 0x74, 0x13, 0x6d, 0xef, 0x91, 0x21, 0x5f, 0xdd, 0xa3, 0xc4, 0xba, 0x38, 0x46, + 0x45, 0x3b, 0xb9, 0xc7, 0xa0, 0xde, 0x5c, 0x22, 0x92, 0xec, 0x6e, 0x10, 0x77, 0x9, 0x8b, 0xf5, + 0x8d, 0xf3, 0x71, 0xf, 0x68, 0x16, 0x94, 0xea, 0x5a, 0x24, 0xa6, 0xd8, 0xbf, 0xc1, 0x43, 0x3d, + 0x3e, 0x40, 0xc2, 0xbc, 0xdb, 0xa5, 0x27, 0x59, 0xe9, 0x97, 0x15, 0x6b, 0xc, 0x72, 0xf0, 0x8e, + 0xf1, 0x8f, 0xd, 0x73, 0x14, 0x6a, 0xe8, 0x96, 0x26, 0x58, 0xda, 0xa4, 0xc3, 0xbd, 0x3f, 0x41, + 0x42, 0x3c, 0xbe, 0xc0, 0xa7, 0xd9, 0x5b, 0x25, 0x95, 0xeb, 0x69, 0x17, 0x70, 0xe, 0x8c, 0xf2, + 0x8a, 0xf4, 0x76, 0x8, 0x6f, 0x11, 0x93, 0xed, 0x5d, 0x23, 0xa1, 0xdf, 0xb8, 0xc6, 0x44, 0x3a, + 0x39, 0x47, 0xc5, 0xbb, 0xdc, 0xa2, 0x20, 0x5e, 0xee, 0x90, 0x12, 0x6c, 0xb, 0x75, 0xf7, 0x89, + 0x7, 0x79, 0xfb, 0x85, 0xe2, 0x9c, 0x1e, 0x60, 0xd0, 0xae, 0x2c, 0x52, 0x35, 0x4b, 0xc9, 0xb7, + 0xb4, 0xca, 0x48, 0x36, 0x51, 0x2f, 0xad, 0xd3, 0x63, 0x1d, 0x9f, 0xe1, 0x86, 0xf8, 0x7a, 0x4, + 0x7c, 0x2, 0x80, 0xfe, 0x99, 0xe7, 0x65, 0x1b, 0xab, 0xd5, 0x57, 0x29, 0x4e, 0x30, 0xb2, 0xcc, + 0xcf, 0xb1, 0x33, 0x4d, 0x2a, 0x54, 0xd6, 0xa8, 0x18, 0x66, 0xe4, 0x9a, 0xfd, 0x83, 0x1, 0x7f, + ], + [ + 0x0, 0x7f, 0xfe, 0x81, 0xe1, 0x9e, 0x1f, 0x60, 0xdf, 0xa0, 0x21, 0x5e, 0x3e, 0x41, 0xc0, 0xbf, + 0xa3, 0xdc, 0x5d, 0x22, 0x42, 0x3d, 0xbc, 0xc3, 0x7c, 0x3, 0x82, 0xfd, 0x9d, 0xe2, 0x63, 0x1c, + 0x5b, 0x24, 0xa5, 0xda, 0xba, 0xc5, 0x44, 0x3b, 0x84, 0xfb, 0x7a, 0x5, 0x65, 0x1a, 0x9b, 0xe4, + 0xf8, 0x87, 0x6, 0x79, 0x19, 0x66, 0xe7, 0x98, 0x27, 0x58, 0xd9, 0xa6, 0xc6, 0xb9, 0x38, 0x47, + 0xb6, 0xc9, 0x48, 0x37, 0x57, 0x28, 0xa9, 0xd6, 0x69, 0x16, 0x97, 0xe8, 0x88, 0xf7, 0x76, 0x9, + 0x15, 0x6a, 0xeb, 0x94, 0xf4, 0x8b, 0xa, 0x75, 0xca, 0xb5, 0x34, 0x4b, 0x2b, 0x54, 0xd5, 0xaa, + 0xed, 0x92, 0x13, 0x6c, 0xc, 0x73, 0xf2, 0x8d, 0x32, 0x4d, 0xcc, 0xb3, 0xd3, 0xac, 0x2d, 0x52, + 0x4e, 0x31, 0xb0, 0xcf, 0xaf, 0xd0, 0x51, 0x2e, 0x91, 0xee, 0x6f, 0x10, 0x70, 0xf, 0x8e, 0xf1, + 0x71, 0xe, 0x8f, 0xf0, 0x90, 0xef, 0x6e, 0x11, 0xae, 0xd1, 0x50, 0x2f, 0x4f, 0x30, 0xb1, 0xce, + 0xd2, 0xad, 0x2c, 0x53, 0x33, 0x4c, 0xcd, 0xb2, 0xd, 0x72, 0xf3, 0x8c, 0xec, 0x93, 0x12, 0x6d, + 0x2a, 0x55, 0xd4, 0xab, 0xcb, 0xb4, 0x35, 0x4a, 0xf5, 0x8a, 0xb, 0x74, 0x14, 0x6b, 0xea, 0x95, + 0x89, 0xf6, 0x77, 0x8, 0x68, 0x17, 0x96, 0xe9, 0x56, 0x29, 0xa8, 0xd7, 0xb7, 0xc8, 0x49, 0x36, + 0xc7, 0xb8, 0x39, 0x46, 0x26, 0x59, 0xd8, 0xa7, 0x18, 0x67, 0xe6, 0x99, 0xf9, 0x86, 0x7, 0x78, + 0x64, 0x1b, 0x9a, 0xe5, 0x85, 0xfa, 0x7b, 0x4, 0xbb, 0xc4, 0x45, 0x3a, 0x5a, 0x25, 0xa4, 0xdb, + 0x9c, 0xe3, 0x62, 0x1d, 0x7d, 0x2, 0x83, 0xfc, 0x43, 0x3c, 0xbd, 0xc2, 0xa2, 0xdd, 0x5c, 0x23, + 0x3f, 0x40, 0xc1, 0xbe, 0xde, 0xa1, 0x20, 0x5f, 0xe0, 0x9f, 0x1e, 0x61, 0x1, 0x7e, 0xff, 0x80, + ], + [ + 0x0, 0x80, 0x1d, 0x9d, 0x3a, 0xba, 0x27, 0xa7, 0x74, 0xf4, 0x69, 0xe9, 0x4e, 0xce, 0x53, 0xd3, + 0xe8, 0x68, 0xf5, 0x75, 0xd2, 0x52, 0xcf, 0x4f, 0x9c, 0x1c, 0x81, 0x1, 0xa6, 0x26, 0xbb, 0x3b, + 0xcd, 0x4d, 0xd0, 0x50, 0xf7, 0x77, 0xea, 0x6a, 0xb9, 0x39, 0xa4, 0x24, 0x83, 0x3, 0x9e, 0x1e, + 0x25, 0xa5, 0x38, 0xb8, 0x1f, 0x9f, 0x2, 0x82, 0x51, 0xd1, 0x4c, 0xcc, 0x6b, 0xeb, 0x76, 0xf6, + 0x87, 0x7, 0x9a, 0x1a, 0xbd, 0x3d, 0xa0, 0x20, 0xf3, 0x73, 0xee, 0x6e, 0xc9, 0x49, 0xd4, 0x54, + 0x6f, 0xef, 0x72, 0xf2, 0x55, 0xd5, 0x48, 0xc8, 0x1b, 0x9b, 0x6, 0x86, 0x21, 0xa1, 0x3c, 0xbc, + 0x4a, 0xca, 0x57, 0xd7, 0x70, 0xf0, 0x6d, 0xed, 0x3e, 0xbe, 0x23, 0xa3, 0x4, 0x84, 0x19, 0x99, + 0xa2, 0x22, 0xbf, 0x3f, 0x98, 0x18, 0x85, 0x5, 0xd6, 0x56, 0xcb, 0x4b, 0xec, 0x6c, 0xf1, 0x71, + 0x13, 0x93, 0xe, 0x8e, 0x29, 0xa9, 0x34, 0xb4, 0x67, 0xe7, 0x7a, 0xfa, 0x5d, 0xdd, 0x40, 0xc0, + 0xfb, 0x7b, 0xe6, 0x66, 0xc1, 0x41, 0xdc, 0x5c, 0x8f, 0xf, 0x92, 0x12, 0xb5, 0x35, 0xa8, 0x28, + 0xde, 0x5e, 0xc3, 0x43, 0xe4, 0x64, 0xf9, 0x79, 0xaa, 0x2a, 0xb7, 0x37, 0x90, 0x10, 0x8d, 0xd, + 0x36, 0xb6, 0x2b, 0xab, 0xc, 0x8c, 0x11, 0x91, 0x42, 0xc2, 0x5f, 0xdf, 0x78, 0xf8, 0x65, 0xe5, + 0x94, 0x14, 0x89, 0x9, 0xae, 0x2e, 0xb3, 0x33, 0xe0, 0x60, 0xfd, 0x7d, 0xda, 0x5a, 0xc7, 0x47, + 0x7c, 0xfc, 0x61, 0xe1, 0x46, 0xc6, 0x5b, 0xdb, 0x8, 0x88, 0x15, 0x95, 0x32, 0xb2, 0x2f, 0xaf, + 0x59, 0xd9, 0x44, 0xc4, 0x63, 0xe3, 0x7e, 0xfe, 0x2d, 0xad, 0x30, 0xb0, 0x17, 0x97, 0xa, 0x8a, + 0xb1, 0x31, 0xac, 0x2c, 0x8b, 0xb, 0x96, 0x16, 0xc5, 0x45, 0xd8, 0x58, 0xff, 0x7f, 0xe2, 0x62, + ], + [ + 0x0, 0x81, 0x1f, 0x9e, 0x3e, 0xbf, 0x21, 0xa0, 0x7c, 0xfd, 0x63, 0xe2, 0x42, 0xc3, 0x5d, 0xdc, + 0xf8, 0x79, 0xe7, 0x66, 0xc6, 0x47, 0xd9, 0x58, 0x84, 0x5, 0x9b, 0x1a, 0xba, 0x3b, 0xa5, 0x24, + 0xed, 0x6c, 0xf2, 0x73, 0xd3, 0x52, 0xcc, 0x4d, 0x91, 0x10, 0x8e, 0xf, 0xaf, 0x2e, 0xb0, 0x31, + 0x15, 0x94, 0xa, 0x8b, 0x2b, 0xaa, 0x34, 0xb5, 0x69, 0xe8, 0x76, 0xf7, 0x57, 0xd6, 0x48, 0xc9, + 0xc7, 0x46, 0xd8, 0x59, 0xf9, 0x78, 0xe6, 0x67, 0xbb, 0x3a, 0xa4, 0x25, 0x85, 0x4, 0x9a, 0x1b, + 0x3f, 0xbe, 0x20, 0xa1, 0x1, 0x80, 0x1e, 0x9f, 0x43, 0xc2, 0x5c, 0xdd, 0x7d, 0xfc, 0x62, 0xe3, + 0x2a, 0xab, 0x35, 0xb4, 0x14, 0x95, 0xb, 0x8a, 0x56, 0xd7, 0x49, 0xc8, 0x68, 0xe9, 0x77, 0xf6, + 0xd2, 0x53, 0xcd, 0x4c, 0xec, 0x6d, 0xf3, 0x72, 0xae, 0x2f, 0xb1, 0x30, 0x90, 0x11, 0x8f, 0xe, + 0x93, 0x12, 0x8c, 0xd, 0xad, 0x2c, 0xb2, 0x33, 0xef, 0x6e, 0xf0, 0x71, 0xd1, 0x50, 0xce, 0x4f, + 0x6b, 0xea, 0x74, 0xf5, 0x55, 0xd4, 0x4a, 0xcb, 0x17, 0x96, 0x8, 0x89, 0x29, 0xa8, 0x36, 0xb7, + 0x7e, 0xff, 0x61, 0xe0, 0x40, 0xc1, 0x5f, 0xde, 0x2, 0x83, 0x1d, 0x9c, 0x3c, 0xbd, 0x23, 0xa2, + 0x86, 0x7, 0x99, 0x18, 0xb8, 0x39, 0xa7, 0x26, 0xfa, 0x7b, 0xe5, 0x64, 0xc4, 0x45, 0xdb, 0x5a, + 0x54, 0xd5, 0x4b, 0xca, 0x6a, 0xeb, 0x75, 0xf4, 0x28, 0xa9, 0x37, 0xb6, 0x16, 0x97, 0x9, 0x88, + 0xac, 0x2d, 0xb3, 0x32, 0x92, 0x13, 0x8d, 0xc, 0xd0, 0x51, 0xcf, 0x4e, 0xee, 0x6f, 0xf1, 0x70, + 0xb9, 0x38, 0xa6, 0x27, 0x87, 0x6, 0x98, 0x19, 0xc5, 0x44, 0xda, 0x5b, 0xfb, 0x7a, 0xe4, 0x65, + 0x41, 0xc0, 0x5e, 0xdf, 0x7f, 0xfe, 0x60, 0xe1, 0x3d, 0xbc, 0x22, 0xa3, 0x3, 0x82, 0x1c, 0x9d, + ], + [ + 0x0, 0x82, 0x19, 0x9b, 0x32, 0xb0, 0x2b, 0xa9, 0x64, 0xe6, 0x7d, 0xff, 0x56, 0xd4, 0x4f, 0xcd, + 0xc8, 0x4a, 0xd1, 0x53, 0xfa, 0x78, 0xe3, 0x61, 0xac, 0x2e, 0xb5, 0x37, 0x9e, 0x1c, 0x87, 0x5, + 0x8d, 0xf, 0x94, 0x16, 0xbf, 0x3d, 0xa6, 0x24, 0xe9, 0x6b, 0xf0, 0x72, 0xdb, 0x59, 0xc2, 0x40, + 0x45, 0xc7, 0x5c, 0xde, 0x77, 0xf5, 0x6e, 0xec, 0x21, 0xa3, 0x38, 0xba, 0x13, 0x91, 0xa, 0x88, + 0x7, 0x85, 0x1e, 0x9c, 0x35, 0xb7, 0x2c, 0xae, 0x63, 0xe1, 0x7a, 0xf8, 0x51, 0xd3, 0x48, 0xca, + 0xcf, 0x4d, 0xd6, 0x54, 0xfd, 0x7f, 0xe4, 0x66, 0xab, 0x29, 0xb2, 0x30, 0x99, 0x1b, 0x80, 0x2, + 0x8a, 0x8, 0x93, 0x11, 0xb8, 0x3a, 0xa1, 0x23, 0xee, 0x6c, 0xf7, 0x75, 0xdc, 0x5e, 0xc5, 0x47, + 0x42, 0xc0, 0x5b, 0xd9, 0x70, 0xf2, 0x69, 0xeb, 0x26, 0xa4, 0x3f, 0xbd, 0x14, 0x96, 0xd, 0x8f, + 0xe, 0x8c, 0x17, 0x95, 0x3c, 0xbe, 0x25, 0xa7, 0x6a, 0xe8, 0x73, 0xf1, 0x58, 0xda, 0x41, 0xc3, + 0xc6, 0x44, 0xdf, 0x5d, 0xf4, 0x76, 0xed, 0x6f, 0xa2, 0x20, 0xbb, 0x39, 0x90, 0x12, 0x89, 0xb, + 0x83, 0x1, 0x9a, 0x18, 0xb1, 0x33, 0xa8, 0x2a, 0xe7, 0x65, 0xfe, 0x7c, 0xd5, 0x57, 0xcc, 0x4e, + 0x4b, 0xc9, 0x52, 0xd0, 0x79, 0xfb, 0x60, 0xe2, 0x2f, 0xad, 0x36, 0xb4, 0x1d, 0x9f, 0x4, 0x86, + 0x9, 0x8b, 0x10, 0x92, 0x3b, 0xb9, 0x22, 0xa0, 0x6d, 0xef, 0x74, 0xf6, 0x5f, 0xdd, 0x46, 0xc4, + 0xc1, 0x43, 0xd8, 0x5a, 0xf3, 0x71, 0xea, 0x68, 0xa5, 0x27, 0xbc, 0x3e, 0x97, 0x15, 0x8e, 0xc, + 0x84, 0x6, 0x9d, 0x1f, 0xb6, 0x34, 0xaf, 0x2d, 0xe0, 0x62, 0xf9, 0x7b, 0xd2, 0x50, 0xcb, 0x49, + 0x4c, 0xce, 0x55, 0xd7, 0x7e, 0xfc, 0x67, 0xe5, 0x28, 0xaa, 0x31, 0xb3, 0x1a, 0x98, 0x3, 0x81, + ], + [ + 0x0, 0x83, 0x1b, 0x98, 0x36, 0xb5, 0x2d, 0xae, 0x6c, 0xef, 0x77, 0xf4, 0x5a, 0xd9, 0x41, 0xc2, + 0xd8, 0x5b, 0xc3, 0x40, 0xee, 0x6d, 0xf5, 0x76, 0xb4, 0x37, 0xaf, 0x2c, 0x82, 0x1, 0x99, 0x1a, + 0xad, 0x2e, 0xb6, 0x35, 0x9b, 0x18, 0x80, 0x3, 0xc1, 0x42, 0xda, 0x59, 0xf7, 0x74, 0xec, 0x6f, + 0x75, 0xf6, 0x6e, 0xed, 0x43, 0xc0, 0x58, 0xdb, 0x19, 0x9a, 0x2, 0x81, 0x2f, 0xac, 0x34, 0xb7, + 0x47, 0xc4, 0x5c, 0xdf, 0x71, 0xf2, 0x6a, 0xe9, 0x2b, 0xa8, 0x30, 0xb3, 0x1d, 0x9e, 0x6, 0x85, + 0x9f, 0x1c, 0x84, 0x7, 0xa9, 0x2a, 0xb2, 0x31, 0xf3, 0x70, 0xe8, 0x6b, 0xc5, 0x46, 0xde, 0x5d, + 0xea, 0x69, 0xf1, 0x72, 0xdc, 0x5f, 0xc7, 0x44, 0x86, 0x5, 0x9d, 0x1e, 0xb0, 0x33, 0xab, 0x28, + 0x32, 0xb1, 0x29, 0xaa, 0x4, 0x87, 0x1f, 0x9c, 0x5e, 0xdd, 0x45, 0xc6, 0x68, 0xeb, 0x73, 0xf0, + 0x8e, 0xd, 0x95, 0x16, 0xb8, 0x3b, 0xa3, 0x20, 0xe2, 0x61, 0xf9, 0x7a, 0xd4, 0x57, 0xcf, 0x4c, + 0x56, 0xd5, 0x4d, 0xce, 0x60, 0xe3, 0x7b, 0xf8, 0x3a, 0xb9, 0x21, 0xa2, 0xc, 0x8f, 0x17, 0x94, + 0x23, 0xa0, 0x38, 0xbb, 0x15, 0x96, 0xe, 0x8d, 0x4f, 0xcc, 0x54, 0xd7, 0x79, 0xfa, 0x62, 0xe1, + 0xfb, 0x78, 0xe0, 0x63, 0xcd, 0x4e, 0xd6, 0x55, 0x97, 0x14, 0x8c, 0xf, 0xa1, 0x22, 0xba, 0x39, + 0xc9, 0x4a, 0xd2, 0x51, 0xff, 0x7c, 0xe4, 0x67, 0xa5, 0x26, 0xbe, 0x3d, 0x93, 0x10, 0x88, 0xb, + 0x11, 0x92, 0xa, 0x89, 0x27, 0xa4, 0x3c, 0xbf, 0x7d, 0xfe, 0x66, 0xe5, 0x4b, 0xc8, 0x50, 0xd3, + 0x64, 0xe7, 0x7f, 0xfc, 0x52, 0xd1, 0x49, 0xca, 0x8, 0x8b, 0x13, 0x90, 0x3e, 0xbd, 0x25, 0xa6, + 0xbc, 0x3f, 0xa7, 0x24, 0x8a, 0x9, 0x91, 0x12, 0xd0, 0x53, 0xcb, 0x48, 0xe6, 0x65, 0xfd, 0x7e, + ], + [ + 0x0, 0x84, 0x15, 0x91, 0x2a, 0xae, 0x3f, 0xbb, 0x54, 0xd0, 0x41, 0xc5, 0x7e, 0xfa, 0x6b, 0xef, + 0xa8, 0x2c, 0xbd, 0x39, 0x82, 0x6, 0x97, 0x13, 0xfc, 0x78, 0xe9, 0x6d, 0xd6, 0x52, 0xc3, 0x47, + 0x4d, 0xc9, 0x58, 0xdc, 0x67, 0xe3, 0x72, 0xf6, 0x19, 0x9d, 0xc, 0x88, 0x33, 0xb7, 0x26, 0xa2, + 0xe5, 0x61, 0xf0, 0x74, 0xcf, 0x4b, 0xda, 0x5e, 0xb1, 0x35, 0xa4, 0x20, 0x9b, 0x1f, 0x8e, 0xa, + 0x9a, 0x1e, 0x8f, 0xb, 0xb0, 0x34, 0xa5, 0x21, 0xce, 0x4a, 0xdb, 0x5f, 0xe4, 0x60, 0xf1, 0x75, + 0x32, 0xb6, 0x27, 0xa3, 0x18, 0x9c, 0xd, 0x89, 0x66, 0xe2, 0x73, 0xf7, 0x4c, 0xc8, 0x59, 0xdd, + 0xd7, 0x53, 0xc2, 0x46, 0xfd, 0x79, 0xe8, 0x6c, 0x83, 0x7, 0x96, 0x12, 0xa9, 0x2d, 0xbc, 0x38, + 0x7f, 0xfb, 0x6a, 0xee, 0x55, 0xd1, 0x40, 0xc4, 0x2b, 0xaf, 0x3e, 0xba, 0x1, 0x85, 0x14, 0x90, + 0x29, 0xad, 0x3c, 0xb8, 0x3, 0x87, 0x16, 0x92, 0x7d, 0xf9, 0x68, 0xec, 0x57, 0xd3, 0x42, 0xc6, + 0x81, 0x5, 0x94, 0x10, 0xab, 0x2f, 0xbe, 0x3a, 0xd5, 0x51, 0xc0, 0x44, 0xff, 0x7b, 0xea, 0x6e, + 0x64, 0xe0, 0x71, 0xf5, 0x4e, 0xca, 0x5b, 0xdf, 0x30, 0xb4, 0x25, 0xa1, 0x1a, 0x9e, 0xf, 0x8b, + 0xcc, 0x48, 0xd9, 0x5d, 0xe6, 0x62, 0xf3, 0x77, 0x98, 0x1c, 0x8d, 0x9, 0xb2, 0x36, 0xa7, 0x23, + 0xb3, 0x37, 0xa6, 0x22, 0x99, 0x1d, 0x8c, 0x8, 0xe7, 0x63, 0xf2, 0x76, 0xcd, 0x49, 0xd8, 0x5c, + 0x1b, 0x9f, 0xe, 0x8a, 0x31, 0xb5, 0x24, 0xa0, 0x4f, 0xcb, 0x5a, 0xde, 0x65, 0xe1, 0x70, 0xf4, + 0xfe, 0x7a, 0xeb, 0x6f, 0xd4, 0x50, 0xc1, 0x45, 0xaa, 0x2e, 0xbf, 0x3b, 0x80, 0x4, 0x95, 0x11, + 0x56, 0xd2, 0x43, 0xc7, 0x7c, 0xf8, 0x69, 0xed, 0x2, 0x86, 0x17, 0x93, 0x28, 0xac, 0x3d, 0xb9, + ], + [ + 0x0, 0x85, 0x17, 0x92, 0x2e, 0xab, 0x39, 0xbc, 0x5c, 0xd9, 0x4b, 0xce, 0x72, 0xf7, 0x65, 0xe0, + 0xb8, 0x3d, 0xaf, 0x2a, 0x96, 0x13, 0x81, 0x4, 0xe4, 0x61, 0xf3, 0x76, 0xca, 0x4f, 0xdd, 0x58, + 0x6d, 0xe8, 0x7a, 0xff, 0x43, 0xc6, 0x54, 0xd1, 0x31, 0xb4, 0x26, 0xa3, 0x1f, 0x9a, 0x8, 0x8d, + 0xd5, 0x50, 0xc2, 0x47, 0xfb, 0x7e, 0xec, 0x69, 0x89, 0xc, 0x9e, 0x1b, 0xa7, 0x22, 0xb0, 0x35, + 0xda, 0x5f, 0xcd, 0x48, 0xf4, 0x71, 0xe3, 0x66, 0x86, 0x3, 0x91, 0x14, 0xa8, 0x2d, 0xbf, 0x3a, + 0x62, 0xe7, 0x75, 0xf0, 0x4c, 0xc9, 0x5b, 0xde, 0x3e, 0xbb, 0x29, 0xac, 0x10, 0x95, 0x7, 0x82, + 0xb7, 0x32, 0xa0, 0x25, 0x99, 0x1c, 0x8e, 0xb, 0xeb, 0x6e, 0xfc, 0x79, 0xc5, 0x40, 0xd2, 0x57, + 0xf, 0x8a, 0x18, 0x9d, 0x21, 0xa4, 0x36, 0xb3, 0x53, 0xd6, 0x44, 0xc1, 0x7d, 0xf8, 0x6a, 0xef, + 0xa9, 0x2c, 0xbe, 0x3b, 0x87, 0x2, 0x90, 0x15, 0xf5, 0x70, 0xe2, 0x67, 0xdb, 0x5e, 0xcc, 0x49, + 0x11, 0x94, 0x6, 0x83, 0x3f, 0xba, 0x28, 0xad, 0x4d, 0xc8, 0x5a, 0xdf, 0x63, 0xe6, 0x74, 0xf1, + 0xc4, 0x41, 0xd3, 0x56, 0xea, 0x6f, 0xfd, 0x78, 0x98, 0x1d, 0x8f, 0xa, 0xb6, 0x33, 0xa1, 0x24, + 0x7c, 0xf9, 0x6b, 0xee, 0x52, 0xd7, 0x45, 0xc0, 0x20, 0xa5, 0x37, 0xb2, 0xe, 0x8b, 0x19, 0x9c, + 0x73, 0xf6, 0x64, 0xe1, 0x5d, 0xd8, 0x4a, 0xcf, 0x2f, 0xaa, 0x38, 0xbd, 0x1, 0x84, 0x16, 0x93, + 0xcb, 0x4e, 0xdc, 0x59, 0xe5, 0x60, 0xf2, 0x77, 0x97, 0x12, 0x80, 0x5, 0xb9, 0x3c, 0xae, 0x2b, + 0x1e, 0x9b, 0x9, 0x8c, 0x30, 0xb5, 0x27, 0xa2, 0x42, 0xc7, 0x55, 0xd0, 0x6c, 0xe9, 0x7b, 0xfe, + 0xa6, 0x23, 0xb1, 0x34, 0x88, 0xd, 0x9f, 0x1a, 0xfa, 0x7f, 0xed, 0x68, 0xd4, 0x51, 0xc3, 0x46, + ], + [ + 0x0, 0x86, 0x11, 0x97, 0x22, 0xa4, 0x33, 0xb5, 0x44, 0xc2, 0x55, 0xd3, 0x66, 0xe0, 0x77, 0xf1, + 0x88, 0xe, 0x99, 0x1f, 0xaa, 0x2c, 0xbb, 0x3d, 0xcc, 0x4a, 0xdd, 0x5b, 0xee, 0x68, 0xff, 0x79, + 0xd, 0x8b, 0x1c, 0x9a, 0x2f, 0xa9, 0x3e, 0xb8, 0x49, 0xcf, 0x58, 0xde, 0x6b, 0xed, 0x7a, 0xfc, + 0x85, 0x3, 0x94, 0x12, 0xa7, 0x21, 0xb6, 0x30, 0xc1, 0x47, 0xd0, 0x56, 0xe3, 0x65, 0xf2, 0x74, + 0x1a, 0x9c, 0xb, 0x8d, 0x38, 0xbe, 0x29, 0xaf, 0x5e, 0xd8, 0x4f, 0xc9, 0x7c, 0xfa, 0x6d, 0xeb, + 0x92, 0x14, 0x83, 0x5, 0xb0, 0x36, 0xa1, 0x27, 0xd6, 0x50, 0xc7, 0x41, 0xf4, 0x72, 0xe5, 0x63, + 0x17, 0x91, 0x6, 0x80, 0x35, 0xb3, 0x24, 0xa2, 0x53, 0xd5, 0x42, 0xc4, 0x71, 0xf7, 0x60, 0xe6, + 0x9f, 0x19, 0x8e, 0x8, 0xbd, 0x3b, 0xac, 0x2a, 0xdb, 0x5d, 0xca, 0x4c, 0xf9, 0x7f, 0xe8, 0x6e, + 0x34, 0xb2, 0x25, 0xa3, 0x16, 0x90, 0x7, 0x81, 0x70, 0xf6, 0x61, 0xe7, 0x52, 0xd4, 0x43, 0xc5, + 0xbc, 0x3a, 0xad, 0x2b, 0x9e, 0x18, 0x8f, 0x9, 0xf8, 0x7e, 0xe9, 0x6f, 0xda, 0x5c, 0xcb, 0x4d, + 0x39, 0xbf, 0x28, 0xae, 0x1b, 0x9d, 0xa, 0x8c, 0x7d, 0xfb, 0x6c, 0xea, 0x5f, 0xd9, 0x4e, 0xc8, + 0xb1, 0x37, 0xa0, 0x26, 0x93, 0x15, 0x82, 0x4, 0xf5, 0x73, 0xe4, 0x62, 0xd7, 0x51, 0xc6, 0x40, + 0x2e, 0xa8, 0x3f, 0xb9, 0xc, 0x8a, 0x1d, 0x9b, 0x6a, 0xec, 0x7b, 0xfd, 0x48, 0xce, 0x59, 0xdf, + 0xa6, 0x20, 0xb7, 0x31, 0x84, 0x2, 0x95, 0x13, 0xe2, 0x64, 0xf3, 0x75, 0xc0, 0x46, 0xd1, 0x57, + 0x23, 0xa5, 0x32, 0xb4, 0x1, 0x87, 0x10, 0x96, 0x67, 0xe1, 0x76, 0xf0, 0x45, 0xc3, 0x54, 0xd2, + 0xab, 0x2d, 0xba, 0x3c, 0x89, 0xf, 0x98, 0x1e, 0xef, 0x69, 0xfe, 0x78, 0xcd, 0x4b, 0xdc, 0x5a, + ], + [ + 0x0, 0x87, 0x13, 0x94, 0x26, 0xa1, 0x35, 0xb2, 0x4c, 0xcb, 0x5f, 0xd8, 0x6a, 0xed, 0x79, 0xfe, + 0x98, 0x1f, 0x8b, 0xc, 0xbe, 0x39, 0xad, 0x2a, 0xd4, 0x53, 0xc7, 0x40, 0xf2, 0x75, 0xe1, 0x66, + 0x2d, 0xaa, 0x3e, 0xb9, 0xb, 0x8c, 0x18, 0x9f, 0x61, 0xe6, 0x72, 0xf5, 0x47, 0xc0, 0x54, 0xd3, + 0xb5, 0x32, 0xa6, 0x21, 0x93, 0x14, 0x80, 0x7, 0xf9, 0x7e, 0xea, 0x6d, 0xdf, 0x58, 0xcc, 0x4b, + 0x5a, 0xdd, 0x49, 0xce, 0x7c, 0xfb, 0x6f, 0xe8, 0x16, 0x91, 0x5, 0x82, 0x30, 0xb7, 0x23, 0xa4, + 0xc2, 0x45, 0xd1, 0x56, 0xe4, 0x63, 0xf7, 0x70, 0x8e, 0x9, 0x9d, 0x1a, 0xa8, 0x2f, 0xbb, 0x3c, + 0x77, 0xf0, 0x64, 0xe3, 0x51, 0xd6, 0x42, 0xc5, 0x3b, 0xbc, 0x28, 0xaf, 0x1d, 0x9a, 0xe, 0x89, + 0xef, 0x68, 0xfc, 0x7b, 0xc9, 0x4e, 0xda, 0x5d, 0xa3, 0x24, 0xb0, 0x37, 0x85, 0x2, 0x96, 0x11, + 0xb4, 0x33, 0xa7, 0x20, 0x92, 0x15, 0x81, 0x6, 0xf8, 0x7f, 0xeb, 0x6c, 0xde, 0x59, 0xcd, 0x4a, + 0x2c, 0xab, 0x3f, 0xb8, 0xa, 0x8d, 0x19, 0x9e, 0x60, 0xe7, 0x73, 0xf4, 0x46, 0xc1, 0x55, 0xd2, + 0x99, 0x1e, 0x8a, 0xd, 0xbf, 0x38, 0xac, 0x2b, 0xd5, 0x52, 0xc6, 0x41, 0xf3, 0x74, 0xe0, 0x67, + 0x1, 0x86, 0x12, 0x95, 0x27, 0xa0, 0x34, 0xb3, 0x4d, 0xca, 0x5e, 0xd9, 0x6b, 0xec, 0x78, 0xff, + 0xee, 0x69, 0xfd, 0x7a, 0xc8, 0x4f, 0xdb, 0x5c, 0xa2, 0x25, 0xb1, 0x36, 0x84, 0x3, 0x97, 0x10, + 0x76, 0xf1, 0x65, 0xe2, 0x50, 0xd7, 0x43, 0xc4, 0x3a, 0xbd, 0x29, 0xae, 0x1c, 0x9b, 0xf, 0x88, + 0xc3, 0x44, 0xd0, 0x57, 0xe5, 0x62, 0xf6, 0x71, 0x8f, 0x8, 0x9c, 0x1b, 0xa9, 0x2e, 0xba, 0x3d, + 0x5b, 0xdc, 0x48, 0xcf, 0x7d, 0xfa, 0x6e, 0xe9, 0x17, 0x90, 0x4, 0x83, 0x31, 0xb6, 0x22, 0xa5, + ], + [ + 0x0, 0x88, 0xd, 0x85, 0x1a, 0x92, 0x17, 0x9f, 0x34, 0xbc, 0x39, 0xb1, 0x2e, 0xa6, 0x23, 0xab, + 0x68, 0xe0, 0x65, 0xed, 0x72, 0xfa, 0x7f, 0xf7, 0x5c, 0xd4, 0x51, 0xd9, 0x46, 0xce, 0x4b, 0xc3, + 0xd0, 0x58, 0xdd, 0x55, 0xca, 0x42, 0xc7, 0x4f, 0xe4, 0x6c, 0xe9, 0x61, 0xfe, 0x76, 0xf3, 0x7b, + 0xb8, 0x30, 0xb5, 0x3d, 0xa2, 0x2a, 0xaf, 0x27, 0x8c, 0x4, 0x81, 0x9, 0x96, 0x1e, 0x9b, 0x13, + 0xbd, 0x35, 0xb0, 0x38, 0xa7, 0x2f, 0xaa, 0x22, 0x89, 0x1, 0x84, 0xc, 0x93, 0x1b, 0x9e, 0x16, + 0xd5, 0x5d, 0xd8, 0x50, 0xcf, 0x47, 0xc2, 0x4a, 0xe1, 0x69, 0xec, 0x64, 0xfb, 0x73, 0xf6, 0x7e, + 0x6d, 0xe5, 0x60, 0xe8, 0x77, 0xff, 0x7a, 0xf2, 0x59, 0xd1, 0x54, 0xdc, 0x43, 0xcb, 0x4e, 0xc6, + 0x5, 0x8d, 0x8, 0x80, 0x1f, 0x97, 0x12, 0x9a, 0x31, 0xb9, 0x3c, 0xb4, 0x2b, 0xa3, 0x26, 0xae, + 0x67, 0xef, 0x6a, 0xe2, 0x7d, 0xf5, 0x70, 0xf8, 0x53, 0xdb, 0x5e, 0xd6, 0x49, 0xc1, 0x44, 0xcc, + 0xf, 0x87, 0x2, 0x8a, 0x15, 0x9d, 0x18, 0x90, 0x3b, 0xb3, 0x36, 0xbe, 0x21, 0xa9, 0x2c, 0xa4, + 0xb7, 0x3f, 0xba, 0x32, 0xad, 0x25, 0xa0, 0x28, 0x83, 0xb, 0x8e, 0x6, 0x99, 0x11, 0x94, 0x1c, + 0xdf, 0x57, 0xd2, 0x5a, 0xc5, 0x4d, 0xc8, 0x40, 0xeb, 0x63, 0xe6, 0x6e, 0xf1, 0x79, 0xfc, 0x74, + 0xda, 0x52, 0xd7, 0x5f, 0xc0, 0x48, 0xcd, 0x45, 0xee, 0x66, 0xe3, 0x6b, 0xf4, 0x7c, 0xf9, 0x71, + 0xb2, 0x3a, 0xbf, 0x37, 0xa8, 0x20, 0xa5, 0x2d, 0x86, 0xe, 0x8b, 0x3, 0x9c, 0x14, 0x91, 0x19, + 0xa, 0x82, 0x7, 0x8f, 0x10, 0x98, 0x1d, 0x95, 0x3e, 0xb6, 0x33, 0xbb, 0x24, 0xac, 0x29, 0xa1, + 0x62, 0xea, 0x6f, 0xe7, 0x78, 0xf0, 0x75, 0xfd, 0x56, 0xde, 0x5b, 0xd3, 0x4c, 0xc4, 0x41, 0xc9, + ], + [ + 0x0, 0x89, 0xf, 0x86, 0x1e, 0x97, 0x11, 0x98, 0x3c, 0xb5, 0x33, 0xba, 0x22, 0xab, 0x2d, 0xa4, + 0x78, 0xf1, 0x77, 0xfe, 0x66, 0xef, 0x69, 0xe0, 0x44, 0xcd, 0x4b, 0xc2, 0x5a, 0xd3, 0x55, 0xdc, + 0xf0, 0x79, 0xff, 0x76, 0xee, 0x67, 0xe1, 0x68, 0xcc, 0x45, 0xc3, 0x4a, 0xd2, 0x5b, 0xdd, 0x54, + 0x88, 0x1, 0x87, 0xe, 0x96, 0x1f, 0x99, 0x10, 0xb4, 0x3d, 0xbb, 0x32, 0xaa, 0x23, 0xa5, 0x2c, + 0xfd, 0x74, 0xf2, 0x7b, 0xe3, 0x6a, 0xec, 0x65, 0xc1, 0x48, 0xce, 0x47, 0xdf, 0x56, 0xd0, 0x59, + 0x85, 0xc, 0x8a, 0x3, 0x9b, 0x12, 0x94, 0x1d, 0xb9, 0x30, 0xb6, 0x3f, 0xa7, 0x2e, 0xa8, 0x21, + 0xd, 0x84, 0x2, 0x8b, 0x13, 0x9a, 0x1c, 0x95, 0x31, 0xb8, 0x3e, 0xb7, 0x2f, 0xa6, 0x20, 0xa9, + 0x75, 0xfc, 0x7a, 0xf3, 0x6b, 0xe2, 0x64, 0xed, 0x49, 0xc0, 0x46, 0xcf, 0x57, 0xde, 0x58, 0xd1, + 0xe7, 0x6e, 0xe8, 0x61, 0xf9, 0x70, 0xf6, 0x7f, 0xdb, 0x52, 0xd4, 0x5d, 0xc5, 0x4c, 0xca, 0x43, + 0x9f, 0x16, 0x90, 0x19, 0x81, 0x8, 0x8e, 0x7, 0xa3, 0x2a, 0xac, 0x25, 0xbd, 0x34, 0xb2, 0x3b, + 0x17, 0x9e, 0x18, 0x91, 0x9, 0x80, 0x6, 0x8f, 0x2b, 0xa2, 0x24, 0xad, 0x35, 0xbc, 0x3a, 0xb3, + 0x6f, 0xe6, 0x60, 0xe9, 0x71, 0xf8, 0x7e, 0xf7, 0x53, 0xda, 0x5c, 0xd5, 0x4d, 0xc4, 0x42, 0xcb, + 0x1a, 0x93, 0x15, 0x9c, 0x4, 0x8d, 0xb, 0x82, 0x26, 0xaf, 0x29, 0xa0, 0x38, 0xb1, 0x37, 0xbe, + 0x62, 0xeb, 0x6d, 0xe4, 0x7c, 0xf5, 0x73, 0xfa, 0x5e, 0xd7, 0x51, 0xd8, 0x40, 0xc9, 0x4f, 0xc6, + 0xea, 0x63, 0xe5, 0x6c, 0xf4, 0x7d, 0xfb, 0x72, 0xd6, 0x5f, 0xd9, 0x50, 0xc8, 0x41, 0xc7, 0x4e, + 0x92, 0x1b, 0x9d, 0x14, 0x8c, 0x5, 0x83, 0xa, 0xae, 0x27, 0xa1, 0x28, 0xb0, 0x39, 0xbf, 0x36, + ], + [ + 0x0, 0x8a, 0x9, 0x83, 0x12, 0x98, 0x1b, 0x91, 0x24, 0xae, 0x2d, 0xa7, 0x36, 0xbc, 0x3f, 0xb5, + 0x48, 0xc2, 0x41, 0xcb, 0x5a, 0xd0, 0x53, 0xd9, 0x6c, 0xe6, 0x65, 0xef, 0x7e, 0xf4, 0x77, 0xfd, + 0x90, 0x1a, 0x99, 0x13, 0x82, 0x8, 0x8b, 0x1, 0xb4, 0x3e, 0xbd, 0x37, 0xa6, 0x2c, 0xaf, 0x25, + 0xd8, 0x52, 0xd1, 0x5b, 0xca, 0x40, 0xc3, 0x49, 0xfc, 0x76, 0xf5, 0x7f, 0xee, 0x64, 0xe7, 0x6d, + 0x3d, 0xb7, 0x34, 0xbe, 0x2f, 0xa5, 0x26, 0xac, 0x19, 0x93, 0x10, 0x9a, 0xb, 0x81, 0x2, 0x88, + 0x75, 0xff, 0x7c, 0xf6, 0x67, 0xed, 0x6e, 0xe4, 0x51, 0xdb, 0x58, 0xd2, 0x43, 0xc9, 0x4a, 0xc0, + 0xad, 0x27, 0xa4, 0x2e, 0xbf, 0x35, 0xb6, 0x3c, 0x89, 0x3, 0x80, 0xa, 0x9b, 0x11, 0x92, 0x18, + 0xe5, 0x6f, 0xec, 0x66, 0xf7, 0x7d, 0xfe, 0x74, 0xc1, 0x4b, 0xc8, 0x42, 0xd3, 0x59, 0xda, 0x50, + 0x7a, 0xf0, 0x73, 0xf9, 0x68, 0xe2, 0x61, 0xeb, 0x5e, 0xd4, 0x57, 0xdd, 0x4c, 0xc6, 0x45, 0xcf, + 0x32, 0xb8, 0x3b, 0xb1, 0x20, 0xaa, 0x29, 0xa3, 0x16, 0x9c, 0x1f, 0x95, 0x4, 0x8e, 0xd, 0x87, + 0xea, 0x60, 0xe3, 0x69, 0xf8, 0x72, 0xf1, 0x7b, 0xce, 0x44, 0xc7, 0x4d, 0xdc, 0x56, 0xd5, 0x5f, + 0xa2, 0x28, 0xab, 0x21, 0xb0, 0x3a, 0xb9, 0x33, 0x86, 0xc, 0x8f, 0x5, 0x94, 0x1e, 0x9d, 0x17, + 0x47, 0xcd, 0x4e, 0xc4, 0x55, 0xdf, 0x5c, 0xd6, 0x63, 0xe9, 0x6a, 0xe0, 0x71, 0xfb, 0x78, 0xf2, + 0xf, 0x85, 0x6, 0x8c, 0x1d, 0x97, 0x14, 0x9e, 0x2b, 0xa1, 0x22, 0xa8, 0x39, 0xb3, 0x30, 0xba, + 0xd7, 0x5d, 0xde, 0x54, 0xc5, 0x4f, 0xcc, 0x46, 0xf3, 0x79, 0xfa, 0x70, 0xe1, 0x6b, 0xe8, 0x62, + 0x9f, 0x15, 0x96, 0x1c, 0x8d, 0x7, 0x84, 0xe, 0xbb, 0x31, 0xb2, 0x38, 0xa9, 0x23, 0xa0, 0x2a, + ], + [ + 0x0, 0x8b, 0xb, 0x80, 0x16, 0x9d, 0x1d, 0x96, 0x2c, 0xa7, 0x27, 0xac, 0x3a, 0xb1, 0x31, 0xba, + 0x58, 0xd3, 0x53, 0xd8, 0x4e, 0xc5, 0x45, 0xce, 0x74, 0xff, 0x7f, 0xf4, 0x62, 0xe9, 0x69, 0xe2, + 0xb0, 0x3b, 0xbb, 0x30, 0xa6, 0x2d, 0xad, 0x26, 0x9c, 0x17, 0x97, 0x1c, 0x8a, 0x1, 0x81, 0xa, + 0xe8, 0x63, 0xe3, 0x68, 0xfe, 0x75, 0xf5, 0x7e, 0xc4, 0x4f, 0xcf, 0x44, 0xd2, 0x59, 0xd9, 0x52, + 0x7d, 0xf6, 0x76, 0xfd, 0x6b, 0xe0, 0x60, 0xeb, 0x51, 0xda, 0x5a, 0xd1, 0x47, 0xcc, 0x4c, 0xc7, + 0x25, 0xae, 0x2e, 0xa5, 0x33, 0xb8, 0x38, 0xb3, 0x9, 0x82, 0x2, 0x89, 0x1f, 0x94, 0x14, 0x9f, + 0xcd, 0x46, 0xc6, 0x4d, 0xdb, 0x50, 0xd0, 0x5b, 0xe1, 0x6a, 0xea, 0x61, 0xf7, 0x7c, 0xfc, 0x77, + 0x95, 0x1e, 0x9e, 0x15, 0x83, 0x8, 0x88, 0x3, 0xb9, 0x32, 0xb2, 0x39, 0xaf, 0x24, 0xa4, 0x2f, + 0xfa, 0x71, 0xf1, 0x7a, 0xec, 0x67, 0xe7, 0x6c, 0xd6, 0x5d, 0xdd, 0x56, 0xc0, 0x4b, 0xcb, 0x40, + 0xa2, 0x29, 0xa9, 0x22, 0xb4, 0x3f, 0xbf, 0x34, 0x8e, 0x5, 0x85, 0xe, 0x98, 0x13, 0x93, 0x18, + 0x4a, 0xc1, 0x41, 0xca, 0x5c, 0xd7, 0x57, 0xdc, 0x66, 0xed, 0x6d, 0xe6, 0x70, 0xfb, 0x7b, 0xf0, + 0x12, 0x99, 0x19, 0x92, 0x4, 0x8f, 0xf, 0x84, 0x3e, 0xb5, 0x35, 0xbe, 0x28, 0xa3, 0x23, 0xa8, + 0x87, 0xc, 0x8c, 0x7, 0x91, 0x1a, 0x9a, 0x11, 0xab, 0x20, 0xa0, 0x2b, 0xbd, 0x36, 0xb6, 0x3d, + 0xdf, 0x54, 0xd4, 0x5f, 0xc9, 0x42, 0xc2, 0x49, 0xf3, 0x78, 0xf8, 0x73, 0xe5, 0x6e, 0xee, 0x65, + 0x37, 0xbc, 0x3c, 0xb7, 0x21, 0xaa, 0x2a, 0xa1, 0x1b, 0x90, 0x10, 0x9b, 0xd, 0x86, 0x6, 0x8d, + 0x6f, 0xe4, 0x64, 0xef, 0x79, 0xf2, 0x72, 0xf9, 0x43, 0xc8, 0x48, 0xc3, 0x55, 0xde, 0x5e, 0xd5, + ], + [ + 0x0, 0x8c, 0x5, 0x89, 0xa, 0x86, 0xf, 0x83, 0x14, 0x98, 0x11, 0x9d, 0x1e, 0x92, 0x1b, 0x97, + 0x28, 0xa4, 0x2d, 0xa1, 0x22, 0xae, 0x27, 0xab, 0x3c, 0xb0, 0x39, 0xb5, 0x36, 0xba, 0x33, 0xbf, + 0x50, 0xdc, 0x55, 0xd9, 0x5a, 0xd6, 0x5f, 0xd3, 0x44, 0xc8, 0x41, 0xcd, 0x4e, 0xc2, 0x4b, 0xc7, + 0x78, 0xf4, 0x7d, 0xf1, 0x72, 0xfe, 0x77, 0xfb, 0x6c, 0xe0, 0x69, 0xe5, 0x66, 0xea, 0x63, 0xef, + 0xa0, 0x2c, 0xa5, 0x29, 0xaa, 0x26, 0xaf, 0x23, 0xb4, 0x38, 0xb1, 0x3d, 0xbe, 0x32, 0xbb, 0x37, + 0x88, 0x4, 0x8d, 0x1, 0x82, 0xe, 0x87, 0xb, 0x9c, 0x10, 0x99, 0x15, 0x96, 0x1a, 0x93, 0x1f, + 0xf0, 0x7c, 0xf5, 0x79, 0xfa, 0x76, 0xff, 0x73, 0xe4, 0x68, 0xe1, 0x6d, 0xee, 0x62, 0xeb, 0x67, + 0xd8, 0x54, 0xdd, 0x51, 0xd2, 0x5e, 0xd7, 0x5b, 0xcc, 0x40, 0xc9, 0x45, 0xc6, 0x4a, 0xc3, 0x4f, + 0x5d, 0xd1, 0x58, 0xd4, 0x57, 0xdb, 0x52, 0xde, 0x49, 0xc5, 0x4c, 0xc0, 0x43, 0xcf, 0x46, 0xca, + 0x75, 0xf9, 0x70, 0xfc, 0x7f, 0xf3, 0x7a, 0xf6, 0x61, 0xed, 0x64, 0xe8, 0x6b, 0xe7, 0x6e, 0xe2, + 0xd, 0x81, 0x8, 0x84, 0x7, 0x8b, 0x2, 0x8e, 0x19, 0x95, 0x1c, 0x90, 0x13, 0x9f, 0x16, 0x9a, + 0x25, 0xa9, 0x20, 0xac, 0x2f, 0xa3, 0x2a, 0xa6, 0x31, 0xbd, 0x34, 0xb8, 0x3b, 0xb7, 0x3e, 0xb2, + 0xfd, 0x71, 0xf8, 0x74, 0xf7, 0x7b, 0xf2, 0x7e, 0xe9, 0x65, 0xec, 0x60, 0xe3, 0x6f, 0xe6, 0x6a, + 0xd5, 0x59, 0xd0, 0x5c, 0xdf, 0x53, 0xda, 0x56, 0xc1, 0x4d, 0xc4, 0x48, 0xcb, 0x47, 0xce, 0x42, + 0xad, 0x21, 0xa8, 0x24, 0xa7, 0x2b, 0xa2, 0x2e, 0xb9, 0x35, 0xbc, 0x30, 0xb3, 0x3f, 0xb6, 0x3a, + 0x85, 0x9, 0x80, 0xc, 0x8f, 0x3, 0x8a, 0x6, 0x91, 0x1d, 0x94, 0x18, 0x9b, 0x17, 0x9e, 0x12, + ], + [ + 0x0, 0x8d, 0x7, 0x8a, 0xe, 0x83, 0x9, 0x84, 0x1c, 0x91, 0x1b, 0x96, 0x12, 0x9f, 0x15, 0x98, + 0x38, 0xb5, 0x3f, 0xb2, 0x36, 0xbb, 0x31, 0xbc, 0x24, 0xa9, 0x23, 0xae, 0x2a, 0xa7, 0x2d, 0xa0, + 0x70, 0xfd, 0x77, 0xfa, 0x7e, 0xf3, 0x79, 0xf4, 0x6c, 0xe1, 0x6b, 0xe6, 0x62, 0xef, 0x65, 0xe8, + 0x48, 0xc5, 0x4f, 0xc2, 0x46, 0xcb, 0x41, 0xcc, 0x54, 0xd9, 0x53, 0xde, 0x5a, 0xd7, 0x5d, 0xd0, + 0xe0, 0x6d, 0xe7, 0x6a, 0xee, 0x63, 0xe9, 0x64, 0xfc, 0x71, 0xfb, 0x76, 0xf2, 0x7f, 0xf5, 0x78, + 0xd8, 0x55, 0xdf, 0x52, 0xd6, 0x5b, 0xd1, 0x5c, 0xc4, 0x49, 0xc3, 0x4e, 0xca, 0x47, 0xcd, 0x40, + 0x90, 0x1d, 0x97, 0x1a, 0x9e, 0x13, 0x99, 0x14, 0x8c, 0x1, 0x8b, 0x6, 0x82, 0xf, 0x85, 0x8, + 0xa8, 0x25, 0xaf, 0x22, 0xa6, 0x2b, 0xa1, 0x2c, 0xb4, 0x39, 0xb3, 0x3e, 0xba, 0x37, 0xbd, 0x30, + 0xdd, 0x50, 0xda, 0x57, 0xd3, 0x5e, 0xd4, 0x59, 0xc1, 0x4c, 0xc6, 0x4b, 0xcf, 0x42, 0xc8, 0x45, + 0xe5, 0x68, 0xe2, 0x6f, 0xeb, 0x66, 0xec, 0x61, 0xf9, 0x74, 0xfe, 0x73, 0xf7, 0x7a, 0xf0, 0x7d, + 0xad, 0x20, 0xaa, 0x27, 0xa3, 0x2e, 0xa4, 0x29, 0xb1, 0x3c, 0xb6, 0x3b, 0xbf, 0x32, 0xb8, 0x35, + 0x95, 0x18, 0x92, 0x1f, 0x9b, 0x16, 0x9c, 0x11, 0x89, 0x4, 0x8e, 0x3, 0x87, 0xa, 0x80, 0xd, + 0x3d, 0xb0, 0x3a, 0xb7, 0x33, 0xbe, 0x34, 0xb9, 0x21, 0xac, 0x26, 0xab, 0x2f, 0xa2, 0x28, 0xa5, + 0x5, 0x88, 0x2, 0x8f, 0xb, 0x86, 0xc, 0x81, 0x19, 0x94, 0x1e, 0x93, 0x17, 0x9a, 0x10, 0x9d, + 0x4d, 0xc0, 0x4a, 0xc7, 0x43, 0xce, 0x44, 0xc9, 0x51, 0xdc, 0x56, 0xdb, 0x5f, 0xd2, 0x58, 0xd5, + 0x75, 0xf8, 0x72, 0xff, 0x7b, 0xf6, 0x7c, 0xf1, 0x69, 0xe4, 0x6e, 0xe3, 0x67, 0xea, 0x60, 0xed, + ], + [ + 0x0, 0x8e, 0x1, 0x8f, 0x2, 0x8c, 0x3, 0x8d, 0x4, 0x8a, 0x5, 0x8b, 0x6, 0x88, 0x7, 0x89, 0x8, + 0x86, 0x9, 0x87, 0xa, 0x84, 0xb, 0x85, 0xc, 0x82, 0xd, 0x83, 0xe, 0x80, 0xf, 0x81, 0x10, 0x9e, + 0x11, 0x9f, 0x12, 0x9c, 0x13, 0x9d, 0x14, 0x9a, 0x15, 0x9b, 0x16, 0x98, 0x17, 0x99, 0x18, 0x96, + 0x19, 0x97, 0x1a, 0x94, 0x1b, 0x95, 0x1c, 0x92, 0x1d, 0x93, 0x1e, 0x90, 0x1f, 0x91, 0x20, 0xae, + 0x21, 0xaf, 0x22, 0xac, 0x23, 0xad, 0x24, 0xaa, 0x25, 0xab, 0x26, 0xa8, 0x27, 0xa9, 0x28, 0xa6, + 0x29, 0xa7, 0x2a, 0xa4, 0x2b, 0xa5, 0x2c, 0xa2, 0x2d, 0xa3, 0x2e, 0xa0, 0x2f, 0xa1, 0x30, 0xbe, + 0x31, 0xbf, 0x32, 0xbc, 0x33, 0xbd, 0x34, 0xba, 0x35, 0xbb, 0x36, 0xb8, 0x37, 0xb9, 0x38, 0xb6, + 0x39, 0xb7, 0x3a, 0xb4, 0x3b, 0xb5, 0x3c, 0xb2, 0x3d, 0xb3, 0x3e, 0xb0, 0x3f, 0xb1, 0x40, 0xce, + 0x41, 0xcf, 0x42, 0xcc, 0x43, 0xcd, 0x44, 0xca, 0x45, 0xcb, 0x46, 0xc8, 0x47, 0xc9, 0x48, 0xc6, + 0x49, 0xc7, 0x4a, 0xc4, 0x4b, 0xc5, 0x4c, 0xc2, 0x4d, 0xc3, 0x4e, 0xc0, 0x4f, 0xc1, 0x50, 0xde, + 0x51, 0xdf, 0x52, 0xdc, 0x53, 0xdd, 0x54, 0xda, 0x55, 0xdb, 0x56, 0xd8, 0x57, 0xd9, 0x58, 0xd6, + 0x59, 0xd7, 0x5a, 0xd4, 0x5b, 0xd5, 0x5c, 0xd2, 0x5d, 0xd3, 0x5e, 0xd0, 0x5f, 0xd1, 0x60, 0xee, + 0x61, 0xef, 0x62, 0xec, 0x63, 0xed, 0x64, 0xea, 0x65, 0xeb, 0x66, 0xe8, 0x67, 0xe9, 0x68, 0xe6, + 0x69, 0xe7, 0x6a, 0xe4, 0x6b, 0xe5, 0x6c, 0xe2, 0x6d, 0xe3, 0x6e, 0xe0, 0x6f, 0xe1, 0x70, 0xfe, + 0x71, 0xff, 0x72, 0xfc, 0x73, 0xfd, 0x74, 0xfa, 0x75, 0xfb, 0x76, 0xf8, 0x77, 0xf9, 0x78, 0xf6, + 0x79, 0xf7, 0x7a, 0xf4, 0x7b, 0xf5, 0x7c, 0xf2, 0x7d, 0xf3, 0x7e, 0xf0, 0x7f, 0xf1, + ], + [ + 0x0, 0x8f, 0x3, 0x8c, 0x6, 0x89, 0x5, 0x8a, 0xc, 0x83, 0xf, 0x80, 0xa, 0x85, 0x9, 0x86, 0x18, + 0x97, 0x1b, 0x94, 0x1e, 0x91, 0x1d, 0x92, 0x14, 0x9b, 0x17, 0x98, 0x12, 0x9d, 0x11, 0x9e, 0x30, + 0xbf, 0x33, 0xbc, 0x36, 0xb9, 0x35, 0xba, 0x3c, 0xb3, 0x3f, 0xb0, 0x3a, 0xb5, 0x39, 0xb6, 0x28, + 0xa7, 0x2b, 0xa4, 0x2e, 0xa1, 0x2d, 0xa2, 0x24, 0xab, 0x27, 0xa8, 0x22, 0xad, 0x21, 0xae, 0x60, + 0xef, 0x63, 0xec, 0x66, 0xe9, 0x65, 0xea, 0x6c, 0xe3, 0x6f, 0xe0, 0x6a, 0xe5, 0x69, 0xe6, 0x78, + 0xf7, 0x7b, 0xf4, 0x7e, 0xf1, 0x7d, 0xf2, 0x74, 0xfb, 0x77, 0xf8, 0x72, 0xfd, 0x71, 0xfe, 0x50, + 0xdf, 0x53, 0xdc, 0x56, 0xd9, 0x55, 0xda, 0x5c, 0xd3, 0x5f, 0xd0, 0x5a, 0xd5, 0x59, 0xd6, 0x48, + 0xc7, 0x4b, 0xc4, 0x4e, 0xc1, 0x4d, 0xc2, 0x44, 0xcb, 0x47, 0xc8, 0x42, 0xcd, 0x41, 0xce, 0xc0, + 0x4f, 0xc3, 0x4c, 0xc6, 0x49, 0xc5, 0x4a, 0xcc, 0x43, 0xcf, 0x40, 0xca, 0x45, 0xc9, 0x46, 0xd8, + 0x57, 0xdb, 0x54, 0xde, 0x51, 0xdd, 0x52, 0xd4, 0x5b, 0xd7, 0x58, 0xd2, 0x5d, 0xd1, 0x5e, 0xf0, + 0x7f, 0xf3, 0x7c, 0xf6, 0x79, 0xf5, 0x7a, 0xfc, 0x73, 0xff, 0x70, 0xfa, 0x75, 0xf9, 0x76, 0xe8, + 0x67, 0xeb, 0x64, 0xee, 0x61, 0xed, 0x62, 0xe4, 0x6b, 0xe7, 0x68, 0xe2, 0x6d, 0xe1, 0x6e, 0xa0, + 0x2f, 0xa3, 0x2c, 0xa6, 0x29, 0xa5, 0x2a, 0xac, 0x23, 0xaf, 0x20, 0xaa, 0x25, 0xa9, 0x26, 0xb8, + 0x37, 0xbb, 0x34, 0xbe, 0x31, 0xbd, 0x32, 0xb4, 0x3b, 0xb7, 0x38, 0xb2, 0x3d, 0xb1, 0x3e, 0x90, + 0x1f, 0x93, 0x1c, 0x96, 0x19, 0x95, 0x1a, 0x9c, 0x13, 0x9f, 0x10, 0x9a, 0x15, 0x99, 0x16, 0x88, + 0x7, 0x8b, 0x4, 0x8e, 0x1, 0x8d, 0x2, 0x84, 0xb, 0x87, 0x8, 0x82, 0xd, 0x81, 0xe, + ], + [ + 0x0, 0x90, 0x3d, 0xad, 0x7a, 0xea, 0x47, 0xd7, 0xf4, 0x64, 0xc9, 0x59, 0x8e, 0x1e, 0xb3, 0x23, + 0xf5, 0x65, 0xc8, 0x58, 0x8f, 0x1f, 0xb2, 0x22, 0x1, 0x91, 0x3c, 0xac, 0x7b, 0xeb, 0x46, 0xd6, + 0xf7, 0x67, 0xca, 0x5a, 0x8d, 0x1d, 0xb0, 0x20, 0x3, 0x93, 0x3e, 0xae, 0x79, 0xe9, 0x44, 0xd4, + 0x2, 0x92, 0x3f, 0xaf, 0x78, 0xe8, 0x45, 0xd5, 0xf6, 0x66, 0xcb, 0x5b, 0x8c, 0x1c, 0xb1, 0x21, + 0xf3, 0x63, 0xce, 0x5e, 0x89, 0x19, 0xb4, 0x24, 0x7, 0x97, 0x3a, 0xaa, 0x7d, 0xed, 0x40, 0xd0, + 0x6, 0x96, 0x3b, 0xab, 0x7c, 0xec, 0x41, 0xd1, 0xf2, 0x62, 0xcf, 0x5f, 0x88, 0x18, 0xb5, 0x25, + 0x4, 0x94, 0x39, 0xa9, 0x7e, 0xee, 0x43, 0xd3, 0xf0, 0x60, 0xcd, 0x5d, 0x8a, 0x1a, 0xb7, 0x27, + 0xf1, 0x61, 0xcc, 0x5c, 0x8b, 0x1b, 0xb6, 0x26, 0x5, 0x95, 0x38, 0xa8, 0x7f, 0xef, 0x42, 0xd2, + 0xfb, 0x6b, 0xc6, 0x56, 0x81, 0x11, 0xbc, 0x2c, 0xf, 0x9f, 0x32, 0xa2, 0x75, 0xe5, 0x48, 0xd8, + 0xe, 0x9e, 0x33, 0xa3, 0x74, 0xe4, 0x49, 0xd9, 0xfa, 0x6a, 0xc7, 0x57, 0x80, 0x10, 0xbd, 0x2d, + 0xc, 0x9c, 0x31, 0xa1, 0x76, 0xe6, 0x4b, 0xdb, 0xf8, 0x68, 0xc5, 0x55, 0x82, 0x12, 0xbf, 0x2f, + 0xf9, 0x69, 0xc4, 0x54, 0x83, 0x13, 0xbe, 0x2e, 0xd, 0x9d, 0x30, 0xa0, 0x77, 0xe7, 0x4a, 0xda, + 0x8, 0x98, 0x35, 0xa5, 0x72, 0xe2, 0x4f, 0xdf, 0xfc, 0x6c, 0xc1, 0x51, 0x86, 0x16, 0xbb, 0x2b, + 0xfd, 0x6d, 0xc0, 0x50, 0x87, 0x17, 0xba, 0x2a, 0x9, 0x99, 0x34, 0xa4, 0x73, 0xe3, 0x4e, 0xde, + 0xff, 0x6f, 0xc2, 0x52, 0x85, 0x15, 0xb8, 0x28, 0xb, 0x9b, 0x36, 0xa6, 0x71, 0xe1, 0x4c, 0xdc, + 0xa, 0x9a, 0x37, 0xa7, 0x70, 0xe0, 0x4d, 0xdd, 0xfe, 0x6e, 0xc3, 0x53, 0x84, 0x14, 0xb9, 0x29, + ], + [ + 0x0, 0x91, 0x3f, 0xae, 0x7e, 0xef, 0x41, 0xd0, 0xfc, 0x6d, 0xc3, 0x52, 0x82, 0x13, 0xbd, 0x2c, + 0xe5, 0x74, 0xda, 0x4b, 0x9b, 0xa, 0xa4, 0x35, 0x19, 0x88, 0x26, 0xb7, 0x67, 0xf6, 0x58, 0xc9, + 0xd7, 0x46, 0xe8, 0x79, 0xa9, 0x38, 0x96, 0x7, 0x2b, 0xba, 0x14, 0x85, 0x55, 0xc4, 0x6a, 0xfb, + 0x32, 0xa3, 0xd, 0x9c, 0x4c, 0xdd, 0x73, 0xe2, 0xce, 0x5f, 0xf1, 0x60, 0xb0, 0x21, 0x8f, 0x1e, + 0xb3, 0x22, 0x8c, 0x1d, 0xcd, 0x5c, 0xf2, 0x63, 0x4f, 0xde, 0x70, 0xe1, 0x31, 0xa0, 0xe, 0x9f, + 0x56, 0xc7, 0x69, 0xf8, 0x28, 0xb9, 0x17, 0x86, 0xaa, 0x3b, 0x95, 0x4, 0xd4, 0x45, 0xeb, 0x7a, + 0x64, 0xf5, 0x5b, 0xca, 0x1a, 0x8b, 0x25, 0xb4, 0x98, 0x9, 0xa7, 0x36, 0xe6, 0x77, 0xd9, 0x48, + 0x81, 0x10, 0xbe, 0x2f, 0xff, 0x6e, 0xc0, 0x51, 0x7d, 0xec, 0x42, 0xd3, 0x3, 0x92, 0x3c, 0xad, + 0x7b, 0xea, 0x44, 0xd5, 0x5, 0x94, 0x3a, 0xab, 0x87, 0x16, 0xb8, 0x29, 0xf9, 0x68, 0xc6, 0x57, + 0x9e, 0xf, 0xa1, 0x30, 0xe0, 0x71, 0xdf, 0x4e, 0x62, 0xf3, 0x5d, 0xcc, 0x1c, 0x8d, 0x23, 0xb2, + 0xac, 0x3d, 0x93, 0x2, 0xd2, 0x43, 0xed, 0x7c, 0x50, 0xc1, 0x6f, 0xfe, 0x2e, 0xbf, 0x11, 0x80, + 0x49, 0xd8, 0x76, 0xe7, 0x37, 0xa6, 0x8, 0x99, 0xb5, 0x24, 0x8a, 0x1b, 0xcb, 0x5a, 0xf4, 0x65, + 0xc8, 0x59, 0xf7, 0x66, 0xb6, 0x27, 0x89, 0x18, 0x34, 0xa5, 0xb, 0x9a, 0x4a, 0xdb, 0x75, 0xe4, + 0x2d, 0xbc, 0x12, 0x83, 0x53, 0xc2, 0x6c, 0xfd, 0xd1, 0x40, 0xee, 0x7f, 0xaf, 0x3e, 0x90, 0x1, + 0x1f, 0x8e, 0x20, 0xb1, 0x61, 0xf0, 0x5e, 0xcf, 0xe3, 0x72, 0xdc, 0x4d, 0x9d, 0xc, 0xa2, 0x33, + 0xfa, 0x6b, 0xc5, 0x54, 0x84, 0x15, 0xbb, 0x2a, 0x6, 0x97, 0x39, 0xa8, 0x78, 0xe9, 0x47, 0xd6, + ], + [ + 0x0, 0x92, 0x39, 0xab, 0x72, 0xe0, 0x4b, 0xd9, 0xe4, 0x76, 0xdd, 0x4f, 0x96, 0x4, 0xaf, 0x3d, + 0xd5, 0x47, 0xec, 0x7e, 0xa7, 0x35, 0x9e, 0xc, 0x31, 0xa3, 0x8, 0x9a, 0x43, 0xd1, 0x7a, 0xe8, + 0xb7, 0x25, 0x8e, 0x1c, 0xc5, 0x57, 0xfc, 0x6e, 0x53, 0xc1, 0x6a, 0xf8, 0x21, 0xb3, 0x18, 0x8a, + 0x62, 0xf0, 0x5b, 0xc9, 0x10, 0x82, 0x29, 0xbb, 0x86, 0x14, 0xbf, 0x2d, 0xf4, 0x66, 0xcd, 0x5f, + 0x73, 0xe1, 0x4a, 0xd8, 0x1, 0x93, 0x38, 0xaa, 0x97, 0x5, 0xae, 0x3c, 0xe5, 0x77, 0xdc, 0x4e, + 0xa6, 0x34, 0x9f, 0xd, 0xd4, 0x46, 0xed, 0x7f, 0x42, 0xd0, 0x7b, 0xe9, 0x30, 0xa2, 0x9, 0x9b, + 0xc4, 0x56, 0xfd, 0x6f, 0xb6, 0x24, 0x8f, 0x1d, 0x20, 0xb2, 0x19, 0x8b, 0x52, 0xc0, 0x6b, 0xf9, + 0x11, 0x83, 0x28, 0xba, 0x63, 0xf1, 0x5a, 0xc8, 0xf5, 0x67, 0xcc, 0x5e, 0x87, 0x15, 0xbe, 0x2c, + 0xe6, 0x74, 0xdf, 0x4d, 0x94, 0x6, 0xad, 0x3f, 0x2, 0x90, 0x3b, 0xa9, 0x70, 0xe2, 0x49, 0xdb, + 0x33, 0xa1, 0xa, 0x98, 0x41, 0xd3, 0x78, 0xea, 0xd7, 0x45, 0xee, 0x7c, 0xa5, 0x37, 0x9c, 0xe, + 0x51, 0xc3, 0x68, 0xfa, 0x23, 0xb1, 0x1a, 0x88, 0xb5, 0x27, 0x8c, 0x1e, 0xc7, 0x55, 0xfe, 0x6c, + 0x84, 0x16, 0xbd, 0x2f, 0xf6, 0x64, 0xcf, 0x5d, 0x60, 0xf2, 0x59, 0xcb, 0x12, 0x80, 0x2b, 0xb9, + 0x95, 0x7, 0xac, 0x3e, 0xe7, 0x75, 0xde, 0x4c, 0x71, 0xe3, 0x48, 0xda, 0x3, 0x91, 0x3a, 0xa8, + 0x40, 0xd2, 0x79, 0xeb, 0x32, 0xa0, 0xb, 0x99, 0xa4, 0x36, 0x9d, 0xf, 0xd6, 0x44, 0xef, 0x7d, + 0x22, 0xb0, 0x1b, 0x89, 0x50, 0xc2, 0x69, 0xfb, 0xc6, 0x54, 0xff, 0x6d, 0xb4, 0x26, 0x8d, 0x1f, + 0xf7, 0x65, 0xce, 0x5c, 0x85, 0x17, 0xbc, 0x2e, 0x13, 0x81, 0x2a, 0xb8, 0x61, 0xf3, 0x58, 0xca, + ], + [ + 0x0, 0x93, 0x3b, 0xa8, 0x76, 0xe5, 0x4d, 0xde, 0xec, 0x7f, 0xd7, 0x44, 0x9a, 0x9, 0xa1, 0x32, + 0xc5, 0x56, 0xfe, 0x6d, 0xb3, 0x20, 0x88, 0x1b, 0x29, 0xba, 0x12, 0x81, 0x5f, 0xcc, 0x64, 0xf7, + 0x97, 0x4, 0xac, 0x3f, 0xe1, 0x72, 0xda, 0x49, 0x7b, 0xe8, 0x40, 0xd3, 0xd, 0x9e, 0x36, 0xa5, + 0x52, 0xc1, 0x69, 0xfa, 0x24, 0xb7, 0x1f, 0x8c, 0xbe, 0x2d, 0x85, 0x16, 0xc8, 0x5b, 0xf3, 0x60, + 0x33, 0xa0, 0x8, 0x9b, 0x45, 0xd6, 0x7e, 0xed, 0xdf, 0x4c, 0xe4, 0x77, 0xa9, 0x3a, 0x92, 0x1, + 0xf6, 0x65, 0xcd, 0x5e, 0x80, 0x13, 0xbb, 0x28, 0x1a, 0x89, 0x21, 0xb2, 0x6c, 0xff, 0x57, 0xc4, + 0xa4, 0x37, 0x9f, 0xc, 0xd2, 0x41, 0xe9, 0x7a, 0x48, 0xdb, 0x73, 0xe0, 0x3e, 0xad, 0x5, 0x96, + 0x61, 0xf2, 0x5a, 0xc9, 0x17, 0x84, 0x2c, 0xbf, 0x8d, 0x1e, 0xb6, 0x25, 0xfb, 0x68, 0xc0, 0x53, + 0x66, 0xf5, 0x5d, 0xce, 0x10, 0x83, 0x2b, 0xb8, 0x8a, 0x19, 0xb1, 0x22, 0xfc, 0x6f, 0xc7, 0x54, + 0xa3, 0x30, 0x98, 0xb, 0xd5, 0x46, 0xee, 0x7d, 0x4f, 0xdc, 0x74, 0xe7, 0x39, 0xaa, 0x2, 0x91, + 0xf1, 0x62, 0xca, 0x59, 0x87, 0x14, 0xbc, 0x2f, 0x1d, 0x8e, 0x26, 0xb5, 0x6b, 0xf8, 0x50, 0xc3, + 0x34, 0xa7, 0xf, 0x9c, 0x42, 0xd1, 0x79, 0xea, 0xd8, 0x4b, 0xe3, 0x70, 0xae, 0x3d, 0x95, 0x6, + 0x55, 0xc6, 0x6e, 0xfd, 0x23, 0xb0, 0x18, 0x8b, 0xb9, 0x2a, 0x82, 0x11, 0xcf, 0x5c, 0xf4, 0x67, + 0x90, 0x3, 0xab, 0x38, 0xe6, 0x75, 0xdd, 0x4e, 0x7c, 0xef, 0x47, 0xd4, 0xa, 0x99, 0x31, 0xa2, + 0xc2, 0x51, 0xf9, 0x6a, 0xb4, 0x27, 0x8f, 0x1c, 0x2e, 0xbd, 0x15, 0x86, 0x58, 0xcb, 0x63, 0xf0, + 0x7, 0x94, 0x3c, 0xaf, 0x71, 0xe2, 0x4a, 0xd9, 0xeb, 0x78, 0xd0, 0x43, 0x9d, 0xe, 0xa6, 0x35, + ], + [ + 0x0, 0x94, 0x35, 0xa1, 0x6a, 0xfe, 0x5f, 0xcb, 0xd4, 0x40, 0xe1, 0x75, 0xbe, 0x2a, 0x8b, 0x1f, + 0xb5, 0x21, 0x80, 0x14, 0xdf, 0x4b, 0xea, 0x7e, 0x61, 0xf5, 0x54, 0xc0, 0xb, 0x9f, 0x3e, 0xaa, + 0x77, 0xe3, 0x42, 0xd6, 0x1d, 0x89, 0x28, 0xbc, 0xa3, 0x37, 0x96, 0x2, 0xc9, 0x5d, 0xfc, 0x68, + 0xc2, 0x56, 0xf7, 0x63, 0xa8, 0x3c, 0x9d, 0x9, 0x16, 0x82, 0x23, 0xb7, 0x7c, 0xe8, 0x49, 0xdd, + 0xee, 0x7a, 0xdb, 0x4f, 0x84, 0x10, 0xb1, 0x25, 0x3a, 0xae, 0xf, 0x9b, 0x50, 0xc4, 0x65, 0xf1, + 0x5b, 0xcf, 0x6e, 0xfa, 0x31, 0xa5, 0x4, 0x90, 0x8f, 0x1b, 0xba, 0x2e, 0xe5, 0x71, 0xd0, 0x44, + 0x99, 0xd, 0xac, 0x38, 0xf3, 0x67, 0xc6, 0x52, 0x4d, 0xd9, 0x78, 0xec, 0x27, 0xb3, 0x12, 0x86, + 0x2c, 0xb8, 0x19, 0x8d, 0x46, 0xd2, 0x73, 0xe7, 0xf8, 0x6c, 0xcd, 0x59, 0x92, 0x6, 0xa7, 0x33, + 0xc1, 0x55, 0xf4, 0x60, 0xab, 0x3f, 0x9e, 0xa, 0x15, 0x81, 0x20, 0xb4, 0x7f, 0xeb, 0x4a, 0xde, + 0x74, 0xe0, 0x41, 0xd5, 0x1e, 0x8a, 0x2b, 0xbf, 0xa0, 0x34, 0x95, 0x1, 0xca, 0x5e, 0xff, 0x6b, + 0xb6, 0x22, 0x83, 0x17, 0xdc, 0x48, 0xe9, 0x7d, 0x62, 0xf6, 0x57, 0xc3, 0x8, 0x9c, 0x3d, 0xa9, + 0x3, 0x97, 0x36, 0xa2, 0x69, 0xfd, 0x5c, 0xc8, 0xd7, 0x43, 0xe2, 0x76, 0xbd, 0x29, 0x88, 0x1c, + 0x2f, 0xbb, 0x1a, 0x8e, 0x45, 0xd1, 0x70, 0xe4, 0xfb, 0x6f, 0xce, 0x5a, 0x91, 0x5, 0xa4, 0x30, + 0x9a, 0xe, 0xaf, 0x3b, 0xf0, 0x64, 0xc5, 0x51, 0x4e, 0xda, 0x7b, 0xef, 0x24, 0xb0, 0x11, 0x85, + 0x58, 0xcc, 0x6d, 0xf9, 0x32, 0xa6, 0x7, 0x93, 0x8c, 0x18, 0xb9, 0x2d, 0xe6, 0x72, 0xd3, 0x47, + 0xed, 0x79, 0xd8, 0x4c, 0x87, 0x13, 0xb2, 0x26, 0x39, 0xad, 0xc, 0x98, 0x53, 0xc7, 0x66, 0xf2, + ], + [ + 0x0, 0x95, 0x37, 0xa2, 0x6e, 0xfb, 0x59, 0xcc, 0xdc, 0x49, 0xeb, 0x7e, 0xb2, 0x27, 0x85, 0x10, + 0xa5, 0x30, 0x92, 0x7, 0xcb, 0x5e, 0xfc, 0x69, 0x79, 0xec, 0x4e, 0xdb, 0x17, 0x82, 0x20, 0xb5, + 0x57, 0xc2, 0x60, 0xf5, 0x39, 0xac, 0xe, 0x9b, 0x8b, 0x1e, 0xbc, 0x29, 0xe5, 0x70, 0xd2, 0x47, + 0xf2, 0x67, 0xc5, 0x50, 0x9c, 0x9, 0xab, 0x3e, 0x2e, 0xbb, 0x19, 0x8c, 0x40, 0xd5, 0x77, 0xe2, + 0xae, 0x3b, 0x99, 0xc, 0xc0, 0x55, 0xf7, 0x62, 0x72, 0xe7, 0x45, 0xd0, 0x1c, 0x89, 0x2b, 0xbe, + 0xb, 0x9e, 0x3c, 0xa9, 0x65, 0xf0, 0x52, 0xc7, 0xd7, 0x42, 0xe0, 0x75, 0xb9, 0x2c, 0x8e, 0x1b, + 0xf9, 0x6c, 0xce, 0x5b, 0x97, 0x2, 0xa0, 0x35, 0x25, 0xb0, 0x12, 0x87, 0x4b, 0xde, 0x7c, 0xe9, + 0x5c, 0xc9, 0x6b, 0xfe, 0x32, 0xa7, 0x5, 0x90, 0x80, 0x15, 0xb7, 0x22, 0xee, 0x7b, 0xd9, 0x4c, + 0x41, 0xd4, 0x76, 0xe3, 0x2f, 0xba, 0x18, 0x8d, 0x9d, 0x8, 0xaa, 0x3f, 0xf3, 0x66, 0xc4, 0x51, + 0xe4, 0x71, 0xd3, 0x46, 0x8a, 0x1f, 0xbd, 0x28, 0x38, 0xad, 0xf, 0x9a, 0x56, 0xc3, 0x61, 0xf4, + 0x16, 0x83, 0x21, 0xb4, 0x78, 0xed, 0x4f, 0xda, 0xca, 0x5f, 0xfd, 0x68, 0xa4, 0x31, 0x93, 0x6, + 0xb3, 0x26, 0x84, 0x11, 0xdd, 0x48, 0xea, 0x7f, 0x6f, 0xfa, 0x58, 0xcd, 0x1, 0x94, 0x36, 0xa3, + 0xef, 0x7a, 0xd8, 0x4d, 0x81, 0x14, 0xb6, 0x23, 0x33, 0xa6, 0x4, 0x91, 0x5d, 0xc8, 0x6a, 0xff, + 0x4a, 0xdf, 0x7d, 0xe8, 0x24, 0xb1, 0x13, 0x86, 0x96, 0x3, 0xa1, 0x34, 0xf8, 0x6d, 0xcf, 0x5a, + 0xb8, 0x2d, 0x8f, 0x1a, 0xd6, 0x43, 0xe1, 0x74, 0x64, 0xf1, 0x53, 0xc6, 0xa, 0x9f, 0x3d, 0xa8, + 0x1d, 0x88, 0x2a, 0xbf, 0x73, 0xe6, 0x44, 0xd1, 0xc1, 0x54, 0xf6, 0x63, 0xaf, 0x3a, 0x98, 0xd, + ], + [ + 0x0, 0x96, 0x31, 0xa7, 0x62, 0xf4, 0x53, 0xc5, 0xc4, 0x52, 0xf5, 0x63, 0xa6, 0x30, 0x97, 0x1, + 0x95, 0x3, 0xa4, 0x32, 0xf7, 0x61, 0xc6, 0x50, 0x51, 0xc7, 0x60, 0xf6, 0x33, 0xa5, 0x2, 0x94, + 0x37, 0xa1, 0x6, 0x90, 0x55, 0xc3, 0x64, 0xf2, 0xf3, 0x65, 0xc2, 0x54, 0x91, 0x7, 0xa0, 0x36, + 0xa2, 0x34, 0x93, 0x5, 0xc0, 0x56, 0xf1, 0x67, 0x66, 0xf0, 0x57, 0xc1, 0x4, 0x92, 0x35, 0xa3, + 0x6e, 0xf8, 0x5f, 0xc9, 0xc, 0x9a, 0x3d, 0xab, 0xaa, 0x3c, 0x9b, 0xd, 0xc8, 0x5e, 0xf9, 0x6f, + 0xfb, 0x6d, 0xca, 0x5c, 0x99, 0xf, 0xa8, 0x3e, 0x3f, 0xa9, 0xe, 0x98, 0x5d, 0xcb, 0x6c, 0xfa, + 0x59, 0xcf, 0x68, 0xfe, 0x3b, 0xad, 0xa, 0x9c, 0x9d, 0xb, 0xac, 0x3a, 0xff, 0x69, 0xce, 0x58, + 0xcc, 0x5a, 0xfd, 0x6b, 0xae, 0x38, 0x9f, 0x9, 0x8, 0x9e, 0x39, 0xaf, 0x6a, 0xfc, 0x5b, 0xcd, + 0xdc, 0x4a, 0xed, 0x7b, 0xbe, 0x28, 0x8f, 0x19, 0x18, 0x8e, 0x29, 0xbf, 0x7a, 0xec, 0x4b, 0xdd, + 0x49, 0xdf, 0x78, 0xee, 0x2b, 0xbd, 0x1a, 0x8c, 0x8d, 0x1b, 0xbc, 0x2a, 0xef, 0x79, 0xde, 0x48, + 0xeb, 0x7d, 0xda, 0x4c, 0x89, 0x1f, 0xb8, 0x2e, 0x2f, 0xb9, 0x1e, 0x88, 0x4d, 0xdb, 0x7c, 0xea, + 0x7e, 0xe8, 0x4f, 0xd9, 0x1c, 0x8a, 0x2d, 0xbb, 0xba, 0x2c, 0x8b, 0x1d, 0xd8, 0x4e, 0xe9, 0x7f, + 0xb2, 0x24, 0x83, 0x15, 0xd0, 0x46, 0xe1, 0x77, 0x76, 0xe0, 0x47, 0xd1, 0x14, 0x82, 0x25, 0xb3, + 0x27, 0xb1, 0x16, 0x80, 0x45, 0xd3, 0x74, 0xe2, 0xe3, 0x75, 0xd2, 0x44, 0x81, 0x17, 0xb0, 0x26, + 0x85, 0x13, 0xb4, 0x22, 0xe7, 0x71, 0xd6, 0x40, 0x41, 0xd7, 0x70, 0xe6, 0x23, 0xb5, 0x12, 0x84, + 0x10, 0x86, 0x21, 0xb7, 0x72, 0xe4, 0x43, 0xd5, 0xd4, 0x42, 0xe5, 0x73, 0xb6, 0x20, 0x87, 0x11, + ], + [ + 0x0, 0x97, 0x33, 0xa4, 0x66, 0xf1, 0x55, 0xc2, 0xcc, 0x5b, 0xff, 0x68, 0xaa, 0x3d, 0x99, 0xe, + 0x85, 0x12, 0xb6, 0x21, 0xe3, 0x74, 0xd0, 0x47, 0x49, 0xde, 0x7a, 0xed, 0x2f, 0xb8, 0x1c, 0x8b, + 0x17, 0x80, 0x24, 0xb3, 0x71, 0xe6, 0x42, 0xd5, 0xdb, 0x4c, 0xe8, 0x7f, 0xbd, 0x2a, 0x8e, 0x19, + 0x92, 0x5, 0xa1, 0x36, 0xf4, 0x63, 0xc7, 0x50, 0x5e, 0xc9, 0x6d, 0xfa, 0x38, 0xaf, 0xb, 0x9c, + 0x2e, 0xb9, 0x1d, 0x8a, 0x48, 0xdf, 0x7b, 0xec, 0xe2, 0x75, 0xd1, 0x46, 0x84, 0x13, 0xb7, 0x20, + 0xab, 0x3c, 0x98, 0xf, 0xcd, 0x5a, 0xfe, 0x69, 0x67, 0xf0, 0x54, 0xc3, 0x1, 0x96, 0x32, 0xa5, + 0x39, 0xae, 0xa, 0x9d, 0x5f, 0xc8, 0x6c, 0xfb, 0xf5, 0x62, 0xc6, 0x51, 0x93, 0x4, 0xa0, 0x37, + 0xbc, 0x2b, 0x8f, 0x18, 0xda, 0x4d, 0xe9, 0x7e, 0x70, 0xe7, 0x43, 0xd4, 0x16, 0x81, 0x25, 0xb2, + 0x5c, 0xcb, 0x6f, 0xf8, 0x3a, 0xad, 0x9, 0x9e, 0x90, 0x7, 0xa3, 0x34, 0xf6, 0x61, 0xc5, 0x52, + 0xd9, 0x4e, 0xea, 0x7d, 0xbf, 0x28, 0x8c, 0x1b, 0x15, 0x82, 0x26, 0xb1, 0x73, 0xe4, 0x40, 0xd7, + 0x4b, 0xdc, 0x78, 0xef, 0x2d, 0xba, 0x1e, 0x89, 0x87, 0x10, 0xb4, 0x23, 0xe1, 0x76, 0xd2, 0x45, + 0xce, 0x59, 0xfd, 0x6a, 0xa8, 0x3f, 0x9b, 0xc, 0x2, 0x95, 0x31, 0xa6, 0x64, 0xf3, 0x57, 0xc0, + 0x72, 0xe5, 0x41, 0xd6, 0x14, 0x83, 0x27, 0xb0, 0xbe, 0x29, 0x8d, 0x1a, 0xd8, 0x4f, 0xeb, 0x7c, + 0xf7, 0x60, 0xc4, 0x53, 0x91, 0x6, 0xa2, 0x35, 0x3b, 0xac, 0x8, 0x9f, 0x5d, 0xca, 0x6e, 0xf9, + 0x65, 0xf2, 0x56, 0xc1, 0x3, 0x94, 0x30, 0xa7, 0xa9, 0x3e, 0x9a, 0xd, 0xcf, 0x58, 0xfc, 0x6b, + 0xe0, 0x77, 0xd3, 0x44, 0x86, 0x11, 0xb5, 0x22, 0x2c, 0xbb, 0x1f, 0x88, 0x4a, 0xdd, 0x79, 0xee, + ], + [ + 0x0, 0x98, 0x2d, 0xb5, 0x5a, 0xc2, 0x77, 0xef, 0xb4, 0x2c, 0x99, 0x1, 0xee, 0x76, 0xc3, 0x5b, + 0x75, 0xed, 0x58, 0xc0, 0x2f, 0xb7, 0x2, 0x9a, 0xc1, 0x59, 0xec, 0x74, 0x9b, 0x3, 0xb6, 0x2e, + 0xea, 0x72, 0xc7, 0x5f, 0xb0, 0x28, 0x9d, 0x5, 0x5e, 0xc6, 0x73, 0xeb, 0x4, 0x9c, 0x29, 0xb1, + 0x9f, 0x7, 0xb2, 0x2a, 0xc5, 0x5d, 0xe8, 0x70, 0x2b, 0xb3, 0x6, 0x9e, 0x71, 0xe9, 0x5c, 0xc4, + 0xc9, 0x51, 0xe4, 0x7c, 0x93, 0xb, 0xbe, 0x26, 0x7d, 0xe5, 0x50, 0xc8, 0x27, 0xbf, 0xa, 0x92, + 0xbc, 0x24, 0x91, 0x9, 0xe6, 0x7e, 0xcb, 0x53, 0x8, 0x90, 0x25, 0xbd, 0x52, 0xca, 0x7f, 0xe7, + 0x23, 0xbb, 0xe, 0x96, 0x79, 0xe1, 0x54, 0xcc, 0x97, 0xf, 0xba, 0x22, 0xcd, 0x55, 0xe0, 0x78, + 0x56, 0xce, 0x7b, 0xe3, 0xc, 0x94, 0x21, 0xb9, 0xe2, 0x7a, 0xcf, 0x57, 0xb8, 0x20, 0x95, 0xd, + 0x8f, 0x17, 0xa2, 0x3a, 0xd5, 0x4d, 0xf8, 0x60, 0x3b, 0xa3, 0x16, 0x8e, 0x61, 0xf9, 0x4c, 0xd4, + 0xfa, 0x62, 0xd7, 0x4f, 0xa0, 0x38, 0x8d, 0x15, 0x4e, 0xd6, 0x63, 0xfb, 0x14, 0x8c, 0x39, 0xa1, + 0x65, 0xfd, 0x48, 0xd0, 0x3f, 0xa7, 0x12, 0x8a, 0xd1, 0x49, 0xfc, 0x64, 0x8b, 0x13, 0xa6, 0x3e, + 0x10, 0x88, 0x3d, 0xa5, 0x4a, 0xd2, 0x67, 0xff, 0xa4, 0x3c, 0x89, 0x11, 0xfe, 0x66, 0xd3, 0x4b, + 0x46, 0xde, 0x6b, 0xf3, 0x1c, 0x84, 0x31, 0xa9, 0xf2, 0x6a, 0xdf, 0x47, 0xa8, 0x30, 0x85, 0x1d, + 0x33, 0xab, 0x1e, 0x86, 0x69, 0xf1, 0x44, 0xdc, 0x87, 0x1f, 0xaa, 0x32, 0xdd, 0x45, 0xf0, 0x68, + 0xac, 0x34, 0x81, 0x19, 0xf6, 0x6e, 0xdb, 0x43, 0x18, 0x80, 0x35, 0xad, 0x42, 0xda, 0x6f, 0xf7, + 0xd9, 0x41, 0xf4, 0x6c, 0x83, 0x1b, 0xae, 0x36, 0x6d, 0xf5, 0x40, 0xd8, 0x37, 0xaf, 0x1a, 0x82, + ], + [ + 0x0, 0x99, 0x2f, 0xb6, 0x5e, 0xc7, 0x71, 0xe8, 0xbc, 0x25, 0x93, 0xa, 0xe2, 0x7b, 0xcd, 0x54, + 0x65, 0xfc, 0x4a, 0xd3, 0x3b, 0xa2, 0x14, 0x8d, 0xd9, 0x40, 0xf6, 0x6f, 0x87, 0x1e, 0xa8, 0x31, + 0xca, 0x53, 0xe5, 0x7c, 0x94, 0xd, 0xbb, 0x22, 0x76, 0xef, 0x59, 0xc0, 0x28, 0xb1, 0x7, 0x9e, + 0xaf, 0x36, 0x80, 0x19, 0xf1, 0x68, 0xde, 0x47, 0x13, 0x8a, 0x3c, 0xa5, 0x4d, 0xd4, 0x62, 0xfb, + 0x89, 0x10, 0xa6, 0x3f, 0xd7, 0x4e, 0xf8, 0x61, 0x35, 0xac, 0x1a, 0x83, 0x6b, 0xf2, 0x44, 0xdd, + 0xec, 0x75, 0xc3, 0x5a, 0xb2, 0x2b, 0x9d, 0x4, 0x50, 0xc9, 0x7f, 0xe6, 0xe, 0x97, 0x21, 0xb8, + 0x43, 0xda, 0x6c, 0xf5, 0x1d, 0x84, 0x32, 0xab, 0xff, 0x66, 0xd0, 0x49, 0xa1, 0x38, 0x8e, 0x17, + 0x26, 0xbf, 0x9, 0x90, 0x78, 0xe1, 0x57, 0xce, 0x9a, 0x3, 0xb5, 0x2c, 0xc4, 0x5d, 0xeb, 0x72, + 0xf, 0x96, 0x20, 0xb9, 0x51, 0xc8, 0x7e, 0xe7, 0xb3, 0x2a, 0x9c, 0x5, 0xed, 0x74, 0xc2, 0x5b, + 0x6a, 0xf3, 0x45, 0xdc, 0x34, 0xad, 0x1b, 0x82, 0xd6, 0x4f, 0xf9, 0x60, 0x88, 0x11, 0xa7, 0x3e, + 0xc5, 0x5c, 0xea, 0x73, 0x9b, 0x2, 0xb4, 0x2d, 0x79, 0xe0, 0x56, 0xcf, 0x27, 0xbe, 0x8, 0x91, + 0xa0, 0x39, 0x8f, 0x16, 0xfe, 0x67, 0xd1, 0x48, 0x1c, 0x85, 0x33, 0xaa, 0x42, 0xdb, 0x6d, 0xf4, + 0x86, 0x1f, 0xa9, 0x30, 0xd8, 0x41, 0xf7, 0x6e, 0x3a, 0xa3, 0x15, 0x8c, 0x64, 0xfd, 0x4b, 0xd2, + 0xe3, 0x7a, 0xcc, 0x55, 0xbd, 0x24, 0x92, 0xb, 0x5f, 0xc6, 0x70, 0xe9, 0x1, 0x98, 0x2e, 0xb7, + 0x4c, 0xd5, 0x63, 0xfa, 0x12, 0x8b, 0x3d, 0xa4, 0xf0, 0x69, 0xdf, 0x46, 0xae, 0x37, 0x81, 0x18, + 0x29, 0xb0, 0x6, 0x9f, 0x77, 0xee, 0x58, 0xc1, 0x95, 0xc, 0xba, 0x23, 0xcb, 0x52, 0xe4, 0x7d, + ], + [ + 0x0, 0x9a, 0x29, 0xb3, 0x52, 0xc8, 0x7b, 0xe1, 0xa4, 0x3e, 0x8d, 0x17, 0xf6, 0x6c, 0xdf, 0x45, + 0x55, 0xcf, 0x7c, 0xe6, 0x7, 0x9d, 0x2e, 0xb4, 0xf1, 0x6b, 0xd8, 0x42, 0xa3, 0x39, 0x8a, 0x10, + 0xaa, 0x30, 0x83, 0x19, 0xf8, 0x62, 0xd1, 0x4b, 0xe, 0x94, 0x27, 0xbd, 0x5c, 0xc6, 0x75, 0xef, + 0xff, 0x65, 0xd6, 0x4c, 0xad, 0x37, 0x84, 0x1e, 0x5b, 0xc1, 0x72, 0xe8, 0x9, 0x93, 0x20, 0xba, + 0x49, 0xd3, 0x60, 0xfa, 0x1b, 0x81, 0x32, 0xa8, 0xed, 0x77, 0xc4, 0x5e, 0xbf, 0x25, 0x96, 0xc, + 0x1c, 0x86, 0x35, 0xaf, 0x4e, 0xd4, 0x67, 0xfd, 0xb8, 0x22, 0x91, 0xb, 0xea, 0x70, 0xc3, 0x59, + 0xe3, 0x79, 0xca, 0x50, 0xb1, 0x2b, 0x98, 0x2, 0x47, 0xdd, 0x6e, 0xf4, 0x15, 0x8f, 0x3c, 0xa6, + 0xb6, 0x2c, 0x9f, 0x5, 0xe4, 0x7e, 0xcd, 0x57, 0x12, 0x88, 0x3b, 0xa1, 0x40, 0xda, 0x69, 0xf3, + 0x92, 0x8, 0xbb, 0x21, 0xc0, 0x5a, 0xe9, 0x73, 0x36, 0xac, 0x1f, 0x85, 0x64, 0xfe, 0x4d, 0xd7, + 0xc7, 0x5d, 0xee, 0x74, 0x95, 0xf, 0xbc, 0x26, 0x63, 0xf9, 0x4a, 0xd0, 0x31, 0xab, 0x18, 0x82, + 0x38, 0xa2, 0x11, 0x8b, 0x6a, 0xf0, 0x43, 0xd9, 0x9c, 0x6, 0xb5, 0x2f, 0xce, 0x54, 0xe7, 0x7d, + 0x6d, 0xf7, 0x44, 0xde, 0x3f, 0xa5, 0x16, 0x8c, 0xc9, 0x53, 0xe0, 0x7a, 0x9b, 0x1, 0xb2, 0x28, + 0xdb, 0x41, 0xf2, 0x68, 0x89, 0x13, 0xa0, 0x3a, 0x7f, 0xe5, 0x56, 0xcc, 0x2d, 0xb7, 0x4, 0x9e, + 0x8e, 0x14, 0xa7, 0x3d, 0xdc, 0x46, 0xf5, 0x6f, 0x2a, 0xb0, 0x3, 0x99, 0x78, 0xe2, 0x51, 0xcb, + 0x71, 0xeb, 0x58, 0xc2, 0x23, 0xb9, 0xa, 0x90, 0xd5, 0x4f, 0xfc, 0x66, 0x87, 0x1d, 0xae, 0x34, + 0x24, 0xbe, 0xd, 0x97, 0x76, 0xec, 0x5f, 0xc5, 0x80, 0x1a, 0xa9, 0x33, 0xd2, 0x48, 0xfb, 0x61, + ], + [ + 0x0, 0x9b, 0x2b, 0xb0, 0x56, 0xcd, 0x7d, 0xe6, 0xac, 0x37, 0x87, 0x1c, 0xfa, 0x61, 0xd1, 0x4a, + 0x45, 0xde, 0x6e, 0xf5, 0x13, 0x88, 0x38, 0xa3, 0xe9, 0x72, 0xc2, 0x59, 0xbf, 0x24, 0x94, 0xf, + 0x8a, 0x11, 0xa1, 0x3a, 0xdc, 0x47, 0xf7, 0x6c, 0x26, 0xbd, 0xd, 0x96, 0x70, 0xeb, 0x5b, 0xc0, + 0xcf, 0x54, 0xe4, 0x7f, 0x99, 0x2, 0xb2, 0x29, 0x63, 0xf8, 0x48, 0xd3, 0x35, 0xae, 0x1e, 0x85, + 0x9, 0x92, 0x22, 0xb9, 0x5f, 0xc4, 0x74, 0xef, 0xa5, 0x3e, 0x8e, 0x15, 0xf3, 0x68, 0xd8, 0x43, + 0x4c, 0xd7, 0x67, 0xfc, 0x1a, 0x81, 0x31, 0xaa, 0xe0, 0x7b, 0xcb, 0x50, 0xb6, 0x2d, 0x9d, 0x6, + 0x83, 0x18, 0xa8, 0x33, 0xd5, 0x4e, 0xfe, 0x65, 0x2f, 0xb4, 0x4, 0x9f, 0x79, 0xe2, 0x52, 0xc9, + 0xc6, 0x5d, 0xed, 0x76, 0x90, 0xb, 0xbb, 0x20, 0x6a, 0xf1, 0x41, 0xda, 0x3c, 0xa7, 0x17, 0x8c, + 0x12, 0x89, 0x39, 0xa2, 0x44, 0xdf, 0x6f, 0xf4, 0xbe, 0x25, 0x95, 0xe, 0xe8, 0x73, 0xc3, 0x58, + 0x57, 0xcc, 0x7c, 0xe7, 0x1, 0x9a, 0x2a, 0xb1, 0xfb, 0x60, 0xd0, 0x4b, 0xad, 0x36, 0x86, 0x1d, + 0x98, 0x3, 0xb3, 0x28, 0xce, 0x55, 0xe5, 0x7e, 0x34, 0xaf, 0x1f, 0x84, 0x62, 0xf9, 0x49, 0xd2, + 0xdd, 0x46, 0xf6, 0x6d, 0x8b, 0x10, 0xa0, 0x3b, 0x71, 0xea, 0x5a, 0xc1, 0x27, 0xbc, 0xc, 0x97, + 0x1b, 0x80, 0x30, 0xab, 0x4d, 0xd6, 0x66, 0xfd, 0xb7, 0x2c, 0x9c, 0x7, 0xe1, 0x7a, 0xca, 0x51, + 0x5e, 0xc5, 0x75, 0xee, 0x8, 0x93, 0x23, 0xb8, 0xf2, 0x69, 0xd9, 0x42, 0xa4, 0x3f, 0x8f, 0x14, + 0x91, 0xa, 0xba, 0x21, 0xc7, 0x5c, 0xec, 0x77, 0x3d, 0xa6, 0x16, 0x8d, 0x6b, 0xf0, 0x40, 0xdb, + 0xd4, 0x4f, 0xff, 0x64, 0x82, 0x19, 0xa9, 0x32, 0x78, 0xe3, 0x53, 0xc8, 0x2e, 0xb5, 0x5, 0x9e, + ], + [ + 0x0, 0x9c, 0x25, 0xb9, 0x4a, 0xd6, 0x6f, 0xf3, 0x94, 0x8, 0xb1, 0x2d, 0xde, 0x42, 0xfb, 0x67, + 0x35, 0xa9, 0x10, 0x8c, 0x7f, 0xe3, 0x5a, 0xc6, 0xa1, 0x3d, 0x84, 0x18, 0xeb, 0x77, 0xce, 0x52, + 0x6a, 0xf6, 0x4f, 0xd3, 0x20, 0xbc, 0x5, 0x99, 0xfe, 0x62, 0xdb, 0x47, 0xb4, 0x28, 0x91, 0xd, + 0x5f, 0xc3, 0x7a, 0xe6, 0x15, 0x89, 0x30, 0xac, 0xcb, 0x57, 0xee, 0x72, 0x81, 0x1d, 0xa4, 0x38, + 0xd4, 0x48, 0xf1, 0x6d, 0x9e, 0x2, 0xbb, 0x27, 0x40, 0xdc, 0x65, 0xf9, 0xa, 0x96, 0x2f, 0xb3, + 0xe1, 0x7d, 0xc4, 0x58, 0xab, 0x37, 0x8e, 0x12, 0x75, 0xe9, 0x50, 0xcc, 0x3f, 0xa3, 0x1a, 0x86, + 0xbe, 0x22, 0x9b, 0x7, 0xf4, 0x68, 0xd1, 0x4d, 0x2a, 0xb6, 0xf, 0x93, 0x60, 0xfc, 0x45, 0xd9, + 0x8b, 0x17, 0xae, 0x32, 0xc1, 0x5d, 0xe4, 0x78, 0x1f, 0x83, 0x3a, 0xa6, 0x55, 0xc9, 0x70, 0xec, + 0xb5, 0x29, 0x90, 0xc, 0xff, 0x63, 0xda, 0x46, 0x21, 0xbd, 0x4, 0x98, 0x6b, 0xf7, 0x4e, 0xd2, + 0x80, 0x1c, 0xa5, 0x39, 0xca, 0x56, 0xef, 0x73, 0x14, 0x88, 0x31, 0xad, 0x5e, 0xc2, 0x7b, 0xe7, + 0xdf, 0x43, 0xfa, 0x66, 0x95, 0x9, 0xb0, 0x2c, 0x4b, 0xd7, 0x6e, 0xf2, 0x1, 0x9d, 0x24, 0xb8, + 0xea, 0x76, 0xcf, 0x53, 0xa0, 0x3c, 0x85, 0x19, 0x7e, 0xe2, 0x5b, 0xc7, 0x34, 0xa8, 0x11, 0x8d, + 0x61, 0xfd, 0x44, 0xd8, 0x2b, 0xb7, 0xe, 0x92, 0xf5, 0x69, 0xd0, 0x4c, 0xbf, 0x23, 0x9a, 0x6, + 0x54, 0xc8, 0x71, 0xed, 0x1e, 0x82, 0x3b, 0xa7, 0xc0, 0x5c, 0xe5, 0x79, 0x8a, 0x16, 0xaf, 0x33, + 0xb, 0x97, 0x2e, 0xb2, 0x41, 0xdd, 0x64, 0xf8, 0x9f, 0x3, 0xba, 0x26, 0xd5, 0x49, 0xf0, 0x6c, + 0x3e, 0xa2, 0x1b, 0x87, 0x74, 0xe8, 0x51, 0xcd, 0xaa, 0x36, 0x8f, 0x13, 0xe0, 0x7c, 0xc5, 0x59, + ], + [ + 0x0, 0x9d, 0x27, 0xba, 0x4e, 0xd3, 0x69, 0xf4, 0x9c, 0x1, 0xbb, 0x26, 0xd2, 0x4f, 0xf5, 0x68, + 0x25, 0xb8, 0x2, 0x9f, 0x6b, 0xf6, 0x4c, 0xd1, 0xb9, 0x24, 0x9e, 0x3, 0xf7, 0x6a, 0xd0, 0x4d, + 0x4a, 0xd7, 0x6d, 0xf0, 0x4, 0x99, 0x23, 0xbe, 0xd6, 0x4b, 0xf1, 0x6c, 0x98, 0x5, 0xbf, 0x22, + 0x6f, 0xf2, 0x48, 0xd5, 0x21, 0xbc, 0x6, 0x9b, 0xf3, 0x6e, 0xd4, 0x49, 0xbd, 0x20, 0x9a, 0x7, + 0x94, 0x9, 0xb3, 0x2e, 0xda, 0x47, 0xfd, 0x60, 0x8, 0x95, 0x2f, 0xb2, 0x46, 0xdb, 0x61, 0xfc, + 0xb1, 0x2c, 0x96, 0xb, 0xff, 0x62, 0xd8, 0x45, 0x2d, 0xb0, 0xa, 0x97, 0x63, 0xfe, 0x44, 0xd9, + 0xde, 0x43, 0xf9, 0x64, 0x90, 0xd, 0xb7, 0x2a, 0x42, 0xdf, 0x65, 0xf8, 0xc, 0x91, 0x2b, 0xb6, + 0xfb, 0x66, 0xdc, 0x41, 0xb5, 0x28, 0x92, 0xf, 0x67, 0xfa, 0x40, 0xdd, 0x29, 0xb4, 0xe, 0x93, + 0x35, 0xa8, 0x12, 0x8f, 0x7b, 0xe6, 0x5c, 0xc1, 0xa9, 0x34, 0x8e, 0x13, 0xe7, 0x7a, 0xc0, 0x5d, + 0x10, 0x8d, 0x37, 0xaa, 0x5e, 0xc3, 0x79, 0xe4, 0x8c, 0x11, 0xab, 0x36, 0xc2, 0x5f, 0xe5, 0x78, + 0x7f, 0xe2, 0x58, 0xc5, 0x31, 0xac, 0x16, 0x8b, 0xe3, 0x7e, 0xc4, 0x59, 0xad, 0x30, 0x8a, 0x17, + 0x5a, 0xc7, 0x7d, 0xe0, 0x14, 0x89, 0x33, 0xae, 0xc6, 0x5b, 0xe1, 0x7c, 0x88, 0x15, 0xaf, 0x32, + 0xa1, 0x3c, 0x86, 0x1b, 0xef, 0x72, 0xc8, 0x55, 0x3d, 0xa0, 0x1a, 0x87, 0x73, 0xee, 0x54, 0xc9, + 0x84, 0x19, 0xa3, 0x3e, 0xca, 0x57, 0xed, 0x70, 0x18, 0x85, 0x3f, 0xa2, 0x56, 0xcb, 0x71, 0xec, + 0xeb, 0x76, 0xcc, 0x51, 0xa5, 0x38, 0x82, 0x1f, 0x77, 0xea, 0x50, 0xcd, 0x39, 0xa4, 0x1e, 0x83, + 0xce, 0x53, 0xe9, 0x74, 0x80, 0x1d, 0xa7, 0x3a, 0x52, 0xcf, 0x75, 0xe8, 0x1c, 0x81, 0x3b, 0xa6, + ], + [ + 0x0, 0x9e, 0x21, 0xbf, 0x42, 0xdc, 0x63, 0xfd, 0x84, 0x1a, 0xa5, 0x3b, 0xc6, 0x58, 0xe7, 0x79, + 0x15, 0x8b, 0x34, 0xaa, 0x57, 0xc9, 0x76, 0xe8, 0x91, 0xf, 0xb0, 0x2e, 0xd3, 0x4d, 0xf2, 0x6c, + 0x2a, 0xb4, 0xb, 0x95, 0x68, 0xf6, 0x49, 0xd7, 0xae, 0x30, 0x8f, 0x11, 0xec, 0x72, 0xcd, 0x53, + 0x3f, 0xa1, 0x1e, 0x80, 0x7d, 0xe3, 0x5c, 0xc2, 0xbb, 0x25, 0x9a, 0x4, 0xf9, 0x67, 0xd8, 0x46, + 0x54, 0xca, 0x75, 0xeb, 0x16, 0x88, 0x37, 0xa9, 0xd0, 0x4e, 0xf1, 0x6f, 0x92, 0xc, 0xb3, 0x2d, + 0x41, 0xdf, 0x60, 0xfe, 0x3, 0x9d, 0x22, 0xbc, 0xc5, 0x5b, 0xe4, 0x7a, 0x87, 0x19, 0xa6, 0x38, + 0x7e, 0xe0, 0x5f, 0xc1, 0x3c, 0xa2, 0x1d, 0x83, 0xfa, 0x64, 0xdb, 0x45, 0xb8, 0x26, 0x99, 0x7, + 0x6b, 0xf5, 0x4a, 0xd4, 0x29, 0xb7, 0x8, 0x96, 0xef, 0x71, 0xce, 0x50, 0xad, 0x33, 0x8c, 0x12, + 0xa8, 0x36, 0x89, 0x17, 0xea, 0x74, 0xcb, 0x55, 0x2c, 0xb2, 0xd, 0x93, 0x6e, 0xf0, 0x4f, 0xd1, + 0xbd, 0x23, 0x9c, 0x2, 0xff, 0x61, 0xde, 0x40, 0x39, 0xa7, 0x18, 0x86, 0x7b, 0xe5, 0x5a, 0xc4, + 0x82, 0x1c, 0xa3, 0x3d, 0xc0, 0x5e, 0xe1, 0x7f, 0x6, 0x98, 0x27, 0xb9, 0x44, 0xda, 0x65, 0xfb, + 0x97, 0x9, 0xb6, 0x28, 0xd5, 0x4b, 0xf4, 0x6a, 0x13, 0x8d, 0x32, 0xac, 0x51, 0xcf, 0x70, 0xee, + 0xfc, 0x62, 0xdd, 0x43, 0xbe, 0x20, 0x9f, 0x1, 0x78, 0xe6, 0x59, 0xc7, 0x3a, 0xa4, 0x1b, 0x85, + 0xe9, 0x77, 0xc8, 0x56, 0xab, 0x35, 0x8a, 0x14, 0x6d, 0xf3, 0x4c, 0xd2, 0x2f, 0xb1, 0xe, 0x90, + 0xd6, 0x48, 0xf7, 0x69, 0x94, 0xa, 0xb5, 0x2b, 0x52, 0xcc, 0x73, 0xed, 0x10, 0x8e, 0x31, 0xaf, + 0xc3, 0x5d, 0xe2, 0x7c, 0x81, 0x1f, 0xa0, 0x3e, 0x47, 0xd9, 0x66, 0xf8, 0x5, 0x9b, 0x24, 0xba, + ], + [ + 0x0, 0x9f, 0x23, 0xbc, 0x46, 0xd9, 0x65, 0xfa, 0x8c, 0x13, 0xaf, 0x30, 0xca, 0x55, 0xe9, 0x76, + 0x5, 0x9a, 0x26, 0xb9, 0x43, 0xdc, 0x60, 0xff, 0x89, 0x16, 0xaa, 0x35, 0xcf, 0x50, 0xec, 0x73, + 0xa, 0x95, 0x29, 0xb6, 0x4c, 0xd3, 0x6f, 0xf0, 0x86, 0x19, 0xa5, 0x3a, 0xc0, 0x5f, 0xe3, 0x7c, + 0xf, 0x90, 0x2c, 0xb3, 0x49, 0xd6, 0x6a, 0xf5, 0x83, 0x1c, 0xa0, 0x3f, 0xc5, 0x5a, 0xe6, 0x79, + 0x14, 0x8b, 0x37, 0xa8, 0x52, 0xcd, 0x71, 0xee, 0x98, 0x7, 0xbb, 0x24, 0xde, 0x41, 0xfd, 0x62, + 0x11, 0x8e, 0x32, 0xad, 0x57, 0xc8, 0x74, 0xeb, 0x9d, 0x2, 0xbe, 0x21, 0xdb, 0x44, 0xf8, 0x67, + 0x1e, 0x81, 0x3d, 0xa2, 0x58, 0xc7, 0x7b, 0xe4, 0x92, 0xd, 0xb1, 0x2e, 0xd4, 0x4b, 0xf7, 0x68, + 0x1b, 0x84, 0x38, 0xa7, 0x5d, 0xc2, 0x7e, 0xe1, 0x97, 0x8, 0xb4, 0x2b, 0xd1, 0x4e, 0xf2, 0x6d, + 0x28, 0xb7, 0xb, 0x94, 0x6e, 0xf1, 0x4d, 0xd2, 0xa4, 0x3b, 0x87, 0x18, 0xe2, 0x7d, 0xc1, 0x5e, + 0x2d, 0xb2, 0xe, 0x91, 0x6b, 0xf4, 0x48, 0xd7, 0xa1, 0x3e, 0x82, 0x1d, 0xe7, 0x78, 0xc4, 0x5b, + 0x22, 0xbd, 0x1, 0x9e, 0x64, 0xfb, 0x47, 0xd8, 0xae, 0x31, 0x8d, 0x12, 0xe8, 0x77, 0xcb, 0x54, + 0x27, 0xb8, 0x4, 0x9b, 0x61, 0xfe, 0x42, 0xdd, 0xab, 0x34, 0x88, 0x17, 0xed, 0x72, 0xce, 0x51, + 0x3c, 0xa3, 0x1f, 0x80, 0x7a, 0xe5, 0x59, 0xc6, 0xb0, 0x2f, 0x93, 0xc, 0xf6, 0x69, 0xd5, 0x4a, + 0x39, 0xa6, 0x1a, 0x85, 0x7f, 0xe0, 0x5c, 0xc3, 0xb5, 0x2a, 0x96, 0x9, 0xf3, 0x6c, 0xd0, 0x4f, + 0x36, 0xa9, 0x15, 0x8a, 0x70, 0xef, 0x53, 0xcc, 0xba, 0x25, 0x99, 0x6, 0xfc, 0x63, 0xdf, 0x40, + 0x33, 0xac, 0x10, 0x8f, 0x75, 0xea, 0x56, 0xc9, 0xbf, 0x20, 0x9c, 0x3, 0xf9, 0x66, 0xda, 0x45, + ], + [ + 0x0, 0xa0, 0x5d, 0xfd, 0xba, 0x1a, 0xe7, 0x47, 0x69, 0xc9, 0x34, 0x94, 0xd3, 0x73, 0x8e, 0x2e, + 0xd2, 0x72, 0x8f, 0x2f, 0x68, 0xc8, 0x35, 0x95, 0xbb, 0x1b, 0xe6, 0x46, 0x1, 0xa1, 0x5c, 0xfc, + 0xb9, 0x19, 0xe4, 0x44, 0x3, 0xa3, 0x5e, 0xfe, 0xd0, 0x70, 0x8d, 0x2d, 0x6a, 0xca, 0x37, 0x97, + 0x6b, 0xcb, 0x36, 0x96, 0xd1, 0x71, 0x8c, 0x2c, 0x2, 0xa2, 0x5f, 0xff, 0xb8, 0x18, 0xe5, 0x45, + 0x6f, 0xcf, 0x32, 0x92, 0xd5, 0x75, 0x88, 0x28, 0x6, 0xa6, 0x5b, 0xfb, 0xbc, 0x1c, 0xe1, 0x41, + 0xbd, 0x1d, 0xe0, 0x40, 0x7, 0xa7, 0x5a, 0xfa, 0xd4, 0x74, 0x89, 0x29, 0x6e, 0xce, 0x33, 0x93, + 0xd6, 0x76, 0x8b, 0x2b, 0x6c, 0xcc, 0x31, 0x91, 0xbf, 0x1f, 0xe2, 0x42, 0x5, 0xa5, 0x58, 0xf8, + 0x4, 0xa4, 0x59, 0xf9, 0xbe, 0x1e, 0xe3, 0x43, 0x6d, 0xcd, 0x30, 0x90, 0xd7, 0x77, 0x8a, 0x2a, + 0xde, 0x7e, 0x83, 0x23, 0x64, 0xc4, 0x39, 0x99, 0xb7, 0x17, 0xea, 0x4a, 0xd, 0xad, 0x50, 0xf0, + 0xc, 0xac, 0x51, 0xf1, 0xb6, 0x16, 0xeb, 0x4b, 0x65, 0xc5, 0x38, 0x98, 0xdf, 0x7f, 0x82, 0x22, + 0x67, 0xc7, 0x3a, 0x9a, 0xdd, 0x7d, 0x80, 0x20, 0xe, 0xae, 0x53, 0xf3, 0xb4, 0x14, 0xe9, 0x49, + 0xb5, 0x15, 0xe8, 0x48, 0xf, 0xaf, 0x52, 0xf2, 0xdc, 0x7c, 0x81, 0x21, 0x66, 0xc6, 0x3b, 0x9b, + 0xb1, 0x11, 0xec, 0x4c, 0xb, 0xab, 0x56, 0xf6, 0xd8, 0x78, 0x85, 0x25, 0x62, 0xc2, 0x3f, 0x9f, + 0x63, 0xc3, 0x3e, 0x9e, 0xd9, 0x79, 0x84, 0x24, 0xa, 0xaa, 0x57, 0xf7, 0xb0, 0x10, 0xed, 0x4d, + 0x8, 0xa8, 0x55, 0xf5, 0xb2, 0x12, 0xef, 0x4f, 0x61, 0xc1, 0x3c, 0x9c, 0xdb, 0x7b, 0x86, 0x26, + 0xda, 0x7a, 0x87, 0x27, 0x60, 0xc0, 0x3d, 0x9d, 0xb3, 0x13, 0xee, 0x4e, 0x9, 0xa9, 0x54, 0xf4, + ], + [ + 0x0, 0xa1, 0x5f, 0xfe, 0xbe, 0x1f, 0xe1, 0x40, 0x61, 0xc0, 0x3e, 0x9f, 0xdf, 0x7e, 0x80, 0x21, + 0xc2, 0x63, 0x9d, 0x3c, 0x7c, 0xdd, 0x23, 0x82, 0xa3, 0x2, 0xfc, 0x5d, 0x1d, 0xbc, 0x42, 0xe3, + 0x99, 0x38, 0xc6, 0x67, 0x27, 0x86, 0x78, 0xd9, 0xf8, 0x59, 0xa7, 0x6, 0x46, 0xe7, 0x19, 0xb8, + 0x5b, 0xfa, 0x4, 0xa5, 0xe5, 0x44, 0xba, 0x1b, 0x3a, 0x9b, 0x65, 0xc4, 0x84, 0x25, 0xdb, 0x7a, + 0x2f, 0x8e, 0x70, 0xd1, 0x91, 0x30, 0xce, 0x6f, 0x4e, 0xef, 0x11, 0xb0, 0xf0, 0x51, 0xaf, 0xe, + 0xed, 0x4c, 0xb2, 0x13, 0x53, 0xf2, 0xc, 0xad, 0x8c, 0x2d, 0xd3, 0x72, 0x32, 0x93, 0x6d, 0xcc, + 0xb6, 0x17, 0xe9, 0x48, 0x8, 0xa9, 0x57, 0xf6, 0xd7, 0x76, 0x88, 0x29, 0x69, 0xc8, 0x36, 0x97, + 0x74, 0xd5, 0x2b, 0x8a, 0xca, 0x6b, 0x95, 0x34, 0x15, 0xb4, 0x4a, 0xeb, 0xab, 0xa, 0xf4, 0x55, + 0x5e, 0xff, 0x1, 0xa0, 0xe0, 0x41, 0xbf, 0x1e, 0x3f, 0x9e, 0x60, 0xc1, 0x81, 0x20, 0xde, 0x7f, + 0x9c, 0x3d, 0xc3, 0x62, 0x22, 0x83, 0x7d, 0xdc, 0xfd, 0x5c, 0xa2, 0x3, 0x43, 0xe2, 0x1c, 0xbd, + 0xc7, 0x66, 0x98, 0x39, 0x79, 0xd8, 0x26, 0x87, 0xa6, 0x7, 0xf9, 0x58, 0x18, 0xb9, 0x47, 0xe6, + 0x5, 0xa4, 0x5a, 0xfb, 0xbb, 0x1a, 0xe4, 0x45, 0x64, 0xc5, 0x3b, 0x9a, 0xda, 0x7b, 0x85, 0x24, + 0x71, 0xd0, 0x2e, 0x8f, 0xcf, 0x6e, 0x90, 0x31, 0x10, 0xb1, 0x4f, 0xee, 0xae, 0xf, 0xf1, 0x50, + 0xb3, 0x12, 0xec, 0x4d, 0xd, 0xac, 0x52, 0xf3, 0xd2, 0x73, 0x8d, 0x2c, 0x6c, 0xcd, 0x33, 0x92, + 0xe8, 0x49, 0xb7, 0x16, 0x56, 0xf7, 0x9, 0xa8, 0x89, 0x28, 0xd6, 0x77, 0x37, 0x96, 0x68, 0xc9, + 0x2a, 0x8b, 0x75, 0xd4, 0x94, 0x35, 0xcb, 0x6a, 0x4b, 0xea, 0x14, 0xb5, 0xf5, 0x54, 0xaa, 0xb, + ], + [ + 0x0, 0xa2, 0x59, 0xfb, 0xb2, 0x10, 0xeb, 0x49, 0x79, 0xdb, 0x20, 0x82, 0xcb, 0x69, 0x92, 0x30, + 0xf2, 0x50, 0xab, 0x9, 0x40, 0xe2, 0x19, 0xbb, 0x8b, 0x29, 0xd2, 0x70, 0x39, 0x9b, 0x60, 0xc2, + 0xf9, 0x5b, 0xa0, 0x2, 0x4b, 0xe9, 0x12, 0xb0, 0x80, 0x22, 0xd9, 0x7b, 0x32, 0x90, 0x6b, 0xc9, + 0xb, 0xa9, 0x52, 0xf0, 0xb9, 0x1b, 0xe0, 0x42, 0x72, 0xd0, 0x2b, 0x89, 0xc0, 0x62, 0x99, 0x3b, + 0xef, 0x4d, 0xb6, 0x14, 0x5d, 0xff, 0x4, 0xa6, 0x96, 0x34, 0xcf, 0x6d, 0x24, 0x86, 0x7d, 0xdf, + 0x1d, 0xbf, 0x44, 0xe6, 0xaf, 0xd, 0xf6, 0x54, 0x64, 0xc6, 0x3d, 0x9f, 0xd6, 0x74, 0x8f, 0x2d, + 0x16, 0xb4, 0x4f, 0xed, 0xa4, 0x6, 0xfd, 0x5f, 0x6f, 0xcd, 0x36, 0x94, 0xdd, 0x7f, 0x84, 0x26, + 0xe4, 0x46, 0xbd, 0x1f, 0x56, 0xf4, 0xf, 0xad, 0x9d, 0x3f, 0xc4, 0x66, 0x2f, 0x8d, 0x76, 0xd4, + 0xc3, 0x61, 0x9a, 0x38, 0x71, 0xd3, 0x28, 0x8a, 0xba, 0x18, 0xe3, 0x41, 0x8, 0xaa, 0x51, 0xf3, + 0x31, 0x93, 0x68, 0xca, 0x83, 0x21, 0xda, 0x78, 0x48, 0xea, 0x11, 0xb3, 0xfa, 0x58, 0xa3, 0x1, + 0x3a, 0x98, 0x63, 0xc1, 0x88, 0x2a, 0xd1, 0x73, 0x43, 0xe1, 0x1a, 0xb8, 0xf1, 0x53, 0xa8, 0xa, + 0xc8, 0x6a, 0x91, 0x33, 0x7a, 0xd8, 0x23, 0x81, 0xb1, 0x13, 0xe8, 0x4a, 0x3, 0xa1, 0x5a, 0xf8, + 0x2c, 0x8e, 0x75, 0xd7, 0x9e, 0x3c, 0xc7, 0x65, 0x55, 0xf7, 0xc, 0xae, 0xe7, 0x45, 0xbe, 0x1c, + 0xde, 0x7c, 0x87, 0x25, 0x6c, 0xce, 0x35, 0x97, 0xa7, 0x5, 0xfe, 0x5c, 0x15, 0xb7, 0x4c, 0xee, + 0xd5, 0x77, 0x8c, 0x2e, 0x67, 0xc5, 0x3e, 0x9c, 0xac, 0xe, 0xf5, 0x57, 0x1e, 0xbc, 0x47, 0xe5, + 0x27, 0x85, 0x7e, 0xdc, 0x95, 0x37, 0xcc, 0x6e, 0x5e, 0xfc, 0x7, 0xa5, 0xec, 0x4e, 0xb5, 0x17, + ], + [ + 0x0, 0xa3, 0x5b, 0xf8, 0xb6, 0x15, 0xed, 0x4e, 0x71, 0xd2, 0x2a, 0x89, 0xc7, 0x64, 0x9c, 0x3f, + 0xe2, 0x41, 0xb9, 0x1a, 0x54, 0xf7, 0xf, 0xac, 0x93, 0x30, 0xc8, 0x6b, 0x25, 0x86, 0x7e, 0xdd, + 0xd9, 0x7a, 0x82, 0x21, 0x6f, 0xcc, 0x34, 0x97, 0xa8, 0xb, 0xf3, 0x50, 0x1e, 0xbd, 0x45, 0xe6, + 0x3b, 0x98, 0x60, 0xc3, 0x8d, 0x2e, 0xd6, 0x75, 0x4a, 0xe9, 0x11, 0xb2, 0xfc, 0x5f, 0xa7, 0x4, + 0xaf, 0xc, 0xf4, 0x57, 0x19, 0xba, 0x42, 0xe1, 0xde, 0x7d, 0x85, 0x26, 0x68, 0xcb, 0x33, 0x90, + 0x4d, 0xee, 0x16, 0xb5, 0xfb, 0x58, 0xa0, 0x3, 0x3c, 0x9f, 0x67, 0xc4, 0x8a, 0x29, 0xd1, 0x72, + 0x76, 0xd5, 0x2d, 0x8e, 0xc0, 0x63, 0x9b, 0x38, 0x7, 0xa4, 0x5c, 0xff, 0xb1, 0x12, 0xea, 0x49, + 0x94, 0x37, 0xcf, 0x6c, 0x22, 0x81, 0x79, 0xda, 0xe5, 0x46, 0xbe, 0x1d, 0x53, 0xf0, 0x8, 0xab, + 0x43, 0xe0, 0x18, 0xbb, 0xf5, 0x56, 0xae, 0xd, 0x32, 0x91, 0x69, 0xca, 0x84, 0x27, 0xdf, 0x7c, + 0xa1, 0x2, 0xfa, 0x59, 0x17, 0xb4, 0x4c, 0xef, 0xd0, 0x73, 0x8b, 0x28, 0x66, 0xc5, 0x3d, 0x9e, + 0x9a, 0x39, 0xc1, 0x62, 0x2c, 0x8f, 0x77, 0xd4, 0xeb, 0x48, 0xb0, 0x13, 0x5d, 0xfe, 0x6, 0xa5, + 0x78, 0xdb, 0x23, 0x80, 0xce, 0x6d, 0x95, 0x36, 0x9, 0xaa, 0x52, 0xf1, 0xbf, 0x1c, 0xe4, 0x47, + 0xec, 0x4f, 0xb7, 0x14, 0x5a, 0xf9, 0x1, 0xa2, 0x9d, 0x3e, 0xc6, 0x65, 0x2b, 0x88, 0x70, 0xd3, + 0xe, 0xad, 0x55, 0xf6, 0xb8, 0x1b, 0xe3, 0x40, 0x7f, 0xdc, 0x24, 0x87, 0xc9, 0x6a, 0x92, 0x31, + 0x35, 0x96, 0x6e, 0xcd, 0x83, 0x20, 0xd8, 0x7b, 0x44, 0xe7, 0x1f, 0xbc, 0xf2, 0x51, 0xa9, 0xa, + 0xd7, 0x74, 0x8c, 0x2f, 0x61, 0xc2, 0x3a, 0x99, 0xa6, 0x5, 0xfd, 0x5e, 0x10, 0xb3, 0x4b, 0xe8, + ], + [ + 0x0, 0xa4, 0x55, 0xf1, 0xaa, 0xe, 0xff, 0x5b, 0x49, 0xed, 0x1c, 0xb8, 0xe3, 0x47, 0xb6, 0x12, + 0x92, 0x36, 0xc7, 0x63, 0x38, 0x9c, 0x6d, 0xc9, 0xdb, 0x7f, 0x8e, 0x2a, 0x71, 0xd5, 0x24, 0x80, + 0x39, 0x9d, 0x6c, 0xc8, 0x93, 0x37, 0xc6, 0x62, 0x70, 0xd4, 0x25, 0x81, 0xda, 0x7e, 0x8f, 0x2b, + 0xab, 0xf, 0xfe, 0x5a, 0x1, 0xa5, 0x54, 0xf0, 0xe2, 0x46, 0xb7, 0x13, 0x48, 0xec, 0x1d, 0xb9, + 0x72, 0xd6, 0x27, 0x83, 0xd8, 0x7c, 0x8d, 0x29, 0x3b, 0x9f, 0x6e, 0xca, 0x91, 0x35, 0xc4, 0x60, + 0xe0, 0x44, 0xb5, 0x11, 0x4a, 0xee, 0x1f, 0xbb, 0xa9, 0xd, 0xfc, 0x58, 0x3, 0xa7, 0x56, 0xf2, + 0x4b, 0xef, 0x1e, 0xba, 0xe1, 0x45, 0xb4, 0x10, 0x2, 0xa6, 0x57, 0xf3, 0xa8, 0xc, 0xfd, 0x59, + 0xd9, 0x7d, 0x8c, 0x28, 0x73, 0xd7, 0x26, 0x82, 0x90, 0x34, 0xc5, 0x61, 0x3a, 0x9e, 0x6f, 0xcb, + 0xe4, 0x40, 0xb1, 0x15, 0x4e, 0xea, 0x1b, 0xbf, 0xad, 0x9, 0xf8, 0x5c, 0x7, 0xa3, 0x52, 0xf6, + 0x76, 0xd2, 0x23, 0x87, 0xdc, 0x78, 0x89, 0x2d, 0x3f, 0x9b, 0x6a, 0xce, 0x95, 0x31, 0xc0, 0x64, + 0xdd, 0x79, 0x88, 0x2c, 0x77, 0xd3, 0x22, 0x86, 0x94, 0x30, 0xc1, 0x65, 0x3e, 0x9a, 0x6b, 0xcf, + 0x4f, 0xeb, 0x1a, 0xbe, 0xe5, 0x41, 0xb0, 0x14, 0x6, 0xa2, 0x53, 0xf7, 0xac, 0x8, 0xf9, 0x5d, + 0x96, 0x32, 0xc3, 0x67, 0x3c, 0x98, 0x69, 0xcd, 0xdf, 0x7b, 0x8a, 0x2e, 0x75, 0xd1, 0x20, 0x84, + 0x4, 0xa0, 0x51, 0xf5, 0xae, 0xa, 0xfb, 0x5f, 0x4d, 0xe9, 0x18, 0xbc, 0xe7, 0x43, 0xb2, 0x16, + 0xaf, 0xb, 0xfa, 0x5e, 0x5, 0xa1, 0x50, 0xf4, 0xe6, 0x42, 0xb3, 0x17, 0x4c, 0xe8, 0x19, 0xbd, + 0x3d, 0x99, 0x68, 0xcc, 0x97, 0x33, 0xc2, 0x66, 0x74, 0xd0, 0x21, 0x85, 0xde, 0x7a, 0x8b, 0x2f, + ], + [ + 0x0, 0xa5, 0x57, 0xf2, 0xae, 0xb, 0xf9, 0x5c, 0x41, 0xe4, 0x16, 0xb3, 0xef, 0x4a, 0xb8, 0x1d, + 0x82, 0x27, 0xd5, 0x70, 0x2c, 0x89, 0x7b, 0xde, 0xc3, 0x66, 0x94, 0x31, 0x6d, 0xc8, 0x3a, 0x9f, + 0x19, 0xbc, 0x4e, 0xeb, 0xb7, 0x12, 0xe0, 0x45, 0x58, 0xfd, 0xf, 0xaa, 0xf6, 0x53, 0xa1, 0x4, + 0x9b, 0x3e, 0xcc, 0x69, 0x35, 0x90, 0x62, 0xc7, 0xda, 0x7f, 0x8d, 0x28, 0x74, 0xd1, 0x23, 0x86, + 0x32, 0x97, 0x65, 0xc0, 0x9c, 0x39, 0xcb, 0x6e, 0x73, 0xd6, 0x24, 0x81, 0xdd, 0x78, 0x8a, 0x2f, + 0xb0, 0x15, 0xe7, 0x42, 0x1e, 0xbb, 0x49, 0xec, 0xf1, 0x54, 0xa6, 0x3, 0x5f, 0xfa, 0x8, 0xad, + 0x2b, 0x8e, 0x7c, 0xd9, 0x85, 0x20, 0xd2, 0x77, 0x6a, 0xcf, 0x3d, 0x98, 0xc4, 0x61, 0x93, 0x36, + 0xa9, 0xc, 0xfe, 0x5b, 0x7, 0xa2, 0x50, 0xf5, 0xe8, 0x4d, 0xbf, 0x1a, 0x46, 0xe3, 0x11, 0xb4, + 0x64, 0xc1, 0x33, 0x96, 0xca, 0x6f, 0x9d, 0x38, 0x25, 0x80, 0x72, 0xd7, 0x8b, 0x2e, 0xdc, 0x79, + 0xe6, 0x43, 0xb1, 0x14, 0x48, 0xed, 0x1f, 0xba, 0xa7, 0x2, 0xf0, 0x55, 0x9, 0xac, 0x5e, 0xfb, + 0x7d, 0xd8, 0x2a, 0x8f, 0xd3, 0x76, 0x84, 0x21, 0x3c, 0x99, 0x6b, 0xce, 0x92, 0x37, 0xc5, 0x60, + 0xff, 0x5a, 0xa8, 0xd, 0x51, 0xf4, 0x6, 0xa3, 0xbe, 0x1b, 0xe9, 0x4c, 0x10, 0xb5, 0x47, 0xe2, + 0x56, 0xf3, 0x1, 0xa4, 0xf8, 0x5d, 0xaf, 0xa, 0x17, 0xb2, 0x40, 0xe5, 0xb9, 0x1c, 0xee, 0x4b, + 0xd4, 0x71, 0x83, 0x26, 0x7a, 0xdf, 0x2d, 0x88, 0x95, 0x30, 0xc2, 0x67, 0x3b, 0x9e, 0x6c, 0xc9, + 0x4f, 0xea, 0x18, 0xbd, 0xe1, 0x44, 0xb6, 0x13, 0xe, 0xab, 0x59, 0xfc, 0xa0, 0x5, 0xf7, 0x52, + 0xcd, 0x68, 0x9a, 0x3f, 0x63, 0xc6, 0x34, 0x91, 0x8c, 0x29, 0xdb, 0x7e, 0x22, 0x87, 0x75, 0xd0, + ], + [ + 0x0, 0xa6, 0x51, 0xf7, 0xa2, 0x4, 0xf3, 0x55, 0x59, 0xff, 0x8, 0xae, 0xfb, 0x5d, 0xaa, 0xc, + 0xb2, 0x14, 0xe3, 0x45, 0x10, 0xb6, 0x41, 0xe7, 0xeb, 0x4d, 0xba, 0x1c, 0x49, 0xef, 0x18, 0xbe, + 0x79, 0xdf, 0x28, 0x8e, 0xdb, 0x7d, 0x8a, 0x2c, 0x20, 0x86, 0x71, 0xd7, 0x82, 0x24, 0xd3, 0x75, + 0xcb, 0x6d, 0x9a, 0x3c, 0x69, 0xcf, 0x38, 0x9e, 0x92, 0x34, 0xc3, 0x65, 0x30, 0x96, 0x61, 0xc7, + 0xf2, 0x54, 0xa3, 0x5, 0x50, 0xf6, 0x1, 0xa7, 0xab, 0xd, 0xfa, 0x5c, 0x9, 0xaf, 0x58, 0xfe, + 0x40, 0xe6, 0x11, 0xb7, 0xe2, 0x44, 0xb3, 0x15, 0x19, 0xbf, 0x48, 0xee, 0xbb, 0x1d, 0xea, 0x4c, + 0x8b, 0x2d, 0xda, 0x7c, 0x29, 0x8f, 0x78, 0xde, 0xd2, 0x74, 0x83, 0x25, 0x70, 0xd6, 0x21, 0x87, + 0x39, 0x9f, 0x68, 0xce, 0x9b, 0x3d, 0xca, 0x6c, 0x60, 0xc6, 0x31, 0x97, 0xc2, 0x64, 0x93, 0x35, + 0xf9, 0x5f, 0xa8, 0xe, 0x5b, 0xfd, 0xa, 0xac, 0xa0, 0x6, 0xf1, 0x57, 0x2, 0xa4, 0x53, 0xf5, + 0x4b, 0xed, 0x1a, 0xbc, 0xe9, 0x4f, 0xb8, 0x1e, 0x12, 0xb4, 0x43, 0xe5, 0xb0, 0x16, 0xe1, 0x47, + 0x80, 0x26, 0xd1, 0x77, 0x22, 0x84, 0x73, 0xd5, 0xd9, 0x7f, 0x88, 0x2e, 0x7b, 0xdd, 0x2a, 0x8c, + 0x32, 0x94, 0x63, 0xc5, 0x90, 0x36, 0xc1, 0x67, 0x6b, 0xcd, 0x3a, 0x9c, 0xc9, 0x6f, 0x98, 0x3e, + 0xb, 0xad, 0x5a, 0xfc, 0xa9, 0xf, 0xf8, 0x5e, 0x52, 0xf4, 0x3, 0xa5, 0xf0, 0x56, 0xa1, 0x7, + 0xb9, 0x1f, 0xe8, 0x4e, 0x1b, 0xbd, 0x4a, 0xec, 0xe0, 0x46, 0xb1, 0x17, 0x42, 0xe4, 0x13, 0xb5, + 0x72, 0xd4, 0x23, 0x85, 0xd0, 0x76, 0x81, 0x27, 0x2b, 0x8d, 0x7a, 0xdc, 0x89, 0x2f, 0xd8, 0x7e, + 0xc0, 0x66, 0x91, 0x37, 0x62, 0xc4, 0x33, 0x95, 0x99, 0x3f, 0xc8, 0x6e, 0x3b, 0x9d, 0x6a, 0xcc, + ], + [ + 0x0, 0xa7, 0x53, 0xf4, 0xa6, 0x1, 0xf5, 0x52, 0x51, 0xf6, 0x2, 0xa5, 0xf7, 0x50, 0xa4, 0x3, + 0xa2, 0x5, 0xf1, 0x56, 0x4, 0xa3, 0x57, 0xf0, 0xf3, 0x54, 0xa0, 0x7, 0x55, 0xf2, 0x6, 0xa1, + 0x59, 0xfe, 0xa, 0xad, 0xff, 0x58, 0xac, 0xb, 0x8, 0xaf, 0x5b, 0xfc, 0xae, 0x9, 0xfd, 0x5a, + 0xfb, 0x5c, 0xa8, 0xf, 0x5d, 0xfa, 0xe, 0xa9, 0xaa, 0xd, 0xf9, 0x5e, 0xc, 0xab, 0x5f, 0xf8, + 0xb2, 0x15, 0xe1, 0x46, 0x14, 0xb3, 0x47, 0xe0, 0xe3, 0x44, 0xb0, 0x17, 0x45, 0xe2, 0x16, 0xb1, + 0x10, 0xb7, 0x43, 0xe4, 0xb6, 0x11, 0xe5, 0x42, 0x41, 0xe6, 0x12, 0xb5, 0xe7, 0x40, 0xb4, 0x13, + 0xeb, 0x4c, 0xb8, 0x1f, 0x4d, 0xea, 0x1e, 0xb9, 0xba, 0x1d, 0xe9, 0x4e, 0x1c, 0xbb, 0x4f, 0xe8, + 0x49, 0xee, 0x1a, 0xbd, 0xef, 0x48, 0xbc, 0x1b, 0x18, 0xbf, 0x4b, 0xec, 0xbe, 0x19, 0xed, 0x4a, + 0x79, 0xde, 0x2a, 0x8d, 0xdf, 0x78, 0x8c, 0x2b, 0x28, 0x8f, 0x7b, 0xdc, 0x8e, 0x29, 0xdd, 0x7a, + 0xdb, 0x7c, 0x88, 0x2f, 0x7d, 0xda, 0x2e, 0x89, 0x8a, 0x2d, 0xd9, 0x7e, 0x2c, 0x8b, 0x7f, 0xd8, + 0x20, 0x87, 0x73, 0xd4, 0x86, 0x21, 0xd5, 0x72, 0x71, 0xd6, 0x22, 0x85, 0xd7, 0x70, 0x84, 0x23, + 0x82, 0x25, 0xd1, 0x76, 0x24, 0x83, 0x77, 0xd0, 0xd3, 0x74, 0x80, 0x27, 0x75, 0xd2, 0x26, 0x81, + 0xcb, 0x6c, 0x98, 0x3f, 0x6d, 0xca, 0x3e, 0x99, 0x9a, 0x3d, 0xc9, 0x6e, 0x3c, 0x9b, 0x6f, 0xc8, + 0x69, 0xce, 0x3a, 0x9d, 0xcf, 0x68, 0x9c, 0x3b, 0x38, 0x9f, 0x6b, 0xcc, 0x9e, 0x39, 0xcd, 0x6a, + 0x92, 0x35, 0xc1, 0x66, 0x34, 0x93, 0x67, 0xc0, 0xc3, 0x64, 0x90, 0x37, 0x65, 0xc2, 0x36, 0x91, + 0x30, 0x97, 0x63, 0xc4, 0x96, 0x31, 0xc5, 0x62, 0x61, 0xc6, 0x32, 0x95, 0xc7, 0x60, 0x94, 0x33, + ], + [ + 0x0, 0xa8, 0x4d, 0xe5, 0x9a, 0x32, 0xd7, 0x7f, 0x29, 0x81, 0x64, 0xcc, 0xb3, 0x1b, 0xfe, 0x56, + 0x52, 0xfa, 0x1f, 0xb7, 0xc8, 0x60, 0x85, 0x2d, 0x7b, 0xd3, 0x36, 0x9e, 0xe1, 0x49, 0xac, 0x4, + 0xa4, 0xc, 0xe9, 0x41, 0x3e, 0x96, 0x73, 0xdb, 0x8d, 0x25, 0xc0, 0x68, 0x17, 0xbf, 0x5a, 0xf2, + 0xf6, 0x5e, 0xbb, 0x13, 0x6c, 0xc4, 0x21, 0x89, 0xdf, 0x77, 0x92, 0x3a, 0x45, 0xed, 0x8, 0xa0, + 0x55, 0xfd, 0x18, 0xb0, 0xcf, 0x67, 0x82, 0x2a, 0x7c, 0xd4, 0x31, 0x99, 0xe6, 0x4e, 0xab, 0x3, + 0x7, 0xaf, 0x4a, 0xe2, 0x9d, 0x35, 0xd0, 0x78, 0x2e, 0x86, 0x63, 0xcb, 0xb4, 0x1c, 0xf9, 0x51, + 0xf1, 0x59, 0xbc, 0x14, 0x6b, 0xc3, 0x26, 0x8e, 0xd8, 0x70, 0x95, 0x3d, 0x42, 0xea, 0xf, 0xa7, + 0xa3, 0xb, 0xee, 0x46, 0x39, 0x91, 0x74, 0xdc, 0x8a, 0x22, 0xc7, 0x6f, 0x10, 0xb8, 0x5d, 0xf5, + 0xaa, 0x2, 0xe7, 0x4f, 0x30, 0x98, 0x7d, 0xd5, 0x83, 0x2b, 0xce, 0x66, 0x19, 0xb1, 0x54, 0xfc, + 0xf8, 0x50, 0xb5, 0x1d, 0x62, 0xca, 0x2f, 0x87, 0xd1, 0x79, 0x9c, 0x34, 0x4b, 0xe3, 0x6, 0xae, + 0xe, 0xa6, 0x43, 0xeb, 0x94, 0x3c, 0xd9, 0x71, 0x27, 0x8f, 0x6a, 0xc2, 0xbd, 0x15, 0xf0, 0x58, + 0x5c, 0xf4, 0x11, 0xb9, 0xc6, 0x6e, 0x8b, 0x23, 0x75, 0xdd, 0x38, 0x90, 0xef, 0x47, 0xa2, 0xa, + 0xff, 0x57, 0xb2, 0x1a, 0x65, 0xcd, 0x28, 0x80, 0xd6, 0x7e, 0x9b, 0x33, 0x4c, 0xe4, 0x1, 0xa9, + 0xad, 0x5, 0xe0, 0x48, 0x37, 0x9f, 0x7a, 0xd2, 0x84, 0x2c, 0xc9, 0x61, 0x1e, 0xb6, 0x53, 0xfb, + 0x5b, 0xf3, 0x16, 0xbe, 0xc1, 0x69, 0x8c, 0x24, 0x72, 0xda, 0x3f, 0x97, 0xe8, 0x40, 0xa5, 0xd, + 0x9, 0xa1, 0x44, 0xec, 0x93, 0x3b, 0xde, 0x76, 0x20, 0x88, 0x6d, 0xc5, 0xba, 0x12, 0xf7, 0x5f, + ], + [ + 0x0, 0xa9, 0x4f, 0xe6, 0x9e, 0x37, 0xd1, 0x78, 0x21, 0x88, 0x6e, 0xc7, 0xbf, 0x16, 0xf0, 0x59, + 0x42, 0xeb, 0xd, 0xa4, 0xdc, 0x75, 0x93, 0x3a, 0x63, 0xca, 0x2c, 0x85, 0xfd, 0x54, 0xb2, 0x1b, + 0x84, 0x2d, 0xcb, 0x62, 0x1a, 0xb3, 0x55, 0xfc, 0xa5, 0xc, 0xea, 0x43, 0x3b, 0x92, 0x74, 0xdd, + 0xc6, 0x6f, 0x89, 0x20, 0x58, 0xf1, 0x17, 0xbe, 0xe7, 0x4e, 0xa8, 0x1, 0x79, 0xd0, 0x36, 0x9f, + 0x15, 0xbc, 0x5a, 0xf3, 0x8b, 0x22, 0xc4, 0x6d, 0x34, 0x9d, 0x7b, 0xd2, 0xaa, 0x3, 0xe5, 0x4c, + 0x57, 0xfe, 0x18, 0xb1, 0xc9, 0x60, 0x86, 0x2f, 0x76, 0xdf, 0x39, 0x90, 0xe8, 0x41, 0xa7, 0xe, + 0x91, 0x38, 0xde, 0x77, 0xf, 0xa6, 0x40, 0xe9, 0xb0, 0x19, 0xff, 0x56, 0x2e, 0x87, 0x61, 0xc8, + 0xd3, 0x7a, 0x9c, 0x35, 0x4d, 0xe4, 0x2, 0xab, 0xf2, 0x5b, 0xbd, 0x14, 0x6c, 0xc5, 0x23, 0x8a, + 0x2a, 0x83, 0x65, 0xcc, 0xb4, 0x1d, 0xfb, 0x52, 0xb, 0xa2, 0x44, 0xed, 0x95, 0x3c, 0xda, 0x73, + 0x68, 0xc1, 0x27, 0x8e, 0xf6, 0x5f, 0xb9, 0x10, 0x49, 0xe0, 0x6, 0xaf, 0xd7, 0x7e, 0x98, 0x31, + 0xae, 0x7, 0xe1, 0x48, 0x30, 0x99, 0x7f, 0xd6, 0x8f, 0x26, 0xc0, 0x69, 0x11, 0xb8, 0x5e, 0xf7, + 0xec, 0x45, 0xa3, 0xa, 0x72, 0xdb, 0x3d, 0x94, 0xcd, 0x64, 0x82, 0x2b, 0x53, 0xfa, 0x1c, 0xb5, + 0x3f, 0x96, 0x70, 0xd9, 0xa1, 0x8, 0xee, 0x47, 0x1e, 0xb7, 0x51, 0xf8, 0x80, 0x29, 0xcf, 0x66, + 0x7d, 0xd4, 0x32, 0x9b, 0xe3, 0x4a, 0xac, 0x5, 0x5c, 0xf5, 0x13, 0xba, 0xc2, 0x6b, 0x8d, 0x24, + 0xbb, 0x12, 0xf4, 0x5d, 0x25, 0x8c, 0x6a, 0xc3, 0x9a, 0x33, 0xd5, 0x7c, 0x4, 0xad, 0x4b, 0xe2, + 0xf9, 0x50, 0xb6, 0x1f, 0x67, 0xce, 0x28, 0x81, 0xd8, 0x71, 0x97, 0x3e, 0x46, 0xef, 0x9, 0xa0, + ], + [ + 0x0, 0xaa, 0x49, 0xe3, 0x92, 0x38, 0xdb, 0x71, 0x39, 0x93, 0x70, 0xda, 0xab, 0x1, 0xe2, 0x48, + 0x72, 0xd8, 0x3b, 0x91, 0xe0, 0x4a, 0xa9, 0x3, 0x4b, 0xe1, 0x2, 0xa8, 0xd9, 0x73, 0x90, 0x3a, + 0xe4, 0x4e, 0xad, 0x7, 0x76, 0xdc, 0x3f, 0x95, 0xdd, 0x77, 0x94, 0x3e, 0x4f, 0xe5, 0x6, 0xac, + 0x96, 0x3c, 0xdf, 0x75, 0x4, 0xae, 0x4d, 0xe7, 0xaf, 0x5, 0xe6, 0x4c, 0x3d, 0x97, 0x74, 0xde, + 0xd5, 0x7f, 0x9c, 0x36, 0x47, 0xed, 0xe, 0xa4, 0xec, 0x46, 0xa5, 0xf, 0x7e, 0xd4, 0x37, 0x9d, + 0xa7, 0xd, 0xee, 0x44, 0x35, 0x9f, 0x7c, 0xd6, 0x9e, 0x34, 0xd7, 0x7d, 0xc, 0xa6, 0x45, 0xef, + 0x31, 0x9b, 0x78, 0xd2, 0xa3, 0x9, 0xea, 0x40, 0x8, 0xa2, 0x41, 0xeb, 0x9a, 0x30, 0xd3, 0x79, + 0x43, 0xe9, 0xa, 0xa0, 0xd1, 0x7b, 0x98, 0x32, 0x7a, 0xd0, 0x33, 0x99, 0xe8, 0x42, 0xa1, 0xb, + 0xb7, 0x1d, 0xfe, 0x54, 0x25, 0x8f, 0x6c, 0xc6, 0x8e, 0x24, 0xc7, 0x6d, 0x1c, 0xb6, 0x55, 0xff, + 0xc5, 0x6f, 0x8c, 0x26, 0x57, 0xfd, 0x1e, 0xb4, 0xfc, 0x56, 0xb5, 0x1f, 0x6e, 0xc4, 0x27, 0x8d, + 0x53, 0xf9, 0x1a, 0xb0, 0xc1, 0x6b, 0x88, 0x22, 0x6a, 0xc0, 0x23, 0x89, 0xf8, 0x52, 0xb1, 0x1b, + 0x21, 0x8b, 0x68, 0xc2, 0xb3, 0x19, 0xfa, 0x50, 0x18, 0xb2, 0x51, 0xfb, 0x8a, 0x20, 0xc3, 0x69, + 0x62, 0xc8, 0x2b, 0x81, 0xf0, 0x5a, 0xb9, 0x13, 0x5b, 0xf1, 0x12, 0xb8, 0xc9, 0x63, 0x80, 0x2a, + 0x10, 0xba, 0x59, 0xf3, 0x82, 0x28, 0xcb, 0x61, 0x29, 0x83, 0x60, 0xca, 0xbb, 0x11, 0xf2, 0x58, + 0x86, 0x2c, 0xcf, 0x65, 0x14, 0xbe, 0x5d, 0xf7, 0xbf, 0x15, 0xf6, 0x5c, 0x2d, 0x87, 0x64, 0xce, + 0xf4, 0x5e, 0xbd, 0x17, 0x66, 0xcc, 0x2f, 0x85, 0xcd, 0x67, 0x84, 0x2e, 0x5f, 0xf5, 0x16, 0xbc, + ], + [ + 0x0, 0xab, 0x4b, 0xe0, 0x96, 0x3d, 0xdd, 0x76, 0x31, 0x9a, 0x7a, 0xd1, 0xa7, 0xc, 0xec, 0x47, + 0x62, 0xc9, 0x29, 0x82, 0xf4, 0x5f, 0xbf, 0x14, 0x53, 0xf8, 0x18, 0xb3, 0xc5, 0x6e, 0x8e, 0x25, + 0xc4, 0x6f, 0x8f, 0x24, 0x52, 0xf9, 0x19, 0xb2, 0xf5, 0x5e, 0xbe, 0x15, 0x63, 0xc8, 0x28, 0x83, + 0xa6, 0xd, 0xed, 0x46, 0x30, 0x9b, 0x7b, 0xd0, 0x97, 0x3c, 0xdc, 0x77, 0x1, 0xaa, 0x4a, 0xe1, + 0x95, 0x3e, 0xde, 0x75, 0x3, 0xa8, 0x48, 0xe3, 0xa4, 0xf, 0xef, 0x44, 0x32, 0x99, 0x79, 0xd2, + 0xf7, 0x5c, 0xbc, 0x17, 0x61, 0xca, 0x2a, 0x81, 0xc6, 0x6d, 0x8d, 0x26, 0x50, 0xfb, 0x1b, 0xb0, + 0x51, 0xfa, 0x1a, 0xb1, 0xc7, 0x6c, 0x8c, 0x27, 0x60, 0xcb, 0x2b, 0x80, 0xf6, 0x5d, 0xbd, 0x16, + 0x33, 0x98, 0x78, 0xd3, 0xa5, 0xe, 0xee, 0x45, 0x2, 0xa9, 0x49, 0xe2, 0x94, 0x3f, 0xdf, 0x74, + 0x37, 0x9c, 0x7c, 0xd7, 0xa1, 0xa, 0xea, 0x41, 0x6, 0xad, 0x4d, 0xe6, 0x90, 0x3b, 0xdb, 0x70, + 0x55, 0xfe, 0x1e, 0xb5, 0xc3, 0x68, 0x88, 0x23, 0x64, 0xcf, 0x2f, 0x84, 0xf2, 0x59, 0xb9, 0x12, + 0xf3, 0x58, 0xb8, 0x13, 0x65, 0xce, 0x2e, 0x85, 0xc2, 0x69, 0x89, 0x22, 0x54, 0xff, 0x1f, 0xb4, + 0x91, 0x3a, 0xda, 0x71, 0x7, 0xac, 0x4c, 0xe7, 0xa0, 0xb, 0xeb, 0x40, 0x36, 0x9d, 0x7d, 0xd6, + 0xa2, 0x9, 0xe9, 0x42, 0x34, 0x9f, 0x7f, 0xd4, 0x93, 0x38, 0xd8, 0x73, 0x5, 0xae, 0x4e, 0xe5, + 0xc0, 0x6b, 0x8b, 0x20, 0x56, 0xfd, 0x1d, 0xb6, 0xf1, 0x5a, 0xba, 0x11, 0x67, 0xcc, 0x2c, 0x87, + 0x66, 0xcd, 0x2d, 0x86, 0xf0, 0x5b, 0xbb, 0x10, 0x57, 0xfc, 0x1c, 0xb7, 0xc1, 0x6a, 0x8a, 0x21, + 0x4, 0xaf, 0x4f, 0xe4, 0x92, 0x39, 0xd9, 0x72, 0x35, 0x9e, 0x7e, 0xd5, 0xa3, 0x8, 0xe8, 0x43, + ], + [ + 0x0, 0xac, 0x45, 0xe9, 0x8a, 0x26, 0xcf, 0x63, 0x9, 0xa5, 0x4c, 0xe0, 0x83, 0x2f, 0xc6, 0x6a, + 0x12, 0xbe, 0x57, 0xfb, 0x98, 0x34, 0xdd, 0x71, 0x1b, 0xb7, 0x5e, 0xf2, 0x91, 0x3d, 0xd4, 0x78, + 0x24, 0x88, 0x61, 0xcd, 0xae, 0x2, 0xeb, 0x47, 0x2d, 0x81, 0x68, 0xc4, 0xa7, 0xb, 0xe2, 0x4e, + 0x36, 0x9a, 0x73, 0xdf, 0xbc, 0x10, 0xf9, 0x55, 0x3f, 0x93, 0x7a, 0xd6, 0xb5, 0x19, 0xf0, 0x5c, + 0x48, 0xe4, 0xd, 0xa1, 0xc2, 0x6e, 0x87, 0x2b, 0x41, 0xed, 0x4, 0xa8, 0xcb, 0x67, 0x8e, 0x22, + 0x5a, 0xf6, 0x1f, 0xb3, 0xd0, 0x7c, 0x95, 0x39, 0x53, 0xff, 0x16, 0xba, 0xd9, 0x75, 0x9c, 0x30, + 0x6c, 0xc0, 0x29, 0x85, 0xe6, 0x4a, 0xa3, 0xf, 0x65, 0xc9, 0x20, 0x8c, 0xef, 0x43, 0xaa, 0x6, + 0x7e, 0xd2, 0x3b, 0x97, 0xf4, 0x58, 0xb1, 0x1d, 0x77, 0xdb, 0x32, 0x9e, 0xfd, 0x51, 0xb8, 0x14, + 0x90, 0x3c, 0xd5, 0x79, 0x1a, 0xb6, 0x5f, 0xf3, 0x99, 0x35, 0xdc, 0x70, 0x13, 0xbf, 0x56, 0xfa, + 0x82, 0x2e, 0xc7, 0x6b, 0x8, 0xa4, 0x4d, 0xe1, 0x8b, 0x27, 0xce, 0x62, 0x1, 0xad, 0x44, 0xe8, + 0xb4, 0x18, 0xf1, 0x5d, 0x3e, 0x92, 0x7b, 0xd7, 0xbd, 0x11, 0xf8, 0x54, 0x37, 0x9b, 0x72, 0xde, + 0xa6, 0xa, 0xe3, 0x4f, 0x2c, 0x80, 0x69, 0xc5, 0xaf, 0x3, 0xea, 0x46, 0x25, 0x89, 0x60, 0xcc, + 0xd8, 0x74, 0x9d, 0x31, 0x52, 0xfe, 0x17, 0xbb, 0xd1, 0x7d, 0x94, 0x38, 0x5b, 0xf7, 0x1e, 0xb2, + 0xca, 0x66, 0x8f, 0x23, 0x40, 0xec, 0x5, 0xa9, 0xc3, 0x6f, 0x86, 0x2a, 0x49, 0xe5, 0xc, 0xa0, + 0xfc, 0x50, 0xb9, 0x15, 0x76, 0xda, 0x33, 0x9f, 0xf5, 0x59, 0xb0, 0x1c, 0x7f, 0xd3, 0x3a, 0x96, + 0xee, 0x42, 0xab, 0x7, 0x64, 0xc8, 0x21, 0x8d, 0xe7, 0x4b, 0xa2, 0xe, 0x6d, 0xc1, 0x28, 0x84, + ], + [ + 0x0, 0xad, 0x47, 0xea, 0x8e, 0x23, 0xc9, 0x64, 0x1, 0xac, 0x46, 0xeb, 0x8f, 0x22, 0xc8, 0x65, + 0x2, 0xaf, 0x45, 0xe8, 0x8c, 0x21, 0xcb, 0x66, 0x3, 0xae, 0x44, 0xe9, 0x8d, 0x20, 0xca, 0x67, + 0x4, 0xa9, 0x43, 0xee, 0x8a, 0x27, 0xcd, 0x60, 0x5, 0xa8, 0x42, 0xef, 0x8b, 0x26, 0xcc, 0x61, + 0x6, 0xab, 0x41, 0xec, 0x88, 0x25, 0xcf, 0x62, 0x7, 0xaa, 0x40, 0xed, 0x89, 0x24, 0xce, 0x63, + 0x8, 0xa5, 0x4f, 0xe2, 0x86, 0x2b, 0xc1, 0x6c, 0x9, 0xa4, 0x4e, 0xe3, 0x87, 0x2a, 0xc0, 0x6d, + 0xa, 0xa7, 0x4d, 0xe0, 0x84, 0x29, 0xc3, 0x6e, 0xb, 0xa6, 0x4c, 0xe1, 0x85, 0x28, 0xc2, 0x6f, + 0xc, 0xa1, 0x4b, 0xe6, 0x82, 0x2f, 0xc5, 0x68, 0xd, 0xa0, 0x4a, 0xe7, 0x83, 0x2e, 0xc4, 0x69, + 0xe, 0xa3, 0x49, 0xe4, 0x80, 0x2d, 0xc7, 0x6a, 0xf, 0xa2, 0x48, 0xe5, 0x81, 0x2c, 0xc6, 0x6b, + 0x10, 0xbd, 0x57, 0xfa, 0x9e, 0x33, 0xd9, 0x74, 0x11, 0xbc, 0x56, 0xfb, 0x9f, 0x32, 0xd8, 0x75, + 0x12, 0xbf, 0x55, 0xf8, 0x9c, 0x31, 0xdb, 0x76, 0x13, 0xbe, 0x54, 0xf9, 0x9d, 0x30, 0xda, 0x77, + 0x14, 0xb9, 0x53, 0xfe, 0x9a, 0x37, 0xdd, 0x70, 0x15, 0xb8, 0x52, 0xff, 0x9b, 0x36, 0xdc, 0x71, + 0x16, 0xbb, 0x51, 0xfc, 0x98, 0x35, 0xdf, 0x72, 0x17, 0xba, 0x50, 0xfd, 0x99, 0x34, 0xde, 0x73, + 0x18, 0xb5, 0x5f, 0xf2, 0x96, 0x3b, 0xd1, 0x7c, 0x19, 0xb4, 0x5e, 0xf3, 0x97, 0x3a, 0xd0, 0x7d, + 0x1a, 0xb7, 0x5d, 0xf0, 0x94, 0x39, 0xd3, 0x7e, 0x1b, 0xb6, 0x5c, 0xf1, 0x95, 0x38, 0xd2, 0x7f, + 0x1c, 0xb1, 0x5b, 0xf6, 0x92, 0x3f, 0xd5, 0x78, 0x1d, 0xb0, 0x5a, 0xf7, 0x93, 0x3e, 0xd4, 0x79, + 0x1e, 0xb3, 0x59, 0xf4, 0x90, 0x3d, 0xd7, 0x7a, 0x1f, 0xb2, 0x58, 0xf5, 0x91, 0x3c, 0xd6, 0x7b, + ], + [ + 0x0, 0xae, 0x41, 0xef, 0x82, 0x2c, 0xc3, 0x6d, 0x19, 0xb7, 0x58, 0xf6, 0x9b, 0x35, 0xda, 0x74, + 0x32, 0x9c, 0x73, 0xdd, 0xb0, 0x1e, 0xf1, 0x5f, 0x2b, 0x85, 0x6a, 0xc4, 0xa9, 0x7, 0xe8, 0x46, + 0x64, 0xca, 0x25, 0x8b, 0xe6, 0x48, 0xa7, 0x9, 0x7d, 0xd3, 0x3c, 0x92, 0xff, 0x51, 0xbe, 0x10, + 0x56, 0xf8, 0x17, 0xb9, 0xd4, 0x7a, 0x95, 0x3b, 0x4f, 0xe1, 0xe, 0xa0, 0xcd, 0x63, 0x8c, 0x22, + 0xc8, 0x66, 0x89, 0x27, 0x4a, 0xe4, 0xb, 0xa5, 0xd1, 0x7f, 0x90, 0x3e, 0x53, 0xfd, 0x12, 0xbc, + 0xfa, 0x54, 0xbb, 0x15, 0x78, 0xd6, 0x39, 0x97, 0xe3, 0x4d, 0xa2, 0xc, 0x61, 0xcf, 0x20, 0x8e, + 0xac, 0x2, 0xed, 0x43, 0x2e, 0x80, 0x6f, 0xc1, 0xb5, 0x1b, 0xf4, 0x5a, 0x37, 0x99, 0x76, 0xd8, + 0x9e, 0x30, 0xdf, 0x71, 0x1c, 0xb2, 0x5d, 0xf3, 0x87, 0x29, 0xc6, 0x68, 0x5, 0xab, 0x44, 0xea, + 0x8d, 0x23, 0xcc, 0x62, 0xf, 0xa1, 0x4e, 0xe0, 0x94, 0x3a, 0xd5, 0x7b, 0x16, 0xb8, 0x57, 0xf9, + 0xbf, 0x11, 0xfe, 0x50, 0x3d, 0x93, 0x7c, 0xd2, 0xa6, 0x8, 0xe7, 0x49, 0x24, 0x8a, 0x65, 0xcb, + 0xe9, 0x47, 0xa8, 0x6, 0x6b, 0xc5, 0x2a, 0x84, 0xf0, 0x5e, 0xb1, 0x1f, 0x72, 0xdc, 0x33, 0x9d, + 0xdb, 0x75, 0x9a, 0x34, 0x59, 0xf7, 0x18, 0xb6, 0xc2, 0x6c, 0x83, 0x2d, 0x40, 0xee, 0x1, 0xaf, + 0x45, 0xeb, 0x4, 0xaa, 0xc7, 0x69, 0x86, 0x28, 0x5c, 0xf2, 0x1d, 0xb3, 0xde, 0x70, 0x9f, 0x31, + 0x77, 0xd9, 0x36, 0x98, 0xf5, 0x5b, 0xb4, 0x1a, 0x6e, 0xc0, 0x2f, 0x81, 0xec, 0x42, 0xad, 0x3, + 0x21, 0x8f, 0x60, 0xce, 0xa3, 0xd, 0xe2, 0x4c, 0x38, 0x96, 0x79, 0xd7, 0xba, 0x14, 0xfb, 0x55, + 0x13, 0xbd, 0x52, 0xfc, 0x91, 0x3f, 0xd0, 0x7e, 0xa, 0xa4, 0x4b, 0xe5, 0x88, 0x26, 0xc9, 0x67, + ], + [ + 0x0, 0xaf, 0x43, 0xec, 0x86, 0x29, 0xc5, 0x6a, 0x11, 0xbe, 0x52, 0xfd, 0x97, 0x38, 0xd4, 0x7b, + 0x22, 0x8d, 0x61, 0xce, 0xa4, 0xb, 0xe7, 0x48, 0x33, 0x9c, 0x70, 0xdf, 0xb5, 0x1a, 0xf6, 0x59, + 0x44, 0xeb, 0x7, 0xa8, 0xc2, 0x6d, 0x81, 0x2e, 0x55, 0xfa, 0x16, 0xb9, 0xd3, 0x7c, 0x90, 0x3f, + 0x66, 0xc9, 0x25, 0x8a, 0xe0, 0x4f, 0xa3, 0xc, 0x77, 0xd8, 0x34, 0x9b, 0xf1, 0x5e, 0xb2, 0x1d, + 0x88, 0x27, 0xcb, 0x64, 0xe, 0xa1, 0x4d, 0xe2, 0x99, 0x36, 0xda, 0x75, 0x1f, 0xb0, 0x5c, 0xf3, + 0xaa, 0x5, 0xe9, 0x46, 0x2c, 0x83, 0x6f, 0xc0, 0xbb, 0x14, 0xf8, 0x57, 0x3d, 0x92, 0x7e, 0xd1, + 0xcc, 0x63, 0x8f, 0x20, 0x4a, 0xe5, 0x9, 0xa6, 0xdd, 0x72, 0x9e, 0x31, 0x5b, 0xf4, 0x18, 0xb7, + 0xee, 0x41, 0xad, 0x2, 0x68, 0xc7, 0x2b, 0x84, 0xff, 0x50, 0xbc, 0x13, 0x79, 0xd6, 0x3a, 0x95, + 0xd, 0xa2, 0x4e, 0xe1, 0x8b, 0x24, 0xc8, 0x67, 0x1c, 0xb3, 0x5f, 0xf0, 0x9a, 0x35, 0xd9, 0x76, + 0x2f, 0x80, 0x6c, 0xc3, 0xa9, 0x6, 0xea, 0x45, 0x3e, 0x91, 0x7d, 0xd2, 0xb8, 0x17, 0xfb, 0x54, + 0x49, 0xe6, 0xa, 0xa5, 0xcf, 0x60, 0x8c, 0x23, 0x58, 0xf7, 0x1b, 0xb4, 0xde, 0x71, 0x9d, 0x32, + 0x6b, 0xc4, 0x28, 0x87, 0xed, 0x42, 0xae, 0x1, 0x7a, 0xd5, 0x39, 0x96, 0xfc, 0x53, 0xbf, 0x10, + 0x85, 0x2a, 0xc6, 0x69, 0x3, 0xac, 0x40, 0xef, 0x94, 0x3b, 0xd7, 0x78, 0x12, 0xbd, 0x51, 0xfe, + 0xa7, 0x8, 0xe4, 0x4b, 0x21, 0x8e, 0x62, 0xcd, 0xb6, 0x19, 0xf5, 0x5a, 0x30, 0x9f, 0x73, 0xdc, + 0xc1, 0x6e, 0x82, 0x2d, 0x47, 0xe8, 0x4, 0xab, 0xd0, 0x7f, 0x93, 0x3c, 0x56, 0xf9, 0x15, 0xba, + 0xe3, 0x4c, 0xa0, 0xf, 0x65, 0xca, 0x26, 0x89, 0xf2, 0x5d, 0xb1, 0x1e, 0x74, 0xdb, 0x37, 0x98, + ], + [ + 0x0, 0xb0, 0x7d, 0xcd, 0xfa, 0x4a, 0x87, 0x37, 0xe9, 0x59, 0x94, 0x24, 0x13, 0xa3, 0x6e, 0xde, + 0xcf, 0x7f, 0xb2, 0x2, 0x35, 0x85, 0x48, 0xf8, 0x26, 0x96, 0x5b, 0xeb, 0xdc, 0x6c, 0xa1, 0x11, + 0x83, 0x33, 0xfe, 0x4e, 0x79, 0xc9, 0x4, 0xb4, 0x6a, 0xda, 0x17, 0xa7, 0x90, 0x20, 0xed, 0x5d, + 0x4c, 0xfc, 0x31, 0x81, 0xb6, 0x6, 0xcb, 0x7b, 0xa5, 0x15, 0xd8, 0x68, 0x5f, 0xef, 0x22, 0x92, + 0x1b, 0xab, 0x66, 0xd6, 0xe1, 0x51, 0x9c, 0x2c, 0xf2, 0x42, 0x8f, 0x3f, 0x8, 0xb8, 0x75, 0xc5, + 0xd4, 0x64, 0xa9, 0x19, 0x2e, 0x9e, 0x53, 0xe3, 0x3d, 0x8d, 0x40, 0xf0, 0xc7, 0x77, 0xba, 0xa, + 0x98, 0x28, 0xe5, 0x55, 0x62, 0xd2, 0x1f, 0xaf, 0x71, 0xc1, 0xc, 0xbc, 0x8b, 0x3b, 0xf6, 0x46, + 0x57, 0xe7, 0x2a, 0x9a, 0xad, 0x1d, 0xd0, 0x60, 0xbe, 0xe, 0xc3, 0x73, 0x44, 0xf4, 0x39, 0x89, + 0x36, 0x86, 0x4b, 0xfb, 0xcc, 0x7c, 0xb1, 0x1, 0xdf, 0x6f, 0xa2, 0x12, 0x25, 0x95, 0x58, 0xe8, + 0xf9, 0x49, 0x84, 0x34, 0x3, 0xb3, 0x7e, 0xce, 0x10, 0xa0, 0x6d, 0xdd, 0xea, 0x5a, 0x97, 0x27, + 0xb5, 0x5, 0xc8, 0x78, 0x4f, 0xff, 0x32, 0x82, 0x5c, 0xec, 0x21, 0x91, 0xa6, 0x16, 0xdb, 0x6b, + 0x7a, 0xca, 0x7, 0xb7, 0x80, 0x30, 0xfd, 0x4d, 0x93, 0x23, 0xee, 0x5e, 0x69, 0xd9, 0x14, 0xa4, + 0x2d, 0x9d, 0x50, 0xe0, 0xd7, 0x67, 0xaa, 0x1a, 0xc4, 0x74, 0xb9, 0x9, 0x3e, 0x8e, 0x43, 0xf3, + 0xe2, 0x52, 0x9f, 0x2f, 0x18, 0xa8, 0x65, 0xd5, 0xb, 0xbb, 0x76, 0xc6, 0xf1, 0x41, 0x8c, 0x3c, + 0xae, 0x1e, 0xd3, 0x63, 0x54, 0xe4, 0x29, 0x99, 0x47, 0xf7, 0x3a, 0x8a, 0xbd, 0xd, 0xc0, 0x70, + 0x61, 0xd1, 0x1c, 0xac, 0x9b, 0x2b, 0xe6, 0x56, 0x88, 0x38, 0xf5, 0x45, 0x72, 0xc2, 0xf, 0xbf, + ], + [ + 0x0, 0xb1, 0x7f, 0xce, 0xfe, 0x4f, 0x81, 0x30, 0xe1, 0x50, 0x9e, 0x2f, 0x1f, 0xae, 0x60, 0xd1, + 0xdf, 0x6e, 0xa0, 0x11, 0x21, 0x90, 0x5e, 0xef, 0x3e, 0x8f, 0x41, 0xf0, 0xc0, 0x71, 0xbf, 0xe, + 0xa3, 0x12, 0xdc, 0x6d, 0x5d, 0xec, 0x22, 0x93, 0x42, 0xf3, 0x3d, 0x8c, 0xbc, 0xd, 0xc3, 0x72, + 0x7c, 0xcd, 0x3, 0xb2, 0x82, 0x33, 0xfd, 0x4c, 0x9d, 0x2c, 0xe2, 0x53, 0x63, 0xd2, 0x1c, 0xad, + 0x5b, 0xea, 0x24, 0x95, 0xa5, 0x14, 0xda, 0x6b, 0xba, 0xb, 0xc5, 0x74, 0x44, 0xf5, 0x3b, 0x8a, + 0x84, 0x35, 0xfb, 0x4a, 0x7a, 0xcb, 0x5, 0xb4, 0x65, 0xd4, 0x1a, 0xab, 0x9b, 0x2a, 0xe4, 0x55, + 0xf8, 0x49, 0x87, 0x36, 0x6, 0xb7, 0x79, 0xc8, 0x19, 0xa8, 0x66, 0xd7, 0xe7, 0x56, 0x98, 0x29, + 0x27, 0x96, 0x58, 0xe9, 0xd9, 0x68, 0xa6, 0x17, 0xc6, 0x77, 0xb9, 0x8, 0x38, 0x89, 0x47, 0xf6, + 0xb6, 0x7, 0xc9, 0x78, 0x48, 0xf9, 0x37, 0x86, 0x57, 0xe6, 0x28, 0x99, 0xa9, 0x18, 0xd6, 0x67, + 0x69, 0xd8, 0x16, 0xa7, 0x97, 0x26, 0xe8, 0x59, 0x88, 0x39, 0xf7, 0x46, 0x76, 0xc7, 0x9, 0xb8, + 0x15, 0xa4, 0x6a, 0xdb, 0xeb, 0x5a, 0x94, 0x25, 0xf4, 0x45, 0x8b, 0x3a, 0xa, 0xbb, 0x75, 0xc4, + 0xca, 0x7b, 0xb5, 0x4, 0x34, 0x85, 0x4b, 0xfa, 0x2b, 0x9a, 0x54, 0xe5, 0xd5, 0x64, 0xaa, 0x1b, + 0xed, 0x5c, 0x92, 0x23, 0x13, 0xa2, 0x6c, 0xdd, 0xc, 0xbd, 0x73, 0xc2, 0xf2, 0x43, 0x8d, 0x3c, + 0x32, 0x83, 0x4d, 0xfc, 0xcc, 0x7d, 0xb3, 0x2, 0xd3, 0x62, 0xac, 0x1d, 0x2d, 0x9c, 0x52, 0xe3, + 0x4e, 0xff, 0x31, 0x80, 0xb0, 0x1, 0xcf, 0x7e, 0xaf, 0x1e, 0xd0, 0x61, 0x51, 0xe0, 0x2e, 0x9f, + 0x91, 0x20, 0xee, 0x5f, 0x6f, 0xde, 0x10, 0xa1, 0x70, 0xc1, 0xf, 0xbe, 0x8e, 0x3f, 0xf1, 0x40, + ], + [ + 0x0, 0xb2, 0x79, 0xcb, 0xf2, 0x40, 0x8b, 0x39, 0xf9, 0x4b, 0x80, 0x32, 0xb, 0xb9, 0x72, 0xc0, + 0xef, 0x5d, 0x96, 0x24, 0x1d, 0xaf, 0x64, 0xd6, 0x16, 0xa4, 0x6f, 0xdd, 0xe4, 0x56, 0x9d, 0x2f, + 0xc3, 0x71, 0xba, 0x8, 0x31, 0x83, 0x48, 0xfa, 0x3a, 0x88, 0x43, 0xf1, 0xc8, 0x7a, 0xb1, 0x3, + 0x2c, 0x9e, 0x55, 0xe7, 0xde, 0x6c, 0xa7, 0x15, 0xd5, 0x67, 0xac, 0x1e, 0x27, 0x95, 0x5e, 0xec, + 0x9b, 0x29, 0xe2, 0x50, 0x69, 0xdb, 0x10, 0xa2, 0x62, 0xd0, 0x1b, 0xa9, 0x90, 0x22, 0xe9, 0x5b, + 0x74, 0xc6, 0xd, 0xbf, 0x86, 0x34, 0xff, 0x4d, 0x8d, 0x3f, 0xf4, 0x46, 0x7f, 0xcd, 0x6, 0xb4, + 0x58, 0xea, 0x21, 0x93, 0xaa, 0x18, 0xd3, 0x61, 0xa1, 0x13, 0xd8, 0x6a, 0x53, 0xe1, 0x2a, 0x98, + 0xb7, 0x5, 0xce, 0x7c, 0x45, 0xf7, 0x3c, 0x8e, 0x4e, 0xfc, 0x37, 0x85, 0xbc, 0xe, 0xc5, 0x77, + 0x2b, 0x99, 0x52, 0xe0, 0xd9, 0x6b, 0xa0, 0x12, 0xd2, 0x60, 0xab, 0x19, 0x20, 0x92, 0x59, 0xeb, + 0xc4, 0x76, 0xbd, 0xf, 0x36, 0x84, 0x4f, 0xfd, 0x3d, 0x8f, 0x44, 0xf6, 0xcf, 0x7d, 0xb6, 0x4, + 0xe8, 0x5a, 0x91, 0x23, 0x1a, 0xa8, 0x63, 0xd1, 0x11, 0xa3, 0x68, 0xda, 0xe3, 0x51, 0x9a, 0x28, + 0x7, 0xb5, 0x7e, 0xcc, 0xf5, 0x47, 0x8c, 0x3e, 0xfe, 0x4c, 0x87, 0x35, 0xc, 0xbe, 0x75, 0xc7, + 0xb0, 0x2, 0xc9, 0x7b, 0x42, 0xf0, 0x3b, 0x89, 0x49, 0xfb, 0x30, 0x82, 0xbb, 0x9, 0xc2, 0x70, + 0x5f, 0xed, 0x26, 0x94, 0xad, 0x1f, 0xd4, 0x66, 0xa6, 0x14, 0xdf, 0x6d, 0x54, 0xe6, 0x2d, 0x9f, + 0x73, 0xc1, 0xa, 0xb8, 0x81, 0x33, 0xf8, 0x4a, 0x8a, 0x38, 0xf3, 0x41, 0x78, 0xca, 0x1, 0xb3, + 0x9c, 0x2e, 0xe5, 0x57, 0x6e, 0xdc, 0x17, 0xa5, 0x65, 0xd7, 0x1c, 0xae, 0x97, 0x25, 0xee, 0x5c, + ], + [ + 0x0, 0xb3, 0x7b, 0xc8, 0xf6, 0x45, 0x8d, 0x3e, 0xf1, 0x42, 0x8a, 0x39, 0x7, 0xb4, 0x7c, 0xcf, + 0xff, 0x4c, 0x84, 0x37, 0x9, 0xba, 0x72, 0xc1, 0xe, 0xbd, 0x75, 0xc6, 0xf8, 0x4b, 0x83, 0x30, + 0xe3, 0x50, 0x98, 0x2b, 0x15, 0xa6, 0x6e, 0xdd, 0x12, 0xa1, 0x69, 0xda, 0xe4, 0x57, 0x9f, 0x2c, + 0x1c, 0xaf, 0x67, 0xd4, 0xea, 0x59, 0x91, 0x22, 0xed, 0x5e, 0x96, 0x25, 0x1b, 0xa8, 0x60, 0xd3, + 0xdb, 0x68, 0xa0, 0x13, 0x2d, 0x9e, 0x56, 0xe5, 0x2a, 0x99, 0x51, 0xe2, 0xdc, 0x6f, 0xa7, 0x14, + 0x24, 0x97, 0x5f, 0xec, 0xd2, 0x61, 0xa9, 0x1a, 0xd5, 0x66, 0xae, 0x1d, 0x23, 0x90, 0x58, 0xeb, + 0x38, 0x8b, 0x43, 0xf0, 0xce, 0x7d, 0xb5, 0x6, 0xc9, 0x7a, 0xb2, 0x1, 0x3f, 0x8c, 0x44, 0xf7, + 0xc7, 0x74, 0xbc, 0xf, 0x31, 0x82, 0x4a, 0xf9, 0x36, 0x85, 0x4d, 0xfe, 0xc0, 0x73, 0xbb, 0x8, + 0xab, 0x18, 0xd0, 0x63, 0x5d, 0xee, 0x26, 0x95, 0x5a, 0xe9, 0x21, 0x92, 0xac, 0x1f, 0xd7, 0x64, + 0x54, 0xe7, 0x2f, 0x9c, 0xa2, 0x11, 0xd9, 0x6a, 0xa5, 0x16, 0xde, 0x6d, 0x53, 0xe0, 0x28, 0x9b, + 0x48, 0xfb, 0x33, 0x80, 0xbe, 0xd, 0xc5, 0x76, 0xb9, 0xa, 0xc2, 0x71, 0x4f, 0xfc, 0x34, 0x87, + 0xb7, 0x4, 0xcc, 0x7f, 0x41, 0xf2, 0x3a, 0x89, 0x46, 0xf5, 0x3d, 0x8e, 0xb0, 0x3, 0xcb, 0x78, + 0x70, 0xc3, 0xb, 0xb8, 0x86, 0x35, 0xfd, 0x4e, 0x81, 0x32, 0xfa, 0x49, 0x77, 0xc4, 0xc, 0xbf, + 0x8f, 0x3c, 0xf4, 0x47, 0x79, 0xca, 0x2, 0xb1, 0x7e, 0xcd, 0x5, 0xb6, 0x88, 0x3b, 0xf3, 0x40, + 0x93, 0x20, 0xe8, 0x5b, 0x65, 0xd6, 0x1e, 0xad, 0x62, 0xd1, 0x19, 0xaa, 0x94, 0x27, 0xef, 0x5c, + 0x6c, 0xdf, 0x17, 0xa4, 0x9a, 0x29, 0xe1, 0x52, 0x9d, 0x2e, 0xe6, 0x55, 0x6b, 0xd8, 0x10, 0xa3, + ], + [ + 0x0, 0xb4, 0x75, 0xc1, 0xea, 0x5e, 0x9f, 0x2b, 0xc9, 0x7d, 0xbc, 0x8, 0x23, 0x97, 0x56, 0xe2, + 0x8f, 0x3b, 0xfa, 0x4e, 0x65, 0xd1, 0x10, 0xa4, 0x46, 0xf2, 0x33, 0x87, 0xac, 0x18, 0xd9, 0x6d, + 0x3, 0xb7, 0x76, 0xc2, 0xe9, 0x5d, 0x9c, 0x28, 0xca, 0x7e, 0xbf, 0xb, 0x20, 0x94, 0x55, 0xe1, + 0x8c, 0x38, 0xf9, 0x4d, 0x66, 0xd2, 0x13, 0xa7, 0x45, 0xf1, 0x30, 0x84, 0xaf, 0x1b, 0xda, 0x6e, + 0x6, 0xb2, 0x73, 0xc7, 0xec, 0x58, 0x99, 0x2d, 0xcf, 0x7b, 0xba, 0xe, 0x25, 0x91, 0x50, 0xe4, + 0x89, 0x3d, 0xfc, 0x48, 0x63, 0xd7, 0x16, 0xa2, 0x40, 0xf4, 0x35, 0x81, 0xaa, 0x1e, 0xdf, 0x6b, + 0x5, 0xb1, 0x70, 0xc4, 0xef, 0x5b, 0x9a, 0x2e, 0xcc, 0x78, 0xb9, 0xd, 0x26, 0x92, 0x53, 0xe7, + 0x8a, 0x3e, 0xff, 0x4b, 0x60, 0xd4, 0x15, 0xa1, 0x43, 0xf7, 0x36, 0x82, 0xa9, 0x1d, 0xdc, 0x68, + 0xc, 0xb8, 0x79, 0xcd, 0xe6, 0x52, 0x93, 0x27, 0xc5, 0x71, 0xb0, 0x4, 0x2f, 0x9b, 0x5a, 0xee, + 0x83, 0x37, 0xf6, 0x42, 0x69, 0xdd, 0x1c, 0xa8, 0x4a, 0xfe, 0x3f, 0x8b, 0xa0, 0x14, 0xd5, 0x61, + 0xf, 0xbb, 0x7a, 0xce, 0xe5, 0x51, 0x90, 0x24, 0xc6, 0x72, 0xb3, 0x7, 0x2c, 0x98, 0x59, 0xed, + 0x80, 0x34, 0xf5, 0x41, 0x6a, 0xde, 0x1f, 0xab, 0x49, 0xfd, 0x3c, 0x88, 0xa3, 0x17, 0xd6, 0x62, + 0xa, 0xbe, 0x7f, 0xcb, 0xe0, 0x54, 0x95, 0x21, 0xc3, 0x77, 0xb6, 0x2, 0x29, 0x9d, 0x5c, 0xe8, + 0x85, 0x31, 0xf0, 0x44, 0x6f, 0xdb, 0x1a, 0xae, 0x4c, 0xf8, 0x39, 0x8d, 0xa6, 0x12, 0xd3, 0x67, + 0x9, 0xbd, 0x7c, 0xc8, 0xe3, 0x57, 0x96, 0x22, 0xc0, 0x74, 0xb5, 0x1, 0x2a, 0x9e, 0x5f, 0xeb, + 0x86, 0x32, 0xf3, 0x47, 0x6c, 0xd8, 0x19, 0xad, 0x4f, 0xfb, 0x3a, 0x8e, 0xa5, 0x11, 0xd0, 0x64, + ], + [ + 0x0, 0xb5, 0x77, 0xc2, 0xee, 0x5b, 0x99, 0x2c, 0xc1, 0x74, 0xb6, 0x3, 0x2f, 0x9a, 0x58, 0xed, + 0x9f, 0x2a, 0xe8, 0x5d, 0x71, 0xc4, 0x6, 0xb3, 0x5e, 0xeb, 0x29, 0x9c, 0xb0, 0x5, 0xc7, 0x72, + 0x23, 0x96, 0x54, 0xe1, 0xcd, 0x78, 0xba, 0xf, 0xe2, 0x57, 0x95, 0x20, 0xc, 0xb9, 0x7b, 0xce, + 0xbc, 0x9, 0xcb, 0x7e, 0x52, 0xe7, 0x25, 0x90, 0x7d, 0xc8, 0xa, 0xbf, 0x93, 0x26, 0xe4, 0x51, + 0x46, 0xf3, 0x31, 0x84, 0xa8, 0x1d, 0xdf, 0x6a, 0x87, 0x32, 0xf0, 0x45, 0x69, 0xdc, 0x1e, 0xab, + 0xd9, 0x6c, 0xae, 0x1b, 0x37, 0x82, 0x40, 0xf5, 0x18, 0xad, 0x6f, 0xda, 0xf6, 0x43, 0x81, 0x34, + 0x65, 0xd0, 0x12, 0xa7, 0x8b, 0x3e, 0xfc, 0x49, 0xa4, 0x11, 0xd3, 0x66, 0x4a, 0xff, 0x3d, 0x88, + 0xfa, 0x4f, 0x8d, 0x38, 0x14, 0xa1, 0x63, 0xd6, 0x3b, 0x8e, 0x4c, 0xf9, 0xd5, 0x60, 0xa2, 0x17, + 0x8c, 0x39, 0xfb, 0x4e, 0x62, 0xd7, 0x15, 0xa0, 0x4d, 0xf8, 0x3a, 0x8f, 0xa3, 0x16, 0xd4, 0x61, + 0x13, 0xa6, 0x64, 0xd1, 0xfd, 0x48, 0x8a, 0x3f, 0xd2, 0x67, 0xa5, 0x10, 0x3c, 0x89, 0x4b, 0xfe, + 0xaf, 0x1a, 0xd8, 0x6d, 0x41, 0xf4, 0x36, 0x83, 0x6e, 0xdb, 0x19, 0xac, 0x80, 0x35, 0xf7, 0x42, + 0x30, 0x85, 0x47, 0xf2, 0xde, 0x6b, 0xa9, 0x1c, 0xf1, 0x44, 0x86, 0x33, 0x1f, 0xaa, 0x68, 0xdd, + 0xca, 0x7f, 0xbd, 0x8, 0x24, 0x91, 0x53, 0xe6, 0xb, 0xbe, 0x7c, 0xc9, 0xe5, 0x50, 0x92, 0x27, + 0x55, 0xe0, 0x22, 0x97, 0xbb, 0xe, 0xcc, 0x79, 0x94, 0x21, 0xe3, 0x56, 0x7a, 0xcf, 0xd, 0xb8, + 0xe9, 0x5c, 0x9e, 0x2b, 0x7, 0xb2, 0x70, 0xc5, 0x28, 0x9d, 0x5f, 0xea, 0xc6, 0x73, 0xb1, 0x4, + 0x76, 0xc3, 0x1, 0xb4, 0x98, 0x2d, 0xef, 0x5a, 0xb7, 0x2, 0xc0, 0x75, 0x59, 0xec, 0x2e, 0x9b, + ], + [ + 0x0, 0xb6, 0x71, 0xc7, 0xe2, 0x54, 0x93, 0x25, 0xd9, 0x6f, 0xa8, 0x1e, 0x3b, 0x8d, 0x4a, 0xfc, + 0xaf, 0x19, 0xde, 0x68, 0x4d, 0xfb, 0x3c, 0x8a, 0x76, 0xc0, 0x7, 0xb1, 0x94, 0x22, 0xe5, 0x53, + 0x43, 0xf5, 0x32, 0x84, 0xa1, 0x17, 0xd0, 0x66, 0x9a, 0x2c, 0xeb, 0x5d, 0x78, 0xce, 0x9, 0xbf, + 0xec, 0x5a, 0x9d, 0x2b, 0xe, 0xb8, 0x7f, 0xc9, 0x35, 0x83, 0x44, 0xf2, 0xd7, 0x61, 0xa6, 0x10, + 0x86, 0x30, 0xf7, 0x41, 0x64, 0xd2, 0x15, 0xa3, 0x5f, 0xe9, 0x2e, 0x98, 0xbd, 0xb, 0xcc, 0x7a, + 0x29, 0x9f, 0x58, 0xee, 0xcb, 0x7d, 0xba, 0xc, 0xf0, 0x46, 0x81, 0x37, 0x12, 0xa4, 0x63, 0xd5, + 0xc5, 0x73, 0xb4, 0x2, 0x27, 0x91, 0x56, 0xe0, 0x1c, 0xaa, 0x6d, 0xdb, 0xfe, 0x48, 0x8f, 0x39, + 0x6a, 0xdc, 0x1b, 0xad, 0x88, 0x3e, 0xf9, 0x4f, 0xb3, 0x5, 0xc2, 0x74, 0x51, 0xe7, 0x20, 0x96, + 0x11, 0xa7, 0x60, 0xd6, 0xf3, 0x45, 0x82, 0x34, 0xc8, 0x7e, 0xb9, 0xf, 0x2a, 0x9c, 0x5b, 0xed, + 0xbe, 0x8, 0xcf, 0x79, 0x5c, 0xea, 0x2d, 0x9b, 0x67, 0xd1, 0x16, 0xa0, 0x85, 0x33, 0xf4, 0x42, + 0x52, 0xe4, 0x23, 0x95, 0xb0, 0x6, 0xc1, 0x77, 0x8b, 0x3d, 0xfa, 0x4c, 0x69, 0xdf, 0x18, 0xae, + 0xfd, 0x4b, 0x8c, 0x3a, 0x1f, 0xa9, 0x6e, 0xd8, 0x24, 0x92, 0x55, 0xe3, 0xc6, 0x70, 0xb7, 0x1, + 0x97, 0x21, 0xe6, 0x50, 0x75, 0xc3, 0x4, 0xb2, 0x4e, 0xf8, 0x3f, 0x89, 0xac, 0x1a, 0xdd, 0x6b, + 0x38, 0x8e, 0x49, 0xff, 0xda, 0x6c, 0xab, 0x1d, 0xe1, 0x57, 0x90, 0x26, 0x3, 0xb5, 0x72, 0xc4, + 0xd4, 0x62, 0xa5, 0x13, 0x36, 0x80, 0x47, 0xf1, 0xd, 0xbb, 0x7c, 0xca, 0xef, 0x59, 0x9e, 0x28, + 0x7b, 0xcd, 0xa, 0xbc, 0x99, 0x2f, 0xe8, 0x5e, 0xa2, 0x14, 0xd3, 0x65, 0x40, 0xf6, 0x31, 0x87, + ], + [ + 0x0, 0xb7, 0x73, 0xc4, 0xe6, 0x51, 0x95, 0x22, 0xd1, 0x66, 0xa2, 0x15, 0x37, 0x80, 0x44, 0xf3, + 0xbf, 0x8, 0xcc, 0x7b, 0x59, 0xee, 0x2a, 0x9d, 0x6e, 0xd9, 0x1d, 0xaa, 0x88, 0x3f, 0xfb, 0x4c, + 0x63, 0xd4, 0x10, 0xa7, 0x85, 0x32, 0xf6, 0x41, 0xb2, 0x5, 0xc1, 0x76, 0x54, 0xe3, 0x27, 0x90, + 0xdc, 0x6b, 0xaf, 0x18, 0x3a, 0x8d, 0x49, 0xfe, 0xd, 0xba, 0x7e, 0xc9, 0xeb, 0x5c, 0x98, 0x2f, + 0xc6, 0x71, 0xb5, 0x2, 0x20, 0x97, 0x53, 0xe4, 0x17, 0xa0, 0x64, 0xd3, 0xf1, 0x46, 0x82, 0x35, + 0x79, 0xce, 0xa, 0xbd, 0x9f, 0x28, 0xec, 0x5b, 0xa8, 0x1f, 0xdb, 0x6c, 0x4e, 0xf9, 0x3d, 0x8a, + 0xa5, 0x12, 0xd6, 0x61, 0x43, 0xf4, 0x30, 0x87, 0x74, 0xc3, 0x7, 0xb0, 0x92, 0x25, 0xe1, 0x56, + 0x1a, 0xad, 0x69, 0xde, 0xfc, 0x4b, 0x8f, 0x38, 0xcb, 0x7c, 0xb8, 0xf, 0x2d, 0x9a, 0x5e, 0xe9, + 0x91, 0x26, 0xe2, 0x55, 0x77, 0xc0, 0x4, 0xb3, 0x40, 0xf7, 0x33, 0x84, 0xa6, 0x11, 0xd5, 0x62, + 0x2e, 0x99, 0x5d, 0xea, 0xc8, 0x7f, 0xbb, 0xc, 0xff, 0x48, 0x8c, 0x3b, 0x19, 0xae, 0x6a, 0xdd, + 0xf2, 0x45, 0x81, 0x36, 0x14, 0xa3, 0x67, 0xd0, 0x23, 0x94, 0x50, 0xe7, 0xc5, 0x72, 0xb6, 0x1, + 0x4d, 0xfa, 0x3e, 0x89, 0xab, 0x1c, 0xd8, 0x6f, 0x9c, 0x2b, 0xef, 0x58, 0x7a, 0xcd, 0x9, 0xbe, + 0x57, 0xe0, 0x24, 0x93, 0xb1, 0x6, 0xc2, 0x75, 0x86, 0x31, 0xf5, 0x42, 0x60, 0xd7, 0x13, 0xa4, + 0xe8, 0x5f, 0x9b, 0x2c, 0xe, 0xb9, 0x7d, 0xca, 0x39, 0x8e, 0x4a, 0xfd, 0xdf, 0x68, 0xac, 0x1b, + 0x34, 0x83, 0x47, 0xf0, 0xd2, 0x65, 0xa1, 0x16, 0xe5, 0x52, 0x96, 0x21, 0x3, 0xb4, 0x70, 0xc7, + 0x8b, 0x3c, 0xf8, 0x4f, 0x6d, 0xda, 0x1e, 0xa9, 0x5a, 0xed, 0x29, 0x9e, 0xbc, 0xb, 0xcf, 0x78, + ], + [ + 0x0, 0xb8, 0x6d, 0xd5, 0xda, 0x62, 0xb7, 0xf, 0xa9, 0x11, 0xc4, 0x7c, 0x73, 0xcb, 0x1e, 0xa6, + 0x4f, 0xf7, 0x22, 0x9a, 0x95, 0x2d, 0xf8, 0x40, 0xe6, 0x5e, 0x8b, 0x33, 0x3c, 0x84, 0x51, 0xe9, + 0x9e, 0x26, 0xf3, 0x4b, 0x44, 0xfc, 0x29, 0x91, 0x37, 0x8f, 0x5a, 0xe2, 0xed, 0x55, 0x80, 0x38, + 0xd1, 0x69, 0xbc, 0x4, 0xb, 0xb3, 0x66, 0xde, 0x78, 0xc0, 0x15, 0xad, 0xa2, 0x1a, 0xcf, 0x77, + 0x21, 0x99, 0x4c, 0xf4, 0xfb, 0x43, 0x96, 0x2e, 0x88, 0x30, 0xe5, 0x5d, 0x52, 0xea, 0x3f, 0x87, + 0x6e, 0xd6, 0x3, 0xbb, 0xb4, 0xc, 0xd9, 0x61, 0xc7, 0x7f, 0xaa, 0x12, 0x1d, 0xa5, 0x70, 0xc8, + 0xbf, 0x7, 0xd2, 0x6a, 0x65, 0xdd, 0x8, 0xb0, 0x16, 0xae, 0x7b, 0xc3, 0xcc, 0x74, 0xa1, 0x19, + 0xf0, 0x48, 0x9d, 0x25, 0x2a, 0x92, 0x47, 0xff, 0x59, 0xe1, 0x34, 0x8c, 0x83, 0x3b, 0xee, 0x56, + 0x42, 0xfa, 0x2f, 0x97, 0x98, 0x20, 0xf5, 0x4d, 0xeb, 0x53, 0x86, 0x3e, 0x31, 0x89, 0x5c, 0xe4, + 0xd, 0xb5, 0x60, 0xd8, 0xd7, 0x6f, 0xba, 0x2, 0xa4, 0x1c, 0xc9, 0x71, 0x7e, 0xc6, 0x13, 0xab, + 0xdc, 0x64, 0xb1, 0x9, 0x6, 0xbe, 0x6b, 0xd3, 0x75, 0xcd, 0x18, 0xa0, 0xaf, 0x17, 0xc2, 0x7a, + 0x93, 0x2b, 0xfe, 0x46, 0x49, 0xf1, 0x24, 0x9c, 0x3a, 0x82, 0x57, 0xef, 0xe0, 0x58, 0x8d, 0x35, + 0x63, 0xdb, 0xe, 0xb6, 0xb9, 0x1, 0xd4, 0x6c, 0xca, 0x72, 0xa7, 0x1f, 0x10, 0xa8, 0x7d, 0xc5, + 0x2c, 0x94, 0x41, 0xf9, 0xf6, 0x4e, 0x9b, 0x23, 0x85, 0x3d, 0xe8, 0x50, 0x5f, 0xe7, 0x32, 0x8a, + 0xfd, 0x45, 0x90, 0x28, 0x27, 0x9f, 0x4a, 0xf2, 0x54, 0xec, 0x39, 0x81, 0x8e, 0x36, 0xe3, 0x5b, + 0xb2, 0xa, 0xdf, 0x67, 0x68, 0xd0, 0x5, 0xbd, 0x1b, 0xa3, 0x76, 0xce, 0xc1, 0x79, 0xac, 0x14, + ], + [ + 0x0, 0xb9, 0x6f, 0xd6, 0xde, 0x67, 0xb1, 0x8, 0xa1, 0x18, 0xce, 0x77, 0x7f, 0xc6, 0x10, 0xa9, + 0x5f, 0xe6, 0x30, 0x89, 0x81, 0x38, 0xee, 0x57, 0xfe, 0x47, 0x91, 0x28, 0x20, 0x99, 0x4f, 0xf6, + 0xbe, 0x7, 0xd1, 0x68, 0x60, 0xd9, 0xf, 0xb6, 0x1f, 0xa6, 0x70, 0xc9, 0xc1, 0x78, 0xae, 0x17, + 0xe1, 0x58, 0x8e, 0x37, 0x3f, 0x86, 0x50, 0xe9, 0x40, 0xf9, 0x2f, 0x96, 0x9e, 0x27, 0xf1, 0x48, + 0x61, 0xd8, 0xe, 0xb7, 0xbf, 0x6, 0xd0, 0x69, 0xc0, 0x79, 0xaf, 0x16, 0x1e, 0xa7, 0x71, 0xc8, + 0x3e, 0x87, 0x51, 0xe8, 0xe0, 0x59, 0x8f, 0x36, 0x9f, 0x26, 0xf0, 0x49, 0x41, 0xf8, 0x2e, 0x97, + 0xdf, 0x66, 0xb0, 0x9, 0x1, 0xb8, 0x6e, 0xd7, 0x7e, 0xc7, 0x11, 0xa8, 0xa0, 0x19, 0xcf, 0x76, + 0x80, 0x39, 0xef, 0x56, 0x5e, 0xe7, 0x31, 0x88, 0x21, 0x98, 0x4e, 0xf7, 0xff, 0x46, 0x90, 0x29, + 0xc2, 0x7b, 0xad, 0x14, 0x1c, 0xa5, 0x73, 0xca, 0x63, 0xda, 0xc, 0xb5, 0xbd, 0x4, 0xd2, 0x6b, + 0x9d, 0x24, 0xf2, 0x4b, 0x43, 0xfa, 0x2c, 0x95, 0x3c, 0x85, 0x53, 0xea, 0xe2, 0x5b, 0x8d, 0x34, + 0x7c, 0xc5, 0x13, 0xaa, 0xa2, 0x1b, 0xcd, 0x74, 0xdd, 0x64, 0xb2, 0xb, 0x3, 0xba, 0x6c, 0xd5, + 0x23, 0x9a, 0x4c, 0xf5, 0xfd, 0x44, 0x92, 0x2b, 0x82, 0x3b, 0xed, 0x54, 0x5c, 0xe5, 0x33, 0x8a, + 0xa3, 0x1a, 0xcc, 0x75, 0x7d, 0xc4, 0x12, 0xab, 0x2, 0xbb, 0x6d, 0xd4, 0xdc, 0x65, 0xb3, 0xa, + 0xfc, 0x45, 0x93, 0x2a, 0x22, 0x9b, 0x4d, 0xf4, 0x5d, 0xe4, 0x32, 0x8b, 0x83, 0x3a, 0xec, 0x55, + 0x1d, 0xa4, 0x72, 0xcb, 0xc3, 0x7a, 0xac, 0x15, 0xbc, 0x5, 0xd3, 0x6a, 0x62, 0xdb, 0xd, 0xb4, + 0x42, 0xfb, 0x2d, 0x94, 0x9c, 0x25, 0xf3, 0x4a, 0xe3, 0x5a, 0x8c, 0x35, 0x3d, 0x84, 0x52, 0xeb, + ], + [ + 0x0, 0xba, 0x69, 0xd3, 0xd2, 0x68, 0xbb, 0x1, 0xb9, 0x3, 0xd0, 0x6a, 0x6b, 0xd1, 0x2, 0xb8, + 0x6f, 0xd5, 0x6, 0xbc, 0xbd, 0x7, 0xd4, 0x6e, 0xd6, 0x6c, 0xbf, 0x5, 0x4, 0xbe, 0x6d, 0xd7, + 0xde, 0x64, 0xb7, 0xd, 0xc, 0xb6, 0x65, 0xdf, 0x67, 0xdd, 0xe, 0xb4, 0xb5, 0xf, 0xdc, 0x66, + 0xb1, 0xb, 0xd8, 0x62, 0x63, 0xd9, 0xa, 0xb0, 0x8, 0xb2, 0x61, 0xdb, 0xda, 0x60, 0xb3, 0x9, + 0xa1, 0x1b, 0xc8, 0x72, 0x73, 0xc9, 0x1a, 0xa0, 0x18, 0xa2, 0x71, 0xcb, 0xca, 0x70, 0xa3, 0x19, + 0xce, 0x74, 0xa7, 0x1d, 0x1c, 0xa6, 0x75, 0xcf, 0x77, 0xcd, 0x1e, 0xa4, 0xa5, 0x1f, 0xcc, 0x76, + 0x7f, 0xc5, 0x16, 0xac, 0xad, 0x17, 0xc4, 0x7e, 0xc6, 0x7c, 0xaf, 0x15, 0x14, 0xae, 0x7d, 0xc7, + 0x10, 0xaa, 0x79, 0xc3, 0xc2, 0x78, 0xab, 0x11, 0xa9, 0x13, 0xc0, 0x7a, 0x7b, 0xc1, 0x12, 0xa8, + 0x5f, 0xe5, 0x36, 0x8c, 0x8d, 0x37, 0xe4, 0x5e, 0xe6, 0x5c, 0x8f, 0x35, 0x34, 0x8e, 0x5d, 0xe7, + 0x30, 0x8a, 0x59, 0xe3, 0xe2, 0x58, 0x8b, 0x31, 0x89, 0x33, 0xe0, 0x5a, 0x5b, 0xe1, 0x32, 0x88, + 0x81, 0x3b, 0xe8, 0x52, 0x53, 0xe9, 0x3a, 0x80, 0x38, 0x82, 0x51, 0xeb, 0xea, 0x50, 0x83, 0x39, + 0xee, 0x54, 0x87, 0x3d, 0x3c, 0x86, 0x55, 0xef, 0x57, 0xed, 0x3e, 0x84, 0x85, 0x3f, 0xec, 0x56, + 0xfe, 0x44, 0x97, 0x2d, 0x2c, 0x96, 0x45, 0xff, 0x47, 0xfd, 0x2e, 0x94, 0x95, 0x2f, 0xfc, 0x46, + 0x91, 0x2b, 0xf8, 0x42, 0x43, 0xf9, 0x2a, 0x90, 0x28, 0x92, 0x41, 0xfb, 0xfa, 0x40, 0x93, 0x29, + 0x20, 0x9a, 0x49, 0xf3, 0xf2, 0x48, 0x9b, 0x21, 0x99, 0x23, 0xf0, 0x4a, 0x4b, 0xf1, 0x22, 0x98, + 0x4f, 0xf5, 0x26, 0x9c, 0x9d, 0x27, 0xf4, 0x4e, 0xf6, 0x4c, 0x9f, 0x25, 0x24, 0x9e, 0x4d, 0xf7, + ], + [ + 0x0, 0xbb, 0x6b, 0xd0, 0xd6, 0x6d, 0xbd, 0x6, 0xb1, 0xa, 0xda, 0x61, 0x67, 0xdc, 0xc, 0xb7, + 0x7f, 0xc4, 0x14, 0xaf, 0xa9, 0x12, 0xc2, 0x79, 0xce, 0x75, 0xa5, 0x1e, 0x18, 0xa3, 0x73, 0xc8, + 0xfe, 0x45, 0x95, 0x2e, 0x28, 0x93, 0x43, 0xf8, 0x4f, 0xf4, 0x24, 0x9f, 0x99, 0x22, 0xf2, 0x49, + 0x81, 0x3a, 0xea, 0x51, 0x57, 0xec, 0x3c, 0x87, 0x30, 0x8b, 0x5b, 0xe0, 0xe6, 0x5d, 0x8d, 0x36, + 0xe1, 0x5a, 0x8a, 0x31, 0x37, 0x8c, 0x5c, 0xe7, 0x50, 0xeb, 0x3b, 0x80, 0x86, 0x3d, 0xed, 0x56, + 0x9e, 0x25, 0xf5, 0x4e, 0x48, 0xf3, 0x23, 0x98, 0x2f, 0x94, 0x44, 0xff, 0xf9, 0x42, 0x92, 0x29, + 0x1f, 0xa4, 0x74, 0xcf, 0xc9, 0x72, 0xa2, 0x19, 0xae, 0x15, 0xc5, 0x7e, 0x78, 0xc3, 0x13, 0xa8, + 0x60, 0xdb, 0xb, 0xb0, 0xb6, 0xd, 0xdd, 0x66, 0xd1, 0x6a, 0xba, 0x1, 0x7, 0xbc, 0x6c, 0xd7, + 0xdf, 0x64, 0xb4, 0xf, 0x9, 0xb2, 0x62, 0xd9, 0x6e, 0xd5, 0x5, 0xbe, 0xb8, 0x3, 0xd3, 0x68, + 0xa0, 0x1b, 0xcb, 0x70, 0x76, 0xcd, 0x1d, 0xa6, 0x11, 0xaa, 0x7a, 0xc1, 0xc7, 0x7c, 0xac, 0x17, + 0x21, 0x9a, 0x4a, 0xf1, 0xf7, 0x4c, 0x9c, 0x27, 0x90, 0x2b, 0xfb, 0x40, 0x46, 0xfd, 0x2d, 0x96, + 0x5e, 0xe5, 0x35, 0x8e, 0x88, 0x33, 0xe3, 0x58, 0xef, 0x54, 0x84, 0x3f, 0x39, 0x82, 0x52, 0xe9, + 0x3e, 0x85, 0x55, 0xee, 0xe8, 0x53, 0x83, 0x38, 0x8f, 0x34, 0xe4, 0x5f, 0x59, 0xe2, 0x32, 0x89, + 0x41, 0xfa, 0x2a, 0x91, 0x97, 0x2c, 0xfc, 0x47, 0xf0, 0x4b, 0x9b, 0x20, 0x26, 0x9d, 0x4d, 0xf6, + 0xc0, 0x7b, 0xab, 0x10, 0x16, 0xad, 0x7d, 0xc6, 0x71, 0xca, 0x1a, 0xa1, 0xa7, 0x1c, 0xcc, 0x77, + 0xbf, 0x4, 0xd4, 0x6f, 0x69, 0xd2, 0x2, 0xb9, 0xe, 0xb5, 0x65, 0xde, 0xd8, 0x63, 0xb3, 0x8, + ], + [ + 0x0, 0xbc, 0x65, 0xd9, 0xca, 0x76, 0xaf, 0x13, 0x89, 0x35, 0xec, 0x50, 0x43, 0xff, 0x26, 0x9a, + 0xf, 0xb3, 0x6a, 0xd6, 0xc5, 0x79, 0xa0, 0x1c, 0x86, 0x3a, 0xe3, 0x5f, 0x4c, 0xf0, 0x29, 0x95, + 0x1e, 0xa2, 0x7b, 0xc7, 0xd4, 0x68, 0xb1, 0xd, 0x97, 0x2b, 0xf2, 0x4e, 0x5d, 0xe1, 0x38, 0x84, + 0x11, 0xad, 0x74, 0xc8, 0xdb, 0x67, 0xbe, 0x2, 0x98, 0x24, 0xfd, 0x41, 0x52, 0xee, 0x37, 0x8b, + 0x3c, 0x80, 0x59, 0xe5, 0xf6, 0x4a, 0x93, 0x2f, 0xb5, 0x9, 0xd0, 0x6c, 0x7f, 0xc3, 0x1a, 0xa6, + 0x33, 0x8f, 0x56, 0xea, 0xf9, 0x45, 0x9c, 0x20, 0xba, 0x6, 0xdf, 0x63, 0x70, 0xcc, 0x15, 0xa9, + 0x22, 0x9e, 0x47, 0xfb, 0xe8, 0x54, 0x8d, 0x31, 0xab, 0x17, 0xce, 0x72, 0x61, 0xdd, 0x4, 0xb8, + 0x2d, 0x91, 0x48, 0xf4, 0xe7, 0x5b, 0x82, 0x3e, 0xa4, 0x18, 0xc1, 0x7d, 0x6e, 0xd2, 0xb, 0xb7, + 0x78, 0xc4, 0x1d, 0xa1, 0xb2, 0xe, 0xd7, 0x6b, 0xf1, 0x4d, 0x94, 0x28, 0x3b, 0x87, 0x5e, 0xe2, + 0x77, 0xcb, 0x12, 0xae, 0xbd, 0x1, 0xd8, 0x64, 0xfe, 0x42, 0x9b, 0x27, 0x34, 0x88, 0x51, 0xed, + 0x66, 0xda, 0x3, 0xbf, 0xac, 0x10, 0xc9, 0x75, 0xef, 0x53, 0x8a, 0x36, 0x25, 0x99, 0x40, 0xfc, + 0x69, 0xd5, 0xc, 0xb0, 0xa3, 0x1f, 0xc6, 0x7a, 0xe0, 0x5c, 0x85, 0x39, 0x2a, 0x96, 0x4f, 0xf3, + 0x44, 0xf8, 0x21, 0x9d, 0x8e, 0x32, 0xeb, 0x57, 0xcd, 0x71, 0xa8, 0x14, 0x7, 0xbb, 0x62, 0xde, + 0x4b, 0xf7, 0x2e, 0x92, 0x81, 0x3d, 0xe4, 0x58, 0xc2, 0x7e, 0xa7, 0x1b, 0x8, 0xb4, 0x6d, 0xd1, + 0x5a, 0xe6, 0x3f, 0x83, 0x90, 0x2c, 0xf5, 0x49, 0xd3, 0x6f, 0xb6, 0xa, 0x19, 0xa5, 0x7c, 0xc0, + 0x55, 0xe9, 0x30, 0x8c, 0x9f, 0x23, 0xfa, 0x46, 0xdc, 0x60, 0xb9, 0x5, 0x16, 0xaa, 0x73, 0xcf, + ], + [ + 0x0, 0xbd, 0x67, 0xda, 0xce, 0x73, 0xa9, 0x14, 0x81, 0x3c, 0xe6, 0x5b, 0x4f, 0xf2, 0x28, 0x95, + 0x1f, 0xa2, 0x78, 0xc5, 0xd1, 0x6c, 0xb6, 0xb, 0x9e, 0x23, 0xf9, 0x44, 0x50, 0xed, 0x37, 0x8a, + 0x3e, 0x83, 0x59, 0xe4, 0xf0, 0x4d, 0x97, 0x2a, 0xbf, 0x2, 0xd8, 0x65, 0x71, 0xcc, 0x16, 0xab, + 0x21, 0x9c, 0x46, 0xfb, 0xef, 0x52, 0x88, 0x35, 0xa0, 0x1d, 0xc7, 0x7a, 0x6e, 0xd3, 0x9, 0xb4, + 0x7c, 0xc1, 0x1b, 0xa6, 0xb2, 0xf, 0xd5, 0x68, 0xfd, 0x40, 0x9a, 0x27, 0x33, 0x8e, 0x54, 0xe9, + 0x63, 0xde, 0x4, 0xb9, 0xad, 0x10, 0xca, 0x77, 0xe2, 0x5f, 0x85, 0x38, 0x2c, 0x91, 0x4b, 0xf6, + 0x42, 0xff, 0x25, 0x98, 0x8c, 0x31, 0xeb, 0x56, 0xc3, 0x7e, 0xa4, 0x19, 0xd, 0xb0, 0x6a, 0xd7, + 0x5d, 0xe0, 0x3a, 0x87, 0x93, 0x2e, 0xf4, 0x49, 0xdc, 0x61, 0xbb, 0x6, 0x12, 0xaf, 0x75, 0xc8, + 0xf8, 0x45, 0x9f, 0x22, 0x36, 0x8b, 0x51, 0xec, 0x79, 0xc4, 0x1e, 0xa3, 0xb7, 0xa, 0xd0, 0x6d, + 0xe7, 0x5a, 0x80, 0x3d, 0x29, 0x94, 0x4e, 0xf3, 0x66, 0xdb, 0x1, 0xbc, 0xa8, 0x15, 0xcf, 0x72, + 0xc6, 0x7b, 0xa1, 0x1c, 0x8, 0xb5, 0x6f, 0xd2, 0x47, 0xfa, 0x20, 0x9d, 0x89, 0x34, 0xee, 0x53, + 0xd9, 0x64, 0xbe, 0x3, 0x17, 0xaa, 0x70, 0xcd, 0x58, 0xe5, 0x3f, 0x82, 0x96, 0x2b, 0xf1, 0x4c, + 0x84, 0x39, 0xe3, 0x5e, 0x4a, 0xf7, 0x2d, 0x90, 0x5, 0xb8, 0x62, 0xdf, 0xcb, 0x76, 0xac, 0x11, + 0x9b, 0x26, 0xfc, 0x41, 0x55, 0xe8, 0x32, 0x8f, 0x1a, 0xa7, 0x7d, 0xc0, 0xd4, 0x69, 0xb3, 0xe, + 0xba, 0x7, 0xdd, 0x60, 0x74, 0xc9, 0x13, 0xae, 0x3b, 0x86, 0x5c, 0xe1, 0xf5, 0x48, 0x92, 0x2f, + 0xa5, 0x18, 0xc2, 0x7f, 0x6b, 0xd6, 0xc, 0xb1, 0x24, 0x99, 0x43, 0xfe, 0xea, 0x57, 0x8d, 0x30, + ], + [ + 0x0, 0xbe, 0x61, 0xdf, 0xc2, 0x7c, 0xa3, 0x1d, 0x99, 0x27, 0xf8, 0x46, 0x5b, 0xe5, 0x3a, 0x84, + 0x2f, 0x91, 0x4e, 0xf0, 0xed, 0x53, 0x8c, 0x32, 0xb6, 0x8, 0xd7, 0x69, 0x74, 0xca, 0x15, 0xab, + 0x5e, 0xe0, 0x3f, 0x81, 0x9c, 0x22, 0xfd, 0x43, 0xc7, 0x79, 0xa6, 0x18, 0x5, 0xbb, 0x64, 0xda, + 0x71, 0xcf, 0x10, 0xae, 0xb3, 0xd, 0xd2, 0x6c, 0xe8, 0x56, 0x89, 0x37, 0x2a, 0x94, 0x4b, 0xf5, + 0xbc, 0x2, 0xdd, 0x63, 0x7e, 0xc0, 0x1f, 0xa1, 0x25, 0x9b, 0x44, 0xfa, 0xe7, 0x59, 0x86, 0x38, + 0x93, 0x2d, 0xf2, 0x4c, 0x51, 0xef, 0x30, 0x8e, 0xa, 0xb4, 0x6b, 0xd5, 0xc8, 0x76, 0xa9, 0x17, + 0xe2, 0x5c, 0x83, 0x3d, 0x20, 0x9e, 0x41, 0xff, 0x7b, 0xc5, 0x1a, 0xa4, 0xb9, 0x7, 0xd8, 0x66, + 0xcd, 0x73, 0xac, 0x12, 0xf, 0xb1, 0x6e, 0xd0, 0x54, 0xea, 0x35, 0x8b, 0x96, 0x28, 0xf7, 0x49, + 0x65, 0xdb, 0x4, 0xba, 0xa7, 0x19, 0xc6, 0x78, 0xfc, 0x42, 0x9d, 0x23, 0x3e, 0x80, 0x5f, 0xe1, + 0x4a, 0xf4, 0x2b, 0x95, 0x88, 0x36, 0xe9, 0x57, 0xd3, 0x6d, 0xb2, 0xc, 0x11, 0xaf, 0x70, 0xce, + 0x3b, 0x85, 0x5a, 0xe4, 0xf9, 0x47, 0x98, 0x26, 0xa2, 0x1c, 0xc3, 0x7d, 0x60, 0xde, 0x1, 0xbf, + 0x14, 0xaa, 0x75, 0xcb, 0xd6, 0x68, 0xb7, 0x9, 0x8d, 0x33, 0xec, 0x52, 0x4f, 0xf1, 0x2e, 0x90, + 0xd9, 0x67, 0xb8, 0x6, 0x1b, 0xa5, 0x7a, 0xc4, 0x40, 0xfe, 0x21, 0x9f, 0x82, 0x3c, 0xe3, 0x5d, + 0xf6, 0x48, 0x97, 0x29, 0x34, 0x8a, 0x55, 0xeb, 0x6f, 0xd1, 0xe, 0xb0, 0xad, 0x13, 0xcc, 0x72, + 0x87, 0x39, 0xe6, 0x58, 0x45, 0xfb, 0x24, 0x9a, 0x1e, 0xa0, 0x7f, 0xc1, 0xdc, 0x62, 0xbd, 0x3, + 0xa8, 0x16, 0xc9, 0x77, 0x6a, 0xd4, 0xb, 0xb5, 0x31, 0x8f, 0x50, 0xee, 0xf3, 0x4d, 0x92, 0x2c, + ], + [ + 0x0, 0xbf, 0x63, 0xdc, 0xc6, 0x79, 0xa5, 0x1a, 0x91, 0x2e, 0xf2, 0x4d, 0x57, 0xe8, 0x34, 0x8b, + 0x3f, 0x80, 0x5c, 0xe3, 0xf9, 0x46, 0x9a, 0x25, 0xae, 0x11, 0xcd, 0x72, 0x68, 0xd7, 0xb, 0xb4, + 0x7e, 0xc1, 0x1d, 0xa2, 0xb8, 0x7, 0xdb, 0x64, 0xef, 0x50, 0x8c, 0x33, 0x29, 0x96, 0x4a, 0xf5, + 0x41, 0xfe, 0x22, 0x9d, 0x87, 0x38, 0xe4, 0x5b, 0xd0, 0x6f, 0xb3, 0xc, 0x16, 0xa9, 0x75, 0xca, + 0xfc, 0x43, 0x9f, 0x20, 0x3a, 0x85, 0x59, 0xe6, 0x6d, 0xd2, 0xe, 0xb1, 0xab, 0x14, 0xc8, 0x77, + 0xc3, 0x7c, 0xa0, 0x1f, 0x5, 0xba, 0x66, 0xd9, 0x52, 0xed, 0x31, 0x8e, 0x94, 0x2b, 0xf7, 0x48, + 0x82, 0x3d, 0xe1, 0x5e, 0x44, 0xfb, 0x27, 0x98, 0x13, 0xac, 0x70, 0xcf, 0xd5, 0x6a, 0xb6, 0x9, + 0xbd, 0x2, 0xde, 0x61, 0x7b, 0xc4, 0x18, 0xa7, 0x2c, 0x93, 0x4f, 0xf0, 0xea, 0x55, 0x89, 0x36, + 0xe5, 0x5a, 0x86, 0x39, 0x23, 0x9c, 0x40, 0xff, 0x74, 0xcb, 0x17, 0xa8, 0xb2, 0xd, 0xd1, 0x6e, + 0xda, 0x65, 0xb9, 0x6, 0x1c, 0xa3, 0x7f, 0xc0, 0x4b, 0xf4, 0x28, 0x97, 0x8d, 0x32, 0xee, 0x51, + 0x9b, 0x24, 0xf8, 0x47, 0x5d, 0xe2, 0x3e, 0x81, 0xa, 0xb5, 0x69, 0xd6, 0xcc, 0x73, 0xaf, 0x10, + 0xa4, 0x1b, 0xc7, 0x78, 0x62, 0xdd, 0x1, 0xbe, 0x35, 0x8a, 0x56, 0xe9, 0xf3, 0x4c, 0x90, 0x2f, + 0x19, 0xa6, 0x7a, 0xc5, 0xdf, 0x60, 0xbc, 0x3, 0x88, 0x37, 0xeb, 0x54, 0x4e, 0xf1, 0x2d, 0x92, + 0x26, 0x99, 0x45, 0xfa, 0xe0, 0x5f, 0x83, 0x3c, 0xb7, 0x8, 0xd4, 0x6b, 0x71, 0xce, 0x12, 0xad, + 0x67, 0xd8, 0x4, 0xbb, 0xa1, 0x1e, 0xc2, 0x7d, 0xf6, 0x49, 0x95, 0x2a, 0x30, 0x8f, 0x53, 0xec, + 0x58, 0xe7, 0x3b, 0x84, 0x9e, 0x21, 0xfd, 0x42, 0xc9, 0x76, 0xaa, 0x15, 0xf, 0xb0, 0x6c, 0xd3, + ], + [ + 0x0, 0xc0, 0x9d, 0x5d, 0x27, 0xe7, 0xba, 0x7a, 0x4e, 0x8e, 0xd3, 0x13, 0x69, 0xa9, 0xf4, 0x34, + 0x9c, 0x5c, 0x1, 0xc1, 0xbb, 0x7b, 0x26, 0xe6, 0xd2, 0x12, 0x4f, 0x8f, 0xf5, 0x35, 0x68, 0xa8, + 0x25, 0xe5, 0xb8, 0x78, 0x2, 0xc2, 0x9f, 0x5f, 0x6b, 0xab, 0xf6, 0x36, 0x4c, 0x8c, 0xd1, 0x11, + 0xb9, 0x79, 0x24, 0xe4, 0x9e, 0x5e, 0x3, 0xc3, 0xf7, 0x37, 0x6a, 0xaa, 0xd0, 0x10, 0x4d, 0x8d, + 0x4a, 0x8a, 0xd7, 0x17, 0x6d, 0xad, 0xf0, 0x30, 0x4, 0xc4, 0x99, 0x59, 0x23, 0xe3, 0xbe, 0x7e, + 0xd6, 0x16, 0x4b, 0x8b, 0xf1, 0x31, 0x6c, 0xac, 0x98, 0x58, 0x5, 0xc5, 0xbf, 0x7f, 0x22, 0xe2, + 0x6f, 0xaf, 0xf2, 0x32, 0x48, 0x88, 0xd5, 0x15, 0x21, 0xe1, 0xbc, 0x7c, 0x6, 0xc6, 0x9b, 0x5b, + 0xf3, 0x33, 0x6e, 0xae, 0xd4, 0x14, 0x49, 0x89, 0xbd, 0x7d, 0x20, 0xe0, 0x9a, 0x5a, 0x7, 0xc7, + 0x94, 0x54, 0x9, 0xc9, 0xb3, 0x73, 0x2e, 0xee, 0xda, 0x1a, 0x47, 0x87, 0xfd, 0x3d, 0x60, 0xa0, + 0x8, 0xc8, 0x95, 0x55, 0x2f, 0xef, 0xb2, 0x72, 0x46, 0x86, 0xdb, 0x1b, 0x61, 0xa1, 0xfc, 0x3c, + 0xb1, 0x71, 0x2c, 0xec, 0x96, 0x56, 0xb, 0xcb, 0xff, 0x3f, 0x62, 0xa2, 0xd8, 0x18, 0x45, 0x85, + 0x2d, 0xed, 0xb0, 0x70, 0xa, 0xca, 0x97, 0x57, 0x63, 0xa3, 0xfe, 0x3e, 0x44, 0x84, 0xd9, 0x19, + 0xde, 0x1e, 0x43, 0x83, 0xf9, 0x39, 0x64, 0xa4, 0x90, 0x50, 0xd, 0xcd, 0xb7, 0x77, 0x2a, 0xea, + 0x42, 0x82, 0xdf, 0x1f, 0x65, 0xa5, 0xf8, 0x38, 0xc, 0xcc, 0x91, 0x51, 0x2b, 0xeb, 0xb6, 0x76, + 0xfb, 0x3b, 0x66, 0xa6, 0xdc, 0x1c, 0x41, 0x81, 0xb5, 0x75, 0x28, 0xe8, 0x92, 0x52, 0xf, 0xcf, + 0x67, 0xa7, 0xfa, 0x3a, 0x40, 0x80, 0xdd, 0x1d, 0x29, 0xe9, 0xb4, 0x74, 0xe, 0xce, 0x93, 0x53, + ], + [ + 0x0, 0xc1, 0x9f, 0x5e, 0x23, 0xe2, 0xbc, 0x7d, 0x46, 0x87, 0xd9, 0x18, 0x65, 0xa4, 0xfa, 0x3b, + 0x8c, 0x4d, 0x13, 0xd2, 0xaf, 0x6e, 0x30, 0xf1, 0xca, 0xb, 0x55, 0x94, 0xe9, 0x28, 0x76, 0xb7, + 0x5, 0xc4, 0x9a, 0x5b, 0x26, 0xe7, 0xb9, 0x78, 0x43, 0x82, 0xdc, 0x1d, 0x60, 0xa1, 0xff, 0x3e, + 0x89, 0x48, 0x16, 0xd7, 0xaa, 0x6b, 0x35, 0xf4, 0xcf, 0xe, 0x50, 0x91, 0xec, 0x2d, 0x73, 0xb2, + 0xa, 0xcb, 0x95, 0x54, 0x29, 0xe8, 0xb6, 0x77, 0x4c, 0x8d, 0xd3, 0x12, 0x6f, 0xae, 0xf0, 0x31, + 0x86, 0x47, 0x19, 0xd8, 0xa5, 0x64, 0x3a, 0xfb, 0xc0, 0x1, 0x5f, 0x9e, 0xe3, 0x22, 0x7c, 0xbd, + 0xf, 0xce, 0x90, 0x51, 0x2c, 0xed, 0xb3, 0x72, 0x49, 0x88, 0xd6, 0x17, 0x6a, 0xab, 0xf5, 0x34, + 0x83, 0x42, 0x1c, 0xdd, 0xa0, 0x61, 0x3f, 0xfe, 0xc5, 0x4, 0x5a, 0x9b, 0xe6, 0x27, 0x79, 0xb8, + 0x14, 0xd5, 0x8b, 0x4a, 0x37, 0xf6, 0xa8, 0x69, 0x52, 0x93, 0xcd, 0xc, 0x71, 0xb0, 0xee, 0x2f, + 0x98, 0x59, 0x7, 0xc6, 0xbb, 0x7a, 0x24, 0xe5, 0xde, 0x1f, 0x41, 0x80, 0xfd, 0x3c, 0x62, 0xa3, + 0x11, 0xd0, 0x8e, 0x4f, 0x32, 0xf3, 0xad, 0x6c, 0x57, 0x96, 0xc8, 0x9, 0x74, 0xb5, 0xeb, 0x2a, + 0x9d, 0x5c, 0x2, 0xc3, 0xbe, 0x7f, 0x21, 0xe0, 0xdb, 0x1a, 0x44, 0x85, 0xf8, 0x39, 0x67, 0xa6, + 0x1e, 0xdf, 0x81, 0x40, 0x3d, 0xfc, 0xa2, 0x63, 0x58, 0x99, 0xc7, 0x6, 0x7b, 0xba, 0xe4, 0x25, + 0x92, 0x53, 0xd, 0xcc, 0xb1, 0x70, 0x2e, 0xef, 0xd4, 0x15, 0x4b, 0x8a, 0xf7, 0x36, 0x68, 0xa9, + 0x1b, 0xda, 0x84, 0x45, 0x38, 0xf9, 0xa7, 0x66, 0x5d, 0x9c, 0xc2, 0x3, 0x7e, 0xbf, 0xe1, 0x20, + 0x97, 0x56, 0x8, 0xc9, 0xb4, 0x75, 0x2b, 0xea, 0xd1, 0x10, 0x4e, 0x8f, 0xf2, 0x33, 0x6d, 0xac, + ], + [ + 0x0, 0xc2, 0x99, 0x5b, 0x2f, 0xed, 0xb6, 0x74, 0x5e, 0x9c, 0xc7, 0x5, 0x71, 0xb3, 0xe8, 0x2a, + 0xbc, 0x7e, 0x25, 0xe7, 0x93, 0x51, 0xa, 0xc8, 0xe2, 0x20, 0x7b, 0xb9, 0xcd, 0xf, 0x54, 0x96, + 0x65, 0xa7, 0xfc, 0x3e, 0x4a, 0x88, 0xd3, 0x11, 0x3b, 0xf9, 0xa2, 0x60, 0x14, 0xd6, 0x8d, 0x4f, + 0xd9, 0x1b, 0x40, 0x82, 0xf6, 0x34, 0x6f, 0xad, 0x87, 0x45, 0x1e, 0xdc, 0xa8, 0x6a, 0x31, 0xf3, + 0xca, 0x8, 0x53, 0x91, 0xe5, 0x27, 0x7c, 0xbe, 0x94, 0x56, 0xd, 0xcf, 0xbb, 0x79, 0x22, 0xe0, + 0x76, 0xb4, 0xef, 0x2d, 0x59, 0x9b, 0xc0, 0x2, 0x28, 0xea, 0xb1, 0x73, 0x7, 0xc5, 0x9e, 0x5c, + 0xaf, 0x6d, 0x36, 0xf4, 0x80, 0x42, 0x19, 0xdb, 0xf1, 0x33, 0x68, 0xaa, 0xde, 0x1c, 0x47, 0x85, + 0x13, 0xd1, 0x8a, 0x48, 0x3c, 0xfe, 0xa5, 0x67, 0x4d, 0x8f, 0xd4, 0x16, 0x62, 0xa0, 0xfb, 0x39, + 0x89, 0x4b, 0x10, 0xd2, 0xa6, 0x64, 0x3f, 0xfd, 0xd7, 0x15, 0x4e, 0x8c, 0xf8, 0x3a, 0x61, 0xa3, + 0x35, 0xf7, 0xac, 0x6e, 0x1a, 0xd8, 0x83, 0x41, 0x6b, 0xa9, 0xf2, 0x30, 0x44, 0x86, 0xdd, 0x1f, + 0xec, 0x2e, 0x75, 0xb7, 0xc3, 0x1, 0x5a, 0x98, 0xb2, 0x70, 0x2b, 0xe9, 0x9d, 0x5f, 0x4, 0xc6, + 0x50, 0x92, 0xc9, 0xb, 0x7f, 0xbd, 0xe6, 0x24, 0xe, 0xcc, 0x97, 0x55, 0x21, 0xe3, 0xb8, 0x7a, + 0x43, 0x81, 0xda, 0x18, 0x6c, 0xae, 0xf5, 0x37, 0x1d, 0xdf, 0x84, 0x46, 0x32, 0xf0, 0xab, 0x69, + 0xff, 0x3d, 0x66, 0xa4, 0xd0, 0x12, 0x49, 0x8b, 0xa1, 0x63, 0x38, 0xfa, 0x8e, 0x4c, 0x17, 0xd5, + 0x26, 0xe4, 0xbf, 0x7d, 0x9, 0xcb, 0x90, 0x52, 0x78, 0xba, 0xe1, 0x23, 0x57, 0x95, 0xce, 0xc, + 0x9a, 0x58, 0x3, 0xc1, 0xb5, 0x77, 0x2c, 0xee, 0xc4, 0x6, 0x5d, 0x9f, 0xeb, 0x29, 0x72, 0xb0, + ], + [ + 0x0, 0xc3, 0x9b, 0x58, 0x2b, 0xe8, 0xb0, 0x73, 0x56, 0x95, 0xcd, 0xe, 0x7d, 0xbe, 0xe6, 0x25, + 0xac, 0x6f, 0x37, 0xf4, 0x87, 0x44, 0x1c, 0xdf, 0xfa, 0x39, 0x61, 0xa2, 0xd1, 0x12, 0x4a, 0x89, + 0x45, 0x86, 0xde, 0x1d, 0x6e, 0xad, 0xf5, 0x36, 0x13, 0xd0, 0x88, 0x4b, 0x38, 0xfb, 0xa3, 0x60, + 0xe9, 0x2a, 0x72, 0xb1, 0xc2, 0x1, 0x59, 0x9a, 0xbf, 0x7c, 0x24, 0xe7, 0x94, 0x57, 0xf, 0xcc, + 0x8a, 0x49, 0x11, 0xd2, 0xa1, 0x62, 0x3a, 0xf9, 0xdc, 0x1f, 0x47, 0x84, 0xf7, 0x34, 0x6c, 0xaf, + 0x26, 0xe5, 0xbd, 0x7e, 0xd, 0xce, 0x96, 0x55, 0x70, 0xb3, 0xeb, 0x28, 0x5b, 0x98, 0xc0, 0x3, + 0xcf, 0xc, 0x54, 0x97, 0xe4, 0x27, 0x7f, 0xbc, 0x99, 0x5a, 0x2, 0xc1, 0xb2, 0x71, 0x29, 0xea, + 0x63, 0xa0, 0xf8, 0x3b, 0x48, 0x8b, 0xd3, 0x10, 0x35, 0xf6, 0xae, 0x6d, 0x1e, 0xdd, 0x85, 0x46, + 0x9, 0xca, 0x92, 0x51, 0x22, 0xe1, 0xb9, 0x7a, 0x5f, 0x9c, 0xc4, 0x7, 0x74, 0xb7, 0xef, 0x2c, + 0xa5, 0x66, 0x3e, 0xfd, 0x8e, 0x4d, 0x15, 0xd6, 0xf3, 0x30, 0x68, 0xab, 0xd8, 0x1b, 0x43, 0x80, + 0x4c, 0x8f, 0xd7, 0x14, 0x67, 0xa4, 0xfc, 0x3f, 0x1a, 0xd9, 0x81, 0x42, 0x31, 0xf2, 0xaa, 0x69, + 0xe0, 0x23, 0x7b, 0xb8, 0xcb, 0x8, 0x50, 0x93, 0xb6, 0x75, 0x2d, 0xee, 0x9d, 0x5e, 0x6, 0xc5, + 0x83, 0x40, 0x18, 0xdb, 0xa8, 0x6b, 0x33, 0xf0, 0xd5, 0x16, 0x4e, 0x8d, 0xfe, 0x3d, 0x65, 0xa6, + 0x2f, 0xec, 0xb4, 0x77, 0x4, 0xc7, 0x9f, 0x5c, 0x79, 0xba, 0xe2, 0x21, 0x52, 0x91, 0xc9, 0xa, + 0xc6, 0x5, 0x5d, 0x9e, 0xed, 0x2e, 0x76, 0xb5, 0x90, 0x53, 0xb, 0xc8, 0xbb, 0x78, 0x20, 0xe3, + 0x6a, 0xa9, 0xf1, 0x32, 0x41, 0x82, 0xda, 0x19, 0x3c, 0xff, 0xa7, 0x64, 0x17, 0xd4, 0x8c, 0x4f, + ], + [ + 0x0, 0xc4, 0x95, 0x51, 0x37, 0xf3, 0xa2, 0x66, 0x6e, 0xaa, 0xfb, 0x3f, 0x59, 0x9d, 0xcc, 0x8, + 0xdc, 0x18, 0x49, 0x8d, 0xeb, 0x2f, 0x7e, 0xba, 0xb2, 0x76, 0x27, 0xe3, 0x85, 0x41, 0x10, 0xd4, + 0xa5, 0x61, 0x30, 0xf4, 0x92, 0x56, 0x7, 0xc3, 0xcb, 0xf, 0x5e, 0x9a, 0xfc, 0x38, 0x69, 0xad, + 0x79, 0xbd, 0xec, 0x28, 0x4e, 0x8a, 0xdb, 0x1f, 0x17, 0xd3, 0x82, 0x46, 0x20, 0xe4, 0xb5, 0x71, + 0x57, 0x93, 0xc2, 0x6, 0x60, 0xa4, 0xf5, 0x31, 0x39, 0xfd, 0xac, 0x68, 0xe, 0xca, 0x9b, 0x5f, + 0x8b, 0x4f, 0x1e, 0xda, 0xbc, 0x78, 0x29, 0xed, 0xe5, 0x21, 0x70, 0xb4, 0xd2, 0x16, 0x47, 0x83, + 0xf2, 0x36, 0x67, 0xa3, 0xc5, 0x1, 0x50, 0x94, 0x9c, 0x58, 0x9, 0xcd, 0xab, 0x6f, 0x3e, 0xfa, + 0x2e, 0xea, 0xbb, 0x7f, 0x19, 0xdd, 0x8c, 0x48, 0x40, 0x84, 0xd5, 0x11, 0x77, 0xb3, 0xe2, 0x26, + 0xae, 0x6a, 0x3b, 0xff, 0x99, 0x5d, 0xc, 0xc8, 0xc0, 0x4, 0x55, 0x91, 0xf7, 0x33, 0x62, 0xa6, + 0x72, 0xb6, 0xe7, 0x23, 0x45, 0x81, 0xd0, 0x14, 0x1c, 0xd8, 0x89, 0x4d, 0x2b, 0xef, 0xbe, 0x7a, + 0xb, 0xcf, 0x9e, 0x5a, 0x3c, 0xf8, 0xa9, 0x6d, 0x65, 0xa1, 0xf0, 0x34, 0x52, 0x96, 0xc7, 0x3, + 0xd7, 0x13, 0x42, 0x86, 0xe0, 0x24, 0x75, 0xb1, 0xb9, 0x7d, 0x2c, 0xe8, 0x8e, 0x4a, 0x1b, 0xdf, + 0xf9, 0x3d, 0x6c, 0xa8, 0xce, 0xa, 0x5b, 0x9f, 0x97, 0x53, 0x2, 0xc6, 0xa0, 0x64, 0x35, 0xf1, + 0x25, 0xe1, 0xb0, 0x74, 0x12, 0xd6, 0x87, 0x43, 0x4b, 0x8f, 0xde, 0x1a, 0x7c, 0xb8, 0xe9, 0x2d, + 0x5c, 0x98, 0xc9, 0xd, 0x6b, 0xaf, 0xfe, 0x3a, 0x32, 0xf6, 0xa7, 0x63, 0x5, 0xc1, 0x90, 0x54, + 0x80, 0x44, 0x15, 0xd1, 0xb7, 0x73, 0x22, 0xe6, 0xee, 0x2a, 0x7b, 0xbf, 0xd9, 0x1d, 0x4c, 0x88, + ], + [ + 0x0, 0xc5, 0x97, 0x52, 0x33, 0xf6, 0xa4, 0x61, 0x66, 0xa3, 0xf1, 0x34, 0x55, 0x90, 0xc2, 0x7, + 0xcc, 0x9, 0x5b, 0x9e, 0xff, 0x3a, 0x68, 0xad, 0xaa, 0x6f, 0x3d, 0xf8, 0x99, 0x5c, 0xe, 0xcb, + 0x85, 0x40, 0x12, 0xd7, 0xb6, 0x73, 0x21, 0xe4, 0xe3, 0x26, 0x74, 0xb1, 0xd0, 0x15, 0x47, 0x82, + 0x49, 0x8c, 0xde, 0x1b, 0x7a, 0xbf, 0xed, 0x28, 0x2f, 0xea, 0xb8, 0x7d, 0x1c, 0xd9, 0x8b, 0x4e, + 0x17, 0xd2, 0x80, 0x45, 0x24, 0xe1, 0xb3, 0x76, 0x71, 0xb4, 0xe6, 0x23, 0x42, 0x87, 0xd5, 0x10, + 0xdb, 0x1e, 0x4c, 0x89, 0xe8, 0x2d, 0x7f, 0xba, 0xbd, 0x78, 0x2a, 0xef, 0x8e, 0x4b, 0x19, 0xdc, + 0x92, 0x57, 0x5, 0xc0, 0xa1, 0x64, 0x36, 0xf3, 0xf4, 0x31, 0x63, 0xa6, 0xc7, 0x2, 0x50, 0x95, + 0x5e, 0x9b, 0xc9, 0xc, 0x6d, 0xa8, 0xfa, 0x3f, 0x38, 0xfd, 0xaf, 0x6a, 0xb, 0xce, 0x9c, 0x59, + 0x2e, 0xeb, 0xb9, 0x7c, 0x1d, 0xd8, 0x8a, 0x4f, 0x48, 0x8d, 0xdf, 0x1a, 0x7b, 0xbe, 0xec, 0x29, + 0xe2, 0x27, 0x75, 0xb0, 0xd1, 0x14, 0x46, 0x83, 0x84, 0x41, 0x13, 0xd6, 0xb7, 0x72, 0x20, 0xe5, + 0xab, 0x6e, 0x3c, 0xf9, 0x98, 0x5d, 0xf, 0xca, 0xcd, 0x8, 0x5a, 0x9f, 0xfe, 0x3b, 0x69, 0xac, + 0x67, 0xa2, 0xf0, 0x35, 0x54, 0x91, 0xc3, 0x6, 0x1, 0xc4, 0x96, 0x53, 0x32, 0xf7, 0xa5, 0x60, + 0x39, 0xfc, 0xae, 0x6b, 0xa, 0xcf, 0x9d, 0x58, 0x5f, 0x9a, 0xc8, 0xd, 0x6c, 0xa9, 0xfb, 0x3e, + 0xf5, 0x30, 0x62, 0xa7, 0xc6, 0x3, 0x51, 0x94, 0x93, 0x56, 0x4, 0xc1, 0xa0, 0x65, 0x37, 0xf2, + 0xbc, 0x79, 0x2b, 0xee, 0x8f, 0x4a, 0x18, 0xdd, 0xda, 0x1f, 0x4d, 0x88, 0xe9, 0x2c, 0x7e, 0xbb, + 0x70, 0xb5, 0xe7, 0x22, 0x43, 0x86, 0xd4, 0x11, 0x16, 0xd3, 0x81, 0x44, 0x25, 0xe0, 0xb2, 0x77, + ], + [ + 0x0, 0xc6, 0x91, 0x57, 0x3f, 0xf9, 0xae, 0x68, 0x7e, 0xb8, 0xef, 0x29, 0x41, 0x87, 0xd0, 0x16, + 0xfc, 0x3a, 0x6d, 0xab, 0xc3, 0x5, 0x52, 0x94, 0x82, 0x44, 0x13, 0xd5, 0xbd, 0x7b, 0x2c, 0xea, + 0xe5, 0x23, 0x74, 0xb2, 0xda, 0x1c, 0x4b, 0x8d, 0x9b, 0x5d, 0xa, 0xcc, 0xa4, 0x62, 0x35, 0xf3, + 0x19, 0xdf, 0x88, 0x4e, 0x26, 0xe0, 0xb7, 0x71, 0x67, 0xa1, 0xf6, 0x30, 0x58, 0x9e, 0xc9, 0xf, + 0xd7, 0x11, 0x46, 0x80, 0xe8, 0x2e, 0x79, 0xbf, 0xa9, 0x6f, 0x38, 0xfe, 0x96, 0x50, 0x7, 0xc1, + 0x2b, 0xed, 0xba, 0x7c, 0x14, 0xd2, 0x85, 0x43, 0x55, 0x93, 0xc4, 0x2, 0x6a, 0xac, 0xfb, 0x3d, + 0x32, 0xf4, 0xa3, 0x65, 0xd, 0xcb, 0x9c, 0x5a, 0x4c, 0x8a, 0xdd, 0x1b, 0x73, 0xb5, 0xe2, 0x24, + 0xce, 0x8, 0x5f, 0x99, 0xf1, 0x37, 0x60, 0xa6, 0xb0, 0x76, 0x21, 0xe7, 0x8f, 0x49, 0x1e, 0xd8, + 0xb3, 0x75, 0x22, 0xe4, 0x8c, 0x4a, 0x1d, 0xdb, 0xcd, 0xb, 0x5c, 0x9a, 0xf2, 0x34, 0x63, 0xa5, + 0x4f, 0x89, 0xde, 0x18, 0x70, 0xb6, 0xe1, 0x27, 0x31, 0xf7, 0xa0, 0x66, 0xe, 0xc8, 0x9f, 0x59, + 0x56, 0x90, 0xc7, 0x1, 0x69, 0xaf, 0xf8, 0x3e, 0x28, 0xee, 0xb9, 0x7f, 0x17, 0xd1, 0x86, 0x40, + 0xaa, 0x6c, 0x3b, 0xfd, 0x95, 0x53, 0x4, 0xc2, 0xd4, 0x12, 0x45, 0x83, 0xeb, 0x2d, 0x7a, 0xbc, + 0x64, 0xa2, 0xf5, 0x33, 0x5b, 0x9d, 0xca, 0xc, 0x1a, 0xdc, 0x8b, 0x4d, 0x25, 0xe3, 0xb4, 0x72, + 0x98, 0x5e, 0x9, 0xcf, 0xa7, 0x61, 0x36, 0xf0, 0xe6, 0x20, 0x77, 0xb1, 0xd9, 0x1f, 0x48, 0x8e, + 0x81, 0x47, 0x10, 0xd6, 0xbe, 0x78, 0x2f, 0xe9, 0xff, 0x39, 0x6e, 0xa8, 0xc0, 0x6, 0x51, 0x97, + 0x7d, 0xbb, 0xec, 0x2a, 0x42, 0x84, 0xd3, 0x15, 0x3, 0xc5, 0x92, 0x54, 0x3c, 0xfa, 0xad, 0x6b, + ], + [ + 0x0, 0xc7, 0x93, 0x54, 0x3b, 0xfc, 0xa8, 0x6f, 0x76, 0xb1, 0xe5, 0x22, 0x4d, 0x8a, 0xde, 0x19, + 0xec, 0x2b, 0x7f, 0xb8, 0xd7, 0x10, 0x44, 0x83, 0x9a, 0x5d, 0x9, 0xce, 0xa1, 0x66, 0x32, 0xf5, + 0xc5, 0x2, 0x56, 0x91, 0xfe, 0x39, 0x6d, 0xaa, 0xb3, 0x74, 0x20, 0xe7, 0x88, 0x4f, 0x1b, 0xdc, + 0x29, 0xee, 0xba, 0x7d, 0x12, 0xd5, 0x81, 0x46, 0x5f, 0x98, 0xcc, 0xb, 0x64, 0xa3, 0xf7, 0x30, + 0x97, 0x50, 0x4, 0xc3, 0xac, 0x6b, 0x3f, 0xf8, 0xe1, 0x26, 0x72, 0xb5, 0xda, 0x1d, 0x49, 0x8e, + 0x7b, 0xbc, 0xe8, 0x2f, 0x40, 0x87, 0xd3, 0x14, 0xd, 0xca, 0x9e, 0x59, 0x36, 0xf1, 0xa5, 0x62, + 0x52, 0x95, 0xc1, 0x6, 0x69, 0xae, 0xfa, 0x3d, 0x24, 0xe3, 0xb7, 0x70, 0x1f, 0xd8, 0x8c, 0x4b, + 0xbe, 0x79, 0x2d, 0xea, 0x85, 0x42, 0x16, 0xd1, 0xc8, 0xf, 0x5b, 0x9c, 0xf3, 0x34, 0x60, 0xa7, + 0x33, 0xf4, 0xa0, 0x67, 0x8, 0xcf, 0x9b, 0x5c, 0x45, 0x82, 0xd6, 0x11, 0x7e, 0xb9, 0xed, 0x2a, + 0xdf, 0x18, 0x4c, 0x8b, 0xe4, 0x23, 0x77, 0xb0, 0xa9, 0x6e, 0x3a, 0xfd, 0x92, 0x55, 0x1, 0xc6, + 0xf6, 0x31, 0x65, 0xa2, 0xcd, 0xa, 0x5e, 0x99, 0x80, 0x47, 0x13, 0xd4, 0xbb, 0x7c, 0x28, 0xef, + 0x1a, 0xdd, 0x89, 0x4e, 0x21, 0xe6, 0xb2, 0x75, 0x6c, 0xab, 0xff, 0x38, 0x57, 0x90, 0xc4, 0x3, + 0xa4, 0x63, 0x37, 0xf0, 0x9f, 0x58, 0xc, 0xcb, 0xd2, 0x15, 0x41, 0x86, 0xe9, 0x2e, 0x7a, 0xbd, + 0x48, 0x8f, 0xdb, 0x1c, 0x73, 0xb4, 0xe0, 0x27, 0x3e, 0xf9, 0xad, 0x6a, 0x5, 0xc2, 0x96, 0x51, + 0x61, 0xa6, 0xf2, 0x35, 0x5a, 0x9d, 0xc9, 0xe, 0x17, 0xd0, 0x84, 0x43, 0x2c, 0xeb, 0xbf, 0x78, + 0x8d, 0x4a, 0x1e, 0xd9, 0xb6, 0x71, 0x25, 0xe2, 0xfb, 0x3c, 0x68, 0xaf, 0xc0, 0x7, 0x53, 0x94, + ], + [ + 0x0, 0xc8, 0x8d, 0x45, 0x7, 0xcf, 0x8a, 0x42, 0xe, 0xc6, 0x83, 0x4b, 0x9, 0xc1, 0x84, 0x4c, + 0x1c, 0xd4, 0x91, 0x59, 0x1b, 0xd3, 0x96, 0x5e, 0x12, 0xda, 0x9f, 0x57, 0x15, 0xdd, 0x98, 0x50, + 0x38, 0xf0, 0xb5, 0x7d, 0x3f, 0xf7, 0xb2, 0x7a, 0x36, 0xfe, 0xbb, 0x73, 0x31, 0xf9, 0xbc, 0x74, + 0x24, 0xec, 0xa9, 0x61, 0x23, 0xeb, 0xae, 0x66, 0x2a, 0xe2, 0xa7, 0x6f, 0x2d, 0xe5, 0xa0, 0x68, + 0x70, 0xb8, 0xfd, 0x35, 0x77, 0xbf, 0xfa, 0x32, 0x7e, 0xb6, 0xf3, 0x3b, 0x79, 0xb1, 0xf4, 0x3c, + 0x6c, 0xa4, 0xe1, 0x29, 0x6b, 0xa3, 0xe6, 0x2e, 0x62, 0xaa, 0xef, 0x27, 0x65, 0xad, 0xe8, 0x20, + 0x48, 0x80, 0xc5, 0xd, 0x4f, 0x87, 0xc2, 0xa, 0x46, 0x8e, 0xcb, 0x3, 0x41, 0x89, 0xcc, 0x4, + 0x54, 0x9c, 0xd9, 0x11, 0x53, 0x9b, 0xde, 0x16, 0x5a, 0x92, 0xd7, 0x1f, 0x5d, 0x95, 0xd0, 0x18, + 0xe0, 0x28, 0x6d, 0xa5, 0xe7, 0x2f, 0x6a, 0xa2, 0xee, 0x26, 0x63, 0xab, 0xe9, 0x21, 0x64, 0xac, + 0xfc, 0x34, 0x71, 0xb9, 0xfb, 0x33, 0x76, 0xbe, 0xf2, 0x3a, 0x7f, 0xb7, 0xf5, 0x3d, 0x78, 0xb0, + 0xd8, 0x10, 0x55, 0x9d, 0xdf, 0x17, 0x52, 0x9a, 0xd6, 0x1e, 0x5b, 0x93, 0xd1, 0x19, 0x5c, 0x94, + 0xc4, 0xc, 0x49, 0x81, 0xc3, 0xb, 0x4e, 0x86, 0xca, 0x2, 0x47, 0x8f, 0xcd, 0x5, 0x40, 0x88, + 0x90, 0x58, 0x1d, 0xd5, 0x97, 0x5f, 0x1a, 0xd2, 0x9e, 0x56, 0x13, 0xdb, 0x99, 0x51, 0x14, 0xdc, + 0x8c, 0x44, 0x1, 0xc9, 0x8b, 0x43, 0x6, 0xce, 0x82, 0x4a, 0xf, 0xc7, 0x85, 0x4d, 0x8, 0xc0, + 0xa8, 0x60, 0x25, 0xed, 0xaf, 0x67, 0x22, 0xea, 0xa6, 0x6e, 0x2b, 0xe3, 0xa1, 0x69, 0x2c, 0xe4, + 0xb4, 0x7c, 0x39, 0xf1, 0xb3, 0x7b, 0x3e, 0xf6, 0xba, 0x72, 0x37, 0xff, 0xbd, 0x75, 0x30, 0xf8, + ], + [ + 0x0, 0xc9, 0x8f, 0x46, 0x3, 0xca, 0x8c, 0x45, 0x6, 0xcf, 0x89, 0x40, 0x5, 0xcc, 0x8a, 0x43, 0xc, + 0xc5, 0x83, 0x4a, 0xf, 0xc6, 0x80, 0x49, 0xa, 0xc3, 0x85, 0x4c, 0x9, 0xc0, 0x86, 0x4f, 0x18, + 0xd1, 0x97, 0x5e, 0x1b, 0xd2, 0x94, 0x5d, 0x1e, 0xd7, 0x91, 0x58, 0x1d, 0xd4, 0x92, 0x5b, 0x14, + 0xdd, 0x9b, 0x52, 0x17, 0xde, 0x98, 0x51, 0x12, 0xdb, 0x9d, 0x54, 0x11, 0xd8, 0x9e, 0x57, 0x30, + 0xf9, 0xbf, 0x76, 0x33, 0xfa, 0xbc, 0x75, 0x36, 0xff, 0xb9, 0x70, 0x35, 0xfc, 0xba, 0x73, 0x3c, + 0xf5, 0xb3, 0x7a, 0x3f, 0xf6, 0xb0, 0x79, 0x3a, 0xf3, 0xb5, 0x7c, 0x39, 0xf0, 0xb6, 0x7f, 0x28, + 0xe1, 0xa7, 0x6e, 0x2b, 0xe2, 0xa4, 0x6d, 0x2e, 0xe7, 0xa1, 0x68, 0x2d, 0xe4, 0xa2, 0x6b, 0x24, + 0xed, 0xab, 0x62, 0x27, 0xee, 0xa8, 0x61, 0x22, 0xeb, 0xad, 0x64, 0x21, 0xe8, 0xae, 0x67, 0x60, + 0xa9, 0xef, 0x26, 0x63, 0xaa, 0xec, 0x25, 0x66, 0xaf, 0xe9, 0x20, 0x65, 0xac, 0xea, 0x23, 0x6c, + 0xa5, 0xe3, 0x2a, 0x6f, 0xa6, 0xe0, 0x29, 0x6a, 0xa3, 0xe5, 0x2c, 0x69, 0xa0, 0xe6, 0x2f, 0x78, + 0xb1, 0xf7, 0x3e, 0x7b, 0xb2, 0xf4, 0x3d, 0x7e, 0xb7, 0xf1, 0x38, 0x7d, 0xb4, 0xf2, 0x3b, 0x74, + 0xbd, 0xfb, 0x32, 0x77, 0xbe, 0xf8, 0x31, 0x72, 0xbb, 0xfd, 0x34, 0x71, 0xb8, 0xfe, 0x37, 0x50, + 0x99, 0xdf, 0x16, 0x53, 0x9a, 0xdc, 0x15, 0x56, 0x9f, 0xd9, 0x10, 0x55, 0x9c, 0xda, 0x13, 0x5c, + 0x95, 0xd3, 0x1a, 0x5f, 0x96, 0xd0, 0x19, 0x5a, 0x93, 0xd5, 0x1c, 0x59, 0x90, 0xd6, 0x1f, 0x48, + 0x81, 0xc7, 0xe, 0x4b, 0x82, 0xc4, 0xd, 0x4e, 0x87, 0xc1, 0x8, 0x4d, 0x84, 0xc2, 0xb, 0x44, + 0x8d, 0xcb, 0x2, 0x47, 0x8e, 0xc8, 0x1, 0x42, 0x8b, 0xcd, 0x4, 0x41, 0x88, 0xce, 0x7, + ], + [ + 0x0, 0xca, 0x89, 0x43, 0xf, 0xc5, 0x86, 0x4c, 0x1e, 0xd4, 0x97, 0x5d, 0x11, 0xdb, 0x98, 0x52, + 0x3c, 0xf6, 0xb5, 0x7f, 0x33, 0xf9, 0xba, 0x70, 0x22, 0xe8, 0xab, 0x61, 0x2d, 0xe7, 0xa4, 0x6e, + 0x78, 0xb2, 0xf1, 0x3b, 0x77, 0xbd, 0xfe, 0x34, 0x66, 0xac, 0xef, 0x25, 0x69, 0xa3, 0xe0, 0x2a, + 0x44, 0x8e, 0xcd, 0x7, 0x4b, 0x81, 0xc2, 0x8, 0x5a, 0x90, 0xd3, 0x19, 0x55, 0x9f, 0xdc, 0x16, + 0xf0, 0x3a, 0x79, 0xb3, 0xff, 0x35, 0x76, 0xbc, 0xee, 0x24, 0x67, 0xad, 0xe1, 0x2b, 0x68, 0xa2, + 0xcc, 0x6, 0x45, 0x8f, 0xc3, 0x9, 0x4a, 0x80, 0xd2, 0x18, 0x5b, 0x91, 0xdd, 0x17, 0x54, 0x9e, + 0x88, 0x42, 0x1, 0xcb, 0x87, 0x4d, 0xe, 0xc4, 0x96, 0x5c, 0x1f, 0xd5, 0x99, 0x53, 0x10, 0xda, + 0xb4, 0x7e, 0x3d, 0xf7, 0xbb, 0x71, 0x32, 0xf8, 0xaa, 0x60, 0x23, 0xe9, 0xa5, 0x6f, 0x2c, 0xe6, + 0xfd, 0x37, 0x74, 0xbe, 0xf2, 0x38, 0x7b, 0xb1, 0xe3, 0x29, 0x6a, 0xa0, 0xec, 0x26, 0x65, 0xaf, + 0xc1, 0xb, 0x48, 0x82, 0xce, 0x4, 0x47, 0x8d, 0xdf, 0x15, 0x56, 0x9c, 0xd0, 0x1a, 0x59, 0x93, + 0x85, 0x4f, 0xc, 0xc6, 0x8a, 0x40, 0x3, 0xc9, 0x9b, 0x51, 0x12, 0xd8, 0x94, 0x5e, 0x1d, 0xd7, + 0xb9, 0x73, 0x30, 0xfa, 0xb6, 0x7c, 0x3f, 0xf5, 0xa7, 0x6d, 0x2e, 0xe4, 0xa8, 0x62, 0x21, 0xeb, + 0xd, 0xc7, 0x84, 0x4e, 0x2, 0xc8, 0x8b, 0x41, 0x13, 0xd9, 0x9a, 0x50, 0x1c, 0xd6, 0x95, 0x5f, + 0x31, 0xfb, 0xb8, 0x72, 0x3e, 0xf4, 0xb7, 0x7d, 0x2f, 0xe5, 0xa6, 0x6c, 0x20, 0xea, 0xa9, 0x63, + 0x75, 0xbf, 0xfc, 0x36, 0x7a, 0xb0, 0xf3, 0x39, 0x6b, 0xa1, 0xe2, 0x28, 0x64, 0xae, 0xed, 0x27, + 0x49, 0x83, 0xc0, 0xa, 0x46, 0x8c, 0xcf, 0x5, 0x57, 0x9d, 0xde, 0x14, 0x58, 0x92, 0xd1, 0x1b, + ], + [ + 0x0, 0xcb, 0x8b, 0x40, 0xb, 0xc0, 0x80, 0x4b, 0x16, 0xdd, 0x9d, 0x56, 0x1d, 0xd6, 0x96, 0x5d, + 0x2c, 0xe7, 0xa7, 0x6c, 0x27, 0xec, 0xac, 0x67, 0x3a, 0xf1, 0xb1, 0x7a, 0x31, 0xfa, 0xba, 0x71, + 0x58, 0x93, 0xd3, 0x18, 0x53, 0x98, 0xd8, 0x13, 0x4e, 0x85, 0xc5, 0xe, 0x45, 0x8e, 0xce, 0x5, + 0x74, 0xbf, 0xff, 0x34, 0x7f, 0xb4, 0xf4, 0x3f, 0x62, 0xa9, 0xe9, 0x22, 0x69, 0xa2, 0xe2, 0x29, + 0xb0, 0x7b, 0x3b, 0xf0, 0xbb, 0x70, 0x30, 0xfb, 0xa6, 0x6d, 0x2d, 0xe6, 0xad, 0x66, 0x26, 0xed, + 0x9c, 0x57, 0x17, 0xdc, 0x97, 0x5c, 0x1c, 0xd7, 0x8a, 0x41, 0x1, 0xca, 0x81, 0x4a, 0xa, 0xc1, + 0xe8, 0x23, 0x63, 0xa8, 0xe3, 0x28, 0x68, 0xa3, 0xfe, 0x35, 0x75, 0xbe, 0xf5, 0x3e, 0x7e, 0xb5, + 0xc4, 0xf, 0x4f, 0x84, 0xcf, 0x4, 0x44, 0x8f, 0xd2, 0x19, 0x59, 0x92, 0xd9, 0x12, 0x52, 0x99, + 0x7d, 0xb6, 0xf6, 0x3d, 0x76, 0xbd, 0xfd, 0x36, 0x6b, 0xa0, 0xe0, 0x2b, 0x60, 0xab, 0xeb, 0x20, + 0x51, 0x9a, 0xda, 0x11, 0x5a, 0x91, 0xd1, 0x1a, 0x47, 0x8c, 0xcc, 0x7, 0x4c, 0x87, 0xc7, 0xc, + 0x25, 0xee, 0xae, 0x65, 0x2e, 0xe5, 0xa5, 0x6e, 0x33, 0xf8, 0xb8, 0x73, 0x38, 0xf3, 0xb3, 0x78, + 0x9, 0xc2, 0x82, 0x49, 0x2, 0xc9, 0x89, 0x42, 0x1f, 0xd4, 0x94, 0x5f, 0x14, 0xdf, 0x9f, 0x54, + 0xcd, 0x6, 0x46, 0x8d, 0xc6, 0xd, 0x4d, 0x86, 0xdb, 0x10, 0x50, 0x9b, 0xd0, 0x1b, 0x5b, 0x90, + 0xe1, 0x2a, 0x6a, 0xa1, 0xea, 0x21, 0x61, 0xaa, 0xf7, 0x3c, 0x7c, 0xb7, 0xfc, 0x37, 0x77, 0xbc, + 0x95, 0x5e, 0x1e, 0xd5, 0x9e, 0x55, 0x15, 0xde, 0x83, 0x48, 0x8, 0xc3, 0x88, 0x43, 0x3, 0xc8, + 0xb9, 0x72, 0x32, 0xf9, 0xb2, 0x79, 0x39, 0xf2, 0xaf, 0x64, 0x24, 0xef, 0xa4, 0x6f, 0x2f, 0xe4, + ], + [ + 0x0, 0xcc, 0x85, 0x49, 0x17, 0xdb, 0x92, 0x5e, 0x2e, 0xe2, 0xab, 0x67, 0x39, 0xf5, 0xbc, 0x70, + 0x5c, 0x90, 0xd9, 0x15, 0x4b, 0x87, 0xce, 0x2, 0x72, 0xbe, 0xf7, 0x3b, 0x65, 0xa9, 0xe0, 0x2c, + 0xb8, 0x74, 0x3d, 0xf1, 0xaf, 0x63, 0x2a, 0xe6, 0x96, 0x5a, 0x13, 0xdf, 0x81, 0x4d, 0x4, 0xc8, + 0xe4, 0x28, 0x61, 0xad, 0xf3, 0x3f, 0x76, 0xba, 0xca, 0x6, 0x4f, 0x83, 0xdd, 0x11, 0x58, 0x94, + 0x6d, 0xa1, 0xe8, 0x24, 0x7a, 0xb6, 0xff, 0x33, 0x43, 0x8f, 0xc6, 0xa, 0x54, 0x98, 0xd1, 0x1d, + 0x31, 0xfd, 0xb4, 0x78, 0x26, 0xea, 0xa3, 0x6f, 0x1f, 0xd3, 0x9a, 0x56, 0x8, 0xc4, 0x8d, 0x41, + 0xd5, 0x19, 0x50, 0x9c, 0xc2, 0xe, 0x47, 0x8b, 0xfb, 0x37, 0x7e, 0xb2, 0xec, 0x20, 0x69, 0xa5, + 0x89, 0x45, 0xc, 0xc0, 0x9e, 0x52, 0x1b, 0xd7, 0xa7, 0x6b, 0x22, 0xee, 0xb0, 0x7c, 0x35, 0xf9, + 0xda, 0x16, 0x5f, 0x93, 0xcd, 0x1, 0x48, 0x84, 0xf4, 0x38, 0x71, 0xbd, 0xe3, 0x2f, 0x66, 0xaa, + 0x86, 0x4a, 0x3, 0xcf, 0x91, 0x5d, 0x14, 0xd8, 0xa8, 0x64, 0x2d, 0xe1, 0xbf, 0x73, 0x3a, 0xf6, + 0x62, 0xae, 0xe7, 0x2b, 0x75, 0xb9, 0xf0, 0x3c, 0x4c, 0x80, 0xc9, 0x5, 0x5b, 0x97, 0xde, 0x12, + 0x3e, 0xf2, 0xbb, 0x77, 0x29, 0xe5, 0xac, 0x60, 0x10, 0xdc, 0x95, 0x59, 0x7, 0xcb, 0x82, 0x4e, + 0xb7, 0x7b, 0x32, 0xfe, 0xa0, 0x6c, 0x25, 0xe9, 0x99, 0x55, 0x1c, 0xd0, 0x8e, 0x42, 0xb, 0xc7, + 0xeb, 0x27, 0x6e, 0xa2, 0xfc, 0x30, 0x79, 0xb5, 0xc5, 0x9, 0x40, 0x8c, 0xd2, 0x1e, 0x57, 0x9b, + 0xf, 0xc3, 0x8a, 0x46, 0x18, 0xd4, 0x9d, 0x51, 0x21, 0xed, 0xa4, 0x68, 0x36, 0xfa, 0xb3, 0x7f, + 0x53, 0x9f, 0xd6, 0x1a, 0x44, 0x88, 0xc1, 0xd, 0x7d, 0xb1, 0xf8, 0x34, 0x6a, 0xa6, 0xef, 0x23, + ], + [ + 0x0, 0xcd, 0x87, 0x4a, 0x13, 0xde, 0x94, 0x59, 0x26, 0xeb, 0xa1, 0x6c, 0x35, 0xf8, 0xb2, 0x7f, + 0x4c, 0x81, 0xcb, 0x6, 0x5f, 0x92, 0xd8, 0x15, 0x6a, 0xa7, 0xed, 0x20, 0x79, 0xb4, 0xfe, 0x33, + 0x98, 0x55, 0x1f, 0xd2, 0x8b, 0x46, 0xc, 0xc1, 0xbe, 0x73, 0x39, 0xf4, 0xad, 0x60, 0x2a, 0xe7, + 0xd4, 0x19, 0x53, 0x9e, 0xc7, 0xa, 0x40, 0x8d, 0xf2, 0x3f, 0x75, 0xb8, 0xe1, 0x2c, 0x66, 0xab, + 0x2d, 0xe0, 0xaa, 0x67, 0x3e, 0xf3, 0xb9, 0x74, 0xb, 0xc6, 0x8c, 0x41, 0x18, 0xd5, 0x9f, 0x52, + 0x61, 0xac, 0xe6, 0x2b, 0x72, 0xbf, 0xf5, 0x38, 0x47, 0x8a, 0xc0, 0xd, 0x54, 0x99, 0xd3, 0x1e, + 0xb5, 0x78, 0x32, 0xff, 0xa6, 0x6b, 0x21, 0xec, 0x93, 0x5e, 0x14, 0xd9, 0x80, 0x4d, 0x7, 0xca, + 0xf9, 0x34, 0x7e, 0xb3, 0xea, 0x27, 0x6d, 0xa0, 0xdf, 0x12, 0x58, 0x95, 0xcc, 0x1, 0x4b, 0x86, + 0x5a, 0x97, 0xdd, 0x10, 0x49, 0x84, 0xce, 0x3, 0x7c, 0xb1, 0xfb, 0x36, 0x6f, 0xa2, 0xe8, 0x25, + 0x16, 0xdb, 0x91, 0x5c, 0x5, 0xc8, 0x82, 0x4f, 0x30, 0xfd, 0xb7, 0x7a, 0x23, 0xee, 0xa4, 0x69, + 0xc2, 0xf, 0x45, 0x88, 0xd1, 0x1c, 0x56, 0x9b, 0xe4, 0x29, 0x63, 0xae, 0xf7, 0x3a, 0x70, 0xbd, + 0x8e, 0x43, 0x9, 0xc4, 0x9d, 0x50, 0x1a, 0xd7, 0xa8, 0x65, 0x2f, 0xe2, 0xbb, 0x76, 0x3c, 0xf1, + 0x77, 0xba, 0xf0, 0x3d, 0x64, 0xa9, 0xe3, 0x2e, 0x51, 0x9c, 0xd6, 0x1b, 0x42, 0x8f, 0xc5, 0x8, + 0x3b, 0xf6, 0xbc, 0x71, 0x28, 0xe5, 0xaf, 0x62, 0x1d, 0xd0, 0x9a, 0x57, 0xe, 0xc3, 0x89, 0x44, + 0xef, 0x22, 0x68, 0xa5, 0xfc, 0x31, 0x7b, 0xb6, 0xc9, 0x4, 0x4e, 0x83, 0xda, 0x17, 0x5d, 0x90, + 0xa3, 0x6e, 0x24, 0xe9, 0xb0, 0x7d, 0x37, 0xfa, 0x85, 0x48, 0x2, 0xcf, 0x96, 0x5b, 0x11, 0xdc, + ], + [ + 0x0, 0xce, 0x81, 0x4f, 0x1f, 0xd1, 0x9e, 0x50, 0x3e, 0xf0, 0xbf, 0x71, 0x21, 0xef, 0xa0, 0x6e, + 0x7c, 0xb2, 0xfd, 0x33, 0x63, 0xad, 0xe2, 0x2c, 0x42, 0x8c, 0xc3, 0xd, 0x5d, 0x93, 0xdc, 0x12, + 0xf8, 0x36, 0x79, 0xb7, 0xe7, 0x29, 0x66, 0xa8, 0xc6, 0x8, 0x47, 0x89, 0xd9, 0x17, 0x58, 0x96, + 0x84, 0x4a, 0x5, 0xcb, 0x9b, 0x55, 0x1a, 0xd4, 0xba, 0x74, 0x3b, 0xf5, 0xa5, 0x6b, 0x24, 0xea, + 0xed, 0x23, 0x6c, 0xa2, 0xf2, 0x3c, 0x73, 0xbd, 0xd3, 0x1d, 0x52, 0x9c, 0xcc, 0x2, 0x4d, 0x83, + 0x91, 0x5f, 0x10, 0xde, 0x8e, 0x40, 0xf, 0xc1, 0xaf, 0x61, 0x2e, 0xe0, 0xb0, 0x7e, 0x31, 0xff, + 0x15, 0xdb, 0x94, 0x5a, 0xa, 0xc4, 0x8b, 0x45, 0x2b, 0xe5, 0xaa, 0x64, 0x34, 0xfa, 0xb5, 0x7b, + 0x69, 0xa7, 0xe8, 0x26, 0x76, 0xb8, 0xf7, 0x39, 0x57, 0x99, 0xd6, 0x18, 0x48, 0x86, 0xc9, 0x7, + 0xc7, 0x9, 0x46, 0x88, 0xd8, 0x16, 0x59, 0x97, 0xf9, 0x37, 0x78, 0xb6, 0xe6, 0x28, 0x67, 0xa9, + 0xbb, 0x75, 0x3a, 0xf4, 0xa4, 0x6a, 0x25, 0xeb, 0x85, 0x4b, 0x4, 0xca, 0x9a, 0x54, 0x1b, 0xd5, + 0x3f, 0xf1, 0xbe, 0x70, 0x20, 0xee, 0xa1, 0x6f, 0x1, 0xcf, 0x80, 0x4e, 0x1e, 0xd0, 0x9f, 0x51, + 0x43, 0x8d, 0xc2, 0xc, 0x5c, 0x92, 0xdd, 0x13, 0x7d, 0xb3, 0xfc, 0x32, 0x62, 0xac, 0xe3, 0x2d, + 0x2a, 0xe4, 0xab, 0x65, 0x35, 0xfb, 0xb4, 0x7a, 0x14, 0xda, 0x95, 0x5b, 0xb, 0xc5, 0x8a, 0x44, + 0x56, 0x98, 0xd7, 0x19, 0x49, 0x87, 0xc8, 0x6, 0x68, 0xa6, 0xe9, 0x27, 0x77, 0xb9, 0xf6, 0x38, + 0xd2, 0x1c, 0x53, 0x9d, 0xcd, 0x3, 0x4c, 0x82, 0xec, 0x22, 0x6d, 0xa3, 0xf3, 0x3d, 0x72, 0xbc, + 0xae, 0x60, 0x2f, 0xe1, 0xb1, 0x7f, 0x30, 0xfe, 0x90, 0x5e, 0x11, 0xdf, 0x8f, 0x41, 0xe, 0xc0, + ], + [ + 0x0, 0xcf, 0x83, 0x4c, 0x1b, 0xd4, 0x98, 0x57, 0x36, 0xf9, 0xb5, 0x7a, 0x2d, 0xe2, 0xae, 0x61, + 0x6c, 0xa3, 0xef, 0x20, 0x77, 0xb8, 0xf4, 0x3b, 0x5a, 0x95, 0xd9, 0x16, 0x41, 0x8e, 0xc2, 0xd, + 0xd8, 0x17, 0x5b, 0x94, 0xc3, 0xc, 0x40, 0x8f, 0xee, 0x21, 0x6d, 0xa2, 0xf5, 0x3a, 0x76, 0xb9, + 0xb4, 0x7b, 0x37, 0xf8, 0xaf, 0x60, 0x2c, 0xe3, 0x82, 0x4d, 0x1, 0xce, 0x99, 0x56, 0x1a, 0xd5, + 0xad, 0x62, 0x2e, 0xe1, 0xb6, 0x79, 0x35, 0xfa, 0x9b, 0x54, 0x18, 0xd7, 0x80, 0x4f, 0x3, 0xcc, + 0xc1, 0xe, 0x42, 0x8d, 0xda, 0x15, 0x59, 0x96, 0xf7, 0x38, 0x74, 0xbb, 0xec, 0x23, 0x6f, 0xa0, + 0x75, 0xba, 0xf6, 0x39, 0x6e, 0xa1, 0xed, 0x22, 0x43, 0x8c, 0xc0, 0xf, 0x58, 0x97, 0xdb, 0x14, + 0x19, 0xd6, 0x9a, 0x55, 0x2, 0xcd, 0x81, 0x4e, 0x2f, 0xe0, 0xac, 0x63, 0x34, 0xfb, 0xb7, 0x78, + 0x47, 0x88, 0xc4, 0xb, 0x5c, 0x93, 0xdf, 0x10, 0x71, 0xbe, 0xf2, 0x3d, 0x6a, 0xa5, 0xe9, 0x26, + 0x2b, 0xe4, 0xa8, 0x67, 0x30, 0xff, 0xb3, 0x7c, 0x1d, 0xd2, 0x9e, 0x51, 0x6, 0xc9, 0x85, 0x4a, + 0x9f, 0x50, 0x1c, 0xd3, 0x84, 0x4b, 0x7, 0xc8, 0xa9, 0x66, 0x2a, 0xe5, 0xb2, 0x7d, 0x31, 0xfe, + 0xf3, 0x3c, 0x70, 0xbf, 0xe8, 0x27, 0x6b, 0xa4, 0xc5, 0xa, 0x46, 0x89, 0xde, 0x11, 0x5d, 0x92, + 0xea, 0x25, 0x69, 0xa6, 0xf1, 0x3e, 0x72, 0xbd, 0xdc, 0x13, 0x5f, 0x90, 0xc7, 0x8, 0x44, 0x8b, + 0x86, 0x49, 0x5, 0xca, 0x9d, 0x52, 0x1e, 0xd1, 0xb0, 0x7f, 0x33, 0xfc, 0xab, 0x64, 0x28, 0xe7, + 0x32, 0xfd, 0xb1, 0x7e, 0x29, 0xe6, 0xaa, 0x65, 0x4, 0xcb, 0x87, 0x48, 0x1f, 0xd0, 0x9c, 0x53, + 0x5e, 0x91, 0xdd, 0x12, 0x45, 0x8a, 0xc6, 0x9, 0x68, 0xa7, 0xeb, 0x24, 0x73, 0xbc, 0xf0, 0x3f, + ], + [ + 0x0, 0xd0, 0xbd, 0x6d, 0x67, 0xb7, 0xda, 0xa, 0xce, 0x1e, 0x73, 0xa3, 0xa9, 0x79, 0x14, 0xc4, + 0x81, 0x51, 0x3c, 0xec, 0xe6, 0x36, 0x5b, 0x8b, 0x4f, 0x9f, 0xf2, 0x22, 0x28, 0xf8, 0x95, 0x45, + 0x1f, 0xcf, 0xa2, 0x72, 0x78, 0xa8, 0xc5, 0x15, 0xd1, 0x1, 0x6c, 0xbc, 0xb6, 0x66, 0xb, 0xdb, + 0x9e, 0x4e, 0x23, 0xf3, 0xf9, 0x29, 0x44, 0x94, 0x50, 0x80, 0xed, 0x3d, 0x37, 0xe7, 0x8a, 0x5a, + 0x3e, 0xee, 0x83, 0x53, 0x59, 0x89, 0xe4, 0x34, 0xf0, 0x20, 0x4d, 0x9d, 0x97, 0x47, 0x2a, 0xfa, + 0xbf, 0x6f, 0x2, 0xd2, 0xd8, 0x8, 0x65, 0xb5, 0x71, 0xa1, 0xcc, 0x1c, 0x16, 0xc6, 0xab, 0x7b, + 0x21, 0xf1, 0x9c, 0x4c, 0x46, 0x96, 0xfb, 0x2b, 0xef, 0x3f, 0x52, 0x82, 0x88, 0x58, 0x35, 0xe5, + 0xa0, 0x70, 0x1d, 0xcd, 0xc7, 0x17, 0x7a, 0xaa, 0x6e, 0xbe, 0xd3, 0x3, 0x9, 0xd9, 0xb4, 0x64, + 0x7c, 0xac, 0xc1, 0x11, 0x1b, 0xcb, 0xa6, 0x76, 0xb2, 0x62, 0xf, 0xdf, 0xd5, 0x5, 0x68, 0xb8, + 0xfd, 0x2d, 0x40, 0x90, 0x9a, 0x4a, 0x27, 0xf7, 0x33, 0xe3, 0x8e, 0x5e, 0x54, 0x84, 0xe9, 0x39, + 0x63, 0xb3, 0xde, 0xe, 0x4, 0xd4, 0xb9, 0x69, 0xad, 0x7d, 0x10, 0xc0, 0xca, 0x1a, 0x77, 0xa7, + 0xe2, 0x32, 0x5f, 0x8f, 0x85, 0x55, 0x38, 0xe8, 0x2c, 0xfc, 0x91, 0x41, 0x4b, 0x9b, 0xf6, 0x26, + 0x42, 0x92, 0xff, 0x2f, 0x25, 0xf5, 0x98, 0x48, 0x8c, 0x5c, 0x31, 0xe1, 0xeb, 0x3b, 0x56, 0x86, + 0xc3, 0x13, 0x7e, 0xae, 0xa4, 0x74, 0x19, 0xc9, 0xd, 0xdd, 0xb0, 0x60, 0x6a, 0xba, 0xd7, 0x7, + 0x5d, 0x8d, 0xe0, 0x30, 0x3a, 0xea, 0x87, 0x57, 0x93, 0x43, 0x2e, 0xfe, 0xf4, 0x24, 0x49, 0x99, + 0xdc, 0xc, 0x61, 0xb1, 0xbb, 0x6b, 0x6, 0xd6, 0x12, 0xc2, 0xaf, 0x7f, 0x75, 0xa5, 0xc8, 0x18, + ], + [ + 0x0, 0xd1, 0xbf, 0x6e, 0x63, 0xb2, 0xdc, 0xd, 0xc6, 0x17, 0x79, 0xa8, 0xa5, 0x74, 0x1a, 0xcb, + 0x91, 0x40, 0x2e, 0xff, 0xf2, 0x23, 0x4d, 0x9c, 0x57, 0x86, 0xe8, 0x39, 0x34, 0xe5, 0x8b, 0x5a, + 0x3f, 0xee, 0x80, 0x51, 0x5c, 0x8d, 0xe3, 0x32, 0xf9, 0x28, 0x46, 0x97, 0x9a, 0x4b, 0x25, 0xf4, + 0xae, 0x7f, 0x11, 0xc0, 0xcd, 0x1c, 0x72, 0xa3, 0x68, 0xb9, 0xd7, 0x6, 0xb, 0xda, 0xb4, 0x65, + 0x7e, 0xaf, 0xc1, 0x10, 0x1d, 0xcc, 0xa2, 0x73, 0xb8, 0x69, 0x7, 0xd6, 0xdb, 0xa, 0x64, 0xb5, + 0xef, 0x3e, 0x50, 0x81, 0x8c, 0x5d, 0x33, 0xe2, 0x29, 0xf8, 0x96, 0x47, 0x4a, 0x9b, 0xf5, 0x24, + 0x41, 0x90, 0xfe, 0x2f, 0x22, 0xf3, 0x9d, 0x4c, 0x87, 0x56, 0x38, 0xe9, 0xe4, 0x35, 0x5b, 0x8a, + 0xd0, 0x1, 0x6f, 0xbe, 0xb3, 0x62, 0xc, 0xdd, 0x16, 0xc7, 0xa9, 0x78, 0x75, 0xa4, 0xca, 0x1b, + 0xfc, 0x2d, 0x43, 0x92, 0x9f, 0x4e, 0x20, 0xf1, 0x3a, 0xeb, 0x85, 0x54, 0x59, 0x88, 0xe6, 0x37, + 0x6d, 0xbc, 0xd2, 0x3, 0xe, 0xdf, 0xb1, 0x60, 0xab, 0x7a, 0x14, 0xc5, 0xc8, 0x19, 0x77, 0xa6, + 0xc3, 0x12, 0x7c, 0xad, 0xa0, 0x71, 0x1f, 0xce, 0x5, 0xd4, 0xba, 0x6b, 0x66, 0xb7, 0xd9, 0x8, + 0x52, 0x83, 0xed, 0x3c, 0x31, 0xe0, 0x8e, 0x5f, 0x94, 0x45, 0x2b, 0xfa, 0xf7, 0x26, 0x48, 0x99, + 0x82, 0x53, 0x3d, 0xec, 0xe1, 0x30, 0x5e, 0x8f, 0x44, 0x95, 0xfb, 0x2a, 0x27, 0xf6, 0x98, 0x49, + 0x13, 0xc2, 0xac, 0x7d, 0x70, 0xa1, 0xcf, 0x1e, 0xd5, 0x4, 0x6a, 0xbb, 0xb6, 0x67, 0x9, 0xd8, + 0xbd, 0x6c, 0x2, 0xd3, 0xde, 0xf, 0x61, 0xb0, 0x7b, 0xaa, 0xc4, 0x15, 0x18, 0xc9, 0xa7, 0x76, + 0x2c, 0xfd, 0x93, 0x42, 0x4f, 0x9e, 0xf0, 0x21, 0xea, 0x3b, 0x55, 0x84, 0x89, 0x58, 0x36, 0xe7, + ], + [ + 0x0, 0xd2, 0xb9, 0x6b, 0x6f, 0xbd, 0xd6, 0x4, 0xde, 0xc, 0x67, 0xb5, 0xb1, 0x63, 0x8, 0xda, + 0xa1, 0x73, 0x18, 0xca, 0xce, 0x1c, 0x77, 0xa5, 0x7f, 0xad, 0xc6, 0x14, 0x10, 0xc2, 0xa9, 0x7b, + 0x5f, 0x8d, 0xe6, 0x34, 0x30, 0xe2, 0x89, 0x5b, 0x81, 0x53, 0x38, 0xea, 0xee, 0x3c, 0x57, 0x85, + 0xfe, 0x2c, 0x47, 0x95, 0x91, 0x43, 0x28, 0xfa, 0x20, 0xf2, 0x99, 0x4b, 0x4f, 0x9d, 0xf6, 0x24, + 0xbe, 0x6c, 0x7, 0xd5, 0xd1, 0x3, 0x68, 0xba, 0x60, 0xb2, 0xd9, 0xb, 0xf, 0xdd, 0xb6, 0x64, + 0x1f, 0xcd, 0xa6, 0x74, 0x70, 0xa2, 0xc9, 0x1b, 0xc1, 0x13, 0x78, 0xaa, 0xae, 0x7c, 0x17, 0xc5, + 0xe1, 0x33, 0x58, 0x8a, 0x8e, 0x5c, 0x37, 0xe5, 0x3f, 0xed, 0x86, 0x54, 0x50, 0x82, 0xe9, 0x3b, + 0x40, 0x92, 0xf9, 0x2b, 0x2f, 0xfd, 0x96, 0x44, 0x9e, 0x4c, 0x27, 0xf5, 0xf1, 0x23, 0x48, 0x9a, + 0x61, 0xb3, 0xd8, 0xa, 0xe, 0xdc, 0xb7, 0x65, 0xbf, 0x6d, 0x6, 0xd4, 0xd0, 0x2, 0x69, 0xbb, + 0xc0, 0x12, 0x79, 0xab, 0xaf, 0x7d, 0x16, 0xc4, 0x1e, 0xcc, 0xa7, 0x75, 0x71, 0xa3, 0xc8, 0x1a, + 0x3e, 0xec, 0x87, 0x55, 0x51, 0x83, 0xe8, 0x3a, 0xe0, 0x32, 0x59, 0x8b, 0x8f, 0x5d, 0x36, 0xe4, + 0x9f, 0x4d, 0x26, 0xf4, 0xf0, 0x22, 0x49, 0x9b, 0x41, 0x93, 0xf8, 0x2a, 0x2e, 0xfc, 0x97, 0x45, + 0xdf, 0xd, 0x66, 0xb4, 0xb0, 0x62, 0x9, 0xdb, 0x1, 0xd3, 0xb8, 0x6a, 0x6e, 0xbc, 0xd7, 0x5, + 0x7e, 0xac, 0xc7, 0x15, 0x11, 0xc3, 0xa8, 0x7a, 0xa0, 0x72, 0x19, 0xcb, 0xcf, 0x1d, 0x76, 0xa4, + 0x80, 0x52, 0x39, 0xeb, 0xef, 0x3d, 0x56, 0x84, 0x5e, 0x8c, 0xe7, 0x35, 0x31, 0xe3, 0x88, 0x5a, + 0x21, 0xf3, 0x98, 0x4a, 0x4e, 0x9c, 0xf7, 0x25, 0xff, 0x2d, 0x46, 0x94, 0x90, 0x42, 0x29, 0xfb, + ], + [ + 0x0, 0xd3, 0xbb, 0x68, 0x6b, 0xb8, 0xd0, 0x3, 0xd6, 0x5, 0x6d, 0xbe, 0xbd, 0x6e, 0x6, 0xd5, + 0xb1, 0x62, 0xa, 0xd9, 0xda, 0x9, 0x61, 0xb2, 0x67, 0xb4, 0xdc, 0xf, 0xc, 0xdf, 0xb7, 0x64, + 0x7f, 0xac, 0xc4, 0x17, 0x14, 0xc7, 0xaf, 0x7c, 0xa9, 0x7a, 0x12, 0xc1, 0xc2, 0x11, 0x79, 0xaa, + 0xce, 0x1d, 0x75, 0xa6, 0xa5, 0x76, 0x1e, 0xcd, 0x18, 0xcb, 0xa3, 0x70, 0x73, 0xa0, 0xc8, 0x1b, + 0xfe, 0x2d, 0x45, 0x96, 0x95, 0x46, 0x2e, 0xfd, 0x28, 0xfb, 0x93, 0x40, 0x43, 0x90, 0xf8, 0x2b, + 0x4f, 0x9c, 0xf4, 0x27, 0x24, 0xf7, 0x9f, 0x4c, 0x99, 0x4a, 0x22, 0xf1, 0xf2, 0x21, 0x49, 0x9a, + 0x81, 0x52, 0x3a, 0xe9, 0xea, 0x39, 0x51, 0x82, 0x57, 0x84, 0xec, 0x3f, 0x3c, 0xef, 0x87, 0x54, + 0x30, 0xe3, 0x8b, 0x58, 0x5b, 0x88, 0xe0, 0x33, 0xe6, 0x35, 0x5d, 0x8e, 0x8d, 0x5e, 0x36, 0xe5, + 0xe1, 0x32, 0x5a, 0x89, 0x8a, 0x59, 0x31, 0xe2, 0x37, 0xe4, 0x8c, 0x5f, 0x5c, 0x8f, 0xe7, 0x34, + 0x50, 0x83, 0xeb, 0x38, 0x3b, 0xe8, 0x80, 0x53, 0x86, 0x55, 0x3d, 0xee, 0xed, 0x3e, 0x56, 0x85, + 0x9e, 0x4d, 0x25, 0xf6, 0xf5, 0x26, 0x4e, 0x9d, 0x48, 0x9b, 0xf3, 0x20, 0x23, 0xf0, 0x98, 0x4b, + 0x2f, 0xfc, 0x94, 0x47, 0x44, 0x97, 0xff, 0x2c, 0xf9, 0x2a, 0x42, 0x91, 0x92, 0x41, 0x29, 0xfa, + 0x1f, 0xcc, 0xa4, 0x77, 0x74, 0xa7, 0xcf, 0x1c, 0xc9, 0x1a, 0x72, 0xa1, 0xa2, 0x71, 0x19, 0xca, + 0xae, 0x7d, 0x15, 0xc6, 0xc5, 0x16, 0x7e, 0xad, 0x78, 0xab, 0xc3, 0x10, 0x13, 0xc0, 0xa8, 0x7b, + 0x60, 0xb3, 0xdb, 0x8, 0xb, 0xd8, 0xb0, 0x63, 0xb6, 0x65, 0xd, 0xde, 0xdd, 0xe, 0x66, 0xb5, + 0xd1, 0x2, 0x6a, 0xb9, 0xba, 0x69, 0x1, 0xd2, 0x7, 0xd4, 0xbc, 0x6f, 0x6c, 0xbf, 0xd7, 0x4, + ], + [ + 0x0, 0xd4, 0xb5, 0x61, 0x77, 0xa3, 0xc2, 0x16, 0xee, 0x3a, 0x5b, 0x8f, 0x99, 0x4d, 0x2c, 0xf8, + 0xc1, 0x15, 0x74, 0xa0, 0xb6, 0x62, 0x3, 0xd7, 0x2f, 0xfb, 0x9a, 0x4e, 0x58, 0x8c, 0xed, 0x39, + 0x9f, 0x4b, 0x2a, 0xfe, 0xe8, 0x3c, 0x5d, 0x89, 0x71, 0xa5, 0xc4, 0x10, 0x6, 0xd2, 0xb3, 0x67, + 0x5e, 0x8a, 0xeb, 0x3f, 0x29, 0xfd, 0x9c, 0x48, 0xb0, 0x64, 0x5, 0xd1, 0xc7, 0x13, 0x72, 0xa6, + 0x23, 0xf7, 0x96, 0x42, 0x54, 0x80, 0xe1, 0x35, 0xcd, 0x19, 0x78, 0xac, 0xba, 0x6e, 0xf, 0xdb, + 0xe2, 0x36, 0x57, 0x83, 0x95, 0x41, 0x20, 0xf4, 0xc, 0xd8, 0xb9, 0x6d, 0x7b, 0xaf, 0xce, 0x1a, + 0xbc, 0x68, 0x9, 0xdd, 0xcb, 0x1f, 0x7e, 0xaa, 0x52, 0x86, 0xe7, 0x33, 0x25, 0xf1, 0x90, 0x44, + 0x7d, 0xa9, 0xc8, 0x1c, 0xa, 0xde, 0xbf, 0x6b, 0x93, 0x47, 0x26, 0xf2, 0xe4, 0x30, 0x51, 0x85, + 0x46, 0x92, 0xf3, 0x27, 0x31, 0xe5, 0x84, 0x50, 0xa8, 0x7c, 0x1d, 0xc9, 0xdf, 0xb, 0x6a, 0xbe, + 0x87, 0x53, 0x32, 0xe6, 0xf0, 0x24, 0x45, 0x91, 0x69, 0xbd, 0xdc, 0x8, 0x1e, 0xca, 0xab, 0x7f, + 0xd9, 0xd, 0x6c, 0xb8, 0xae, 0x7a, 0x1b, 0xcf, 0x37, 0xe3, 0x82, 0x56, 0x40, 0x94, 0xf5, 0x21, + 0x18, 0xcc, 0xad, 0x79, 0x6f, 0xbb, 0xda, 0xe, 0xf6, 0x22, 0x43, 0x97, 0x81, 0x55, 0x34, 0xe0, + 0x65, 0xb1, 0xd0, 0x4, 0x12, 0xc6, 0xa7, 0x73, 0x8b, 0x5f, 0x3e, 0xea, 0xfc, 0x28, 0x49, 0x9d, + 0xa4, 0x70, 0x11, 0xc5, 0xd3, 0x7, 0x66, 0xb2, 0x4a, 0x9e, 0xff, 0x2b, 0x3d, 0xe9, 0x88, 0x5c, + 0xfa, 0x2e, 0x4f, 0x9b, 0x8d, 0x59, 0x38, 0xec, 0x14, 0xc0, 0xa1, 0x75, 0x63, 0xb7, 0xd6, 0x2, + 0x3b, 0xef, 0x8e, 0x5a, 0x4c, 0x98, 0xf9, 0x2d, 0xd5, 0x1, 0x60, 0xb4, 0xa2, 0x76, 0x17, 0xc3, + ], + [ + 0x0, 0xd5, 0xb7, 0x62, 0x73, 0xa6, 0xc4, 0x11, 0xe6, 0x33, 0x51, 0x84, 0x95, 0x40, 0x22, 0xf7, + 0xd1, 0x4, 0x66, 0xb3, 0xa2, 0x77, 0x15, 0xc0, 0x37, 0xe2, 0x80, 0x55, 0x44, 0x91, 0xf3, 0x26, + 0xbf, 0x6a, 0x8, 0xdd, 0xcc, 0x19, 0x7b, 0xae, 0x59, 0x8c, 0xee, 0x3b, 0x2a, 0xff, 0x9d, 0x48, + 0x6e, 0xbb, 0xd9, 0xc, 0x1d, 0xc8, 0xaa, 0x7f, 0x88, 0x5d, 0x3f, 0xea, 0xfb, 0x2e, 0x4c, 0x99, + 0x63, 0xb6, 0xd4, 0x1, 0x10, 0xc5, 0xa7, 0x72, 0x85, 0x50, 0x32, 0xe7, 0xf6, 0x23, 0x41, 0x94, + 0xb2, 0x67, 0x5, 0xd0, 0xc1, 0x14, 0x76, 0xa3, 0x54, 0x81, 0xe3, 0x36, 0x27, 0xf2, 0x90, 0x45, + 0xdc, 0x9, 0x6b, 0xbe, 0xaf, 0x7a, 0x18, 0xcd, 0x3a, 0xef, 0x8d, 0x58, 0x49, 0x9c, 0xfe, 0x2b, + 0xd, 0xd8, 0xba, 0x6f, 0x7e, 0xab, 0xc9, 0x1c, 0xeb, 0x3e, 0x5c, 0x89, 0x98, 0x4d, 0x2f, 0xfa, + 0xc6, 0x13, 0x71, 0xa4, 0xb5, 0x60, 0x2, 0xd7, 0x20, 0xf5, 0x97, 0x42, 0x53, 0x86, 0xe4, 0x31, + 0x17, 0xc2, 0xa0, 0x75, 0x64, 0xb1, 0xd3, 0x6, 0xf1, 0x24, 0x46, 0x93, 0x82, 0x57, 0x35, 0xe0, + 0x79, 0xac, 0xce, 0x1b, 0xa, 0xdf, 0xbd, 0x68, 0x9f, 0x4a, 0x28, 0xfd, 0xec, 0x39, 0x5b, 0x8e, + 0xa8, 0x7d, 0x1f, 0xca, 0xdb, 0xe, 0x6c, 0xb9, 0x4e, 0x9b, 0xf9, 0x2c, 0x3d, 0xe8, 0x8a, 0x5f, + 0xa5, 0x70, 0x12, 0xc7, 0xd6, 0x3, 0x61, 0xb4, 0x43, 0x96, 0xf4, 0x21, 0x30, 0xe5, 0x87, 0x52, + 0x74, 0xa1, 0xc3, 0x16, 0x7, 0xd2, 0xb0, 0x65, 0x92, 0x47, 0x25, 0xf0, 0xe1, 0x34, 0x56, 0x83, + 0x1a, 0xcf, 0xad, 0x78, 0x69, 0xbc, 0xde, 0xb, 0xfc, 0x29, 0x4b, 0x9e, 0x8f, 0x5a, 0x38, 0xed, + 0xcb, 0x1e, 0x7c, 0xa9, 0xb8, 0x6d, 0xf, 0xda, 0x2d, 0xf8, 0x9a, 0x4f, 0x5e, 0x8b, 0xe9, 0x3c, + ], + [ + 0x0, 0xd6, 0xb1, 0x67, 0x7f, 0xa9, 0xce, 0x18, 0xfe, 0x28, 0x4f, 0x99, 0x81, 0x57, 0x30, 0xe6, + 0xe1, 0x37, 0x50, 0x86, 0x9e, 0x48, 0x2f, 0xf9, 0x1f, 0xc9, 0xae, 0x78, 0x60, 0xb6, 0xd1, 0x7, + 0xdf, 0x9, 0x6e, 0xb8, 0xa0, 0x76, 0x11, 0xc7, 0x21, 0xf7, 0x90, 0x46, 0x5e, 0x88, 0xef, 0x39, + 0x3e, 0xe8, 0x8f, 0x59, 0x41, 0x97, 0xf0, 0x26, 0xc0, 0x16, 0x71, 0xa7, 0xbf, 0x69, 0xe, 0xd8, + 0xa3, 0x75, 0x12, 0xc4, 0xdc, 0xa, 0x6d, 0xbb, 0x5d, 0x8b, 0xec, 0x3a, 0x22, 0xf4, 0x93, 0x45, + 0x42, 0x94, 0xf3, 0x25, 0x3d, 0xeb, 0x8c, 0x5a, 0xbc, 0x6a, 0xd, 0xdb, 0xc3, 0x15, 0x72, 0xa4, + 0x7c, 0xaa, 0xcd, 0x1b, 0x3, 0xd5, 0xb2, 0x64, 0x82, 0x54, 0x33, 0xe5, 0xfd, 0x2b, 0x4c, 0x9a, + 0x9d, 0x4b, 0x2c, 0xfa, 0xe2, 0x34, 0x53, 0x85, 0x63, 0xb5, 0xd2, 0x4, 0x1c, 0xca, 0xad, 0x7b, + 0x5b, 0x8d, 0xea, 0x3c, 0x24, 0xf2, 0x95, 0x43, 0xa5, 0x73, 0x14, 0xc2, 0xda, 0xc, 0x6b, 0xbd, + 0xba, 0x6c, 0xb, 0xdd, 0xc5, 0x13, 0x74, 0xa2, 0x44, 0x92, 0xf5, 0x23, 0x3b, 0xed, 0x8a, 0x5c, + 0x84, 0x52, 0x35, 0xe3, 0xfb, 0x2d, 0x4a, 0x9c, 0x7a, 0xac, 0xcb, 0x1d, 0x5, 0xd3, 0xb4, 0x62, + 0x65, 0xb3, 0xd4, 0x2, 0x1a, 0xcc, 0xab, 0x7d, 0x9b, 0x4d, 0x2a, 0xfc, 0xe4, 0x32, 0x55, 0x83, + 0xf8, 0x2e, 0x49, 0x9f, 0x87, 0x51, 0x36, 0xe0, 0x6, 0xd0, 0xb7, 0x61, 0x79, 0xaf, 0xc8, 0x1e, + 0x19, 0xcf, 0xa8, 0x7e, 0x66, 0xb0, 0xd7, 0x1, 0xe7, 0x31, 0x56, 0x80, 0x98, 0x4e, 0x29, 0xff, + 0x27, 0xf1, 0x96, 0x40, 0x58, 0x8e, 0xe9, 0x3f, 0xd9, 0xf, 0x68, 0xbe, 0xa6, 0x70, 0x17, 0xc1, + 0xc6, 0x10, 0x77, 0xa1, 0xb9, 0x6f, 0x8, 0xde, 0x38, 0xee, 0x89, 0x5f, 0x47, 0x91, 0xf6, 0x20, + ], + [ + 0x0, 0xd7, 0xb3, 0x64, 0x7b, 0xac, 0xc8, 0x1f, 0xf6, 0x21, 0x45, 0x92, 0x8d, 0x5a, 0x3e, 0xe9, + 0xf1, 0x26, 0x42, 0x95, 0x8a, 0x5d, 0x39, 0xee, 0x7, 0xd0, 0xb4, 0x63, 0x7c, 0xab, 0xcf, 0x18, + 0xff, 0x28, 0x4c, 0x9b, 0x84, 0x53, 0x37, 0xe0, 0x9, 0xde, 0xba, 0x6d, 0x72, 0xa5, 0xc1, 0x16, + 0xe, 0xd9, 0xbd, 0x6a, 0x75, 0xa2, 0xc6, 0x11, 0xf8, 0x2f, 0x4b, 0x9c, 0x83, 0x54, 0x30, 0xe7, + 0xe3, 0x34, 0x50, 0x87, 0x98, 0x4f, 0x2b, 0xfc, 0x15, 0xc2, 0xa6, 0x71, 0x6e, 0xb9, 0xdd, 0xa, + 0x12, 0xc5, 0xa1, 0x76, 0x69, 0xbe, 0xda, 0xd, 0xe4, 0x33, 0x57, 0x80, 0x9f, 0x48, 0x2c, 0xfb, + 0x1c, 0xcb, 0xaf, 0x78, 0x67, 0xb0, 0xd4, 0x3, 0xea, 0x3d, 0x59, 0x8e, 0x91, 0x46, 0x22, 0xf5, + 0xed, 0x3a, 0x5e, 0x89, 0x96, 0x41, 0x25, 0xf2, 0x1b, 0xcc, 0xa8, 0x7f, 0x60, 0xb7, 0xd3, 0x4, + 0xdb, 0xc, 0x68, 0xbf, 0xa0, 0x77, 0x13, 0xc4, 0x2d, 0xfa, 0x9e, 0x49, 0x56, 0x81, 0xe5, 0x32, + 0x2a, 0xfd, 0x99, 0x4e, 0x51, 0x86, 0xe2, 0x35, 0xdc, 0xb, 0x6f, 0xb8, 0xa7, 0x70, 0x14, 0xc3, + 0x24, 0xf3, 0x97, 0x40, 0x5f, 0x88, 0xec, 0x3b, 0xd2, 0x5, 0x61, 0xb6, 0xa9, 0x7e, 0x1a, 0xcd, + 0xd5, 0x2, 0x66, 0xb1, 0xae, 0x79, 0x1d, 0xca, 0x23, 0xf4, 0x90, 0x47, 0x58, 0x8f, 0xeb, 0x3c, + 0x38, 0xef, 0x8b, 0x5c, 0x43, 0x94, 0xf0, 0x27, 0xce, 0x19, 0x7d, 0xaa, 0xb5, 0x62, 0x6, 0xd1, + 0xc9, 0x1e, 0x7a, 0xad, 0xb2, 0x65, 0x1, 0xd6, 0x3f, 0xe8, 0x8c, 0x5b, 0x44, 0x93, 0xf7, 0x20, + 0xc7, 0x10, 0x74, 0xa3, 0xbc, 0x6b, 0xf, 0xd8, 0x31, 0xe6, 0x82, 0x55, 0x4a, 0x9d, 0xf9, 0x2e, + 0x36, 0xe1, 0x85, 0x52, 0x4d, 0x9a, 0xfe, 0x29, 0xc0, 0x17, 0x73, 0xa4, 0xbb, 0x6c, 0x8, 0xdf, + ], + [ + 0x0, 0xd8, 0xad, 0x75, 0x47, 0x9f, 0xea, 0x32, 0x8e, 0x56, 0x23, 0xfb, 0xc9, 0x11, 0x64, 0xbc, + 0x1, 0xd9, 0xac, 0x74, 0x46, 0x9e, 0xeb, 0x33, 0x8f, 0x57, 0x22, 0xfa, 0xc8, 0x10, 0x65, 0xbd, + 0x2, 0xda, 0xaf, 0x77, 0x45, 0x9d, 0xe8, 0x30, 0x8c, 0x54, 0x21, 0xf9, 0xcb, 0x13, 0x66, 0xbe, + 0x3, 0xdb, 0xae, 0x76, 0x44, 0x9c, 0xe9, 0x31, 0x8d, 0x55, 0x20, 0xf8, 0xca, 0x12, 0x67, 0xbf, + 0x4, 0xdc, 0xa9, 0x71, 0x43, 0x9b, 0xee, 0x36, 0x8a, 0x52, 0x27, 0xff, 0xcd, 0x15, 0x60, 0xb8, + 0x5, 0xdd, 0xa8, 0x70, 0x42, 0x9a, 0xef, 0x37, 0x8b, 0x53, 0x26, 0xfe, 0xcc, 0x14, 0x61, 0xb9, + 0x6, 0xde, 0xab, 0x73, 0x41, 0x99, 0xec, 0x34, 0x88, 0x50, 0x25, 0xfd, 0xcf, 0x17, 0x62, 0xba, + 0x7, 0xdf, 0xaa, 0x72, 0x40, 0x98, 0xed, 0x35, 0x89, 0x51, 0x24, 0xfc, 0xce, 0x16, 0x63, 0xbb, + 0x8, 0xd0, 0xa5, 0x7d, 0x4f, 0x97, 0xe2, 0x3a, 0x86, 0x5e, 0x2b, 0xf3, 0xc1, 0x19, 0x6c, 0xb4, + 0x9, 0xd1, 0xa4, 0x7c, 0x4e, 0x96, 0xe3, 0x3b, 0x87, 0x5f, 0x2a, 0xf2, 0xc0, 0x18, 0x6d, 0xb5, + 0xa, 0xd2, 0xa7, 0x7f, 0x4d, 0x95, 0xe0, 0x38, 0x84, 0x5c, 0x29, 0xf1, 0xc3, 0x1b, 0x6e, 0xb6, + 0xb, 0xd3, 0xa6, 0x7e, 0x4c, 0x94, 0xe1, 0x39, 0x85, 0x5d, 0x28, 0xf0, 0xc2, 0x1a, 0x6f, 0xb7, + 0xc, 0xd4, 0xa1, 0x79, 0x4b, 0x93, 0xe6, 0x3e, 0x82, 0x5a, 0x2f, 0xf7, 0xc5, 0x1d, 0x68, 0xb0, + 0xd, 0xd5, 0xa0, 0x78, 0x4a, 0x92, 0xe7, 0x3f, 0x83, 0x5b, 0x2e, 0xf6, 0xc4, 0x1c, 0x69, 0xb1, + 0xe, 0xd6, 0xa3, 0x7b, 0x49, 0x91, 0xe4, 0x3c, 0x80, 0x58, 0x2d, 0xf5, 0xc7, 0x1f, 0x6a, 0xb2, + 0xf, 0xd7, 0xa2, 0x7a, 0x48, 0x90, 0xe5, 0x3d, 0x81, 0x59, 0x2c, 0xf4, 0xc6, 0x1e, 0x6b, 0xb3, + ], + [ + 0x0, 0xd9, 0xaf, 0x76, 0x43, 0x9a, 0xec, 0x35, 0x86, 0x5f, 0x29, 0xf0, 0xc5, 0x1c, 0x6a, 0xb3, + 0x11, 0xc8, 0xbe, 0x67, 0x52, 0x8b, 0xfd, 0x24, 0x97, 0x4e, 0x38, 0xe1, 0xd4, 0xd, 0x7b, 0xa2, + 0x22, 0xfb, 0x8d, 0x54, 0x61, 0xb8, 0xce, 0x17, 0xa4, 0x7d, 0xb, 0xd2, 0xe7, 0x3e, 0x48, 0x91, + 0x33, 0xea, 0x9c, 0x45, 0x70, 0xa9, 0xdf, 0x6, 0xb5, 0x6c, 0x1a, 0xc3, 0xf6, 0x2f, 0x59, 0x80, + 0x44, 0x9d, 0xeb, 0x32, 0x7, 0xde, 0xa8, 0x71, 0xc2, 0x1b, 0x6d, 0xb4, 0x81, 0x58, 0x2e, 0xf7, + 0x55, 0x8c, 0xfa, 0x23, 0x16, 0xcf, 0xb9, 0x60, 0xd3, 0xa, 0x7c, 0xa5, 0x90, 0x49, 0x3f, 0xe6, + 0x66, 0xbf, 0xc9, 0x10, 0x25, 0xfc, 0x8a, 0x53, 0xe0, 0x39, 0x4f, 0x96, 0xa3, 0x7a, 0xc, 0xd5, + 0x77, 0xae, 0xd8, 0x1, 0x34, 0xed, 0x9b, 0x42, 0xf1, 0x28, 0x5e, 0x87, 0xb2, 0x6b, 0x1d, 0xc4, + 0x88, 0x51, 0x27, 0xfe, 0xcb, 0x12, 0x64, 0xbd, 0xe, 0xd7, 0xa1, 0x78, 0x4d, 0x94, 0xe2, 0x3b, + 0x99, 0x40, 0x36, 0xef, 0xda, 0x3, 0x75, 0xac, 0x1f, 0xc6, 0xb0, 0x69, 0x5c, 0x85, 0xf3, 0x2a, + 0xaa, 0x73, 0x5, 0xdc, 0xe9, 0x30, 0x46, 0x9f, 0x2c, 0xf5, 0x83, 0x5a, 0x6f, 0xb6, 0xc0, 0x19, + 0xbb, 0x62, 0x14, 0xcd, 0xf8, 0x21, 0x57, 0x8e, 0x3d, 0xe4, 0x92, 0x4b, 0x7e, 0xa7, 0xd1, 0x8, + 0xcc, 0x15, 0x63, 0xba, 0x8f, 0x56, 0x20, 0xf9, 0x4a, 0x93, 0xe5, 0x3c, 0x9, 0xd0, 0xa6, 0x7f, + 0xdd, 0x4, 0x72, 0xab, 0x9e, 0x47, 0x31, 0xe8, 0x5b, 0x82, 0xf4, 0x2d, 0x18, 0xc1, 0xb7, 0x6e, + 0xee, 0x37, 0x41, 0x98, 0xad, 0x74, 0x2, 0xdb, 0x68, 0xb1, 0xc7, 0x1e, 0x2b, 0xf2, 0x84, 0x5d, + 0xff, 0x26, 0x50, 0x89, 0xbc, 0x65, 0x13, 0xca, 0x79, 0xa0, 0xd6, 0xf, 0x3a, 0xe3, 0x95, 0x4c, + ], + [ + 0x0, 0xda, 0xa9, 0x73, 0x4f, 0x95, 0xe6, 0x3c, 0x9e, 0x44, 0x37, 0xed, 0xd1, 0xb, 0x78, 0xa2, + 0x21, 0xfb, 0x88, 0x52, 0x6e, 0xb4, 0xc7, 0x1d, 0xbf, 0x65, 0x16, 0xcc, 0xf0, 0x2a, 0x59, 0x83, + 0x42, 0x98, 0xeb, 0x31, 0xd, 0xd7, 0xa4, 0x7e, 0xdc, 0x6, 0x75, 0xaf, 0x93, 0x49, 0x3a, 0xe0, + 0x63, 0xb9, 0xca, 0x10, 0x2c, 0xf6, 0x85, 0x5f, 0xfd, 0x27, 0x54, 0x8e, 0xb2, 0x68, 0x1b, 0xc1, + 0x84, 0x5e, 0x2d, 0xf7, 0xcb, 0x11, 0x62, 0xb8, 0x1a, 0xc0, 0xb3, 0x69, 0x55, 0x8f, 0xfc, 0x26, + 0xa5, 0x7f, 0xc, 0xd6, 0xea, 0x30, 0x43, 0x99, 0x3b, 0xe1, 0x92, 0x48, 0x74, 0xae, 0xdd, 0x7, + 0xc6, 0x1c, 0x6f, 0xb5, 0x89, 0x53, 0x20, 0xfa, 0x58, 0x82, 0xf1, 0x2b, 0x17, 0xcd, 0xbe, 0x64, + 0xe7, 0x3d, 0x4e, 0x94, 0xa8, 0x72, 0x1, 0xdb, 0x79, 0xa3, 0xd0, 0xa, 0x36, 0xec, 0x9f, 0x45, + 0x15, 0xcf, 0xbc, 0x66, 0x5a, 0x80, 0xf3, 0x29, 0x8b, 0x51, 0x22, 0xf8, 0xc4, 0x1e, 0x6d, 0xb7, + 0x34, 0xee, 0x9d, 0x47, 0x7b, 0xa1, 0xd2, 0x8, 0xaa, 0x70, 0x3, 0xd9, 0xe5, 0x3f, 0x4c, 0x96, + 0x57, 0x8d, 0xfe, 0x24, 0x18, 0xc2, 0xb1, 0x6b, 0xc9, 0x13, 0x60, 0xba, 0x86, 0x5c, 0x2f, 0xf5, + 0x76, 0xac, 0xdf, 0x5, 0x39, 0xe3, 0x90, 0x4a, 0xe8, 0x32, 0x41, 0x9b, 0xa7, 0x7d, 0xe, 0xd4, + 0x91, 0x4b, 0x38, 0xe2, 0xde, 0x4, 0x77, 0xad, 0xf, 0xd5, 0xa6, 0x7c, 0x40, 0x9a, 0xe9, 0x33, + 0xb0, 0x6a, 0x19, 0xc3, 0xff, 0x25, 0x56, 0x8c, 0x2e, 0xf4, 0x87, 0x5d, 0x61, 0xbb, 0xc8, 0x12, + 0xd3, 0x9, 0x7a, 0xa0, 0x9c, 0x46, 0x35, 0xef, 0x4d, 0x97, 0xe4, 0x3e, 0x2, 0xd8, 0xab, 0x71, + 0xf2, 0x28, 0x5b, 0x81, 0xbd, 0x67, 0x14, 0xce, 0x6c, 0xb6, 0xc5, 0x1f, 0x23, 0xf9, 0x8a, 0x50, + ], + [ + 0x0, 0xdb, 0xab, 0x70, 0x4b, 0x90, 0xe0, 0x3b, 0x96, 0x4d, 0x3d, 0xe6, 0xdd, 0x6, 0x76, 0xad, + 0x31, 0xea, 0x9a, 0x41, 0x7a, 0xa1, 0xd1, 0xa, 0xa7, 0x7c, 0xc, 0xd7, 0xec, 0x37, 0x47, 0x9c, + 0x62, 0xb9, 0xc9, 0x12, 0x29, 0xf2, 0x82, 0x59, 0xf4, 0x2f, 0x5f, 0x84, 0xbf, 0x64, 0x14, 0xcf, + 0x53, 0x88, 0xf8, 0x23, 0x18, 0xc3, 0xb3, 0x68, 0xc5, 0x1e, 0x6e, 0xb5, 0x8e, 0x55, 0x25, 0xfe, + 0xc4, 0x1f, 0x6f, 0xb4, 0x8f, 0x54, 0x24, 0xff, 0x52, 0x89, 0xf9, 0x22, 0x19, 0xc2, 0xb2, 0x69, + 0xf5, 0x2e, 0x5e, 0x85, 0xbe, 0x65, 0x15, 0xce, 0x63, 0xb8, 0xc8, 0x13, 0x28, 0xf3, 0x83, 0x58, + 0xa6, 0x7d, 0xd, 0xd6, 0xed, 0x36, 0x46, 0x9d, 0x30, 0xeb, 0x9b, 0x40, 0x7b, 0xa0, 0xd0, 0xb, + 0x97, 0x4c, 0x3c, 0xe7, 0xdc, 0x7, 0x77, 0xac, 0x1, 0xda, 0xaa, 0x71, 0x4a, 0x91, 0xe1, 0x3a, + 0x95, 0x4e, 0x3e, 0xe5, 0xde, 0x5, 0x75, 0xae, 0x3, 0xd8, 0xa8, 0x73, 0x48, 0x93, 0xe3, 0x38, + 0xa4, 0x7f, 0xf, 0xd4, 0xef, 0x34, 0x44, 0x9f, 0x32, 0xe9, 0x99, 0x42, 0x79, 0xa2, 0xd2, 0x9, + 0xf7, 0x2c, 0x5c, 0x87, 0xbc, 0x67, 0x17, 0xcc, 0x61, 0xba, 0xca, 0x11, 0x2a, 0xf1, 0x81, 0x5a, + 0xc6, 0x1d, 0x6d, 0xb6, 0x8d, 0x56, 0x26, 0xfd, 0x50, 0x8b, 0xfb, 0x20, 0x1b, 0xc0, 0xb0, 0x6b, + 0x51, 0x8a, 0xfa, 0x21, 0x1a, 0xc1, 0xb1, 0x6a, 0xc7, 0x1c, 0x6c, 0xb7, 0x8c, 0x57, 0x27, 0xfc, + 0x60, 0xbb, 0xcb, 0x10, 0x2b, 0xf0, 0x80, 0x5b, 0xf6, 0x2d, 0x5d, 0x86, 0xbd, 0x66, 0x16, 0xcd, + 0x33, 0xe8, 0x98, 0x43, 0x78, 0xa3, 0xd3, 0x8, 0xa5, 0x7e, 0xe, 0xd5, 0xee, 0x35, 0x45, 0x9e, + 0x2, 0xd9, 0xa9, 0x72, 0x49, 0x92, 0xe2, 0x39, 0x94, 0x4f, 0x3f, 0xe4, 0xdf, 0x4, 0x74, 0xaf, + ], + [ + 0x0, 0xdc, 0xa5, 0x79, 0x57, 0x8b, 0xf2, 0x2e, 0xae, 0x72, 0xb, 0xd7, 0xf9, 0x25, 0x5c, 0x80, + 0x41, 0x9d, 0xe4, 0x38, 0x16, 0xca, 0xb3, 0x6f, 0xef, 0x33, 0x4a, 0x96, 0xb8, 0x64, 0x1d, 0xc1, + 0x82, 0x5e, 0x27, 0xfb, 0xd5, 0x9, 0x70, 0xac, 0x2c, 0xf0, 0x89, 0x55, 0x7b, 0xa7, 0xde, 0x2, + 0xc3, 0x1f, 0x66, 0xba, 0x94, 0x48, 0x31, 0xed, 0x6d, 0xb1, 0xc8, 0x14, 0x3a, 0xe6, 0x9f, 0x43, + 0x19, 0xc5, 0xbc, 0x60, 0x4e, 0x92, 0xeb, 0x37, 0xb7, 0x6b, 0x12, 0xce, 0xe0, 0x3c, 0x45, 0x99, + 0x58, 0x84, 0xfd, 0x21, 0xf, 0xd3, 0xaa, 0x76, 0xf6, 0x2a, 0x53, 0x8f, 0xa1, 0x7d, 0x4, 0xd8, + 0x9b, 0x47, 0x3e, 0xe2, 0xcc, 0x10, 0x69, 0xb5, 0x35, 0xe9, 0x90, 0x4c, 0x62, 0xbe, 0xc7, 0x1b, + 0xda, 0x6, 0x7f, 0xa3, 0x8d, 0x51, 0x28, 0xf4, 0x74, 0xa8, 0xd1, 0xd, 0x23, 0xff, 0x86, 0x5a, + 0x32, 0xee, 0x97, 0x4b, 0x65, 0xb9, 0xc0, 0x1c, 0x9c, 0x40, 0x39, 0xe5, 0xcb, 0x17, 0x6e, 0xb2, + 0x73, 0xaf, 0xd6, 0xa, 0x24, 0xf8, 0x81, 0x5d, 0xdd, 0x1, 0x78, 0xa4, 0x8a, 0x56, 0x2f, 0xf3, + 0xb0, 0x6c, 0x15, 0xc9, 0xe7, 0x3b, 0x42, 0x9e, 0x1e, 0xc2, 0xbb, 0x67, 0x49, 0x95, 0xec, 0x30, + 0xf1, 0x2d, 0x54, 0x88, 0xa6, 0x7a, 0x3, 0xdf, 0x5f, 0x83, 0xfa, 0x26, 0x8, 0xd4, 0xad, 0x71, + 0x2b, 0xf7, 0x8e, 0x52, 0x7c, 0xa0, 0xd9, 0x5, 0x85, 0x59, 0x20, 0xfc, 0xd2, 0xe, 0x77, 0xab, + 0x6a, 0xb6, 0xcf, 0x13, 0x3d, 0xe1, 0x98, 0x44, 0xc4, 0x18, 0x61, 0xbd, 0x93, 0x4f, 0x36, 0xea, + 0xa9, 0x75, 0xc, 0xd0, 0xfe, 0x22, 0x5b, 0x87, 0x7, 0xdb, 0xa2, 0x7e, 0x50, 0x8c, 0xf5, 0x29, + 0xe8, 0x34, 0x4d, 0x91, 0xbf, 0x63, 0x1a, 0xc6, 0x46, 0x9a, 0xe3, 0x3f, 0x11, 0xcd, 0xb4, 0x68, + ], + [ + 0x0, 0xdd, 0xa7, 0x7a, 0x53, 0x8e, 0xf4, 0x29, 0xa6, 0x7b, 0x1, 0xdc, 0xf5, 0x28, 0x52, 0x8f, + 0x51, 0x8c, 0xf6, 0x2b, 0x2, 0xdf, 0xa5, 0x78, 0xf7, 0x2a, 0x50, 0x8d, 0xa4, 0x79, 0x3, 0xde, + 0xa2, 0x7f, 0x5, 0xd8, 0xf1, 0x2c, 0x56, 0x8b, 0x4, 0xd9, 0xa3, 0x7e, 0x57, 0x8a, 0xf0, 0x2d, + 0xf3, 0x2e, 0x54, 0x89, 0xa0, 0x7d, 0x7, 0xda, 0x55, 0x88, 0xf2, 0x2f, 0x6, 0xdb, 0xa1, 0x7c, + 0x59, 0x84, 0xfe, 0x23, 0xa, 0xd7, 0xad, 0x70, 0xff, 0x22, 0x58, 0x85, 0xac, 0x71, 0xb, 0xd6, + 0x8, 0xd5, 0xaf, 0x72, 0x5b, 0x86, 0xfc, 0x21, 0xae, 0x73, 0x9, 0xd4, 0xfd, 0x20, 0x5a, 0x87, + 0xfb, 0x26, 0x5c, 0x81, 0xa8, 0x75, 0xf, 0xd2, 0x5d, 0x80, 0xfa, 0x27, 0xe, 0xd3, 0xa9, 0x74, + 0xaa, 0x77, 0xd, 0xd0, 0xf9, 0x24, 0x5e, 0x83, 0xc, 0xd1, 0xab, 0x76, 0x5f, 0x82, 0xf8, 0x25, + 0xb2, 0x6f, 0x15, 0xc8, 0xe1, 0x3c, 0x46, 0x9b, 0x14, 0xc9, 0xb3, 0x6e, 0x47, 0x9a, 0xe0, 0x3d, + 0xe3, 0x3e, 0x44, 0x99, 0xb0, 0x6d, 0x17, 0xca, 0x45, 0x98, 0xe2, 0x3f, 0x16, 0xcb, 0xb1, 0x6c, + 0x10, 0xcd, 0xb7, 0x6a, 0x43, 0x9e, 0xe4, 0x39, 0xb6, 0x6b, 0x11, 0xcc, 0xe5, 0x38, 0x42, 0x9f, + 0x41, 0x9c, 0xe6, 0x3b, 0x12, 0xcf, 0xb5, 0x68, 0xe7, 0x3a, 0x40, 0x9d, 0xb4, 0x69, 0x13, 0xce, + 0xeb, 0x36, 0x4c, 0x91, 0xb8, 0x65, 0x1f, 0xc2, 0x4d, 0x90, 0xea, 0x37, 0x1e, 0xc3, 0xb9, 0x64, + 0xba, 0x67, 0x1d, 0xc0, 0xe9, 0x34, 0x4e, 0x93, 0x1c, 0xc1, 0xbb, 0x66, 0x4f, 0x92, 0xe8, 0x35, + 0x49, 0x94, 0xee, 0x33, 0x1a, 0xc7, 0xbd, 0x60, 0xef, 0x32, 0x48, 0x95, 0xbc, 0x61, 0x1b, 0xc6, + 0x18, 0xc5, 0xbf, 0x62, 0x4b, 0x96, 0xec, 0x31, 0xbe, 0x63, 0x19, 0xc4, 0xed, 0x30, 0x4a, 0x97, + ], + [ + 0x0, 0xde, 0xa1, 0x7f, 0x5f, 0x81, 0xfe, 0x20, 0xbe, 0x60, 0x1f, 0xc1, 0xe1, 0x3f, 0x40, 0x9e, + 0x61, 0xbf, 0xc0, 0x1e, 0x3e, 0xe0, 0x9f, 0x41, 0xdf, 0x1, 0x7e, 0xa0, 0x80, 0x5e, 0x21, 0xff, + 0xc2, 0x1c, 0x63, 0xbd, 0x9d, 0x43, 0x3c, 0xe2, 0x7c, 0xa2, 0xdd, 0x3, 0x23, 0xfd, 0x82, 0x5c, + 0xa3, 0x7d, 0x2, 0xdc, 0xfc, 0x22, 0x5d, 0x83, 0x1d, 0xc3, 0xbc, 0x62, 0x42, 0x9c, 0xe3, 0x3d, + 0x99, 0x47, 0x38, 0xe6, 0xc6, 0x18, 0x67, 0xb9, 0x27, 0xf9, 0x86, 0x58, 0x78, 0xa6, 0xd9, 0x7, + 0xf8, 0x26, 0x59, 0x87, 0xa7, 0x79, 0x6, 0xd8, 0x46, 0x98, 0xe7, 0x39, 0x19, 0xc7, 0xb8, 0x66, + 0x5b, 0x85, 0xfa, 0x24, 0x4, 0xda, 0xa5, 0x7b, 0xe5, 0x3b, 0x44, 0x9a, 0xba, 0x64, 0x1b, 0xc5, + 0x3a, 0xe4, 0x9b, 0x45, 0x65, 0xbb, 0xc4, 0x1a, 0x84, 0x5a, 0x25, 0xfb, 0xdb, 0x5, 0x7a, 0xa4, + 0x2f, 0xf1, 0x8e, 0x50, 0x70, 0xae, 0xd1, 0xf, 0x91, 0x4f, 0x30, 0xee, 0xce, 0x10, 0x6f, 0xb1, + 0x4e, 0x90, 0xef, 0x31, 0x11, 0xcf, 0xb0, 0x6e, 0xf0, 0x2e, 0x51, 0x8f, 0xaf, 0x71, 0xe, 0xd0, + 0xed, 0x33, 0x4c, 0x92, 0xb2, 0x6c, 0x13, 0xcd, 0x53, 0x8d, 0xf2, 0x2c, 0xc, 0xd2, 0xad, 0x73, + 0x8c, 0x52, 0x2d, 0xf3, 0xd3, 0xd, 0x72, 0xac, 0x32, 0xec, 0x93, 0x4d, 0x6d, 0xb3, 0xcc, 0x12, + 0xb6, 0x68, 0x17, 0xc9, 0xe9, 0x37, 0x48, 0x96, 0x8, 0xd6, 0xa9, 0x77, 0x57, 0x89, 0xf6, 0x28, + 0xd7, 0x9, 0x76, 0xa8, 0x88, 0x56, 0x29, 0xf7, 0x69, 0xb7, 0xc8, 0x16, 0x36, 0xe8, 0x97, 0x49, + 0x74, 0xaa, 0xd5, 0xb, 0x2b, 0xf5, 0x8a, 0x54, 0xca, 0x14, 0x6b, 0xb5, 0x95, 0x4b, 0x34, 0xea, + 0x15, 0xcb, 0xb4, 0x6a, 0x4a, 0x94, 0xeb, 0x35, 0xab, 0x75, 0xa, 0xd4, 0xf4, 0x2a, 0x55, 0x8b, + ], + [ + 0x0, 0xdf, 0xa3, 0x7c, 0x5b, 0x84, 0xf8, 0x27, 0xb6, 0x69, 0x15, 0xca, 0xed, 0x32, 0x4e, 0x91, + 0x71, 0xae, 0xd2, 0xd, 0x2a, 0xf5, 0x89, 0x56, 0xc7, 0x18, 0x64, 0xbb, 0x9c, 0x43, 0x3f, 0xe0, + 0xe2, 0x3d, 0x41, 0x9e, 0xb9, 0x66, 0x1a, 0xc5, 0x54, 0x8b, 0xf7, 0x28, 0xf, 0xd0, 0xac, 0x73, + 0x93, 0x4c, 0x30, 0xef, 0xc8, 0x17, 0x6b, 0xb4, 0x25, 0xfa, 0x86, 0x59, 0x7e, 0xa1, 0xdd, 0x2, + 0xd9, 0x6, 0x7a, 0xa5, 0x82, 0x5d, 0x21, 0xfe, 0x6f, 0xb0, 0xcc, 0x13, 0x34, 0xeb, 0x97, 0x48, + 0xa8, 0x77, 0xb, 0xd4, 0xf3, 0x2c, 0x50, 0x8f, 0x1e, 0xc1, 0xbd, 0x62, 0x45, 0x9a, 0xe6, 0x39, + 0x3b, 0xe4, 0x98, 0x47, 0x60, 0xbf, 0xc3, 0x1c, 0x8d, 0x52, 0x2e, 0xf1, 0xd6, 0x9, 0x75, 0xaa, + 0x4a, 0x95, 0xe9, 0x36, 0x11, 0xce, 0xb2, 0x6d, 0xfc, 0x23, 0x5f, 0x80, 0xa7, 0x78, 0x4, 0xdb, + 0xaf, 0x70, 0xc, 0xd3, 0xf4, 0x2b, 0x57, 0x88, 0x19, 0xc6, 0xba, 0x65, 0x42, 0x9d, 0xe1, 0x3e, + 0xde, 0x1, 0x7d, 0xa2, 0x85, 0x5a, 0x26, 0xf9, 0x68, 0xb7, 0xcb, 0x14, 0x33, 0xec, 0x90, 0x4f, + 0x4d, 0x92, 0xee, 0x31, 0x16, 0xc9, 0xb5, 0x6a, 0xfb, 0x24, 0x58, 0x87, 0xa0, 0x7f, 0x3, 0xdc, + 0x3c, 0xe3, 0x9f, 0x40, 0x67, 0xb8, 0xc4, 0x1b, 0x8a, 0x55, 0x29, 0xf6, 0xd1, 0xe, 0x72, 0xad, + 0x76, 0xa9, 0xd5, 0xa, 0x2d, 0xf2, 0x8e, 0x51, 0xc0, 0x1f, 0x63, 0xbc, 0x9b, 0x44, 0x38, 0xe7, + 0x7, 0xd8, 0xa4, 0x7b, 0x5c, 0x83, 0xff, 0x20, 0xb1, 0x6e, 0x12, 0xcd, 0xea, 0x35, 0x49, 0x96, + 0x94, 0x4b, 0x37, 0xe8, 0xcf, 0x10, 0x6c, 0xb3, 0x22, 0xfd, 0x81, 0x5e, 0x79, 0xa6, 0xda, 0x5, + 0xe5, 0x3a, 0x46, 0x99, 0xbe, 0x61, 0x1d, 0xc2, 0x53, 0x8c, 0xf0, 0x2f, 0x8, 0xd7, 0xab, 0x74, + ], + [ + 0x0, 0xe0, 0xdd, 0x3d, 0xa7, 0x47, 0x7a, 0x9a, 0x53, 0xb3, 0x8e, 0x6e, 0xf4, 0x14, 0x29, 0xc9, + 0xa6, 0x46, 0x7b, 0x9b, 0x1, 0xe1, 0xdc, 0x3c, 0xf5, 0x15, 0x28, 0xc8, 0x52, 0xb2, 0x8f, 0x6f, + 0x51, 0xb1, 0x8c, 0x6c, 0xf6, 0x16, 0x2b, 0xcb, 0x2, 0xe2, 0xdf, 0x3f, 0xa5, 0x45, 0x78, 0x98, + 0xf7, 0x17, 0x2a, 0xca, 0x50, 0xb0, 0x8d, 0x6d, 0xa4, 0x44, 0x79, 0x99, 0x3, 0xe3, 0xde, 0x3e, + 0xa2, 0x42, 0x7f, 0x9f, 0x5, 0xe5, 0xd8, 0x38, 0xf1, 0x11, 0x2c, 0xcc, 0x56, 0xb6, 0x8b, 0x6b, + 0x4, 0xe4, 0xd9, 0x39, 0xa3, 0x43, 0x7e, 0x9e, 0x57, 0xb7, 0x8a, 0x6a, 0xf0, 0x10, 0x2d, 0xcd, + 0xf3, 0x13, 0x2e, 0xce, 0x54, 0xb4, 0x89, 0x69, 0xa0, 0x40, 0x7d, 0x9d, 0x7, 0xe7, 0xda, 0x3a, + 0x55, 0xb5, 0x88, 0x68, 0xf2, 0x12, 0x2f, 0xcf, 0x6, 0xe6, 0xdb, 0x3b, 0xa1, 0x41, 0x7c, 0x9c, + 0x59, 0xb9, 0x84, 0x64, 0xfe, 0x1e, 0x23, 0xc3, 0xa, 0xea, 0xd7, 0x37, 0xad, 0x4d, 0x70, 0x90, + 0xff, 0x1f, 0x22, 0xc2, 0x58, 0xb8, 0x85, 0x65, 0xac, 0x4c, 0x71, 0x91, 0xb, 0xeb, 0xd6, 0x36, + 0x8, 0xe8, 0xd5, 0x35, 0xaf, 0x4f, 0x72, 0x92, 0x5b, 0xbb, 0x86, 0x66, 0xfc, 0x1c, 0x21, 0xc1, + 0xae, 0x4e, 0x73, 0x93, 0x9, 0xe9, 0xd4, 0x34, 0xfd, 0x1d, 0x20, 0xc0, 0x5a, 0xba, 0x87, 0x67, + 0xfb, 0x1b, 0x26, 0xc6, 0x5c, 0xbc, 0x81, 0x61, 0xa8, 0x48, 0x75, 0x95, 0xf, 0xef, 0xd2, 0x32, + 0x5d, 0xbd, 0x80, 0x60, 0xfa, 0x1a, 0x27, 0xc7, 0xe, 0xee, 0xd3, 0x33, 0xa9, 0x49, 0x74, 0x94, + 0xaa, 0x4a, 0x77, 0x97, 0xd, 0xed, 0xd0, 0x30, 0xf9, 0x19, 0x24, 0xc4, 0x5e, 0xbe, 0x83, 0x63, + 0xc, 0xec, 0xd1, 0x31, 0xab, 0x4b, 0x76, 0x96, 0x5f, 0xbf, 0x82, 0x62, 0xf8, 0x18, 0x25, 0xc5, + ], + [ + 0x0, 0xe1, 0xdf, 0x3e, 0xa3, 0x42, 0x7c, 0x9d, 0x5b, 0xba, 0x84, 0x65, 0xf8, 0x19, 0x27, 0xc6, + 0xb6, 0x57, 0x69, 0x88, 0x15, 0xf4, 0xca, 0x2b, 0xed, 0xc, 0x32, 0xd3, 0x4e, 0xaf, 0x91, 0x70, + 0x71, 0x90, 0xae, 0x4f, 0xd2, 0x33, 0xd, 0xec, 0x2a, 0xcb, 0xf5, 0x14, 0x89, 0x68, 0x56, 0xb7, + 0xc7, 0x26, 0x18, 0xf9, 0x64, 0x85, 0xbb, 0x5a, 0x9c, 0x7d, 0x43, 0xa2, 0x3f, 0xde, 0xe0, 0x1, + 0xe2, 0x3, 0x3d, 0xdc, 0x41, 0xa0, 0x9e, 0x7f, 0xb9, 0x58, 0x66, 0x87, 0x1a, 0xfb, 0xc5, 0x24, + 0x54, 0xb5, 0x8b, 0x6a, 0xf7, 0x16, 0x28, 0xc9, 0xf, 0xee, 0xd0, 0x31, 0xac, 0x4d, 0x73, 0x92, + 0x93, 0x72, 0x4c, 0xad, 0x30, 0xd1, 0xef, 0xe, 0xc8, 0x29, 0x17, 0xf6, 0x6b, 0x8a, 0xb4, 0x55, + 0x25, 0xc4, 0xfa, 0x1b, 0x86, 0x67, 0x59, 0xb8, 0x7e, 0x9f, 0xa1, 0x40, 0xdd, 0x3c, 0x2, 0xe3, + 0xd9, 0x38, 0x6, 0xe7, 0x7a, 0x9b, 0xa5, 0x44, 0x82, 0x63, 0x5d, 0xbc, 0x21, 0xc0, 0xfe, 0x1f, + 0x6f, 0x8e, 0xb0, 0x51, 0xcc, 0x2d, 0x13, 0xf2, 0x34, 0xd5, 0xeb, 0xa, 0x97, 0x76, 0x48, 0xa9, + 0xa8, 0x49, 0x77, 0x96, 0xb, 0xea, 0xd4, 0x35, 0xf3, 0x12, 0x2c, 0xcd, 0x50, 0xb1, 0x8f, 0x6e, + 0x1e, 0xff, 0xc1, 0x20, 0xbd, 0x5c, 0x62, 0x83, 0x45, 0xa4, 0x9a, 0x7b, 0xe6, 0x7, 0x39, 0xd8, + 0x3b, 0xda, 0xe4, 0x5, 0x98, 0x79, 0x47, 0xa6, 0x60, 0x81, 0xbf, 0x5e, 0xc3, 0x22, 0x1c, 0xfd, + 0x8d, 0x6c, 0x52, 0xb3, 0x2e, 0xcf, 0xf1, 0x10, 0xd6, 0x37, 0x9, 0xe8, 0x75, 0x94, 0xaa, 0x4b, + 0x4a, 0xab, 0x95, 0x74, 0xe9, 0x8, 0x36, 0xd7, 0x11, 0xf0, 0xce, 0x2f, 0xb2, 0x53, 0x6d, 0x8c, + 0xfc, 0x1d, 0x23, 0xc2, 0x5f, 0xbe, 0x80, 0x61, 0xa7, 0x46, 0x78, 0x99, 0x4, 0xe5, 0xdb, 0x3a, + ], + [ + 0x0, 0xe2, 0xd9, 0x3b, 0xaf, 0x4d, 0x76, 0x94, 0x43, 0xa1, 0x9a, 0x78, 0xec, 0xe, 0x35, 0xd7, + 0x86, 0x64, 0x5f, 0xbd, 0x29, 0xcb, 0xf0, 0x12, 0xc5, 0x27, 0x1c, 0xfe, 0x6a, 0x88, 0xb3, 0x51, + 0x11, 0xf3, 0xc8, 0x2a, 0xbe, 0x5c, 0x67, 0x85, 0x52, 0xb0, 0x8b, 0x69, 0xfd, 0x1f, 0x24, 0xc6, + 0x97, 0x75, 0x4e, 0xac, 0x38, 0xda, 0xe1, 0x3, 0xd4, 0x36, 0xd, 0xef, 0x7b, 0x99, 0xa2, 0x40, + 0x22, 0xc0, 0xfb, 0x19, 0x8d, 0x6f, 0x54, 0xb6, 0x61, 0x83, 0xb8, 0x5a, 0xce, 0x2c, 0x17, 0xf5, + 0xa4, 0x46, 0x7d, 0x9f, 0xb, 0xe9, 0xd2, 0x30, 0xe7, 0x5, 0x3e, 0xdc, 0x48, 0xaa, 0x91, 0x73, + 0x33, 0xd1, 0xea, 0x8, 0x9c, 0x7e, 0x45, 0xa7, 0x70, 0x92, 0xa9, 0x4b, 0xdf, 0x3d, 0x6, 0xe4, + 0xb5, 0x57, 0x6c, 0x8e, 0x1a, 0xf8, 0xc3, 0x21, 0xf6, 0x14, 0x2f, 0xcd, 0x59, 0xbb, 0x80, 0x62, + 0x44, 0xa6, 0x9d, 0x7f, 0xeb, 0x9, 0x32, 0xd0, 0x7, 0xe5, 0xde, 0x3c, 0xa8, 0x4a, 0x71, 0x93, + 0xc2, 0x20, 0x1b, 0xf9, 0x6d, 0x8f, 0xb4, 0x56, 0x81, 0x63, 0x58, 0xba, 0x2e, 0xcc, 0xf7, 0x15, + 0x55, 0xb7, 0x8c, 0x6e, 0xfa, 0x18, 0x23, 0xc1, 0x16, 0xf4, 0xcf, 0x2d, 0xb9, 0x5b, 0x60, 0x82, + 0xd3, 0x31, 0xa, 0xe8, 0x7c, 0x9e, 0xa5, 0x47, 0x90, 0x72, 0x49, 0xab, 0x3f, 0xdd, 0xe6, 0x4, + 0x66, 0x84, 0xbf, 0x5d, 0xc9, 0x2b, 0x10, 0xf2, 0x25, 0xc7, 0xfc, 0x1e, 0x8a, 0x68, 0x53, 0xb1, + 0xe0, 0x2, 0x39, 0xdb, 0x4f, 0xad, 0x96, 0x74, 0xa3, 0x41, 0x7a, 0x98, 0xc, 0xee, 0xd5, 0x37, + 0x77, 0x95, 0xae, 0x4c, 0xd8, 0x3a, 0x1, 0xe3, 0x34, 0xd6, 0xed, 0xf, 0x9b, 0x79, 0x42, 0xa0, + 0xf1, 0x13, 0x28, 0xca, 0x5e, 0xbc, 0x87, 0x65, 0xb2, 0x50, 0x6b, 0x89, 0x1d, 0xff, 0xc4, 0x26, + ], + [ + 0x0, 0xe3, 0xdb, 0x38, 0xab, 0x48, 0x70, 0x93, 0x4b, 0xa8, 0x90, 0x73, 0xe0, 0x3, 0x3b, 0xd8, + 0x96, 0x75, 0x4d, 0xae, 0x3d, 0xde, 0xe6, 0x5, 0xdd, 0x3e, 0x6, 0xe5, 0x76, 0x95, 0xad, 0x4e, + 0x31, 0xd2, 0xea, 0x9, 0x9a, 0x79, 0x41, 0xa2, 0x7a, 0x99, 0xa1, 0x42, 0xd1, 0x32, 0xa, 0xe9, + 0xa7, 0x44, 0x7c, 0x9f, 0xc, 0xef, 0xd7, 0x34, 0xec, 0xf, 0x37, 0xd4, 0x47, 0xa4, 0x9c, 0x7f, + 0x62, 0x81, 0xb9, 0x5a, 0xc9, 0x2a, 0x12, 0xf1, 0x29, 0xca, 0xf2, 0x11, 0x82, 0x61, 0x59, 0xba, + 0xf4, 0x17, 0x2f, 0xcc, 0x5f, 0xbc, 0x84, 0x67, 0xbf, 0x5c, 0x64, 0x87, 0x14, 0xf7, 0xcf, 0x2c, + 0x53, 0xb0, 0x88, 0x6b, 0xf8, 0x1b, 0x23, 0xc0, 0x18, 0xfb, 0xc3, 0x20, 0xb3, 0x50, 0x68, 0x8b, + 0xc5, 0x26, 0x1e, 0xfd, 0x6e, 0x8d, 0xb5, 0x56, 0x8e, 0x6d, 0x55, 0xb6, 0x25, 0xc6, 0xfe, 0x1d, + 0xc4, 0x27, 0x1f, 0xfc, 0x6f, 0x8c, 0xb4, 0x57, 0x8f, 0x6c, 0x54, 0xb7, 0x24, 0xc7, 0xff, 0x1c, + 0x52, 0xb1, 0x89, 0x6a, 0xf9, 0x1a, 0x22, 0xc1, 0x19, 0xfa, 0xc2, 0x21, 0xb2, 0x51, 0x69, 0x8a, + 0xf5, 0x16, 0x2e, 0xcd, 0x5e, 0xbd, 0x85, 0x66, 0xbe, 0x5d, 0x65, 0x86, 0x15, 0xf6, 0xce, 0x2d, + 0x63, 0x80, 0xb8, 0x5b, 0xc8, 0x2b, 0x13, 0xf0, 0x28, 0xcb, 0xf3, 0x10, 0x83, 0x60, 0x58, 0xbb, + 0xa6, 0x45, 0x7d, 0x9e, 0xd, 0xee, 0xd6, 0x35, 0xed, 0xe, 0x36, 0xd5, 0x46, 0xa5, 0x9d, 0x7e, + 0x30, 0xd3, 0xeb, 0x8, 0x9b, 0x78, 0x40, 0xa3, 0x7b, 0x98, 0xa0, 0x43, 0xd0, 0x33, 0xb, 0xe8, + 0x97, 0x74, 0x4c, 0xaf, 0x3c, 0xdf, 0xe7, 0x4, 0xdc, 0x3f, 0x7, 0xe4, 0x77, 0x94, 0xac, 0x4f, + 0x1, 0xe2, 0xda, 0x39, 0xaa, 0x49, 0x71, 0x92, 0x4a, 0xa9, 0x91, 0x72, 0xe1, 0x2, 0x3a, 0xd9, + ], + [ + 0x0, 0xe4, 0xd5, 0x31, 0xb7, 0x53, 0x62, 0x86, 0x73, 0x97, 0xa6, 0x42, 0xc4, 0x20, 0x11, 0xf5, + 0xe6, 0x2, 0x33, 0xd7, 0x51, 0xb5, 0x84, 0x60, 0x95, 0x71, 0x40, 0xa4, 0x22, 0xc6, 0xf7, 0x13, + 0xd1, 0x35, 0x4, 0xe0, 0x66, 0x82, 0xb3, 0x57, 0xa2, 0x46, 0x77, 0x93, 0x15, 0xf1, 0xc0, 0x24, + 0x37, 0xd3, 0xe2, 0x6, 0x80, 0x64, 0x55, 0xb1, 0x44, 0xa0, 0x91, 0x75, 0xf3, 0x17, 0x26, 0xc2, + 0xbf, 0x5b, 0x6a, 0x8e, 0x8, 0xec, 0xdd, 0x39, 0xcc, 0x28, 0x19, 0xfd, 0x7b, 0x9f, 0xae, 0x4a, + 0x59, 0xbd, 0x8c, 0x68, 0xee, 0xa, 0x3b, 0xdf, 0x2a, 0xce, 0xff, 0x1b, 0x9d, 0x79, 0x48, 0xac, + 0x6e, 0x8a, 0xbb, 0x5f, 0xd9, 0x3d, 0xc, 0xe8, 0x1d, 0xf9, 0xc8, 0x2c, 0xaa, 0x4e, 0x7f, 0x9b, + 0x88, 0x6c, 0x5d, 0xb9, 0x3f, 0xdb, 0xea, 0xe, 0xfb, 0x1f, 0x2e, 0xca, 0x4c, 0xa8, 0x99, 0x7d, + 0x63, 0x87, 0xb6, 0x52, 0xd4, 0x30, 0x1, 0xe5, 0x10, 0xf4, 0xc5, 0x21, 0xa7, 0x43, 0x72, 0x96, + 0x85, 0x61, 0x50, 0xb4, 0x32, 0xd6, 0xe7, 0x3, 0xf6, 0x12, 0x23, 0xc7, 0x41, 0xa5, 0x94, 0x70, + 0xb2, 0x56, 0x67, 0x83, 0x5, 0xe1, 0xd0, 0x34, 0xc1, 0x25, 0x14, 0xf0, 0x76, 0x92, 0xa3, 0x47, + 0x54, 0xb0, 0x81, 0x65, 0xe3, 0x7, 0x36, 0xd2, 0x27, 0xc3, 0xf2, 0x16, 0x90, 0x74, 0x45, 0xa1, + 0xdc, 0x38, 0x9, 0xed, 0x6b, 0x8f, 0xbe, 0x5a, 0xaf, 0x4b, 0x7a, 0x9e, 0x18, 0xfc, 0xcd, 0x29, + 0x3a, 0xde, 0xef, 0xb, 0x8d, 0x69, 0x58, 0xbc, 0x49, 0xad, 0x9c, 0x78, 0xfe, 0x1a, 0x2b, 0xcf, + 0xd, 0xe9, 0xd8, 0x3c, 0xba, 0x5e, 0x6f, 0x8b, 0x7e, 0x9a, 0xab, 0x4f, 0xc9, 0x2d, 0x1c, 0xf8, + 0xeb, 0xf, 0x3e, 0xda, 0x5c, 0xb8, 0x89, 0x6d, 0x98, 0x7c, 0x4d, 0xa9, 0x2f, 0xcb, 0xfa, 0x1e, + ], + [ + 0x0, 0xe5, 0xd7, 0x32, 0xb3, 0x56, 0x64, 0x81, 0x7b, 0x9e, 0xac, 0x49, 0xc8, 0x2d, 0x1f, 0xfa, + 0xf6, 0x13, 0x21, 0xc4, 0x45, 0xa0, 0x92, 0x77, 0x8d, 0x68, 0x5a, 0xbf, 0x3e, 0xdb, 0xe9, 0xc, + 0xf1, 0x14, 0x26, 0xc3, 0x42, 0xa7, 0x95, 0x70, 0x8a, 0x6f, 0x5d, 0xb8, 0x39, 0xdc, 0xee, 0xb, + 0x7, 0xe2, 0xd0, 0x35, 0xb4, 0x51, 0x63, 0x86, 0x7c, 0x99, 0xab, 0x4e, 0xcf, 0x2a, 0x18, 0xfd, + 0xff, 0x1a, 0x28, 0xcd, 0x4c, 0xa9, 0x9b, 0x7e, 0x84, 0x61, 0x53, 0xb6, 0x37, 0xd2, 0xe0, 0x5, + 0x9, 0xec, 0xde, 0x3b, 0xba, 0x5f, 0x6d, 0x88, 0x72, 0x97, 0xa5, 0x40, 0xc1, 0x24, 0x16, 0xf3, + 0xe, 0xeb, 0xd9, 0x3c, 0xbd, 0x58, 0x6a, 0x8f, 0x75, 0x90, 0xa2, 0x47, 0xc6, 0x23, 0x11, 0xf4, + 0xf8, 0x1d, 0x2f, 0xca, 0x4b, 0xae, 0x9c, 0x79, 0x83, 0x66, 0x54, 0xb1, 0x30, 0xd5, 0xe7, 0x2, + 0xe3, 0x6, 0x34, 0xd1, 0x50, 0xb5, 0x87, 0x62, 0x98, 0x7d, 0x4f, 0xaa, 0x2b, 0xce, 0xfc, 0x19, + 0x15, 0xf0, 0xc2, 0x27, 0xa6, 0x43, 0x71, 0x94, 0x6e, 0x8b, 0xb9, 0x5c, 0xdd, 0x38, 0xa, 0xef, + 0x12, 0xf7, 0xc5, 0x20, 0xa1, 0x44, 0x76, 0x93, 0x69, 0x8c, 0xbe, 0x5b, 0xda, 0x3f, 0xd, 0xe8, + 0xe4, 0x1, 0x33, 0xd6, 0x57, 0xb2, 0x80, 0x65, 0x9f, 0x7a, 0x48, 0xad, 0x2c, 0xc9, 0xfb, 0x1e, + 0x1c, 0xf9, 0xcb, 0x2e, 0xaf, 0x4a, 0x78, 0x9d, 0x67, 0x82, 0xb0, 0x55, 0xd4, 0x31, 0x3, 0xe6, + 0xea, 0xf, 0x3d, 0xd8, 0x59, 0xbc, 0x8e, 0x6b, 0x91, 0x74, 0x46, 0xa3, 0x22, 0xc7, 0xf5, 0x10, + 0xed, 0x8, 0x3a, 0xdf, 0x5e, 0xbb, 0x89, 0x6c, 0x96, 0x73, 0x41, 0xa4, 0x25, 0xc0, 0xf2, 0x17, + 0x1b, 0xfe, 0xcc, 0x29, 0xa8, 0x4d, 0x7f, 0x9a, 0x60, 0x85, 0xb7, 0x52, 0xd3, 0x36, 0x4, 0xe1, + ], + [ + 0x0, 0xe6, 0xd1, 0x37, 0xbf, 0x59, 0x6e, 0x88, 0x63, 0x85, 0xb2, 0x54, 0xdc, 0x3a, 0xd, 0xeb, + 0xc6, 0x20, 0x17, 0xf1, 0x79, 0x9f, 0xa8, 0x4e, 0xa5, 0x43, 0x74, 0x92, 0x1a, 0xfc, 0xcb, 0x2d, + 0x91, 0x77, 0x40, 0xa6, 0x2e, 0xc8, 0xff, 0x19, 0xf2, 0x14, 0x23, 0xc5, 0x4d, 0xab, 0x9c, 0x7a, + 0x57, 0xb1, 0x86, 0x60, 0xe8, 0xe, 0x39, 0xdf, 0x34, 0xd2, 0xe5, 0x3, 0x8b, 0x6d, 0x5a, 0xbc, + 0x3f, 0xd9, 0xee, 0x8, 0x80, 0x66, 0x51, 0xb7, 0x5c, 0xba, 0x8d, 0x6b, 0xe3, 0x5, 0x32, 0xd4, + 0xf9, 0x1f, 0x28, 0xce, 0x46, 0xa0, 0x97, 0x71, 0x9a, 0x7c, 0x4b, 0xad, 0x25, 0xc3, 0xf4, 0x12, + 0xae, 0x48, 0x7f, 0x99, 0x11, 0xf7, 0xc0, 0x26, 0xcd, 0x2b, 0x1c, 0xfa, 0x72, 0x94, 0xa3, 0x45, + 0x68, 0x8e, 0xb9, 0x5f, 0xd7, 0x31, 0x6, 0xe0, 0xb, 0xed, 0xda, 0x3c, 0xb4, 0x52, 0x65, 0x83, + 0x7e, 0x98, 0xaf, 0x49, 0xc1, 0x27, 0x10, 0xf6, 0x1d, 0xfb, 0xcc, 0x2a, 0xa2, 0x44, 0x73, 0x95, + 0xb8, 0x5e, 0x69, 0x8f, 0x7, 0xe1, 0xd6, 0x30, 0xdb, 0x3d, 0xa, 0xec, 0x64, 0x82, 0xb5, 0x53, + 0xef, 0x9, 0x3e, 0xd8, 0x50, 0xb6, 0x81, 0x67, 0x8c, 0x6a, 0x5d, 0xbb, 0x33, 0xd5, 0xe2, 0x4, + 0x29, 0xcf, 0xf8, 0x1e, 0x96, 0x70, 0x47, 0xa1, 0x4a, 0xac, 0x9b, 0x7d, 0xf5, 0x13, 0x24, 0xc2, + 0x41, 0xa7, 0x90, 0x76, 0xfe, 0x18, 0x2f, 0xc9, 0x22, 0xc4, 0xf3, 0x15, 0x9d, 0x7b, 0x4c, 0xaa, + 0x87, 0x61, 0x56, 0xb0, 0x38, 0xde, 0xe9, 0xf, 0xe4, 0x2, 0x35, 0xd3, 0x5b, 0xbd, 0x8a, 0x6c, + 0xd0, 0x36, 0x1, 0xe7, 0x6f, 0x89, 0xbe, 0x58, 0xb3, 0x55, 0x62, 0x84, 0xc, 0xea, 0xdd, 0x3b, + 0x16, 0xf0, 0xc7, 0x21, 0xa9, 0x4f, 0x78, 0x9e, 0x75, 0x93, 0xa4, 0x42, 0xca, 0x2c, 0x1b, 0xfd, + ], + [ + 0x0, 0xe7, 0xd3, 0x34, 0xbb, 0x5c, 0x68, 0x8f, 0x6b, 0x8c, 0xb8, 0x5f, 0xd0, 0x37, 0x3, 0xe4, + 0xd6, 0x31, 0x5, 0xe2, 0x6d, 0x8a, 0xbe, 0x59, 0xbd, 0x5a, 0x6e, 0x89, 0x6, 0xe1, 0xd5, 0x32, + 0xb1, 0x56, 0x62, 0x85, 0xa, 0xed, 0xd9, 0x3e, 0xda, 0x3d, 0x9, 0xee, 0x61, 0x86, 0xb2, 0x55, + 0x67, 0x80, 0xb4, 0x53, 0xdc, 0x3b, 0xf, 0xe8, 0xc, 0xeb, 0xdf, 0x38, 0xb7, 0x50, 0x64, 0x83, + 0x7f, 0x98, 0xac, 0x4b, 0xc4, 0x23, 0x17, 0xf0, 0x14, 0xf3, 0xc7, 0x20, 0xaf, 0x48, 0x7c, 0x9b, + 0xa9, 0x4e, 0x7a, 0x9d, 0x12, 0xf5, 0xc1, 0x26, 0xc2, 0x25, 0x11, 0xf6, 0x79, 0x9e, 0xaa, 0x4d, + 0xce, 0x29, 0x1d, 0xfa, 0x75, 0x92, 0xa6, 0x41, 0xa5, 0x42, 0x76, 0x91, 0x1e, 0xf9, 0xcd, 0x2a, + 0x18, 0xff, 0xcb, 0x2c, 0xa3, 0x44, 0x70, 0x97, 0x73, 0x94, 0xa0, 0x47, 0xc8, 0x2f, 0x1b, 0xfc, + 0xfe, 0x19, 0x2d, 0xca, 0x45, 0xa2, 0x96, 0x71, 0x95, 0x72, 0x46, 0xa1, 0x2e, 0xc9, 0xfd, 0x1a, + 0x28, 0xcf, 0xfb, 0x1c, 0x93, 0x74, 0x40, 0xa7, 0x43, 0xa4, 0x90, 0x77, 0xf8, 0x1f, 0x2b, 0xcc, + 0x4f, 0xa8, 0x9c, 0x7b, 0xf4, 0x13, 0x27, 0xc0, 0x24, 0xc3, 0xf7, 0x10, 0x9f, 0x78, 0x4c, 0xab, + 0x99, 0x7e, 0x4a, 0xad, 0x22, 0xc5, 0xf1, 0x16, 0xf2, 0x15, 0x21, 0xc6, 0x49, 0xae, 0x9a, 0x7d, + 0x81, 0x66, 0x52, 0xb5, 0x3a, 0xdd, 0xe9, 0xe, 0xea, 0xd, 0x39, 0xde, 0x51, 0xb6, 0x82, 0x65, + 0x57, 0xb0, 0x84, 0x63, 0xec, 0xb, 0x3f, 0xd8, 0x3c, 0xdb, 0xef, 0x8, 0x87, 0x60, 0x54, 0xb3, + 0x30, 0xd7, 0xe3, 0x4, 0x8b, 0x6c, 0x58, 0xbf, 0x5b, 0xbc, 0x88, 0x6f, 0xe0, 0x7, 0x33, 0xd4, + 0xe6, 0x1, 0x35, 0xd2, 0x5d, 0xba, 0x8e, 0x69, 0x8d, 0x6a, 0x5e, 0xb9, 0x36, 0xd1, 0xe5, 0x2, + ], + [ + 0x0, 0xe8, 0xcd, 0x25, 0x87, 0x6f, 0x4a, 0xa2, 0x13, 0xfb, 0xde, 0x36, 0x94, 0x7c, 0x59, 0xb1, + 0x26, 0xce, 0xeb, 0x3, 0xa1, 0x49, 0x6c, 0x84, 0x35, 0xdd, 0xf8, 0x10, 0xb2, 0x5a, 0x7f, 0x97, + 0x4c, 0xa4, 0x81, 0x69, 0xcb, 0x23, 0x6, 0xee, 0x5f, 0xb7, 0x92, 0x7a, 0xd8, 0x30, 0x15, 0xfd, + 0x6a, 0x82, 0xa7, 0x4f, 0xed, 0x5, 0x20, 0xc8, 0x79, 0x91, 0xb4, 0x5c, 0xfe, 0x16, 0x33, 0xdb, + 0x98, 0x70, 0x55, 0xbd, 0x1f, 0xf7, 0xd2, 0x3a, 0x8b, 0x63, 0x46, 0xae, 0xc, 0xe4, 0xc1, 0x29, + 0xbe, 0x56, 0x73, 0x9b, 0x39, 0xd1, 0xf4, 0x1c, 0xad, 0x45, 0x60, 0x88, 0x2a, 0xc2, 0xe7, 0xf, + 0xd4, 0x3c, 0x19, 0xf1, 0x53, 0xbb, 0x9e, 0x76, 0xc7, 0x2f, 0xa, 0xe2, 0x40, 0xa8, 0x8d, 0x65, + 0xf2, 0x1a, 0x3f, 0xd7, 0x75, 0x9d, 0xb8, 0x50, 0xe1, 0x9, 0x2c, 0xc4, 0x66, 0x8e, 0xab, 0x43, + 0x2d, 0xc5, 0xe0, 0x8, 0xaa, 0x42, 0x67, 0x8f, 0x3e, 0xd6, 0xf3, 0x1b, 0xb9, 0x51, 0x74, 0x9c, + 0xb, 0xe3, 0xc6, 0x2e, 0x8c, 0x64, 0x41, 0xa9, 0x18, 0xf0, 0xd5, 0x3d, 0x9f, 0x77, 0x52, 0xba, + 0x61, 0x89, 0xac, 0x44, 0xe6, 0xe, 0x2b, 0xc3, 0x72, 0x9a, 0xbf, 0x57, 0xf5, 0x1d, 0x38, 0xd0, + 0x47, 0xaf, 0x8a, 0x62, 0xc0, 0x28, 0xd, 0xe5, 0x54, 0xbc, 0x99, 0x71, 0xd3, 0x3b, 0x1e, 0xf6, + 0xb5, 0x5d, 0x78, 0x90, 0x32, 0xda, 0xff, 0x17, 0xa6, 0x4e, 0x6b, 0x83, 0x21, 0xc9, 0xec, 0x4, + 0x93, 0x7b, 0x5e, 0xb6, 0x14, 0xfc, 0xd9, 0x31, 0x80, 0x68, 0x4d, 0xa5, 0x7, 0xef, 0xca, 0x22, + 0xf9, 0x11, 0x34, 0xdc, 0x7e, 0x96, 0xb3, 0x5b, 0xea, 0x2, 0x27, 0xcf, 0x6d, 0x85, 0xa0, 0x48, + 0xdf, 0x37, 0x12, 0xfa, 0x58, 0xb0, 0x95, 0x7d, 0xcc, 0x24, 0x1, 0xe9, 0x4b, 0xa3, 0x86, 0x6e, + ], + [ + 0x0, 0xe9, 0xcf, 0x26, 0x83, 0x6a, 0x4c, 0xa5, 0x1b, 0xf2, 0xd4, 0x3d, 0x98, 0x71, 0x57, 0xbe, + 0x36, 0xdf, 0xf9, 0x10, 0xb5, 0x5c, 0x7a, 0x93, 0x2d, 0xc4, 0xe2, 0xb, 0xae, 0x47, 0x61, 0x88, + 0x6c, 0x85, 0xa3, 0x4a, 0xef, 0x6, 0x20, 0xc9, 0x77, 0x9e, 0xb8, 0x51, 0xf4, 0x1d, 0x3b, 0xd2, + 0x5a, 0xb3, 0x95, 0x7c, 0xd9, 0x30, 0x16, 0xff, 0x41, 0xa8, 0x8e, 0x67, 0xc2, 0x2b, 0xd, 0xe4, + 0xd8, 0x31, 0x17, 0xfe, 0x5b, 0xb2, 0x94, 0x7d, 0xc3, 0x2a, 0xc, 0xe5, 0x40, 0xa9, 0x8f, 0x66, + 0xee, 0x7, 0x21, 0xc8, 0x6d, 0x84, 0xa2, 0x4b, 0xf5, 0x1c, 0x3a, 0xd3, 0x76, 0x9f, 0xb9, 0x50, + 0xb4, 0x5d, 0x7b, 0x92, 0x37, 0xde, 0xf8, 0x11, 0xaf, 0x46, 0x60, 0x89, 0x2c, 0xc5, 0xe3, 0xa, + 0x82, 0x6b, 0x4d, 0xa4, 0x1, 0xe8, 0xce, 0x27, 0x99, 0x70, 0x56, 0xbf, 0x1a, 0xf3, 0xd5, 0x3c, + 0xad, 0x44, 0x62, 0x8b, 0x2e, 0xc7, 0xe1, 0x8, 0xb6, 0x5f, 0x79, 0x90, 0x35, 0xdc, 0xfa, 0x13, + 0x9b, 0x72, 0x54, 0xbd, 0x18, 0xf1, 0xd7, 0x3e, 0x80, 0x69, 0x4f, 0xa6, 0x3, 0xea, 0xcc, 0x25, + 0xc1, 0x28, 0xe, 0xe7, 0x42, 0xab, 0x8d, 0x64, 0xda, 0x33, 0x15, 0xfc, 0x59, 0xb0, 0x96, 0x7f, + 0xf7, 0x1e, 0x38, 0xd1, 0x74, 0x9d, 0xbb, 0x52, 0xec, 0x5, 0x23, 0xca, 0x6f, 0x86, 0xa0, 0x49, + 0x75, 0x9c, 0xba, 0x53, 0xf6, 0x1f, 0x39, 0xd0, 0x6e, 0x87, 0xa1, 0x48, 0xed, 0x4, 0x22, 0xcb, + 0x43, 0xaa, 0x8c, 0x65, 0xc0, 0x29, 0xf, 0xe6, 0x58, 0xb1, 0x97, 0x7e, 0xdb, 0x32, 0x14, 0xfd, + 0x19, 0xf0, 0xd6, 0x3f, 0x9a, 0x73, 0x55, 0xbc, 0x2, 0xeb, 0xcd, 0x24, 0x81, 0x68, 0x4e, 0xa7, + 0x2f, 0xc6, 0xe0, 0x9, 0xac, 0x45, 0x63, 0x8a, 0x34, 0xdd, 0xfb, 0x12, 0xb7, 0x5e, 0x78, 0x91, + ], + [ + 0x0, 0xea, 0xc9, 0x23, 0x8f, 0x65, 0x46, 0xac, 0x3, 0xe9, 0xca, 0x20, 0x8c, 0x66, 0x45, 0xaf, + 0x6, 0xec, 0xcf, 0x25, 0x89, 0x63, 0x40, 0xaa, 0x5, 0xef, 0xcc, 0x26, 0x8a, 0x60, 0x43, 0xa9, + 0xc, 0xe6, 0xc5, 0x2f, 0x83, 0x69, 0x4a, 0xa0, 0xf, 0xe5, 0xc6, 0x2c, 0x80, 0x6a, 0x49, 0xa3, + 0xa, 0xe0, 0xc3, 0x29, 0x85, 0x6f, 0x4c, 0xa6, 0x9, 0xe3, 0xc0, 0x2a, 0x86, 0x6c, 0x4f, 0xa5, + 0x18, 0xf2, 0xd1, 0x3b, 0x97, 0x7d, 0x5e, 0xb4, 0x1b, 0xf1, 0xd2, 0x38, 0x94, 0x7e, 0x5d, 0xb7, + 0x1e, 0xf4, 0xd7, 0x3d, 0x91, 0x7b, 0x58, 0xb2, 0x1d, 0xf7, 0xd4, 0x3e, 0x92, 0x78, 0x5b, 0xb1, + 0x14, 0xfe, 0xdd, 0x37, 0x9b, 0x71, 0x52, 0xb8, 0x17, 0xfd, 0xde, 0x34, 0x98, 0x72, 0x51, 0xbb, + 0x12, 0xf8, 0xdb, 0x31, 0x9d, 0x77, 0x54, 0xbe, 0x11, 0xfb, 0xd8, 0x32, 0x9e, 0x74, 0x57, 0xbd, + 0x30, 0xda, 0xf9, 0x13, 0xbf, 0x55, 0x76, 0x9c, 0x33, 0xd9, 0xfa, 0x10, 0xbc, 0x56, 0x75, 0x9f, + 0x36, 0xdc, 0xff, 0x15, 0xb9, 0x53, 0x70, 0x9a, 0x35, 0xdf, 0xfc, 0x16, 0xba, 0x50, 0x73, 0x99, + 0x3c, 0xd6, 0xf5, 0x1f, 0xb3, 0x59, 0x7a, 0x90, 0x3f, 0xd5, 0xf6, 0x1c, 0xb0, 0x5a, 0x79, 0x93, + 0x3a, 0xd0, 0xf3, 0x19, 0xb5, 0x5f, 0x7c, 0x96, 0x39, 0xd3, 0xf0, 0x1a, 0xb6, 0x5c, 0x7f, 0x95, + 0x28, 0xc2, 0xe1, 0xb, 0xa7, 0x4d, 0x6e, 0x84, 0x2b, 0xc1, 0xe2, 0x8, 0xa4, 0x4e, 0x6d, 0x87, + 0x2e, 0xc4, 0xe7, 0xd, 0xa1, 0x4b, 0x68, 0x82, 0x2d, 0xc7, 0xe4, 0xe, 0xa2, 0x48, 0x6b, 0x81, + 0x24, 0xce, 0xed, 0x7, 0xab, 0x41, 0x62, 0x88, 0x27, 0xcd, 0xee, 0x4, 0xa8, 0x42, 0x61, 0x8b, + 0x22, 0xc8, 0xeb, 0x1, 0xad, 0x47, 0x64, 0x8e, 0x21, 0xcb, 0xe8, 0x2, 0xae, 0x44, 0x67, 0x8d, + ], + [ + 0x0, 0xeb, 0xcb, 0x20, 0x8b, 0x60, 0x40, 0xab, 0xb, 0xe0, 0xc0, 0x2b, 0x80, 0x6b, 0x4b, 0xa0, + 0x16, 0xfd, 0xdd, 0x36, 0x9d, 0x76, 0x56, 0xbd, 0x1d, 0xf6, 0xd6, 0x3d, 0x96, 0x7d, 0x5d, 0xb6, + 0x2c, 0xc7, 0xe7, 0xc, 0xa7, 0x4c, 0x6c, 0x87, 0x27, 0xcc, 0xec, 0x7, 0xac, 0x47, 0x67, 0x8c, + 0x3a, 0xd1, 0xf1, 0x1a, 0xb1, 0x5a, 0x7a, 0x91, 0x31, 0xda, 0xfa, 0x11, 0xba, 0x51, 0x71, 0x9a, + 0x58, 0xb3, 0x93, 0x78, 0xd3, 0x38, 0x18, 0xf3, 0x53, 0xb8, 0x98, 0x73, 0xd8, 0x33, 0x13, 0xf8, + 0x4e, 0xa5, 0x85, 0x6e, 0xc5, 0x2e, 0xe, 0xe5, 0x45, 0xae, 0x8e, 0x65, 0xce, 0x25, 0x5, 0xee, + 0x74, 0x9f, 0xbf, 0x54, 0xff, 0x14, 0x34, 0xdf, 0x7f, 0x94, 0xb4, 0x5f, 0xf4, 0x1f, 0x3f, 0xd4, + 0x62, 0x89, 0xa9, 0x42, 0xe9, 0x2, 0x22, 0xc9, 0x69, 0x82, 0xa2, 0x49, 0xe2, 0x9, 0x29, 0xc2, + 0xb0, 0x5b, 0x7b, 0x90, 0x3b, 0xd0, 0xf0, 0x1b, 0xbb, 0x50, 0x70, 0x9b, 0x30, 0xdb, 0xfb, 0x10, + 0xa6, 0x4d, 0x6d, 0x86, 0x2d, 0xc6, 0xe6, 0xd, 0xad, 0x46, 0x66, 0x8d, 0x26, 0xcd, 0xed, 0x6, + 0x9c, 0x77, 0x57, 0xbc, 0x17, 0xfc, 0xdc, 0x37, 0x97, 0x7c, 0x5c, 0xb7, 0x1c, 0xf7, 0xd7, 0x3c, + 0x8a, 0x61, 0x41, 0xaa, 0x1, 0xea, 0xca, 0x21, 0x81, 0x6a, 0x4a, 0xa1, 0xa, 0xe1, 0xc1, 0x2a, + 0xe8, 0x3, 0x23, 0xc8, 0x63, 0x88, 0xa8, 0x43, 0xe3, 0x8, 0x28, 0xc3, 0x68, 0x83, 0xa3, 0x48, + 0xfe, 0x15, 0x35, 0xde, 0x75, 0x9e, 0xbe, 0x55, 0xf5, 0x1e, 0x3e, 0xd5, 0x7e, 0x95, 0xb5, 0x5e, + 0xc4, 0x2f, 0xf, 0xe4, 0x4f, 0xa4, 0x84, 0x6f, 0xcf, 0x24, 0x4, 0xef, 0x44, 0xaf, 0x8f, 0x64, + 0xd2, 0x39, 0x19, 0xf2, 0x59, 0xb2, 0x92, 0x79, 0xd9, 0x32, 0x12, 0xf9, 0x52, 0xb9, 0x99, 0x72, + ], + [ + 0x0, 0xec, 0xc5, 0x29, 0x97, 0x7b, 0x52, 0xbe, 0x33, 0xdf, 0xf6, 0x1a, 0xa4, 0x48, 0x61, 0x8d, + 0x66, 0x8a, 0xa3, 0x4f, 0xf1, 0x1d, 0x34, 0xd8, 0x55, 0xb9, 0x90, 0x7c, 0xc2, 0x2e, 0x7, 0xeb, + 0xcc, 0x20, 0x9, 0xe5, 0x5b, 0xb7, 0x9e, 0x72, 0xff, 0x13, 0x3a, 0xd6, 0x68, 0x84, 0xad, 0x41, + 0xaa, 0x46, 0x6f, 0x83, 0x3d, 0xd1, 0xf8, 0x14, 0x99, 0x75, 0x5c, 0xb0, 0xe, 0xe2, 0xcb, 0x27, + 0x85, 0x69, 0x40, 0xac, 0x12, 0xfe, 0xd7, 0x3b, 0xb6, 0x5a, 0x73, 0x9f, 0x21, 0xcd, 0xe4, 0x8, + 0xe3, 0xf, 0x26, 0xca, 0x74, 0x98, 0xb1, 0x5d, 0xd0, 0x3c, 0x15, 0xf9, 0x47, 0xab, 0x82, 0x6e, + 0x49, 0xa5, 0x8c, 0x60, 0xde, 0x32, 0x1b, 0xf7, 0x7a, 0x96, 0xbf, 0x53, 0xed, 0x1, 0x28, 0xc4, + 0x2f, 0xc3, 0xea, 0x6, 0xb8, 0x54, 0x7d, 0x91, 0x1c, 0xf0, 0xd9, 0x35, 0x8b, 0x67, 0x4e, 0xa2, + 0x17, 0xfb, 0xd2, 0x3e, 0x80, 0x6c, 0x45, 0xa9, 0x24, 0xc8, 0xe1, 0xd, 0xb3, 0x5f, 0x76, 0x9a, + 0x71, 0x9d, 0xb4, 0x58, 0xe6, 0xa, 0x23, 0xcf, 0x42, 0xae, 0x87, 0x6b, 0xd5, 0x39, 0x10, 0xfc, + 0xdb, 0x37, 0x1e, 0xf2, 0x4c, 0xa0, 0x89, 0x65, 0xe8, 0x4, 0x2d, 0xc1, 0x7f, 0x93, 0xba, 0x56, + 0xbd, 0x51, 0x78, 0x94, 0x2a, 0xc6, 0xef, 0x3, 0x8e, 0x62, 0x4b, 0xa7, 0x19, 0xf5, 0xdc, 0x30, + 0x92, 0x7e, 0x57, 0xbb, 0x5, 0xe9, 0xc0, 0x2c, 0xa1, 0x4d, 0x64, 0x88, 0x36, 0xda, 0xf3, 0x1f, + 0xf4, 0x18, 0x31, 0xdd, 0x63, 0x8f, 0xa6, 0x4a, 0xc7, 0x2b, 0x2, 0xee, 0x50, 0xbc, 0x95, 0x79, + 0x5e, 0xb2, 0x9b, 0x77, 0xc9, 0x25, 0xc, 0xe0, 0x6d, 0x81, 0xa8, 0x44, 0xfa, 0x16, 0x3f, 0xd3, + 0x38, 0xd4, 0xfd, 0x11, 0xaf, 0x43, 0x6a, 0x86, 0xb, 0xe7, 0xce, 0x22, 0x9c, 0x70, 0x59, 0xb5, + ], + [ + 0x0, 0xed, 0xc7, 0x2a, 0x93, 0x7e, 0x54, 0xb9, 0x3b, 0xd6, 0xfc, 0x11, 0xa8, 0x45, 0x6f, 0x82, + 0x76, 0x9b, 0xb1, 0x5c, 0xe5, 0x8, 0x22, 0xcf, 0x4d, 0xa0, 0x8a, 0x67, 0xde, 0x33, 0x19, 0xf4, + 0xec, 0x1, 0x2b, 0xc6, 0x7f, 0x92, 0xb8, 0x55, 0xd7, 0x3a, 0x10, 0xfd, 0x44, 0xa9, 0x83, 0x6e, + 0x9a, 0x77, 0x5d, 0xb0, 0x9, 0xe4, 0xce, 0x23, 0xa1, 0x4c, 0x66, 0x8b, 0x32, 0xdf, 0xf5, 0x18, + 0xc5, 0x28, 0x2, 0xef, 0x56, 0xbb, 0x91, 0x7c, 0xfe, 0x13, 0x39, 0xd4, 0x6d, 0x80, 0xaa, 0x47, + 0xb3, 0x5e, 0x74, 0x99, 0x20, 0xcd, 0xe7, 0xa, 0x88, 0x65, 0x4f, 0xa2, 0x1b, 0xf6, 0xdc, 0x31, + 0x29, 0xc4, 0xee, 0x3, 0xba, 0x57, 0x7d, 0x90, 0x12, 0xff, 0xd5, 0x38, 0x81, 0x6c, 0x46, 0xab, + 0x5f, 0xb2, 0x98, 0x75, 0xcc, 0x21, 0xb, 0xe6, 0x64, 0x89, 0xa3, 0x4e, 0xf7, 0x1a, 0x30, 0xdd, + 0x97, 0x7a, 0x50, 0xbd, 0x4, 0xe9, 0xc3, 0x2e, 0xac, 0x41, 0x6b, 0x86, 0x3f, 0xd2, 0xf8, 0x15, + 0xe1, 0xc, 0x26, 0xcb, 0x72, 0x9f, 0xb5, 0x58, 0xda, 0x37, 0x1d, 0xf0, 0x49, 0xa4, 0x8e, 0x63, + 0x7b, 0x96, 0xbc, 0x51, 0xe8, 0x5, 0x2f, 0xc2, 0x40, 0xad, 0x87, 0x6a, 0xd3, 0x3e, 0x14, 0xf9, + 0xd, 0xe0, 0xca, 0x27, 0x9e, 0x73, 0x59, 0xb4, 0x36, 0xdb, 0xf1, 0x1c, 0xa5, 0x48, 0x62, 0x8f, + 0x52, 0xbf, 0x95, 0x78, 0xc1, 0x2c, 0x6, 0xeb, 0x69, 0x84, 0xae, 0x43, 0xfa, 0x17, 0x3d, 0xd0, + 0x24, 0xc9, 0xe3, 0xe, 0xb7, 0x5a, 0x70, 0x9d, 0x1f, 0xf2, 0xd8, 0x35, 0x8c, 0x61, 0x4b, 0xa6, + 0xbe, 0x53, 0x79, 0x94, 0x2d, 0xc0, 0xea, 0x7, 0x85, 0x68, 0x42, 0xaf, 0x16, 0xfb, 0xd1, 0x3c, + 0xc8, 0x25, 0xf, 0xe2, 0x5b, 0xb6, 0x9c, 0x71, 0xf3, 0x1e, 0x34, 0xd9, 0x60, 0x8d, 0xa7, 0x4a, + ], + [ + 0x0, 0xee, 0xc1, 0x2f, 0x9f, 0x71, 0x5e, 0xb0, 0x23, 0xcd, 0xe2, 0xc, 0xbc, 0x52, 0x7d, 0x93, + 0x46, 0xa8, 0x87, 0x69, 0xd9, 0x37, 0x18, 0xf6, 0x65, 0x8b, 0xa4, 0x4a, 0xfa, 0x14, 0x3b, 0xd5, + 0x8c, 0x62, 0x4d, 0xa3, 0x13, 0xfd, 0xd2, 0x3c, 0xaf, 0x41, 0x6e, 0x80, 0x30, 0xde, 0xf1, 0x1f, + 0xca, 0x24, 0xb, 0xe5, 0x55, 0xbb, 0x94, 0x7a, 0xe9, 0x7, 0x28, 0xc6, 0x76, 0x98, 0xb7, 0x59, + 0x5, 0xeb, 0xc4, 0x2a, 0x9a, 0x74, 0x5b, 0xb5, 0x26, 0xc8, 0xe7, 0x9, 0xb9, 0x57, 0x78, 0x96, + 0x43, 0xad, 0x82, 0x6c, 0xdc, 0x32, 0x1d, 0xf3, 0x60, 0x8e, 0xa1, 0x4f, 0xff, 0x11, 0x3e, 0xd0, + 0x89, 0x67, 0x48, 0xa6, 0x16, 0xf8, 0xd7, 0x39, 0xaa, 0x44, 0x6b, 0x85, 0x35, 0xdb, 0xf4, 0x1a, + 0xcf, 0x21, 0xe, 0xe0, 0x50, 0xbe, 0x91, 0x7f, 0xec, 0x2, 0x2d, 0xc3, 0x73, 0x9d, 0xb2, 0x5c, + 0xa, 0xe4, 0xcb, 0x25, 0x95, 0x7b, 0x54, 0xba, 0x29, 0xc7, 0xe8, 0x6, 0xb6, 0x58, 0x77, 0x99, + 0x4c, 0xa2, 0x8d, 0x63, 0xd3, 0x3d, 0x12, 0xfc, 0x6f, 0x81, 0xae, 0x40, 0xf0, 0x1e, 0x31, 0xdf, + 0x86, 0x68, 0x47, 0xa9, 0x19, 0xf7, 0xd8, 0x36, 0xa5, 0x4b, 0x64, 0x8a, 0x3a, 0xd4, 0xfb, 0x15, + 0xc0, 0x2e, 0x1, 0xef, 0x5f, 0xb1, 0x9e, 0x70, 0xe3, 0xd, 0x22, 0xcc, 0x7c, 0x92, 0xbd, 0x53, + 0xf, 0xe1, 0xce, 0x20, 0x90, 0x7e, 0x51, 0xbf, 0x2c, 0xc2, 0xed, 0x3, 0xb3, 0x5d, 0x72, 0x9c, + 0x49, 0xa7, 0x88, 0x66, 0xd6, 0x38, 0x17, 0xf9, 0x6a, 0x84, 0xab, 0x45, 0xf5, 0x1b, 0x34, 0xda, + 0x83, 0x6d, 0x42, 0xac, 0x1c, 0xf2, 0xdd, 0x33, 0xa0, 0x4e, 0x61, 0x8f, 0x3f, 0xd1, 0xfe, 0x10, + 0xc5, 0x2b, 0x4, 0xea, 0x5a, 0xb4, 0x9b, 0x75, 0xe6, 0x8, 0x27, 0xc9, 0x79, 0x97, 0xb8, 0x56, + ], + [ + 0x0, 0xef, 0xc3, 0x2c, 0x9b, 0x74, 0x58, 0xb7, 0x2b, 0xc4, 0xe8, 0x7, 0xb0, 0x5f, 0x73, 0x9c, + 0x56, 0xb9, 0x95, 0x7a, 0xcd, 0x22, 0xe, 0xe1, 0x7d, 0x92, 0xbe, 0x51, 0xe6, 0x9, 0x25, 0xca, + 0xac, 0x43, 0x6f, 0x80, 0x37, 0xd8, 0xf4, 0x1b, 0x87, 0x68, 0x44, 0xab, 0x1c, 0xf3, 0xdf, 0x30, + 0xfa, 0x15, 0x39, 0xd6, 0x61, 0x8e, 0xa2, 0x4d, 0xd1, 0x3e, 0x12, 0xfd, 0x4a, 0xa5, 0x89, 0x66, + 0x45, 0xaa, 0x86, 0x69, 0xde, 0x31, 0x1d, 0xf2, 0x6e, 0x81, 0xad, 0x42, 0xf5, 0x1a, 0x36, 0xd9, + 0x13, 0xfc, 0xd0, 0x3f, 0x88, 0x67, 0x4b, 0xa4, 0x38, 0xd7, 0xfb, 0x14, 0xa3, 0x4c, 0x60, 0x8f, + 0xe9, 0x6, 0x2a, 0xc5, 0x72, 0x9d, 0xb1, 0x5e, 0xc2, 0x2d, 0x1, 0xee, 0x59, 0xb6, 0x9a, 0x75, + 0xbf, 0x50, 0x7c, 0x93, 0x24, 0xcb, 0xe7, 0x8, 0x94, 0x7b, 0x57, 0xb8, 0xf, 0xe0, 0xcc, 0x23, + 0x8a, 0x65, 0x49, 0xa6, 0x11, 0xfe, 0xd2, 0x3d, 0xa1, 0x4e, 0x62, 0x8d, 0x3a, 0xd5, 0xf9, 0x16, + 0xdc, 0x33, 0x1f, 0xf0, 0x47, 0xa8, 0x84, 0x6b, 0xf7, 0x18, 0x34, 0xdb, 0x6c, 0x83, 0xaf, 0x40, + 0x26, 0xc9, 0xe5, 0xa, 0xbd, 0x52, 0x7e, 0x91, 0xd, 0xe2, 0xce, 0x21, 0x96, 0x79, 0x55, 0xba, + 0x70, 0x9f, 0xb3, 0x5c, 0xeb, 0x4, 0x28, 0xc7, 0x5b, 0xb4, 0x98, 0x77, 0xc0, 0x2f, 0x3, 0xec, + 0xcf, 0x20, 0xc, 0xe3, 0x54, 0xbb, 0x97, 0x78, 0xe4, 0xb, 0x27, 0xc8, 0x7f, 0x90, 0xbc, 0x53, + 0x99, 0x76, 0x5a, 0xb5, 0x2, 0xed, 0xc1, 0x2e, 0xb2, 0x5d, 0x71, 0x9e, 0x29, 0xc6, 0xea, 0x5, + 0x63, 0x8c, 0xa0, 0x4f, 0xf8, 0x17, 0x3b, 0xd4, 0x48, 0xa7, 0x8b, 0x64, 0xd3, 0x3c, 0x10, 0xff, + 0x35, 0xda, 0xf6, 0x19, 0xae, 0x41, 0x6d, 0x82, 0x1e, 0xf1, 0xdd, 0x32, 0x85, 0x6a, 0x46, 0xa9, + ], + [ + 0x0, 0xf0, 0xfd, 0xd, 0xe7, 0x17, 0x1a, 0xea, 0xd3, 0x23, 0x2e, 0xde, 0x34, 0xc4, 0xc9, 0x39, + 0xbb, 0x4b, 0x46, 0xb6, 0x5c, 0xac, 0xa1, 0x51, 0x68, 0x98, 0x95, 0x65, 0x8f, 0x7f, 0x72, 0x82, + 0x6b, 0x9b, 0x96, 0x66, 0x8c, 0x7c, 0x71, 0x81, 0xb8, 0x48, 0x45, 0xb5, 0x5f, 0xaf, 0xa2, 0x52, + 0xd0, 0x20, 0x2d, 0xdd, 0x37, 0xc7, 0xca, 0x3a, 0x3, 0xf3, 0xfe, 0xe, 0xe4, 0x14, 0x19, 0xe9, + 0xd6, 0x26, 0x2b, 0xdb, 0x31, 0xc1, 0xcc, 0x3c, 0x5, 0xf5, 0xf8, 0x8, 0xe2, 0x12, 0x1f, 0xef, + 0x6d, 0x9d, 0x90, 0x60, 0x8a, 0x7a, 0x77, 0x87, 0xbe, 0x4e, 0x43, 0xb3, 0x59, 0xa9, 0xa4, 0x54, + 0xbd, 0x4d, 0x40, 0xb0, 0x5a, 0xaa, 0xa7, 0x57, 0x6e, 0x9e, 0x93, 0x63, 0x89, 0x79, 0x74, 0x84, + 0x6, 0xf6, 0xfb, 0xb, 0xe1, 0x11, 0x1c, 0xec, 0xd5, 0x25, 0x28, 0xd8, 0x32, 0xc2, 0xcf, 0x3f, + 0xb1, 0x41, 0x4c, 0xbc, 0x56, 0xa6, 0xab, 0x5b, 0x62, 0x92, 0x9f, 0x6f, 0x85, 0x75, 0x78, 0x88, + 0xa, 0xfa, 0xf7, 0x7, 0xed, 0x1d, 0x10, 0xe0, 0xd9, 0x29, 0x24, 0xd4, 0x3e, 0xce, 0xc3, 0x33, + 0xda, 0x2a, 0x27, 0xd7, 0x3d, 0xcd, 0xc0, 0x30, 0x9, 0xf9, 0xf4, 0x4, 0xee, 0x1e, 0x13, 0xe3, + 0x61, 0x91, 0x9c, 0x6c, 0x86, 0x76, 0x7b, 0x8b, 0xb2, 0x42, 0x4f, 0xbf, 0x55, 0xa5, 0xa8, 0x58, + 0x67, 0x97, 0x9a, 0x6a, 0x80, 0x70, 0x7d, 0x8d, 0xb4, 0x44, 0x49, 0xb9, 0x53, 0xa3, 0xae, 0x5e, + 0xdc, 0x2c, 0x21, 0xd1, 0x3b, 0xcb, 0xc6, 0x36, 0xf, 0xff, 0xf2, 0x2, 0xe8, 0x18, 0x15, 0xe5, + 0xc, 0xfc, 0xf1, 0x1, 0xeb, 0x1b, 0x16, 0xe6, 0xdf, 0x2f, 0x22, 0xd2, 0x38, 0xc8, 0xc5, 0x35, + 0xb7, 0x47, 0x4a, 0xba, 0x50, 0xa0, 0xad, 0x5d, 0x64, 0x94, 0x99, 0x69, 0x83, 0x73, 0x7e, 0x8e, + ], + [ + 0x0, 0xf1, 0xff, 0xe, 0xe3, 0x12, 0x1c, 0xed, 0xdb, 0x2a, 0x24, 0xd5, 0x38, 0xc9, 0xc7, 0x36, + 0xab, 0x5a, 0x54, 0xa5, 0x48, 0xb9, 0xb7, 0x46, 0x70, 0x81, 0x8f, 0x7e, 0x93, 0x62, 0x6c, 0x9d, + 0x4b, 0xba, 0xb4, 0x45, 0xa8, 0x59, 0x57, 0xa6, 0x90, 0x61, 0x6f, 0x9e, 0x73, 0x82, 0x8c, 0x7d, + 0xe0, 0x11, 0x1f, 0xee, 0x3, 0xf2, 0xfc, 0xd, 0x3b, 0xca, 0xc4, 0x35, 0xd8, 0x29, 0x27, 0xd6, + 0x96, 0x67, 0x69, 0x98, 0x75, 0x84, 0x8a, 0x7b, 0x4d, 0xbc, 0xb2, 0x43, 0xae, 0x5f, 0x51, 0xa0, + 0x3d, 0xcc, 0xc2, 0x33, 0xde, 0x2f, 0x21, 0xd0, 0xe6, 0x17, 0x19, 0xe8, 0x5, 0xf4, 0xfa, 0xb, + 0xdd, 0x2c, 0x22, 0xd3, 0x3e, 0xcf, 0xc1, 0x30, 0x6, 0xf7, 0xf9, 0x8, 0xe5, 0x14, 0x1a, 0xeb, + 0x76, 0x87, 0x89, 0x78, 0x95, 0x64, 0x6a, 0x9b, 0xad, 0x5c, 0x52, 0xa3, 0x4e, 0xbf, 0xb1, 0x40, + 0x31, 0xc0, 0xce, 0x3f, 0xd2, 0x23, 0x2d, 0xdc, 0xea, 0x1b, 0x15, 0xe4, 0x9, 0xf8, 0xf6, 0x7, + 0x9a, 0x6b, 0x65, 0x94, 0x79, 0x88, 0x86, 0x77, 0x41, 0xb0, 0xbe, 0x4f, 0xa2, 0x53, 0x5d, 0xac, + 0x7a, 0x8b, 0x85, 0x74, 0x99, 0x68, 0x66, 0x97, 0xa1, 0x50, 0x5e, 0xaf, 0x42, 0xb3, 0xbd, 0x4c, + 0xd1, 0x20, 0x2e, 0xdf, 0x32, 0xc3, 0xcd, 0x3c, 0xa, 0xfb, 0xf5, 0x4, 0xe9, 0x18, 0x16, 0xe7, + 0xa7, 0x56, 0x58, 0xa9, 0x44, 0xb5, 0xbb, 0x4a, 0x7c, 0x8d, 0x83, 0x72, 0x9f, 0x6e, 0x60, 0x91, + 0xc, 0xfd, 0xf3, 0x2, 0xef, 0x1e, 0x10, 0xe1, 0xd7, 0x26, 0x28, 0xd9, 0x34, 0xc5, 0xcb, 0x3a, + 0xec, 0x1d, 0x13, 0xe2, 0xf, 0xfe, 0xf0, 0x1, 0x37, 0xc6, 0xc8, 0x39, 0xd4, 0x25, 0x2b, 0xda, + 0x47, 0xb6, 0xb8, 0x49, 0xa4, 0x55, 0x5b, 0xaa, 0x9c, 0x6d, 0x63, 0x92, 0x7f, 0x8e, 0x80, 0x71, + ], + [ + 0x0, 0xf2, 0xf9, 0xb, 0xef, 0x1d, 0x16, 0xe4, 0xc3, 0x31, 0x3a, 0xc8, 0x2c, 0xde, 0xd5, 0x27, + 0x9b, 0x69, 0x62, 0x90, 0x74, 0x86, 0x8d, 0x7f, 0x58, 0xaa, 0xa1, 0x53, 0xb7, 0x45, 0x4e, 0xbc, + 0x2b, 0xd9, 0xd2, 0x20, 0xc4, 0x36, 0x3d, 0xcf, 0xe8, 0x1a, 0x11, 0xe3, 0x7, 0xf5, 0xfe, 0xc, + 0xb0, 0x42, 0x49, 0xbb, 0x5f, 0xad, 0xa6, 0x54, 0x73, 0x81, 0x8a, 0x78, 0x9c, 0x6e, 0x65, 0x97, + 0x56, 0xa4, 0xaf, 0x5d, 0xb9, 0x4b, 0x40, 0xb2, 0x95, 0x67, 0x6c, 0x9e, 0x7a, 0x88, 0x83, 0x71, + 0xcd, 0x3f, 0x34, 0xc6, 0x22, 0xd0, 0xdb, 0x29, 0xe, 0xfc, 0xf7, 0x5, 0xe1, 0x13, 0x18, 0xea, + 0x7d, 0x8f, 0x84, 0x76, 0x92, 0x60, 0x6b, 0x99, 0xbe, 0x4c, 0x47, 0xb5, 0x51, 0xa3, 0xa8, 0x5a, + 0xe6, 0x14, 0x1f, 0xed, 0x9, 0xfb, 0xf0, 0x2, 0x25, 0xd7, 0xdc, 0x2e, 0xca, 0x38, 0x33, 0xc1, + 0xac, 0x5e, 0x55, 0xa7, 0x43, 0xb1, 0xba, 0x48, 0x6f, 0x9d, 0x96, 0x64, 0x80, 0x72, 0x79, 0x8b, + 0x37, 0xc5, 0xce, 0x3c, 0xd8, 0x2a, 0x21, 0xd3, 0xf4, 0x6, 0xd, 0xff, 0x1b, 0xe9, 0xe2, 0x10, + 0x87, 0x75, 0x7e, 0x8c, 0x68, 0x9a, 0x91, 0x63, 0x44, 0xb6, 0xbd, 0x4f, 0xab, 0x59, 0x52, 0xa0, + 0x1c, 0xee, 0xe5, 0x17, 0xf3, 0x1, 0xa, 0xf8, 0xdf, 0x2d, 0x26, 0xd4, 0x30, 0xc2, 0xc9, 0x3b, + 0xfa, 0x8, 0x3, 0xf1, 0x15, 0xe7, 0xec, 0x1e, 0x39, 0xcb, 0xc0, 0x32, 0xd6, 0x24, 0x2f, 0xdd, + 0x61, 0x93, 0x98, 0x6a, 0x8e, 0x7c, 0x77, 0x85, 0xa2, 0x50, 0x5b, 0xa9, 0x4d, 0xbf, 0xb4, 0x46, + 0xd1, 0x23, 0x28, 0xda, 0x3e, 0xcc, 0xc7, 0x35, 0x12, 0xe0, 0xeb, 0x19, 0xfd, 0xf, 0x4, 0xf6, + 0x4a, 0xb8, 0xb3, 0x41, 0xa5, 0x57, 0x5c, 0xae, 0x89, 0x7b, 0x70, 0x82, 0x66, 0x94, 0x9f, 0x6d, + ], + [ + 0x0, 0xf3, 0xfb, 0x8, 0xeb, 0x18, 0x10, 0xe3, 0xcb, 0x38, 0x30, 0xc3, 0x20, 0xd3, 0xdb, 0x28, + 0x8b, 0x78, 0x70, 0x83, 0x60, 0x93, 0x9b, 0x68, 0x40, 0xb3, 0xbb, 0x48, 0xab, 0x58, 0x50, 0xa3, + 0xb, 0xf8, 0xf0, 0x3, 0xe0, 0x13, 0x1b, 0xe8, 0xc0, 0x33, 0x3b, 0xc8, 0x2b, 0xd8, 0xd0, 0x23, + 0x80, 0x73, 0x7b, 0x88, 0x6b, 0x98, 0x90, 0x63, 0x4b, 0xb8, 0xb0, 0x43, 0xa0, 0x53, 0x5b, 0xa8, + 0x16, 0xe5, 0xed, 0x1e, 0xfd, 0xe, 0x6, 0xf5, 0xdd, 0x2e, 0x26, 0xd5, 0x36, 0xc5, 0xcd, 0x3e, + 0x9d, 0x6e, 0x66, 0x95, 0x76, 0x85, 0x8d, 0x7e, 0x56, 0xa5, 0xad, 0x5e, 0xbd, 0x4e, 0x46, 0xb5, + 0x1d, 0xee, 0xe6, 0x15, 0xf6, 0x5, 0xd, 0xfe, 0xd6, 0x25, 0x2d, 0xde, 0x3d, 0xce, 0xc6, 0x35, + 0x96, 0x65, 0x6d, 0x9e, 0x7d, 0x8e, 0x86, 0x75, 0x5d, 0xae, 0xa6, 0x55, 0xb6, 0x45, 0x4d, 0xbe, + 0x2c, 0xdf, 0xd7, 0x24, 0xc7, 0x34, 0x3c, 0xcf, 0xe7, 0x14, 0x1c, 0xef, 0xc, 0xff, 0xf7, 0x4, + 0xa7, 0x54, 0x5c, 0xaf, 0x4c, 0xbf, 0xb7, 0x44, 0x6c, 0x9f, 0x97, 0x64, 0x87, 0x74, 0x7c, 0x8f, + 0x27, 0xd4, 0xdc, 0x2f, 0xcc, 0x3f, 0x37, 0xc4, 0xec, 0x1f, 0x17, 0xe4, 0x7, 0xf4, 0xfc, 0xf, + 0xac, 0x5f, 0x57, 0xa4, 0x47, 0xb4, 0xbc, 0x4f, 0x67, 0x94, 0x9c, 0x6f, 0x8c, 0x7f, 0x77, 0x84, + 0x3a, 0xc9, 0xc1, 0x32, 0xd1, 0x22, 0x2a, 0xd9, 0xf1, 0x2, 0xa, 0xf9, 0x1a, 0xe9, 0xe1, 0x12, + 0xb1, 0x42, 0x4a, 0xb9, 0x5a, 0xa9, 0xa1, 0x52, 0x7a, 0x89, 0x81, 0x72, 0x91, 0x62, 0x6a, 0x99, + 0x31, 0xc2, 0xca, 0x39, 0xda, 0x29, 0x21, 0xd2, 0xfa, 0x9, 0x1, 0xf2, 0x11, 0xe2, 0xea, 0x19, + 0xba, 0x49, 0x41, 0xb2, 0x51, 0xa2, 0xaa, 0x59, 0x71, 0x82, 0x8a, 0x79, 0x9a, 0x69, 0x61, 0x92, + ], + [ + 0x0, 0xf4, 0xf5, 0x1, 0xf7, 0x3, 0x2, 0xf6, 0xf3, 0x7, 0x6, 0xf2, 0x4, 0xf0, 0xf1, 0x5, 0xfb, + 0xf, 0xe, 0xfa, 0xc, 0xf8, 0xf9, 0xd, 0x8, 0xfc, 0xfd, 0x9, 0xff, 0xb, 0xa, 0xfe, 0xeb, 0x1f, + 0x1e, 0xea, 0x1c, 0xe8, 0xe9, 0x1d, 0x18, 0xec, 0xed, 0x19, 0xef, 0x1b, 0x1a, 0xee, 0x10, 0xe4, + 0xe5, 0x11, 0xe7, 0x13, 0x12, 0xe6, 0xe3, 0x17, 0x16, 0xe2, 0x14, 0xe0, 0xe1, 0x15, 0xcb, 0x3f, + 0x3e, 0xca, 0x3c, 0xc8, 0xc9, 0x3d, 0x38, 0xcc, 0xcd, 0x39, 0xcf, 0x3b, 0x3a, 0xce, 0x30, 0xc4, + 0xc5, 0x31, 0xc7, 0x33, 0x32, 0xc6, 0xc3, 0x37, 0x36, 0xc2, 0x34, 0xc0, 0xc1, 0x35, 0x20, 0xd4, + 0xd5, 0x21, 0xd7, 0x23, 0x22, 0xd6, 0xd3, 0x27, 0x26, 0xd2, 0x24, 0xd0, 0xd1, 0x25, 0xdb, 0x2f, + 0x2e, 0xda, 0x2c, 0xd8, 0xd9, 0x2d, 0x28, 0xdc, 0xdd, 0x29, 0xdf, 0x2b, 0x2a, 0xde, 0x8b, 0x7f, + 0x7e, 0x8a, 0x7c, 0x88, 0x89, 0x7d, 0x78, 0x8c, 0x8d, 0x79, 0x8f, 0x7b, 0x7a, 0x8e, 0x70, 0x84, + 0x85, 0x71, 0x87, 0x73, 0x72, 0x86, 0x83, 0x77, 0x76, 0x82, 0x74, 0x80, 0x81, 0x75, 0x60, 0x94, + 0x95, 0x61, 0x97, 0x63, 0x62, 0x96, 0x93, 0x67, 0x66, 0x92, 0x64, 0x90, 0x91, 0x65, 0x9b, 0x6f, + 0x6e, 0x9a, 0x6c, 0x98, 0x99, 0x6d, 0x68, 0x9c, 0x9d, 0x69, 0x9f, 0x6b, 0x6a, 0x9e, 0x40, 0xb4, + 0xb5, 0x41, 0xb7, 0x43, 0x42, 0xb6, 0xb3, 0x47, 0x46, 0xb2, 0x44, 0xb0, 0xb1, 0x45, 0xbb, 0x4f, + 0x4e, 0xba, 0x4c, 0xb8, 0xb9, 0x4d, 0x48, 0xbc, 0xbd, 0x49, 0xbf, 0x4b, 0x4a, 0xbe, 0xab, 0x5f, + 0x5e, 0xaa, 0x5c, 0xa8, 0xa9, 0x5d, 0x58, 0xac, 0xad, 0x59, 0xaf, 0x5b, 0x5a, 0xae, 0x50, 0xa4, + 0xa5, 0x51, 0xa7, 0x53, 0x52, 0xa6, 0xa3, 0x57, 0x56, 0xa2, 0x54, 0xa0, 0xa1, 0x55, + ], + [ + 0x0, 0xf5, 0xf7, 0x2, 0xf3, 0x6, 0x4, 0xf1, 0xfb, 0xe, 0xc, 0xf9, 0x8, 0xfd, 0xff, 0xa, 0xeb, + 0x1e, 0x1c, 0xe9, 0x18, 0xed, 0xef, 0x1a, 0x10, 0xe5, 0xe7, 0x12, 0xe3, 0x16, 0x14, 0xe1, 0xcb, + 0x3e, 0x3c, 0xc9, 0x38, 0xcd, 0xcf, 0x3a, 0x30, 0xc5, 0xc7, 0x32, 0xc3, 0x36, 0x34, 0xc1, 0x20, + 0xd5, 0xd7, 0x22, 0xd3, 0x26, 0x24, 0xd1, 0xdb, 0x2e, 0x2c, 0xd9, 0x28, 0xdd, 0xdf, 0x2a, 0x8b, + 0x7e, 0x7c, 0x89, 0x78, 0x8d, 0x8f, 0x7a, 0x70, 0x85, 0x87, 0x72, 0x83, 0x76, 0x74, 0x81, 0x60, + 0x95, 0x97, 0x62, 0x93, 0x66, 0x64, 0x91, 0x9b, 0x6e, 0x6c, 0x99, 0x68, 0x9d, 0x9f, 0x6a, 0x40, + 0xb5, 0xb7, 0x42, 0xb3, 0x46, 0x44, 0xb1, 0xbb, 0x4e, 0x4c, 0xb9, 0x48, 0xbd, 0xbf, 0x4a, 0xab, + 0x5e, 0x5c, 0xa9, 0x58, 0xad, 0xaf, 0x5a, 0x50, 0xa5, 0xa7, 0x52, 0xa3, 0x56, 0x54, 0xa1, 0xb, + 0xfe, 0xfc, 0x9, 0xf8, 0xd, 0xf, 0xfa, 0xf0, 0x5, 0x7, 0xf2, 0x3, 0xf6, 0xf4, 0x1, 0xe0, 0x15, + 0x17, 0xe2, 0x13, 0xe6, 0xe4, 0x11, 0x1b, 0xee, 0xec, 0x19, 0xe8, 0x1d, 0x1f, 0xea, 0xc0, 0x35, + 0x37, 0xc2, 0x33, 0xc6, 0xc4, 0x31, 0x3b, 0xce, 0xcc, 0x39, 0xc8, 0x3d, 0x3f, 0xca, 0x2b, 0xde, + 0xdc, 0x29, 0xd8, 0x2d, 0x2f, 0xda, 0xd0, 0x25, 0x27, 0xd2, 0x23, 0xd6, 0xd4, 0x21, 0x80, 0x75, + 0x77, 0x82, 0x73, 0x86, 0x84, 0x71, 0x7b, 0x8e, 0x8c, 0x79, 0x88, 0x7d, 0x7f, 0x8a, 0x6b, 0x9e, + 0x9c, 0x69, 0x98, 0x6d, 0x6f, 0x9a, 0x90, 0x65, 0x67, 0x92, 0x63, 0x96, 0x94, 0x61, 0x4b, 0xbe, + 0xbc, 0x49, 0xb8, 0x4d, 0x4f, 0xba, 0xb0, 0x45, 0x47, 0xb2, 0x43, 0xb6, 0xb4, 0x41, 0xa0, 0x55, + 0x57, 0xa2, 0x53, 0xa6, 0xa4, 0x51, 0x5b, 0xae, 0xac, 0x59, 0xa8, 0x5d, 0x5f, 0xaa, + ], + [ + 0x0, 0xf6, 0xf1, 0x7, 0xff, 0x9, 0xe, 0xf8, 0xe3, 0x15, 0x12, 0xe4, 0x1c, 0xea, 0xed, 0x1b, + 0xdb, 0x2d, 0x2a, 0xdc, 0x24, 0xd2, 0xd5, 0x23, 0x38, 0xce, 0xc9, 0x3f, 0xc7, 0x31, 0x36, 0xc0, + 0xab, 0x5d, 0x5a, 0xac, 0x54, 0xa2, 0xa5, 0x53, 0x48, 0xbe, 0xb9, 0x4f, 0xb7, 0x41, 0x46, 0xb0, + 0x70, 0x86, 0x81, 0x77, 0x8f, 0x79, 0x7e, 0x88, 0x93, 0x65, 0x62, 0x94, 0x6c, 0x9a, 0x9d, 0x6b, + 0x4b, 0xbd, 0xba, 0x4c, 0xb4, 0x42, 0x45, 0xb3, 0xa8, 0x5e, 0x59, 0xaf, 0x57, 0xa1, 0xa6, 0x50, + 0x90, 0x66, 0x61, 0x97, 0x6f, 0x99, 0x9e, 0x68, 0x73, 0x85, 0x82, 0x74, 0x8c, 0x7a, 0x7d, 0x8b, + 0xe0, 0x16, 0x11, 0xe7, 0x1f, 0xe9, 0xee, 0x18, 0x3, 0xf5, 0xf2, 0x4, 0xfc, 0xa, 0xd, 0xfb, + 0x3b, 0xcd, 0xca, 0x3c, 0xc4, 0x32, 0x35, 0xc3, 0xd8, 0x2e, 0x29, 0xdf, 0x27, 0xd1, 0xd6, 0x20, + 0x96, 0x60, 0x67, 0x91, 0x69, 0x9f, 0x98, 0x6e, 0x75, 0x83, 0x84, 0x72, 0x8a, 0x7c, 0x7b, 0x8d, + 0x4d, 0xbb, 0xbc, 0x4a, 0xb2, 0x44, 0x43, 0xb5, 0xae, 0x58, 0x5f, 0xa9, 0x51, 0xa7, 0xa0, 0x56, + 0x3d, 0xcb, 0xcc, 0x3a, 0xc2, 0x34, 0x33, 0xc5, 0xde, 0x28, 0x2f, 0xd9, 0x21, 0xd7, 0xd0, 0x26, + 0xe6, 0x10, 0x17, 0xe1, 0x19, 0xef, 0xe8, 0x1e, 0x5, 0xf3, 0xf4, 0x2, 0xfa, 0xc, 0xb, 0xfd, + 0xdd, 0x2b, 0x2c, 0xda, 0x22, 0xd4, 0xd3, 0x25, 0x3e, 0xc8, 0xcf, 0x39, 0xc1, 0x37, 0x30, 0xc6, + 0x6, 0xf0, 0xf7, 0x1, 0xf9, 0xf, 0x8, 0xfe, 0xe5, 0x13, 0x14, 0xe2, 0x1a, 0xec, 0xeb, 0x1d, + 0x76, 0x80, 0x87, 0x71, 0x89, 0x7f, 0x78, 0x8e, 0x95, 0x63, 0x64, 0x92, 0x6a, 0x9c, 0x9b, 0x6d, + 0xad, 0x5b, 0x5c, 0xaa, 0x52, 0xa4, 0xa3, 0x55, 0x4e, 0xb8, 0xbf, 0x49, 0xb1, 0x47, 0x40, 0xb6, + ], + [ + 0x0, 0xf7, 0xf3, 0x4, 0xfb, 0xc, 0x8, 0xff, 0xeb, 0x1c, 0x18, 0xef, 0x10, 0xe7, 0xe3, 0x14, + 0xcb, 0x3c, 0x38, 0xcf, 0x30, 0xc7, 0xc3, 0x34, 0x20, 0xd7, 0xd3, 0x24, 0xdb, 0x2c, 0x28, 0xdf, + 0x8b, 0x7c, 0x78, 0x8f, 0x70, 0x87, 0x83, 0x74, 0x60, 0x97, 0x93, 0x64, 0x9b, 0x6c, 0x68, 0x9f, + 0x40, 0xb7, 0xb3, 0x44, 0xbb, 0x4c, 0x48, 0xbf, 0xab, 0x5c, 0x58, 0xaf, 0x50, 0xa7, 0xa3, 0x54, + 0xb, 0xfc, 0xf8, 0xf, 0xf0, 0x7, 0x3, 0xf4, 0xe0, 0x17, 0x13, 0xe4, 0x1b, 0xec, 0xe8, 0x1f, + 0xc0, 0x37, 0x33, 0xc4, 0x3b, 0xcc, 0xc8, 0x3f, 0x2b, 0xdc, 0xd8, 0x2f, 0xd0, 0x27, 0x23, 0xd4, + 0x80, 0x77, 0x73, 0x84, 0x7b, 0x8c, 0x88, 0x7f, 0x6b, 0x9c, 0x98, 0x6f, 0x90, 0x67, 0x63, 0x94, + 0x4b, 0xbc, 0xb8, 0x4f, 0xb0, 0x47, 0x43, 0xb4, 0xa0, 0x57, 0x53, 0xa4, 0x5b, 0xac, 0xa8, 0x5f, + 0x16, 0xe1, 0xe5, 0x12, 0xed, 0x1a, 0x1e, 0xe9, 0xfd, 0xa, 0xe, 0xf9, 0x6, 0xf1, 0xf5, 0x2, + 0xdd, 0x2a, 0x2e, 0xd9, 0x26, 0xd1, 0xd5, 0x22, 0x36, 0xc1, 0xc5, 0x32, 0xcd, 0x3a, 0x3e, 0xc9, + 0x9d, 0x6a, 0x6e, 0x99, 0x66, 0x91, 0x95, 0x62, 0x76, 0x81, 0x85, 0x72, 0x8d, 0x7a, 0x7e, 0x89, + 0x56, 0xa1, 0xa5, 0x52, 0xad, 0x5a, 0x5e, 0xa9, 0xbd, 0x4a, 0x4e, 0xb9, 0x46, 0xb1, 0xb5, 0x42, + 0x1d, 0xea, 0xee, 0x19, 0xe6, 0x11, 0x15, 0xe2, 0xf6, 0x1, 0x5, 0xf2, 0xd, 0xfa, 0xfe, 0x9, + 0xd6, 0x21, 0x25, 0xd2, 0x2d, 0xda, 0xde, 0x29, 0x3d, 0xca, 0xce, 0x39, 0xc6, 0x31, 0x35, 0xc2, + 0x96, 0x61, 0x65, 0x92, 0x6d, 0x9a, 0x9e, 0x69, 0x7d, 0x8a, 0x8e, 0x79, 0x86, 0x71, 0x75, 0x82, + 0x5d, 0xaa, 0xae, 0x59, 0xa6, 0x51, 0x55, 0xa2, 0xb6, 0x41, 0x45, 0xb2, 0x4d, 0xba, 0xbe, 0x49, + ], + [ + 0x0, 0xf8, 0xed, 0x15, 0xc7, 0x3f, 0x2a, 0xd2, 0x93, 0x6b, 0x7e, 0x86, 0x54, 0xac, 0xb9, 0x41, + 0x3b, 0xc3, 0xd6, 0x2e, 0xfc, 0x4, 0x11, 0xe9, 0xa8, 0x50, 0x45, 0xbd, 0x6f, 0x97, 0x82, 0x7a, + 0x76, 0x8e, 0x9b, 0x63, 0xb1, 0x49, 0x5c, 0xa4, 0xe5, 0x1d, 0x8, 0xf0, 0x22, 0xda, 0xcf, 0x37, + 0x4d, 0xb5, 0xa0, 0x58, 0x8a, 0x72, 0x67, 0x9f, 0xde, 0x26, 0x33, 0xcb, 0x19, 0xe1, 0xf4, 0xc, + 0xec, 0x14, 0x1, 0xf9, 0x2b, 0xd3, 0xc6, 0x3e, 0x7f, 0x87, 0x92, 0x6a, 0xb8, 0x40, 0x55, 0xad, + 0xd7, 0x2f, 0x3a, 0xc2, 0x10, 0xe8, 0xfd, 0x5, 0x44, 0xbc, 0xa9, 0x51, 0x83, 0x7b, 0x6e, 0x96, + 0x9a, 0x62, 0x77, 0x8f, 0x5d, 0xa5, 0xb0, 0x48, 0x9, 0xf1, 0xe4, 0x1c, 0xce, 0x36, 0x23, 0xdb, + 0xa1, 0x59, 0x4c, 0xb4, 0x66, 0x9e, 0x8b, 0x73, 0x32, 0xca, 0xdf, 0x27, 0xf5, 0xd, 0x18, 0xe0, + 0xc5, 0x3d, 0x28, 0xd0, 0x2, 0xfa, 0xef, 0x17, 0x56, 0xae, 0xbb, 0x43, 0x91, 0x69, 0x7c, 0x84, + 0xfe, 0x6, 0x13, 0xeb, 0x39, 0xc1, 0xd4, 0x2c, 0x6d, 0x95, 0x80, 0x78, 0xaa, 0x52, 0x47, 0xbf, + 0xb3, 0x4b, 0x5e, 0xa6, 0x74, 0x8c, 0x99, 0x61, 0x20, 0xd8, 0xcd, 0x35, 0xe7, 0x1f, 0xa, 0xf2, + 0x88, 0x70, 0x65, 0x9d, 0x4f, 0xb7, 0xa2, 0x5a, 0x1b, 0xe3, 0xf6, 0xe, 0xdc, 0x24, 0x31, 0xc9, + 0x29, 0xd1, 0xc4, 0x3c, 0xee, 0x16, 0x3, 0xfb, 0xba, 0x42, 0x57, 0xaf, 0x7d, 0x85, 0x90, 0x68, + 0x12, 0xea, 0xff, 0x7, 0xd5, 0x2d, 0x38, 0xc0, 0x81, 0x79, 0x6c, 0x94, 0x46, 0xbe, 0xab, 0x53, + 0x5f, 0xa7, 0xb2, 0x4a, 0x98, 0x60, 0x75, 0x8d, 0xcc, 0x34, 0x21, 0xd9, 0xb, 0xf3, 0xe6, 0x1e, + 0x64, 0x9c, 0x89, 0x71, 0xa3, 0x5b, 0x4e, 0xb6, 0xf7, 0xf, 0x1a, 0xe2, 0x30, 0xc8, 0xdd, 0x25, + ], + [ + 0x0, 0xf9, 0xef, 0x16, 0xc3, 0x3a, 0x2c, 0xd5, 0x9b, 0x62, 0x74, 0x8d, 0x58, 0xa1, 0xb7, 0x4e, + 0x2b, 0xd2, 0xc4, 0x3d, 0xe8, 0x11, 0x7, 0xfe, 0xb0, 0x49, 0x5f, 0xa6, 0x73, 0x8a, 0x9c, 0x65, + 0x56, 0xaf, 0xb9, 0x40, 0x95, 0x6c, 0x7a, 0x83, 0xcd, 0x34, 0x22, 0xdb, 0xe, 0xf7, 0xe1, 0x18, + 0x7d, 0x84, 0x92, 0x6b, 0xbe, 0x47, 0x51, 0xa8, 0xe6, 0x1f, 0x9, 0xf0, 0x25, 0xdc, 0xca, 0x33, + 0xac, 0x55, 0x43, 0xba, 0x6f, 0x96, 0x80, 0x79, 0x37, 0xce, 0xd8, 0x21, 0xf4, 0xd, 0x1b, 0xe2, + 0x87, 0x7e, 0x68, 0x91, 0x44, 0xbd, 0xab, 0x52, 0x1c, 0xe5, 0xf3, 0xa, 0xdf, 0x26, 0x30, 0xc9, + 0xfa, 0x3, 0x15, 0xec, 0x39, 0xc0, 0xd6, 0x2f, 0x61, 0x98, 0x8e, 0x77, 0xa2, 0x5b, 0x4d, 0xb4, + 0xd1, 0x28, 0x3e, 0xc7, 0x12, 0xeb, 0xfd, 0x4, 0x4a, 0xb3, 0xa5, 0x5c, 0x89, 0x70, 0x66, 0x9f, + 0x45, 0xbc, 0xaa, 0x53, 0x86, 0x7f, 0x69, 0x90, 0xde, 0x27, 0x31, 0xc8, 0x1d, 0xe4, 0xf2, 0xb, + 0x6e, 0x97, 0x81, 0x78, 0xad, 0x54, 0x42, 0xbb, 0xf5, 0xc, 0x1a, 0xe3, 0x36, 0xcf, 0xd9, 0x20, + 0x13, 0xea, 0xfc, 0x5, 0xd0, 0x29, 0x3f, 0xc6, 0x88, 0x71, 0x67, 0x9e, 0x4b, 0xb2, 0xa4, 0x5d, + 0x38, 0xc1, 0xd7, 0x2e, 0xfb, 0x2, 0x14, 0xed, 0xa3, 0x5a, 0x4c, 0xb5, 0x60, 0x99, 0x8f, 0x76, + 0xe9, 0x10, 0x6, 0xff, 0x2a, 0xd3, 0xc5, 0x3c, 0x72, 0x8b, 0x9d, 0x64, 0xb1, 0x48, 0x5e, 0xa7, + 0xc2, 0x3b, 0x2d, 0xd4, 0x1, 0xf8, 0xee, 0x17, 0x59, 0xa0, 0xb6, 0x4f, 0x9a, 0x63, 0x75, 0x8c, + 0xbf, 0x46, 0x50, 0xa9, 0x7c, 0x85, 0x93, 0x6a, 0x24, 0xdd, 0xcb, 0x32, 0xe7, 0x1e, 0x8, 0xf1, + 0x94, 0x6d, 0x7b, 0x82, 0x57, 0xae, 0xb8, 0x41, 0xf, 0xf6, 0xe0, 0x19, 0xcc, 0x35, 0x23, 0xda, + ], + [ + 0x0, 0xfa, 0xe9, 0x13, 0xcf, 0x35, 0x26, 0xdc, 0x83, 0x79, 0x6a, 0x90, 0x4c, 0xb6, 0xa5, 0x5f, + 0x1b, 0xe1, 0xf2, 0x8, 0xd4, 0x2e, 0x3d, 0xc7, 0x98, 0x62, 0x71, 0x8b, 0x57, 0xad, 0xbe, 0x44, + 0x36, 0xcc, 0xdf, 0x25, 0xf9, 0x3, 0x10, 0xea, 0xb5, 0x4f, 0x5c, 0xa6, 0x7a, 0x80, 0x93, 0x69, + 0x2d, 0xd7, 0xc4, 0x3e, 0xe2, 0x18, 0xb, 0xf1, 0xae, 0x54, 0x47, 0xbd, 0x61, 0x9b, 0x88, 0x72, + 0x6c, 0x96, 0x85, 0x7f, 0xa3, 0x59, 0x4a, 0xb0, 0xef, 0x15, 0x6, 0xfc, 0x20, 0xda, 0xc9, 0x33, + 0x77, 0x8d, 0x9e, 0x64, 0xb8, 0x42, 0x51, 0xab, 0xf4, 0xe, 0x1d, 0xe7, 0x3b, 0xc1, 0xd2, 0x28, + 0x5a, 0xa0, 0xb3, 0x49, 0x95, 0x6f, 0x7c, 0x86, 0xd9, 0x23, 0x30, 0xca, 0x16, 0xec, 0xff, 0x5, + 0x41, 0xbb, 0xa8, 0x52, 0x8e, 0x74, 0x67, 0x9d, 0xc2, 0x38, 0x2b, 0xd1, 0xd, 0xf7, 0xe4, 0x1e, + 0xd8, 0x22, 0x31, 0xcb, 0x17, 0xed, 0xfe, 0x4, 0x5b, 0xa1, 0xb2, 0x48, 0x94, 0x6e, 0x7d, 0x87, + 0xc3, 0x39, 0x2a, 0xd0, 0xc, 0xf6, 0xe5, 0x1f, 0x40, 0xba, 0xa9, 0x53, 0x8f, 0x75, 0x66, 0x9c, + 0xee, 0x14, 0x7, 0xfd, 0x21, 0xdb, 0xc8, 0x32, 0x6d, 0x97, 0x84, 0x7e, 0xa2, 0x58, 0x4b, 0xb1, + 0xf5, 0xf, 0x1c, 0xe6, 0x3a, 0xc0, 0xd3, 0x29, 0x76, 0x8c, 0x9f, 0x65, 0xb9, 0x43, 0x50, 0xaa, + 0xb4, 0x4e, 0x5d, 0xa7, 0x7b, 0x81, 0x92, 0x68, 0x37, 0xcd, 0xde, 0x24, 0xf8, 0x2, 0x11, 0xeb, + 0xaf, 0x55, 0x46, 0xbc, 0x60, 0x9a, 0x89, 0x73, 0x2c, 0xd6, 0xc5, 0x3f, 0xe3, 0x19, 0xa, 0xf0, + 0x82, 0x78, 0x6b, 0x91, 0x4d, 0xb7, 0xa4, 0x5e, 0x1, 0xfb, 0xe8, 0x12, 0xce, 0x34, 0x27, 0xdd, + 0x99, 0x63, 0x70, 0x8a, 0x56, 0xac, 0xbf, 0x45, 0x1a, 0xe0, 0xf3, 0x9, 0xd5, 0x2f, 0x3c, 0xc6, + ], + [ + 0x0, 0xfb, 0xeb, 0x10, 0xcb, 0x30, 0x20, 0xdb, 0x8b, 0x70, 0x60, 0x9b, 0x40, 0xbb, 0xab, 0x50, + 0xb, 0xf0, 0xe0, 0x1b, 0xc0, 0x3b, 0x2b, 0xd0, 0x80, 0x7b, 0x6b, 0x90, 0x4b, 0xb0, 0xa0, 0x5b, + 0x16, 0xed, 0xfd, 0x6, 0xdd, 0x26, 0x36, 0xcd, 0x9d, 0x66, 0x76, 0x8d, 0x56, 0xad, 0xbd, 0x46, + 0x1d, 0xe6, 0xf6, 0xd, 0xd6, 0x2d, 0x3d, 0xc6, 0x96, 0x6d, 0x7d, 0x86, 0x5d, 0xa6, 0xb6, 0x4d, + 0x2c, 0xd7, 0xc7, 0x3c, 0xe7, 0x1c, 0xc, 0xf7, 0xa7, 0x5c, 0x4c, 0xb7, 0x6c, 0x97, 0x87, 0x7c, + 0x27, 0xdc, 0xcc, 0x37, 0xec, 0x17, 0x7, 0xfc, 0xac, 0x57, 0x47, 0xbc, 0x67, 0x9c, 0x8c, 0x77, + 0x3a, 0xc1, 0xd1, 0x2a, 0xf1, 0xa, 0x1a, 0xe1, 0xb1, 0x4a, 0x5a, 0xa1, 0x7a, 0x81, 0x91, 0x6a, + 0x31, 0xca, 0xda, 0x21, 0xfa, 0x1, 0x11, 0xea, 0xba, 0x41, 0x51, 0xaa, 0x71, 0x8a, 0x9a, 0x61, + 0x58, 0xa3, 0xb3, 0x48, 0x93, 0x68, 0x78, 0x83, 0xd3, 0x28, 0x38, 0xc3, 0x18, 0xe3, 0xf3, 0x8, + 0x53, 0xa8, 0xb8, 0x43, 0x98, 0x63, 0x73, 0x88, 0xd8, 0x23, 0x33, 0xc8, 0x13, 0xe8, 0xf8, 0x3, + 0x4e, 0xb5, 0xa5, 0x5e, 0x85, 0x7e, 0x6e, 0x95, 0xc5, 0x3e, 0x2e, 0xd5, 0xe, 0xf5, 0xe5, 0x1e, + 0x45, 0xbe, 0xae, 0x55, 0x8e, 0x75, 0x65, 0x9e, 0xce, 0x35, 0x25, 0xde, 0x5, 0xfe, 0xee, 0x15, + 0x74, 0x8f, 0x9f, 0x64, 0xbf, 0x44, 0x54, 0xaf, 0xff, 0x4, 0x14, 0xef, 0x34, 0xcf, 0xdf, 0x24, + 0x7f, 0x84, 0x94, 0x6f, 0xb4, 0x4f, 0x5f, 0xa4, 0xf4, 0xf, 0x1f, 0xe4, 0x3f, 0xc4, 0xd4, 0x2f, + 0x62, 0x99, 0x89, 0x72, 0xa9, 0x52, 0x42, 0xb9, 0xe9, 0x12, 0x2, 0xf9, 0x22, 0xd9, 0xc9, 0x32, + 0x69, 0x92, 0x82, 0x79, 0xa2, 0x59, 0x49, 0xb2, 0xe2, 0x19, 0x9, 0xf2, 0x29, 0xd2, 0xc2, 0x39, + ], + [ + 0x0, 0xfc, 0xe5, 0x19, 0xd7, 0x2b, 0x32, 0xce, 0xb3, 0x4f, 0x56, 0xaa, 0x64, 0x98, 0x81, 0x7d, + 0x7b, 0x87, 0x9e, 0x62, 0xac, 0x50, 0x49, 0xb5, 0xc8, 0x34, 0x2d, 0xd1, 0x1f, 0xe3, 0xfa, 0x6, + 0xf6, 0xa, 0x13, 0xef, 0x21, 0xdd, 0xc4, 0x38, 0x45, 0xb9, 0xa0, 0x5c, 0x92, 0x6e, 0x77, 0x8b, + 0x8d, 0x71, 0x68, 0x94, 0x5a, 0xa6, 0xbf, 0x43, 0x3e, 0xc2, 0xdb, 0x27, 0xe9, 0x15, 0xc, 0xf0, + 0xf1, 0xd, 0x14, 0xe8, 0x26, 0xda, 0xc3, 0x3f, 0x42, 0xbe, 0xa7, 0x5b, 0x95, 0x69, 0x70, 0x8c, + 0x8a, 0x76, 0x6f, 0x93, 0x5d, 0xa1, 0xb8, 0x44, 0x39, 0xc5, 0xdc, 0x20, 0xee, 0x12, 0xb, 0xf7, + 0x7, 0xfb, 0xe2, 0x1e, 0xd0, 0x2c, 0x35, 0xc9, 0xb4, 0x48, 0x51, 0xad, 0x63, 0x9f, 0x86, 0x7a, + 0x7c, 0x80, 0x99, 0x65, 0xab, 0x57, 0x4e, 0xb2, 0xcf, 0x33, 0x2a, 0xd6, 0x18, 0xe4, 0xfd, 0x1, + 0xff, 0x3, 0x1a, 0xe6, 0x28, 0xd4, 0xcd, 0x31, 0x4c, 0xb0, 0xa9, 0x55, 0x9b, 0x67, 0x7e, 0x82, + 0x84, 0x78, 0x61, 0x9d, 0x53, 0xaf, 0xb6, 0x4a, 0x37, 0xcb, 0xd2, 0x2e, 0xe0, 0x1c, 0x5, 0xf9, + 0x9, 0xf5, 0xec, 0x10, 0xde, 0x22, 0x3b, 0xc7, 0xba, 0x46, 0x5f, 0xa3, 0x6d, 0x91, 0x88, 0x74, + 0x72, 0x8e, 0x97, 0x6b, 0xa5, 0x59, 0x40, 0xbc, 0xc1, 0x3d, 0x24, 0xd8, 0x16, 0xea, 0xf3, 0xf, + 0xe, 0xf2, 0xeb, 0x17, 0xd9, 0x25, 0x3c, 0xc0, 0xbd, 0x41, 0x58, 0xa4, 0x6a, 0x96, 0x8f, 0x73, + 0x75, 0x89, 0x90, 0x6c, 0xa2, 0x5e, 0x47, 0xbb, 0xc6, 0x3a, 0x23, 0xdf, 0x11, 0xed, 0xf4, 0x8, + 0xf8, 0x4, 0x1d, 0xe1, 0x2f, 0xd3, 0xca, 0x36, 0x4b, 0xb7, 0xae, 0x52, 0x9c, 0x60, 0x79, 0x85, + 0x83, 0x7f, 0x66, 0x9a, 0x54, 0xa8, 0xb1, 0x4d, 0x30, 0xcc, 0xd5, 0x29, 0xe7, 0x1b, 0x2, 0xfe, + ], + [ + 0x0, 0xfd, 0xe7, 0x1a, 0xd3, 0x2e, 0x34, 0xc9, 0xbb, 0x46, 0x5c, 0xa1, 0x68, 0x95, 0x8f, 0x72, + 0x6b, 0x96, 0x8c, 0x71, 0xb8, 0x45, 0x5f, 0xa2, 0xd0, 0x2d, 0x37, 0xca, 0x3, 0xfe, 0xe4, 0x19, + 0xd6, 0x2b, 0x31, 0xcc, 0x5, 0xf8, 0xe2, 0x1f, 0x6d, 0x90, 0x8a, 0x77, 0xbe, 0x43, 0x59, 0xa4, + 0xbd, 0x40, 0x5a, 0xa7, 0x6e, 0x93, 0x89, 0x74, 0x6, 0xfb, 0xe1, 0x1c, 0xd5, 0x28, 0x32, 0xcf, + 0xb1, 0x4c, 0x56, 0xab, 0x62, 0x9f, 0x85, 0x78, 0xa, 0xf7, 0xed, 0x10, 0xd9, 0x24, 0x3e, 0xc3, + 0xda, 0x27, 0x3d, 0xc0, 0x9, 0xf4, 0xee, 0x13, 0x61, 0x9c, 0x86, 0x7b, 0xb2, 0x4f, 0x55, 0xa8, + 0x67, 0x9a, 0x80, 0x7d, 0xb4, 0x49, 0x53, 0xae, 0xdc, 0x21, 0x3b, 0xc6, 0xf, 0xf2, 0xe8, 0x15, + 0xc, 0xf1, 0xeb, 0x16, 0xdf, 0x22, 0x38, 0xc5, 0xb7, 0x4a, 0x50, 0xad, 0x64, 0x99, 0x83, 0x7e, + 0x7f, 0x82, 0x98, 0x65, 0xac, 0x51, 0x4b, 0xb6, 0xc4, 0x39, 0x23, 0xde, 0x17, 0xea, 0xf0, 0xd, + 0x14, 0xe9, 0xf3, 0xe, 0xc7, 0x3a, 0x20, 0xdd, 0xaf, 0x52, 0x48, 0xb5, 0x7c, 0x81, 0x9b, 0x66, + 0xa9, 0x54, 0x4e, 0xb3, 0x7a, 0x87, 0x9d, 0x60, 0x12, 0xef, 0xf5, 0x8, 0xc1, 0x3c, 0x26, 0xdb, + 0xc2, 0x3f, 0x25, 0xd8, 0x11, 0xec, 0xf6, 0xb, 0x79, 0x84, 0x9e, 0x63, 0xaa, 0x57, 0x4d, 0xb0, + 0xce, 0x33, 0x29, 0xd4, 0x1d, 0xe0, 0xfa, 0x7, 0x75, 0x88, 0x92, 0x6f, 0xa6, 0x5b, 0x41, 0xbc, + 0xa5, 0x58, 0x42, 0xbf, 0x76, 0x8b, 0x91, 0x6c, 0x1e, 0xe3, 0xf9, 0x4, 0xcd, 0x30, 0x2a, 0xd7, + 0x18, 0xe5, 0xff, 0x2, 0xcb, 0x36, 0x2c, 0xd1, 0xa3, 0x5e, 0x44, 0xb9, 0x70, 0x8d, 0x97, 0x6a, + 0x73, 0x8e, 0x94, 0x69, 0xa0, 0x5d, 0x47, 0xba, 0xc8, 0x35, 0x2f, 0xd2, 0x1b, 0xe6, 0xfc, 0x1, + ], + [ + 0x0, 0xfe, 0xe1, 0x1f, 0xdf, 0x21, 0x3e, 0xc0, 0xa3, 0x5d, 0x42, 0xbc, 0x7c, 0x82, 0x9d, 0x63, + 0x5b, 0xa5, 0xba, 0x44, 0x84, 0x7a, 0x65, 0x9b, 0xf8, 0x6, 0x19, 0xe7, 0x27, 0xd9, 0xc6, 0x38, + 0xb6, 0x48, 0x57, 0xa9, 0x69, 0x97, 0x88, 0x76, 0x15, 0xeb, 0xf4, 0xa, 0xca, 0x34, 0x2b, 0xd5, + 0xed, 0x13, 0xc, 0xf2, 0x32, 0xcc, 0xd3, 0x2d, 0x4e, 0xb0, 0xaf, 0x51, 0x91, 0x6f, 0x70, 0x8e, + 0x71, 0x8f, 0x90, 0x6e, 0xae, 0x50, 0x4f, 0xb1, 0xd2, 0x2c, 0x33, 0xcd, 0xd, 0xf3, 0xec, 0x12, + 0x2a, 0xd4, 0xcb, 0x35, 0xf5, 0xb, 0x14, 0xea, 0x89, 0x77, 0x68, 0x96, 0x56, 0xa8, 0xb7, 0x49, + 0xc7, 0x39, 0x26, 0xd8, 0x18, 0xe6, 0xf9, 0x7, 0x64, 0x9a, 0x85, 0x7b, 0xbb, 0x45, 0x5a, 0xa4, + 0x9c, 0x62, 0x7d, 0x83, 0x43, 0xbd, 0xa2, 0x5c, 0x3f, 0xc1, 0xde, 0x20, 0xe0, 0x1e, 0x1, 0xff, + 0xe2, 0x1c, 0x3, 0xfd, 0x3d, 0xc3, 0xdc, 0x22, 0x41, 0xbf, 0xa0, 0x5e, 0x9e, 0x60, 0x7f, 0x81, + 0xb9, 0x47, 0x58, 0xa6, 0x66, 0x98, 0x87, 0x79, 0x1a, 0xe4, 0xfb, 0x5, 0xc5, 0x3b, 0x24, 0xda, + 0x54, 0xaa, 0xb5, 0x4b, 0x8b, 0x75, 0x6a, 0x94, 0xf7, 0x9, 0x16, 0xe8, 0x28, 0xd6, 0xc9, 0x37, + 0xf, 0xf1, 0xee, 0x10, 0xd0, 0x2e, 0x31, 0xcf, 0xac, 0x52, 0x4d, 0xb3, 0x73, 0x8d, 0x92, 0x6c, + 0x93, 0x6d, 0x72, 0x8c, 0x4c, 0xb2, 0xad, 0x53, 0x30, 0xce, 0xd1, 0x2f, 0xef, 0x11, 0xe, 0xf0, + 0xc8, 0x36, 0x29, 0xd7, 0x17, 0xe9, 0xf6, 0x8, 0x6b, 0x95, 0x8a, 0x74, 0xb4, 0x4a, 0x55, 0xab, + 0x25, 0xdb, 0xc4, 0x3a, 0xfa, 0x4, 0x1b, 0xe5, 0x86, 0x78, 0x67, 0x99, 0x59, 0xa7, 0xb8, 0x46, + 0x7e, 0x80, 0x9f, 0x61, 0xa1, 0x5f, 0x40, 0xbe, 0xdd, 0x23, 0x3c, 0xc2, 0x2, 0xfc, 0xe3, 0x1d, + ], + [ + 0x0, 0xff, 0xe3, 0x1c, 0xdb, 0x24, 0x38, 0xc7, 0xab, 0x54, 0x48, 0xb7, 0x70, 0x8f, 0x93, 0x6c, + 0x4b, 0xb4, 0xa8, 0x57, 0x90, 0x6f, 0x73, 0x8c, 0xe0, 0x1f, 0x3, 0xfc, 0x3b, 0xc4, 0xd8, 0x27, + 0x96, 0x69, 0x75, 0x8a, 0x4d, 0xb2, 0xae, 0x51, 0x3d, 0xc2, 0xde, 0x21, 0xe6, 0x19, 0x5, 0xfa, + 0xdd, 0x22, 0x3e, 0xc1, 0x6, 0xf9, 0xe5, 0x1a, 0x76, 0x89, 0x95, 0x6a, 0xad, 0x52, 0x4e, 0xb1, + 0x31, 0xce, 0xd2, 0x2d, 0xea, 0x15, 0x9, 0xf6, 0x9a, 0x65, 0x79, 0x86, 0x41, 0xbe, 0xa2, 0x5d, + 0x7a, 0x85, 0x99, 0x66, 0xa1, 0x5e, 0x42, 0xbd, 0xd1, 0x2e, 0x32, 0xcd, 0xa, 0xf5, 0xe9, 0x16, + 0xa7, 0x58, 0x44, 0xbb, 0x7c, 0x83, 0x9f, 0x60, 0xc, 0xf3, 0xef, 0x10, 0xd7, 0x28, 0x34, 0xcb, + 0xec, 0x13, 0xf, 0xf0, 0x37, 0xc8, 0xd4, 0x2b, 0x47, 0xb8, 0xa4, 0x5b, 0x9c, 0x63, 0x7f, 0x80, + 0x62, 0x9d, 0x81, 0x7e, 0xb9, 0x46, 0x5a, 0xa5, 0xc9, 0x36, 0x2a, 0xd5, 0x12, 0xed, 0xf1, 0xe, + 0x29, 0xd6, 0xca, 0x35, 0xf2, 0xd, 0x11, 0xee, 0x82, 0x7d, 0x61, 0x9e, 0x59, 0xa6, 0xba, 0x45, + 0xf4, 0xb, 0x17, 0xe8, 0x2f, 0xd0, 0xcc, 0x33, 0x5f, 0xa0, 0xbc, 0x43, 0x84, 0x7b, 0x67, 0x98, + 0xbf, 0x40, 0x5c, 0xa3, 0x64, 0x9b, 0x87, 0x78, 0x14, 0xeb, 0xf7, 0x8, 0xcf, 0x30, 0x2c, 0xd3, + 0x53, 0xac, 0xb0, 0x4f, 0x88, 0x77, 0x6b, 0x94, 0xf8, 0x7, 0x1b, 0xe4, 0x23, 0xdc, 0xc0, 0x3f, + 0x18, 0xe7, 0xfb, 0x4, 0xc3, 0x3c, 0x20, 0xdf, 0xb3, 0x4c, 0x50, 0xaf, 0x68, 0x97, 0x8b, 0x74, + 0xc5, 0x3a, 0x26, 0xd9, 0x1e, 0xe1, 0xfd, 0x2, 0x6e, 0x91, 0x8d, 0x72, 0xb5, 0x4a, 0x56, 0xa9, + 0x8e, 0x71, 0x6d, 0x92, 0x55, 0xaa, 0xb6, 0x49, 0x25, 0xda, 0xc6, 0x39, 0xfe, 0x1, 0x1d, 0xe2, + ], +]; + +const logTable = [ + 0, 0, 1, 25, 2, 50, 26, 198, 3, 223, 51, 238, 27, 104, 199, 75, 4, 100, 224, 14, 52, 141, 239, + 129, 28, 193, 105, 248, 200, 8, 76, 113, 5, 138, 101, 47, 225, 36, 15, 33, 53, 147, 142, 218, 240, + 18, 130, 69, 29, 181, 194, 125, 106, 39, 249, 185, 201, 154, 9, 120, 77, 228, 114, 166, 6, 191, + 139, 98, 102, 221, 48, 253, 226, 152, 37, 179, 16, 145, 34, 136, 54, 208, 148, 206, 143, 150, 219, + 189, 241, 210, 19, 92, 131, 56, 70, 64, 30, 66, 182, 163, 195, 72, 126, 110, 107, 58, 40, 84, 250, + 133, 186, 61, 202, 94, 155, 159, 10, 21, 121, 43, 78, 212, 229, 172, 115, 243, 167, 87, 7, 112, + 192, 247, 140, 128, 99, 13, 103, 74, 222, 237, 49, 197, 254, 24, 227, 165, 153, 119, 38, 184, 180, + 124, 17, 68, 146, 217, 35, 32, 137, 46, 55, 63, 209, 91, 149, 188, 207, 205, 144, 135, 151, 178, + 220, 252, 190, 97, 242, 86, 211, 171, 20, 42, 93, 158, 132, 60, 57, 83, 71, 109, 65, 162, 31, 45, + 67, 216, 183, 123, 164, 118, 196, 23, 73, 236, 127, 12, 111, 246, 108, 161, 59, 82, 41, 157, 85, + 170, 251, 96, 134, 177, 187, 204, 62, 90, 203, 89, 95, 176, 156, 169, 160, 81, 11, 245, 22, 235, + 122, 117, 44, 215, 79, 174, 213, 233, 230, 231, 173, 232, 116, 214, 244, 234, 168, 80, 88, 175, +]; diff --git a/packages/reed-solomon/src/index.js b/packages/reed-solomon/src/index.js new file mode 100644 index 00000000..c76e7a7d --- /dev/null +++ b/packages/reed-solomon/src/index.js @@ -0,0 +1,188 @@ +import { sha256 } from 'ethereum-cryptography/sha256.js'; +import { galMulSlice, galMulSliceXor } from './galois'; +import { buildMatrix } from './matrix'; +import { concat, getIntegrityUint8Array, splitPrice, toBase64 } from './utils'; + +export class ReedSolomon { + constructor( + dataShards = 4, + parityShards = 2, + // 16 * 1024 * 1024 , 16m + segmentSize = 16777216, + ) { + this.parityShards = parityShards; + this.dataShards = dataShards; + this.totalShards = dataShards + parityShards; + this.segmentSize = segmentSize; + } + + _allocAligned(shards, each) { + // const eachAligned = (parseInt((each + 63) / 64)) * 64; // Use Math.ceil instead of ((each + 63) / 64) * 64 + + const eachAligned = ((each + 63) >>> 6) << 6; + let total = new ArrayBuffer(eachAligned * shards + 63); + + // Allocate slices + let res = new Array(shards); + for (let i = 0; i < shards; i++) { + res[i] = new Uint8Array(total, i * eachAligned, each); + total = new Uint8Array(total.slice(eachAligned)); + } + return res; + } + + _split(data) { + if (data.length === 0) { + return []; + } + + if (this.totalShards === 1) { + return [data]; + } + + const dataLen = data.length; + + const perShard = parseInt((dataLen + this.dataShards - 1) / this.dataShards); + const needTotal = this.totalShards * perShard; + + // console.log('dataLen', dataLen) + // console.log('needTotal', needTotal) + // console.log('perShard', perShard) + + let tmp = Array.prototype.slice.call(data); + if (this.segmentSize > data.length) { + if (this.segmentSize > needTotal) { + tmp = tmp.slice(0, needTotal); + for (let i = data.length; i < needTotal; i++) { + tmp.push(0); + } + } else { + for (let i = data.length; i < this.segmentSize; i++) { + tmp[i] = 0; + } + } + } + data = Uint8Array.from(tmp); + + let padding = []; + if (data.length < needTotal) { + const fullShards = data.length / perShard; + // padding = new Array(this.totalShards - fullShards).fill(0); + padding = this._allocAligned(this.totalShards - fullShards, perShard); + + if (dataLen > perShard * fullShards) { + const copyFrom = data.slice(perShard * fullShards, dataLen); + for (let i = 0; i < padding.length; i++) { + if (copyFrom.length > 0) { + padding[i] = copyFrom.slice(0, perShard); + copyFrom = copyFrom.slice(perShard); + } + } + } + } + + // split data to same length price + const dst = new Array(this.totalShards); + let i = 0; + for (; i < dst.length && data.length >= perShard; i++) { + dst[i] = data.slice(0, perShard); + data = data.slice(perShard); + } + + for (let j = 0; i + j < dst.length; j++) { + dst[i + j] = padding[j]; + padding[j] = padding[j + 1]; + } + + return dst; + } + + _codeSomeShards(matrixRows, inputs, outputs) { + let start = 0; + let end = inputs[0].length; + + while (start < inputs[0].length) { + for (let c = 0; c < inputs.length; c++) { + const ins = inputs[c].slice(start, end); + for (let iRow = 0; iRow < outputs.length; iRow++) { + if (c === 0) { + outputs[iRow] = galMulSlice(matrixRows[iRow][c], ins, outputs[iRow].slice(start, end)); + } else { + outputs[iRow] = galMulSliceXor( + matrixRows[iRow][c], + ins, + outputs[iRow].slice(start, end), + ); + } + } + } + + start = end; + // end += r.o.perRound; + end += 1398144; + if (end > inputs[0].length) { + end = inputs[0].length; + } + } + return concat(inputs, outputs); + } + + encodeSegment(data) { + if (data.length == 0) throw new Error('data buffer length is 0'); + + const shared = this._split(data); + + const output = shared.slice(this.dataShards); + + // r.m + const matrix = buildMatrix(this.totalShards, this.dataShards); + + let parity = []; + for (let i = 0; i < this.parityShards; i++) { + parity.push(matrix[this.dataShards + i]); + } + + return this._codeSomeShards( + parity, + shared.slice(0, this.dataShards), + output.slice(0, this.parityShards), + shared[0].length, + ); + } + + encode(sourceData) { + if (sourceData.length == 0) { + throw new Error('file buffer is empty'); + } + + const chunkList = splitPrice(sourceData, this.segmentSize); + + let encodeDataHashList = new Array(this.totalShards); + for (let i = 0; i < encodeDataHashList.length; i++) { + encodeDataHashList[i] = []; + } + let hashList = []; + let segChecksumList = []; + + for (let i = 0; i < chunkList.length; i++) { + const data = chunkList[i]; + // console.log('data i', i) + const encodeShards = this.encodeSegment(data); + // console.log('data done', i) + segChecksumList.push(sha256(data)); + + for (let i = 0; i < encodeShards.length; i++) { + const priceHash = sha256(encodeShards[i]); + encodeDataHashList[i].push(priceHash); + } + } + + hashList[0] = sha256(getIntegrityUint8Array(segChecksumList)); + + for (let i = 0; i < encodeDataHashList.length; i++) { + hashList[i + 1] = sha256(getIntegrityUint8Array(encodeDataHashList[i])); + } + + return toBase64(hashList); + } +} diff --git a/packages/reed-solomon/src/matrix.js b/packages/reed-solomon/src/matrix.js new file mode 100644 index 00000000..b80cbc2d --- /dev/null +++ b/packages/reed-solomon/src/matrix.js @@ -0,0 +1,182 @@ +import { galExp, galDivide, galMultiply } from './galois'; + +function newMatrix(rows, cols) { + if (rows <= 0) { + return null; + } + if (cols <= 0) { + return null; + } + + const m = []; + for (let i = 0; i < rows; i++) { + m[i] = []; + for (let j = 0; j < cols; j++) { + m[i][j] = 0; + } + } + return m; +} + +function vandermonde(rows, cols) { + const result = newMatrix(rows, cols); + + for (let r = 0; r < result.length; r++) { + for (let c = 0; c < result[r].length; c++) { + // console.log('r', r) + // console.log('c', c) + result[r][c] = galExp(r, c); + } + } + + return result; +} + +function SubMatrix(m, rmin, cmin, rmax, cmax) { + const result = newMatrix(rmax - rmin, cmax - cmin); + + for (let r = rmin; r < rmax; r++) { + for (let c = cmin; c < cmax; c++) { + result[r - rmin][c - cmin] = m[r][c]; + } + } + + return result; +} + +function identityMatrix(size) { + const result = newMatrix(size, size); + + for (let i = 0; i < result.length; i++) { + result[i][i] = 1; + } + + return result; +} + +// Multiply multiplies this matrix (the one on the left) by another +// matrix (the one on the right) and returns a new matrix with the result. +function Multiply(m, right) { + if (m[0].length !== right.length) { + return null; + throw new Error( + `columns on left (${m[0].length}) is different than rows on right (${right.length})`, + ); + } + let result = []; + for (let r = 0; r < m.length; r++) { + result[r] = []; + for (let c = 0; c < right[0].length; c++) { + let value = 0; + for (let i = 0; i < m[0].length; i++) { + value ^= galMultiply(m[r][i], right[i][c]); + } + result[r][c] = value; + } + } + return result; +} + +function Augment(m, right) { + if (m.length !== right.length) throw new Error('matrix sizes do not match'); + + const result = newMatrix(m.length, m[0].length + right[0].length); + + for (let r = 0; r < m.length; r++) { + for (let c = 0; c < m[r].length; c++) { + result[r][c] = m[r][c]; + } + + let cols = m[0].length; + for (let c = 0; c < right[0].length; c++) { + result[r][cols + c] = right[r][c]; + } + } + + return result; +} + +function Invert(m) { + const size = m.length; + let work = identityMatrix(size); + work = Augment(m, work); + work = gaussianElimination(work); + + return SubMatrix(work, 0, size, size, size * 2); +} + +function SwapRows(m, r1, r2) { + if (r1 < 0 || m.length <= r1 || r2 < 0 || m.length <= r2) { + return new Error('Invalid row size'); + } + [m[r2], m[r1]] = [m[r1], m[r2]]; + return m; +} + +function gaussianElimination(m) { + const rows = m.length; + const columns = m[0].length; + + // Clear out the part below the main diagonal and scale the main + // diagonal to be 1. + for (let r = 0; r < rows; r++) { + // If the element on the diagonal is 0, find a row below + // that has a non-zero and swap them. + if (m[r][r] === 0) { + for (let rowBelow = r + 1; rowBelow < rows; rowBelow++) { + if (m[rowBelow][r] !== 0) { + let err = SwapRows(r, rowBelow); + if (err !== null) { + return err; + } + break; + } + } + } + // If we couldn't find one, the matrix is singular. + // if (m[r][r] === 0) { + // return errSingular; + // } + // Scale to 1. + if (m[r][r] !== 1) { + let scale = galDivide(1, m[r][r]); + for (let c = 0; c < columns; c++) { + m[r][c] = galMultiply(m[r][c], scale); + } + } + // Make everything below the 1 be a 0 by subtracting + // a multiple of it. (Subtraction and addition are + // both exclusive or in the Galois field.) + for (let rowBelow = r + 1; rowBelow < rows; rowBelow++) { + if (m[rowBelow][r] !== 0) { + let scale = m[rowBelow][r]; + for (let c = 0; c < columns; c++) { + m[rowBelow][c] ^= galMultiply(scale, m[r][c]); + } + } + } + } + + // Now clear the part above the main diagonal. + for (let d = 0; d < rows; d++) { + for (let rowAbove = 0; rowAbove < d; rowAbove++) { + if (m[rowAbove][d] !== 0) { + let scale = m[rowAbove][d]; + for (let c = 0; c < columns; c++) { + m[rowAbove][c] ^= galMultiply(scale, m[d][c]); + } + } + } + } + + return m; +} + +function buildMatrix(totalShards, dataShards) { + const vm = vandermonde(totalShards, dataShards); + const top = SubMatrix(vm, 0, 0, dataShards, dataShards); + const topInv = Invert(top); + return Multiply(vm, topInv); +} + +export { buildMatrix }; diff --git a/packages/reed-solomon/src/node.adapter.js b/packages/reed-solomon/src/node.adapter.js new file mode 100644 index 00000000..76a3d887 --- /dev/null +++ b/packages/reed-solomon/src/node.adapter.js @@ -0,0 +1,88 @@ +import { sha256 } from 'ethereum-cryptography/sha256.js'; +import { isMainThread, parentPort, Worker, workerData } from 'node:worker_threads'; +import { ReedSolomon } from './index'; +import { getIntegrityUint8Array, toBase64, splitPrice } from './utils'; + +export class NodeAdapterReedSolomon extends ReedSolomon { + async encodeInWorker(p, sourceData) { + return new Promise((resolve, reject) => { + if (isMainThread) { + const chunkList = splitPrice(sourceData, this.segmentSize); + + let hashList = []; + let segChecksumList = []; + let encodeDataHashList = new Array(6); + + for (let i = 0; i < encodeDataHashList.length; i++) { + encodeDataHashList[i] = []; + } + + const threads = new Set(); + let RES = []; + + for (let i = 0; i < chunkList.length; i++) { + const worker = new Worker(p, { + workerData: { + index: i, + chunk: chunkList[i], + }, + }); + threads.add(worker); + } + + for (let w of threads) { + w.on('error', (err) => { + throw err; + }); + w.on('exit', () => { + threads.delete(w); + // console.log(`Thread exiting, ${threads.size} running...`) + if (threads.size === 0) { + for (let i = 0; i < RES.length; i++) { + segChecksumList.push(RES[i].segChecksum); + } + + for (let i = 0; i < chunkList.length; i++) { + for (let j = 0; j < encodeDataHashList.length; j++) { + encodeDataHashList[j][i] = RES[i].encodeDataHash[j]; + } + } + + hashList[0] = sha256(getIntegrityUint8Array(segChecksumList)); + + for (let i = 0; i < encodeDataHashList.length; i++) { + hashList[i + 1] = sha256(getIntegrityUint8Array(encodeDataHashList[i])); + } + + const res = toBase64(hashList); + resolve(res); + } + }); + + w.on('message', (message) => { + // console.log('message', message.encodeData.index) + RES[message.index] = message; + }); + } + } else { + const encodeShards = this.encodeSegment(workerData.chunk); + let encodeDataHash = []; + + for (let i = 0; i < encodeShards.length; i++) { + const priceHash = sha256(encodeShards[i]); + encodeDataHash.push(priceHash); + } + + // console.log('encodeShards', encodeShards.length) + // console.log('encodeDataHash', encodeDataHash.length) + // console.log('workerData.index', workerData.index) + + parentPort.postMessage({ + index: workerData.index, + segChecksum: sha256(workerData.chunk), + encodeDataHash: encodeDataHash, + }); + } + }); + } +} diff --git a/packages/reed-solomon/src/utils.js b/packages/reed-solomon/src/utils.js new file mode 100644 index 00000000..91fcdc7f --- /dev/null +++ b/packages/reed-solomon/src/utils.js @@ -0,0 +1,44 @@ +import { encode } from '@ethersproject/base64'; +export { sha256 } from 'ethereum-cryptography/sha256.js'; + +export function concat(a, b) { + let res = []; + a.forEach((i) => { + res.push(i); + }); + b.forEach((i) => { + res.push(i); + }); + return res; +} + +export function getIntegrityUint8Array(uint8arr) { + const arr = uint8arr.reduce((a, b) => { + return concat(a, b); + }); + + return Uint8Array.from(arr); +} + +export function toBase64(hashList) { + const res = []; + for (let i = 0; i < hashList.length; i++) { + res.push(encode(hashList[i])); + } + return res; +} + +/** + * split data to same length price + */ +export function splitPrice(data, size) { + let chunkList = []; + let cur = 0; + + while (cur < data.length) { + chunkList.push(data.slice(cur, cur + size)); + cur += size; + } + + return chunkList; +} diff --git a/packages/reed-solomon/src/web.adapter.js b/packages/reed-solomon/src/web.adapter.js new file mode 100644 index 00000000..75cca210 --- /dev/null +++ b/packages/reed-solomon/src/web.adapter.js @@ -0,0 +1,65 @@ +import { ReedSolomon } from '.'; +import { sha256, getIntegrityUint8Array, toBase64, splitPrice } from './utils'; + +export class WebAdapterReedSolomon extends ReedSolomon { + async encodeInWorker(workerFn, sourceData) { + const chunkList = splitPrice(sourceData, this.segmentSize); + + const workers = []; + + for (let i = 0; i < chunkList.length; i++) { + // const worker = new Worker('worker.js'); + const worker = createWorker(workerFn); + workers.push(worker); + worker.postMessage({ + index: i, + chunk: chunkList[i], + }); + } + + const plist = workers.map( + (worker) => + new Promise((resolve) => { + worker.onmessage = (e) => { + resolve(e.data); + }; + }), + ); + + return Promise.all(plist).then((RES) => { + let hashList = []; + let segChecksumList = []; + let encodeDataHashList = new Array(this.totalShards); + for (let i = 0; i < encodeDataHashList.length; i++) { + encodeDataHashList[i] = []; + } + + for (let i = 0; i < RES.length; i++) { + segChecksumList.push(RES[i].segChecksum); + } + + for (let i = 0; i < chunkList.length; i++) { + for (let j = 0; j < encodeDataHashList.length; j++) { + encodeDataHashList[j][i] = RES[i].encodeDataHash[j]; + } + } + + hashList[0] = sha256(getIntegrityUint8Array(segChecksumList)); + + for (let i = 0; i < encodeDataHashList.length; i++) { + hashList[i + 1] = sha256(getIntegrityUint8Array(encodeDataHashList[i])); + } + + const res = toBase64(hashList); + + return res; + }); + } +} + +function createWorker(f) { + var blob = new Blob(['(' + f.toString() + ')()']); + var url = window.URL.createObjectURL(blob); + var worker = new Worker(url); + return worker; +} diff --git a/packages/reed-solomon/types/index.d.ts b/packages/reed-solomon/types/index.d.ts new file mode 100644 index 00000000..abff184a --- /dev/null +++ b/packages/reed-solomon/types/index.d.ts @@ -0,0 +1,9 @@ +declare module '@bnb-chain/reed-solomon' { + export class ReedSolomon { + constructor(dataShards = 4, parityShards = 2, segmentSize = 16777216); + + encodeSegment(data: Uint8Array): Uint8Array[]; + + encode(data: Uint8Arary): string[]; + } +} diff --git a/packages/reed-solomon/types/node.adapter.d.ts b/packages/reed-solomon/types/node.adapter.d.ts new file mode 100644 index 00000000..8fe0f463 --- /dev/null +++ b/packages/reed-solomon/types/node.adapter.d.ts @@ -0,0 +1,5 @@ +declare module '@bnb-chain/reed-solomon/node.adapter' { + export class NodeAdapterReedSolomon { + encodeInWorker(p: string, data: Uint8Array): Promise; + } +} diff --git a/packages/reed-solomon/types/utils.d.ts b/packages/reed-solomon/types/utils.d.ts new file mode 100644 index 00000000..102a9ba1 --- /dev/null +++ b/packages/reed-solomon/types/utils.d.ts @@ -0,0 +1,9 @@ +declare module '@bnb-chain/reed-solomon/utils' { + export function concat(a: Uint8Array[], b: Uint8Array[]): Uint8Array[]; + + export function getIntegrityUint8Array(uin8arr: Uint8Array[]): Uint8Array; + + export function toBase64(hashList: Uint8Array[]): string[]; + + export function splitPrice(data: Uint8Array, size: number): Uint8Array[]; +} diff --git a/packages/reed-solomon/types/web.adapter.d.ts b/packages/reed-solomon/types/web.adapter.d.ts new file mode 100644 index 00000000..ecb48500 --- /dev/null +++ b/packages/reed-solomon/types/web.adapter.d.ts @@ -0,0 +1,5 @@ +declare module '@bnb-chain/reed-solomon/web.adapter' { + export class WebAdapterReedSolomon { + encodeInWorker(workerFn: () => void, data: Uint8Array): Promise; + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0934a9fe..ddc78440 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,7 +43,7 @@ importers: version: 3.0.2(rollup@2.79.1) '@rollup/plugin-typescript': specifier: ^11.1.3 - version: 11.1.3(rollup@2.79.1)(typescript@5.3.3) + version: 11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5) '@types/chai': specifier: ^4.3.5 version: 4.3.5 @@ -61,10 +61,10 @@ importers: version: 18.2.5 '@typescript-eslint/eslint-plugin': specifier: ^5.59.11 - version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.3) + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) '@typescript-eslint/parser': specifier: ^5.59.11 - version: 5.59.11(eslint@8.48.0)(typescript@5.3.3) + version: 5.59.11(eslint@8.48.0)(typescript@4.9.5) chai: specifier: ^4.3.7 version: 4.3.7 @@ -76,7 +76,7 @@ importers: version: 8.48.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.3.3) + version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5) eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.1(eslint@8.48.0)(prettier@2.8.8) @@ -111,17 +111,14 @@ importers: doc-site: dependencies: '@docusaurus/core': - specifier: 3.0.1 - version: 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-ideal-image': - specifier: ^3.0.1 - version: 3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + specifier: 3.0.0 + version: 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/preset-classic': - specifier: 3.0.1 - version: 3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) + specifier: 3.0.0 + version: 3.0.0(@algolia/client-search@4.20.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5) '@mdx-js/react': specifier: ^3.0.0 - version: 3.0.0(@types/react@18.2.45)(react@18.2.0) + version: 3.0.0(@types/react@18.2.41)(react@18.2.0) clsx: specifier: ^1.2.1 version: 1.2.1 @@ -142,14 +139,17 @@ importers: examples/nextjs: dependencies: '@bnb-chain/greenfield-cosmos-types': - specifier: 0.4.0-alpha.23 - version: 0.4.0-alpha.23 + specifier: 0.4.0-alpha.25 + version: 0.4.0-alpha.25 '@bnb-chain/greenfield-js-sdk': specifier: workspace:* version: link:../../packages/js-sdk '@bnb-chain/greenfiled-file-handle': specifier: workspace:* version: link:../../packages/file-handle + '@bnb-chain/reed-solomon': + specifier: workspace:* + version: link:../../packages/reed-solomon '@cosmjs/encoding': specifier: ^0.32.0 version: 0.32.0 @@ -244,6 +244,9 @@ importers: '@bnb-chain/greenfiled-file-handle': specifier: workspace:* version: link:../../packages/file-handle + '@bnb-chain/reed-solomon': + specifier: workspace:* + version: link:../../packages/reed-solomon dotenv: specifier: ^16.0.3 version: 16.0.3 @@ -325,8 +328,8 @@ importers: packages/js-sdk: dependencies: '@bnb-chain/greenfield-cosmos-types': - specifier: 0.4.0-alpha.23 - version: 0.4.0-alpha.23 + specifier: 0.4.0-alpha.25 + version: 0.4.0-alpha.25 '@bnb-chain/greenfield-zk-crypto': specifier: workspace:* version: link:../zk-crypto @@ -429,16 +432,16 @@ importers: version: 16.0.3 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@20.10.4)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) mime: specifier: ^3.0.0 version: 3.0.0 ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.23.5)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.10.4)(typescript@4.9.5) + version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.2 @@ -446,6 +449,15 @@ importers: specifier: ^4.9.5 version: 4.9.5 + packages/reed-solomon: + dependencies: + '@ethersproject/base64': + specifier: ^5.7.0 + version: 5.7.0 + ethereum-cryptography: + specifier: ^2.0.0 + version: 2.0.0 + packages/zk-crypto: devDependencies: clean-webpack-plugin: @@ -477,142 +489,142 @@ packages: resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} dev: false - /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0)(search-insights@2.13.0): + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0): resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0)(search-insights@2.13.0) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights dev: false - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0)(search-insights@2.13.0): + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0): resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} peerDependencies: search-insights: '>= 1 < 3' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0) - search-insights: 2.13.0 + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + search-insights: 2.11.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch dev: false - /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0): + /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0) - '@algolia/client-search': 4.22.0 - algoliasearch: 4.22.0 + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + '@algolia/client-search': 4.20.0 + algoliasearch: 4.20.0 dev: false - /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0): + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/client-search': 4.22.0 - algoliasearch: 4.22.0 + '@algolia/client-search': 4.20.0 + algoliasearch: 4.20.0 dev: false - /@algolia/cache-browser-local-storage@4.22.0: - resolution: {integrity: sha512-uZ1uZMLDZb4qODLfTSNHxSi4fH9RdrQf7DXEzW01dS8XK7QFtFh29N5NGKa9S+Yudf1vUMIF+/RiL4i/J0pWlQ==} + /@algolia/cache-browser-local-storage@4.20.0: + resolution: {integrity: sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==} dependencies: - '@algolia/cache-common': 4.22.0 + '@algolia/cache-common': 4.20.0 dev: false - /@algolia/cache-common@4.22.0: - resolution: {integrity: sha512-TPwUMlIGPN16eW67qamNQUmxNiGHg/WBqWcrOoCddhqNTqGDPVqmgfaM85LPbt24t3r1z0zEz/tdsmuq3Q6oaA==} + /@algolia/cache-common@4.20.0: + resolution: {integrity: sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==} dev: false - /@algolia/cache-in-memory@4.22.0: - resolution: {integrity: sha512-kf4Cio9NpPjzp1+uXQgL4jsMDeck7MP89BYThSvXSjf2A6qV/0KeqQf90TL2ECS02ovLOBXkk98P7qVarM+zGA==} + /@algolia/cache-in-memory@4.20.0: + resolution: {integrity: sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==} dependencies: - '@algolia/cache-common': 4.22.0 + '@algolia/cache-common': 4.20.0 dev: false - /@algolia/client-account@4.22.0: - resolution: {integrity: sha512-Bjb5UXpWmJT+yGWiqAJL0prkENyEZTBzdC+N1vBuHjwIJcjLMjPB6j1hNBRbT12Lmwi55uzqeMIKS69w+0aPzA==} + /@algolia/client-account@4.20.0: + resolution: {integrity: sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==} dependencies: - '@algolia/client-common': 4.22.0 - '@algolia/client-search': 4.22.0 - '@algolia/transporter': 4.22.0 + '@algolia/client-common': 4.20.0 + '@algolia/client-search': 4.20.0 + '@algolia/transporter': 4.20.0 dev: false - /@algolia/client-analytics@4.22.0: - resolution: {integrity: sha512-os2K+kHUcwwRa4ArFl5p/3YbF9lN3TLOPkbXXXxOvDpqFh62n9IRZuzfxpHxMPKAQS3Et1s0BkKavnNP02E9Hg==} + /@algolia/client-analytics@4.20.0: + resolution: {integrity: sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==} dependencies: - '@algolia/client-common': 4.22.0 - '@algolia/client-search': 4.22.0 - '@algolia/requester-common': 4.22.0 - '@algolia/transporter': 4.22.0 + '@algolia/client-common': 4.20.0 + '@algolia/client-search': 4.20.0 + '@algolia/requester-common': 4.20.0 + '@algolia/transporter': 4.20.0 dev: false - /@algolia/client-common@4.22.0: - resolution: {integrity: sha512-BlbkF4qXVWuwTmYxVWvqtatCR3lzXwxx628p1wj1Q7QP2+LsTmGt1DiUYRuy9jG7iMsnlExby6kRMOOlbhv2Ag==} + /@algolia/client-common@4.20.0: + resolution: {integrity: sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==} dependencies: - '@algolia/requester-common': 4.22.0 - '@algolia/transporter': 4.22.0 + '@algolia/requester-common': 4.20.0 + '@algolia/transporter': 4.20.0 dev: false - /@algolia/client-personalization@4.22.0: - resolution: {integrity: sha512-pEOftCxeBdG5pL97WngOBi9w5Vxr5KCV2j2D+xMVZH8MuU/JX7CglDSDDb0ffQWYqcUN+40Ry+xtXEYaGXTGow==} + /@algolia/client-personalization@4.20.0: + resolution: {integrity: sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==} dependencies: - '@algolia/client-common': 4.22.0 - '@algolia/requester-common': 4.22.0 - '@algolia/transporter': 4.22.0 + '@algolia/client-common': 4.20.0 + '@algolia/requester-common': 4.20.0 + '@algolia/transporter': 4.20.0 dev: false - /@algolia/client-search@4.22.0: - resolution: {integrity: sha512-bn4qQiIdRPBGCwsNuuqB8rdHhGKKWIij9OqidM1UkQxnSG8yzxHdb7CujM30pvp5EnV7jTqDZRbxacbjYVW20Q==} + /@algolia/client-search@4.20.0: + resolution: {integrity: sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==} dependencies: - '@algolia/client-common': 4.22.0 - '@algolia/requester-common': 4.22.0 - '@algolia/transporter': 4.22.0 + '@algolia/client-common': 4.20.0 + '@algolia/requester-common': 4.20.0 + '@algolia/transporter': 4.20.0 dev: false /@algolia/events@4.0.1: resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} dev: false - /@algolia/logger-common@4.22.0: - resolution: {integrity: sha512-HMUQTID0ucxNCXs5d1eBJ5q/HuKg8rFVE/vOiLaM4Abfeq1YnTtGV3+rFEhOPWhRQxNDd+YHa4q864IMc0zHpQ==} + /@algolia/logger-common@4.20.0: + resolution: {integrity: sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==} dev: false - /@algolia/logger-console@4.22.0: - resolution: {integrity: sha512-7JKb6hgcY64H7CRm3u6DRAiiEVXMvCJV5gRE672QFOUgDxo4aiDpfU61g6Uzy8NKjlEzHMmgG4e2fklELmPXhQ==} + /@algolia/logger-console@4.20.0: + resolution: {integrity: sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==} dependencies: - '@algolia/logger-common': 4.22.0 + '@algolia/logger-common': 4.20.0 dev: false - /@algolia/requester-browser-xhr@4.22.0: - resolution: {integrity: sha512-BHfv1h7P9/SyvcDJDaRuIwDu2yrDLlXlYmjvaLZTtPw6Ok/ZVhBR55JqW832XN/Fsl6k3LjdkYHHR7xnsa5Wvg==} + /@algolia/requester-browser-xhr@4.20.0: + resolution: {integrity: sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==} dependencies: - '@algolia/requester-common': 4.22.0 + '@algolia/requester-common': 4.20.0 dev: false - /@algolia/requester-common@4.22.0: - resolution: {integrity: sha512-Y9cEH/cKjIIZgzvI1aI0ARdtR/xRrOR13g5psCxkdhpgRN0Vcorx+zePhmAa4jdQNqexpxtkUdcKYugBzMZJgQ==} + /@algolia/requester-common@4.20.0: + resolution: {integrity: sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==} dev: false - /@algolia/requester-node-http@4.22.0: - resolution: {integrity: sha512-8xHoGpxVhz3u2MYIieHIB6MsnX+vfd5PS4REgglejJ6lPigftRhTdBCToe6zbwq4p0anZXjjPDvNWMlgK2+xYA==} + /@algolia/requester-node-http@4.20.0: + resolution: {integrity: sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==} dependencies: - '@algolia/requester-common': 4.22.0 + '@algolia/requester-common': 4.20.0 dev: false - /@algolia/transporter@4.22.0: - resolution: {integrity: sha512-ieO1k8x2o77GNvOoC+vAkFKppydQSVfbjM3YrSjLmgywiBejPTvU1R1nEvG59JIIUvtSLrZsLGPkd6vL14zopA==} + /@algolia/transporter@4.20.0: + resolution: {integrity: sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==} dependencies: - '@algolia/cache-common': 4.22.0 - '@algolia/logger-common': 4.22.0 - '@algolia/requester-common': 4.22.0 + '@algolia/cache-common': 4.20.0 + '@algolia/logger-common': 4.20.0 + '@algolia/requester-common': 4.20.0 dev: false /@ampproject/remapping@2.2.1: @@ -635,14 +647,16 @@ packages: dependencies: '@babel/highlight': 7.23.4 chalk: 2.4.2 + dev: true /@babel/compat-data@7.22.9: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} - /@babel/compat-data@7.23.5: - resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + /@babel/compat-data@7.23.3: + resolution: {integrity: sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==} engines: {node: '>=6.9.0'} + dev: false /@babel/core@7.23.3: resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==} @@ -666,20 +680,20 @@ packages: transitivePeerDependencies: - supports-color - /@babel/core@7.23.6: - resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} + /@babel/core@7.23.5: + resolution: {integrity: sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) - '@babel/helpers': 7.23.6 - '@babel/parser': 7.23.6 + '@babel/generator': 7.23.5 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) + '@babel/helpers': 7.23.5 + '@babel/parser': 7.23.5 '@babel/template': 7.22.15 - '@babel/traverse': 7.23.6 - '@babel/types': 7.23.6 + '@babel/traverse': 7.23.5 + '@babel/types': 7.23.5 convert-source-map: 2.0.0 debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 @@ -687,6 +701,7 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true /@babel/eslint-parser@7.21.8(@babel/core@7.23.3)(eslint@8.48.0): resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} @@ -721,14 +736,15 @@ packages: '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 - /@babel/generator@7.23.6: - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + /@babel/generator@7.23.5: + resolution: {integrity: sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.5 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 + dev: true /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} @@ -740,7 +756,7 @@ packages: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.3 dev: false /@babel/helper-builder-binary-assignment-operator-visitor@7.22.3: @@ -760,16 +776,6 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-compilation-targets@7.23.6: - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.22.2 - lru-cache: 5.1.1 - semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.23.3): resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} engines: {node: '>=6.9.0'} @@ -790,19 +796,19 @@ packages: - supports-color dev: true - /@babel/helper-create-class-features-plugin@7.23.6(@babel/core@7.23.6): - resolution: {integrity: sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==} + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.3): + resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 @@ -818,27 +824,14 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 - dev: true - - /@babel/helper-create-regexp-features-plugin@7.22.1(@babel/core@7.23.6): - resolution: {integrity: sha512-WWjdnfR3LPIe+0EY8td7WmjhytxXtjKAEpnAxun/hkNiyOaPlvGK+NZaBFIdi9ndYV3Gav7BpFvtUwnaJlwi1w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 - dev: false - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.6): + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.3): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 @@ -860,13 +853,13 @@ packages: - supports-color dev: true - /@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.23.6): - resolution: {integrity: sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==} + /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.3): + resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 + '@babel/core': 7.23.3 + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 @@ -916,7 +909,7 @@ packages: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.3 dev: false /@babel/helper-module-imports@7.22.15: @@ -952,18 +945,19 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + dev: true /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} @@ -976,7 +970,7 @@ packages: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.3 dev: false /@babel/helper-plugin-utils@7.22.5: @@ -998,13 +992,13 @@ packages: - supports-color dev: true - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.6): + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.3): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 @@ -1024,13 +1018,13 @@ packages: - supports-color dev: true - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.6): + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.3): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 @@ -1053,7 +1047,7 @@ packages: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.3 dev: false /@babel/helper-split-export-declaration@7.22.6: @@ -1069,6 +1063,7 @@ packages: /@babel/helper-string-parser@7.23.4: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-validator-identifier@7.22.15: resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} @@ -1082,10 +1077,6 @@ packages: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.23.5: - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} - /@babel/helper-wrap-function@7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} @@ -1104,7 +1095,7 @@ packages: dependencies: '@babel/helper-function-name': 7.23.0 '@babel/template': 7.22.15 - '@babel/types': 7.23.6 + '@babel/types': 7.23.3 dev: false /@babel/helpers@7.23.2: @@ -1117,15 +1108,16 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helpers@7.23.6: - resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==} + /@babel/helpers@7.23.5: + resolution: {integrity: sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/traverse': 7.23.6 - '@babel/types': 7.23.6 + '@babel/traverse': 7.23.5 + '@babel/types': 7.23.5 transitivePeerDependencies: - supports-color + dev: true /@babel/highlight@7.22.13: resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} @@ -1142,6 +1134,7 @@ packages: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 + dev: true /@babel/parser@7.22.15: resolution: {integrity: sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==} @@ -1158,12 +1151,13 @@ packages: dependencies: '@babel/types': 7.23.3 - /@babel/parser@7.23.6: - resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + /@babel/parser@7.23.5: + resolution: {integrity: sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.5 + dev: true /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.23.3): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} @@ -1175,13 +1169,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.6): + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1197,25 +1191,25 @@ packages: '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.23.3) dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.6): + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.6) + '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.3) dev: false - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.6): + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1317,13 +1311,13 @@ packages: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.6): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.3): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 dev: false /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.23.3): @@ -1345,16 +1339,6 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.6): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} @@ -1372,16 +1356,6 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.6): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.3): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} @@ -1391,17 +1365,6 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.6): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-decorators@7.22.3(@babel/core@7.23.3): resolution: {integrity: sha512-R16Zuge73+8/nLcDjkIpyhi5wIbN7i7fiuLJR8yQX7vPAa/ltUKtd3iLbb4AgP5nrLi91HnNUNosELIGUGH1bg==} @@ -1420,16 +1383,6 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.6): - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} @@ -1438,16 +1391,6 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.6): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.23.3): resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} @@ -1479,13 +1422,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.6): + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1499,13 +1442,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.6): + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1516,16 +1459,6 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.6): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} @@ -1534,16 +1467,6 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.6): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.3): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} @@ -1553,7 +1476,6 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} @@ -1563,17 +1485,6 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.6): - resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.3): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -1582,16 +1493,6 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.6): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} @@ -1600,16 +1501,6 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.6): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.3): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} @@ -1618,16 +1509,6 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.6): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -1636,16 +1517,6 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.6): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -1654,16 +1525,6 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.6): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -1672,16 +1533,6 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.6): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.3): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} @@ -1691,17 +1542,6 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.6): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.3): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} @@ -1711,17 +1551,6 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.6): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.23.3): resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} @@ -1733,13 +1562,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.6): + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1752,18 +1581,6 @@ packages: '@babel/core': 7.23.3 '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.6): - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.23.6) - '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-transform-arrow-functions@7.21.5(@babel/core@7.23.3): resolution: {integrity: sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==} @@ -1775,13 +1592,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1800,17 +1617,17 @@ packages: - supports-color dev: true - /@babel/plugin-transform-async-generator-functions@7.23.4(@babel/core@7.23.6): - resolution: {integrity: sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==} + /@babel/plugin-transform-async-generator-functions@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-59GsVNavGxAXCDDbakWSMJhajASb4kBCqDjqJsv+p5nKdbz7istmZ3HrX3L2LuiI80+zsOADCvooqQH3qGCucQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.6) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.3) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.3) dev: false /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.23.3): @@ -1827,16 +1644,16 @@ packages: - supports-color dev: true - /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.6) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.3) dev: false /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.23.3): @@ -1849,13 +1666,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1869,13 +1686,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.6): - resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} + /@babel/plugin-transform-block-scoping@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1892,14 +1709,14 @@ packages: - supports-color dev: true - /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) + '@babel/core': 7.23.3 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1917,16 +1734,16 @@ packages: - supports-color dev: true - /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.6): - resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} + /@babel/plugin-transform-class-static-block@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-PENDVxdr7ZxKPyi5Ffc0LjXdnJyrJxyqF5T5YjlVg4a0VFfQHW0r8iAtRiDXkfHlu1wwcvdtnndGYIeJLSuRMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) + '@babel/core': 7.23.3 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.6) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.3) dev: false /@babel/plugin-transform-classes@7.21.0(@babel/core@7.23.3): @@ -1949,20 +1766,20 @@ packages: - supports-color dev: true - /@babel/plugin-transform-classes@7.23.5(@babel/core@7.23.6): - resolution: {integrity: sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==} + /@babel/plugin-transform-classes@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 dev: false @@ -1978,13 +1795,13 @@ packages: '@babel/template': 7.22.15 dev: true - /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 dev: false @@ -1999,13 +1816,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2020,14 +1837,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/core': 7.23.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2041,13 +1858,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2062,15 +1879,15 @@ packages: '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.6): - resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} + /@babel/plugin-transform-dynamic-import@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-vTG+cTGxPFou12Rj7ll+eD5yWeNl5/8xvQvF08y5Gv3v4mZQoyFf8/n9zg4q5vvCWt5jmgymfzMAldO7orBn7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) dev: false /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.23.3): @@ -2084,13 +1901,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2106,15 +1923,15 @@ packages: '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.6): - resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} + /@babel/plugin-transform-export-namespace-from@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-yCLhW34wpJWRdTxxWtFZASJisihrfyMOTOQexhVzA78jlU+dH7Dw+zQgcPepQ5F3C6bAIiblZZ+qBggJdHiBAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.3) dev: false /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.23.3): @@ -2138,15 +1955,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.6): - resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} + /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: false /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.23.3): @@ -2161,14 +1977,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 + '@babel/core': 7.23.3 + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2184,15 +2000,15 @@ packages: '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.6): - resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} + /@babel/plugin-transform-json-strings@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-H9Ej2OiISIZowZHaBwF0tsJOih1PftXJtE8EWqlEIwpc7LMTGq0rPOrywKLQ4nefzx8/HMR0D3JGXoMHYvhi0A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.3) dev: false /@babel/plugin-transform-literals@7.18.9(@babel/core@7.23.3): @@ -2205,13 +2021,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2226,15 +2042,15 @@ packages: '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.6): - resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} + /@babel/plugin-transform-logical-assignment-operators@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-+pD5ZbxofyOygEp+zZAfujY2ShNCXRpDRIPOiBmTO693hhyOEteZgl876Xs9SAHPQpcV0vz8LvA/T+w8AzyX8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.3) dev: false /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.23.3): @@ -2247,13 +2063,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2268,14 +2084,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/core': 7.23.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2291,14 +2107,14 @@ packages: '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/core': 7.23.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: false @@ -2316,15 +2132,15 @@ packages: '@babel/helper-validator-identifier': 7.22.15 dev: true - /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 dev: false @@ -2340,14 +2156,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/core': 7.23.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2362,14 +2178,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.6): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.3): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/core': 7.23.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2383,13 +2199,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2404,15 +2220,15 @@ packages: '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.6): - resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} + /@babel/plugin-transform-nullish-coalescing-operator@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-xzg24Lnld4DYIdysyf07zJ1P+iIfJpxtVFOzX4g+bsJ3Ng5Le7rXx9KwqKzuyaUeRnt+I1EICwQITqc0E2PmpA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.3) dev: false /@babel/plugin-transform-numeric-separator@7.22.3(@babel/core@7.23.3): @@ -2426,15 +2242,15 @@ packages: '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.6): - resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} + /@babel/plugin-transform-numeric-separator@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-s9GO7fIBi/BLsZ0v3Rftr6Oe4t0ctJ8h4CCXfPoEJwmvAPMyNrfkOOJzm6b9PX9YXcCJWWQd/sBF/N26eBiMVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.3) dev: false /@babel/plugin-transform-object-rest-spread@7.22.3(@babel/core@7.23.3): @@ -2451,18 +2267,18 @@ packages: '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.6): - resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} + /@babel/plugin-transform-object-rest-spread@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-VxHt0ANkDmu8TANdE9Kc0rndo/ccsmfe2Cx2y5sI4hu3AukHQ5wAu4cM7j3ba8B9548ijVyclBU+nuDQftZsog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 + '@babel/compat-data': 7.23.3 + '@babel/core': 7.23.3 + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.3) dev: false /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.23.3): @@ -2478,15 +2294,15 @@ packages: - supports-color dev: true - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) dev: false /@babel/plugin-transform-optional-catch-binding@7.22.3(@babel/core@7.23.3): @@ -2500,15 +2316,15 @@ packages: '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.6): - resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} + /@babel/plugin-transform-optional-catch-binding@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-LxYSb0iLjUamfm7f1D7GpiS4j0UAC8AOiehnsGAP8BEsIX8EOi3qV6bbctw8M7ZvLtcoZfZX5Z7rN9PlWk0m5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.3) dev: false /@babel/plugin-transform-optional-chaining@7.22.3(@babel/core@7.23.3): @@ -2523,16 +2339,16 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.6): - resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} + /@babel/plugin-transform-optional-chaining@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.3) dev: false /@babel/plugin-transform-parameters@7.22.3(@babel/core@7.23.3): @@ -2545,13 +2361,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2568,14 +2384,14 @@ packages: - supports-color dev: true - /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) + '@babel/core': 7.23.3 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2594,17 +2410,17 @@ packages: - supports-color dev: true - /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.6): - resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} + /@babel/plugin-transform-private-property-in-object@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.6) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.3) dev: false /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.23.3): @@ -2617,23 +2433,23 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2647,13 +2463,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2667,14 +2483,14 @@ packages: '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.6): + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.3): resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.6) + '@babel/core': 7.23.3 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.3) dev: false /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.23.3): @@ -2689,7 +2505,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.3) '@babel/types': 7.22.15 - dev: true /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.3): resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} @@ -2702,23 +2517,9 @@ packages: '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.3) - '@babel/types': 7.23.6 + '@babel/types': 7.23.5 dev: true - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.6): - resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) - '@babel/types': 7.23.6 - dev: false - /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.23.3): resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} engines: {node: '>=6.9.0'} @@ -2730,13 +2531,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2752,13 +2553,13 @@ packages: regenerator-transform: 0.15.1 dev: true - /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.2 dev: false @@ -2773,13 +2574,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2800,18 +2601,18 @@ packages: - supports-color dev: true - /@babel/plugin-transform-runtime@7.23.6(@babel/core@7.23.6): - resolution: {integrity: sha512-kF1Zg62aPseQ11orDhFRw+aPG/eynNQtI+TyY+m33qJa2cJ5EEvza2P2BNTIA9E5MyqFABHEyY6CPHwgdy9aNg==} + /@babel/plugin-transform-runtime@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-XcQ3X58CKBdBnnZpPaQjgVMePsXtSZzHoku70q9tUAQp02ggPQNM04BF3RvlW1GSM/McbSOQAzEK4MXbS7/JFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.7(@babel/core@7.23.6) - babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.6) - babel-plugin-polyfill-regenerator: 0.5.4(@babel/core@7.23.6) + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.3) + babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.3) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.3) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -2827,13 +2628,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2848,13 +2649,13 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 dev: true - /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: false @@ -2869,13 +2670,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2889,13 +2690,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2909,13 +2710,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2934,17 +2735,17 @@ packages: - supports-color dev: true - /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.6): - resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} + /@babel/plugin-transform-typescript@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-ogV0yWnq38CFwH20l2Afz0dfKuZBx9o/Y2Rmh5vuSS0YD1hswgEgTfyTzuSrT2q9btmHRSqYoSfwFUVaC1M1Jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.3) dev: false /@babel/plugin-transform-unicode-escapes@7.21.5(@babel/core@7.23.3): @@ -2957,13 +2758,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2978,14 +2779,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/core': 7.23.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -3000,14 +2801,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/core': 7.23.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -3022,14 +2823,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.6): + /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) + '@babel/core': 7.23.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -3124,92 +2925,92 @@ packages: - supports-color dev: true - /@babel/preset-env@7.23.6(@babel/core@7.23.6): - resolution: {integrity: sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==} + /@babel/preset-env@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 + '@babel/compat-data': 7.23.3 + '@babel/core': 7.23.3 + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.6) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.6) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.6) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.6) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.6) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.6) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.6) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-async-generator-functions': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.23.6) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.6) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.6) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.6) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.6) - babel-plugin-polyfill-corejs2: 0.4.7(@babel/core@7.23.6) - babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.6) - babel-plugin-polyfill-regenerator: 0.5.4(@babel/core@7.23.6) - core-js-compat: 3.34.0 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.3) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.3) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.3) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.3) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.3) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.3) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.3) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.3) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-async-generator-functions': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-block-scoping': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-class-static-block': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-classes': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-dynamic-import': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-export-namespace-from': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-json-strings': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-logical-assignment-operators': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.3) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-numeric-separator': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-object-rest-spread': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-optional-catch-binding': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-private-property-in-object': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.3) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.3) + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.3) + babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.3) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.3) + core-js-compat: 3.33.3 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -3228,14 +3029,14 @@ packages: esutils: 2.0.3 dev: true - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.6): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.3): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.23.6 + '@babel/types': 7.23.3 esutils: 2.0.3 dev: false @@ -3254,19 +3055,19 @@ packages: '@babel/plugin-transform-react-pure-annotations': 7.18.6(@babel/core@7.23.3) dev: true - /@babel/preset-react@7.23.3(@babel/core@7.23.6): + /@babel/preset-react@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.6) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.6) - '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.23.6) + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.3) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.3) + '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.23.3) dev: false /@babel/preset-typescript@7.21.5(@babel/core@7.23.3): @@ -3285,28 +3086,28 @@ packages: - supports-color dev: true - /@babel/preset-typescript@7.23.3(@babel/core@7.23.6): + /@babel/preset-typescript@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.6) + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-typescript': 7.23.3(@babel/core@7.23.3) dev: false /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - /@babel/runtime-corejs3@7.23.6: - resolution: {integrity: sha512-Djs/ZTAnpyj0nyg7p1J6oiE/tZ9G2stqAFlLGZynrW+F3k2w2jGK2mLOBxzYIOcZYA89+c3d3wXKpYLcpwcU6w==} + /@babel/runtime-corejs3@7.23.2: + resolution: {integrity: sha512-54cIh74Z1rp4oIjsHjqN+WM4fMyCBYe+LpZ9jWm51CZ1fbH3SkAzQD/3XLoNkjbJ7YEmjobLXyvQrFypRHOrXw==} engines: {node: '>=6.9.0'} dependencies: - core-js-pure: 3.34.0 + core-js-pure: 3.33.3 regenerator-runtime: 0.14.0 dev: false @@ -3316,15 +3117,15 @@ packages: dependencies: regenerator-runtime: 0.13.11 - /@babel/runtime@7.23.4: - resolution: {integrity: sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==} + /@babel/runtime@7.23.2: + resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 dev: false - /@babel/runtime@7.23.6: - resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} + /@babel/runtime@7.23.4: + resolution: {integrity: sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 @@ -3355,22 +3156,23 @@ packages: transitivePeerDependencies: - supports-color - /@babel/traverse@7.23.6: - resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} + /@babel/traverse@7.23.5: + resolution: {integrity: sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 + '@babel/generator': 7.23.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: true /@babel/types@7.22.15: resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} @@ -3388,20 +3190,21 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - /@babel/types@7.23.6: - resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + /@babel/types@7.23.5: + resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.23.4 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + dev: true /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.23: - resolution: {integrity: sha512-VAuk5CxTSbiOa8HvlEY/uf8zoTvgyRvQMwQs0S/7wjoloE0I7hSZXWPUEeFmypB1xZuggDtyCfizS2faL/NKeg==} + /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.25: + resolution: {integrity: sha512-A/v0X/rhwmWN8cNmkFCRIzT0sHQn2sb/mPrdwdIgUbjEV49s9KncSAKxRMIz3+ph0KeROmxjUWaDsJ9/KGU2tQ==} dependencies: long: 4.0.0 protobufjs: 6.11.4 @@ -3757,7 +3560,7 @@ packages: lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.3.3) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -3862,7 +3665,7 @@ packages: '@cosmjs/encoding': 0.28.13 '@cosmjs/math': 0.28.13 '@cosmjs/utils': 0.28.13 - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.2 bn.js: 5.2.1 elliptic: 6.5.4 libsodium-wrappers: 0.7.11 @@ -4017,7 +3820,7 @@ packages: resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@docsearch/react@3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): + /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0): resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -4034,77 +3837,77 @@ packages: search-insights: optional: true dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0)(search-insights@2.13.0) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.22.0) + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) '@docsearch/css': 3.5.2 - '@types/react': 18.2.45 - algoliasearch: 4.22.0 + '@types/react': 18.2.41 + algoliasearch: 4.20.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - search-insights: 2.13.0 + search-insights: 2.11.0 transitivePeerDependencies: - '@algolia/client-search' dev: false - /@docusaurus/core@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-CXrLpOnW+dJdSv8M5FAJ3JBwXtL6mhUWxFA8aS0ozK6jBG/wgxERk5uvH28fCeFxOGbAT9v1e9dOMo1X2IEVhQ==} + /@docusaurus/core@3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-bHWtY55tJTkd6pZhHrWz1MpWuwN4edZe0/UWgFF7PW/oJeDZvLSXKqwny3L91X1/LGGoypBGkeZn8EOuKeL4yQ==} engines: {node: '>=18.0'} hasBin: true peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/core': 7.23.6 - '@babel/generator': 7.23.6 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.6) - '@babel/plugin-transform-runtime': 7.23.6(@babel/core@7.23.6) - '@babel/preset-env': 7.23.6(@babel/core@7.23.6) - '@babel/preset-react': 7.23.3(@babel/core@7.23.6) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.6) - '@babel/runtime': 7.23.6 - '@babel/runtime-corejs3': 7.23.6 - '@babel/traverse': 7.23.6 - '@docusaurus/cssnano-preset': 3.0.1 - '@docusaurus/logger': 3.0.1 - '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) + '@babel/core': 7.23.3 + '@babel/generator': 7.23.3 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-transform-runtime': 7.23.3(@babel/core@7.23.3) + '@babel/preset-env': 7.23.3(@babel/core@7.23.3) + '@babel/preset-react': 7.23.3(@babel/core@7.23.3) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.3) + '@babel/runtime': 7.23.2 + '@babel/runtime-corejs3': 7.23.2 + '@babel/traverse': 7.23.3 + '@docusaurus/cssnano-preset': 3.0.0 + '@docusaurus/logger': 3.0.0 + '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/react-loadable': 5.5.2(react@18.2.0) - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) '@slorber/static-site-generator-webpack-plugin': 4.0.7 '@svgr/webpack': 6.5.1 - autoprefixer: 10.4.16(postcss@8.4.32) - babel-loader: 9.1.3(@babel/core@7.23.6)(webpack@5.89.0) + autoprefixer: 10.4.16(postcss@8.4.31) + babel-loader: 9.1.3(@babel/core@7.23.3)(webpack@5.89.0) babel-plugin-dynamic-import-node: 2.3.3 boxen: 6.2.1 chalk: 4.1.2 chokidar: 3.5.3 - clean-css: 5.3.3 + clean-css: 5.3.2 cli-table3: 0.6.3 combine-promises: 1.2.0 commander: 5.1.0 copy-webpack-plugin: 11.0.0(webpack@5.89.0) - core-js: 3.34.0 + core-js: 3.33.3 css-loader: 6.8.1(webpack@5.89.0) - css-minimizer-webpack-plugin: 4.2.2(clean-css@5.3.3)(webpack@5.89.0) - cssnano: 5.1.15(postcss@8.4.32) + css-minimizer-webpack-plugin: 4.2.2(clean-css@5.3.2)(webpack@5.89.0) + cssnano: 5.1.15(postcss@8.4.31) del: 6.1.1 detect-port: 1.5.1 escape-html: 1.0.3 eta: 2.2.0 file-loader: 6.2.0(webpack@5.89.0) - fs-extra: 11.2.0 + fs-extra: 11.1.1 html-minifier-terser: 7.2.0 html-tags: 3.3.1 - html-webpack-plugin: 5.5.4(webpack@5.89.0) + html-webpack-plugin: 5.5.3(webpack@5.89.0) leven: 3.1.0 lodash: 4.17.21 mini-css-extract-plugin: 2.7.6(webpack@5.89.0) - postcss: 8.4.32 - postcss-loader: 7.3.3(postcss@8.4.32)(typescript@5.3.3)(webpack@5.89.0) + postcss: 8.4.31 + postcss-loader: 7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0) prompts: 2.4.2 react: 18.2.0 - react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@5.3.3)(webpack@5.89.0) + react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) react-dom: 18.2.0(react@18.2.0) react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) @@ -4120,6 +3923,7 @@ packages: tslib: 2.6.2 update-notifier: 6.0.2 url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.89.0) + wait-on: 7.2.0 webpack: 5.89.0 webpack-bundle-analyzer: 4.10.1 webpack-dev-server: 4.15.1(webpack@5.89.0) @@ -4144,55 +3948,42 @@ packages: - webpack-cli dev: false - /@docusaurus/cssnano-preset@3.0.1: - resolution: {integrity: sha512-wjuXzkHMW+ig4BD6Ya1Yevx9UJadO4smNZCEljqBoQfIQrQskTswBs7lZ8InHP7mCt273a/y/rm36EZhqJhknQ==} + /@docusaurus/cssnano-preset@3.0.0: + resolution: {integrity: sha512-FHiRfwmVvIVdIGsHcijUOaX7hMn0mugVYB7m4GkpYI6Mi56zwQV4lH5p7DxcW5CUYNWMVxz2loWSCiWEm5ikwA==} engines: {node: '>=18.0'} dependencies: - cssnano-preset-advanced: 5.3.10(postcss@8.4.32) - postcss: 8.4.32 - postcss-sort-media-queries: 4.4.1(postcss@8.4.32) + cssnano-preset-advanced: 5.3.10(postcss@8.4.31) + postcss: 8.4.31 + postcss-sort-media-queries: 4.4.1(postcss@8.4.31) tslib: 2.6.2 dev: false - /@docusaurus/logger@3.0.1: - resolution: {integrity: sha512-I5L6Nk8OJzkVA91O2uftmo71LBSxe1vmOn9AMR6JRCzYeEBrqneWMH02AqMvjJ2NpMiviO+t0CyPjyYV7nxCWQ==} + /@docusaurus/logger@3.0.0: + resolution: {integrity: sha512-6eX0eOfioMQCk+qgCnHvbLLuyIAA+r2lSID6d6JusiLtDKmYMfNp3F4yyE8bnb0Abmzt2w68XwptEFYyALSAXw==} engines: {node: '>=18.0'} dependencies: chalk: 4.1.2 tslib: 2.6.2 dev: false - /@docusaurus/lqip-loader@3.0.1(webpack@5.89.0): - resolution: {integrity: sha512-hFSu8ltYo0ZnWBWmjMhSprOr6nNKG01YdMDxH/hahBfyaNDCkZU4o7mQNgUW845lvYdp6bhjyW31WJwBjOnLqw==} - engines: {node: '>=18.0'} - dependencies: - '@docusaurus/logger': 3.0.1 - file-loader: 6.2.0(webpack@5.89.0) - lodash: 4.17.21 - sharp: 0.32.6 - tslib: 2.6.2 - transitivePeerDependencies: - - webpack - dev: false - - /@docusaurus/mdx-loader@3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ldnTmvnvlrONUq45oKESrpy+lXtbnTcTsFkOTIDswe5xx5iWJjt6eSa0f99ZaWlnm24mlojcIGoUWNCS53qVlQ==} + /@docusaurus/mdx-loader@3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-JkGge6WYDrwjNgMxwkb6kNQHnpISt5L1tMaBWFDBKeDToFr5Kj29IL35MIQm0RfrnoOfr/29RjSH4aRtvlAR0A==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/parser': 7.23.6 - '@babel/traverse': 7.23.6 - '@docusaurus/logger': 3.0.1 - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@babel/parser': 7.23.3 + '@babel/traverse': 7.23.3 + '@docusaurus/logger': 3.0.0 + '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) '@mdx-js/mdx': 3.0.0 '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 estree-util-value-to-estree: 3.0.1 file-loader: 6.2.0(webpack@5.89.0) - fs-extra: 11.2.0 + fs-extra: 11.1.1 image-size: 1.0.2 mdast-util-mdx: 3.0.0 mdast-util-to-string: 4.0.0 @@ -4240,48 +4031,24 @@ packages: - esbuild - uglify-js - webpack-cli - dev: true - - /@docusaurus/module-type-aliases@3.0.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-DEHpeqUDsLynl3AhQQiO7AbC7/z/lBra34jTcdYuvp9eGm01pfH1wTVq8YqWZq6Jyx0BgcVl/VJqtE9StRd9Ag==} - peerDependencies: - react: '*' - react-dom: '*' - dependencies: - '@docusaurus/react-loadable': 5.5.2(react@18.2.0) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@types/history': 4.7.11 - '@types/react': 18.2.45 - '@types/react-router-config': 5.0.11 - '@types/react-router-dom': 5.3.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-helmet-async: 2.0.3(react-dom@18.2.0)(react@18.2.0) - react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - dev: false - /@docusaurus/plugin-content-blog@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-cLOvtvAyaMQFLI8vm4j26svg3ktxMPSXpuUJ7EERKoGbfpJSsgtowNHcRsaBVmfuCsRSk1HZ/yHBsUkTmHFEsg==} + /@docusaurus/plugin-content-blog@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-iA8Wc3tIzVnROJxrbIsU/iSfixHW16YeW9RWsBw7hgEk4dyGsip9AsvEDXobnRq3lVv4mfdgoS545iGWf1Ip9w==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/logger': 3.0.1 - '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/logger': 3.0.0 + '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) cheerio: 1.0.0-rc.12 feed: 4.2.2 - fs-extra: 11.2.0 + fs-extra: 11.1.1 lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4309,23 +4076,23 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-dRfAOA5Ivo+sdzzJGXEu33yAtvGg8dlZkvt/NEJ7nwi1F2j4LEdsxtfX2GKeETB2fP6XoGNSQnFXqa2NYGrHFg==} + /@docusaurus/plugin-content-docs@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-MFZsOSwmeJ6rvoZMLieXxPuJsA9M9vn7/mUZmfUzSUTeHAeq+fEqvLltFOxcj4DVVDTYlQhgWYd+PISIWgamKw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/logger': 3.0.1 - '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) - '@types/react-router-config': 5.0.11 + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/logger': 3.0.0 + '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/module-type-aliases': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@types/react-router-config': 5.0.10 combine-promises: 1.2.0 - fs-extra: 11.2.0 + fs-extra: 11.1.1 js-yaml: 4.1.0 lodash: 4.17.21 react: 18.2.0 @@ -4351,19 +4118,19 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-oP7PoYizKAXyEttcvVzfX3OoBIXEmXTMzCdfmC4oSwjG4SPcJsRge3mmI6O8jcZBgUPjIzXD21bVGWEE1iu8gg==} + /@docusaurus/plugin-content-pages@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-EXYHXK2Ea1B5BUmM0DgSwaOYt8EMSzWtYUToNo62Q/EoWxYOQFdWglYnw3n7ZEGyw5Kog4LHaRwlazAdmDomvQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) - fs-extra: 11.2.0 + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + fs-extra: 11.1.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 @@ -4386,28 +4153,30 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-09dxZMdATky4qdsZGzhzlUvvC+ilQ2hKbYF+wez+cM2mGo4qHbv8+qKXqxq0CQZyimwlAOWQLoSozIXU0g0i7g==} + /@docusaurus/plugin-debug@3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-gSV07HfQgnUboVEb3lucuVyv5pEoy33E7QXzzn++3kSc/NLEimkjXh3sSnTGOishkxCqlFV9BHfY/VMm5Lko5g==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - fs-extra: 11.2.0 + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) + '@microlink/react-json-view': 1.23.0(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) + fs-extra: 11.1.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-json-view-lite: 1.2.1(react@18.2.0) tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' - '@swc/core' - '@swc/css' + - '@types/react' - bufferutil - csso - debug + - encoding - esbuild - eslint - lightningcss @@ -4419,16 +4188,16 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-jwseSz1E+g9rXQwDdr0ZdYNjn8leZBnKPjjQhMBEiwDoenL3JYFcNW0+p0sWoVF/f2z5t7HkKA+cYObrUh18gg==} + /@docusaurus/plugin-google-analytics@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-0zcLK8w+ohmSm1fjUQCqeRsjmQc0gflvXnaVA/QVVCtm2yCiBtkrSGQXqt4MdpD7Xq8mwo3qVd5nhIcvrcebqw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 @@ -4450,16 +4219,16 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-UFTDvXniAWrajsulKUJ1DB6qplui1BlKLQZjX4F7qS/qfJ+qkKqSkhJ/F4VuGQ2JYeZstYb+KaUzUzvaPK1aRQ==} + /@docusaurus/plugin-google-gtag@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-asEKavw8fczUqvXu/s9kG2m1epLnHJ19W6CCCRZEmpnkZUZKiM8rlkDiEmxApwIc2JDDbIMk+Y2TMkJI8mInbQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) '@types/gtag.js': 0.0.12 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4482,61 +4251,19 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-IPFvuz83aFuheZcWpTlAdiiX1RqWIHM+OH8wS66JgwAKOiQMR3+nLywGjkLV4bp52x7nCnwhNk1rE85Cpy/CIw==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 - transitivePeerDependencies: - - '@parcel/css' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/plugin-ideal-image@3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-IvAUpEIz6v1/fVz6UTdQY12pYIE5geNFtsuKpsULpMaotwYf3Gs7acXjQog4qquKkc65yV5zuvMj8BZMHEwLyQ==} + /@docusaurus/plugin-google-tag-manager@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-lytgu2eyn+7p4WklJkpMGRhwC29ezj4IjPPmVJ8vGzcSl6JkR1sADTHLG5xWOMuci420xZl9dGEiLTQ8FjCRyA==} engines: {node: '>=18.0'} peerDependencies: - jimp: '*' react: ^18.0.0 react-dom: ^18.0.0 - peerDependenciesMeta: - jimp: - optional: true dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/lqip-loader': 3.0.1(webpack@5.89.0) - '@docusaurus/responsive-loader': 1.7.0(sharp@0.32.6) - '@docusaurus/theme-translations': 3.0.1 - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) - '@slorber/react-ideal-image': 0.0.12(prop-types@15.8.1)(react-waypoint@10.3.0)(react@18.2.0) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-waypoint: 10.3.0(react@18.2.0) - sharp: 0.32.6 tslib: 2.6.2 - webpack: 5.89.0 transitivePeerDependencies: - '@parcel/css' - '@swc/core' @@ -4547,7 +4274,6 @@ packages: - esbuild - eslint - lightningcss - - prop-types - supports-color - typescript - uglify-js @@ -4556,20 +4282,20 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-xARiWnjtVvoEniZudlCq5T9ifnhCu/GAZ5nA7XgyLfPcNpHQa241HZdsTlLtVcecEVVdllevBKOp7qknBBaMGw==} + /@docusaurus/plugin-sitemap@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-cfcONdWku56Oi7Hdus2uvUw/RKRRlIGMViiHLjvQ21CEsEqnQ297MRoIgjU28kL7/CXD/+OiANSq3T1ezAiMhA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/logger': 3.0.1 - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) - fs-extra: 11.2.0 + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/logger': 3.0.0 + '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + fs-extra: 11.1.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) sitemap: 7.1.1 @@ -4592,26 +4318,26 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): - resolution: {integrity: sha512-il9m9xZKKjoXn6h0cRcdnt6wce0Pv1y5t4xk2Wx7zBGhKG1idu4IFHtikHlD0QPuZ9fizpXspXcTzjL5FXc1Gw==} + /@docusaurus/preset-classic@3.0.0(@algolia/client-search@4.20.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5): + resolution: {integrity: sha512-90aOKZGZdi0+GVQV+wt8xx4M4GiDrBRke8NO8nWwytMEXNrxrBxsQYFRD1YlISLJSCiHikKf3Z/MovMnQpnZyg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-debug': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-google-analytics': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-google-gtag': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-google-tag-manager': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-sitemap': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-debug': 3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-google-analytics': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-google-gtag': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-google-tag-manager': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-sitemap': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-classic': 3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-search-algolia': 3.0.0(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5) + '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -4623,6 +4349,7 @@ packages: - bufferutil - csso - debug + - encoding - esbuild - eslint - lightningcss @@ -4640,53 +4367,37 @@ packages: peerDependencies: react: '*' dependencies: - '@types/react': 18.2.45 + '@types/react': 18.2.41 prop-types: 15.8.1 react: 18.2.0 - /@docusaurus/responsive-loader@1.7.0(sharp@0.32.6): - resolution: {integrity: sha512-N0cWuVqTRXRvkBxeMQcy/OF2l7GN8rmni5EzR3HpwR+iU2ckYPnziceojcxvvxQ5NqZg1QfEW0tycQgHp+e+Nw==} - engines: {node: '>=12'} - peerDependencies: - jimp: '*' - sharp: '*' - peerDependenciesMeta: - jimp: - optional: true - sharp: - optional: true - dependencies: - loader-utils: 2.0.4 - sharp: 0.32.6 - dev: false - - /@docusaurus/theme-classic@3.0.1(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-XD1FRXaJiDlmYaiHHdm27PNhhPboUah9rqIH0lMpBt5kYtsGjJzhqa27KuZvHLzOP2OEpqd2+GZ5b6YPq7Q05Q==} + /@docusaurus/theme-classic@3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-wWOHSrKMn7L4jTtXBsb5iEJ3xvTddBye5PjYBnWiCkTAlhle2yMdc4/qRXW35Ot+OV/VXu6YFG8XVUJEl99z0A==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-translations': 3.0.1 - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) - '@mdx-js/react': 3.0.0(@types/react@18.2.45)(react@18.2.0) - clsx: 2.0.0 + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/module-type-aliases': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-translations': 3.0.0 + '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@mdx-js/react': 3.0.0(@types/react@18.2.41)(react@18.2.0) + clsx: 1.2.1 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.43 lodash: 4.17.21 nprogress: 0.2.0 - postcss: 8.4.32 - prism-react-renderer: 2.3.0(react@18.2.0) + postcss: 8.4.31 + prism-react-renderer: 2.2.0(react@18.2.0) prismjs: 1.29.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4713,26 +4424,26 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-cr9TOWXuIOL0PUfuXv6L5lPlTgaphKP+22NdVBOYah5jSq5XAAulJTjfe+IfLsEG4L7lJttLbhW7LXDFSAI7Ag==} + /@docusaurus/theme-common@3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-PahRpCLRK5owCMEqcNtUeTMOkTUCzrJlKA+HLu7f+8osYOni617YurXvHASCsSTxurjXaLz/RqZMnASnqATxIA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/module-type-aliases': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) '@types/history': 4.7.11 - '@types/react': 18.2.45 - '@types/react-router-config': 5.0.11 - clsx: 2.0.0 + '@types/react': 18.2.37 + '@types/react-router-config': 5.0.10 + clsx: 1.2.1 parse-numeric-range: 1.3.0 - prism-react-renderer: 2.3.0(react@18.2.0) + prism-react-renderer: 2.2.0(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 @@ -4756,26 +4467,26 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): - resolution: {integrity: sha512-DDiPc0/xmKSEdwFkXNf1/vH1SzJPzuJBar8kMcBbDAZk/SAmo/4lf6GU2drou4Ae60lN2waix+jYWTWcJRahSA==} + /@docusaurus/theme-search-algolia@3.0.0(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5): + resolution: {integrity: sha512-PyMUNIS9yu0dx7XffB13ti4TG47pJq3G2KE/INvOFb6M0kWh+wwCnucPg4WAOysHOPh+SD9fjlXILoLQstgEIA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/logger': 3.0.1 - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-translations': 3.0.1 - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) - '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) - algoliasearch: 4.22.0 - algoliasearch-helper: 3.16.0(algoliasearch@4.22.0) - clsx: 2.0.0 + '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0) + '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/logger': 3.0.0 + '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-translations': 3.0.0 + '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + algoliasearch: 4.20.0 + algoliasearch-helper: 3.15.0(algoliasearch@4.20.0) + clsx: 1.2.1 eta: 2.2.0 - fs-extra: 11.2.0 + fs-extra: 11.1.1 lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4803,8 +4514,8 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-translations@3.0.1: - resolution: {integrity: sha512-6UrbpzCTN6NIJnAtZ6Ne9492vmPVX+7Fsz4kmp+yor3KQwA1+MCzQP7ItDNkP38UmVLnvB/cYk/IvehCUqS3dg==} + /@docusaurus/theme-translations@3.0.0: + resolution: {integrity: sha512-p/H3+5LdnDtbMU+csYukA6601U1ld2v9knqxGEEV96qV27HsHfP63J9Ta2RBZUrNhQAgrwFzIc9GdDO8P1Baag==} engines: {node: '>=18.0'} dependencies: fs-extra: 11.1.1 @@ -4832,33 +4543,9 @@ packages: - esbuild - uglify-js - webpack-cli - dev: true - - /@docusaurus/types@3.0.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-plyX2iU1tcUsF46uQ01pAd4JhexR7n0iiQ5MSnBFX6M6NSJgDYdru/i1/YNPKOnQHBoXGLHv0dNT6OAlDWNjrg==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@types/history': 4.7.11 - '@types/react': 18.2.38 - commander: 5.1.0 - joi: 17.11.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) - utility-types: 3.10.0 - webpack: 5.89.0 - webpack-merge: 5.10.0 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli - dev: false - /@docusaurus/utils-common@3.0.1(@docusaurus/types@3.0.1): - resolution: {integrity: sha512-W0AxD6w6T8g6bNro8nBRWf7PeZ/nn7geEWM335qHU2DDDjHuV4UZjgUGP1AQsdcSikPrlIqTJJbKzer1lRSlIg==} + /@docusaurus/utils-common@3.0.0(@docusaurus/types@3.0.0): + resolution: {integrity: sha512-7iJWAtt4AHf4PFEPlEPXko9LZD/dbYnhLe0q8e3GRK1EXZyRASah2lznpMwB3lLmVjq/FR6ZAKF+E0wlmL5j0g==} engines: {node: '>=18.0'} peerDependencies: '@docusaurus/types': '*' @@ -4866,16 +4553,16 @@ packages: '@docusaurus/types': optional: true dependencies: - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) tslib: 2.6.2 dev: false - /@docusaurus/utils-validation@3.0.1(@docusaurus/types@3.0.1): - resolution: {integrity: sha512-ujTnqSfyGQ7/4iZdB4RRuHKY/Nwm58IIb+41s5tCXOv/MBU2wGAjOHq3U+AEyJ8aKQcHbxvTKJaRchNHYUVUQg==} + /@docusaurus/utils-validation@3.0.0(@docusaurus/types@3.0.0): + resolution: {integrity: sha512-MlIGUspB/HBW5CYgHvRhmkZbeMiUWKbyVoCQYvbGN8S19SSzVgzyy97KRpcjCOYYeEdkhmRCUwFBJBlLg3IoNQ==} engines: {node: '>=18.0'} dependencies: - '@docusaurus/logger': 3.0.1 - '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/logger': 3.0.0 + '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) joi: 17.11.0 js-yaml: 4.1.0 tslib: 2.6.2 @@ -4888,8 +4575,8 @@ packages: - webpack-cli dev: false - /@docusaurus/utils@3.0.1(@docusaurus/types@3.0.1): - resolution: {integrity: sha512-TwZ33Am0q4IIbvjhUOs+zpjtD/mXNmLmEgeTGuRq01QzulLHuPhaBTTAC/DHu6kFx3wDgmgpAlaRuCHfTcXv8g==} + /@docusaurus/utils@3.0.0(@docusaurus/types@3.0.0): + resolution: {integrity: sha512-JwGjh5mtjG9XIAESyPxObL6CZ6LO/yU4OSTpq7Q0x+jN25zi/AMbvLjpSyZzWy+qm5uQiFiIhqFaOxvy+82Ekg==} engines: {node: '>=18.0'} peerDependencies: '@docusaurus/types': '*' @@ -4897,12 +4584,12 @@ packages: '@docusaurus/types': optional: true dependencies: - '@docusaurus/logger': 3.0.1 - '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/logger': 3.0.0 + '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) '@svgr/webpack': 6.5.1 escape-string-regexp: 4.0.0 file-loader: 6.2.0(webpack@5.89.0) - fs-extra: 11.2.0 + fs-extra: 11.1.1 github-slugger: 1.5.0 globby: 11.1.0 gray-matter: 4.0.3 @@ -5664,8 +5351,8 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.10.4 - '@types/yargs': 17.0.32 + '@types/node': 20.9.2 + '@types/yargs': 17.0.31 chalk: 4.1.2 dev: false @@ -5765,7 +5452,7 @@ packages: estree-util-to-js: 2.0.0 estree-walker: 3.0.3 hast-util-to-estree: 3.1.0 - hast-util-to-jsx-runtime: 2.3.0 + hast-util-to-jsx-runtime: 2.2.0 markdown-extensions: 2.0.0 periscopic: 3.1.0 remark-mdx: 3.0.0 @@ -5781,14 +5468,14 @@ packages: - supports-color dev: false - /@mdx-js/react@3.0.0(@types/react@18.2.45)(react@18.2.0): + /@mdx-js/react@3.0.0(@types/react@18.2.41)(react@18.2.0): resolution: {integrity: sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ==} peerDependencies: '@types/react': '>=16' react: '>=16' dependencies: '@types/mdx': 2.0.10 - '@types/react': 18.2.45 + '@types/react': 18.2.41 react: 18.2.0 dev: false @@ -5831,6 +5518,23 @@ packages: - supports-color dev: false + /@microlink/react-json-view@1.23.0(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-HYJ1nsfO4/qn8afnAMhuk7+5a1vcjEaS8Gm5Vpr1SqdHDY0yLBJGpA+9DvKyxyVKaUkXzKXt3Mif9RcmFSdtYg==} + peerDependencies: + react: '>= 15' + react-dom: '>= 15' + dependencies: + flux: 4.0.4(react@18.2.0) + react: 18.2.0 + react-base16-styling: 0.6.0 + react-dom: 18.2.0(react@18.2.0) + react-lifecycles-compat: 3.0.4 + react-textarea-autosize: 8.3.4(@types/react@18.2.41)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - encoding + dev: false + /@motionone/animation@10.16.3: resolution: {integrity: sha512-QUGWpLbMFLhyqKlngjZhjtxM8IqiJQjLK0DF+XOF6od9nhSvlaeEpOY/UMCRVcZn/9Tr2rZO22EkuCIjYdI74g==} dependencies: @@ -6192,7 +5896,6 @@ packages: picocolors: 1.0.0 tiny-glob: 0.2.9 tslib: 2.5.2 - dev: false /@pnpm/config.env-replace@1.1.0: resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} @@ -6215,8 +5918,8 @@ packages: config-chain: 1.1.13 dev: false - /@polka/url@1.0.0-next.24: - resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + /@polka/url@1.0.0-next.23: + resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} dev: false /@protobufjs/aspromise@1.1.2: @@ -6403,25 +6106,6 @@ packages: typescript: 4.9.5 dev: true - /@rollup/plugin-typescript@11.1.3(rollup@2.79.1)(typescript@5.3.3): - resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.14.0||^3.0.0 - tslib: '*' - typescript: '>=3.7.0' - peerDependenciesMeta: - rollup: - optional: true - tslib: - optional: true - dependencies: - '@rollup/pluginutils': 5.0.2(rollup@2.79.1) - resolve: 1.22.2 - rollup: 2.79.1 - typescript: 5.3.3 - dev: true - /@rollup/pluginutils@3.1.0(rollup@2.79.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} @@ -6509,7 +6193,7 @@ packages: resolution: {integrity: sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==} dependencies: '@noble/curves': 1.0.0 - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.2 '@scure/base': 1.1.1 dev: false @@ -6523,7 +6207,7 @@ packages: /@scure/bip39@1.2.0: resolution: {integrity: sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==} dependencies: - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.2 '@scure/base': 1.1.1 dev: false @@ -6551,16 +6235,16 @@ packages: engines: {node: '>=4'} dev: false - /@sindresorhus/is@4.6.0: - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} - dev: false - /@sindresorhus/is@5.6.0: resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} dev: false + /@sindresorhus/is@6.1.0: + resolution: {integrity: sha512-BuvU07zq3tQ/2SIgBsEuxKYDyDjC0n7Zir52bpHy2xnBbW81+po43aLFPLbeV3HRAheFbGud1qgcqSYfhtHMAg==} + engines: {node: '>=16'} + dev: false + /@sinonjs/commons@3.0.0: resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} dependencies: @@ -6574,19 +6258,6 @@ packages: '@sinonjs/commons': 3.0.0 dev: true - /@slorber/react-ideal-image@0.0.12(prop-types@15.8.1)(react-waypoint@10.3.0)(react@18.2.0): - resolution: {integrity: sha512-u8KiDTEkMA7/KAeA5ywg/P7YG4zuKhWtswfVZDH8R8HXgQsFcHIYU2WaQnGuK/Du7Wdj90I+SdFmajSGFRvoKA==} - engines: {node: '>= 8.9.0', npm: '> 3'} - peerDependencies: - prop-types: '>=15' - react: '>=0.14.x' - react-waypoint: '>=9.0.2' - dependencies: - prop-types: 15.8.1 - react: 18.2.0 - react-waypoint: 10.3.0(react@18.2.0) - dev: false - /@slorber/remark-comment@1.0.0: resolution: {integrity: sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==} dependencies: @@ -6751,101 +6422,101 @@ packages: '@stablelib/wipe': 1.0.1 dev: false - /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.23.6): + /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.23.3): resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 dev: false - /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.6): + /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.3): resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 dev: false - /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.6): + /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.3): resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 dev: false - /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.23.6): + /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.23.3): resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 dev: false - /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.23.6): + /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.23.3): resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 dev: false - /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.23.6): + /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.23.3): resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 dev: false - /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.23.6): + /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.23.3): resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 dev: false - /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.23.6): + /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.23.3): resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 dev: false - /@svgr/babel-preset@6.5.1(@babel/core@7.23.6): + /@svgr/babel-preset@6.5.1(@babel/core@7.23.3): resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.23.6) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.6) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.6) - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.23.6) - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.23.6) - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.23.6) - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.23.6) - '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.23.6) + '@babel/core': 7.23.3 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.23.3) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.3) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.3) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.23.3) + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.23.3) + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.23.3) + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.23.3) + '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.23.3) dev: false /@svgr/core@6.5.1: resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.6 - '@svgr/babel-preset': 6.5.1(@babel/core@7.23.6) + '@babel/core': 7.23.3 + '@svgr/babel-preset': 6.5.1(@babel/core@7.23.3) '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) camelcase: 6.3.0 cosmiconfig: 7.1.0 @@ -6857,7 +6528,7 @@ packages: resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} engines: {node: '>=10'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.3 entities: 4.5.0 dev: false @@ -6867,8 +6538,8 @@ packages: peerDependencies: '@svgr/core': ^6.0.0 dependencies: - '@babel/core': 7.23.6 - '@svgr/babel-preset': 6.5.1(@babel/core@7.23.6) + '@babel/core': 7.23.3 + '@svgr/babel-preset': 6.5.1(@babel/core@7.23.3) '@svgr/core': 6.5.1 '@svgr/hast-util-to-babel-ast': 6.5.1 svg-parser: 2.0.4 @@ -6892,11 +6563,11 @@ packages: resolution: {integrity: sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.6 - '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.23.6) - '@babel/preset-env': 7.23.6(@babel/core@7.23.6) - '@babel/preset-react': 7.23.3(@babel/core@7.23.6) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.6) + '@babel/core': 7.23.3 + '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.23.3) + '@babel/preset-env': 7.23.3(@babel/core@7.23.3) + '@babel/preset-react': 7.23.3(@babel/core@7.23.3) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.3) '@svgr/core': 6.5.1 '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) @@ -7022,28 +6693,34 @@ packages: '@types/node': 18.16.18 dev: false - /@types/body-parser@1.19.5: - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + /@types/body-parser@1.19.3: + resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} dependencies: - '@types/connect': 3.4.38 - '@types/node': 20.10.4 + '@types/connect': 3.4.35 + '@types/node': 20.10.3 dev: false - /@types/bonjour@3.5.13: - resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + /@types/bonjour@3.5.11: + resolution: {integrity: sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==} dependencies: - '@types/node': 20.10.4 + '@types/node': 18.16.18 dev: false /@types/chai@4.3.5: resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} dev: true - /@types/connect-history-api-fallback@1.5.4: - resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + /@types/connect-history-api-fallback@1.5.1: + resolution: {integrity: sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==} + dependencies: + '@types/express-serve-static-core': 4.17.36 + '@types/node': 18.16.18 + dev: false + + /@types/connect@3.4.35: + resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/express-serve-static-core': 4.17.41 - '@types/node': 20.10.4 + '@types/node': 20.10.3 dev: false /@types/connect@3.4.38: @@ -7107,22 +6784,22 @@ packages: /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - /@types/express-serve-static-core@4.17.41: - resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} + /@types/express-serve-static-core@4.17.36: + resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} dependencies: - '@types/node': 20.10.4 - '@types/qs': 6.9.10 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 + '@types/node': 18.16.18 + '@types/qs': 6.9.8 + '@types/range-parser': 1.2.4 + '@types/send': 0.17.1 dev: false - /@types/express@4.17.21: - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + /@types/express@4.17.17: + resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} dependencies: - '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.17.41 - '@types/qs': 6.9.10 - '@types/serve-static': 1.15.5 + '@types/body-parser': 1.19.3 + '@types/express-serve-static-core': 4.17.36 + '@types/qs': 6.9.8 + '@types/serve-static': 1.15.2 dev: false /@types/fs-extra@11.0.1: @@ -7166,14 +6843,14 @@ packages: resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} dev: false - /@types/http-errors@2.0.4: - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + /@types/http-errors@2.0.2: + resolution: {integrity: sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==} dev: false - /@types/http-proxy@1.17.14: - resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} + /@types/http-proxy@1.17.12: + resolution: {integrity: sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.10.3 dev: false /@types/is-ci@3.0.0: @@ -7294,17 +6971,12 @@ packages: resolution: {integrity: sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==} dev: false - /@types/mime@1.3.5: - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + /@types/mime@1.3.2: + resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} dev: false /@types/mime@3.0.1: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} - dev: true - - /@types/mime@3.0.4: - resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} - dev: false /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} @@ -7328,12 +7000,6 @@ packages: '@types/node': 18.16.18 dev: false - /@types/node-forge@1.3.10: - resolution: {integrity: sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==} - dependencies: - '@types/node': 20.10.4 - dev: false - /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} @@ -7344,15 +7010,22 @@ packages: /@types/node@18.16.18: resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} - /@types/node@20.10.4: - resolution: {integrity: sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==} + /@types/node@20.10.3: + resolution: {integrity: sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg==} dependencies: undici-types: 5.26.5 + dev: false /@types/node@20.6.0: resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} dev: false + /@types/node@20.9.2: + resolution: {integrity: sha512-WHZXKFCEyIUJzAwh3NyyTHYSR35SevJ6mZ1nWwJafKtiQbqRTIKSRcw3Ma3acqgsent3RRDqeVwpHntMk+9irg==} + dependencies: + undici-types: 5.26.5 + dev: false + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -7387,12 +7060,12 @@ packages: /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - /@types/qs@6.9.10: - resolution: {integrity: sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==} + /@types/qs@6.9.8: + resolution: {integrity: sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==} dev: false - /@types/range-parser@1.2.7: - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + /@types/range-parser@1.2.4: + resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: false /@types/react-dom@18.2.5: @@ -7406,15 +7079,6 @@ packages: '@types/history': 4.7.11 '@types/react': 18.2.37 '@types/react-router': 5.1.20 - dev: true - - /@types/react-router-config@5.0.11: - resolution: {integrity: sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==} - dependencies: - '@types/history': 4.7.11 - '@types/react': 18.2.45 - '@types/react-router': 5.1.20 - dev: false /@types/react-router-dom@5.3.3: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} @@ -7427,7 +7091,7 @@ packages: resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.38 + '@types/react': 18.2.37 /@types/react@18.2.12: resolution: {integrity: sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==} @@ -7443,20 +7107,13 @@ packages: '@types/scheduler': 0.16.6 csstype: 3.1.2 - /@types/react@18.2.38: - resolution: {integrity: sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw==} + /@types/react@18.2.41: + resolution: {integrity: sha512-CwOGr/PiLiNBxEBqpJ7fO3kocP/2SSuC9fpH5K7tusrg4xPSRT/193rzolYwQnTN02We/ATXKnb6GqA5w4fRxw==} dependencies: '@types/prop-types': 15.7.11 '@types/scheduler': 0.16.8 csstype: 3.1.2 - /@types/react@18.2.45: - resolution: {integrity: sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==} - dependencies: - '@types/prop-types': 15.7.11 - '@types/scheduler': 0.16.8 - csstype: 3.1.3 - /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: @@ -7502,31 +7159,31 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@types/send@0.17.4: - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + /@types/send@0.17.1: + resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: - '@types/mime': 1.3.5 - '@types/node': 20.10.4 + '@types/mime': 1.3.2 + '@types/node': 18.16.18 dev: false - /@types/serve-index@1.9.4: - resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} + /@types/serve-index@1.9.1: + resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==} dependencies: - '@types/express': 4.17.21 + '@types/express': 4.17.17 dev: false - /@types/serve-static@1.15.5: - resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} + /@types/serve-static@1.15.2: + resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} dependencies: - '@types/http-errors': 2.0.4 - '@types/mime': 3.0.4 - '@types/node': 20.10.4 + '@types/http-errors': 2.0.2 + '@types/mime': 3.0.1 + '@types/node': 18.16.18 dev: false - /@types/sockjs@0.3.36: - resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + /@types/sockjs@0.3.33: + resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: - '@types/node': 20.10.4 + '@types/node': 18.16.18 dev: false /@types/stack-utils@2.0.1: @@ -7559,10 +7216,10 @@ packages: '@types/node': 18.16.18 dev: false - /@types/ws@8.5.10: - resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + /@types/ws@8.5.5: + resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: - '@types/node': 20.10.4 + '@types/node': 18.16.18 dev: false /@types/xml2js@0.4.11: @@ -7585,13 +7242,13 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@types/yargs@17.0.32: - resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + /@types/yargs@17.0.31: + resolution: {integrity: sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==} dependencies: '@types/yargs-parser': 21.0.3 dev: false - /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.3): + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7603,29 +7260,29 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@5.3.3) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.2 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@5.3.3): + /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -7650,26 +7307,6 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: false - - /@typescript-eslint/parser@5.59.11(eslint@8.48.0)(typescript@5.3.3): - resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.3) - debug: 4.3.4(supports-color@8.1.1) - eslint: 8.48.0 - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color /@typescript-eslint/scope-manager@5.59.11: resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} @@ -7686,7 +7323,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.7 dev: true - /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@5.3.3): + /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7696,12 +7333,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.3) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true @@ -7734,29 +7371,8 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: false - - /@typescript-eslint/typescript-estree@5.59.11(typescript@5.3.3): - resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/visitor-keys': 5.59.11 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.2 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color - /@typescript-eslint/typescript-estree@5.59.7(typescript@5.3.3): + /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7771,13 +7387,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.2 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@5.3.3): + /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7788,7 +7404,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.2 @@ -7797,7 +7413,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@5.3.3): + /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7808,7 +7424,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.7 '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.2 @@ -8611,8 +8227,8 @@ packages: engines: {node: '>=0.4.0'} dev: true - /acorn-walk@8.3.1: - resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==} + /acorn-walk@8.3.0: + resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} engines: {node: '>=0.4.0'} dev: false @@ -8698,32 +8314,32 @@ packages: require-from-string: 2.0.2 uri-js: 4.4.1 - /algoliasearch-helper@3.16.0(algoliasearch@4.22.0): - resolution: {integrity: sha512-RxOtBafSQwyqD5BLO/q9VsVw/zuNz8kjb51OZhCIWLr33uvKB+vrRis+QK+JFlNQXbXf+w28fsTWiBupc1pHew==} + /algoliasearch-helper@3.15.0(algoliasearch@4.20.0): + resolution: {integrity: sha512-DGUnK3TGtDQsaUE4ayF/LjSN0DGsuYThB8WBgnnDY0Wq04K6lNVruO3LfqJOgSfDiezp+Iyt8Tj4YKHi+/ivSA==} peerDependencies: algoliasearch: '>= 3.1 < 6' dependencies: '@algolia/events': 4.0.1 - algoliasearch: 4.22.0 + algoliasearch: 4.20.0 dev: false - /algoliasearch@4.22.0: - resolution: {integrity: sha512-gfceltjkwh7PxXwtkS8KVvdfK+TSNQAWUeNSxf4dA29qW5tf2EGwa8jkJujlT9jLm17cixMVoGNc+GJFO1Mxhg==} + /algoliasearch@4.20.0: + resolution: {integrity: sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==} dependencies: - '@algolia/cache-browser-local-storage': 4.22.0 - '@algolia/cache-common': 4.22.0 - '@algolia/cache-in-memory': 4.22.0 - '@algolia/client-account': 4.22.0 - '@algolia/client-analytics': 4.22.0 - '@algolia/client-common': 4.22.0 - '@algolia/client-personalization': 4.22.0 - '@algolia/client-search': 4.22.0 - '@algolia/logger-common': 4.22.0 - '@algolia/logger-console': 4.22.0 - '@algolia/requester-browser-xhr': 4.22.0 - '@algolia/requester-common': 4.22.0 - '@algolia/requester-node-http': 4.22.0 - '@algolia/transporter': 4.22.0 + '@algolia/cache-browser-local-storage': 4.20.0 + '@algolia/cache-common': 4.20.0 + '@algolia/cache-in-memory': 4.20.0 + '@algolia/client-account': 4.20.0 + '@algolia/client-analytics': 4.20.0 + '@algolia/client-common': 4.20.0 + '@algolia/client-personalization': 4.20.0 + '@algolia/client-search': 4.20.0 + '@algolia/logger-common': 4.20.0 + '@algolia/logger-console': 4.20.0 + '@algolia/requester-browser-xhr': 4.20.0 + '@algolia/requester-common': 4.20.0 + '@algolia/requester-node-http': 4.20.0 + '@algolia/transporter': 4.20.0 dev: false /ansi-align@3.0.1: @@ -8898,6 +8514,10 @@ packages: engines: {node: '>=0.10.0'} dev: true + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: false + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -8935,19 +8555,35 @@ packages: engines: {node: '>=8.0.0'} dev: false - /autoprefixer@10.4.16(postcss@8.4.32): + /autoprefixer@10.4.15(postcss@8.4.31): + resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.10 + caniuse-lite: 1.0.30001527 + fraction.js: 4.3.6 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: false + + /autoprefixer@10.4.16(postcss@8.4.31): resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.22.2 - caniuse-lite: 1.0.30001570 + browserslist: 4.22.1 + caniuse-lite: 1.0.30001563 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.32 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false @@ -8974,10 +8610,6 @@ packages: dependencies: deep-equal: 2.2.1 - /b4a@1.6.4: - resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} - dev: false - /babel-jest@29.5.0(@babel/core@7.23.3): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8996,14 +8628,14 @@ packages: - supports-color dev: true - /babel-loader@9.1.3(@babel/core@7.23.6)(webpack@5.89.0): + /babel-loader@9.1.3(@babel/core@7.23.3)(webpack@5.89.0): resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} engines: {node: '>= 14.15.0'} peerDependencies: '@babel/core': ^7.12.0 webpack: '>=5' dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 find-cache-dir: 4.0.0 schema-utils: 4.2.0 webpack: 5.89.0 @@ -9012,7 +8644,7 @@ packages: /babel-plugin-dynamic-import-node@2.3.3: resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} dependencies: - object.assign: 4.1.5 + object.assign: 4.1.4 dev: false /babel-plugin-istanbul@6.1.1: @@ -9060,14 +8692,14 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-corejs2@0.4.7(@babel/core@7.23.6): - resolution: {integrity: sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==} + /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.3): + resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.6 - '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.6) + '@babel/compat-data': 7.23.3 + '@babel/core': 7.23.3 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -9085,14 +8717,14 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.23.6): - resolution: {integrity: sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==} + /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.3): + resolution: {integrity: sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.6) - core-js-compat: 3.34.0 + '@babel/core': 7.23.3 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) + core-js-compat: 3.33.3 transitivePeerDependencies: - supports-color dev: false @@ -9108,13 +8740,13 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.5.4(@babel/core@7.23.6): - resolution: {integrity: sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==} + /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.3): + resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.6 - '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.6) + '@babel/core': 7.23.3 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) transitivePeerDependencies: - supports-color dev: false @@ -9191,6 +8823,10 @@ packages: safe-buffer: 5.2.1 dev: false + /base16@1.0.0: + resolution: {integrity: sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==} + dev: false + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false @@ -9408,16 +9044,6 @@ packages: node-releases: 2.0.13 update-browserslist-db: 1.0.13(browserslist@4.22.1) - /browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001570 - electron-to-chromium: 1.4.613 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.2) - /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -9579,7 +9205,7 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.6.2 + tslib: 2.5.2 dev: false /camelcase-keys@6.2.2: @@ -9607,8 +9233,8 @@ packages: /caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: - browserslist: 4.22.2 - caniuse-lite: 1.0.30001570 + browserslist: 4.21.10 + caniuse-lite: 1.0.30001527 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: false @@ -9619,9 +9245,6 @@ packages: /caniuse-lite@1.0.30001563: resolution: {integrity: sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==} - /caniuse-lite@1.0.30001570: - resolution: {integrity: sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==} - /case@1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} engines: {node: '>= 0.8.0'} @@ -9744,10 +9367,6 @@ packages: optionalDependencies: fsevents: 2.3.3 - /chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: false - /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} @@ -9778,8 +9397,8 @@ packages: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: true - /clean-css@5.3.3: - resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + /clean-css@5.3.2: + resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} engines: {node: '>= 10.0'} dependencies: source-map: 0.6.1 @@ -9910,11 +9529,6 @@ packages: engines: {node: '>=6'} dev: false - /clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - dev: false - /cluster-key-slot@1.1.2: resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} engines: {node: '>=0.10.0'} @@ -9950,21 +9564,6 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - dev: false - - /color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - dev: false - /colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} dev: false @@ -10090,10 +9689,6 @@ packages: engines: {node: ^14.18.0 || >=16.10.0} dev: false - /consolidated-events@2.0.2: - resolution: {integrity: sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==} - dev: false - /content-disposition@0.5.2: resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} engines: {node: '>= 0.6'} @@ -10213,19 +9808,19 @@ packages: browserslist: 4.21.10 dev: true - /core-js-compat@3.34.0: - resolution: {integrity: sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==} + /core-js-compat@3.33.3: + resolution: {integrity: sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==} dependencies: - browserslist: 4.22.2 + browserslist: 4.22.1 dev: false - /core-js-pure@3.34.0: - resolution: {integrity: sha512-pmhivkYXkymswFfbXsANmBAewXx86UBfmagP+w0wkK06kLsLlTK5oQmsURPivzMkIBQiYq2cjamcZExIwlFQIg==} + /core-js-pure@3.33.3: + resolution: {integrity: sha512-taJ00IDOP+XYQEA2dAe4ESkmHt1fL8wzYDo3mRWQey8uO9UojlBFMneA65kMyxfYP7106c6LzWaq7/haDT6BCQ==} requiresBuild: true dev: false - /core-js@3.34.0: - resolution: {integrity: sha512-aDdvlDder8QmY91H88GzNi9EtQi2TjvQhpCX6B1v/dAZHU1AuLgHvRh54RiOerpEhEW46Tkf+vgAViB/CWC0ag==} + /core-js@3.33.3: + resolution: {integrity: sha512-lo0kOocUlLKmm6kv/FswQL8zbkH7mVsLJ/FULClOhv8WRVmKLVcs6XPNQAzstfeJTCHMyButEwG+z1kHxHoDZw==} requiresBuild: true dev: false @@ -10252,7 +9847,7 @@ packages: dependencies: '@types/node': 18.16.18 cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.3.3) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) typescript: 4.9.5 dev: true @@ -10287,7 +9882,7 @@ packages: path-type: 4.0.0 dev: true - /cosmiconfig@8.3.6(typescript@5.3.3): + /cosmiconfig@8.3.6(typescript@4.9.5): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -10300,7 +9895,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 5.3.3 + typescript: 4.9.5 dev: false /cosmjs-types@0.4.1: @@ -10405,13 +10000,13 @@ packages: type-fest: 1.4.0 dev: false - /css-declaration-sorter@6.4.1(postcss@8.4.32): + /css-declaration-sorter@6.4.1(postcss@8.4.31): resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} engines: {node: ^10 || ^12 || >=14} peerDependencies: postcss: ^8.0.9 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 dev: false /css-loader@6.8.1(webpack@5.89.0): @@ -10420,18 +10015,18 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.32) - postcss: 8.4.32 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.32) - postcss-modules-local-by-default: 4.0.3(postcss@8.4.32) - postcss-modules-scope: 3.0.0(postcss@8.4.32) - postcss-modules-values: 4.0.0(postcss@8.4.32) + icss-utils: 5.1.0(postcss@8.4.31) + postcss: 8.4.31 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.31) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.31) + postcss-modules-scope: 3.0.0(postcss@8.4.31) + postcss-modules-values: 4.0.0(postcss@8.4.31) postcss-value-parser: 4.2.0 semver: 7.5.4 webpack: 5.89.0 dev: false - /css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.3)(webpack@5.89.0): + /css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.2)(webpack@5.89.0): resolution: {integrity: sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -10456,10 +10051,10 @@ packages: lightningcss: optional: true dependencies: - clean-css: 5.3.3 - cssnano: 5.1.15(postcss@8.4.32) + clean-css: 5.3.2 + cssnano: 5.1.15(postcss@8.4.31) jest-worker: 29.7.0 - postcss: 8.4.32 + postcss: 8.4.31 schema-utils: 4.2.0 serialize-javascript: 6.0.1 source-map: 0.6.1 @@ -10510,77 +10105,77 @@ packages: hasBin: true dev: false - /cssnano-preset-advanced@5.3.10(postcss@8.4.32): + /cssnano-preset-advanced@5.3.10(postcss@8.4.31): resolution: {integrity: sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - autoprefixer: 10.4.16(postcss@8.4.32) - cssnano-preset-default: 5.2.14(postcss@8.4.32) - postcss: 8.4.32 - postcss-discard-unused: 5.1.0(postcss@8.4.32) - postcss-merge-idents: 5.1.1(postcss@8.4.32) - postcss-reduce-idents: 5.2.0(postcss@8.4.32) - postcss-zindex: 5.1.0(postcss@8.4.32) + autoprefixer: 10.4.15(postcss@8.4.31) + cssnano-preset-default: 5.2.14(postcss@8.4.31) + postcss: 8.4.31 + postcss-discard-unused: 5.1.0(postcss@8.4.31) + postcss-merge-idents: 5.1.1(postcss@8.4.31) + postcss-reduce-idents: 5.2.0(postcss@8.4.31) + postcss-zindex: 5.1.0(postcss@8.4.31) dev: false - /cssnano-preset-default@5.2.14(postcss@8.4.32): + /cssnano-preset-default@5.2.14(postcss@8.4.31): resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - css-declaration-sorter: 6.4.1(postcss@8.4.32) - cssnano-utils: 3.1.0(postcss@8.4.32) - postcss: 8.4.32 - postcss-calc: 8.2.4(postcss@8.4.32) - postcss-colormin: 5.3.1(postcss@8.4.32) - postcss-convert-values: 5.1.3(postcss@8.4.32) - postcss-discard-comments: 5.1.2(postcss@8.4.32) - postcss-discard-duplicates: 5.1.0(postcss@8.4.32) - postcss-discard-empty: 5.1.1(postcss@8.4.32) - postcss-discard-overridden: 5.1.0(postcss@8.4.32) - postcss-merge-longhand: 5.1.7(postcss@8.4.32) - postcss-merge-rules: 5.1.4(postcss@8.4.32) - postcss-minify-font-values: 5.1.0(postcss@8.4.32) - postcss-minify-gradients: 5.1.1(postcss@8.4.32) - postcss-minify-params: 5.1.4(postcss@8.4.32) - postcss-minify-selectors: 5.2.1(postcss@8.4.32) - postcss-normalize-charset: 5.1.0(postcss@8.4.32) - postcss-normalize-display-values: 5.1.0(postcss@8.4.32) - postcss-normalize-positions: 5.1.1(postcss@8.4.32) - postcss-normalize-repeat-style: 5.1.1(postcss@8.4.32) - postcss-normalize-string: 5.1.0(postcss@8.4.32) - postcss-normalize-timing-functions: 5.1.0(postcss@8.4.32) - postcss-normalize-unicode: 5.1.1(postcss@8.4.32) - postcss-normalize-url: 5.1.0(postcss@8.4.32) - postcss-normalize-whitespace: 5.1.1(postcss@8.4.32) - postcss-ordered-values: 5.1.3(postcss@8.4.32) - postcss-reduce-initial: 5.1.2(postcss@8.4.32) - postcss-reduce-transforms: 5.1.0(postcss@8.4.32) - postcss-svgo: 5.1.0(postcss@8.4.32) - postcss-unique-selectors: 5.1.1(postcss@8.4.32) - dev: false - - /cssnano-utils@3.1.0(postcss@8.4.32): + css-declaration-sorter: 6.4.1(postcss@8.4.31) + cssnano-utils: 3.1.0(postcss@8.4.31) + postcss: 8.4.31 + postcss-calc: 8.2.4(postcss@8.4.31) + postcss-colormin: 5.3.1(postcss@8.4.31) + postcss-convert-values: 5.1.3(postcss@8.4.31) + postcss-discard-comments: 5.1.2(postcss@8.4.31) + postcss-discard-duplicates: 5.1.0(postcss@8.4.31) + postcss-discard-empty: 5.1.1(postcss@8.4.31) + postcss-discard-overridden: 5.1.0(postcss@8.4.31) + postcss-merge-longhand: 5.1.7(postcss@8.4.31) + postcss-merge-rules: 5.1.4(postcss@8.4.31) + postcss-minify-font-values: 5.1.0(postcss@8.4.31) + postcss-minify-gradients: 5.1.1(postcss@8.4.31) + postcss-minify-params: 5.1.4(postcss@8.4.31) + postcss-minify-selectors: 5.2.1(postcss@8.4.31) + postcss-normalize-charset: 5.1.0(postcss@8.4.31) + postcss-normalize-display-values: 5.1.0(postcss@8.4.31) + postcss-normalize-positions: 5.1.1(postcss@8.4.31) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.31) + postcss-normalize-string: 5.1.0(postcss@8.4.31) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.31) + postcss-normalize-unicode: 5.1.1(postcss@8.4.31) + postcss-normalize-url: 5.1.0(postcss@8.4.31) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.31) + postcss-ordered-values: 5.1.3(postcss@8.4.31) + postcss-reduce-initial: 5.1.2(postcss@8.4.31) + postcss-reduce-transforms: 5.1.0(postcss@8.4.31) + postcss-svgo: 5.1.0(postcss@8.4.31) + postcss-unique-selectors: 5.1.1(postcss@8.4.31) + dev: false + + /cssnano-utils@3.1.0(postcss@8.4.31): resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 dev: false - /cssnano@5.1.15(postcss@8.4.32): + /cssnano@5.1.15(postcss@8.4.31): resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-preset-default: 5.2.14(postcss@8.4.32) + cssnano-preset-default: 5.2.14(postcss@8.4.31) lilconfig: 2.1.0 - postcss: 8.4.32 + postcss: 8.4.31 yaml: 1.10.2 dev: false @@ -10594,9 +10189,6 @@ packages: /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - /csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - /csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} dev: true @@ -10845,7 +10437,6 @@ packages: /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} - dev: false /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} @@ -10854,15 +10445,6 @@ packages: has-property-descriptors: 1.0.0 object-keys: 1.1.1 - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.1 - object-keys: 1.1.1 - dev: false - /defu@6.1.3: resolution: {integrity: sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==} dev: false @@ -10948,11 +10530,6 @@ packages: hasBin: true dev: false - /detect-libc@2.0.2: - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} - engines: {node: '>=8'} - dev: false - /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -11183,9 +10760,6 @@ packages: /electron-to-chromium@1.4.588: resolution: {integrity: sha512-soytjxwbgcCu7nh5Pf4S2/4wa6UIu+A3p03U2yVr53qGxi1/VTR3ENI+p50v+UxqqZAfl48j3z55ud7VHIOr9w==} - /electron-to-chromium@1.4.613: - resolution: {integrity: sha512-r4x5+FowKG6q+/Wj0W9nidx7QO31BJwmR2uEo+Qh3YLGQ8SbBAFuDFpTxzly/I2gsbrFwBuIjrMp423L3O5U3w==} - /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -11407,7 +10981,7 @@ packages: eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) @@ -11417,7 +10991,7 @@ packages: - supports-color dev: false - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.3.3): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -11430,19 +11004,19 @@ packages: '@babel/core': 7.23.3 '@babel/eslint-parser': 7.21.8(@babel/core@7.23.3)(eslint@8.48.0) '@rushstack/eslint-patch': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.3) - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.48.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.3.3) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) - eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@5.3.3) - typescript: 5.3.3 + eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -11471,7 +11045,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.15.0 eslint: 8.48.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) get-tsconfig: 4.5.0 globby: 13.1.3 is-core-module: 2.12.1 @@ -11479,9 +11053,8 @@ packages: synckit: 0.8.5 transitivePeerDependencies: - supports-color - dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -11502,10 +11075,11 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 3.2.7 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) transitivePeerDependencies: - supports-color @@ -11524,7 +11098,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -11534,7 +11108,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -11542,7 +11116,7 @@ packages: doctrine: 2.1.0 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 @@ -11556,7 +11130,7 @@ packages: - eslint-import-resolver-webpack - supports-color - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.3.3): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -11569,8 +11143,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.3) - '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -11648,13 +11222,13 @@ packages: semver: 6.3.1 string.prototype.matchall: 4.0.8 - /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@5.3.3): + /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -11937,7 +11511,7 @@ packages: resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} engines: {node: '>= 0.8'} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.9.2 require-like: 0.1.2 dev: false @@ -12003,11 +11577,6 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - dev: false - /expect@29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -12108,10 +11677,6 @@ packages: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - dev: false - /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} @@ -12183,6 +11748,32 @@ packages: bser: 2.1.1 dev: true + /fbemitter@3.0.0: + resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} + dependencies: + fbjs: 3.0.5 + transitivePeerDependencies: + - encoding + dev: false + + /fbjs-css-vars@1.0.2: + resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} + dev: false + + /fbjs@3.0.5: + resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} + dependencies: + cross-fetch: 3.1.8 + fbjs-css-vars: 1.0.2 + loose-envify: 1.4.0 + object-assign: 4.1.1 + promise: 7.3.1 + setimmediate: 1.0.5 + ua-parser-js: 1.0.37 + transitivePeerDependencies: + - encoding + dev: false + /fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} dependencies: @@ -12352,18 +11943,20 @@ packages: /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - /follow-redirects@1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} + /flux@4.0.4(react@18.2.0): + resolution: {integrity: sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==} peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true + react: ^15.0.2 || ^16.0.0 || ^17.0.0 + dependencies: + fbemitter: 3.0.0 + fbjs: 3.0.5 + react: 18.2.0 + transitivePeerDependencies: + - encoding dev: false - /follow-redirects@1.15.3: - resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + /follow-redirects@1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -12377,7 +11970,7 @@ packages: dependencies: is-callable: 1.2.7 - /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@5.3.3)(webpack@5.89.0): + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -12391,7 +11984,7 @@ packages: vue-template-compiler: optional: true dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.22.13 '@types/json-schema': 7.0.15 chalk: 4.1.2 chokidar: 3.5.3 @@ -12405,7 +11998,7 @@ packages: schema-utils: 2.7.0 semver: 7.5.4 tapable: 1.1.3 - typescript: 5.3.3 + typescript: 4.9.5 webpack: 5.89.0 dev: false @@ -12433,6 +12026,10 @@ packages: engines: {node: '>= 0.6'} dev: false + /fraction.js@4.3.6: + resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==} + dev: false + /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: false @@ -12461,15 +12058,6 @@ packages: jsonfile: 6.1.0 universalify: 2.0.0 - /fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - dev: false - /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -12498,8 +12086,8 @@ packages: universalify: 2.0.1 dev: false - /fs-monkey@1.0.5: - resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} + /fs-monkey@1.0.4: + resolution: {integrity: sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==} dev: false /fs.realpath@1.0.0: @@ -12611,7 +12199,6 @@ packages: /get-tsconfig@4.5.0: resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} - dev: false /git-clone@0.1.0: resolution: {integrity: sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==} @@ -12629,10 +12216,6 @@ packages: through2: 4.0.2 dev: true - /github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - dev: false - /github-slugger@1.5.0: resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} dev: false @@ -12732,7 +12315,6 @@ packages: /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - dev: false /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -12768,7 +12350,6 @@ packages: /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - dev: false /google-protobuf@3.21.2: resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} @@ -13031,26 +12612,18 @@ packages: - supports-color dev: false - /hast-util-to-jsx-runtime@2.3.0: - resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + /hast-util-to-jsx-runtime@2.2.0: + resolution: {integrity: sha512-wSlp23N45CMjDg/BPW8zvhEi3R+8eRE1qFbjEyAUzMCzu2l1Wzwakq+Tlia9nkCtEl5mDxa7nKHsvYJ6Gfn21A==} dependencies: - '@types/estree': 1.0.5 '@types/hast': 3.0.3 '@types/unist': 3.0.2 comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.0.0 - mdast-util-mdxjs-esm: 2.0.1 property-information: 6.4.0 space-separated-tokens: 2.0.2 - style-to-object: 1.0.5 + style-to-object: 0.4.4 unist-util-position: 5.0.0 vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color dev: false /hast-util-to-parse5@8.0.0: @@ -13092,7 +12665,7 @@ packages: /history@4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.2 loose-envify: 1.4.0 resolve-pathname: 3.0.0 tiny-invariant: 1.3.1 @@ -13147,12 +12720,12 @@ packages: hasBin: true dependencies: camel-case: 4.1.2 - clean-css: 5.3.3 + clean-css: 5.3.2 commander: 8.3.0 he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.26.0 + terser: 5.19.2 dev: false /html-minifier-terser@7.2.0: @@ -13161,12 +12734,12 @@ packages: hasBin: true dependencies: camel-case: 4.1.2 - clean-css: 5.3.3 + clean-css: 5.3.2 commander: 10.0.1 entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.26.0 + terser: 5.24.0 dev: false /html-tags@3.3.1: @@ -13178,8 +12751,8 @@ packages: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} dev: false - /html-webpack-plugin@5.5.4(webpack@5.89.0): - resolution: {integrity: sha512-3wNSaVVxdxcu0jd4FpQFoICdqgxs4zIQQvj+2yQKFfBOnLETQ6X5CDWdeasuGlSsooFlMkEioWDTqBv1wvw5Iw==} + /html-webpack-plugin@5.5.3(webpack@5.89.0): + resolution: {integrity: sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==} engines: {node: '>=10.13.0'} peerDependencies: webpack: ^5.20.0 @@ -13247,7 +12820,7 @@ packages: resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} dev: false - /http-proxy-middleware@2.0.6(@types/express@4.17.21): + /http-proxy-middleware@2.0.6(@types/express@4.17.17): resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -13256,8 +12829,8 @@ packages: '@types/express': optional: true dependencies: - '@types/express': 4.17.21 - '@types/http-proxy': 1.17.14 + '@types/express': 4.17.17 + '@types/http-proxy': 1.17.12 http-proxy: 1.18.1 is-glob: 4.0.3 is-plain-obj: 3.0.0 @@ -13271,7 +12844,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.3 + follow-redirects: 1.15.2 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -13329,13 +12902,13 @@ packages: dependencies: safer-buffer: 2.1.2 - /icss-utils@5.1.0(postcss@8.4.32): + /icss-utils@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 dev: false /idb-keyval@6.2.1: @@ -13421,10 +12994,6 @@ packages: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} dev: false - /inline-style-parser@0.2.2: - resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} - dev: false - /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} @@ -13515,10 +13084,6 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - /is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: false - /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -13579,7 +13144,6 @@ packages: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true - dev: false /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} @@ -13865,7 +13429,6 @@ packages: engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - dev: false /is-yarn-global@0.4.1: resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} @@ -14018,7 +13581,7 @@ packages: - supports-color dev: true - /jest-cli@29.5.0(@types/node@20.10.4)(ts-node@10.9.1): + /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -14035,7 +13598,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@20.10.4)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -14081,47 +13644,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.10.4)(typescript@4.9.5) - transitivePeerDependencies: - - supports-color - dev: true - - /jest-config@29.5.0(@types/node@20.10.4)(ts-node@10.9.1): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.23.3 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.10.4 - babel-jest: 29.5.0(@babel/core@7.23.3) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.10.4)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true @@ -14381,7 +13904,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.10.4 + '@types/node': 20.9.2 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -14445,13 +13968,13 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.9.2 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false - /jest@29.5.0(@types/node@20.10.4)(ts-node@10.9.1): + /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -14464,7 +13987,7 @@ packages: '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@20.10.4)(ts-node@10.9.1) + jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color @@ -14657,8 +14180,8 @@ packages: package-json: 8.1.1 dev: false - /launch-editor@2.6.1: - resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==} + /launch-editor@2.6.0: + resolution: {integrity: sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==} dependencies: picocolors: 1.0.0 shell-quote: 1.8.1 @@ -14874,6 +14397,10 @@ packages: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} dev: false + /lodash.curry@4.1.1: + resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} + dev: false + /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} @@ -14881,6 +14408,10 @@ packages: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} dev: false + /lodash.flow@3.5.0: + resolution: {integrity: sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==} + dev: false + /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} dev: false @@ -15339,7 +14870,7 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} dependencies: - fs-monkey: 1.0.5 + fs-monkey: 1.0.4 dev: false /meow@6.1.1: @@ -15885,10 +15416,6 @@ packages: engines: {node: '>= 8.0.0'} dev: true - /mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - dev: false - /mlly@1.4.2: resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} dependencies: @@ -15986,10 +15513,6 @@ packages: hasBin: true dev: false - /napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - dev: false - /napi-wasm@1.1.0: resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==} dev: false @@ -16055,30 +15578,19 @@ packages: tslib: 2.6.2 dev: false - /node-abi@3.52.0: - resolution: {integrity: sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==} - engines: {node: '>=10'} - dependencies: - semver: 7.5.4 - dev: false - /node-addon-api@2.0.2: resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} dev: false - /node-addon-api@6.1.0: - resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - dev: false - /node-addon-api@7.0.0: resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==} dev: false - /node-emoji@2.1.3: - resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} + /node-emoji@2.1.1: + resolution: {integrity: sha512-+fyi06+Z9LARCwnTmUF1sRPVQFhGlIpuye3zwlzMN8bIKou6l7k1rGV8WVOEu9EQnRLfoVOYj/p107u0CoQoKA==} engines: {node: '>=18'} dependencies: - '@sindresorhus/is': 4.6.0 + '@sindresorhus/is': 6.1.0 char-regex: 1.0.2 emojilib: 2.4.0 skin-tone: 2.0.0 @@ -16133,9 +15645,6 @@ packages: /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -16241,16 +15750,6 @@ packages: has-symbols: 1.0.3 object-keys: 1.1.1 - /object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: false - /object.entries@1.1.6: resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} @@ -16334,7 +15833,6 @@ packages: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 - dev: false /opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} @@ -16502,7 +16000,7 @@ packages: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.5.2 dev: false /parent-module@1.0.1: @@ -16767,352 +16265,352 @@ packages: engines: {node: '>=10.13.0'} dev: false - /postcss-calc@8.2.4(postcss@8.4.32): + /postcss-calc@8.2.4(postcss@8.4.31): resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} peerDependencies: postcss: ^8.2.2 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 dev: false - /postcss-colormin@5.3.1(postcss@8.4.32): + /postcss-colormin@5.3.1(postcss@8.4.31): resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.22.2 + browserslist: 4.21.10 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.32 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false - /postcss-convert-values@5.1.3(postcss@8.4.32): + /postcss-convert-values@5.1.3(postcss@8.4.31): resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.22.2 - postcss: 8.4.32 + browserslist: 4.21.10 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false - /postcss-discard-comments@5.1.2(postcss@8.4.32): + /postcss-discard-comments@5.1.2(postcss@8.4.31): resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 dev: false - /postcss-discard-duplicates@5.1.0(postcss@8.4.32): + /postcss-discard-duplicates@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 dev: false - /postcss-discard-empty@5.1.1(postcss@8.4.32): + /postcss-discard-empty@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 dev: false - /postcss-discard-overridden@5.1.0(postcss@8.4.32): + /postcss-discard-overridden@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 dev: false - /postcss-discard-unused@5.1.0(postcss@8.4.32): + /postcss-discard-unused@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 postcss-selector-parser: 6.0.13 dev: false - /postcss-loader@7.3.3(postcss@8.4.32)(typescript@5.3.3)(webpack@5.89.0): + /postcss-loader@7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0): resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} engines: {node: '>= 14.15.0'} peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 dependencies: - cosmiconfig: 8.3.6(typescript@5.3.3) + cosmiconfig: 8.3.6(typescript@4.9.5) jiti: 1.21.0 - postcss: 8.4.32 + postcss: 8.4.31 semver: 7.5.4 webpack: 5.89.0 transitivePeerDependencies: - typescript dev: false - /postcss-merge-idents@5.1.1(postcss@8.4.32): + /postcss-merge-idents@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-utils: 3.1.0(postcss@8.4.32) - postcss: 8.4.32 + cssnano-utils: 3.1.0(postcss@8.4.31) + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false - /postcss-merge-longhand@5.1.7(postcss@8.4.32): + /postcss-merge-longhand@5.1.7(postcss@8.4.31): resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 postcss-value-parser: 4.2.0 - stylehacks: 5.1.1(postcss@8.4.32) + stylehacks: 5.1.1(postcss@8.4.31) dev: false - /postcss-merge-rules@5.1.4(postcss@8.4.32): + /postcss-merge-rules@5.1.4(postcss@8.4.31): resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.22.2 + browserslist: 4.21.10 caniuse-api: 3.0.0 - cssnano-utils: 3.1.0(postcss@8.4.32) - postcss: 8.4.32 + cssnano-utils: 3.1.0(postcss@8.4.31) + postcss: 8.4.31 postcss-selector-parser: 6.0.13 dev: false - /postcss-minify-font-values@5.1.0(postcss@8.4.32): + /postcss-minify-font-values@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false - /postcss-minify-gradients@5.1.1(postcss@8.4.32): + /postcss-minify-gradients@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: colord: 2.9.3 - cssnano-utils: 3.1.0(postcss@8.4.32) - postcss: 8.4.32 + cssnano-utils: 3.1.0(postcss@8.4.31) + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false - /postcss-minify-params@5.1.4(postcss@8.4.32): + /postcss-minify-params@5.1.4(postcss@8.4.31): resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.22.2 - cssnano-utils: 3.1.0(postcss@8.4.32) - postcss: 8.4.32 + browserslist: 4.21.10 + cssnano-utils: 3.1.0(postcss@8.4.31) + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false - /postcss-minify-selectors@5.2.1(postcss@8.4.32): + /postcss-minify-selectors@5.2.1(postcss@8.4.31): resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 postcss-selector-parser: 6.0.13 dev: false - /postcss-modules-extract-imports@3.0.0(postcss@8.4.32): + /postcss-modules-extract-imports@3.0.0(postcss@8.4.31): resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 dev: false - /postcss-modules-local-by-default@4.0.3(postcss@8.4.32): + /postcss-modules-local-by-default@4.0.3(postcss@8.4.31): resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.32) - postcss: 8.4.32 + icss-utils: 5.1.0(postcss@8.4.31) + postcss: 8.4.31 postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 dev: false - /postcss-modules-scope@3.0.0(postcss@8.4.32): + /postcss-modules-scope@3.0.0(postcss@8.4.31): resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 postcss-selector-parser: 6.0.13 dev: false - /postcss-modules-values@4.0.0(postcss@8.4.32): + /postcss-modules-values@4.0.0(postcss@8.4.31): resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.32) - postcss: 8.4.32 + icss-utils: 5.1.0(postcss@8.4.31) + postcss: 8.4.31 dev: false - /postcss-normalize-charset@5.1.0(postcss@8.4.32): + /postcss-normalize-charset@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 dev: false - /postcss-normalize-display-values@5.1.0(postcss@8.4.32): + /postcss-normalize-display-values@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-positions@5.1.1(postcss@8.4.32): + /postcss-normalize-positions@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-repeat-style@5.1.1(postcss@8.4.32): + /postcss-normalize-repeat-style@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-string@5.1.0(postcss@8.4.32): + /postcss-normalize-string@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-timing-functions@5.1.0(postcss@8.4.32): + /postcss-normalize-timing-functions@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-unicode@5.1.1(postcss@8.4.32): + /postcss-normalize-unicode@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.22.2 - postcss: 8.4.32 + browserslist: 4.21.10 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-url@5.1.0(postcss@8.4.32): + /postcss-normalize-url@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: normalize-url: 6.1.0 - postcss: 8.4.32 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false - /postcss-normalize-whitespace@5.1.1(postcss@8.4.32): + /postcss-normalize-whitespace@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false - /postcss-ordered-values@5.1.3(postcss@8.4.32): + /postcss-ordered-values@5.1.3(postcss@8.4.31): resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-utils: 3.1.0(postcss@8.4.32) - postcss: 8.4.32 + cssnano-utils: 3.1.0(postcss@8.4.31) + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false - /postcss-reduce-idents@5.2.0(postcss@8.4.32): + /postcss-reduce-idents@5.2.0(postcss@8.4.31): resolution: {integrity: sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false - /postcss-reduce-initial@5.1.2(postcss@8.4.32): + /postcss-reduce-initial@5.1.2(postcss@8.4.31): resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.22.2 + browserslist: 4.21.10 caniuse-api: 3.0.0 - postcss: 8.4.32 + postcss: 8.4.31 dev: false - /postcss-reduce-transforms@5.1.0(postcss@8.4.32): + /postcss-reduce-transforms@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false @@ -17124,34 +16622,34 @@ packages: util-deprecate: 1.0.2 dev: false - /postcss-sort-media-queries@4.4.1(postcss@8.4.32): + /postcss-sort-media-queries@4.4.1(postcss@8.4.31): resolution: {integrity: sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==} engines: {node: '>=10.0.0'} peerDependencies: postcss: ^8.4.16 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 sort-css-media-queries: 2.1.0 dev: false - /postcss-svgo@5.1.0(postcss@8.4.32): + /postcss-svgo@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 postcss-value-parser: 4.2.0 svgo: 2.8.0 dev: false - /postcss-unique-selectors@5.1.1(postcss@8.4.32): + /postcss-unique-selectors@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 postcss-selector-parser: 6.0.13 dev: false @@ -17159,13 +16657,13 @@ packages: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: false - /postcss-zindex@5.1.0(postcss@8.4.32): + /postcss-zindex@5.1.0(postcss@8.4.31): resolution: {integrity: sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.31 dev: false /postcss@8.4.31: @@ -17177,38 +16675,10 @@ packages: source-map-js: 1.0.2 dev: false - /postcss@8.4.32: - resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: false - /preact@10.19.2: resolution: {integrity: sha512-UA9DX/OJwv6YwP9Vn7Ti/vF80XL+YA5H2l7BpCtUr3ya8LWHFzpiO5R+N7dN16ujpIxhekRFuOOF82bXX7K/lg==} dev: false - /prebuild-install@7.1.1: - resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} - engines: {node: '>=10'} - hasBin: true - dependencies: - detect-libc: 2.0.2 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.52.0 - pump: 3.0.0 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - dev: false - /preferred-pm@3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} engines: {node: '>=10'} @@ -17272,16 +16742,6 @@ packages: react: 18.2.0 dev: false - /prism-react-renderer@2.3.0(react@18.2.0): - resolution: {integrity: sha512-UYRg2TkVIaI6tRVHC5OJ4/BxqPUxJkJvq/odLT/ykpt1zGYXooNperUxQcCvi87LyRnR4nCh81ceOA+e7nrydg==} - peerDependencies: - react: '>=16.0.0' - dependencies: - '@types/prismjs': 1.26.3 - clsx: 2.0.0 - react: 18.2.0 - dev: false - /prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} @@ -17295,6 +16755,12 @@ packages: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} dev: false + /promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + dependencies: + asap: 2.0.6 + dev: false + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -17333,7 +16799,7 @@ packages: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 18.16.18 + '@types/node': 20.10.3 long: 4.0.0 dev: false @@ -17357,13 +16823,6 @@ packages: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: false - /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: false @@ -17379,6 +16838,10 @@ packages: escape-goat: 4.0.0 dev: false + /pure-color@1.3.0: + resolution: {integrity: sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==} + dev: false + /pure-rand@6.0.2: resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} dev: true @@ -17456,10 +16919,6 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - /queue-tick@1.0.1: - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - dev: false - /queue@6.0.2: resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} dependencies: @@ -17519,7 +16978,16 @@ packages: strip-json-comments: 2.0.1 dev: false - /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@5.3.3)(webpack@5.89.0): + /react-base16-styling@0.6.0: + resolution: {integrity: sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==} + dependencies: + base16: 1.0.0 + lodash.curry: 4.1.1 + lodash.flow: 3.5.0 + pure-color: 1.3.0 + dev: false + + /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -17529,16 +16997,16 @@ packages: typescript: optional: true dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.22.13 address: 1.2.2 - browserslist: 4.22.2 + browserslist: 4.22.1 chalk: 4.1.2 cross-spawn: 7.0.3 detect-port-alt: 1.1.6 escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@5.3.3)(webpack@5.89.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -17553,7 +17021,7 @@ packages: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - typescript: 5.3.3 + typescript: 4.9.5 webpack: 5.89.0 transitivePeerDependencies: - eslint @@ -17591,32 +17059,15 @@ packages: react-fast-compare: 3.2.2 shallowequal: 1.1.0 - /react-helmet-async@2.0.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-7/X3ehSCbjCaIljWa39Bb7F1Y2JWM23FN80kLozx2TdgzUmxKDSLN6qu06NG0Srzm8ljGOjgk7r7CXeEOx4MPw==} - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - dependencies: - invariant: 2.2.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-fast-compare: 3.2.2 - shallowequal: 1.1.0 - dev: false - /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true - /react-json-view-lite@1.2.1(react@18.2.0): - resolution: {integrity: sha512-Itc0g86fytOmKZoIoJyGgvNqohWSbh3NXIKNgH6W6FT9PC1ck4xas1tT3Rr/b3UlFXyA9Jjaw9QSXdZy2JwGMQ==} - engines: {node: '>=14'} - peerDependencies: - react: ^16.13.1 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.2.0 + /react-lifecycles-compat@3.0.4: + resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} dev: false /react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.89.0): @@ -17626,7 +17077,7 @@ packages: react-loadable: '*' webpack: '>=4.41.1 || 5.x' dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.2 react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) webpack: 5.89.0 dev: false @@ -17672,7 +17123,7 @@ packages: react: '>=15' react-router: '>=5' dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.2 react: 18.2.0 react-router: 5.3.4(react@18.2.0) dev: false @@ -17682,7 +17133,7 @@ packages: peerDependencies: react: '>=15' dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.2 history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -17697,7 +17148,7 @@ packages: peerDependencies: react: '>=15' dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.2 history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -17726,16 +17177,18 @@ packages: tslib: 2.6.2 dev: false - /react-waypoint@10.3.0(react@18.2.0): - resolution: {integrity: sha512-iF1y2c1BsoXuEGz08NoahaLFIGI9gTUAAOKip96HUmylRT6DUtpgoBPjk/Y8dfcFVmfVDvUzWjNXpZyKTOV0SQ==} + /react-textarea-autosize@8.3.4(@types/react@18.2.41)(react@18.2.0): + resolution: {integrity: sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==} + engines: {node: '>=10'} peerDependencies: - react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.4 - consolidated-events: 2.0.2 - prop-types: 15.8.1 + '@babel/runtime': 7.23.2 react: 18.2.0 - react-is: 18.2.0 + use-composed-ref: 1.3.0(react@18.2.0) + use-latest: 1.2.1(@types/react@18.2.41)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' dev: false /react@18.2.0: @@ -17891,7 +17344,7 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.2 dev: false /regexp.prototype.flags@1.5.0: @@ -17964,7 +17417,7 @@ packages: '@types/mdast': 4.0.3 emoticon: 4.0.1 mdast-util-find-and-replace: 3.0.1 - node-emoji: 2.1.3 + node-emoji: 2.1.1 unified: 11.0.4 dev: false @@ -18251,7 +17704,7 @@ packages: dependencies: escalade: 3.1.1 picocolors: 1.0.0 - postcss: 8.4.32 + postcss: 8.4.31 strip-json-comments: 3.1.1 dev: false @@ -18276,7 +17729,6 @@ packages: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: tslib: 2.5.2 - dev: true /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -18343,8 +17795,8 @@ packages: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} dev: false - /search-insights@2.13.0: - resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} + /search-insights@2.11.0: + resolution: {integrity: sha512-Uin2J8Bpm3xaZi9Y8QibSys6uJOFZ+REMrf42v20AA3FUDUrshKkMEP6liJbMAHCm71wO6ls4mwAf7a3gFVxLw==} dev: false /secp256k1@4.0.3: @@ -18376,11 +17828,10 @@ packages: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} dev: false - /selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + /selfsigned@2.1.1: + resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==} engines: {node: '>=10'} dependencies: - '@types/node-forge': 1.3.10 node-forge: 1.3.1 dev: false @@ -18541,21 +17992,6 @@ packages: /shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - /sharp@0.32.6: - resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} - engines: {node: '>=14.15.0'} - requiresBuild: true - dependencies: - color: 4.2.3 - detect-libc: 2.0.2 - node-addon-api: 6.1.0 - prebuild-install: 7.1.1 - semver: 7.5.4 - simple-get: 4.0.1 - tar-fs: 3.0.4 - tunnel-agent: 0.6.0 - dev: false - /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -18616,29 +18052,11 @@ packages: engines: {node: '>=14'} dev: false - /simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - dev: false - - /simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - dev: false - - /simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - dependencies: - is-arrayish: 0.3.2 - dev: false - /sirv@2.0.3: resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} engines: {node: '>= 10'} dependencies: - '@polka/url': 1.0.0-next.24 + '@polka/url': 1.0.0-next.23 mrmime: 1.0.1 totalist: 3.0.1 dev: false @@ -18896,10 +18314,6 @@ packages: resolution: {integrity: sha512-JGUEaALvL0Mf6JCfYnJOTcobY+Nc7sG/TemDRBqCA0wEr4DER7zDchaaixTlmOxAjG1uRJmX82EQcxwTQTkqVA==} dev: false - /std-env@3.6.0: - resolution: {integrity: sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==} - dev: false - /stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} @@ -18928,13 +18342,6 @@ packages: engines: {node: '>=10.0.0'} dev: false - /streamx@2.15.6: - resolution: {integrity: sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==} - dependencies: - fast-fifo: 1.3.2 - queue-tick: 1.0.1 - dev: false - /strict-uri-encode@1.1.0: resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} engines: {node: '>=0.10.0'} @@ -19120,12 +18527,6 @@ packages: inline-style-parser: 0.1.1 dev: false - /style-to-object@1.0.5: - resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} - dependencies: - inline-style-parser: 0.2.2 - dev: false - /styled-jsx@5.1.1(@babel/core@7.23.3)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} @@ -19144,14 +18545,14 @@ packages: react: 18.2.0 dev: false - /stylehacks@5.1.1(postcss@8.4.32): + /stylehacks@5.1.1(postcss@8.4.31): resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.22.2 - postcss: 8.4.32 + browserslist: 4.21.10 + postcss: 8.4.31 postcss-selector-parser: 6.0.13 dev: false @@ -19215,7 +18616,6 @@ packages: dependencies: '@pkgr/utils': 2.3.1 tslib: 2.5.2 - dev: false /tapable@1.1.3: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} @@ -19226,23 +18626,6 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - /tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 2.2.0 - dev: false - - /tar-fs@3.0.4: - resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} - dependencies: - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 3.1.6 - dev: false - /tar-stream@1.6.2: resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} engines: {node: '>= 0.8.0'} @@ -19256,25 +18639,6 @@ packages: xtend: 4.0.2 dev: false - /tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: false - - /tar-stream@3.1.6: - resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} - dependencies: - b4a: 1.6.4 - fast-fifo: 1.3.2 - streamx: 2.15.6 - dev: false - /term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -19337,8 +18701,8 @@ packages: commander: 2.20.3 source-map-support: 0.5.21 - /terser@5.26.0: - resolution: {integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==} + /terser@5.24.0: + resolution: {integrity: sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==} engines: {node: '>=10'} hasBin: true dependencies: @@ -19398,7 +18762,6 @@ packages: dependencies: globalyzer: 0.1.0 globrex: 0.1.2 - dev: false /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} @@ -19469,7 +18832,7 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false - /ts-jest@29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5): + /ts-jest@29.1.0(@babel/core@7.23.5)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -19490,10 +18853,10 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.5 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@20.10.4)(ts-node@10.9.1) + jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -19503,7 +18866,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.16.18)(typescript@5.3.3): + /ts-node@10.9.1(@types/node@18.16.18)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -19529,37 +18892,6 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.3.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - - /ts-node@10.9.1(@types/node@20.10.4)(typescript@4.9.5): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 20.10.4 - acorn: 8.10.0 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -19591,16 +18923,6 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 - dev: false - - /tsutils@3.21.0(typescript@5.3.3): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.3.3 /tsyringe@4.8.0: resolution: {integrity: sha512-YB1FG+axdxADa3ncEtRnQCFq/M0lALGLxSZeVNbTU8NqhOVc51nnv2CISTcvc1kyv6EGPtXVr0v6lWeDxiijOA==} @@ -19718,11 +19040,6 @@ packages: hasBin: true dev: true - /typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} - engines: {node: '>=14.17'} - hasBin: true - /ua-parser-js@1.0.37: resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} dev: false @@ -19766,6 +19083,7 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: false /unenv@1.8.0: resolution: {integrity: sha512-uIGbdCWZfhRRmyKj1UioCepQ0jpq638j/Cf0xFTn4zD1nGJ2lSdzYHLzfdXN791oo/0juUiSWW1fBklXMTsuqg==} @@ -19971,16 +19289,6 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 - /update-browserslist-db@1.0.13(browserslist@4.22.2): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.22.2 - escalade: 3.1.1 - picocolors: 1.0.0 - /update-notifier@6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} engines: {node: '>=14.16'} @@ -20054,6 +19362,41 @@ packages: tslib: 2.6.2 dev: false + /use-composed-ref@1.3.0(react@18.2.0): + resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.41)(react@18.2.0): + resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.41 + react: 18.2.0 + dev: false + + /use-latest@1.2.1(@types/react@18.2.41)(react@18.2.0): + resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.41 + react: 18.2.0 + use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.41)(react@18.2.0) + dev: false + /use-sidecar@1.1.2(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} @@ -20255,6 +19598,20 @@ packages: - zod dev: false + /wait-on@7.2.0: + resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==} + engines: {node: '>=12.0.0'} + hasBin: true + dependencies: + axios: 1.6.2 + joi: 17.11.0 + lodash: 4.17.21 + minimist: 1.2.8 + rxjs: 7.8.1 + transitivePeerDependencies: + - debug + dev: false + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: @@ -20293,7 +19650,7 @@ packages: dependencies: '@discoveryjs/json-ext': 0.5.7 acorn: 8.11.2 - acorn-walk: 8.3.1 + acorn-walk: 8.3.0 commander: 7.2.0 debounce: 1.2.1 escape-string-regexp: 4.0.0 @@ -20369,13 +19726,13 @@ packages: webpack-cli: optional: true dependencies: - '@types/bonjour': 3.5.13 - '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.21 - '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.5 - '@types/sockjs': 0.3.36 - '@types/ws': 8.5.10 + '@types/bonjour': 3.5.11 + '@types/connect-history-api-fallback': 1.5.1 + '@types/express': 4.17.17 + '@types/serve-index': 1.9.1 + '@types/serve-static': 1.15.2 + '@types/sockjs': 0.3.33 + '@types/ws': 8.5.5 ansi-html-community: 0.0.8 bonjour-service: 1.1.1 chokidar: 3.5.3 @@ -20386,20 +19743,20 @@ packages: express: 4.18.2 graceful-fs: 4.2.11 html-entities: 2.4.0 - http-proxy-middleware: 2.0.6(@types/express@4.17.21) + http-proxy-middleware: 2.0.6(@types/express@4.17.17) ipaddr.js: 2.1.0 - launch-editor: 2.6.1 + launch-editor: 2.6.0 open: 8.4.2 p-retry: 4.6.2 rimraf: 3.0.2 schema-utils: 4.2.0 - selfsigned: 2.4.1 + selfsigned: 2.1.1 serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 webpack: 5.89.0 webpack-dev-middleware: 5.3.3(webpack@5.89.0) - ws: 8.15.1 + ws: 8.13.0 transitivePeerDependencies: - bufferutil - debug @@ -20516,7 +19873,7 @@ packages: chalk: 4.1.2 consola: 2.15.3 pretty-time: 1.1.0 - std-env: 3.6.0 + std-env: 3.5.0 webpack: 5.89.0 dev: false @@ -20693,8 +20050,8 @@ packages: optional: true dev: false - /ws@8.14.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): - resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} + /ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -20704,13 +20061,10 @@ packages: optional: true utf-8-validate: optional: true - dependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 dev: false - /ws@8.15.1: - resolution: {integrity: sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==} + /ws@8.14.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): + resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -20720,6 +20074,9 @@ packages: optional: true utf-8-validate: optional: true + dependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 dev: false /xdg-basedir@5.1.0: From 327e4cdbdc0e1b71236731f425db3efbe7abb4f6 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Wed, 20 Dec 2023 17:29:04 +0800 Subject: [PATCH 349/433] fix: ParseInt fullshards (#435) --- .changeset/five-humans-grin.md | 5 +++++ packages/reed-solomon/src/index.js | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/five-humans-grin.md diff --git a/.changeset/five-humans-grin.md b/.changeset/five-humans-grin.md new file mode 100644 index 00000000..cda11159 --- /dev/null +++ b/.changeset/five-humans-grin.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/reed-solomon': patch +--- + +fix: Shards to int diff --git a/packages/reed-solomon/src/index.js b/packages/reed-solomon/src/index.js index c76e7a7d..d455603c 100644 --- a/packages/reed-solomon/src/index.js +++ b/packages/reed-solomon/src/index.js @@ -66,7 +66,7 @@ export class ReedSolomon { let padding = []; if (data.length < needTotal) { - const fullShards = data.length / perShard; + const fullShards = parseInt(data.length / perShard); // padding = new Array(this.totalShards - fullShards).fill(0); padding = this._allocAligned(this.totalShards - fullShards, perShard); From 522e6bc7adb81f393e677d8cc09b8d00420bf0a5 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Wed, 20 Dec 2023 17:39:43 +0800 Subject: [PATCH 350/433] Fix/pnpm install (#436) * fix: Pnpm install * fix: Pnpm install --- .changeset/sweet-peas-suffer.md | 5 + pnpm-lock.yaml | 1832 ++++++++++++++++++------------- 2 files changed, 1078 insertions(+), 759 deletions(-) create mode 100644 .changeset/sweet-peas-suffer.md diff --git a/.changeset/sweet-peas-suffer.md b/.changeset/sweet-peas-suffer.md new file mode 100644 index 00000000..2ad63097 --- /dev/null +++ b/.changeset/sweet-peas-suffer.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/reed-solomon': patch +--- + +fix: Pnpm install diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ddc78440..9fe94fcd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -111,11 +111,14 @@ importers: doc-site: dependencies: '@docusaurus/core': - specifier: 3.0.0 - version: 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + specifier: 3.0.1 + version: 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-ideal-image': + specifier: ^3.0.1 + version: 3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/preset-classic': - specifier: 3.0.0 - version: 3.0.0(@algolia/client-search@4.20.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5) + specifier: 3.0.1 + version: 3.0.1(@algolia/client-search@4.20.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5) '@mdx-js/react': specifier: ^3.0.0 version: 3.0.0(@types/react@18.2.41)(react@18.2.0) @@ -647,7 +650,6 @@ packages: dependencies: '@babel/highlight': 7.23.4 chalk: 2.4.2 - dev: true /@babel/compat-data@7.22.9: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} @@ -701,7 +703,6 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true /@babel/eslint-parser@7.21.8(@babel/core@7.23.3)(eslint@8.48.0): resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} @@ -744,7 +745,6 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 - dev: true /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} @@ -756,14 +756,14 @@ packages: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 dev: false /@babel/helper-builder-binary-assignment-operator-visitor@7.22.3: resolution: {integrity: sha512-ahEoxgqNoYXm0k22TvOke48i1PkavGu0qGCmcq9ugi6gnmvKNaMjKBSrZTnWUi1CFEeNAUiVba0Wtzm03aSkJg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.23.5 dev: true /@babel/helper-compilation-targets@7.22.15: @@ -796,19 +796,19 @@ packages: - supports-color dev: true - /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.3): + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.5): resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 @@ -824,14 +824,27 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 + dev: true + + /@babel/helper-create-regexp-features-plugin@7.22.1(@babel/core@7.23.5): + resolution: {integrity: sha512-WWjdnfR3LPIe+0EY8td7WmjhytxXtjKAEpnAxun/hkNiyOaPlvGK+NZaBFIdi9ndYV3Gav7BpFvtUwnaJlwi1w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: false - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.3): + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.5): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 @@ -853,12 +866,12 @@ packages: - supports-color dev: true - /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.3): + /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.5): resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4(supports-color@8.1.1) @@ -882,7 +895,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.22.15 + '@babel/types': 7.23.5 dev: true /@babel/helper-function-name@7.23.0: @@ -902,14 +915,14 @@ packages: resolution: {integrity: sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.23.5 dev: true /@babel/helper-member-expression-to-functions@7.23.0: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 dev: false /@babel/helper-module-imports@7.22.15: @@ -957,20 +970,19 @@ packages: '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 - dev: true /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.23.5 dev: true /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 dev: false /@babel/helper-plugin-utils@7.22.5: @@ -987,18 +999,18 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.22.15 + '@babel/types': 7.23.5 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.3): + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.5): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 @@ -1012,19 +1024,19 @@ packages: '@babel/helper-member-expression-to-functions': 7.22.3 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/template': 7.22.15 - '@babel/traverse': 7.23.3 + '@babel/traverse': 7.23.5 '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.3): + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.5): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 @@ -1047,7 +1059,7 @@ packages: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 dev: false /@babel/helper-split-export-declaration@7.22.6: @@ -1063,7 +1075,6 @@ packages: /@babel/helper-string-parser@7.23.4: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-validator-identifier@7.22.15: resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} @@ -1081,10 +1092,10 @@ packages: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-function-name': 7.22.5 + '@babel/helper-function-name': 7.23.0 '@babel/template': 7.22.15 - '@babel/traverse': 7.23.3 - '@babel/types': 7.22.15 + '@babel/traverse': 7.23.5 + '@babel/types': 7.23.5 transitivePeerDependencies: - supports-color dev: true @@ -1095,7 +1106,7 @@ packages: dependencies: '@babel/helper-function-name': 7.23.0 '@babel/template': 7.22.15 - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 dev: false /@babel/helpers@7.23.2: @@ -1117,7 +1128,6 @@ packages: '@babel/types': 7.23.5 transitivePeerDependencies: - supports-color - dev: true /@babel/highlight@7.22.13: resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} @@ -1134,14 +1144,13 @@ packages: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 - dev: true /@babel/parser@7.22.15: resolution: {integrity: sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.23.5 dev: true /@babel/parser@7.23.3: @@ -1157,7 +1166,6 @@ packages: hasBin: true dependencies: '@babel/types': 7.23.5 - dev: true /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.23.3): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} @@ -1169,13 +1177,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.3): + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1191,25 +1199,25 @@ packages: '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.23.3) dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.3): + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.5) dev: false - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.3): + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1311,13 +1319,13 @@ packages: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.3): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.5): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 dev: false /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.23.3): @@ -1339,6 +1347,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.5): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} @@ -1356,6 +1374,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.5): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.3): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} @@ -1365,6 +1393,17 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.5): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-decorators@7.22.3(@babel/core@7.23.3): resolution: {integrity: sha512-R16Zuge73+8/nLcDjkIpyhi5wIbN7i7fiuLJR8yQX7vPAa/ltUKtd3iLbb4AgP5nrLi91HnNUNosELIGUGH1bg==} @@ -1383,6 +1422,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.5): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} @@ -1391,6 +1440,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.5): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.23.3): resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} @@ -1422,13 +1481,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.3): + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1442,13 +1501,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.3): + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1459,6 +1518,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.5): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} @@ -1467,6 +1536,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.5): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.3): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} @@ -1476,6 +1555,7 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} @@ -1485,6 +1565,17 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.5): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.3): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -1493,6 +1584,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.5): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} @@ -1501,6 +1602,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.5): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.3): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} @@ -1509,6 +1620,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.5): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -1517,6 +1638,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.5): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -1525,6 +1656,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.5): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.3): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -1533,6 +1674,16 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.5): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.3): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} @@ -1542,6 +1693,17 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.5): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.3): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} @@ -1551,6 +1713,17 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.5): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.23.3): resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} @@ -1562,13 +1735,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.3): + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1581,6 +1754,18 @@ packages: '@babel/core': 7.23.3 '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.5): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.23.5) + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-arrow-functions@7.21.5(@babel/core@7.23.3): resolution: {integrity: sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==} @@ -1592,13 +1777,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1617,17 +1802,17 @@ packages: - supports-color dev: true - /@babel/plugin-transform-async-generator-functions@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-async-generator-functions@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-59GsVNavGxAXCDDbakWSMJhajASb4kBCqDjqJsv+p5nKdbz7istmZ3HrX3L2LuiI80+zsOADCvooqQH3qGCucQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.3) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.3) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.5) dev: false /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.23.3): @@ -1644,16 +1829,16 @@ packages: - supports-color dev: true - /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.3) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.5) dev: false /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.23.3): @@ -1666,13 +1851,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1686,13 +1871,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-block-scoping@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1709,14 +1894,14 @@ packages: - supports-color dev: true - /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.5) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1734,16 +1919,16 @@ packages: - supports-color dev: true - /@babel/plugin-transform-class-static-block@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-class-static-block@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-PENDVxdr7ZxKPyi5Ffc0LjXdnJyrJxyqF5T5YjlVg4a0VFfQHW0r8iAtRiDXkfHlu1wwcvdtnndGYIeJLSuRMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.5) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.3) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.5) dev: false /@babel/plugin-transform-classes@7.21.0(@babel/core@7.23.3): @@ -1766,20 +1951,20 @@ packages: - supports-color dev: true - /@babel/plugin-transform-classes@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-classes@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 dev: false @@ -1795,13 +1980,13 @@ packages: '@babel/template': 7.22.15 dev: true - /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 dev: false @@ -1816,13 +2001,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1837,14 +2022,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1858,13 +2043,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1879,15 +2064,15 @@ packages: '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-dynamic-import@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-dynamic-import@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-vTG+cTGxPFou12Rj7ll+eD5yWeNl5/8xvQvF08y5Gv3v4mZQoyFf8/n9zg4q5vvCWt5jmgymfzMAldO7orBn7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.5) dev: false /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.23.3): @@ -1901,13 +2086,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1923,15 +2108,15 @@ packages: '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-export-namespace-from@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-export-namespace-from@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-yCLhW34wpJWRdTxxWtFZASJisihrfyMOTOQexhVzA78jlU+dH7Dw+zQgcPepQ5F3C6bAIiblZZ+qBggJdHiBAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.5) dev: false /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.23.3): @@ -1955,13 +2140,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -1977,13 +2162,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 @@ -2000,15 +2185,15 @@ packages: '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-json-strings@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-json-strings@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-H9Ej2OiISIZowZHaBwF0tsJOih1PftXJtE8EWqlEIwpc7LMTGq0rPOrywKLQ4nefzx8/HMR0D3JGXoMHYvhi0A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.5) dev: false /@babel/plugin-transform-literals@7.18.9(@babel/core@7.23.3): @@ -2021,13 +2206,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2042,15 +2227,15 @@ packages: '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-logical-assignment-operators@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-logical-assignment-operators@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-+pD5ZbxofyOygEp+zZAfujY2ShNCXRpDRIPOiBmTO693hhyOEteZgl876Xs9SAHPQpcV0vz8LvA/T+w8AzyX8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.3) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.5) dev: false /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.23.3): @@ -2063,13 +2248,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2084,14 +2269,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2107,14 +2292,14 @@ packages: '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: false @@ -2132,15 +2317,15 @@ packages: '@babel/helper-validator-identifier': 7.22.15 dev: true - /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 dev: false @@ -2156,14 +2341,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2178,14 +2363,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.3): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.5): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2199,13 +2384,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2220,15 +2405,15 @@ packages: '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-nullish-coalescing-operator@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-xzg24Lnld4DYIdysyf07zJ1P+iIfJpxtVFOzX4g+bsJ3Ng5Le7rXx9KwqKzuyaUeRnt+I1EICwQITqc0E2PmpA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.5) dev: false /@babel/plugin-transform-numeric-separator@7.22.3(@babel/core@7.23.3): @@ -2242,15 +2427,15 @@ packages: '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-numeric-separator@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-numeric-separator@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-s9GO7fIBi/BLsZ0v3Rftr6Oe4t0ctJ8h4CCXfPoEJwmvAPMyNrfkOOJzm6b9PX9YXcCJWWQd/sBF/N26eBiMVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.3) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.5) dev: false /@babel/plugin-transform-object-rest-spread@7.22.3(@babel/core@7.23.3): @@ -2267,18 +2452,18 @@ packages: '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-object-rest-spread@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-object-rest-spread@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-VxHt0ANkDmu8TANdE9Kc0rndo/ccsmfe2Cx2y5sI4hu3AukHQ5wAu4cM7j3ba8B9548ijVyclBU+nuDQftZsog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.23.3 - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.5) dev: false /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.23.3): @@ -2294,15 +2479,15 @@ packages: - supports-color dev: true - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) dev: false /@babel/plugin-transform-optional-catch-binding@7.22.3(@babel/core@7.23.3): @@ -2316,15 +2501,15 @@ packages: '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-optional-catch-binding@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-optional-catch-binding@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-LxYSb0iLjUamfm7f1D7GpiS4j0UAC8AOiehnsGAP8BEsIX8EOi3qV6bbctw8M7ZvLtcoZfZX5Z7rN9PlWk0m5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.5) dev: false /@babel/plugin-transform-optional-chaining@7.22.3(@babel/core@7.23.3): @@ -2339,16 +2524,16 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-optional-chaining@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-optional-chaining@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.5) dev: false /@babel/plugin-transform-parameters@7.22.3(@babel/core@7.23.3): @@ -2361,13 +2546,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2384,14 +2569,14 @@ packages: - supports-color dev: true - /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.5) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2410,17 +2595,17 @@ packages: - supports-color dev: true - /@babel/plugin-transform-private-property-in-object@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-private-property-in-object@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.5) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.3) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.5) dev: false /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.23.3): @@ -2433,23 +2618,23 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-react-constant-elements@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2463,13 +2648,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2483,14 +2668,14 @@ packages: '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.3): + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.5): resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.5) dev: false /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.23.3): @@ -2505,6 +2690,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.3) '@babel/types': 7.22.15 + dev: true /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.3): resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} @@ -2520,6 +2706,20 @@ packages: '@babel/types': 7.23.5 dev: true + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.5): + resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.5) + '@babel/types': 7.23.5 + dev: false + /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.23.3): resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} engines: {node: '>=6.9.0'} @@ -2531,13 +2731,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2553,13 +2753,13 @@ packages: regenerator-transform: 0.15.1 dev: true - /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.2 dev: false @@ -2574,13 +2774,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2601,18 +2801,18 @@ packages: - supports-color dev: true - /@babel/plugin-transform-runtime@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-runtime@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-XcQ3X58CKBdBnnZpPaQjgVMePsXtSZzHoku70q9tUAQp02ggPQNM04BF3RvlW1GSM/McbSOQAzEK4MXbS7/JFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.3) - babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.3) - babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.3) + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.5) + babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.5) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.5) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -2628,13 +2828,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2649,13 +2849,13 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 dev: true - /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: false @@ -2670,13 +2870,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2690,13 +2890,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2710,13 +2910,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2735,17 +2935,17 @@ packages: - supports-color dev: true - /@babel/plugin-transform-typescript@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-typescript@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-ogV0yWnq38CFwH20l2Afz0dfKuZBx9o/Y2Rmh5vuSS0YD1hswgEgTfyTzuSrT2q9btmHRSqYoSfwFUVaC1M1Jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.5) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.5) dev: false /@babel/plugin-transform-unicode-escapes@7.21.5(@babel/core@7.23.3): @@ -2758,13 +2958,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2779,14 +2979,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2801,14 +3001,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2823,14 +3023,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.3): + /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) '@babel/helper-plugin-utils': 7.22.5 dev: false @@ -2925,91 +3125,91 @@ packages: - supports-color dev: true - /@babel/preset-env@7.23.3(@babel/core@7.23.3): + /@babel/preset-env@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.23.3 - '@babel/core': 7.23.3 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.3) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.3) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.3) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.3) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.3) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.3) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.3) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.3) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.3) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.3) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-async-generator-functions': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-block-scoping': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-class-static-block': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-classes': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-dynamic-import': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-export-namespace-from': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-json-strings': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-logical-assignment-operators': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-numeric-separator': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-object-rest-spread': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-optional-catch-binding': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-private-property-in-object': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.3) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.3) - babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.3) - babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.3) - babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.3) + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.3 + '@babel/core': 7.23.5 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.5) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.5) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-async-generator-functions': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-block-scoping': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-class-static-block': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-classes': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-dynamic-import': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-export-namespace-from': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-json-strings': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-logical-assignment-operators': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.5) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-numeric-separator': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-object-rest-spread': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-optional-catch-binding': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-private-property-in-object': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.5) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.5) + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.5) + babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.5) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.5) core-js-compat: 3.33.3 semver: 6.3.1 transitivePeerDependencies: @@ -3029,14 +3229,14 @@ packages: esutils: 2.0.3 dev: true - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.3): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.5): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 esutils: 2.0.3 dev: false @@ -3055,19 +3255,19 @@ packages: '@babel/plugin-transform-react-pure-annotations': 7.18.6(@babel/core@7.23.3) dev: true - /@babel/preset-react@7.23.3(@babel/core@7.23.3): + /@babel/preset-react@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.23.3) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.5) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.5) + '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.23.5) dev: false /@babel/preset-typescript@7.21.5(@babel/core@7.23.3): @@ -3086,18 +3286,18 @@ packages: - supports-color dev: true - /@babel/preset-typescript@7.23.3(@babel/core@7.23.3): + /@babel/preset-typescript@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-transform-typescript': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-typescript': 7.23.3(@babel/core@7.23.5) dev: false /@babel/regjsgen@0.8.0: @@ -3117,19 +3317,11 @@ packages: dependencies: regenerator-runtime: 0.13.11 - /@babel/runtime@7.23.2: - resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.0 - dev: false - /@babel/runtime@7.23.4: resolution: {integrity: sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 - dev: false /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} @@ -3144,7 +3336,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.13 - '@babel/generator': 7.23.3 + '@babel/generator': 7.23.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 @@ -3172,7 +3364,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true /@babel/types@7.22.15: resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} @@ -3197,7 +3388,6 @@ packages: '@babel/helper-string-parser': 7.23.4 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - dev: true /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -3849,35 +4039,35 @@ packages: - '@algolia/client-search' dev: false - /@docusaurus/core@3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-bHWtY55tJTkd6pZhHrWz1MpWuwN4edZe0/UWgFF7PW/oJeDZvLSXKqwny3L91X1/LGGoypBGkeZn8EOuKeL4yQ==} + /@docusaurus/core@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-CXrLpOnW+dJdSv8M5FAJ3JBwXtL6mhUWxFA8aS0ozK6jBG/wgxERk5uvH28fCeFxOGbAT9v1e9dOMo1X2IEVhQ==} engines: {node: '>=18.0'} hasBin: true peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/core': 7.23.3 - '@babel/generator': 7.23.3 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-transform-runtime': 7.23.3(@babel/core@7.23.3) - '@babel/preset-env': 7.23.3(@babel/core@7.23.3) - '@babel/preset-react': 7.23.3(@babel/core@7.23.3) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.3) - '@babel/runtime': 7.23.2 + '@babel/core': 7.23.5 + '@babel/generator': 7.23.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-transform-runtime': 7.23.3(@babel/core@7.23.5) + '@babel/preset-env': 7.23.3(@babel/core@7.23.5) + '@babel/preset-react': 7.23.3(@babel/core@7.23.5) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.5) + '@babel/runtime': 7.23.4 '@babel/runtime-corejs3': 7.23.2 - '@babel/traverse': 7.23.3 - '@docusaurus/cssnano-preset': 3.0.0 - '@docusaurus/logger': 3.0.0 - '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) + '@babel/traverse': 7.23.5 + '@docusaurus/cssnano-preset': 3.0.1 + '@docusaurus/logger': 3.0.1 + '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/react-loadable': 5.5.2(react@18.2.0) - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) '@slorber/static-site-generator-webpack-plugin': 4.0.7 '@svgr/webpack': 6.5.1 autoprefixer: 10.4.16(postcss@8.4.31) - babel-loader: 9.1.3(@babel/core@7.23.3)(webpack@5.89.0) + babel-loader: 9.1.3(@babel/core@7.23.5)(webpack@5.89.0) babel-plugin-dynamic-import-node: 2.3.3 boxen: 6.2.1 chalk: 4.1.2 @@ -3923,7 +4113,6 @@ packages: tslib: 2.6.2 update-notifier: 6.0.2 url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.89.0) - wait-on: 7.2.0 webpack: 5.89.0 webpack-bundle-analyzer: 4.10.1 webpack-dev-server: 4.15.1(webpack@5.89.0) @@ -3948,8 +4137,8 @@ packages: - webpack-cli dev: false - /@docusaurus/cssnano-preset@3.0.0: - resolution: {integrity: sha512-FHiRfwmVvIVdIGsHcijUOaX7hMn0mugVYB7m4GkpYI6Mi56zwQV4lH5p7DxcW5CUYNWMVxz2loWSCiWEm5ikwA==} + /@docusaurus/cssnano-preset@3.0.1: + resolution: {integrity: sha512-wjuXzkHMW+ig4BD6Ya1Yevx9UJadO4smNZCEljqBoQfIQrQskTswBs7lZ8InHP7mCt273a/y/rm36EZhqJhknQ==} engines: {node: '>=18.0'} dependencies: cssnano-preset-advanced: 5.3.10(postcss@8.4.31) @@ -3958,26 +4147,39 @@ packages: tslib: 2.6.2 dev: false - /@docusaurus/logger@3.0.0: - resolution: {integrity: sha512-6eX0eOfioMQCk+qgCnHvbLLuyIAA+r2lSID6d6JusiLtDKmYMfNp3F4yyE8bnb0Abmzt2w68XwptEFYyALSAXw==} + /@docusaurus/logger@3.0.1: + resolution: {integrity: sha512-I5L6Nk8OJzkVA91O2uftmo71LBSxe1vmOn9AMR6JRCzYeEBrqneWMH02AqMvjJ2NpMiviO+t0CyPjyYV7nxCWQ==} engines: {node: '>=18.0'} dependencies: chalk: 4.1.2 tslib: 2.6.2 dev: false - /@docusaurus/mdx-loader@3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-JkGge6WYDrwjNgMxwkb6kNQHnpISt5L1tMaBWFDBKeDToFr5Kj29IL35MIQm0RfrnoOfr/29RjSH4aRtvlAR0A==} + /@docusaurus/lqip-loader@3.0.1(webpack@5.89.0): + resolution: {integrity: sha512-hFSu8ltYo0ZnWBWmjMhSprOr6nNKG01YdMDxH/hahBfyaNDCkZU4o7mQNgUW845lvYdp6bhjyW31WJwBjOnLqw==} + engines: {node: '>=18.0'} + dependencies: + '@docusaurus/logger': 3.0.1 + file-loader: 6.2.0(webpack@5.89.0) + lodash: 4.17.21 + sharp: 0.32.6 + tslib: 2.6.2 + transitivePeerDependencies: + - webpack + dev: false + + /@docusaurus/mdx-loader@3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ldnTmvnvlrONUq45oKESrpy+lXtbnTcTsFkOTIDswe5xx5iWJjt6eSa0f99ZaWlnm24mlojcIGoUWNCS53qVlQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/parser': 7.23.3 - '@babel/traverse': 7.23.3 - '@docusaurus/logger': 3.0.0 - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@babel/parser': 7.23.5 + '@babel/traverse': 7.23.5 + '@docusaurus/logger': 3.0.1 + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) '@mdx-js/mdx': 3.0.0 '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 @@ -4031,21 +4233,45 @@ packages: - esbuild - uglify-js - webpack-cli + dev: true + + /@docusaurus/module-type-aliases@3.0.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-DEHpeqUDsLynl3AhQQiO7AbC7/z/lBra34jTcdYuvp9eGm01pfH1wTVq8YqWZq6Jyx0BgcVl/VJqtE9StRd9Ag==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@docusaurus/react-loadable': 5.5.2(react@18.2.0) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@types/history': 4.7.11 + '@types/react': 18.2.41 + '@types/react-router-config': 5.0.10 + '@types/react-router-dom': 5.3.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + dev: false - /@docusaurus/plugin-content-blog@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-iA8Wc3tIzVnROJxrbIsU/iSfixHW16YeW9RWsBw7hgEk4dyGsip9AsvEDXobnRq3lVv4mfdgoS545iGWf1Ip9w==} + /@docusaurus/plugin-content-blog@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-cLOvtvAyaMQFLI8vm4j26svg3ktxMPSXpuUJ7EERKoGbfpJSsgtowNHcRsaBVmfuCsRSk1HZ/yHBsUkTmHFEsg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/logger': 3.0.0 - '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/logger': 3.0.1 + '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) cheerio: 1.0.0-rc.12 feed: 4.2.2 fs-extra: 11.1.1 @@ -4076,20 +4302,20 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-MFZsOSwmeJ6rvoZMLieXxPuJsA9M9vn7/mUZmfUzSUTeHAeq+fEqvLltFOxcj4DVVDTYlQhgWYd+PISIWgamKw==} + /@docusaurus/plugin-content-docs@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-dRfAOA5Ivo+sdzzJGXEu33yAtvGg8dlZkvt/NEJ7nwi1F2j4LEdsxtfX2GKeETB2fP6XoGNSQnFXqa2NYGrHFg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/logger': 3.0.0 - '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/module-type-aliases': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/logger': 3.0.1 + '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) '@types/react-router-config': 5.0.10 combine-promises: 1.2.0 fs-extra: 11.1.1 @@ -4118,18 +4344,18 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-EXYHXK2Ea1B5BUmM0DgSwaOYt8EMSzWtYUToNo62Q/EoWxYOQFdWglYnw3n7ZEGyw5Kog4LHaRwlazAdmDomvQ==} + /@docusaurus/plugin-content-pages@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-oP7PoYizKAXyEttcvVzfX3OoBIXEmXTMzCdfmC4oSwjG4SPcJsRge3mmI6O8jcZBgUPjIzXD21bVGWEE1iu8gg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) fs-extra: 11.1.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4153,30 +4379,28 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-gSV07HfQgnUboVEb3lucuVyv5pEoy33E7QXzzn++3kSc/NLEimkjXh3sSnTGOishkxCqlFV9BHfY/VMm5Lko5g==} + /@docusaurus/plugin-debug@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-09dxZMdATky4qdsZGzhzlUvvC+ilQ2hKbYF+wez+cM2mGo4qHbv8+qKXqxq0CQZyimwlAOWQLoSozIXU0g0i7g==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@microlink/react-json-view': 1.23.0(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) fs-extra: 11.1.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + react-json-view-lite: 1.2.1(react@18.2.0) tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' - '@swc/core' - '@swc/css' - - '@types/react' - bufferutil - csso - debug - - encoding - esbuild - eslint - lightningcss @@ -4188,16 +4412,16 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-0zcLK8w+ohmSm1fjUQCqeRsjmQc0gflvXnaVA/QVVCtm2yCiBtkrSGQXqt4MdpD7Xq8mwo3qVd5nhIcvrcebqw==} + /@docusaurus/plugin-google-analytics@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-jwseSz1E+g9rXQwDdr0ZdYNjn8leZBnKPjjQhMBEiwDoenL3JYFcNW0+p0sWoVF/f2z5t7HkKA+cYObrUh18gg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 @@ -4219,16 +4443,16 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-asEKavw8fczUqvXu/s9kG2m1epLnHJ19W6CCCRZEmpnkZUZKiM8rlkDiEmxApwIc2JDDbIMk+Y2TMkJI8mInbQ==} + /@docusaurus/plugin-google-gtag@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-UFTDvXniAWrajsulKUJ1DB6qplui1BlKLQZjX4F7qS/qfJ+qkKqSkhJ/F4VuGQ2JYeZstYb+KaUzUzvaPK1aRQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) '@types/gtag.js': 0.0.12 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4251,16 +4475,16 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-lytgu2eyn+7p4WklJkpMGRhwC29ezj4IjPPmVJ8vGzcSl6JkR1sADTHLG5xWOMuci420xZl9dGEiLTQ8FjCRyA==} + /@docusaurus/plugin-google-tag-manager@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-IPFvuz83aFuheZcWpTlAdiiX1RqWIHM+OH8wS66JgwAKOiQMR3+nLywGjkLV4bp52x7nCnwhNk1rE85Cpy/CIw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 @@ -4282,19 +4506,62 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-cfcONdWku56Oi7Hdus2uvUw/RKRRlIGMViiHLjvQ21CEsEqnQ297MRoIgjU28kL7/CXD/+OiANSq3T1ezAiMhA==} + /@docusaurus/plugin-ideal-image@3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-IvAUpEIz6v1/fVz6UTdQY12pYIE5geNFtsuKpsULpMaotwYf3Gs7acXjQog4qquKkc65yV5zuvMj8BZMHEwLyQ==} engines: {node: '>=18.0'} peerDependencies: + jimp: '*' react: ^18.0.0 react-dom: ^18.0.0 + peerDependenciesMeta: + jimp: + optional: true dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/logger': 3.0.0 - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/lqip-loader': 3.0.1(webpack@5.89.0) + '@docusaurus/responsive-loader': 1.7.0(sharp@0.32.6) + '@docusaurus/theme-translations': 3.0.1 + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) + '@slorber/react-ideal-image': 0.0.12(prop-types@15.8.1)(react-waypoint@10.3.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-waypoint: 10.3.0(react@18.2.0) + sharp: 0.32.6 + tslib: 2.6.2 + webpack: 5.89.0 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - prop-types + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false + + /@docusaurus/plugin-sitemap@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-xARiWnjtVvoEniZudlCq5T9ifnhCu/GAZ5nA7XgyLfPcNpHQa241HZdsTlLtVcecEVVdllevBKOp7qknBBaMGw==} + engines: {node: '>=18.0'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/logger': 3.0.1 + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) fs-extra: 11.1.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4318,26 +4585,26 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.0.0(@algolia/client-search@4.20.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5): - resolution: {integrity: sha512-90aOKZGZdi0+GVQV+wt8xx4M4GiDrBRke8NO8nWwytMEXNrxrBxsQYFRD1YlISLJSCiHikKf3Z/MovMnQpnZyg==} + /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.20.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5): + resolution: {integrity: sha512-il9m9xZKKjoXn6h0cRcdnt6wce0Pv1y5t4xk2Wx7zBGhKG1idu4IFHtikHlD0QPuZ9fizpXspXcTzjL5FXc1Gw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-debug': 3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-analytics': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-gtag': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-tag-manager': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-sitemap': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-classic': 3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-search-algolia': 3.0.0(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5) - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-debug': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-google-analytics': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-google-gtag': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-google-tag-manager': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-sitemap': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.1)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -4349,7 +4616,6 @@ packages: - bufferutil - csso - debug - - encoding - esbuild - eslint - lightningcss @@ -4371,33 +4637,49 @@ packages: prop-types: 15.8.1 react: 18.2.0 - /@docusaurus/theme-classic@3.0.0(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-wWOHSrKMn7L4jTtXBsb5iEJ3xvTddBye5PjYBnWiCkTAlhle2yMdc4/qRXW35Ot+OV/VXu6YFG8XVUJEl99z0A==} + /@docusaurus/responsive-loader@1.7.0(sharp@0.32.6): + resolution: {integrity: sha512-N0cWuVqTRXRvkBxeMQcy/OF2l7GN8rmni5EzR3HpwR+iU2ckYPnziceojcxvvxQ5NqZg1QfEW0tycQgHp+e+Nw==} + engines: {node: '>=12'} + peerDependencies: + jimp: '*' + sharp: '*' + peerDependenciesMeta: + jimp: + optional: true + sharp: + optional: true + dependencies: + loader-utils: 2.0.4 + sharp: 0.32.6 + dev: false + + /@docusaurus/theme-classic@3.0.1(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-XD1FRXaJiDlmYaiHHdm27PNhhPboUah9rqIH0lMpBt5kYtsGjJzhqa27KuZvHLzOP2OEpqd2+GZ5b6YPq7Q05Q==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/module-type-aliases': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-translations': 3.0.0 - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-translations': 3.0.1 + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) '@mdx-js/react': 3.0.0(@types/react@18.2.41)(react@18.2.0) - clsx: 1.2.1 + clsx: 2.0.0 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.43 lodash: 4.17.21 nprogress: 0.2.0 postcss: 8.4.31 - prism-react-renderer: 2.2.0(react@18.2.0) + prism-react-renderer: 2.3.1(react@18.2.0) prismjs: 1.29.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4424,26 +4706,26 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-PahRpCLRK5owCMEqcNtUeTMOkTUCzrJlKA+HLu7f+8osYOni617YurXvHASCsSTxurjXaLz/RqZMnASnqATxIA==} + /@docusaurus/theme-common@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + resolution: {integrity: sha512-cr9TOWXuIOL0PUfuXv6L5lPlTgaphKP+22NdVBOYah5jSq5XAAulJTjfe+IfLsEG4L7lJttLbhW7LXDFSAI7Ag==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/mdx-loader': 3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/module-type-aliases': 3.0.0(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) '@types/history': 4.7.11 - '@types/react': 18.2.37 + '@types/react': 18.2.41 '@types/react-router-config': 5.0.10 - clsx: 1.2.1 + clsx: 2.0.0 parse-numeric-range: 1.3.0 - prism-react-renderer: 2.2.0(react@18.2.0) + prism-react-renderer: 2.3.1(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tslib: 2.6.2 @@ -4467,24 +4749,24 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.0.0(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.0)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5): - resolution: {integrity: sha512-PyMUNIS9yu0dx7XffB13ti4TG47pJq3G2KE/INvOFb6M0kWh+wwCnucPg4WAOysHOPh+SD9fjlXILoLQstgEIA==} + /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.1)(@types/react@18.2.41)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5): + resolution: {integrity: sha512-DDiPc0/xmKSEdwFkXNf1/vH1SzJPzuJBar8kMcBbDAZk/SAmo/4lf6GU2drou4Ae60lN2waix+jYWTWcJRahSA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0) - '@docusaurus/core': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/logger': 3.0.0 - '@docusaurus/plugin-content-docs': 3.0.0(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.0(@docusaurus/types@3.0.0)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-translations': 3.0.0 - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/logger': 3.0.1 + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-translations': 3.0.1 + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) algoliasearch: 4.20.0 algoliasearch-helper: 3.15.0(algoliasearch@4.20.0) - clsx: 1.2.1 + clsx: 2.0.0 eta: 2.2.0 fs-extra: 11.1.1 lodash: 4.17.21 @@ -4514,8 +4796,8 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-translations@3.0.0: - resolution: {integrity: sha512-p/H3+5LdnDtbMU+csYukA6601U1ld2v9knqxGEEV96qV27HsHfP63J9Ta2RBZUrNhQAgrwFzIc9GdDO8P1Baag==} + /@docusaurus/theme-translations@3.0.1: + resolution: {integrity: sha512-6UrbpzCTN6NIJnAtZ6Ne9492vmPVX+7Fsz4kmp+yor3KQwA1+MCzQP7ItDNkP38UmVLnvB/cYk/IvehCUqS3dg==} engines: {node: '>=18.0'} dependencies: fs-extra: 11.1.1 @@ -4543,9 +4825,33 @@ packages: - esbuild - uglify-js - webpack-cli + dev: true + + /@docusaurus/types@3.0.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-plyX2iU1tcUsF46uQ01pAd4JhexR7n0iiQ5MSnBFX6M6NSJgDYdru/i1/YNPKOnQHBoXGLHv0dNT6OAlDWNjrg==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.41 + commander: 5.1.0 + joi: 17.11.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) + utility-types: 3.10.0 + webpack: 5.89.0 + webpack-merge: 5.10.0 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + dev: false - /@docusaurus/utils-common@3.0.0(@docusaurus/types@3.0.0): - resolution: {integrity: sha512-7iJWAtt4AHf4PFEPlEPXko9LZD/dbYnhLe0q8e3GRK1EXZyRASah2lznpMwB3lLmVjq/FR6ZAKF+E0wlmL5j0g==} + /@docusaurus/utils-common@3.0.1(@docusaurus/types@3.0.1): + resolution: {integrity: sha512-W0AxD6w6T8g6bNro8nBRWf7PeZ/nn7geEWM335qHU2DDDjHuV4UZjgUGP1AQsdcSikPrlIqTJJbKzer1lRSlIg==} engines: {node: '>=18.0'} peerDependencies: '@docusaurus/types': '*' @@ -4553,16 +4859,16 @@ packages: '@docusaurus/types': optional: true dependencies: - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) tslib: 2.6.2 dev: false - /@docusaurus/utils-validation@3.0.0(@docusaurus/types@3.0.0): - resolution: {integrity: sha512-MlIGUspB/HBW5CYgHvRhmkZbeMiUWKbyVoCQYvbGN8S19SSzVgzyy97KRpcjCOYYeEdkhmRCUwFBJBlLg3IoNQ==} + /@docusaurus/utils-validation@3.0.1(@docusaurus/types@3.0.1): + resolution: {integrity: sha512-ujTnqSfyGQ7/4iZdB4RRuHKY/Nwm58IIb+41s5tCXOv/MBU2wGAjOHq3U+AEyJ8aKQcHbxvTKJaRchNHYUVUQg==} engines: {node: '>=18.0'} dependencies: - '@docusaurus/logger': 3.0.0 - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/logger': 3.0.1 + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) joi: 17.11.0 js-yaml: 4.1.0 tslib: 2.6.2 @@ -4575,8 +4881,8 @@ packages: - webpack-cli dev: false - /@docusaurus/utils@3.0.0(@docusaurus/types@3.0.0): - resolution: {integrity: sha512-JwGjh5mtjG9XIAESyPxObL6CZ6LO/yU4OSTpq7Q0x+jN25zi/AMbvLjpSyZzWy+qm5uQiFiIhqFaOxvy+82Ekg==} + /@docusaurus/utils@3.0.1(@docusaurus/types@3.0.1): + resolution: {integrity: sha512-TwZ33Am0q4IIbvjhUOs+zpjtD/mXNmLmEgeTGuRq01QzulLHuPhaBTTAC/DHu6kFx3wDgmgpAlaRuCHfTcXv8g==} engines: {node: '>=18.0'} peerDependencies: '@docusaurus/types': '*' @@ -4584,8 +4890,8 @@ packages: '@docusaurus/types': optional: true dependencies: - '@docusaurus/logger': 3.0.0 - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/logger': 3.0.1 + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@svgr/webpack': 6.5.1 escape-string-regexp: 4.0.0 file-loader: 6.2.0(webpack@5.89.0) @@ -5278,7 +5584,6 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.27.8 - dev: false /@jest/source-map@29.4.3: resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} @@ -5351,10 +5656,9 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.9.2 + '@types/node': 18.16.18 '@types/yargs': 17.0.31 chalk: 4.1.2 - dev: false /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} @@ -5518,23 +5822,6 @@ packages: - supports-color dev: false - /@microlink/react-json-view@1.23.0(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-HYJ1nsfO4/qn8afnAMhuk7+5a1vcjEaS8Gm5Vpr1SqdHDY0yLBJGpA+9DvKyxyVKaUkXzKXt3Mif9RcmFSdtYg==} - peerDependencies: - react: '>= 15' - react-dom: '>= 15' - dependencies: - flux: 4.0.4(react@18.2.0) - react: 18.2.0 - react-base16-styling: 0.6.0 - react-dom: 18.2.0(react@18.2.0) - react-lifecycles-compat: 3.0.4 - react-textarea-autosize: 8.3.4(@types/react@18.2.41)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - encoding - dev: false - /@motionone/animation@10.16.3: resolution: {integrity: sha512-QUGWpLbMFLhyqKlngjZhjtxM8IqiJQjLK0DF+XOF6od9nhSvlaeEpOY/UMCRVcZn/9Tr2rZO22EkuCIjYdI74g==} dependencies: @@ -5895,7 +6182,7 @@ packages: open: 8.4.2 picocolors: 1.0.0 tiny-glob: 0.2.9 - tslib: 2.5.2 + tslib: 2.6.2 /@pnpm/config.env-replace@1.1.0: resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} @@ -6228,7 +6515,6 @@ packages: /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - dev: false /@sindresorhus/is@0.7.0: resolution: {integrity: sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==} @@ -6258,6 +6544,19 @@ packages: '@sinonjs/commons': 3.0.0 dev: true + /@slorber/react-ideal-image@0.0.12(prop-types@15.8.1)(react-waypoint@10.3.0)(react@18.2.0): + resolution: {integrity: sha512-u8KiDTEkMA7/KAeA5ywg/P7YG4zuKhWtswfVZDH8R8HXgQsFcHIYU2WaQnGuK/Du7Wdj90I+SdFmajSGFRvoKA==} + engines: {node: '>= 8.9.0', npm: '> 3'} + peerDependencies: + prop-types: '>=15' + react: '>=0.14.x' + react-waypoint: '>=9.0.2' + dependencies: + prop-types: 15.8.1 + react: 18.2.0 + react-waypoint: 10.3.0(react@18.2.0) + dev: false + /@slorber/remark-comment@1.0.0: resolution: {integrity: sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==} dependencies: @@ -6422,101 +6721,101 @@ packages: '@stablelib/wipe': 1.0.1 dev: false - /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.23.5): resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 dev: false - /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.3): + /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.5): resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 dev: false - /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.3): + /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.5): resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 dev: false - /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.23.5): resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 dev: false - /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.23.5): resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 dev: false - /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.23.5): resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 dev: false - /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.23.5): resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 dev: false - /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.23.3): + /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.23.5): resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 dev: false - /@svgr/babel-preset@6.5.1(@babel/core@7.23.3): + /@svgr/babel-preset@6.5.1(@babel/core@7.23.5): resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.3 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.23.3) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.3) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.3) - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.23.3) - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.23.3) - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.23.3) - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.23.3) - '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.23.5) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.5) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.5) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.23.5) + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.23.5) + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.23.5) + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.23.5) + '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.23.5) dev: false /@svgr/core@6.5.1: resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.3 - '@svgr/babel-preset': 6.5.1(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@svgr/babel-preset': 6.5.1(@babel/core@7.23.5) '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) camelcase: 6.3.0 cosmiconfig: 7.1.0 @@ -6528,7 +6827,7 @@ packages: resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} engines: {node: '>=10'} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 entities: 4.5.0 dev: false @@ -6538,8 +6837,8 @@ packages: peerDependencies: '@svgr/core': ^6.0.0 dependencies: - '@babel/core': 7.23.3 - '@svgr/babel-preset': 6.5.1(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@svgr/babel-preset': 6.5.1(@babel/core@7.23.5) '@svgr/core': 6.5.1 '@svgr/hast-util-to-babel-ast': 6.5.1 svg-parser: 2.0.4 @@ -6563,11 +6862,11 @@ packages: resolution: {integrity: sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.3 - '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.23.3) - '@babel/preset-env': 7.23.3(@babel/core@7.23.3) - '@babel/preset-react': 7.23.3(@babel/core@7.23.3) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@babel/plugin-transform-react-constant-elements': 7.23.3(@babel/core@7.23.5) + '@babel/preset-env': 7.23.3(@babel/core@7.23.5) + '@babel/preset-react': 7.23.3(@babel/core@7.23.5) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.5) '@svgr/core': 6.5.1 '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) @@ -6661,8 +6960,8 @@ packages: /@types/babel__core@7.20.0: resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} dependencies: - '@babel/parser': 7.22.15 - '@babel/types': 7.22.15 + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.5 @@ -6671,14 +6970,14 @@ packages: /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.23.5 dev: true /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.22.15 - '@babel/types': 7.22.15 + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 dev: true /@types/babel__traverse@7.18.5: @@ -6696,8 +6995,8 @@ packages: /@types/body-parser@1.19.3: resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} dependencies: - '@types/connect': 3.4.35 - '@types/node': 20.10.3 + '@types/connect': 3.4.38 + '@types/node': 18.16.18 dev: false /@types/bonjour@3.5.11: @@ -6717,12 +7016,6 @@ packages: '@types/node': 18.16.18 dev: false - /@types/connect@3.4.35: - resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} - dependencies: - '@types/node': 20.10.3 - dev: false - /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: @@ -6850,7 +7143,7 @@ packages: /@types/http-proxy@1.17.12: resolution: {integrity: sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==} dependencies: - '@types/node': 20.10.3 + '@types/node': 18.16.18 dev: false /@types/is-ci@3.0.0: @@ -6865,7 +7158,6 @@ packages: /@types/istanbul-lib-coverage@2.0.6: resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - dev: false /@types/istanbul-lib-report@3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} @@ -6877,7 +7169,6 @@ packages: resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} dependencies: '@types/istanbul-lib-coverage': 2.0.6 - dev: false /@types/istanbul-reports@3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} @@ -6889,7 +7180,6 @@ packages: resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} dependencies: '@types/istanbul-lib-report': 3.0.3 - dev: false /@types/jest@29.5.1: resolution: {integrity: sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==} @@ -7020,12 +7310,6 @@ packages: resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} dev: false - /@types/node@20.9.2: - resolution: {integrity: sha512-WHZXKFCEyIUJzAwh3NyyTHYSR35SevJ6mZ1nWwJafKtiQbqRTIKSRcw3Ma3acqgsent3RRDqeVwpHntMk+9irg==} - dependencies: - undici-types: 5.26.5 - dev: false - /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -7133,7 +7417,7 @@ packages: /@types/sax@1.2.7: resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} dependencies: - '@types/node': 17.0.45 + '@types/node': 18.16.18 dev: false /@types/scheduler@0.16.3: @@ -7234,7 +7518,6 @@ packages: /@types/yargs-parser@21.0.3: resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - dev: false /@types/yargs@17.0.24: resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} @@ -7246,7 +7529,6 @@ packages: resolution: {integrity: sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==} dependencies: '@types/yargs-parser': 21.0.3 - dev: false /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} @@ -7386,7 +7668,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.2 + semver: 7.5.4 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: @@ -7427,7 +7709,7 @@ packages: '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) eslint: 8.48.0 eslint-scope: 5.1.1 - semver: 7.5.2 + semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript @@ -8514,10 +8796,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false - /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -8555,22 +8833,6 @@ packages: engines: {node: '>=8.0.0'} dev: false - /autoprefixer@10.4.15(postcss@8.4.31): - resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - dependencies: - browserslist: 4.21.10 - caniuse-lite: 1.0.30001527 - fraction.js: 4.3.6 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.31 - postcss-value-parser: 4.2.0 - dev: false - /autoprefixer@10.4.16(postcss@8.4.31): resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} engines: {node: ^10 || ^12 || >=14} @@ -8610,6 +8872,10 @@ packages: dependencies: deep-equal: 2.2.1 + /b4a@1.6.4: + resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} + dev: false + /babel-jest@29.5.0(@babel/core@7.23.3): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8628,14 +8894,14 @@ packages: - supports-color dev: true - /babel-loader@9.1.3(@babel/core@7.23.3)(webpack@5.89.0): + /babel-loader@9.1.3(@babel/core@7.23.5)(webpack@5.89.0): resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} engines: {node: '>= 14.15.0'} peerDependencies: '@babel/core': ^7.12.0 webpack: '>=5' dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 find-cache-dir: 4.0.0 schema-utils: 4.2.0 webpack: 5.89.0 @@ -8665,7 +8931,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.22.15 + '@babel/types': 7.23.5 '@types/babel__core': 7.20.0 '@types/babel__traverse': 7.18.5 dev: true @@ -8692,14 +8958,14 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.3): + /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.5): resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/compat-data': 7.23.3 - '@babel/core': 7.23.3 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.5) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -8717,13 +8983,13 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.3): + /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.5): resolution: {integrity: sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.5) core-js-compat: 3.33.3 transitivePeerDependencies: - supports-color @@ -8740,13 +9006,13 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.3): + /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.5): resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.3 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) + '@babel/core': 7.23.5 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.5) transitivePeerDependencies: - supports-color dev: false @@ -8823,10 +9089,6 @@ packages: safe-buffer: 5.2.1 dev: false - /base16@1.0.0: - resolution: {integrity: sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==} - dev: false - /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false @@ -9205,7 +9467,7 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.5.2 + tslib: 2.6.2 dev: false /camelcase-keys@6.2.2: @@ -9233,8 +9495,8 @@ packages: /caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: - browserslist: 4.21.10 - caniuse-lite: 1.0.30001527 + browserslist: 4.22.1 + caniuse-lite: 1.0.30001563 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: false @@ -9367,6 +9629,10 @@ packages: optionalDependencies: fsevents: 2.3.3 + /chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + dev: false + /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} @@ -9378,7 +9644,6 @@ packages: /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - dev: false /cipher-base@1.0.4: resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} @@ -9529,6 +9794,11 @@ packages: engines: {node: '>=6'} dev: false + /clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + dev: false + /cluster-key-slot@1.1.2: resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} engines: {node: '>=0.10.0'} @@ -9564,6 +9834,21 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: false + + /color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + dev: false + /colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} dev: false @@ -9689,6 +9974,10 @@ packages: engines: {node: ^14.18.0 || >=16.10.0} dev: false + /consolidated-events@2.0.2: + resolution: {integrity: sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==} + dev: false + /content-disposition@0.5.2: resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} engines: {node: '>= 0.6'} @@ -10111,7 +10400,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - autoprefixer: 10.4.15(postcss@8.4.31) + autoprefixer: 10.4.16(postcss@8.4.31) cssnano-preset-default: 5.2.14(postcss@8.4.31) postcss: 8.4.31 postcss-discard-unused: 5.1.0(postcss@8.4.31) @@ -10530,6 +10819,11 @@ packages: hasBin: true dev: false + /detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + dev: false + /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -11511,7 +11805,7 @@ packages: resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} engines: {node: '>= 0.8'} dependencies: - '@types/node': 20.9.2 + '@types/node': 18.16.18 require-like: 0.1.2 dev: false @@ -11577,6 +11871,11 @@ packages: engines: {node: '>= 0.8.0'} dev: true + /expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + dev: false + /expect@29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11677,6 +11976,10 @@ packages: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true + /fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + dev: false + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} @@ -11748,32 +12051,6 @@ packages: bser: 2.1.1 dev: true - /fbemitter@3.0.0: - resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} - dependencies: - fbjs: 3.0.5 - transitivePeerDependencies: - - encoding - dev: false - - /fbjs-css-vars@1.0.2: - resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} - dev: false - - /fbjs@3.0.5: - resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} - dependencies: - cross-fetch: 3.1.8 - fbjs-css-vars: 1.0.2 - loose-envify: 1.4.0 - object-assign: 4.1.1 - promise: 7.3.1 - setimmediate: 1.0.5 - ua-parser-js: 1.0.37 - transitivePeerDependencies: - - encoding - dev: false - /fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} dependencies: @@ -11943,18 +12220,6 @@ packages: /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - /flux@4.0.4(react@18.2.0): - resolution: {integrity: sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==} - peerDependencies: - react: ^15.0.2 || ^16.0.0 || ^17.0.0 - dependencies: - fbemitter: 3.0.0 - fbjs: 3.0.5 - react: 18.2.0 - transitivePeerDependencies: - - encoding - dev: false - /follow-redirects@1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} @@ -11984,7 +12249,7 @@ packages: vue-template-compiler: optional: true dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.23.5 '@types/json-schema': 7.0.15 chalk: 4.1.2 chokidar: 3.5.3 @@ -12026,10 +12291,6 @@ packages: engines: {node: '>= 0.6'} dev: false - /fraction.js@4.3.6: - resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==} - dev: false - /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: false @@ -12216,6 +12477,10 @@ packages: through2: 4.0.2 dev: true + /github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + dev: false + /github-slugger@1.5.0: resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} dev: false @@ -12665,7 +12930,7 @@ packages: /history@4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.23.4 loose-envify: 1.4.0 resolve-pathname: 3.0.0 tiny-invariant: 1.3.1 @@ -12725,7 +12990,7 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.19.2 + terser: 5.24.0 dev: false /html-minifier-terser@7.2.0: @@ -13084,6 +13349,10 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + /is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: false + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -13478,7 +13747,7 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 '@babel/parser': 7.22.15 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -13673,7 +13942,7 @@ packages: '@jest/types': 29.5.0 chalk: 4.1.2 jest-get-type: 29.4.3 - jest-util: 29.5.0 + jest-util: 29.7.0 pretty-format: 29.5.0 dev: true @@ -13904,12 +14173,11 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.9.2 + '@types/node': 18.16.18 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 - dev: false /jest-validate@29.5.0: resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} @@ -13968,7 +14236,7 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.9.2 + '@types/node': 18.16.18 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -14397,10 +14665,6 @@ packages: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} dev: false - /lodash.curry@4.1.1: - resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} - dev: false - /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} @@ -14408,10 +14672,6 @@ packages: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} dev: false - /lodash.flow@3.5.0: - resolution: {integrity: sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==} - dev: false - /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} dev: false @@ -15416,6 +15676,10 @@ packages: engines: {node: '>= 8.0.0'} dev: true + /mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + dev: false + /mlly@1.4.2: resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} dependencies: @@ -15513,6 +15777,10 @@ packages: hasBin: true dev: false + /napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + dev: false + /napi-wasm@1.1.0: resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==} dev: false @@ -15578,10 +15846,21 @@ packages: tslib: 2.6.2 dev: false + /node-abi@3.52.0: + resolution: {integrity: sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==} + engines: {node: '>=10'} + dependencies: + semver: 7.5.4 + dev: false + /node-addon-api@2.0.2: resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} dev: false + /node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} + dev: false + /node-addon-api@7.0.0: resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==} dev: false @@ -15660,7 +15939,7 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.12.1 - semver: 7.5.2 + semver: 7.5.4 validate-npm-package-license: 3.0.4 dev: true @@ -16000,7 +16279,7 @@ packages: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.5.2 + tslib: 2.6.2 dev: false /parent-module@1.0.1: @@ -16281,7 +16560,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 + browserslist: 4.22.1 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.4.31 @@ -16294,7 +16573,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 + browserslist: 4.22.1 postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false @@ -16389,7 +16668,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 + browserslist: 4.22.1 caniuse-api: 3.0.0 cssnano-utils: 3.1.0(postcss@8.4.31) postcss: 8.4.31 @@ -16424,7 +16703,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 + browserslist: 4.22.1 cssnano-utils: 3.1.0(postcss@8.4.31) postcss: 8.4.31 postcss-value-parser: 4.2.0 @@ -16546,7 +16825,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 + browserslist: 4.22.1 postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: false @@ -16599,7 +16878,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 + browserslist: 4.22.1 caniuse-api: 3.0.0 postcss: 8.4.31 dev: false @@ -16679,6 +16958,25 @@ packages: resolution: {integrity: sha512-UA9DX/OJwv6YwP9Vn7Ti/vF80XL+YA5H2l7BpCtUr3ya8LWHFzpiO5R+N7dN16ujpIxhekRFuOOF82bXX7K/lg==} dev: false + /prebuild-install@7.1.1: + resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + detect-libc: 2.0.2 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.52.0 + pump: 3.0.0 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + dev: false + /preferred-pm@3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} engines: {node: '>=10'} @@ -16742,6 +17040,16 @@ packages: react: 18.2.0 dev: false + /prism-react-renderer@2.3.1(react@18.2.0): + resolution: {integrity: sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==} + peerDependencies: + react: '>=16.0.0' + dependencies: + '@types/prismjs': 1.26.3 + clsx: 2.0.0 + react: 18.2.0 + dev: false + /prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} @@ -16755,12 +17063,6 @@ packages: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} dev: false - /promise@7.3.1: - resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} - dependencies: - asap: 2.0.6 - dev: false - /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -16823,6 +17125,13 @@ packages: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: false + /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: false @@ -16838,10 +17147,6 @@ packages: escape-goat: 4.0.0 dev: false - /pure-color@1.3.0: - resolution: {integrity: sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==} - dev: false - /pure-rand@6.0.2: resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} dev: true @@ -16919,6 +17224,10 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + /queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + dev: false + /queue@6.0.2: resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} dependencies: @@ -16978,15 +17287,6 @@ packages: strip-json-comments: 2.0.1 dev: false - /react-base16-styling@0.6.0: - resolution: {integrity: sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==} - dependencies: - base16: 1.0.0 - lodash.curry: 4.1.1 - lodash.flow: 3.5.0 - pure-color: 1.3.0 - dev: false - /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} @@ -16997,7 +17297,7 @@ packages: typescript: optional: true dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.23.5 address: 1.2.2 browserslist: 4.22.1 chalk: 4.1.2 @@ -17064,10 +17364,14 @@ packages: /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - dev: true - /react-lifecycles-compat@3.0.4: - resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + /react-json-view-lite@1.2.1(react@18.2.0): + resolution: {integrity: sha512-Itc0g86fytOmKZoIoJyGgvNqohWSbh3NXIKNgH6W6FT9PC1ck4xas1tT3Rr/b3UlFXyA9Jjaw9QSXdZy2JwGMQ==} + engines: {node: '>=14'} + peerDependencies: + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 dev: false /react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.89.0): @@ -17077,7 +17381,7 @@ packages: react-loadable: '*' webpack: '>=4.41.1 || 5.x' dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.23.4 react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) webpack: 5.89.0 dev: false @@ -17123,7 +17427,7 @@ packages: react: '>=15' react-router: '>=5' dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.23.4 react: 18.2.0 react-router: 5.3.4(react@18.2.0) dev: false @@ -17133,7 +17437,7 @@ packages: peerDependencies: react: '>=15' dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.23.4 history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -17148,7 +17452,7 @@ packages: peerDependencies: react: '>=15' dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.23.4 history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -17177,18 +17481,16 @@ packages: tslib: 2.6.2 dev: false - /react-textarea-autosize@8.3.4(@types/react@18.2.41)(react@18.2.0): - resolution: {integrity: sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==} - engines: {node: '>=10'} + /react-waypoint@10.3.0(react@18.2.0): + resolution: {integrity: sha512-iF1y2c1BsoXuEGz08NoahaLFIGI9gTUAAOKip96HUmylRT6DUtpgoBPjk/Y8dfcFVmfVDvUzWjNXpZyKTOV0SQ==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.23.4 + consolidated-events: 2.0.2 + prop-types: 15.8.1 react: 18.2.0 - use-composed-ref: 1.3.0(react@18.2.0) - use-latest: 1.2.1(@types/react@18.2.41)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' + react-is: 18.2.0 dev: false /react@18.2.0: @@ -17333,18 +17635,17 @@ packages: /regenerator-runtime@0.14.0: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} - dev: false /regenerator-transform@0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.23.4 dev: true /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.23.4 dev: false /regexp.prototype.flags@1.5.0: @@ -17728,7 +18029,8 @@ packages: /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.5.2 + tslib: 2.6.2 + dev: true /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -17864,7 +18166,6 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 - dev: false /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} @@ -17992,6 +18293,21 @@ packages: /shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + /sharp@0.32.6: + resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} + engines: {node: '>=14.15.0'} + requiresBuild: true + dependencies: + color: 4.2.3 + detect-libc: 2.0.2 + node-addon-api: 6.1.0 + prebuild-install: 7.1.1 + semver: 7.5.4 + simple-get: 4.0.1 + tar-fs: 3.0.4 + tunnel-agent: 0.6.0 + dev: false + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -18052,6 +18368,24 @@ packages: engines: {node: '>=14'} dev: false + /simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + dev: false + + /simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + dev: false + + /simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + dependencies: + is-arrayish: 0.3.2 + dev: false + /sirv@2.0.3: resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} engines: {node: '>= 10'} @@ -18342,6 +18676,13 @@ packages: engines: {node: '>=10.0.0'} dev: false + /streamx@2.15.6: + resolution: {integrity: sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==} + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + dev: false + /strict-uri-encode@1.1.0: resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} engines: {node: '>=0.10.0'} @@ -18551,7 +18892,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.21.10 + browserslist: 4.22.1 postcss: 8.4.31 postcss-selector-parser: 6.0.13 dev: false @@ -18626,6 +18967,23 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + /tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: false + + /tar-fs@3.0.4: + resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} + dependencies: + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 3.1.6 + dev: false + /tar-stream@1.6.2: resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} engines: {node: '>= 0.8.0'} @@ -18639,6 +18997,25 @@ packages: xtend: 4.0.2 dev: false + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + + /tar-stream@3.1.6: + resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} + dependencies: + b4a: 1.6.4 + fast-fifo: 1.3.2 + streamx: 2.15.6 + dev: false + /term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -18913,7 +19290,6 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: false /tsutils@3.21.0(typescript@4.9.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -19362,41 +19738,6 @@ packages: tslib: 2.6.2 dev: false - /use-composed-ref@1.3.0(react@18.2.0): - resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.2.0 - dev: false - - /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.41)(react@18.2.0): - resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.2.41 - react: 18.2.0 - dev: false - - /use-latest@1.2.1(@types/react@18.2.41)(react@18.2.0): - resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.2.41 - react: 18.2.0 - use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.41)(react@18.2.0) - dev: false - /use-sidecar@1.1.2(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} @@ -19598,20 +19939,6 @@ packages: - zod dev: false - /wait-on@7.2.0: - resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==} - engines: {node: '>=12.0.0'} - hasBin: true - dependencies: - axios: 1.6.2 - joi: 17.11.0 - lodash: 4.17.21 - minimist: 1.2.8 - rxjs: 7.8.1 - transitivePeerDependencies: - - debug - dev: false - /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: @@ -19756,7 +20083,7 @@ packages: spdy: 4.0.2 webpack: 5.89.0 webpack-dev-middleware: 5.3.3(webpack@5.89.0) - ws: 8.13.0 + ws: 8.14.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - debug @@ -20050,19 +20377,6 @@ packages: optional: true dev: false - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false - /ws@8.14.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} engines: {node: '>=10.0.0'} From eb8815b46e38bcb75633ed6187b600cf3f4d0a98 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 20 Dec 2023 17:42:13 +0800 Subject: [PATCH 351/433] chore: [ci] release (#437) Co-authored-by: github-actions[bot] --- .changeset/five-humans-grin.md | 5 ----- .changeset/sweet-peas-suffer.md | 5 ----- examples/nextjs/CHANGELOG.md | 9 +++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 9 +++++++++ examples/nodejs/package.json | 2 +- packages/reed-solomon/CHANGELOG.md | 12 ++++++++++++ packages/reed-solomon/package.json | 2 +- 8 files changed, 33 insertions(+), 13 deletions(-) delete mode 100644 .changeset/five-humans-grin.md delete mode 100644 .changeset/sweet-peas-suffer.md diff --git a/.changeset/five-humans-grin.md b/.changeset/five-humans-grin.md deleted file mode 100644 index cda11159..00000000 --- a/.changeset/five-humans-grin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/reed-solomon': patch ---- - -fix: Shards to int diff --git a/.changeset/sweet-peas-suffer.md b/.changeset/sweet-peas-suffer.md deleted file mode 100644 index 2ad63097..00000000 --- a/.changeset/sweet-peas-suffer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/reed-solomon': patch ---- - -fix: Pnpm install diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index da4d0aee..ffa79b67 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/wallet +## 0.0.18 + +### Patch Changes + +- Updated dependencies + [[`327e4cd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/327e4cdbdc0e1b71236731f425db3efbe7abb4f6), + [`522e6bc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/522e6bc7adb81f393e677d8cc09b8d00420bf0a5)]: + - @bnb-chain/reed-solomon@1.0.2 + ## 0.0.17 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index cc0db30d..c3c78d5f 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.17", + "version": "0.0.18", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 5296b4e7..baa033d1 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/nodejs +## 0.0.21 + +### Patch Changes + +- Updated dependencies + [[`327e4cd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/327e4cdbdc0e1b71236731f425db3efbe7abb4f6), + [`522e6bc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/522e6bc7adb81f393e677d8cc09b8d00420bf0a5)]: + - @bnb-chain/reed-solomon@1.0.2 + ## 0.0.20 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 9a37fc59..ab1f69ff 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.20", + "version": "0.0.21", "type": "commonjs", "private": true, "scripts": {}, diff --git a/packages/reed-solomon/CHANGELOG.md b/packages/reed-solomon/CHANGELOG.md index b1105310..efc12dfc 100644 --- a/packages/reed-solomon/CHANGELOG.md +++ b/packages/reed-solomon/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/reed-solomon +## 1.0.2 + +### Patch Changes + +- [#435](https://github.com/bnb-chain/greenfield-js-sdk/pull/435) + [`327e4cd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/327e4cdbdc0e1b71236731f425db3efbe7abb4f6) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Shards to int + +- [#436](https://github.com/bnb-chain/greenfield-js-sdk/pull/436) + [`522e6bc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/522e6bc7adb81f393e677d8cc09b8d00420bf0a5) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Pnpm install + ## 1.0.1 ### Patch Changes diff --git a/packages/reed-solomon/package.json b/packages/reed-solomon/package.json index c42f6682..bc091991 100644 --- a/packages/reed-solomon/package.json +++ b/packages/reed-solomon/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/reed-solomon", - "version": "1.0.1", + "version": "1.0.2", "description": "lighting implement for reed solomon", "module": "./dist/index.esm.js", "main": "./dist/index.js", From 075f9b5fa4129b582cb8569fccf1dddab1d390b9 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Wed, 20 Dec 2023 18:17:28 +0800 Subject: [PATCH 352/433] docs: Update doc-site (#438) * docs: Update doc-site * docs: Quick start --- doc-site/docs/getting-started/overview.md | 2 +- doc-site/docs/getting-started/quick-start.mdx | 10 +++++++++- .../static/img/quick-start/create-object.png | Bin 0 -> 28138 bytes examples/nextjs/package.json | 1 - .../src/components/object/create/index.tsx | 1 - examples/nodejs/package.json | 1 - packages/file-handle/README.md | 4 +++- 7 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 doc-site/static/img/quick-start/create-object.png diff --git a/doc-site/docs/getting-started/overview.md b/doc-site/docs/getting-started/overview.md index 074ecac0..536214e4 100644 --- a/doc-site/docs/getting-started/overview.md +++ b/doc-site/docs/getting-started/overview.md @@ -11,7 +11,7 @@ You can find some package documentation below: | Package | Description | Version | | --- | --- | --- | | [@bnb-chain/greenfield-js-sdk](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/js-sdk/README.md) | A client library for Greenfield Chain | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-js-sdk?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-js-sdk) | -| [@bnb-chain/greenfiled-file-handle](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/file-handle/README.md) | WASM module that handle file, such as `checksums` | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfiled-file-handle?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfiled-file-handle) | +| [@bnb-chain/reed-solomon](./packages/reed-solomon/README.md) | calculate file's `checksums` | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Freed-solomon?color=blue)](https://www.npmjs.com/package/@bnb-chain/reed-solomon) | | [@bnb-chain/greenfield-zk-crypto](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/zk-crypto/README.md) | WASM module about sign crypto | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-zk-crypto?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-zk-crypto) | | [@bnb-chain/create-gnfd-app](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/create-gnfd-app/README.md) | Create Greenfield App Quickly | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fcreate-gnfd-app?color=blue)](https://www.npmjs.com/package/@bnb-chain/create-gnfd-app) | diff --git a/doc-site/docs/getting-started/quick-start.mdx b/doc-site/docs/getting-started/quick-start.mdx index 20d7a751..c98152dd 100644 --- a/doc-site/docs/getting-started/quick-start.mdx +++ b/doc-site/docs/getting-started/quick-start.mdx @@ -106,10 +106,18 @@ Creating a new Greenfield app in my-gnfd-app. -### 3. You can this page +### 3. wallet ### 4. Create a Bucket +Create Bucket Tx: + + +### 5. Create a Object + +Creat Object Tx / Upload File / Download File: + + diff --git a/doc-site/static/img/quick-start/create-object.png b/doc-site/static/img/quick-start/create-object.png new file mode 100644 index 0000000000000000000000000000000000000000..fdd790faaaf65bd3d090b61ffba603cdf0d466f0 GIT binary patch literal 28138 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%0DcmYSBG+*$@#M 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 literal 0 HcmV?d00001 diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index c3c78d5f..406ebbe7 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -13,7 +13,6 @@ "dependencies": { "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.25", "@bnb-chain/greenfield-js-sdk": "workspace:*", - "@bnb-chain/greenfiled-file-handle": "workspace:*", "@bnb-chain/reed-solomon": "workspace:*", "@cosmjs/encoding": "^0.32.0", "@cosmjs/proto-signing": "^0.32.0", diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index b1c5671a..cb9ef2a0 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -2,7 +2,6 @@ import { client } from '@/client'; import { getOffchainAuthKeys } from '@/utils/offchainAuth'; import { ChangeEvent, useState } from 'react'; import { useAccount } from 'wagmi'; -import { getCheckSumsWorker } from '@bnb-chain/greenfiled-file-handle'; import { ReedSolomon } from '@bnb-chain/reed-solomon'; export const CreateObject = () => { diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index ab1f69ff..12d53b85 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -6,7 +6,6 @@ "scripts": {}, "dependencies": { "@bnb-chain/greenfield-js-sdk": "workspace:*", - "@bnb-chain/greenfiled-file-handle": "workspace:*", "@bnb-chain/reed-solomon": "workspace:*", "dotenv": "^16.0.3", "mime-types": "^2.1.35" diff --git a/packages/file-handle/README.md b/packages/file-handle/README.md index b6c2fdc4..636f20b9 100644 --- a/packages/file-handle/README.md +++ b/packages/file-handle/README.md @@ -1,4 +1,6 @@ -# Greenfield Files JS SDK +# Greenfield Files JS SDK (Deprecated!) + +> Move to [reed-solomon](../reed-solomon/README.md) WASM module that handle file, such as `checksums` method. From e71ff2030525d919a5497eba2ffa408a201f28f3 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Wed, 20 Dec 2023 22:53:07 +0800 Subject: [PATCH 353/433] docs: Quick start (#439) --- pnpm-lock.yaml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9fe94fcd..262555d2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -147,9 +147,6 @@ importers: '@bnb-chain/greenfield-js-sdk': specifier: workspace:* version: link:../../packages/js-sdk - '@bnb-chain/greenfiled-file-handle': - specifier: workspace:* - version: link:../../packages/file-handle '@bnb-chain/reed-solomon': specifier: workspace:* version: link:../../packages/reed-solomon @@ -244,9 +241,6 @@ importers: '@bnb-chain/greenfield-js-sdk': specifier: workspace:* version: link:../../packages/js-sdk - '@bnb-chain/greenfiled-file-handle': - specifier: workspace:* - version: link:../../packages/file-handle '@bnb-chain/reed-solomon': specifier: workspace:* version: link:../../packages/reed-solomon From 9c97093c966705ec1b45f5e0c2f816a3353ae7fa Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Wed, 20 Dec 2023 23:41:25 +0800 Subject: [PATCH 354/433] fix: Broken url (#440) --- doc-site/docs/getting-started/overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc-site/docs/getting-started/overview.md b/doc-site/docs/getting-started/overview.md index 536214e4..3cbae073 100644 --- a/doc-site/docs/getting-started/overview.md +++ b/doc-site/docs/getting-started/overview.md @@ -11,7 +11,7 @@ You can find some package documentation below: | Package | Description | Version | | --- | --- | --- | | [@bnb-chain/greenfield-js-sdk](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/js-sdk/README.md) | A client library for Greenfield Chain | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-js-sdk?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-js-sdk) | -| [@bnb-chain/reed-solomon](./packages/reed-solomon/README.md) | calculate file's `checksums` | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Freed-solomon?color=blue)](https://www.npmjs.com/package/@bnb-chain/reed-solomon) | +| [@bnb-chain/reed-solomon](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/reed-solomon) | calculate file's `checksums` | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Freed-solomon?color=blue)](https://www.npmjs.com/package/@bnb-chain/reed-solomon) | | [@bnb-chain/greenfield-zk-crypto](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/zk-crypto/README.md) | WASM module about sign crypto | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-zk-crypto?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-zk-crypto) | | [@bnb-chain/create-gnfd-app](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/create-gnfd-app/README.md) | Create Greenfield App Quickly | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fcreate-gnfd-app?color=blue)](https://www.npmjs.com/package/@bnb-chain/create-gnfd-app) | From 7a652ffe0e984b8f3781d85b007900f88bde92e5 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Thu, 21 Dec 2023 17:50:42 +0800 Subject: [PATCH 355/433] chore: Update Rollup config (#441) --- .changeset/chilly-fireants-reflect.md | 5 ++ package.json | 3 +- packages/reed-solomon/examples/node-worker.js | 2 +- packages/reed-solomon/package.json | 3 + packages/reed-solomon/rollup.config.js | 5 ++ pnpm-lock.yaml | 56 ++++++++----------- 6 files changed, 38 insertions(+), 36 deletions(-) create mode 100644 .changeset/chilly-fireants-reflect.md diff --git a/.changeset/chilly-fireants-reflect.md b/.changeset/chilly-fireants-reflect.md new file mode 100644 index 00000000..7b442f1f --- /dev/null +++ b/.changeset/chilly-fireants-reflect.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/reed-solomon': patch +--- + +chore: Update Rollup Config - terser diff --git a/package.json b/package.json index 3f9b09d3..a0175a7d 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,6 @@ "rimraf": "^3.0.2", "rollup": "^2.79.1", "rollup-plugin-auto-external": "^2.0.0", - "rollup-plugin-polyfill-node": "^0.10.2", - "rollup-plugin-terser": "^7.0.2" + "rollup-plugin-polyfill-node": "^0.10.2" } } diff --git a/packages/reed-solomon/examples/node-worker.js b/packages/reed-solomon/examples/node-worker.js index 712a27d7..c46e3d41 100644 --- a/packages/reed-solomon/examples/node-worker.js +++ b/packages/reed-solomon/examples/node-worker.js @@ -9,7 +9,7 @@ const fileBuffer = fs.readFileSync('./README.md'); const rs = new NodeAdapterReedSolomon(); console.time('cost worker_threads'); - console.log('file size', sourceData.length / 1024 / 1024, 'm'); + console.log('file size', fileBuffer.length / 1024 / 1024, 'm'); const res = await rs.encodeInWorker(__filename, Uint8Array.from(fileBuffer)); console.log('res', res); console.timeEnd('cost worker_threads'); diff --git a/packages/reed-solomon/package.json b/packages/reed-solomon/package.json index bc091991..b9d283ce 100644 --- a/packages/reed-solomon/package.json +++ b/packages/reed-solomon/package.json @@ -74,5 +74,8 @@ "dependencies": { "@ethersproject/base64": "^5.7.0", "ethereum-cryptography": "^2.0.0" + }, + "devDependencies": { + "@rollup/plugin-terser": "^0.4.4" } } diff --git a/packages/reed-solomon/rollup.config.js b/packages/reed-solomon/rollup.config.js index d7f4349d..ba6956e3 100644 --- a/packages/reed-solomon/rollup.config.js +++ b/packages/reed-solomon/rollup.config.js @@ -1,5 +1,6 @@ import commonjs from '@rollup/plugin-commonjs'; import resolve from '@rollup/plugin-node-resolve'; +import terser from '@rollup/plugin-terser'; import pkg from './package.json'; // const pathResolve = (p) => path.resolve(__dirname, p); @@ -27,6 +28,7 @@ export default async () => { browser: true, preferBuiltins: false, }), + terser(), ], }, @@ -64,6 +66,7 @@ export default async () => { browser: true, preferBuiltins: false, }), + terser(), ], }, { @@ -80,6 +83,7 @@ export default async () => { browser: true, preferBuiltins: false, }), + terser(), ], }, { @@ -96,6 +100,7 @@ export default async () => { browser: true, preferBuiltins: false, }), + terser(), ], }, ]; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 262555d2..5f558304 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,9 +104,6 @@ importers: rollup-plugin-polyfill-node: specifier: ^0.10.2 version: 0.10.2(rollup@2.79.1) - rollup-plugin-terser: - specifier: ^7.0.2 - version: 7.0.2(rollup@2.79.1) doc-site: dependencies: @@ -454,6 +451,10 @@ importers: ethereum-cryptography: specifier: ^2.0.0 version: 2.0.0 + devDependencies: + '@rollup/plugin-terser': + specifier: ^0.4.4 + version: 0.4.4 packages/zk-crypto: devDependencies: @@ -6367,6 +6368,20 @@ packages: rollup: 2.79.1 dev: true + /@rollup/plugin-terser@0.4.4: + resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + serialize-javascript: 6.0.1 + smob: 1.4.1 + terser: 5.24.0 + dev: true + /@rollup/plugin-typescript@11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5): resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} engines: {node: '>=14.0.0'} @@ -7369,7 +7384,7 @@ packages: resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.37 + '@types/react': 18.2.41 /@types/react@18.2.12: resolution: {integrity: sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==} @@ -14199,15 +14214,6 @@ packages: string-length: 4.0.2 dev: true - /jest-worker@26.6.2: - resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 18.16.18 - merge-stream: 2.0.0 - supports-color: 7.2.0 - dev: true - /jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} @@ -17955,19 +17961,6 @@ packages: rollup: 2.79.1 dev: true - /rollup-plugin-terser@7.0.2(rollup@2.79.1): - resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser - peerDependencies: - rollup: ^2.0.0 - dependencies: - '@babel/code-frame': 7.22.13 - jest-worker: 26.6.2 - rollup: 2.79.1 - serialize-javascript: 4.0.0 - terser: 5.19.2 - dev: true - /rollup@2.79.1: resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} engines: {node: '>=10.0.0'} @@ -18182,12 +18175,6 @@ packages: - supports-color dev: false - /serialize-javascript@4.0.0: - resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} - dependencies: - randombytes: 2.1.0 - dev: true - /serialize-javascript@6.0.0: resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} dependencies: @@ -18457,6 +18444,10 @@ packages: yargs: 15.4.1 dev: true + /smob@1.4.1: + resolution: {integrity: sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==} + dev: true + /sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} dependencies: @@ -19081,7 +19072,6 @@ packages: acorn: 8.11.2 commander: 2.20.3 source-map-support: 0.5.21 - dev: false /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} From 7a2e9d263648c1032f3422235518eb748d99eeab Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Thu, 21 Dec 2023 18:17:26 +0800 Subject: [PATCH 356/433] fix: Tag compatibility (#443) --- .changeset/rare-steaks-happen.md | 5 ++ .../src/components/bucket/create/index.tsx | 14 ----- .../src/components/group/create/index.tsx | 47 +------------- .../src/components/group/update/index.tsx | 39 ------------ .../src/components/object/create/index.tsx | 24 -------- packages/js-sdk/package.json | 2 +- packages/js-sdk/src/api/bucket.ts | 10 +-- packages/js-sdk/src/api/group.ts | 6 +- packages/js-sdk/src/api/objects.ts | 11 +--- packages/js-sdk/src/api/storage.ts | 26 +------- packages/js-sdk/src/constants/typeUrl.ts | 1 - .../greenfield/storage/MsgCreateBucket.ts | 47 +------------- .../greenfield/storage/MsgCreateGroup.ts | 47 +------------- .../greenfield/storage/MsgCreateObject.ts | 47 +------------- .../messages/greenfield/storage/MsgSetTag.ts | 61 ------------------- .../js-sdk/src/types/sp/BucketApproval.ts | 3 - packages/js-sdk/src/types/sp/Common.ts | 7 --- .../js-sdk/src/types/sp/ObjectApproval.ts | 3 - pnpm-lock.yaml | 16 +++-- 19 files changed, 26 insertions(+), 390 deletions(-) create mode 100644 .changeset/rare-steaks-happen.md delete mode 100644 packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts diff --git a/.changeset/rare-steaks-happen.md b/.changeset/rare-steaks-happen.md new file mode 100644 index 00000000..78f79386 --- /dev/null +++ b/.changeset/rare-steaks-happen.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +fix: Tag Compatibility diff --git a/examples/nextjs/src/components/bucket/create/index.tsx b/examples/nextjs/src/components/bucket/create/index.tsx index 5209776a..62d31c84 100644 --- a/examples/nextjs/src/components/bucket/create/index.tsx +++ b/examples/nextjs/src/components/bucket/create/index.tsx @@ -47,20 +47,6 @@ export const CreateBucket = () => { primarySpAddress: spInfo.primarySpAddress, }, paymentAddress: address, - // empty tags - tags: { - tags: [], - }, - - // with tags: - // tags: { - // tags: [ - // { - // key: 'test', - // value: 'test', - // }, - // ], - // }, }, { // type: 'ECDSA', diff --git a/examples/nextjs/src/components/group/create/index.tsx b/examples/nextjs/src/components/group/create/index.tsx index 924ab087..b9f7855e 100644 --- a/examples/nextjs/src/components/group/create/index.tsx +++ b/examples/nextjs/src/components/group/create/index.tsx @@ -28,9 +28,6 @@ export const CreateGroup = () => { creator: address, groupName: createGroupInfo.groupName, extra: 'extra info', - tags: { - tags: [], - }, }); const simulateInfo = await createGroupTx.simulate({ @@ -61,49 +58,7 @@ export const CreateGroup = () => { console.log(res); }} > - create group with empty tags - - - ); diff --git a/examples/nextjs/src/components/group/update/index.tsx b/examples/nextjs/src/components/group/update/index.tsx index 202e8af5..bd797bdf 100644 --- a/examples/nextjs/src/components/group/update/index.tsx +++ b/examples/nextjs/src/components/group/update/index.tsx @@ -120,45 +120,6 @@ export const GroupUpdate = () => { > updateGroupExtra -
    - ); }; diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index cb9ef2a0..ee990a1c 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -79,18 +79,6 @@ export const CreateObject = () => { redundancyType: 'REDUNDANCY_EC_TYPE', contentLength: fileBytes.byteLength, expectCheckSums: expectCheckSums, - // empty tags - // tags: { - // tags: [], - // }, - tags: { - tags: [ - { - key: 'test', - value: 'test', - }, - ], - }, }, { type: 'EDDSA', @@ -180,18 +168,6 @@ export const CreateObject = () => { bucketName: createObjectInfo.bucketName, objectName: createObjectInfo.objectName + '/', creator: address, - // empty tags - // tags: { - // tags: [], - // }, - tags: { - tags: [ - { - key: 'test', - value: 'test', - }, - ], - }, }, { type: 'EDDSA', diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 2107c91c..7a0930d9 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -59,7 +59,7 @@ ] }, "dependencies": { - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.25", + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.23", "@bnb-chain/greenfield-zk-crypto": "workspace:*", "@cosmjs/proto-signing": "^0.32.0", "@cosmjs/stargate": "^0.32.0", diff --git a/packages/js-sdk/src/api/bucket.ts b/packages/js-sdk/src/api/bucket.ts index ec5b8ec8..1ddd2d44 100644 --- a/packages/js-sdk/src/api/bucket.ts +++ b/packages/js-sdk/src/api/bucket.ts @@ -23,7 +23,6 @@ import { MsgPutPolicy, MsgUpdateBucketInfo, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { ResourceTags } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/types'; import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { Headers } from 'cross-fetch'; import { bytesToUtf8, hexToBytes } from 'ethereum-cryptography/utils'; @@ -69,7 +68,7 @@ import { import { AuthType, SpClient } from '../clients/spclient/spClient'; import { TxClient } from '../clients/txClient'; import { METHOD_GET, NORMAL_ERROR_CODE } from '../constants/http'; -import { getMsgCreateBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateBucket'; +import { MsgCreateBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateBucket'; import { MsgDeleteBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgDeleteBucket'; import { MsgMigrateBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgMigrateBucket'; import { MsgUpdateBucketInfoSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateBucketInfo'; @@ -213,7 +212,6 @@ export class Bucket implements IBucket { spInfo, duration, paymentAddress, - tags, } = params; try { @@ -242,7 +240,6 @@ export class Bucket implements IBucket { }, charged_read_quota: chargedReadQuota, payment_address: paymentAddress, - tags: tags, }); const signHeaders = await this.spClient.signHeaders(reqMeta, authType); @@ -274,10 +271,6 @@ export class Bucket implements IBucket { } private async createBucketTx(msg: MsgCreateBucket, signedMsg: CreateBucketApprovalResponse) { - const isTagsEmpty = msg?.tags?.tags?.length === 0; - - const MsgCreateBucketSDKTypeEIP712 = getMsgCreateBucketSDKTypeEIP712(isTagsEmpty); - return await this.txClient.tx( MsgCreateBucketTypeUrl, msg.creator, @@ -314,7 +307,6 @@ export class Bucket implements IBucket { }, chargedReadQuota: Long.fromString(signedMsg.charged_read_quota), paymentAddress: signedMsg.payment_address, - tags: ResourceTags.fromJSON(signedMsg.tags), }; return await this.createBucketTx(msg, signedMsg); diff --git a/packages/js-sdk/src/api/group.ts b/packages/js-sdk/src/api/group.ts index 4404d0f7..a90c3d77 100644 --- a/packages/js-sdk/src/api/group.ts +++ b/packages/js-sdk/src/api/group.ts @@ -28,7 +28,7 @@ import { } from '..'; import { RpcQueryClient } from '../clients/queryclient'; import { TxClient } from '../clients/txClient'; -import { getMsgCreateGroupSDKTypeWithTagEIP712 } from '../messages/greenfield/storage/MsgCreateGroup'; +import { MsgCreateGroupSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateGroup'; import { MsgDeleteGroupSDKTypeEIP712 } from '../messages/greenfield/storage/MsgDeleteGroup'; import { MsgLeaveGroupSDKTypeEIP712 } from '../messages/greenfield/storage/MsgLeaveGroup'; import { MsgUpdateGroupExtraSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateGroupExtra'; @@ -111,10 +111,6 @@ export class Group implements IGroup { private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); public async createGroup(msg: MsgCreateGroup) { - const isTagsEmpty = msg?.tags?.tags?.length === 0; - - const MsgCreateGroupSDKTypeEIP712 = getMsgCreateGroupSDKTypeWithTagEIP712(isTagsEmpty); - return await this.txClient.tx( MsgCreateGroupTypeUrl, msg.creator, diff --git a/packages/js-sdk/src/api/objects.ts b/packages/js-sdk/src/api/objects.ts index 1d1969b5..53641df1 100644 --- a/packages/js-sdk/src/api/objects.ts +++ b/packages/js-sdk/src/api/objects.ts @@ -19,7 +19,7 @@ import { getPutObjectMetaInfo } from '../clients/spclient/spApis/putObject'; import { TxClient } from '../clients/txClient'; import { METHOD_GET, NORMAL_ERROR_CODE } from '../constants/http'; import { MsgCancelCreateObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCancelCreateObject'; -import { getMsgCreateObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateObject'; +import { MsgCreateObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateObject'; import { MsgDeleteObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgDeleteObject'; import { MsgUpdateObjectInfoSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateObjectInfo'; import { signSignatureByEddsa } from '../offchainauth'; @@ -88,7 +88,6 @@ import { } from '../utils/s3'; import { Sp } from './sp'; import { Storage } from './storage'; -import { ResourceTags } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/types'; export interface IObject { getCreateObjectApproval( @@ -198,7 +197,6 @@ export class Objects implements IObject { redundancyType = 'REDUNDANCY_EC_TYPE', contentLength, expectCheckSums, - tags, } = params; try { @@ -231,7 +229,6 @@ export class Objects implements IObject { }, redundancy_type: redundancyType, visibility, - tags, }); const signHeaders = await this.spClient.signHeaders(reqMeta, authType); @@ -271,10 +268,6 @@ export class Objects implements IObject { } private async createObjectTx(msg: MsgCreateObject, signedMsg: CreateObjectApprovalResponse) { - const isTagsEmpty = msg?.tags?.tags?.length === 0; - - const MsgCreateObjectSDKTypeEIP712 = getMsgCreateObjectSDKTypeEIP712(isTagsEmpty); - return await this.txClient.tx( MsgCreateObjectTypeUrl, msg.creator, @@ -313,7 +306,6 @@ export class Objects implements IObject { sig: bytesFromBase64(signedMsg.primary_sp_approval.sig || ''), globalVirtualGroupFamilyId: signedMsg.primary_sp_approval.global_virtual_group_family_id, }, - tags: ResourceTags.fromJSON(signedMsg.tags), }; return await this.createObjectTx(msg, signedMsg); @@ -629,7 +621,6 @@ export class Objects implements IObject { '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', ], creator: getApprovalParams.creator, - tags: getApprovalParams.tags, }; return this.createObject(params, authType); diff --git a/packages/js-sdk/src/api/storage.ts b/packages/js-sdk/src/api/storage.ts index 97c849b9..8dbc518c 100644 --- a/packages/js-sdk/src/api/storage.ts +++ b/packages/js-sdk/src/api/storage.ts @@ -20,18 +20,10 @@ import { import { MsgDeletePolicy, MsgPutPolicy, - MsgSetTag, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import { container, delay, inject, injectable } from 'tsyringe'; -import { - fromTimestamp, - MsgDeletePolicyTypeUrl, - MsgPutPolicyTypeUrl, - MsgSetTagTypeUrl, - TxResponse, -} from '..'; +import { fromTimestamp, MsgDeletePolicyTypeUrl, MsgPutPolicyTypeUrl, TxResponse } from '..'; import { RpcQueryClient } from '../clients/queryclient'; -import { getMsgSetTagSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgSetTag'; export interface IStorage { params(): Promise; @@ -40,8 +32,6 @@ export interface IStorage { deletePolicy(msg: MsgDeletePolicy): Promise; - setTag(msg: MsgSetTag): Promise; - getPolicyForGroup(request: QueryPolicyForGroupRequest): Promise; getQueryPolicyForAccount( @@ -107,20 +97,6 @@ export class Storage implements IStorage { ); } - public async setTag(msg: MsgSetTag) { - const isTagsEmpty = msg?.tags?.tags?.length === 0; - - const MsgSetTagSDKTypeEIP712 = getMsgSetTagSDKTypeEIP712(isTagsEmpty); - - return await this.txClient.tx( - MsgSetTagTypeUrl, - msg.operator, - MsgSetTagSDKTypeEIP712, - MsgSetTag.toSDK(msg), - MsgSetTag.encode(msg).finish(), - ); - } - public async getPolicyForGroup(request: QueryPolicyForGroupRequest) { const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.QueryPolicyForGroup(request); diff --git a/packages/js-sdk/src/constants/typeUrl.ts b/packages/js-sdk/src/constants/typeUrl.ts index e76e990b..690027a3 100644 --- a/packages/js-sdk/src/constants/typeUrl.ts +++ b/packages/js-sdk/src/constants/typeUrl.ts @@ -19,7 +19,6 @@ export const MsgDeleteBucketTypeUrl = '/greenfield.storage.MsgDeleteBucket'; export const MsgDeleteGroupTypeUrl = '/greenfield.storage.MsgDeleteGroup'; export const MsgDeleteObjectTypeUrl = '/greenfield.storage.MsgDeleteObject'; export const MsgDeletePolicyTypeUrl = '/greenfield.storage.MsgDeletePolicy'; -export const MsgSetTagTypeUrl = '/greenfield.storage.MsgSetTag'; export const MsgLeaveGroupTypeUrl = '/greenfield.storage.MsgLeaveGroup'; export const MsgMirrorBucketTypeUrl = '/greenfield.storage.MsgMirrorBucket'; export const MsgMirrorGroupTypeUrl = '/greenfield.storage.MsgMirrorGroup'; diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts index c669f51b..c56a2136 100644 --- a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts @@ -1,49 +1,4 @@ -import type { EIP712Msg } from '@/messages/utils'; -import cloneDeep from 'lodash.clonedeep'; - -export const getMsgCreateBucketSDKTypeEIP712 = (isTagsEmpty: boolean) => { - const res: EIP712Msg = cloneDeep(MsgCreateBucketSDKTypeEIP712); - - if (!isTagsEmpty) { - res.Msg1.push({ - name: 'tags', - type: 'TypeMsg1Tags', - }); - - res.TypeMsg1Tags = [ - { - name: 'tags', - type: 'TypeMsg1TagsTags[]', - }, - ]; - res.TypeMsg1TagsTags = [ - { - name: 'key', - type: 'string', - }, - { - name: 'value', - type: 'string', - }, - ]; - } else { - res.Msg1.push({ - name: 'tags', - type: 'TypeMsg1Tags', - }); - - res.TypeMsg1Tags = [ - { - name: 'tags', - type: 'string[]', - }, - ]; - } - - return res; -}; - -const MsgCreateBucketSDKTypeEIP712 = { +export const MsgCreateBucketSDKTypeEIP712 = { Msg1: [ { name: 'bucket_name', diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts index 212bf1d7..6badab86 100644 --- a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts @@ -1,7 +1,4 @@ -import type { EIP712Msg } from '@/messages/utils'; -import cloneDeep from 'lodash.clonedeep'; - -const MsgCreateGroupSDKTypeEIP712 = { +export const MsgCreateGroupSDKTypeEIP712 = { Msg1: [ { name: 'creator', @@ -21,45 +18,3 @@ const MsgCreateGroupSDKTypeEIP712 = { }, ], }; - -export const getMsgCreateGroupSDKTypeWithTagEIP712 = (isTagsEmpty: boolean) => { - const res: EIP712Msg = cloneDeep(MsgCreateGroupSDKTypeEIP712); - - if (!isTagsEmpty) { - res.Msg1.push({ - name: 'tags', - type: 'TypeMsg1Tags', - }); - - res.TypeMsg1Tags = [ - { - name: 'tags', - type: 'TypeMsg1TagsTags[]', - }, - ]; - res.TypeMsg1TagsTags = [ - { - name: 'key', - type: 'string', - }, - { - name: 'value', - type: 'string', - }, - ]; - } else { - res.Msg1.push({ - name: 'tags', - type: 'TypeMsg1Tags', - }); - - res.TypeMsg1Tags = [ - { - name: 'tags', - type: 'string[]', - }, - ]; - } - - return res; -}; diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts index 489ec21a..b1b92a4e 100644 --- a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts @@ -1,49 +1,4 @@ -import type { EIP712Msg } from '@/messages/utils'; -import cloneDeep from 'lodash.clonedeep'; - -export const getMsgCreateObjectSDKTypeEIP712 = (isTagsEmpty: boolean) => { - const res: EIP712Msg = cloneDeep(MsgCreateObjectSDKTypeEIP712); - - if (!isTagsEmpty) { - res.Msg1.push({ - name: 'tags', - type: 'TypeMsg1Tags', - }); - - res.TypeMsg1Tags = [ - { - name: 'tags', - type: 'TypeMsg1TagsTags[]', - }, - ]; - res.TypeMsg1TagsTags = [ - { - name: 'key', - type: 'string', - }, - { - name: 'value', - type: 'string', - }, - ]; - } else { - res.Msg1.push({ - name: 'tags', - type: 'TypeMsg1Tags', - }); - - res.TypeMsg1Tags = [ - { - name: 'tags', - type: 'string[]', - }, - ]; - } - - return res; -}; - -const MsgCreateObjectSDKTypeEIP712 = { +export const MsgCreateObjectSDKTypeEIP712 = { Msg1: [ { name: 'bucket_name', diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts deleted file mode 100644 index c29b64ff..00000000 --- a/packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts +++ /dev/null @@ -1,61 +0,0 @@ -import type { EIP712Msg } from '@/messages/utils'; -import cloneDeep from 'lodash.clonedeep'; - -export const getMsgSetTagSDKTypeEIP712 = (isTagsEmpty: boolean) => { - const res: EIP712Msg = cloneDeep(MsgSetTagSDKTypeEIP712); - - if (!isTagsEmpty) { - res.Msg1.push({ - name: 'tags', - type: 'TypeMsg1Tags', - }); - - res.TypeMsg1Tags = [ - { - name: 'tags', - type: 'TypeMsg1TagsTags[]', - }, - ]; - res.TypeMsg1TagsTags = [ - { - name: 'key', - type: 'string', - }, - { - name: 'value', - type: 'string', - }, - ]; - } else { - res.Msg1.push({ - name: 'tags', - type: 'TypeMsg1Tags', - }); - - res.TypeMsg1Tags = [ - { - name: 'tags', - type: 'string[]', - }, - ]; - } - - return res; -}; - -const MsgSetTagSDKTypeEIP712 = { - Msg1: [ - { - name: 'operator', - type: 'string', - }, - { - name: 'resource', - type: 'string', - }, - { - name: 'type', - type: 'string', - }, - ], -}; diff --git a/packages/js-sdk/src/types/sp/BucketApproval.ts b/packages/js-sdk/src/types/sp/BucketApproval.ts index eb8304c0..1ca043ba 100644 --- a/packages/js-sdk/src/types/sp/BucketApproval.ts +++ b/packages/js-sdk/src/types/sp/BucketApproval.ts @@ -1,5 +1,4 @@ import { VisibilityType } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; -import { TagsInCreateTxApproval } from './Common'; export type CreateBucketApprovalRequest = { bucketName: string; @@ -11,7 +10,6 @@ export type CreateBucketApprovalRequest = { }; duration?: number; paymentAddress: string; - tags: TagsInCreateTxApproval; }; export interface CreateBucketApprovalResponse { @@ -26,5 +24,4 @@ export interface CreateBucketApprovalResponse { global_virtual_group_family_id: number; }; charged_read_quota: string; - tags: TagsInCreateTxApproval; } diff --git a/packages/js-sdk/src/types/sp/Common.ts b/packages/js-sdk/src/types/sp/Common.ts index d669aaf6..a8d083c3 100644 --- a/packages/js-sdk/src/types/sp/Common.ts +++ b/packages/js-sdk/src/types/sp/Common.ts @@ -222,10 +222,3 @@ export interface PolicyMeta { */ ExpirationTime: number; } - -/** - * create bucket / object approval's tags - */ -export type TagsInCreateTxApproval = { - tags: string[] | { key: string; value: string }[]; -}; diff --git a/packages/js-sdk/src/types/sp/ObjectApproval.ts b/packages/js-sdk/src/types/sp/ObjectApproval.ts index f3c2ba91..da504c2c 100644 --- a/packages/js-sdk/src/types/sp/ObjectApproval.ts +++ b/packages/js-sdk/src/types/sp/ObjectApproval.ts @@ -2,7 +2,6 @@ import { RedundancyType, VisibilityType, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; -import { TagsInCreateTxApproval } from './Common'; export type CreateObjectApprovalRequest = { bucketName: string; @@ -14,7 +13,6 @@ export type CreateObjectApprovalRequest = { duration?: number; contentLength: number; expectCheckSums: string[]; - tags: TagsInCreateTxApproval; endpoint?: string; }; @@ -34,5 +32,4 @@ export type CreateObjectApprovalResponse = { // expect_secondary_sp_addresses: string[]; redundancy_type: keyof typeof RedundancyType; // charged_read_quota: string; - tags: TagsInCreateTxApproval; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5f558304..bf6b7381 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -322,8 +322,8 @@ importers: packages/js-sdk: dependencies: '@bnb-chain/greenfield-cosmos-types': - specifier: 0.4.0-alpha.25 - version: 0.4.0-alpha.25 + specifier: 0.4.0-alpha.23 + version: 0.4.0-alpha.23 '@bnb-chain/greenfield-zk-crypto': specifier: workspace:* version: link:../zk-crypto @@ -454,7 +454,7 @@ importers: devDependencies: '@rollup/plugin-terser': specifier: ^0.4.4 - version: 0.4.4 + version: 0.4.4(rollup@2.79.1) packages/zk-crypto: devDependencies: @@ -3388,6 +3388,13 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true + /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.23: + resolution: {integrity: sha512-VAuk5CxTSbiOa8HvlEY/uf8zoTvgyRvQMwQs0S/7wjoloE0I7hSZXWPUEeFmypB1xZuggDtyCfizS2faL/NKeg==} + dependencies: + long: 4.0.0 + protobufjs: 6.11.4 + dev: false + /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.25: resolution: {integrity: sha512-A/v0X/rhwmWN8cNmkFCRIzT0sHQn2sb/mPrdwdIgUbjEV49s9KncSAKxRMIz3+ph0KeROmxjUWaDsJ9/KGU2tQ==} dependencies: @@ -6368,7 +6375,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-terser@0.4.4: + /@rollup/plugin-terser@0.4.4(rollup@2.79.1): resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6377,6 +6384,7 @@ packages: rollup: optional: true dependencies: + rollup: 2.79.1 serialize-javascript: 6.0.1 smob: 1.4.1 terser: 5.24.0 From 5e277f6f975c5f7cbd2d6debbe7962b14185f063 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 18:19:43 +0800 Subject: [PATCH 357/433] chore: [ci] release (#442) Co-authored-by: github-actions[bot] --- .changeset/chilly-fireants-reflect.md | 5 ----- .changeset/rare-steaks-happen.md | 5 ----- examples/nextjs/CHANGELOG.md | 10 ++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 10 ++++++++++ examples/nodejs/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 8 ++++++++ packages/js-sdk/package.json | 2 +- packages/reed-solomon/CHANGELOG.md | 8 ++++++++ packages/reed-solomon/package.json | 2 +- 10 files changed, 40 insertions(+), 14 deletions(-) delete mode 100644 .changeset/chilly-fireants-reflect.md delete mode 100644 .changeset/rare-steaks-happen.md diff --git a/.changeset/chilly-fireants-reflect.md b/.changeset/chilly-fireants-reflect.md deleted file mode 100644 index 7b442f1f..00000000 --- a/.changeset/chilly-fireants-reflect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/reed-solomon': patch ---- - -chore: Update Rollup Config - terser diff --git a/.changeset/rare-steaks-happen.md b/.changeset/rare-steaks-happen.md deleted file mode 100644 index 78f79386..00000000 --- a/.changeset/rare-steaks-happen.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: Tag Compatibility diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index ffa79b67..91a3642d 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,15 @@ # @demo/wallet +## 0.0.19 + +### Patch Changes + +- Updated dependencies + [[`7a652ff`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7a652ffe0e984b8f3781d85b007900f88bde92e5), + [`7a2e9d2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7a2e9d263648c1032f3422235518eb748d99eeab)]: + - @bnb-chain/reed-solomon@1.0.3 + - @bnb-chain/greenfield-js-sdk@1.1.1 + ## 0.0.18 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 406ebbe7..5f6c5534 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.18", + "version": "0.0.19", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index baa033d1..186fef68 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,15 @@ # @demo/nodejs +## 0.0.22 + +### Patch Changes + +- Updated dependencies + [[`7a652ff`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7a652ffe0e984b8f3781d85b007900f88bde92e5), + [`7a2e9d2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7a2e9d263648c1032f3422235518eb748d99eeab)]: + - @bnb-chain/reed-solomon@1.0.3 + - @bnb-chain/greenfield-js-sdk@1.1.1 + ## 0.0.21 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 12d53b85..0ee8e3e2 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.21", + "version": "0.0.22", "type": "commonjs", "private": true, "scripts": {}, diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index 5540cf3c..85302cf3 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 1.1.1 + +### Patch Changes + +- [#443](https://github.com/bnb-chain/greenfield-js-sdk/pull/443) + [`7a2e9d2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7a2e9d263648c1032f3422235518eb748d99eeab) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Tag Compatibility + ## 1.1.0 ### Minor Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 7a0930d9..6228c70c 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.1.0", + "version": "1.1.1", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", diff --git a/packages/reed-solomon/CHANGELOG.md b/packages/reed-solomon/CHANGELOG.md index efc12dfc..a82370a4 100644 --- a/packages/reed-solomon/CHANGELOG.md +++ b/packages/reed-solomon/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/reed-solomon +## 1.0.3 + +### Patch Changes + +- [#441](https://github.com/bnb-chain/greenfield-js-sdk/pull/441) + [`7a652ff`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7a652ffe0e984b8f3781d85b007900f88bde92e5) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update Rollup Config - terser + ## 1.0.2 ### Patch Changes diff --git a/packages/reed-solomon/package.json b/packages/reed-solomon/package.json index b9d283ce..f5ae55d1 100644 --- a/packages/reed-solomon/package.json +++ b/packages/reed-solomon/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/reed-solomon", - "version": "1.0.2", + "version": "1.0.3", "description": "lighting implement for reed solomon", "module": "./dist/index.esm.js", "main": "./dist/index.js", From eb75e4d2716d97249bc9f57f20861368ca73204c Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Thu, 21 Dec 2023 18:35:57 +0800 Subject: [PATCH 358/433] Fix/sp tag type (#444) * fix: Sp types * fix: Sp types --- .changeset/four-meals-try.md | 5 +++ packages/js-sdk/src/types/sp/Common.ts | 42 -------------------------- 2 files changed, 5 insertions(+), 42 deletions(-) create mode 100644 .changeset/four-meals-try.md diff --git a/.changeset/four-meals-try.md b/.changeset/four-meals-try.md new file mode 100644 index 00000000..d3b27110 --- /dev/null +++ b/.changeset/four-meals-try.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +fix: Sp tag types diff --git a/packages/js-sdk/src/types/sp/Common.ts b/packages/js-sdk/src/types/sp/Common.ts index a8d083c3..644b81a3 100644 --- a/packages/js-sdk/src/types/sp/Common.ts +++ b/packages/js-sdk/src/types/sp/Common.ts @@ -42,12 +42,6 @@ export interface BucketInfo { PaymentAddress: string; SourceType: number; Visibility: number; - Tags: { - Tags: { - Key: string; - Value: string; - }[]; - }; } export interface StreamRecord { @@ -91,20 +85,9 @@ export interface ObjectInfo { RedundancyType: number; SourceType: number; Visibility: number; - Tags: { - Tags: { - Key: string; - Value: string; - }[]; - }; } export function formatBucketInfo(o: BucketInfo): BucketInfo { - let tags = o.Tags.Tags || []; - if (!Array.isArray(tags)) { - tags = [tags]; - } - return { ...o, // PrimarySpId: Number(item.BucketInfo.PrimarySpId), @@ -114,18 +97,10 @@ export function formatBucketInfo(o: BucketInfo): BucketInfo { GlobalVirtualGroupFamilyId: Number(o.GlobalVirtualGroupFamilyId), SourceType: Number(o.SourceType), Visibility: Number(o.Visibility), - Tags: { - Tags: tags, - }, }; } export function formatObjectInfo(o: ObjectInfo): ObjectInfo { - let tags = o.Tags.Tags || []; - if (!Array.isArray(tags)) { - tags = [tags]; - } - return { ...o, CreateAt: Number(o.CreateAt), @@ -136,9 +111,6 @@ export function formatObjectInfo(o: ObjectInfo): ObjectInfo { RedundancyType: Number(o.RedundancyType), SourceType: Number(o.SourceType), Visibility: Number(o.Visibility), - Tags: { - Tags: tags, - }, }; } @@ -168,27 +140,13 @@ export interface GroupInfo { SourceType: number; Id: number; Extra: string; - Tags: { - Tags: { - Key: string; - Value: string; - }[]; - }; } export function formatGroupInfo(o: GroupInfo): GroupInfo { - let tags = o.Tags.Tags || []; - if (!Array.isArray(tags)) { - tags = [tags]; - } - return { ...o, SourceType: Number(o.SourceType), Id: Number(o.Id), - Tags: { - Tags: tags, - }, }; } From 3d19853f1ada04ed8802c0479c307ce00dbb3a75 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 18:40:58 +0800 Subject: [PATCH 359/433] chore: [ci] release (#445) Co-authored-by: github-actions[bot] --- .changeset/four-meals-try.md | 5 ----- examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 8 ++++++++ packages/js-sdk/package.json | 2 +- 7 files changed, 27 insertions(+), 8 deletions(-) delete mode 100644 .changeset/four-meals-try.md diff --git a/.changeset/four-meals-try.md b/.changeset/four-meals-try.md deleted file mode 100644 index d3b27110..00000000 --- a/.changeset/four-meals-try.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: Sp tag types diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 91a3642d..85eafb4e 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.20 + +### Patch Changes + +- Updated dependencies + [[`eb75e4d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/eb75e4d2716d97249bc9f57f20861368ca73204c)]: + - @bnb-chain/greenfield-js-sdk@1.1.2 + ## 0.0.19 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 5f6c5534..5e5c1def 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.19", + "version": "0.0.20", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 186fef68..72e338c7 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.23 + +### Patch Changes + +- Updated dependencies + [[`eb75e4d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/eb75e4d2716d97249bc9f57f20861368ca73204c)]: + - @bnb-chain/greenfield-js-sdk@1.1.2 + ## 0.0.22 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 0ee8e3e2..1d3daa94 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.22", + "version": "0.0.23", "type": "commonjs", "private": true, "scripts": {}, diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index 85302cf3..e40e6a35 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 1.1.2 + +### Patch Changes + +- [#444](https://github.com/bnb-chain/greenfield-js-sdk/pull/444) + [`eb75e4d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/eb75e4d2716d97249bc9f57f20861368ca73204c) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Sp tag types + ## 1.1.1 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 6228c70c..fda37822 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.1.1", + "version": "1.1.2", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 65333cdcae483eace027459b803a17f0f93a3be5 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Thu, 21 Dec 2023 23:46:34 +0800 Subject: [PATCH 360/433] Feat/reed solomon (#446) * chore: Update docs * docs: Update * docs: Update * feat: Set Webworker * feat: Clean InjectWorker * feat: Clean InjectWorker --- .changeset/mighty-laws-suffer.md | 5 ++ .changeset/tidy-boats-laugh.md | 5 ++ packages/reed-solomon/README.md | 40 ++++------ packages/reed-solomon/examples/node.js | 4 +- .../reed-solomon/examples/web-worker.html | 29 +++---- packages/reed-solomon/src/index.js | 49 +++++++++--- packages/reed-solomon/src/node.adapter.js | 54 ++----------- packages/reed-solomon/src/web.adapter.js | 79 +++++++++---------- packages/reed-solomon/types/index.d.ts | 10 +++ packages/reed-solomon/types/web.adapter.d.ts | 4 +- 10 files changed, 138 insertions(+), 141 deletions(-) create mode 100644 .changeset/mighty-laws-suffer.md create mode 100644 .changeset/tidy-boats-laugh.md diff --git a/.changeset/mighty-laws-suffer.md b/.changeset/mighty-laws-suffer.md new file mode 100644 index 00000000..58d65e3b --- /dev/null +++ b/.changeset/mighty-laws-suffer.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/reed-solomon': minor +--- + +feat: Clean InjectWorker diff --git a/.changeset/tidy-boats-laugh.md b/.changeset/tidy-boats-laugh.md new file mode 100644 index 00000000..2a5e6476 --- /dev/null +++ b/.changeset/tidy-boats-laugh.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/reed-solomon': minor +--- + +feat: Support setting worker counts diff --git a/packages/reed-solomon/README.md b/packages/reed-solomon/README.md index c62133d1..ef9ca2be 100644 --- a/packages/reed-solomon/README.md +++ b/packages/reed-solomon/README.md @@ -33,7 +33,6 @@ Use directly in the browser via script tag: get reed solomon - @@ -128,6 +122,6 @@ const res = await rs.encodeInWorker(__filename, Uint8Array.from(fileBuffer)) [Code](./examples/node-worker.js) -## Benchark +## Benchmark [benchmark](./benchmark.md) diff --git a/packages/reed-solomon/examples/node.js b/packages/reed-solomon/examples/node.js index 372739bb..156e70f1 100644 --- a/packages/reed-solomon/examples/node.js +++ b/packages/reed-solomon/examples/node.js @@ -3,13 +3,13 @@ const fs = require('node:fs'); const path = require('node:path'); const { ReedSolomon } = require('../dist/index'); -const fileBuffer = fs.readFileSync('./README.md'); +const sourceData = fs.readFileSync('./README.md'); (async () => { const rs = new ReedSolomon(); console.log('file size', sourceData.length / 1024 / 1024, 'm'); console.time('cost'); - const res = await rs.encode(Uint8Array.from(fileBuffer)); + const res = await rs.encode(Uint8Array.from(sourceData)); console.log('res', res); console.timeEnd('cost'); })(); diff --git a/packages/reed-solomon/examples/web-worker.html b/packages/reed-solomon/examples/web-worker.html index eadede31..71989c9c 100644 --- a/packages/reed-solomon/examples/web-worker.html +++ b/packages/reed-solomon/examples/web-worker.html @@ -17,6 +17,12 @@ + +``` + +
    + + +Nodejs can also be used in two ways, directly with core library, or with [worker_threads](https://nodejs.org/api/worker_threads.html) (when calculating large files). + +```js title="core lib" +const { ReedSolomon } = require('@bnb-chain/reed-solomon') + +const rs = new ReedSolomon(); +const res = await rs.encode(Uint8Array.from(fileBuffer)); +``` + +```js title="worker_threads" +const { NodeAdapterReedSolomon } = require('@bnb-chain/reed-solomon/node.adapter'); + +const fileBuffer = fs.readFileSync('./output_file'); + +const rs = new NodeAdapterReedSolomon(); +const res = await rs.encodeInWorker(__filename, Uint8Array.from(fileBuffer)) +``` + + +
    + diff --git a/doc-site/docs/constants/_category_.json b/doc-site/docs/constants/_category_.json new file mode 100644 index 00000000..b2b8a52b --- /dev/null +++ b/doc-site/docs/constants/_category_.json @@ -0,0 +1,14 @@ +{ + "position": 4, + "label": "constants", + "collapsible": true, + "collapsed": false, + "className": "red", + "link": { + "type": "generated-index", + "title": "Constants" + }, + "customProps": { + "description": "" + } +} diff --git a/doc-site/docusaurus.config.js b/doc-site/docusaurus.config.js index b6f78775..cd265e5a 100644 --- a/doc-site/docusaurus.config.js +++ b/doc-site/docusaurus.config.js @@ -76,12 +76,6 @@ const config = { src: 'img/logo.svg', }, items: [ - // { - // type: 'docSidebar', - // sidebarId: 'GettingStartSidebar', - // position: 'left', - // label: 'Getting Started', - // }, { href: 'https://github.com/bnb-chain/greenfield-js-sdk', label: 'GitHub', diff --git a/packages/reed-solomon/src/galois.js b/packages/reed-solomon/src/galois.js index bb53e394..e4c1625a 100644 --- a/packages/reed-solomon/src/galois.js +++ b/packages/reed-solomon/src/galois.js @@ -7,7 +7,7 @@ const galExp = function (a, n) { } const logA = logTable[a]; - const logResult = Math.floor(logA * n); + let logResult = Math.floor(logA * n); while (logResult >= 255) { logResult -= 255; } diff --git a/packages/reed-solomon/src/matrix.js b/packages/reed-solomon/src/matrix.js index b80cbc2d..d4fde507 100644 --- a/packages/reed-solomon/src/matrix.js +++ b/packages/reed-solomon/src/matrix.js @@ -139,7 +139,7 @@ function gaussianElimination(m) { // } // Scale to 1. if (m[r][r] !== 1) { - let scale = galDivide(1, m[r][r]); + const scale = galDivide(1, m[r][r]); for (let c = 0; c < columns; c++) { m[r][c] = galMultiply(m[r][c], scale); } @@ -149,7 +149,7 @@ function gaussianElimination(m) { // both exclusive or in the Galois field.) for (let rowBelow = r + 1; rowBelow < rows; rowBelow++) { if (m[rowBelow][r] !== 0) { - let scale = m[rowBelow][r]; + const scale = m[rowBelow][r]; for (let c = 0; c < columns; c++) { m[rowBelow][c] ^= galMultiply(scale, m[r][c]); } @@ -161,7 +161,7 @@ function gaussianElimination(m) { for (let d = 0; d < rows; d++) { for (let rowAbove = 0; rowAbove < d; rowAbove++) { if (m[rowAbove][d] !== 0) { - let scale = m[rowAbove][d]; + const scale = m[rowAbove][d]; for (let c = 0; c < columns; c++) { m[rowAbove][c] ^= galMultiply(scale, m[d][c]); } diff --git a/packages/reed-solomon/src/node.adapter.js b/packages/reed-solomon/src/node.adapter.js index 15349715..5595b9ad 100644 --- a/packages/reed-solomon/src/node.adapter.js +++ b/packages/reed-solomon/src/node.adapter.js @@ -7,7 +7,7 @@ export class NodeAdapterReedSolomon extends ReedSolomon { return new Promise((resolve, reject) => { if (isMainThread) { // RES is `encodeShards` Array - let RES = []; + const RES = []; const chunkList = splitPrice(sourceData, this.segmentSize); const threads = new Set(); @@ -21,7 +21,7 @@ export class NodeAdapterReedSolomon extends ReedSolomon { threads.add(worker); } - for (let w of threads) { + for (const w of threads) { w.on('error', (err) => { throw err; }); From 4b37de8e58de2c7a08a42183fa77b5743605371b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 23 Dec 2023 16:16:47 +0800 Subject: [PATCH 368/433] chore: [ci] release (#455) Co-authored-by: github-actions[bot] --- .changeset/rich-cycles-repair.md | 5 ----- examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- packages/reed-solomon/CHANGELOG.md | 8 ++++++++ packages/reed-solomon/package.json | 2 +- 5 files changed, 18 insertions(+), 7 deletions(-) delete mode 100644 .changeset/rich-cycles-repair.md diff --git a/.changeset/rich-cycles-repair.md b/.changeset/rich-cycles-repair.md deleted file mode 100644 index 14467622..00000000 --- a/.changeset/rich-cycles-repair.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/reed-solomon': patch ---- - -feat: Lint Matrix method diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 497d76d4..1777c0ea 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.23 + +### Patch Changes + +- Updated dependencies + [[`a95f377`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a95f3770ab1b1a8197271300587b3a5be1a42e92)]: + - @bnb-chain/reed-solomon@1.1.2 + ## 0.0.22 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 7a7cbc53..dda90da6 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.22", + "version": "0.0.23", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/packages/reed-solomon/CHANGELOG.md b/packages/reed-solomon/CHANGELOG.md index c06753c9..f989cd52 100644 --- a/packages/reed-solomon/CHANGELOG.md +++ b/packages/reed-solomon/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/reed-solomon +## 1.1.2 + +### Patch Changes + +- [#454](https://github.com/bnb-chain/greenfield-js-sdk/pull/454) + [`a95f377`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a95f3770ab1b1a8197271300587b3a5be1a42e92) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Lint Matrix method + ## 1.1.1 ### Patch Changes diff --git a/packages/reed-solomon/package.json b/packages/reed-solomon/package.json index 55544bff..af41177e 100644 --- a/packages/reed-solomon/package.json +++ b/packages/reed-solomon/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/reed-solomon", - "version": "1.1.1", + "version": "1.1.2", "description": "lighting implement for reed solomon", "module": "./dist/index.esm.js", "main": "./dist/index.js", From 322060fe0c5c5a6033746cf96c07c4cb83b31c12 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Sat, 23 Dec 2023 16:21:23 +0800 Subject: [PATCH 369/433] docs: Broken url (#456) --- doc-site/docs/FAQs/caclute-checksum-is-slow.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx b/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx index 1ec98ebb..9ea5da86 100644 --- a/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx +++ b/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx @@ -25,7 +25,7 @@ When calculating small files, using core is faster than using worker. ## Usage -You can use core lib directly in the browser and Nodejs, or you can use us to run on the worker(browser use [webworker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers), Nodejs use [worker_threads]((https://nodejs.org/api/worker_threads.html))). +You can use core lib directly in the browser and Nodejs, or you can use us to run on the worker(browser use [webworker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers), Nodejs use [worker_threads](https://nodejs.org/api/worker_threads.html)). From 329faaa8b2216c0f70330e940f928958a8182758 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Sat, 23 Dec 2023 16:30:43 +0800 Subject: [PATCH 370/433] docs: Update rs umd way (#457) --- .../docs/FAQs/caclute-checksum-is-slow.mdx | 107 ++++++++++++------ examples/nodejs/cases/storage.js | 6 - 2 files changed, 74 insertions(+), 39 deletions(-) diff --git a/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx b/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx index 9ea5da86..050f720a 100644 --- a/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx +++ b/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx @@ -33,7 +33,7 @@ You can use core lib directly in the browser and Nodejs, or you can use us to ru When you are developing Greenfield and need to create objects, if you are sure that the files are small (maybe less than 5m or 10m), you can directly use the ESM solution: -```javascript title="core lib" +```javascript title="core lib (ESM)" import {ReedSolomon} from '@bnb-chain/reed-solomon' const rs = new RS.ReedSolomon(); @@ -42,42 +42,83 @@ const res = rs.encode(new Uint8Array(fileBuffer)) If the file is larger, this method may cause the page to freeze when calculating. In this case, we recommend using the worker mode: -```html title="web worker" +```html title="core lib (UMD)" + + + + + + + + + +``` + +```html title="web worker (only support UMD)" - + + + + + + + + ```
    diff --git a/examples/nodejs/cases/storage.js b/examples/nodejs/cases/storage.js index d2ccf954..0660b70c 100644 --- a/examples/nodejs/cases/storage.js +++ b/examples/nodejs/cases/storage.js @@ -32,9 +32,6 @@ console.log('objectName', objectName); primarySpAddress: spInfo.primarySpAddress, }, paymentAddress: ACCOUNT_ADDRESS, - tags: { - tags: [], - }, }, { type: 'ECDSA', @@ -72,9 +69,6 @@ console.log('objectName', objectName); redundancyType: 'REDUNDANCY_EC_TYPE', contentLength: fileBuffer.length, expectCheckSums, - tags: { - tags: [], - }, }, { type: 'ECDSA', From 37b11a954f66db20ebd282ee62d31b8e3c946e0d Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Sun, 24 Dec 2023 17:11:47 +0800 Subject: [PATCH 371/433] docs: Update (#459) --- doc-site/docs/FAQs/caclute-checksum-is-slow.mdx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx b/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx index 050f720a..3e3b2fde 100644 --- a/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx +++ b/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx @@ -40,7 +40,7 @@ const rs = new RS.ReedSolomon(); const res = rs.encode(new Uint8Array(fileBuffer)) ``` -If the file is larger, this method may cause the page to freeze when calculating. In this case, we recommend using the worker mode: +It also supports UMD mode calls (simpler and more convenient): ```html title="core lib (UMD)" @@ -74,7 +74,9 @@ If the file is larger, this method may cause the page to freeze when calculating ``` -```html title="web worker (only support UMD)" +If the file is larger, this method may cause the page to freeze when calculating. We recommend using the worker mode: + +```html title="webworker (only support UMD)" @@ -124,7 +126,7 @@ If the file is larger, this method may cause the page to freeze when calculating
    -Nodejs can also be used in two ways, directly with core library, or with [worker_threads](https://nodejs.org/api/worker_threads.html) (when calculating large files). +Nodejs can also be used in two ways, directly with core library, or with [worker_threads](https://nodejs.org/api/worker_threads.html) (calculating large files). ```js title="core lib" const { ReedSolomon } = require('@bnb-chain/reed-solomon') From 31b020cea164fa44b10999a12615d6378db0c017 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Sun, 24 Dec 2023 21:18:35 +0800 Subject: [PATCH 372/433] docs: Update (#460) --- doc-site/docs/FAQs/caclute-checksum-is-slow.mdx | 2 +- packages/reed-solomon/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx b/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx index 3e3b2fde..fe946163 100644 --- a/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx +++ b/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx @@ -36,7 +36,7 @@ When you are developing Greenfield and need to create objects, if you are sure t ```javascript title="core lib (ESM)" import {ReedSolomon} from '@bnb-chain/reed-solomon' -const rs = new RS.ReedSolomon(); +const rs = new ReedSolomon(); const res = rs.encode(new Uint8Array(fileBuffer)) ``` diff --git a/packages/reed-solomon/README.md b/packages/reed-solomon/README.md index ef9ca2be..b7b281e1 100644 --- a/packages/reed-solomon/README.md +++ b/packages/reed-solomon/README.md @@ -19,7 +19,7 @@ If you use module bundler such as [Webpack](https://webpack.js.org/), [Rollup](h ```js import {ReedSolomon} from '@bnb-chain/reed-solomon' -const rs = new RS.ReedSolomon(); +const rs = new ReedSolomon(); const res = rs.encode(new Uint8Array(fileBuffer)) ``` From a70b231a3544acab492fc6093eb03f1d4735ce73 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Mon, 25 Dec 2023 11:18:48 +0800 Subject: [PATCH 373/433] chore: Enter alpha --- .changeset/pre.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 00000000..57560062 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,16 @@ +{ + "mode": "pre", + "tag": "alpha", + "initialVersions": { + "greenfield-js-sdk-docs": "0.0.0", + "browser-file-management": "0.1.0", + "@demo/wallet": "0.0.23", + "@demo/nodejs": "0.0.1", + "@bnb-chain/create-gnfd-app": "1.0.0", + "@bnb-chain/greenfiled-file-handle": "1.0.2", + "@bnb-chain/greenfield-js-sdk": "1.1.2", + "@bnb-chain/reed-solomon": "1.1.2", + "@bnb-chain/greenfield-zk-crypto": "1.0.0" + }, + "changesets": [] +} From 865be476dfd78f86b9d0a7dba3074fbf7ae32bb7 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Tue, 26 Dec 2023 00:11:24 +0800 Subject: [PATCH 374/433] Feat/new tag (#461) * Fix/sp tag type (#444) * fix: Sp types * fix: Sp types (cherry picked from commit eb75e4d2716d97249bc9f57f20861368ca73204c) * fix: Tag compatibility (#443) (cherry picked from commit 7a2e9d263648c1032f3422235518eb748d99eeab) * feat: Upgrade cosmos type to 0.4.0 alpha 30 * chore: Update feegranet example * feat: Add SetTag API --- .changeset/little-melons-care.md | 5 + .changeset/twelve-mice-grin.md | 5 + examples/nextjs/package.json | 2 +- .../src/components/bucket/create/index.tsx | 14 - .../src/components/feegrant/createObj.tsx | 11 +- .../src/components/group/create/index.tsx | 47 +- .../src/components/group/update/index.tsx | 6 +- .../src/components/object/create/index.tsx | 12 - examples/nextjs/src/pages/_document.tsx | 6 - packages/js-sdk/package.json | 2 +- packages/js-sdk/src/api/bucket.ts | 10 +- packages/js-sdk/src/api/crosschain.ts | 11 +- packages/js-sdk/src/api/feegrant.ts | 1 + packages/js-sdk/src/api/group.ts | 6 +- packages/js-sdk/src/api/objects.ts | 11 +- .../greenfield/storage/MsgCreateBucket.ts | 47 +- .../greenfield/storage/MsgCreateGroup.ts | 47 +- .../greenfield/storage/MsgCreateObject.ts | 47 +- .../js-sdk/src/types/sp/BucketApproval.ts | 3 - packages/js-sdk/src/types/sp/Common.ts | 34 - .../js-sdk/src/types/sp/ObjectApproval.ts | 3 - pnpm-lock.yaml | 1105 ++++++++++++----- 22 files changed, 814 insertions(+), 621 deletions(-) create mode 100644 .changeset/little-melons-care.md create mode 100644 .changeset/twelve-mice-grin.md diff --git a/.changeset/little-melons-care.md b/.changeset/little-melons-care.md new file mode 100644 index 00000000..6a7793e2 --- /dev/null +++ b/.changeset/little-melons-care.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': minor +--- + +feat: Add SetTag API diff --git a/.changeset/twelve-mice-grin.md b/.changeset/twelve-mice-grin.md new file mode 100644 index 00000000..c061f7ac --- /dev/null +++ b/.changeset/twelve-mice-grin.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Upgrade cosmos types to 0.4.0-alpha.30 diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index dda90da6..963935e6 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -11,7 +11,7 @@ "lint": "next lint" }, "dependencies": { - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.25", + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.30", "@bnb-chain/greenfield-js-sdk": "workspace:*", "@bnb-chain/reed-solomon": "workspace:*", "@cosmjs/encoding": "^0.32.0", diff --git a/examples/nextjs/src/components/bucket/create/index.tsx b/examples/nextjs/src/components/bucket/create/index.tsx index 5209776a..62d31c84 100644 --- a/examples/nextjs/src/components/bucket/create/index.tsx +++ b/examples/nextjs/src/components/bucket/create/index.tsx @@ -47,20 +47,6 @@ export const CreateBucket = () => { primarySpAddress: spInfo.primarySpAddress, }, paymentAddress: address, - // empty tags - tags: { - tags: [], - }, - - // with tags: - // tags: { - // tags: [ - // { - // key: 'test', - // value: 'test', - // }, - // ], - // }, }, { // type: 'ECDSA', diff --git a/examples/nextjs/src/components/feegrant/createObj.tsx b/examples/nextjs/src/components/feegrant/createObj.tsx index 2dc78792..42f84e2f 100644 --- a/examples/nextjs/src/components/feegrant/createObj.tsx +++ b/examples/nextjs/src/components/feegrant/createObj.tsx @@ -11,6 +11,7 @@ import { Wallet } from '@ethersproject/wallet'; import { ChangeEvent, useState } from 'react'; import { parseEther } from 'viem'; import { useAccount } from 'wagmi'; +import { ReedSolomon } from '@bnb-chain/reed-solomon'; /** * fee grant for creat object @@ -124,11 +125,9 @@ export const CreateObj = () => { console.log('temp account', granteeAddr, privateKey); + const rs = new ReedSolomon(); const fileBytes = await file.arrayBuffer(); - const hashResult = await (window as any).FileHandle.getCheckSums( - new Uint8Array(fileBytes), - ); - const { contentLength, expectCheckSums } = hashResult; + const expectCheckSums = rs.encode(new Uint8Array(fileBytes)); const createObjectTx = await client.object.createObject( { @@ -137,13 +136,13 @@ export const CreateObj = () => { objectName: objectName, visibility: 'VISIBILITY_TYPE_PUBLIC_READ', redundancyType: 'REDUNDANCY_EC_TYPE', - contentLength, + contentLength: fileBytes.byteLength, expectCheckSums, fileType: file.type, }, { type: 'ECDSA', - privateKey: ACCOUNT_PRIVATEKEY, + privateKey: privateKey, }, ); diff --git a/examples/nextjs/src/components/group/create/index.tsx b/examples/nextjs/src/components/group/create/index.tsx index 924ab087..b9f7855e 100644 --- a/examples/nextjs/src/components/group/create/index.tsx +++ b/examples/nextjs/src/components/group/create/index.tsx @@ -28,9 +28,6 @@ export const CreateGroup = () => { creator: address, groupName: createGroupInfo.groupName, extra: 'extra info', - tags: { - tags: [], - }, }); const simulateInfo = await createGroupTx.simulate({ @@ -61,49 +58,7 @@ export const CreateGroup = () => { console.log(res); }} > - create group with empty tags - - - ); diff --git a/examples/nextjs/src/components/group/update/index.tsx b/examples/nextjs/src/components/group/update/index.tsx index 202e8af5..f8fed8ea 100644 --- a/examples/nextjs/src/components/group/update/index.tsx +++ b/examples/nextjs/src/components/group/update/index.tsx @@ -1,7 +1,6 @@ import { client } from '@/client'; -import { GRNToString, newBucketGRN, newGroupGRN, toTimestamp } from '@bnb-chain/greenfield-js-sdk'; +import { GRNToString, newGroupGRN, toTimestamp } from '@bnb-chain/greenfield-js-sdk'; import { useState } from 'react'; -import { zeroAddress } from 'viem'; import { useAccount } from 'wagmi'; export const GroupUpdate = () => { @@ -130,6 +129,9 @@ export const GroupUpdate = () => { const updateGroupTx = await client.storage.setTag({ operator: address, resource, + // tags: { + // tags: [], + // }, tags: { tags: [ { diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index fc420329..ee990a1c 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -168,18 +168,6 @@ export const CreateObject = () => { bucketName: createObjectInfo.bucketName, objectName: createObjectInfo.objectName + '/', creator: address, - // empty tags - // tags: { - // tags: [], - // }, - tags: { - tags: [ - { - key: 'test', - value: 'test', - }, - ], - }, }, { type: 'EDDSA', diff --git a/examples/nextjs/src/pages/_document.tsx b/examples/nextjs/src/pages/_document.tsx index 660f65ba..e1e9cbbb 100644 --- a/examples/nextjs/src/pages/_document.tsx +++ b/examples/nextjs/src/pages/_document.tsx @@ -8,12 +8,6 @@ export default function Document() {

    - - ); } diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index b0c55e22..705d341a 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -59,7 +59,7 @@ ] }, "dependencies": { - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.25", + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.30", "@bnb-chain/greenfield-zk-crypto": "workspace:*", "@cosmjs/proto-signing": "^0.32.0", "@cosmjs/stargate": "^0.32.0", diff --git a/packages/js-sdk/src/api/bucket.ts b/packages/js-sdk/src/api/bucket.ts index ec5b8ec8..1ddd2d44 100644 --- a/packages/js-sdk/src/api/bucket.ts +++ b/packages/js-sdk/src/api/bucket.ts @@ -23,7 +23,6 @@ import { MsgPutPolicy, MsgUpdateBucketInfo, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { ResourceTags } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/types'; import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { Headers } from 'cross-fetch'; import { bytesToUtf8, hexToBytes } from 'ethereum-cryptography/utils'; @@ -69,7 +68,7 @@ import { import { AuthType, SpClient } from '../clients/spclient/spClient'; import { TxClient } from '../clients/txClient'; import { METHOD_GET, NORMAL_ERROR_CODE } from '../constants/http'; -import { getMsgCreateBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateBucket'; +import { MsgCreateBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateBucket'; import { MsgDeleteBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgDeleteBucket'; import { MsgMigrateBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgMigrateBucket'; import { MsgUpdateBucketInfoSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateBucketInfo'; @@ -213,7 +212,6 @@ export class Bucket implements IBucket { spInfo, duration, paymentAddress, - tags, } = params; try { @@ -242,7 +240,6 @@ export class Bucket implements IBucket { }, charged_read_quota: chargedReadQuota, payment_address: paymentAddress, - tags: tags, }); const signHeaders = await this.spClient.signHeaders(reqMeta, authType); @@ -274,10 +271,6 @@ export class Bucket implements IBucket { } private async createBucketTx(msg: MsgCreateBucket, signedMsg: CreateBucketApprovalResponse) { - const isTagsEmpty = msg?.tags?.tags?.length === 0; - - const MsgCreateBucketSDKTypeEIP712 = getMsgCreateBucketSDKTypeEIP712(isTagsEmpty); - return await this.txClient.tx( MsgCreateBucketTypeUrl, msg.creator, @@ -314,7 +307,6 @@ export class Bucket implements IBucket { }, chargedReadQuota: Long.fromString(signedMsg.charged_read_quota), paymentAddress: signedMsg.payment_address, - tags: ResourceTags.fromJSON(signedMsg.tags), }; return await this.createBucketTx(msg, signedMsg); diff --git a/packages/js-sdk/src/api/crosschain.ts b/packages/js-sdk/src/api/crosschain.ts index ae6d53e7..0c2f03a1 100644 --- a/packages/js-sdk/src/api/crosschain.ts +++ b/packages/js-sdk/src/api/crosschain.ts @@ -6,7 +6,10 @@ import { QuerySendSequenceRequest, QuerySendSequenceResponse, } from '@bnb-chain/greenfield-cosmos-types/cosmos/crosschain/v1/query'; -import { QueryInturnRelayerResponse } from '@bnb-chain/greenfield-cosmos-types/cosmos/oracle/v1/query'; +import { + QueryInturnRelayerRequest, + QueryInturnRelayerResponse, +} from '@bnb-chain/greenfield-cosmos-types/cosmos/oracle/v1/query'; import { MsgClaim } from '@bnb-chain/greenfield-cosmos-types/cosmos/oracle/v1/tx'; import { QueryParamsResponse } from '@bnb-chain/greenfield-cosmos-types/greenfield/bridge/query'; import { MsgTransferOut } from '@bnb-chain/greenfield-cosmos-types/greenfield/bridge/tx'; @@ -58,7 +61,7 @@ export interface ICrossChain { /** * gets the in-turn relayer bls public key and its relay interval */ - getInturnRelayer(): Promise; + getInturnRelayer(request: QueryInturnRelayerRequest): Promise; getCrosschainPackage( request: QueryCrossChainPackageRequest, @@ -117,9 +120,9 @@ export class CrossChain implements ICrossChain { return await rpc.ReceiveSequence(request); } - public async getInturnRelayer() { + public async getInturnRelayer(request: QueryInturnRelayerRequest) { const rpc = await this.queryClient.getOracleQueryClient(); - return await rpc.InturnRelayer(); + return await rpc.InturnRelayer(request); } public async getCrosschainPackage(request: QueryCrossChainPackageRequest) { diff --git a/packages/js-sdk/src/api/feegrant.ts b/packages/js-sdk/src/api/feegrant.ts index fc381d46..74e53688 100644 --- a/packages/js-sdk/src/api/feegrant.ts +++ b/packages/js-sdk/src/api/feegrant.ts @@ -57,6 +57,7 @@ export class FeeGrant implements IFeeGrant { { ...MsgGrantAllowance.toSDK(grantAllowance), allowance: { + // @ts-ignore type: grantAllowance.allowance?.typeUrl, value: base64FromBytes(arrayify('0x' + encodeToHex(JSON.stringify(marshal)))), // TODO: @roshan next version should return hex string diff --git a/packages/js-sdk/src/api/group.ts b/packages/js-sdk/src/api/group.ts index 53589524..e0e81c88 100644 --- a/packages/js-sdk/src/api/group.ts +++ b/packages/js-sdk/src/api/group.ts @@ -111,10 +111,6 @@ export class Group implements IGroup { private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); public async createGroup(msg: MsgCreateGroup) { - const isTagsEmpty = msg?.tags?.tags?.length === 0; - - const MsgCreateGroupSDKTypeEIP712 = getMsgCreateGroupSDKTypeWithTagEIP712(isTagsEmpty); - return await this.txClient.tx( MsgCreateGroupTypeUrl, msg.creator, @@ -155,7 +151,7 @@ export class Group implements IGroup { members_to_add: msg.membersToAdd.map((x) => { return { member: x.member, - expiration_time: fromTimestamp(x.expirationTime), + expiration_time: x.expirationTime && fromTimestamp(x.expirationTime), }; }), }, diff --git a/packages/js-sdk/src/api/objects.ts b/packages/js-sdk/src/api/objects.ts index 1d1969b5..53641df1 100644 --- a/packages/js-sdk/src/api/objects.ts +++ b/packages/js-sdk/src/api/objects.ts @@ -19,7 +19,7 @@ import { getPutObjectMetaInfo } from '../clients/spclient/spApis/putObject'; import { TxClient } from '../clients/txClient'; import { METHOD_GET, NORMAL_ERROR_CODE } from '../constants/http'; import { MsgCancelCreateObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCancelCreateObject'; -import { getMsgCreateObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateObject'; +import { MsgCreateObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateObject'; import { MsgDeleteObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgDeleteObject'; import { MsgUpdateObjectInfoSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateObjectInfo'; import { signSignatureByEddsa } from '../offchainauth'; @@ -88,7 +88,6 @@ import { } from '../utils/s3'; import { Sp } from './sp'; import { Storage } from './storage'; -import { ResourceTags } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/types'; export interface IObject { getCreateObjectApproval( @@ -198,7 +197,6 @@ export class Objects implements IObject { redundancyType = 'REDUNDANCY_EC_TYPE', contentLength, expectCheckSums, - tags, } = params; try { @@ -231,7 +229,6 @@ export class Objects implements IObject { }, redundancy_type: redundancyType, visibility, - tags, }); const signHeaders = await this.spClient.signHeaders(reqMeta, authType); @@ -271,10 +268,6 @@ export class Objects implements IObject { } private async createObjectTx(msg: MsgCreateObject, signedMsg: CreateObjectApprovalResponse) { - const isTagsEmpty = msg?.tags?.tags?.length === 0; - - const MsgCreateObjectSDKTypeEIP712 = getMsgCreateObjectSDKTypeEIP712(isTagsEmpty); - return await this.txClient.tx( MsgCreateObjectTypeUrl, msg.creator, @@ -313,7 +306,6 @@ export class Objects implements IObject { sig: bytesFromBase64(signedMsg.primary_sp_approval.sig || ''), globalVirtualGroupFamilyId: signedMsg.primary_sp_approval.global_virtual_group_family_id, }, - tags: ResourceTags.fromJSON(signedMsg.tags), }; return await this.createObjectTx(msg, signedMsg); @@ -629,7 +621,6 @@ export class Objects implements IObject { '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', ], creator: getApprovalParams.creator, - tags: getApprovalParams.tags, }; return this.createObject(params, authType); diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts index c669f51b..c56a2136 100644 --- a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts @@ -1,49 +1,4 @@ -import type { EIP712Msg } from '@/messages/utils'; -import cloneDeep from 'lodash.clonedeep'; - -export const getMsgCreateBucketSDKTypeEIP712 = (isTagsEmpty: boolean) => { - const res: EIP712Msg = cloneDeep(MsgCreateBucketSDKTypeEIP712); - - if (!isTagsEmpty) { - res.Msg1.push({ - name: 'tags', - type: 'TypeMsg1Tags', - }); - - res.TypeMsg1Tags = [ - { - name: 'tags', - type: 'TypeMsg1TagsTags[]', - }, - ]; - res.TypeMsg1TagsTags = [ - { - name: 'key', - type: 'string', - }, - { - name: 'value', - type: 'string', - }, - ]; - } else { - res.Msg1.push({ - name: 'tags', - type: 'TypeMsg1Tags', - }); - - res.TypeMsg1Tags = [ - { - name: 'tags', - type: 'string[]', - }, - ]; - } - - return res; -}; - -const MsgCreateBucketSDKTypeEIP712 = { +export const MsgCreateBucketSDKTypeEIP712 = { Msg1: [ { name: 'bucket_name', diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts index 212bf1d7..6badab86 100644 --- a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts @@ -1,7 +1,4 @@ -import type { EIP712Msg } from '@/messages/utils'; -import cloneDeep from 'lodash.clonedeep'; - -const MsgCreateGroupSDKTypeEIP712 = { +export const MsgCreateGroupSDKTypeEIP712 = { Msg1: [ { name: 'creator', @@ -21,45 +18,3 @@ const MsgCreateGroupSDKTypeEIP712 = { }, ], }; - -export const getMsgCreateGroupSDKTypeWithTagEIP712 = (isTagsEmpty: boolean) => { - const res: EIP712Msg = cloneDeep(MsgCreateGroupSDKTypeEIP712); - - if (!isTagsEmpty) { - res.Msg1.push({ - name: 'tags', - type: 'TypeMsg1Tags', - }); - - res.TypeMsg1Tags = [ - { - name: 'tags', - type: 'TypeMsg1TagsTags[]', - }, - ]; - res.TypeMsg1TagsTags = [ - { - name: 'key', - type: 'string', - }, - { - name: 'value', - type: 'string', - }, - ]; - } else { - res.Msg1.push({ - name: 'tags', - type: 'TypeMsg1Tags', - }); - - res.TypeMsg1Tags = [ - { - name: 'tags', - type: 'string[]', - }, - ]; - } - - return res; -}; diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts index 489ec21a..b1b92a4e 100644 --- a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts @@ -1,49 +1,4 @@ -import type { EIP712Msg } from '@/messages/utils'; -import cloneDeep from 'lodash.clonedeep'; - -export const getMsgCreateObjectSDKTypeEIP712 = (isTagsEmpty: boolean) => { - const res: EIP712Msg = cloneDeep(MsgCreateObjectSDKTypeEIP712); - - if (!isTagsEmpty) { - res.Msg1.push({ - name: 'tags', - type: 'TypeMsg1Tags', - }); - - res.TypeMsg1Tags = [ - { - name: 'tags', - type: 'TypeMsg1TagsTags[]', - }, - ]; - res.TypeMsg1TagsTags = [ - { - name: 'key', - type: 'string', - }, - { - name: 'value', - type: 'string', - }, - ]; - } else { - res.Msg1.push({ - name: 'tags', - type: 'TypeMsg1Tags', - }); - - res.TypeMsg1Tags = [ - { - name: 'tags', - type: 'string[]', - }, - ]; - } - - return res; -}; - -const MsgCreateObjectSDKTypeEIP712 = { +export const MsgCreateObjectSDKTypeEIP712 = { Msg1: [ { name: 'bucket_name', diff --git a/packages/js-sdk/src/types/sp/BucketApproval.ts b/packages/js-sdk/src/types/sp/BucketApproval.ts index eb8304c0..1ca043ba 100644 --- a/packages/js-sdk/src/types/sp/BucketApproval.ts +++ b/packages/js-sdk/src/types/sp/BucketApproval.ts @@ -1,5 +1,4 @@ import { VisibilityType } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; -import { TagsInCreateTxApproval } from './Common'; export type CreateBucketApprovalRequest = { bucketName: string; @@ -11,7 +10,6 @@ export type CreateBucketApprovalRequest = { }; duration?: number; paymentAddress: string; - tags: TagsInCreateTxApproval; }; export interface CreateBucketApprovalResponse { @@ -26,5 +24,4 @@ export interface CreateBucketApprovalResponse { global_virtual_group_family_id: number; }; charged_read_quota: string; - tags: TagsInCreateTxApproval; } diff --git a/packages/js-sdk/src/types/sp/Common.ts b/packages/js-sdk/src/types/sp/Common.ts index 438ba514..644b81a3 100644 --- a/packages/js-sdk/src/types/sp/Common.ts +++ b/packages/js-sdk/src/types/sp/Common.ts @@ -42,12 +42,6 @@ export interface BucketInfo { PaymentAddress: string; SourceType: number; Visibility: number; - Tags: { - Tags: { - Key: string; - Value: string; - }[]; - }; } export interface StreamRecord { @@ -91,12 +85,6 @@ export interface ObjectInfo { RedundancyType: number; SourceType: number; Visibility: number; - Tags: { - Tags: { - Key: string; - Value: string; - }[]; - }; } export function formatBucketInfo(o: BucketInfo): BucketInfo { @@ -109,9 +97,6 @@ export function formatBucketInfo(o: BucketInfo): BucketInfo { GlobalVirtualGroupFamilyId: Number(o.GlobalVirtualGroupFamilyId), SourceType: Number(o.SourceType), Visibility: Number(o.Visibility), - Tags: { - Tags: tags, - }, }; } @@ -126,9 +111,6 @@ export function formatObjectInfo(o: ObjectInfo): ObjectInfo { RedundancyType: Number(o.RedundancyType), SourceType: Number(o.SourceType), Visibility: Number(o.Visibility), - Tags: { - Tags: tags, - }, }; } @@ -158,12 +140,6 @@ export interface GroupInfo { SourceType: number; Id: number; Extra: string; - Tags: { - Tags: { - Key: string; - Value: string; - }[]; - }; } export function formatGroupInfo(o: GroupInfo): GroupInfo { @@ -171,9 +147,6 @@ export function formatGroupInfo(o: GroupInfo): GroupInfo { ...o, SourceType: Number(o.SourceType), Id: Number(o.Id), - Tags: { - Tags: tags, - }, }; } @@ -207,10 +180,3 @@ export interface PolicyMeta { */ ExpirationTime: number; } - -/** - * create bucket / object approval's tags - */ -export type TagsInCreateTxApproval = { - tags: string[] | { key: string; value: string }[]; -}; diff --git a/packages/js-sdk/src/types/sp/ObjectApproval.ts b/packages/js-sdk/src/types/sp/ObjectApproval.ts index f3c2ba91..da504c2c 100644 --- a/packages/js-sdk/src/types/sp/ObjectApproval.ts +++ b/packages/js-sdk/src/types/sp/ObjectApproval.ts @@ -2,7 +2,6 @@ import { RedundancyType, VisibilityType, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; -import { TagsInCreateTxApproval } from './Common'; export type CreateObjectApprovalRequest = { bucketName: string; @@ -14,7 +13,6 @@ export type CreateObjectApprovalRequest = { duration?: number; contentLength: number; expectCheckSums: string[]; - tags: TagsInCreateTxApproval; endpoint?: string; }; @@ -34,5 +32,4 @@ export type CreateObjectApprovalResponse = { // expect_secondary_sp_addresses: string[]; redundancy_type: keyof typeof RedundancyType; // charged_read_quota: string; - tags: TagsInCreateTxApproval; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d0a903bb..86f45157 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.1' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -43,7 +43,7 @@ importers: version: 3.0.2(rollup@2.79.1) '@rollup/plugin-typescript': specifier: ^11.1.3 - version: 11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5) + version: 11.1.3(rollup@2.79.1)(typescript@5.3.3) '@types/chai': specifier: ^4.3.5 version: 4.3.5 @@ -61,10 +61,10 @@ importers: version: 18.2.5 '@typescript-eslint/eslint-plugin': specifier: ^5.59.11 - version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.3) '@typescript-eslint/parser': specifier: ^5.59.11 - version: 5.59.11(eslint@8.48.0)(typescript@4.9.5) + version: 5.59.11(eslint@8.48.0)(typescript@5.3.3) chai: specifier: ^4.3.7 version: 4.3.7 @@ -76,7 +76,7 @@ importers: version: 8.48.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5) + version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.3.3) eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.1(eslint@8.48.0)(prettier@2.8.8) @@ -109,16 +109,16 @@ importers: dependencies: '@docusaurus/core': specifier: 3.0.1 - version: 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + version: 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/plugin-ideal-image': specifier: ^3.0.1 - version: 3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + version: 3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/preset-classic': specifier: 3.0.1 - version: 3.0.1(@algolia/client-search@4.20.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5) + version: 3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) '@mdx-js/react': specifier: ^3.0.0 - version: 3.0.0(@types/react@18.2.21)(react@18.2.0) + version: 3.0.0(@types/react@18.2.45)(react@18.2.0) clsx: specifier: ^1.2.1 version: 1.2.1 @@ -178,8 +178,8 @@ importers: examples/nextjs: dependencies: '@bnb-chain/greenfield-cosmos-types': - specifier: 0.4.0-alpha.25 - version: 0.4.0-alpha.25 + specifier: 0.4.0-alpha.30 + version: 0.4.0-alpha.30 '@bnb-chain/greenfield-js-sdk': specifier: workspace:* version: link:../../packages/js-sdk @@ -376,8 +376,8 @@ importers: packages/js-sdk: dependencies: '@bnb-chain/greenfield-cosmos-types': - specifier: 0.4.0-alpha.25 - version: 0.4.0-alpha.25 + specifier: 0.4.0-alpha.30 + version: 0.4.0-alpha.30 '@bnb-chain/greenfield-zk-crypto': specifier: workspace:* version: link:../zk-crypto @@ -480,16 +480,16 @@ importers: version: 16.0.3 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + version: 29.5.0(@types/node@20.10.5)(ts-node@10.9.1) mime: specifier: ^3.0.0 version: 3.0.0 ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.23.5)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + version: 10.9.1(@types/node@20.10.5)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.2 @@ -545,47 +545,47 @@ packages: resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} dev: false - /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0): + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0): resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights dev: false - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0): + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0): resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} peerDependencies: search-insights: '>= 1 < 3' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) - search-insights: 2.11.0 + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) + search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch dev: false - /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): + /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0): resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) - '@algolia/client-search': 4.20.0 + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) + '@algolia/client-search': 4.22.0 algoliasearch: 4.20.0 dev: false - /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0): resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/client-search': 4.20.0 + '@algolia/client-search': 4.22.0 algoliasearch: 4.20.0 dev: false @@ -599,6 +599,10 @@ packages: resolution: {integrity: sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==} dev: false + /@algolia/cache-common@4.22.0: + resolution: {integrity: sha512-TPwUMlIGPN16eW67qamNQUmxNiGHg/WBqWcrOoCddhqNTqGDPVqmgfaM85LPbt24t3r1z0zEz/tdsmuq3Q6oaA==} + dev: false + /@algolia/cache-in-memory@4.20.0: resolution: {integrity: sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==} dependencies: @@ -629,6 +633,13 @@ packages: '@algolia/transporter': 4.20.0 dev: false + /@algolia/client-common@4.22.0: + resolution: {integrity: sha512-BlbkF4qXVWuwTmYxVWvqtatCR3lzXwxx628p1wj1Q7QP2+LsTmGt1DiUYRuy9jG7iMsnlExby6kRMOOlbhv2Ag==} + dependencies: + '@algolia/requester-common': 4.22.0 + '@algolia/transporter': 4.22.0 + dev: false + /@algolia/client-personalization@4.20.0: resolution: {integrity: sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==} dependencies: @@ -645,6 +656,14 @@ packages: '@algolia/transporter': 4.20.0 dev: false + /@algolia/client-search@4.22.0: + resolution: {integrity: sha512-bn4qQiIdRPBGCwsNuuqB8rdHhGKKWIij9OqidM1UkQxnSG8yzxHdb7CujM30pvp5EnV7jTqDZRbxacbjYVW20Q==} + dependencies: + '@algolia/client-common': 4.22.0 + '@algolia/requester-common': 4.22.0 + '@algolia/transporter': 4.22.0 + dev: false + /@algolia/events@4.0.1: resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} dev: false @@ -653,6 +672,10 @@ packages: resolution: {integrity: sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==} dev: false + /@algolia/logger-common@4.22.0: + resolution: {integrity: sha512-HMUQTID0ucxNCXs5d1eBJ5q/HuKg8rFVE/vOiLaM4Abfeq1YnTtGV3+rFEhOPWhRQxNDd+YHa4q864IMc0zHpQ==} + dev: false + /@algolia/logger-console@4.20.0: resolution: {integrity: sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==} dependencies: @@ -669,6 +692,10 @@ packages: resolution: {integrity: sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==} dev: false + /@algolia/requester-common@4.22.0: + resolution: {integrity: sha512-Y9cEH/cKjIIZgzvI1aI0ARdtR/xRrOR13g5psCxkdhpgRN0Vcorx+zePhmAa4jdQNqexpxtkUdcKYugBzMZJgQ==} + dev: false + /@algolia/requester-node-http@4.20.0: resolution: {integrity: sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==} dependencies: @@ -683,6 +710,14 @@ packages: '@algolia/requester-common': 4.20.0 dev: false + /@algolia/transporter@4.22.0: + resolution: {integrity: sha512-ieO1k8x2o77GNvOoC+vAkFKppydQSVfbjM3YrSjLmgywiBejPTvU1R1nEvG59JIIUvtSLrZsLGPkd6vL14zopA==} + dependencies: + '@algolia/cache-common': 4.22.0 + '@algolia/logger-common': 4.22.0 + '@algolia/requester-common': 4.22.0 + dev: false + /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} @@ -703,7 +738,6 @@ packages: dependencies: '@babel/highlight': 7.23.4 chalk: 2.4.2 - dev: true /@babel/compat-data@7.22.9: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} @@ -714,6 +748,11 @@ packages: engines: {node: '>=6.9.0'} dev: false + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/core@7.23.3: resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==} engines: {node: '>=6.9.0'} @@ -757,6 +796,28 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color + + /@babel/core@7.23.6: + resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/helpers': 7.23.6 + '@babel/parser': 7.23.6 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color dev: true /@babel/eslint-parser@7.21.8(@babel/core@7.23.3)(eslint@8.48.0): @@ -800,6 +861,15 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 + + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 dev: true /@babel/helper-annotate-as-pure@7.22.5: @@ -832,6 +902,17 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.2 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.23.3): resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} engines: {node: '>=6.9.0'} @@ -880,6 +961,7 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 + dev: true /@babel/helper-create-regexp-features-plugin@7.22.1(@babel/core@7.23.5): resolution: {integrity: sha512-WWjdnfR3LPIe+0EY8td7WmjhytxXtjKAEpnAxun/hkNiyOaPlvGK+NZaBFIdi9ndYV3Gav7BpFvtUwnaJlwi1w==} @@ -1025,6 +1107,19 @@ packages: '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 dev: true /@babel/helper-optimise-call-expression@7.18.6: @@ -1131,7 +1226,6 @@ packages: /@babel/helper-string-parser@7.23.4: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-validator-identifier@7.22.15: resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} @@ -1145,6 +1239,11 @@ packages: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-wrap-function@7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} @@ -1185,6 +1284,16 @@ packages: '@babel/types': 7.23.5 transitivePeerDependencies: - supports-color + + /@babel/helpers@7.23.6: + resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + transitivePeerDependencies: + - supports-color dev: true /@babel/highlight@7.22.13: @@ -1202,7 +1311,6 @@ packages: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 - dev: true /@babel/parser@7.22.15: resolution: {integrity: sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==} @@ -1226,6 +1334,14 @@ packages: dependencies: '@babel/types': 7.23.5 + /@babel/parser@7.23.6: + resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.6 + dev: true + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.23.3): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} @@ -1614,6 +1730,7 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} @@ -2748,6 +2865,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.3) '@babel/types': 7.22.15 + dev: true /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.3): resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} @@ -3374,8 +3492,8 @@ packages: dependencies: regenerator-runtime: 0.13.11 - /@babel/runtime@7.23.2: - resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} + /@babel/runtime@7.23.4: + resolution: {integrity: sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 @@ -3421,6 +3539,23 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color + + /@babel/traverse@7.23.6: + resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color dev: true /@babel/types@7.22.15: @@ -3446,21 +3581,22 @@ packages: '@babel/helper-string-parser': 7.23.4 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + + /@babel/types@7.23.6: + resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 dev: true /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.25: - resolution: {integrity: sha512-A/v0X/rhwmWN8cNmkFCRIzT0sHQn2sb/mPrdwdIgUbjEV49s9KncSAKxRMIz3+ph0KeROmxjUWaDsJ9/KGU2tQ==} - dependencies: - long: 4.0.0 - protobufjs: 6.11.4 - dev: false - - /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.25: - resolution: {integrity: sha512-A/v0X/rhwmWN8cNmkFCRIzT0sHQn2sb/mPrdwdIgUbjEV49s9KncSAKxRMIz3+ph0KeROmxjUWaDsJ9/KGU2tQ==} + /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.30: + resolution: {integrity: sha512-nYThWPZHfq/bDMEu+Sw9cMMqgTk4NEg+PH9GkvN2OMgpo8QuCDy3Eh4C1g6lJy0BFv+ilethoPmKjSeEwa1m8g==} dependencies: long: 4.0.0 protobufjs: 6.11.4 @@ -3816,7 +3952,7 @@ packages: lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.3.3) typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -4076,7 +4212,7 @@ packages: resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0): + /@docsearch/react@3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -4093,19 +4229,19 @@ packages: search-insights: optional: true dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) '@docsearch/css': 3.5.2 - '@types/react': 18.2.21 + '@types/react': 18.2.45 algoliasearch: 4.20.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - search-insights: 2.11.0 + search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' dev: false - /@docusaurus/core@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/core@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-CXrLpOnW+dJdSv8M5FAJ3JBwXtL6mhUWxFA8aS0ozK6jBG/wgxERk5uvH28fCeFxOGbAT9v1e9dOMo1X2IEVhQ==} engines: {node: '>=18.0'} hasBin: true @@ -4127,9 +4263,9 @@ packages: '@docusaurus/logger': 3.0.1 '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/react-loadable': 5.5.2(react@18.2.0) - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-common': 3.0.0(@docusaurus/types@3.0.0) - '@docusaurus/utils-validation': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) + '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) '@slorber/static-site-generator-webpack-plugin': 4.0.7 '@svgr/webpack': 6.5.1 autoprefixer: 10.4.16(postcss@8.4.31) @@ -4160,10 +4296,10 @@ packages: lodash: 4.17.21 mini-css-extract-plugin: 2.7.6(webpack@5.89.0) postcss: 8.4.31 - postcss-loader: 7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0) + postcss-loader: 7.3.3(postcss@8.4.31)(typescript@5.3.3)(webpack@5.89.0) prompts: 2.4.2 react: 18.2.0 - react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) + react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@5.3.3)(webpack@5.89.0) react-dom: 18.2.0(react@18.2.0) react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) @@ -4179,7 +4315,6 @@ packages: tslib: 2.6.2 update-notifier: 6.0.2 url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.89.0) - wait-on: 7.2.0 webpack: 5.89.0 webpack-bundle-analyzer: 4.10.1 webpack-dev-server: 4.15.1(webpack@5.89.0) @@ -4204,8 +4339,8 @@ packages: - webpack-cli dev: false - /@docusaurus/cssnano-preset@3.0.0: - resolution: {integrity: sha512-FHiRfwmVvIVdIGsHcijUOaX7hMn0mugVYB7m4GkpYI6Mi56zwQV4lH5p7DxcW5CUYNWMVxz2loWSCiWEm5ikwA==} + /@docusaurus/cssnano-preset@3.0.1: + resolution: {integrity: sha512-wjuXzkHMW+ig4BD6Ya1Yevx9UJadO4smNZCEljqBoQfIQrQskTswBs7lZ8InHP7mCt273a/y/rm36EZhqJhknQ==} engines: {node: '>=18.0'} dependencies: cssnano-preset-advanced: 5.3.10(postcss@8.4.31) @@ -4214,16 +4349,29 @@ packages: tslib: 2.6.2 dev: false - /@docusaurus/logger@3.0.0: - resolution: {integrity: sha512-6eX0eOfioMQCk+qgCnHvbLLuyIAA+r2lSID6d6JusiLtDKmYMfNp3F4yyE8bnb0Abmzt2w68XwptEFYyALSAXw==} + /@docusaurus/logger@3.0.1: + resolution: {integrity: sha512-I5L6Nk8OJzkVA91O2uftmo71LBSxe1vmOn9AMR6JRCzYeEBrqneWMH02AqMvjJ2NpMiviO+t0CyPjyYV7nxCWQ==} engines: {node: '>=18.0'} dependencies: chalk: 4.1.2 tslib: 2.6.2 dev: false - /@docusaurus/mdx-loader@3.0.0(@docusaurus/types@3.0.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-JkGge6WYDrwjNgMxwkb6kNQHnpISt5L1tMaBWFDBKeDToFr5Kj29IL35MIQm0RfrnoOfr/29RjSH4aRtvlAR0A==} + /@docusaurus/lqip-loader@3.0.1(webpack@5.89.0): + resolution: {integrity: sha512-hFSu8ltYo0ZnWBWmjMhSprOr6nNKG01YdMDxH/hahBfyaNDCkZU4o7mQNgUW845lvYdp6bhjyW31WJwBjOnLqw==} + engines: {node: '>=18.0'} + dependencies: + '@docusaurus/logger': 3.0.1 + file-loader: 6.2.0(webpack@5.89.0) + lodash: 4.17.21 + sharp: 0.32.6 + tslib: 2.6.2 + transitivePeerDependencies: + - webpack + dev: false + + /@docusaurus/mdx-loader@3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ldnTmvnvlrONUq45oKESrpy+lXtbnTcTsFkOTIDswe5xx5iWJjt6eSa0f99ZaWlnm24mlojcIGoUWNCS53qVlQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 @@ -4287,6 +4435,7 @@ packages: - esbuild - uglify-js - webpack-cli + dev: true /@docusaurus/module-type-aliases@3.0.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-DEHpeqUDsLynl3AhQQiO7AbC7/z/lBra34jTcdYuvp9eGm01pfH1wTVq8YqWZq6Jyx0BgcVl/VJqtE9StRd9Ag==} @@ -4297,7 +4446,7 @@ packages: '@docusaurus/react-loadable': 5.5.2(react@18.2.0) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@types/history': 4.7.11 - '@types/react': 18.2.21 + '@types/react': 18.2.45 '@types/react-router-config': 5.0.10 '@types/react-router-dom': 5.3.3 react: 18.2.0 @@ -4311,14 +4460,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-blog@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-content-blog@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-cLOvtvAyaMQFLI8vm4j26svg3ktxMPSXpuUJ7EERKoGbfpJSsgtowNHcRsaBVmfuCsRSk1HZ/yHBsUkTmHFEsg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/logger': 3.0.1 '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) @@ -4355,14 +4504,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-content-docs@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-dRfAOA5Ivo+sdzzJGXEu33yAtvGg8dlZkvt/NEJ7nwi1F2j4LEdsxtfX2GKeETB2fP6XoGNSQnFXqa2NYGrHFg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/logger': 3.0.1 '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) @@ -4397,14 +4546,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-content-pages@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-oP7PoYizKAXyEttcvVzfX3OoBIXEmXTMzCdfmC4oSwjG4SPcJsRge3mmI6O8jcZBgUPjIzXD21bVGWEE1iu8gg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) @@ -4432,29 +4581,28 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-debug@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-09dxZMdATky4qdsZGzhzlUvvC+ilQ2hKbYF+wez+cM2mGo4qHbv8+qKXqxq0CQZyimwlAOWQLoSozIXU0g0i7g==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) fs-extra: 11.1.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + react-json-view-lite: 1.2.1(react@18.2.0) tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' - '@swc/core' - '@swc/css' - - '@types/react' - bufferutil - csso - debug - - encoding - esbuild - eslint - lightningcss @@ -4466,14 +4614,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-google-analytics@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-jwseSz1E+g9rXQwDdr0ZdYNjn8leZBnKPjjQhMBEiwDoenL3JYFcNW0+p0sWoVF/f2z5t7HkKA+cYObrUh18gg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) react: 18.2.0 @@ -4497,14 +4645,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-google-gtag@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-UFTDvXniAWrajsulKUJ1DB6qplui1BlKLQZjX4F7qS/qfJ+qkKqSkhJ/F4VuGQ2JYeZstYb+KaUzUzvaPK1aRQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) '@types/gtag.js': 0.0.12 @@ -4529,14 +4677,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-google-tag-manager@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-IPFvuz83aFuheZcWpTlAdiiX1RqWIHM+OH8wS66JgwAKOiQMR3+nLywGjkLV4bp52x7nCnwhNk1rE85Cpy/CIw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) react: 18.2.0 @@ -4560,7 +4708,7 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-ideal-image@3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-ideal-image@3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-IvAUpEIz6v1/fVz6UTdQY12pYIE5geNFtsuKpsULpMaotwYf3Gs7acXjQog4qquKkc65yV5zuvMj8BZMHEwLyQ==} engines: {node: '>=18.0'} peerDependencies: @@ -4571,7 +4719,7 @@ packages: jimp: optional: true dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/lqip-loader': 3.0.1(webpack@5.89.0) '@docusaurus/responsive-loader': 1.7.0(sharp@0.32.6) '@docusaurus/theme-translations': 3.0.1 @@ -4603,14 +4751,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-sitemap@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-xARiWnjtVvoEniZudlCq5T9ifnhCu/GAZ5nA7XgyLfPcNpHQa241HZdsTlLtVcecEVVdllevBKOp7qknBBaMGw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/logger': 3.0.1 '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) @@ -4639,25 +4787,25 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.20.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5): + /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): resolution: {integrity: sha512-il9m9xZKKjoXn6h0cRcdnt6wce0Pv1y5t4xk2Wx7zBGhKG1idu4IFHtikHlD0QPuZ9fizpXspXcTzjL5FXc1Gw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-debug': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-analytics': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-gtag': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-tag-manager': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-sitemap': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-debug': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-google-analytics': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-google-gtag': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-google-tag-manager': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-sitemap': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4670,7 +4818,6 @@ packages: - bufferutil - csso - debug - - encoding - esbuild - eslint - lightningcss @@ -4688,7 +4835,7 @@ packages: peerDependencies: react: '*' dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.37 prop-types: 15.8.1 react: 18.2.0 @@ -4708,26 +4855,26 @@ packages: sharp: 0.32.6 dev: false - /@docusaurus/theme-classic@3.0.1(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/theme-classic@3.0.1(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-XD1FRXaJiDlmYaiHHdm27PNhhPboUah9rqIH0lMpBt5kYtsGjJzhqa27KuZvHLzOP2OEpqd2+GZ5b6YPq7Q05Q==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/theme-translations': 3.0.1 '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) - '@mdx-js/react': 3.0.0(@types/react@18.2.21)(react@18.2.0) + '@mdx-js/react': 3.0.0(@types/react@18.2.45)(react@18.2.0) clsx: 2.0.0 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.43 @@ -4761,7 +4908,7 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/theme-common@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-cr9TOWXuIOL0PUfuXv6L5lPlTgaphKP+22NdVBOYah5jSq5XAAulJTjfe+IfLsEG4L7lJttLbhW7LXDFSAI7Ag==} engines: {node: '>=18.0'} peerDependencies: @@ -4770,9 +4917,9 @@ packages: dependencies: '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) '@types/history': 4.7.11 @@ -4804,18 +4951,18 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5): + /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): resolution: {integrity: sha512-DDiPc0/xmKSEdwFkXNf1/vH1SzJPzuJBar8kMcBbDAZk/SAmo/4lf6GU2drou4Ae60lN2waix+jYWTWcJRahSA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0) - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docsearch/react': 3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/logger': 3.0.1 - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@docusaurus/theme-translations': 3.0.1 '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) @@ -4851,8 +4998,8 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-translations@3.0.0: - resolution: {integrity: sha512-p/H3+5LdnDtbMU+csYukA6601U1ld2v9knqxGEEV96qV27HsHfP63J9Ta2RBZUrNhQAgrwFzIc9GdDO8P1Baag==} + /@docusaurus/theme-translations@3.0.1: + resolution: {integrity: sha512-6UrbpzCTN6NIJnAtZ6Ne9492vmPVX+7Fsz4kmp+yor3KQwA1+MCzQP7ItDNkP38UmVLnvB/cYk/IvehCUqS3dg==} engines: {node: '>=18.0'} dependencies: fs-extra: 11.1.1 @@ -4880,6 +5027,7 @@ packages: - esbuild - uglify-js - webpack-cli + dev: true /@docusaurus/types@3.0.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-plyX2iU1tcUsF46uQ01pAd4JhexR7n0iiQ5MSnBFX6M6NSJgDYdru/i1/YNPKOnQHBoXGLHv0dNT6OAlDWNjrg==} @@ -4888,7 +5036,7 @@ packages: react-dom: ^18.0.0 dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.21 + '@types/react': 18.2.45 commander: 5.1.0 joi: 17.11.0 react: 18.2.0 @@ -4913,16 +5061,16 @@ packages: '@docusaurus/types': optional: true dependencies: - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) tslib: 2.6.2 dev: false - /@docusaurus/utils-validation@3.0.0(@docusaurus/types@3.0.0): - resolution: {integrity: sha512-MlIGUspB/HBW5CYgHvRhmkZbeMiUWKbyVoCQYvbGN8S19SSzVgzyy97KRpcjCOYYeEdkhmRCUwFBJBlLg3IoNQ==} + /@docusaurus/utils-validation@3.0.1(@docusaurus/types@3.0.1): + resolution: {integrity: sha512-ujTnqSfyGQ7/4iZdB4RRuHKY/Nwm58IIb+41s5tCXOv/MBU2wGAjOHq3U+AEyJ8aKQcHbxvTKJaRchNHYUVUQg==} engines: {node: '>=18.0'} dependencies: - '@docusaurus/logger': 3.0.0 - '@docusaurus/utils': 3.0.0(@docusaurus/types@3.0.0) + '@docusaurus/logger': 3.0.1 + '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) joi: 17.11.0 js-yaml: 4.1.0 tslib: 2.6.2 @@ -4935,8 +5083,8 @@ packages: - webpack-cli dev: false - /@docusaurus/utils@3.0.0(@docusaurus/types@3.0.0): - resolution: {integrity: sha512-JwGjh5mtjG9XIAESyPxObL6CZ6LO/yU4OSTpq7Q0x+jN25zi/AMbvLjpSyZzWy+qm5uQiFiIhqFaOxvy+82Ekg==} + /@docusaurus/utils@3.0.1(@docusaurus/types@3.0.1): + resolution: {integrity: sha512-TwZ33Am0q4IIbvjhUOs+zpjtD/mXNmLmEgeTGuRq01QzulLHuPhaBTTAC/DHu6kFx3wDgmgpAlaRuCHfTcXv8g==} engines: {node: '>=18.0'} peerDependencies: '@docusaurus/types': '*' @@ -4944,8 +5092,8 @@ packages: '@docusaurus/types': optional: true dependencies: - '@docusaurus/logger': 3.0.0 - '@docusaurus/types': 3.0.0(react-dom@18.2.0)(react@18.2.0) + '@docusaurus/logger': 3.0.1 + '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@svgr/webpack': 6.5.1 escape-string-regexp: 4.0.0 file-loader: 6.2.0(webpack@5.89.0) @@ -5710,7 +5858,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 18.16.18 + '@types/node': 20.10.5 '@types/yargs': 17.0.31 chalk: 4.1.2 @@ -5826,14 +5974,14 @@ packages: - supports-color dev: false - /@mdx-js/react@3.0.0(@types/react@18.2.21)(react@18.2.0): + /@mdx-js/react@3.0.0(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ==} peerDependencies: '@types/react': '>=16' react: '>=16' dependencies: '@types/mdx': 2.0.10 - '@types/react': 18.2.21 + '@types/react': 18.2.45 react: 18.2.0 dev: false @@ -5876,23 +6024,6 @@ packages: - supports-color dev: false - /@microlink/react-json-view@1.23.0(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-HYJ1nsfO4/qn8afnAMhuk7+5a1vcjEaS8Gm5Vpr1SqdHDY0yLBJGpA+9DvKyxyVKaUkXzKXt3Mif9RcmFSdtYg==} - peerDependencies: - react: '>= 15' - react-dom: '>= 15' - dependencies: - flux: 4.0.4(react@18.2.0) - react: 18.2.0 - react-base16-styling: 0.6.0 - react-dom: 18.2.0(react@18.2.0) - react-lifecycles-compat: 3.0.4 - react-textarea-autosize: 8.3.4(@types/react@18.2.41)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - encoding - dev: false - /@motionone/animation@10.16.3: resolution: {integrity: sha512-QUGWpLbMFLhyqKlngjZhjtxM8IqiJQjLK0DF+XOF6od9nhSvlaeEpOY/UMCRVcZn/9Tr2rZO22EkuCIjYdI74g==} dependencies: @@ -6254,6 +6385,7 @@ packages: picocolors: 1.0.0 tiny-glob: 0.2.9 tslib: 2.6.2 + dev: false /@pnpm/config.env-replace@1.1.0: resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} @@ -6504,6 +6636,25 @@ packages: typescript: 4.9.5 dev: true + /@rollup/plugin-typescript@11.1.3(rollup@2.79.1)(typescript@5.3.3): + resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@2.79.1) + resolve: 1.22.2 + rollup: 2.79.1 + typescript: 5.3.3 + dev: true + /@rollup/pluginutils@3.1.0(rollup@2.79.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} @@ -6698,6 +6849,19 @@ packages: '@sinonjs/commons': 3.0.0 dev: true + /@slorber/react-ideal-image@0.0.12(prop-types@15.8.1)(react-waypoint@10.3.0)(react@18.2.0): + resolution: {integrity: sha512-u8KiDTEkMA7/KAeA5ywg/P7YG4zuKhWtswfVZDH8R8HXgQsFcHIYU2WaQnGuK/Du7Wdj90I+SdFmajSGFRvoKA==} + engines: {node: '>= 8.9.0', npm: '> 3'} + peerDependencies: + prop-types: '>=15' + react: '>=0.14.x' + react-waypoint: '>=9.0.2' + dependencies: + prop-types: 15.8.1 + react: 18.2.0 + react-waypoint: 10.3.0(react@18.2.0) + dev: false + /@slorber/remark-comment@1.0.0: resolution: {integrity: sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==} dependencies: @@ -7137,13 +7301,13 @@ packages: resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} dependencies: '@types/connect': 3.4.38 - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/bonjour@3.5.11: resolution: {integrity: sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/chai@4.3.5: @@ -7154,13 +7318,13 @@ packages: resolution: {integrity: sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==} dependencies: '@types/express-serve-static-core': 4.17.36 - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/cross-spawn@6.0.3: @@ -7221,7 +7385,7 @@ packages: /@types/express-serve-static-core@4.17.36: resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 '@types/qs': 6.9.8 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -7247,7 +7411,7 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: true /@types/graceful-fs@4.1.6: @@ -7284,7 +7448,7 @@ packages: /@types/http-proxy@1.17.12: resolution: {integrity: sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/is-ci@3.0.0: @@ -7347,7 +7511,7 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/lodash.clonedeep@4.5.7: @@ -7428,7 +7592,7 @@ packages: /@types/mute-stream@0.0.1: resolution: {integrity: sha512-0yQLzYhCqGz7CQPE3iDmYjhb7KMBFOP+tBkyw+/Y2YyDI5wpS7itXXxneN1zSsUwWx3Ji6YiVYrhAnpQGS/vkw==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.6.0 dev: false /@types/node@12.20.55: @@ -7441,14 +7605,13 @@ packages: /@types/node@18.16.18: resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} - /@types/node@20.6.0: - resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} - dev: false - - /@types/node@20.9.2: - resolution: {integrity: sha512-WHZXKFCEyIUJzAwh3NyyTHYSR35SevJ6mZ1nWwJafKtiQbqRTIKSRcw3Ma3acqgsent3RRDqeVwpHntMk+9irg==} + /@types/node@20.10.5: + resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==} dependencies: undici-types: 5.26.5 + + /@types/node@20.6.0: + resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} dev: false /@types/normalize-package-data@2.4.1: @@ -7478,7 +7641,6 @@ packages: /@types/prop-types@15.7.10: resolution: {integrity: sha512-mxSnDQxPqsZxmeShFH+uwQ4kO4gcJcGahjjMFeLbKE95IAZiiZyiEepGZjtXJ7hN/yfu0bu9xN2ajcU0JcxX6A==} - dev: true /@types/prop-types@15.7.11: resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} @@ -7523,7 +7685,7 @@ packages: resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.21 + '@types/react': 18.2.37 /@types/react@18.2.12: resolution: {integrity: sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==} @@ -7545,7 +7707,14 @@ packages: '@types/prop-types': 15.7.10 '@types/scheduler': 0.16.6 csstype: 3.1.2 - dev: true + + /@types/react@18.2.45: + resolution: {integrity: sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==} + dependencies: + '@types/prop-types': 15.7.11 + '@types/scheduler': 0.16.8 + csstype: 3.1.2 + dev: false /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} @@ -7556,7 +7725,7 @@ packages: /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/retry@0.12.0: @@ -7566,7 +7735,7 @@ packages: /@types/sax@1.2.7: resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} dependencies: - '@types/node': 18.16.18 + '@types/node': 17.0.45 dev: false /@types/scheduler@0.16.3: @@ -7574,7 +7743,6 @@ packages: /@types/scheduler@0.16.6: resolution: {integrity: sha512-Vlktnchmkylvc9SnwwwozTv04L/e1NykF5vgoQ0XTmI8DD+wxfjQuHuvHS3p0r2jz2x2ghPs2h1FVeDirIteWA==} - dev: true /@types/scheduler@0.16.8: resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} @@ -7597,7 +7765,7 @@ packages: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/serve-index@1.9.1: @@ -7611,13 +7779,13 @@ packages: dependencies: '@types/http-errors': 2.0.2 '@types/mime': 3.0.1 - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/sockjs@0.3.33: resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/stack-utils@2.0.1: @@ -7653,7 +7821,7 @@ packages: /@types/ws@8.5.5: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/xml2js@0.4.11: @@ -7680,7 +7848,7 @@ packages: dependencies: '@types/yargs-parser': 21.0.3 - /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7692,29 +7860,29 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.3) '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.3) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.2 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@5.3.3) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -7739,6 +7907,26 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: false + + /@typescript-eslint/parser@5.59.11(eslint@8.48.0)(typescript@5.3.3): + resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.59.11 + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.3) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.48.0 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color /@typescript-eslint/scope-manager@5.59.11: resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} @@ -7755,7 +7943,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.7 dev: true - /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7765,12 +7953,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.3) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.3) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true @@ -7803,8 +7991,29 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: false + + /@typescript-eslint/typescript-estree@5.59.11(typescript@5.3.3): + resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/visitor-keys': 5.59.11 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.2 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color - /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): + /@typescript-eslint/typescript-estree@5.59.7(typescript@5.3.3): resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7819,13 +8028,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7836,7 +8045,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.3) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.2 @@ -7845,7 +8054,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7856,7 +8065,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.7 '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.3.3) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.4 @@ -9299,10 +9508,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false - /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -9379,6 +9584,10 @@ packages: dependencies: deep-equal: 2.2.1 + /b4a@1.6.4: + resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} + dev: false + /babel-jest@29.5.0(@babel/core@7.23.3): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9592,10 +9801,6 @@ packages: safe-buffer: 5.2.1 dev: false - /base16@1.0.0: - resolution: {integrity: sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==} - dev: false - /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false @@ -9813,6 +10018,17 @@ packages: node-releases: 2.0.13 update-browserslist-db: 1.0.13(browserslist@4.22.1) + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001571 + electron-to-chromium: 1.4.616 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + dev: true + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -9974,7 +10190,7 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.5.2 + tslib: 2.6.2 dev: false /camelcase-keys@6.2.2: @@ -10011,6 +10227,10 @@ packages: /caniuse-lite@1.0.30001563: resolution: {integrity: sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==} + /caniuse-lite@1.0.30001571: + resolution: {integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==} + dev: true + /case@1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} engines: {node: '>= 0.8.0'} @@ -10133,6 +10353,10 @@ packages: optionalDependencies: fsevents: 2.3.3 + /chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + dev: false + /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} @@ -10294,6 +10518,11 @@ packages: engines: {node: '>=6'} dev: false + /clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + dev: false + /cluster-key-slot@1.1.2: resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} engines: {node: '>=0.10.0'} @@ -10329,6 +10558,21 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: false + + /color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + dev: false + /colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} dev: false @@ -10454,6 +10698,10 @@ packages: engines: {node: ^14.18.0 || >=16.10.0} dev: false + /consolidated-events@2.0.2: + resolution: {integrity: sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==} + dev: false + /content-disposition@0.5.2: resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} engines: {node: '>= 0.6'} @@ -10612,7 +10860,7 @@ packages: dependencies: '@types/node': 18.16.18 cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.3.3) typescript: 4.9.5 dev: true @@ -10647,7 +10895,7 @@ packages: path-type: 4.0.0 dev: true - /cosmiconfig@8.3.6(typescript@4.9.5): + /cosmiconfig@8.3.6(typescript@5.3.3): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -10660,7 +10908,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 4.9.5 + typescript: 5.3.3 dev: false /cosmjs-types@0.4.1: @@ -11202,6 +11450,7 @@ packages: /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} + dev: false /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} @@ -11295,6 +11544,11 @@ packages: hasBin: true dev: false + /detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + dev: false + /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -11530,6 +11784,10 @@ packages: /electron-to-chromium@1.4.588: resolution: {integrity: sha512-soytjxwbgcCu7nh5Pf4S2/4wa6UIu+A3p03U2yVr53qGxi1/VTR3ENI+p50v+UxqqZAfl48j3z55ud7VHIOr9w==} + /electron-to-chromium@1.4.616: + resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} + dev: true + /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -11751,7 +12009,7 @@ packages: eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) @@ -11761,7 +12019,7 @@ packages: - supports-color dev: false - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -11774,19 +12032,19 @@ packages: '@babel/core': 7.23.3 '@babel/eslint-parser': 7.21.8(@babel/core@7.23.3)(eslint@8.48.0) '@rushstack/eslint-patch': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.3) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.48.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.3.3) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) - eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@4.9.5) - typescript: 4.9.5 + eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -11815,7 +12073,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.15.0 eslint: 8.48.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) get-tsconfig: 4.5.0 globby: 13.1.3 is-core-module: 2.12.1 @@ -11823,8 +12081,9 @@ packages: synckit: 0.8.5 transitivePeerDependencies: - supports-color + dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -11845,11 +12104,10 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.3) debug: 3.2.7 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) transitivePeerDependencies: - supports-color @@ -11868,7 +12126,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -11878,7 +12136,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.3) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -11886,7 +12144,7 @@ packages: doctrine: 2.1.0 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0) has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 @@ -11900,7 +12158,7 @@ packages: - eslint-import-resolver-webpack - supports-color - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -11913,8 +12171,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@5.3.3) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -11992,13 +12250,13 @@ packages: semver: 6.3.1 string.prototype.matchall: 4.0.8 - /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@4.9.5): + /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@5.3.3): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.3) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -12281,7 +12539,7 @@ packages: resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} engines: {node: '>= 0.8'} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 require-like: 0.1.2 dev: false @@ -12347,6 +12605,11 @@ packages: engines: {node: '>= 0.8.0'} dev: true + /expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + dev: false + /expect@29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -12447,6 +12710,10 @@ packages: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true + /fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + dev: false + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} @@ -12518,32 +12785,6 @@ packages: bser: 2.1.1 dev: true - /fbemitter@3.0.0: - resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} - dependencies: - fbjs: 3.0.5 - transitivePeerDependencies: - - encoding - dev: false - - /fbjs-css-vars@1.0.2: - resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} - dev: false - - /fbjs@3.0.5: - resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} - dependencies: - cross-fetch: 3.1.8 - fbjs-css-vars: 1.0.2 - loose-envify: 1.4.0 - object-assign: 4.1.1 - promise: 7.3.1 - setimmediate: 1.0.5 - ua-parser-js: 1.0.37 - transitivePeerDependencies: - - encoding - dev: false - /fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} dependencies: @@ -12713,16 +12954,14 @@ packages: /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - /flux@4.0.4(react@18.2.0): - resolution: {integrity: sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==} + /follow-redirects@1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + engines: {node: '>=4.0'} peerDependencies: - react: ^15.0.2 || ^16.0.0 || ^17.0.0 - dependencies: - fbemitter: 3.0.0 - fbjs: 3.0.5 - react: 18.2.0 - transitivePeerDependencies: - - encoding + debug: '*' + peerDependenciesMeta: + debug: + optional: true dev: false /for-each@0.3.3: @@ -12730,7 +12969,7 @@ packages: dependencies: is-callable: 1.2.7 - /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@5.3.3)(webpack@5.89.0): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -12744,7 +12983,7 @@ packages: vue-template-compiler: optional: true dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.23.5 '@types/json-schema': 7.0.15 chalk: 4.1.2 chokidar: 3.5.3 @@ -12758,7 +12997,7 @@ packages: schema-utils: 2.7.0 semver: 7.5.4 tapable: 1.1.3 - typescript: 4.9.5 + typescript: 5.3.3 webpack: 5.89.0 dev: false @@ -12786,10 +13025,6 @@ packages: engines: {node: '>= 0.6'} dev: false - /fraction.js@4.3.6: - resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==} - dev: false - /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: false @@ -12959,6 +13194,7 @@ packages: /get-tsconfig@4.5.0: resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} + dev: false /git-clone@0.1.0: resolution: {integrity: sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==} @@ -12976,6 +13212,10 @@ packages: through2: 4.0.2 dev: true + /github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + dev: false + /github-slugger@1.5.0: resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} dev: false @@ -13075,6 +13315,7 @@ packages: /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: false /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -13110,6 +13351,7 @@ packages: /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: false /google-protobuf@3.21.2: resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} @@ -13844,6 +14086,10 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + /is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: false + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -13904,6 +14150,7 @@ packages: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true + dev: false /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} @@ -14189,6 +14436,7 @@ packages: engines: {node: '>=8'} dependencies: is-docker: 2.2.1 + dev: false /is-yarn-global@0.4.1: resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} @@ -14349,7 +14597,7 @@ packages: - supports-color dev: true - /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + /jest-cli@29.5.0(@types/node@20.10.5)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -14366,7 +14614,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@20.10.5)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -14412,7 +14660,47 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@20.10.5)(typescript@4.9.5) + transitivePeerDependencies: + - supports-color + dev: true + + /jest-config@29.5.0(@types/node@20.10.5)(ts-node@10.9.1): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.23.3 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.10.5 + babel-jest: 29.5.0(@babel/core@7.23.3) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1(@types/node@20.10.5)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true @@ -14672,7 +14960,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.16.18 + '@types/node': 20.10.5 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -14708,7 +14996,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -14726,13 +15014,13 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false - /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + /jest@29.5.0(@types/node@20.10.5)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -14745,7 +15033,7 @@ packages: '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-cli: 29.5.0(@types/node@20.10.5)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color @@ -15155,10 +15443,6 @@ packages: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} dev: false - /lodash.curry@4.1.1: - resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} - dev: false - /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} @@ -15166,10 +15450,6 @@ packages: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} dev: false - /lodash.flow@3.5.0: - resolution: {integrity: sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==} - dev: false - /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} dev: false @@ -16174,6 +16454,10 @@ packages: engines: {node: '>= 8.0.0'} dev: true + /mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + dev: false + /mlly@1.4.2: resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} dependencies: @@ -16271,6 +16555,10 @@ packages: hasBin: true dev: false + /napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + dev: false + /napi-wasm@1.1.0: resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==} dev: false @@ -16337,10 +16625,21 @@ packages: tslib: 2.6.2 dev: false + /node-abi@3.52.0: + resolution: {integrity: sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==} + engines: {node: '>=10'} + dependencies: + semver: 7.5.4 + dev: false + /node-addon-api@2.0.2: resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} dev: false + /node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} + dev: false + /node-addon-api@7.0.0: resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==} dev: false @@ -16404,6 +16703,10 @@ packages: /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -16592,6 +16895,7 @@ packages: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 + dev: false /opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} @@ -16759,7 +17063,7 @@ packages: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.5.2 + tslib: 2.6.2 dev: false /parent-module@1.0.1: @@ -17104,14 +17408,14 @@ packages: postcss-selector-parser: 6.0.13 dev: false - /postcss-loader@7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0): + /postcss-loader@7.3.3(postcss@8.4.31)(typescript@5.3.3)(webpack@5.89.0): resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} engines: {node: '>= 14.15.0'} peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 dependencies: - cosmiconfig: 8.3.6(typescript@4.9.5) + cosmiconfig: 8.3.6(typescript@5.3.3) jiti: 1.21.0 postcss: 8.4.31 semver: 7.5.4 @@ -17447,6 +17751,25 @@ packages: resolution: {integrity: sha512-UA9DX/OJwv6YwP9Vn7Ti/vF80XL+YA5H2l7BpCtUr3ya8LWHFzpiO5R+N7dN16ujpIxhekRFuOOF82bXX7K/lg==} dev: false + /prebuild-install@7.1.1: + resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + detect-libc: 2.0.2 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.52.0 + pump: 3.0.0 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + dev: false + /preferred-pm@3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} engines: {node: '>=10'} @@ -17533,12 +17856,6 @@ packages: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} dev: false - /promise@7.3.1: - resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} - dependencies: - asap: 2.0.6 - dev: false - /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -17577,7 +17894,7 @@ packages: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 20.10.3 + '@types/node': 18.16.18 long: 4.0.0 dev: false @@ -17601,6 +17918,13 @@ packages: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: false + /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: false @@ -17616,10 +17940,6 @@ packages: escape-goat: 4.0.0 dev: false - /pure-color@1.3.0: - resolution: {integrity: sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==} - dev: false - /pure-rand@6.0.2: resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} dev: true @@ -17697,6 +18017,10 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + /queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + dev: false + /queue@6.0.2: resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} dependencies: @@ -17756,7 +18080,7 @@ packages: strip-json-comments: 2.0.1 dev: false - /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): + /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@5.3.3)(webpack@5.89.0): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -17766,7 +18090,7 @@ packages: typescript: optional: true dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.23.5 address: 1.2.2 browserslist: 4.22.1 chalk: 4.1.2 @@ -17775,7 +18099,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@5.3.3)(webpack@5.89.0) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -17790,7 +18114,7 @@ packages: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - typescript: 4.9.5 + typescript: 5.3.3 webpack: 5.89.0 transitivePeerDependencies: - eslint @@ -17833,10 +18157,14 @@ packages: /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - dev: true - /react-lifecycles-compat@3.0.4: - resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + /react-json-view-lite@1.2.1(react@18.2.0): + resolution: {integrity: sha512-Itc0g86fytOmKZoIoJyGgvNqohWSbh3NXIKNgH6W6FT9PC1ck4xas1tT3Rr/b3UlFXyA9Jjaw9QSXdZy2JwGMQ==} + engines: {node: '>=14'} + peerDependencies: + react: ^16.13.1 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 dev: false /react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.89.0): @@ -18001,14 +18329,13 @@ packages: /react-waypoint@10.3.0(react@18.2.0): resolution: {integrity: sha512-iF1y2c1BsoXuEGz08NoahaLFIGI9gTUAAOKip96HUmylRT6DUtpgoBPjk/Y8dfcFVmfVDvUzWjNXpZyKTOV0SQ==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.23.4 + consolidated-events: 2.0.2 + prop-types: 15.8.1 react: 18.2.0 - use-composed-ref: 1.3.0(react@18.2.0) - use-latest: 1.2.1(@types/react@18.2.41)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' + react-is: 18.2.0 dev: false /react@18.2.0: @@ -18602,8 +18929,8 @@ packages: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} dev: false - /search-insights@2.11.0: - resolution: {integrity: sha512-Uin2J8Bpm3xaZi9Y8QibSys6uJOFZ+REMrf42v20AA3FUDUrshKkMEP6liJbMAHCm71wO6ls4mwAf7a3gFVxLw==} + /search-insights@2.13.0: + resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} dev: false /secp256k1@4.0.3: @@ -18792,6 +19119,21 @@ packages: /shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + /sharp@0.32.6: + resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} + engines: {node: '>=14.15.0'} + requiresBuild: true + dependencies: + color: 4.2.3 + detect-libc: 2.0.2 + node-addon-api: 6.1.0 + prebuild-install: 7.1.1 + semver: 7.5.4 + simple-get: 4.0.1 + tar-fs: 3.0.4 + tunnel-agent: 0.6.0 + dev: false + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -18852,6 +19194,24 @@ packages: engines: {node: '>=14'} dev: false + /simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + dev: false + + /simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + dev: false + + /simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + dependencies: + is-arrayish: 0.3.2 + dev: false + /sirv@2.0.3: resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} engines: {node: '>= 10'} @@ -19146,6 +19506,13 @@ packages: engines: {node: '>=10.0.0'} dev: false + /streamx@2.15.6: + resolution: {integrity: sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==} + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + dev: false + /strict-uri-encode@1.1.0: resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} engines: {node: '>=0.10.0'} @@ -19420,6 +19787,7 @@ packages: dependencies: '@pkgr/utils': 2.3.1 tslib: 2.6.2 + dev: false /tapable@1.1.3: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} @@ -19430,6 +19798,23 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + /tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: false + + /tar-fs@3.0.4: + resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} + dependencies: + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 3.1.6 + dev: false + /tar-stream@1.6.2: resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} engines: {node: '>= 0.8.0'} @@ -19443,6 +19828,25 @@ packages: xtend: 4.0.2 dev: false + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + + /tar-stream@3.1.6: + resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} + dependencies: + b4a: 1.6.4 + fast-fifo: 1.3.2 + streamx: 2.15.6 + dev: false + /term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -19565,6 +19969,7 @@ packages: dependencies: globalyzer: 0.1.0 globrex: 0.1.2 + dev: false /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} @@ -19635,7 +20040,7 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false - /ts-jest@29.1.0(@babel/core@7.23.5)(jest@29.5.0)(typescript@4.9.5): + /ts-jest@29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -19656,10 +20061,10 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest: 29.5.0(@types/node@20.10.5)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -19669,7 +20074,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.16.18)(typescript@4.9.5): + /ts-node@10.9.1(@types/node@18.16.18)(typescript@5.3.3): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -19695,6 +20100,37 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 + typescript: 5.3.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /ts-node@10.9.1(@types/node@20.10.5)(typescript@4.9.5): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 20.10.5 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -19726,6 +20162,16 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 + dev: false + + /tsutils@3.21.0(typescript@5.3.3): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.3.3 /tsyringe@4.8.0: resolution: {integrity: sha512-YB1FG+axdxADa3ncEtRnQCFq/M0lALGLxSZeVNbTU8NqhOVc51nnv2CISTcvc1kyv6EGPtXVr0v6lWeDxiijOA==} @@ -19842,6 +20288,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + /ua-parser-js@1.0.37: resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} dev: false @@ -19883,6 +20334,9 @@ packages: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} dev: false + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + /unenv@1.8.0: resolution: {integrity: sha512-uIGbdCWZfhRRmyKj1UioCepQ0jpq638j/Cf0xFTn4zD1nGJ2lSdzYHLzfdXN791oo/0juUiSWW1fBklXMTsuqg==} dependencies: @@ -20087,6 +20541,17 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 + /update-browserslist-db@1.0.13(browserslist@4.22.2): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /update-notifier@6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} engines: {node: '>=14.16'} @@ -20499,20 +20964,6 @@ packages: - zod dev: false - /wait-on@7.2.0: - resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==} - engines: {node: '>=12.0.0'} - hasBin: true - dependencies: - axios: 1.6.2 - joi: 17.11.0 - lodash: 4.17.21 - minimist: 1.2.8 - rxjs: 7.8.1 - transitivePeerDependencies: - - debug - dev: false - /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: From 7d6ca8b055a098e80c3bc04c3ddf108f0b61616a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 26 Dec 2023 00:34:21 +0800 Subject: [PATCH 375/433] chore: [ci] release (alpha) (#462) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 5 ++++- examples/nextjs/CHANGELOG.md | 9 +++++++++ examples/nextjs/package.json | 2 +- examples/nodejs-file-management/CHANGELOG.md | 10 ++++++++++ examples/nodejs-file-management/package.json | 4 ++-- packages/js-sdk/CHANGELOG.md | 14 ++++++++++++++ packages/js-sdk/package.json | 2 +- 7 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 examples/nodejs-file-management/CHANGELOG.md diff --git a/.changeset/pre.json b/.changeset/pre.json index 57560062..abeac10f 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -12,5 +12,8 @@ "@bnb-chain/reed-solomon": "1.1.2", "@bnb-chain/greenfield-zk-crypto": "1.0.0" }, - "changesets": [] + "changesets": [ + "little-melons-care", + "twelve-mice-grin" + ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 1777c0ea..bd34806f 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/wallet +## 0.0.24-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7), + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7)]: + - @bnb-chain/greenfield-js-sdk@1.2.0-alpha.0 + ## 0.0.23 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 963935e6..573c40d4 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.23", + "version": "0.0.24-alpha.0", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs-file-management/CHANGELOG.md b/examples/nodejs-file-management/CHANGELOG.md new file mode 100644 index 00000000..a9dbe9f3 --- /dev/null +++ b/examples/nodejs-file-management/CHANGELOG.md @@ -0,0 +1,10 @@ +# @demo/nodejs + +## 0.0.2-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7), + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7)]: + - @bnb-chain/greenfield-js-sdk@1.2.0-alpha.0 diff --git a/examples/nodejs-file-management/package.json b/examples/nodejs-file-management/package.json index 57491f74..ad3e9113 100644 --- a/examples/nodejs-file-management/package.json +++ b/examples/nodejs-file-management/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.1", + "version": "0.0.2-alpha.0", "type": "commonjs", "private": true, "scripts": { @@ -10,7 +10,7 @@ "author": "", "license": "ISC", "dependencies": { - "@bnb-chain/greenfield-js-sdk": "^1.1.2", + "@bnb-chain/greenfield-js-sdk": "^1.2.0-alpha.0", "@bnb-chain/reed-solomon": "^1.1.1", "dotenv": "^16.3.1", "mime-types": "^2.1.35" diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index e40e6a35..2141ba99 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,19 @@ # @bnb-chain/greenfield-js-sdk +## 1.2.0-alpha.0 + +### Minor Changes + +- [#461](https://github.com/bnb-chain/greenfield-js-sdk/pull/461) + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add SetTag API + +### Patch Changes + +- [#461](https://github.com/bnb-chain/greenfield-js-sdk/pull/461) + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Upgrade cosmos types to 0.4.0-alpha.30 + ## 1.1.2 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 705d341a..0333a321 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.1.2", + "version": "1.2.0-alpha.0", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From b41fdf057b7b4b0f416a74fb04ed0793c52c51f7 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Tue, 26 Dec 2023 00:49:43 +0800 Subject: [PATCH 376/433] chore: Pnpm install --no-frozen-lockfile --- .changeset/itchy-schools-doubt.md | 5 + pnpm-lock.yaml | 421 +++++++++--------------------- 2 files changed, 135 insertions(+), 291 deletions(-) create mode 100644 .changeset/itchy-schools-doubt.md diff --git a/.changeset/itchy-schools-doubt.md b/.changeset/itchy-schools-doubt.md new file mode 100644 index 00000000..a76ce2b9 --- /dev/null +++ b/.changeset/itchy-schools-doubt.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +chore: pnpm --no-frozen-lockfile diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 86f45157..db71b048 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,7 +43,7 @@ importers: version: 3.0.2(rollup@2.79.1) '@rollup/plugin-typescript': specifier: ^11.1.3 - version: 11.1.3(rollup@2.79.1)(typescript@5.3.3) + version: 11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5) '@types/chai': specifier: ^4.3.5 version: 4.3.5 @@ -61,10 +61,10 @@ importers: version: 18.2.5 '@typescript-eslint/eslint-plugin': specifier: ^5.59.11 - version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.3) + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) '@typescript-eslint/parser': specifier: ^5.59.11 - version: 5.59.11(eslint@8.48.0)(typescript@5.3.3) + version: 5.59.11(eslint@8.48.0)(typescript@4.9.5) chai: specifier: ^4.3.7 version: 4.3.7 @@ -76,7 +76,7 @@ importers: version: 8.48.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.3.3) + version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5) eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.1(eslint@8.48.0)(prettier@2.8.8) @@ -109,16 +109,16 @@ importers: dependencies: '@docusaurus/core': specifier: 3.0.1 - version: 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + version: 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/plugin-ideal-image': specifier: ^3.0.1 - version: 3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + version: 3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/preset-classic': specifier: 3.0.1 - version: 3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) + version: 3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) '@mdx-js/react': specifier: ^3.0.0 - version: 3.0.0(@types/react@18.2.45)(react@18.2.0) + version: 3.0.0(@types/react@18.2.21)(react@18.2.0) clsx: specifier: ^1.2.1 version: 1.2.1 @@ -290,7 +290,7 @@ importers: examples/nodejs-file-management: dependencies: '@bnb-chain/greenfield-js-sdk': - specifier: ^1.1.2 + specifier: ^1.2.0-alpha.0 version: link:../../packages/js-sdk '@bnb-chain/reed-solomon': specifier: ^1.1.1 @@ -480,7 +480,7 @@ importers: version: 16.0.3 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@20.10.5)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) mime: specifier: ^3.0.0 version: 3.0.0 @@ -489,7 +489,7 @@ importers: version: 29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.10.5)(typescript@4.9.5) + version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.2 @@ -3952,7 +3952,7 @@ packages: lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.3.3) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -4212,7 +4212,7 @@ packages: resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@docsearch/react@3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): + /@docsearch/react@3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -4232,7 +4232,7 @@ packages: '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0) '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) '@docsearch/css': 3.5.2 - '@types/react': 18.2.45 + '@types/react': 18.2.21 algoliasearch: 4.20.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4241,7 +4241,7 @@ packages: - '@algolia/client-search' dev: false - /@docusaurus/core@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/core@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-CXrLpOnW+dJdSv8M5FAJ3JBwXtL6mhUWxFA8aS0ozK6jBG/wgxERk5uvH28fCeFxOGbAT9v1e9dOMo1X2IEVhQ==} engines: {node: '>=18.0'} hasBin: true @@ -4296,10 +4296,10 @@ packages: lodash: 4.17.21 mini-css-extract-plugin: 2.7.6(webpack@5.89.0) postcss: 8.4.31 - postcss-loader: 7.3.3(postcss@8.4.31)(typescript@5.3.3)(webpack@5.89.0) + postcss-loader: 7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0) prompts: 2.4.2 react: 18.2.0 - react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@5.3.3)(webpack@5.89.0) + react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) react-dom: 18.2.0(react@18.2.0) react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) @@ -4446,7 +4446,7 @@ packages: '@docusaurus/react-loadable': 5.5.2(react@18.2.0) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@types/history': 4.7.11 - '@types/react': 18.2.45 + '@types/react': 18.2.21 '@types/react-router-config': 5.0.10 '@types/react-router-dom': 5.3.3 react: 18.2.0 @@ -4460,14 +4460,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-blog@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-content-blog@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-cLOvtvAyaMQFLI8vm4j26svg3ktxMPSXpuUJ7EERKoGbfpJSsgtowNHcRsaBVmfuCsRSk1HZ/yHBsUkTmHFEsg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/logger': 3.0.1 '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) @@ -4504,14 +4504,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-content-docs@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-dRfAOA5Ivo+sdzzJGXEu33yAtvGg8dlZkvt/NEJ7nwi1F2j4LEdsxtfX2GKeETB2fP6XoGNSQnFXqa2NYGrHFg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/logger': 3.0.1 '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) @@ -4546,14 +4546,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-content-pages@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-oP7PoYizKAXyEttcvVzfX3OoBIXEmXTMzCdfmC4oSwjG4SPcJsRge3mmI6O8jcZBgUPjIzXD21bVGWEE1iu8gg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) @@ -4581,14 +4581,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-debug@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-09dxZMdATky4qdsZGzhzlUvvC+ilQ2hKbYF+wez+cM2mGo4qHbv8+qKXqxq0CQZyimwlAOWQLoSozIXU0g0i7g==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) fs-extra: 11.1.1 @@ -4614,14 +4614,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-google-analytics@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-jwseSz1E+g9rXQwDdr0ZdYNjn8leZBnKPjjQhMBEiwDoenL3JYFcNW0+p0sWoVF/f2z5t7HkKA+cYObrUh18gg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) react: 18.2.0 @@ -4645,14 +4645,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-google-gtag@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-UFTDvXniAWrajsulKUJ1DB6qplui1BlKLQZjX4F7qS/qfJ+qkKqSkhJ/F4VuGQ2JYeZstYb+KaUzUzvaPK1aRQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) '@types/gtag.js': 0.0.12 @@ -4677,14 +4677,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-google-tag-manager@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-IPFvuz83aFuheZcWpTlAdiiX1RqWIHM+OH8wS66JgwAKOiQMR3+nLywGjkLV4bp52x7nCnwhNk1rE85Cpy/CIw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) react: 18.2.0 @@ -4708,7 +4708,7 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-ideal-image@3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-ideal-image@3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-IvAUpEIz6v1/fVz6UTdQY12pYIE5geNFtsuKpsULpMaotwYf3Gs7acXjQog4qquKkc65yV5zuvMj8BZMHEwLyQ==} engines: {node: '>=18.0'} peerDependencies: @@ -4719,7 +4719,7 @@ packages: jimp: optional: true dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/lqip-loader': 3.0.1(webpack@5.89.0) '@docusaurus/responsive-loader': 1.7.0(sharp@0.32.6) '@docusaurus/theme-translations': 3.0.1 @@ -4751,14 +4751,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/plugin-sitemap@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-xARiWnjtVvoEniZudlCq5T9ifnhCu/GAZ5nA7XgyLfPcNpHQa241HZdsTlLtVcecEVVdllevBKOp7qknBBaMGw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/logger': 3.0.1 '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) @@ -4787,25 +4787,25 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): + /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): resolution: {integrity: sha512-il9m9xZKKjoXn6h0cRcdnt6wce0Pv1y5t4xk2Wx7zBGhKG1idu4IFHtikHlD0QPuZ9fizpXspXcTzjL5FXc1Gw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-debug': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-google-analytics': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-google-gtag': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-google-tag-manager': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-sitemap': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-debug': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-google-analytics': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-google-gtag': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-google-tag-manager': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-sitemap': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4835,7 +4835,7 @@ packages: peerDependencies: react: '*' dependencies: - '@types/react': 18.2.37 + '@types/react': 18.2.21 prop-types: 15.8.1 react: 18.2.0 @@ -4855,26 +4855,26 @@ packages: sharp: 0.32.6 dev: false - /@docusaurus/theme-classic@3.0.1(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/theme-classic@3.0.1(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-XD1FRXaJiDlmYaiHHdm27PNhhPboUah9rqIH0lMpBt5kYtsGjJzhqa27KuZvHLzOP2OEpqd2+GZ5b6YPq7Q05Q==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/theme-translations': 3.0.1 '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) - '@mdx-js/react': 3.0.0(@types/react@18.2.45)(react@18.2.0) + '@mdx-js/react': 3.0.0(@types/react@18.2.21)(react@18.2.0) clsx: 2.0.0 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.43 @@ -4908,7 +4908,7 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@docusaurus/theme-common@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-cr9TOWXuIOL0PUfuXv6L5lPlTgaphKP+22NdVBOYah5jSq5XAAulJTjfe+IfLsEG4L7lJttLbhW7LXDFSAI7Ag==} engines: {node: '>=18.0'} peerDependencies: @@ -4917,9 +4917,9 @@ packages: dependencies: '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) '@types/history': 4.7.11 @@ -4951,18 +4951,18 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.45)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.3.3): + /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): resolution: {integrity: sha512-DDiPc0/xmKSEdwFkXNf1/vH1SzJPzuJBar8kMcBbDAZk/SAmo/4lf6GU2drou4Ae60lN2waix+jYWTWcJRahSA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docsearch/react': 3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/logger': 3.0.1 - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/theme-translations': 3.0.1 '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) @@ -5036,7 +5036,7 @@ packages: react-dom: ^18.0.0 dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.45 + '@types/react': 18.2.21 commander: 5.1.0 joi: 17.11.0 react: 18.2.0 @@ -5974,14 +5974,14 @@ packages: - supports-color dev: false - /@mdx-js/react@3.0.0(@types/react@18.2.45)(react@18.2.0): + /@mdx-js/react@3.0.0(@types/react@18.2.21)(react@18.2.0): resolution: {integrity: sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ==} peerDependencies: '@types/react': '>=16' react: '>=16' dependencies: '@types/mdx': 2.0.10 - '@types/react': 18.2.45 + '@types/react': 18.2.21 react: 18.2.0 dev: false @@ -6385,7 +6385,6 @@ packages: picocolors: 1.0.0 tiny-glob: 0.2.9 tslib: 2.6.2 - dev: false /@pnpm/config.env-replace@1.1.0: resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} @@ -6636,25 +6635,6 @@ packages: typescript: 4.9.5 dev: true - /@rollup/plugin-typescript@11.1.3(rollup@2.79.1)(typescript@5.3.3): - resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.14.0||^3.0.0 - tslib: '*' - typescript: '>=3.7.0' - peerDependenciesMeta: - rollup: - optional: true - tslib: - optional: true - dependencies: - '@rollup/pluginutils': 5.0.2(rollup@2.79.1) - resolve: 1.22.2 - rollup: 2.79.1 - typescript: 5.3.3 - dev: true - /@rollup/pluginutils@3.1.0(rollup@2.79.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} @@ -7641,6 +7621,7 @@ packages: /@types/prop-types@15.7.10: resolution: {integrity: sha512-mxSnDQxPqsZxmeShFH+uwQ4kO4gcJcGahjjMFeLbKE95IAZiiZyiEepGZjtXJ7hN/yfu0bu9xN2ajcU0JcxX6A==} + dev: true /@types/prop-types@15.7.11: resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} @@ -7685,7 +7666,7 @@ packages: resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.37 + '@types/react': 18.2.21 /@types/react@18.2.12: resolution: {integrity: sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==} @@ -7707,14 +7688,7 @@ packages: '@types/prop-types': 15.7.10 '@types/scheduler': 0.16.6 csstype: 3.1.2 - - /@types/react@18.2.45: - resolution: {integrity: sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==} - dependencies: - '@types/prop-types': 15.7.11 - '@types/scheduler': 0.16.8 - csstype: 3.1.2 - dev: false + dev: true /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} @@ -7743,6 +7717,7 @@ packages: /@types/scheduler@0.16.6: resolution: {integrity: sha512-Vlktnchmkylvc9SnwwwozTv04L/e1NykF5vgoQ0XTmI8DD+wxfjQuHuvHS3p0r2jz2x2ghPs2h1FVeDirIteWA==} + dev: true /@types/scheduler@0.16.8: resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} @@ -7848,7 +7823,7 @@ packages: dependencies: '@types/yargs-parser': 21.0.3 - /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.3): + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7860,29 +7835,29 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@5.3.3) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.2 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@5.3.3): + /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -7907,26 +7882,6 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: false - - /@typescript-eslint/parser@5.59.11(eslint@8.48.0)(typescript@5.3.3): - resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.3) - debug: 4.3.4(supports-color@8.1.1) - eslint: 8.48.0 - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color /@typescript-eslint/scope-manager@5.59.11: resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} @@ -7943,7 +7898,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.7 dev: true - /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@5.3.3): + /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7953,12 +7908,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.3) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true @@ -7991,29 +7946,8 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: false - - /@typescript-eslint/typescript-estree@5.59.11(typescript@5.3.3): - resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/visitor-keys': 5.59.11 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.2 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color - /@typescript-eslint/typescript-estree@5.59.7(typescript@5.3.3): + /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -8028,13 +7962,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@5.3.3): + /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -8045,7 +7979,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.2 @@ -8054,7 +7988,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@5.3.3): + /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -8065,7 +7999,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.7 '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.4 @@ -10860,7 +10794,7 @@ packages: dependencies: '@types/node': 18.16.18 cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.3.3) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) typescript: 4.9.5 dev: true @@ -10895,7 +10829,7 @@ packages: path-type: 4.0.0 dev: true - /cosmiconfig@8.3.6(typescript@5.3.3): + /cosmiconfig@8.3.6(typescript@4.9.5): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -10908,7 +10842,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 5.3.3 + typescript: 4.9.5 dev: false /cosmjs-types@0.4.1: @@ -11450,7 +11384,6 @@ packages: /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} - dev: false /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} @@ -12009,7 +11942,7 @@ packages: eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) @@ -12019,7 +11952,7 @@ packages: - supports-color dev: false - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.3.3): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -12032,19 +11965,19 @@ packages: '@babel/core': 7.23.3 '@babel/eslint-parser': 7.21.8(@babel/core@7.23.3)(eslint@8.48.0) '@rushstack/eslint-patch': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.3) - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.48.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.3.3) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) - eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@5.3.3) - typescript: 5.3.3 + eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -12073,7 +12006,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.15.0 eslint: 8.48.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) get-tsconfig: 4.5.0 globby: 13.1.3 is-core-module: 2.12.1 @@ -12081,9 +12014,8 @@ packages: synckit: 0.8.5 transitivePeerDependencies: - supports-color - dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -12104,10 +12036,11 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 3.2.7 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) transitivePeerDependencies: - supports-color @@ -12126,7 +12059,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -12136,7 +12069,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -12144,7 +12077,7 @@ packages: doctrine: 2.1.0 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 @@ -12158,7 +12091,7 @@ packages: - eslint-import-resolver-webpack - supports-color - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.3.3): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -12171,8 +12104,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.3.3) - '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -12250,13 +12183,13 @@ packages: semver: 6.3.1 string.prototype.matchall: 4.0.8 - /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@5.3.3): + /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.3.3) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -12969,7 +12902,7 @@ packages: dependencies: is-callable: 1.2.7 - /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@5.3.3)(webpack@5.89.0): + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -12997,7 +12930,7 @@ packages: schema-utils: 2.7.0 semver: 7.5.4 tapable: 1.1.3 - typescript: 5.3.3 + typescript: 4.9.5 webpack: 5.89.0 dev: false @@ -13194,7 +13127,6 @@ packages: /get-tsconfig@4.5.0: resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} - dev: false /git-clone@0.1.0: resolution: {integrity: sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==} @@ -13315,7 +13247,6 @@ packages: /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - dev: false /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -13351,7 +13282,6 @@ packages: /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - dev: false /google-protobuf@3.21.2: resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} @@ -14150,7 +14080,6 @@ packages: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true - dev: false /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} @@ -14436,7 +14365,6 @@ packages: engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - dev: false /is-yarn-global@0.4.1: resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} @@ -14597,7 +14525,7 @@ packages: - supports-color dev: true - /jest-cli@29.5.0(@types/node@20.10.5)(ts-node@10.9.1): + /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -14614,7 +14542,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@20.10.5)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -14660,47 +14588,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.10.5)(typescript@4.9.5) - transitivePeerDependencies: - - supports-color - dev: true - - /jest-config@29.5.0(@types/node@20.10.5)(ts-node@10.9.1): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.23.3 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.10.5 - babel-jest: 29.5.0(@babel/core@7.23.3) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.10.5)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true @@ -15020,7 +14908,7 @@ packages: supports-color: 8.1.1 dev: false - /jest@29.5.0(@types/node@20.10.5)(ts-node@10.9.1): + /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -15033,7 +14921,7 @@ packages: '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@20.10.5)(ts-node@10.9.1) + jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color @@ -16895,7 +16783,6 @@ packages: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 - dev: false /opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} @@ -17408,14 +17295,14 @@ packages: postcss-selector-parser: 6.0.13 dev: false - /postcss-loader@7.3.3(postcss@8.4.31)(typescript@5.3.3)(webpack@5.89.0): + /postcss-loader@7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0): resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} engines: {node: '>= 14.15.0'} peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 dependencies: - cosmiconfig: 8.3.6(typescript@5.3.3) + cosmiconfig: 8.3.6(typescript@4.9.5) jiti: 1.21.0 postcss: 8.4.31 semver: 7.5.4 @@ -18080,7 +17967,7 @@ packages: strip-json-comments: 2.0.1 dev: false - /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@5.3.3)(webpack@5.89.0): + /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -18099,7 +17986,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@5.3.3)(webpack@5.89.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -18114,7 +18001,7 @@ packages: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - typescript: 5.3.3 + typescript: 4.9.5 webpack: 5.89.0 transitivePeerDependencies: - eslint @@ -19787,7 +19674,6 @@ packages: dependencies: '@pkgr/utils': 2.3.1 tslib: 2.6.2 - dev: false /tapable@1.1.3: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} @@ -19969,7 +19855,6 @@ packages: dependencies: globalyzer: 0.1.0 globrex: 0.1.2 - dev: false /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} @@ -20064,7 +19949,7 @@ packages: '@babel/core': 7.23.6 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@20.10.5)(ts-node@10.9.1) + jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -20074,7 +19959,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.16.18)(typescript@5.3.3): + /ts-node@10.9.1(@types/node@18.16.18)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -20100,37 +19985,6 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.3.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - - /ts-node@10.9.1(@types/node@20.10.5)(typescript@4.9.5): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 20.10.5 - acorn: 8.10.0 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -20162,16 +20016,6 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 - dev: false - - /tsutils@3.21.0(typescript@5.3.3): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.3.3 /tsyringe@4.8.0: resolution: {integrity: sha512-YB1FG+axdxADa3ncEtRnQCFq/M0lALGLxSZeVNbTU8NqhOVc51nnv2CISTcvc1kyv6EGPtXVr0v6lWeDxiijOA==} @@ -20288,11 +20132,6 @@ packages: engines: {node: '>=14.17'} hasBin: true - /typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} - engines: {node: '>=14.17'} - hasBin: true - /ua-parser-js@1.0.37: resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} dev: false From 8260c6075d399ae3283b96dafb8944778c2ddbdc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 26 Dec 2023 00:52:54 +0800 Subject: [PATCH 377/433] chore: [ci] release (alpha) (#463) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 7 +++++++ packages/js-sdk/package.json | 2 +- 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index abeac10f..1e674182 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -13,6 +13,7 @@ "@bnb-chain/greenfield-zk-crypto": "1.0.0" }, "changesets": [ + "itchy-schools-doubt", "little-melons-care", "twelve-mice-grin" ] diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index bd34806f..8cbf22a0 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.24-alpha.1 + +### Patch Changes + +- Updated dependencies + [[`b41fdf0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b41fdf057b7b4b0f416a74fb04ed0793c52c51f7)]: + - @bnb-chain/greenfield-js-sdk@1.2.0-alpha.1 + ## 0.0.24-alpha.0 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 573c40d4..0bf15046 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.24-alpha.0", + "version": "0.0.24-alpha.1", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index 2141ba99..7823e39d 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,12 @@ # @bnb-chain/greenfield-js-sdk +## 1.2.0-alpha.1 + +### Patch Changes + +- [`b41fdf0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b41fdf057b7b4b0f416a74fb04ed0793c52c51f7) + Thanks [@rrr523](https://github.com/rrr523)! - chore: pnpm --no-frozen-lockfile + ## 1.2.0-alpha.0 ### Minor Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 0333a321..2d6c9f35 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.2.0-alpha.0", + "version": "1.2.0-alpha.1", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 24ec472b4507d0f3cba3c8fc55b4e9f924d5b1c7 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Tue, 26 Dec 2023 10:52:17 +0800 Subject: [PATCH 378/433] feat: Sp Api types (#464) --- .changeset/chatty-steaks-joke.md | 5 +++ .../src/components/bucket/create/index.tsx | 25 ++++++++++- packages/js-sdk/src/types/sp/Common.ts | 42 +++++++++++++++++++ 3 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 .changeset/chatty-steaks-joke.md diff --git a/.changeset/chatty-steaks-joke.md b/.changeset/chatty-steaks-joke.md new file mode 100644 index 00000000..58024574 --- /dev/null +++ b/.changeset/chatty-steaks-joke.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Sp Api Types diff --git a/examples/nextjs/src/components/bucket/create/index.tsx b/examples/nextjs/src/components/bucket/create/index.tsx index 62d31c84..5254db43 100644 --- a/examples/nextjs/src/components/bucket/create/index.tsx +++ b/examples/nextjs/src/components/bucket/create/index.tsx @@ -1,5 +1,7 @@ import { client, selectSp } from '@/client'; import { getOffchainAuthKeys } from '@/utils/offchainAuth'; +import { GRNToString, newBucketGRN, newGroupGRN } from '@bnb-chain/greenfield-js-sdk'; +import { add } from 'lodash'; import { useState } from 'react'; import { useAccount } from 'wagmi'; @@ -58,13 +60,32 @@ export const CreateBucket = () => { }, ); - const simulateInfo = await createBucketTx.simulate({ + const setTagTx = await client.storage.setTag({ + operator: address, + resource: GRNToString(newBucketGRN(createBucketInfo.bucketName)), + tags: { + tags: [ + { + key: 'x', + value: 'xx', + }, + { + key: 'y', + value: 'yy', + }, + ], + }, + }); + + const tx = await client.txClient.multiTx([createBucketTx, setTagTx]); + + const simulateInfo = await tx.simulate({ denom: 'BNB', }); console.log('simulateInfo', simulateInfo); - const res = await createBucketTx.broadcast({ + const res = await tx.broadcast({ denom: 'BNB', gasLimit: Number(simulateInfo?.gasLimit), gasPrice: simulateInfo?.gasPrice || '5000000000', diff --git a/packages/js-sdk/src/types/sp/Common.ts b/packages/js-sdk/src/types/sp/Common.ts index 644b81a3..a8d083c3 100644 --- a/packages/js-sdk/src/types/sp/Common.ts +++ b/packages/js-sdk/src/types/sp/Common.ts @@ -42,6 +42,12 @@ export interface BucketInfo { PaymentAddress: string; SourceType: number; Visibility: number; + Tags: { + Tags: { + Key: string; + Value: string; + }[]; + }; } export interface StreamRecord { @@ -85,9 +91,20 @@ export interface ObjectInfo { RedundancyType: number; SourceType: number; Visibility: number; + Tags: { + Tags: { + Key: string; + Value: string; + }[]; + }; } export function formatBucketInfo(o: BucketInfo): BucketInfo { + let tags = o.Tags.Tags || []; + if (!Array.isArray(tags)) { + tags = [tags]; + } + return { ...o, // PrimarySpId: Number(item.BucketInfo.PrimarySpId), @@ -97,10 +114,18 @@ export function formatBucketInfo(o: BucketInfo): BucketInfo { GlobalVirtualGroupFamilyId: Number(o.GlobalVirtualGroupFamilyId), SourceType: Number(o.SourceType), Visibility: Number(o.Visibility), + Tags: { + Tags: tags, + }, }; } export function formatObjectInfo(o: ObjectInfo): ObjectInfo { + let tags = o.Tags.Tags || []; + if (!Array.isArray(tags)) { + tags = [tags]; + } + return { ...o, CreateAt: Number(o.CreateAt), @@ -111,6 +136,9 @@ export function formatObjectInfo(o: ObjectInfo): ObjectInfo { RedundancyType: Number(o.RedundancyType), SourceType: Number(o.SourceType), Visibility: Number(o.Visibility), + Tags: { + Tags: tags, + }, }; } @@ -140,13 +168,27 @@ export interface GroupInfo { SourceType: number; Id: number; Extra: string; + Tags: { + Tags: { + Key: string; + Value: string; + }[]; + }; } export function formatGroupInfo(o: GroupInfo): GroupInfo { + let tags = o.Tags.Tags || []; + if (!Array.isArray(tags)) { + tags = [tags]; + } + return { ...o, SourceType: Number(o.SourceType), Id: Number(o.Id), + Tags: { + Tags: tags, + }, }; } From 5bd5677c3f2361d50e12138479e1e1ea59b48ebf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 26 Dec 2023 11:02:21 +0800 Subject: [PATCH 379/433] chore: [ci] release (alpha) (#465) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 8 ++++++++ packages/js-sdk/package.json | 2 +- 5 files changed, 19 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 1e674182..8d9547ba 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -13,6 +13,7 @@ "@bnb-chain/greenfield-zk-crypto": "1.0.0" }, "changesets": [ + "chatty-steaks-joke", "itchy-schools-doubt", "little-melons-care", "twelve-mice-grin" diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 8cbf22a0..3fb7d278 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.24-alpha.2 + +### Patch Changes + +- Updated dependencies + [[`24ec472`](https://github.com/bnb-chain/greenfield-js-sdk/commit/24ec472b4507d0f3cba3c8fc55b4e9f924d5b1c7)]: + - @bnb-chain/greenfield-js-sdk@1.2.0-alpha.2 + ## 0.0.24-alpha.1 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 0bf15046..0ded8acc 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.24-alpha.1", + "version": "0.0.24-alpha.2", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index 7823e39d..f869e455 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 1.2.0-alpha.2 + +### Patch Changes + +- [#464](https://github.com/bnb-chain/greenfield-js-sdk/pull/464) + [`24ec472`](https://github.com/bnb-chain/greenfield-js-sdk/commit/24ec472b4507d0f3cba3c8fc55b4e9f924d5b1c7) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Sp Api Types + ## 1.2.0-alpha.1 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 2d6c9f35..a857db0f 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.2.0-alpha.1", + "version": "1.2.0-alpha.2", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From d9e0b2f08810591f8e7e14b3da099fedb0dab958 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Fri, 29 Dec 2023 11:53:34 +0800 Subject: [PATCH 380/433] docs: Spell check (#467) --- ...w.mdx => calculating-checksum-is-slow.mdx} | 6 ++--- doc-site/docs/client/greenfield.mdx | 2 +- doc-site/docs/client/query-client.mdx | 22 +++++++++---------- doc-site/docs/client/sp-client.mdx | 4 ++-- doc-site/docs/client/tx-client.mdx | 6 ++--- doc-site/docs/getting-started/quick-start.mdx | 4 ++-- 6 files changed, 22 insertions(+), 22 deletions(-) rename doc-site/docs/FAQs/{caclute-checksum-is-slow.mdx => calculating-checksum-is-slow.mdx} (94%) diff --git a/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx b/doc-site/docs/FAQs/calculating-checksum-is-slow.mdx similarity index 94% rename from doc-site/docs/FAQs/caclute-checksum-is-slow.mdx rename to doc-site/docs/FAQs/calculating-checksum-is-slow.mdx index fe946163..5928e14e 100644 --- a/doc-site/docs/FAQs/caclute-checksum-is-slow.mdx +++ b/doc-site/docs/FAQs/calculating-checksum-is-slow.mdx @@ -1,6 +1,6 @@ --- id: checksums -title: cacluting checksum is slow +title: calculating checksum is slow order: 1 --- @@ -21,7 +21,7 @@ If not counting big files (how big is depending on the user's device), here are Note, you don't have to have webworker or worker_threads on to get faster performance. Because running worker also has performance loss. -When calculating small files, using core is faster than using worker. +When calculating small files, using the core is faster than using the worker. ## Usage @@ -126,7 +126,7 @@ If the file is larger, this method may cause the page to freeze when calculating -Nodejs can also be used in two ways, directly with core library, or with [worker_threads](https://nodejs.org/api/worker_threads.html) (calculating large files). +Nodejs can also be used in two ways, directly with the core library, or with [worker_threads](https://nodejs.org/api/worker_threads.html) (calculating large files). ```js title="core lib" const { ReedSolomon } = require('@bnb-chain/reed-solomon') diff --git a/doc-site/docs/client/greenfield.mdx b/doc-site/docs/client/greenfield.mdx index 2db85d11..cbb03c7b 100644 --- a/doc-site/docs/client/greenfield.mdx +++ b/doc-site/docs/client/greenfield.mdx @@ -26,7 +26,7 @@ const client = Client.create(GRPC_URL, String(GREEN_CHAIN_ID), { :::tip -Browser need load wasm manually. +The browser needs to load wasm manually. ::: diff --git a/doc-site/docs/client/query-client.mdx b/doc-site/docs/client/query-client.mdx index a8b0722b..83bee74f 100644 --- a/doc-site/docs/client/query-client.mdx +++ b/doc-site/docs/client/query-client.mdx @@ -4,7 +4,7 @@ title: 'Query Client' sidebar_position: 2 --- -It's actually an encapsulation of the +It's an encapsulation of the [Blockchain API](https://docs.bnbchain.org/greenfield-docs/docs/api/blockchain-rest). :::info @@ -22,7 +22,7 @@ await rpc.Account({ }); ``` -More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/account-info +More APIs: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/account-info ## getBankQueryClient @@ -34,7 +34,7 @@ await rpc.Balance({ }); ``` -More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/account-info +More APIs: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/account-info ## getBridgeQueryClient @@ -43,7 +43,7 @@ const rpc = await client.queryClient.getBridgeQueryClient(); await rpc.Params(); ``` -More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/bridge-params +More APIs: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/bridge-params ## getChallengeQueryClient @@ -52,7 +52,7 @@ const rpc = await client.queryClient.getChallengeQueryClient(); await rpc.Params(); ``` -More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/attested-challenge +More APIs: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/attested-challenge ## getCrosschainQueryClient @@ -70,7 +70,7 @@ const rpc = await client.queryClient.getFeeGrantQueryClient(); await rpc.Params(); ``` -More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/allowance +More APIs: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/allowance ## getGashubClient @@ -79,7 +79,7 @@ const rpc = await this.queryClient.getGashubClient(); await rpc.MsgGasParams(request); ``` -More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/msg-gas-params +More APIs: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/msg-gas-params ## getPaymentQueryClient @@ -88,7 +88,7 @@ const rpc = await this.queryClient.getPaymentQueryClient(); await rpc.Params(); ``` -More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/msg-gas-params +More APIs: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/msg-gas-params ## getSpQueryClient @@ -97,7 +97,7 @@ const rpc = await this.queryClient.getSpQueryClient(); await rpc.Params(); ``` -More apis: +More APIs: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/query-global-sp-store-price-by-time ## getStorageQueryClient @@ -109,7 +109,7 @@ await rpc.HeadBucketById({ }); ``` -More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/query-group-members-exist +More APIs: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/query-group-members-exist ## getVirtualGroupClient @@ -118,5 +118,5 @@ const rpc = await client.queryClient.getVirtualGroupClient(); await rpc.Params(); ``` -More apis: +More APIs: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/available-global-virtual-group-families diff --git a/doc-site/docs/client/sp-client.mdx b/doc-site/docs/client/sp-client.mdx index abed83b0..fbed06a9 100644 --- a/doc-site/docs/client/sp-client.mdx +++ b/doc-site/docs/client/sp-client.mdx @@ -7,7 +7,7 @@ title: 'Storage Provider Client' import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -The api related to storage provider are some troublesome. +The API related to storage providers is troublesome. ## AuthType @@ -43,7 +43,7 @@ This is the sp service information you want to use. ## OffchainAuth -If you use SDK in browser, you have to get it manually (because you can't get private key in +If you use SDK in the browser, you have to get it manually (because you can't get the private key in the browser). --> ## Sp Api Example diff --git a/doc-site/docs/client/tx-client.mdx b/doc-site/docs/client/tx-client.mdx index 7bd9e843..3bccfc51 100644 --- a/doc-site/docs/client/tx-client.mdx +++ b/doc-site/docs/client/tx-client.mdx @@ -11,20 +11,20 @@ import TabItem from '@theme/TabItem'; A transaction contains at least: -1. construct a transaction: The sdk already provides each transaction type +1. construct a transaction: The SDK already provides each transaction type 2. simulate: [txClient.simulate](#simulate) 3. broadcast [txClient.broadcast](#broadcast) ## simulate -Just Simulate a transaction and valid transaction. +Just Simulate a transaction and a valid transaction. | params | description | | ------ | ------------------------------------ | | denom | the coin denom to query balances for | ```jsx title="simulate tx" -// `tx` is a transaction constructed by the sdk +// `tx` is a transaction constructed by the SDK const simulateInfo = await tx.simulate({ denom: 'BNB', }); diff --git a/doc-site/docs/getting-started/quick-start.mdx b/doc-site/docs/getting-started/quick-start.mdx index c98152dd..f09e36d0 100644 --- a/doc-site/docs/getting-started/quick-start.mdx +++ b/doc-site/docs/getting-started/quick-start.mdx @@ -116,8 +116,8 @@ Create Bucket Tx: -### 5. Create a Object +### 5. Create an Object -Creat Object Tx / Upload File / Download File: +Create Object Tx / Upload File / Download File: From fb612b1d3eb0c265fb32d988dc39eb601d5d9f55 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Fri, 29 Dec 2023 13:52:29 +0800 Subject: [PATCH 381/433] chore: Pre Exit (#468) --- .changeset/pre.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 8d9547ba..8fe6ca75 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -1,5 +1,5 @@ { - "mode": "pre", + "mode": "exit", "tag": "alpha", "initialVersions": { "greenfield-js-sdk-docs": "0.0.0", From 4cf4abc348c080f73abd8578f0092ca6ab318fe3 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Fri, 29 Dec 2023 13:56:45 +0800 Subject: [PATCH 382/433] fix: SwapRows (#458) * fix: SwapRows * feat: Assert params --- .changeset/large-camels-hear.md | 5 +++++ packages/reed-solomon/src/index.js | 3 --- packages/reed-solomon/src/matrix.js | 2 +- packages/reed-solomon/src/web.adapter.js | 3 +++ 4 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 .changeset/large-camels-hear.md diff --git a/.changeset/large-camels-hear.md b/.changeset/large-camels-hear.md new file mode 100644 index 00000000..05b0c181 --- /dev/null +++ b/.changeset/large-camels-hear.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/reed-solomon': patch +--- + +fix: SwapRows diff --git a/packages/reed-solomon/src/index.js b/packages/reed-solomon/src/index.js index d4dd77d3..fa4e7ad2 100644 --- a/packages/reed-solomon/src/index.js +++ b/packages/reed-solomon/src/index.js @@ -178,9 +178,6 @@ export class ReedSolomon { }; } - /** - * @param {Array[{index, segChecksum, encodeDataHash}]} encodeShards - */ getChecksumsByEncodeShards(encodeShards) { let hashList = []; let segChecksumList = []; diff --git a/packages/reed-solomon/src/matrix.js b/packages/reed-solomon/src/matrix.js index d4fde507..84e1f731 100644 --- a/packages/reed-solomon/src/matrix.js +++ b/packages/reed-solomon/src/matrix.js @@ -125,7 +125,7 @@ function gaussianElimination(m) { if (m[r][r] === 0) { for (let rowBelow = r + 1; rowBelow < rows; rowBelow++) { if (m[rowBelow][r] !== 0) { - let err = SwapRows(r, rowBelow); + let err = SwapRows(m, r, rowBelow); if (err !== null) { return err; } diff --git a/packages/reed-solomon/src/web.adapter.js b/packages/reed-solomon/src/web.adapter.js index e400befc..3088736c 100644 --- a/packages/reed-solomon/src/web.adapter.js +++ b/packages/reed-solomon/src/web.adapter.js @@ -12,6 +12,9 @@ export class WebAdapterReedSolomon extends ReedSolomon { } async encodeInWorker(sourceData) { + if (!this.workerNum || !this.workers) + throw new Error('`initWorkers` must be executed first to ensure the number of workers'); + // RES is `encodeShards` Array let RES = []; const chunkList = splitPrice(sourceData, this.segmentSize); From 4206ece3fdd4d430a4b5284fc84e04b7f37b05a6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 29 Dec 2023 13:58:08 +0800 Subject: [PATCH 383/433] chore: [ci] release (#470) Co-authored-by: github-actions[bot] --- .changeset/large-camels-hear.md | 5 ----- examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- packages/reed-solomon/CHANGELOG.md | 8 ++++++++ packages/reed-solomon/package.json | 2 +- 5 files changed, 18 insertions(+), 7 deletions(-) delete mode 100644 .changeset/large-camels-hear.md diff --git a/.changeset/large-camels-hear.md b/.changeset/large-camels-hear.md deleted file mode 100644 index 05b0c181..00000000 --- a/.changeset/large-camels-hear.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/reed-solomon': patch ---- - -fix: SwapRows diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 1777c0ea..e95a9c21 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.24 + +### Patch Changes + +- Updated dependencies + [[`4cf4abc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4cf4abc348c080f73abd8578f0092ca6ab318fe3)]: + - @bnb-chain/reed-solomon@1.1.3 + ## 0.0.23 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index dda90da6..a52b88a0 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.23", + "version": "0.0.24", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/packages/reed-solomon/CHANGELOG.md b/packages/reed-solomon/CHANGELOG.md index f989cd52..4b441220 100644 --- a/packages/reed-solomon/CHANGELOG.md +++ b/packages/reed-solomon/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/reed-solomon +## 1.1.3 + +### Patch Changes + +- [#458](https://github.com/bnb-chain/greenfield-js-sdk/pull/458) + [`4cf4abc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4cf4abc348c080f73abd8578f0092ca6ab318fe3) + Thanks [@rrr523](https://github.com/rrr523)! - fix: SwapRows + ## 1.1.2 ### Patch Changes diff --git a/packages/reed-solomon/package.json b/packages/reed-solomon/package.json index af41177e..4fc77da0 100644 --- a/packages/reed-solomon/package.json +++ b/packages/reed-solomon/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/reed-solomon", - "version": "1.1.2", + "version": "1.1.3", "description": "lighting implement for reed solomon", "module": "./dist/index.esm.js", "main": "./dist/index.js", From 159cb9c896d3d44b92715b2c12a6db1aeed20081 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Thu, 4 Jan 2024 01:49:42 +0800 Subject: [PATCH 384/433] feat: Export Auth type (#466) --- .changeset/eleven-mirrors-fry.md | 5 +++++ packages/js-sdk/src/api/bucket.ts | 3 ++- packages/js-sdk/src/api/objects.ts | 3 ++- packages/js-sdk/src/api/payment.ts | 3 ++- packages/js-sdk/src/clients/spclient/auth.ts | 3 +-- .../js-sdk/src/clients/spclient/spClient.ts | 20 +------------------ packages/js-sdk/src/types/auth.ts | 18 +++++++++++++++++ 7 files changed, 31 insertions(+), 24 deletions(-) create mode 100644 .changeset/eleven-mirrors-fry.md diff --git a/.changeset/eleven-mirrors-fry.md b/.changeset/eleven-mirrors-fry.md new file mode 100644 index 00000000..b98cca8c --- /dev/null +++ b/.changeset/eleven-mirrors-fry.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Export Auth type diff --git a/packages/js-sdk/src/api/bucket.ts b/packages/js-sdk/src/api/bucket.ts index 1ddd2d44..71c23769 100644 --- a/packages/js-sdk/src/api/bucket.ts +++ b/packages/js-sdk/src/api/bucket.ts @@ -29,6 +29,7 @@ import { bytesToUtf8, hexToBytes } from 'ethereum-cryptography/utils'; import Long from 'long'; import { container, delay, inject, injectable } from 'tsyringe'; import { + AuthType, GRNToString, MsgCreateBucketTypeUrl, MsgDeleteBucketTypeUrl, @@ -65,7 +66,7 @@ import { getQueryBucketReadQuotaMetaInfo, parseReadQuotaResponse, } from '../clients/spclient/spApis/queryBucketReadQuota'; -import { AuthType, SpClient } from '../clients/spclient/spClient'; +import { SpClient } from '../clients/spclient/spClient'; import { TxClient } from '../clients/txClient'; import { METHOD_GET, NORMAL_ERROR_CODE } from '../constants/http'; import { MsgCreateBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateBucket'; diff --git a/packages/js-sdk/src/api/objects.ts b/packages/js-sdk/src/api/objects.ts index 53641df1..316f47ae 100644 --- a/packages/js-sdk/src/api/objects.ts +++ b/packages/js-sdk/src/api/objects.ts @@ -66,8 +66,9 @@ import { newObjectGRN, } from '..'; import { RpcQueryClient } from '../clients/queryclient'; -import { AuthType, SpClient } from '../clients/spclient/spClient'; +import { SpClient } from '../clients/spclient/spClient'; import { + AuthType, CreateObjectApprovalRequest, CreateObjectApprovalResponse, GetListObjectPoliciesRequest, diff --git a/packages/js-sdk/src/api/payment.ts b/packages/js-sdk/src/api/payment.ts index 1039e48a..77e062c5 100644 --- a/packages/js-sdk/src/api/payment.ts +++ b/packages/js-sdk/src/api/payment.ts @@ -29,6 +29,7 @@ import { } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/tx'; import { container, delay, inject, injectable } from 'tsyringe'; import { + AuthType, MsgDepositTypeUrl, MsgDisableRefundTypeUrl, MsgWithdrawTypeUrl, @@ -41,7 +42,7 @@ import { getListUserPaymentAccountMetaInfo, parseListUserPaymentAccountResponse, } from '../clients/spclient/spApis/listUserPaymentAccounts'; -import { AuthType, SpClient } from '../clients/spclient/spClient'; +import { SpClient } from '../clients/spclient/spClient'; import { TxClient } from '../clients/txClient'; import { MsgDepositSDKTypeEIP712 } from '../messages/greenfield/payment/MsgDeposit'; import { MsgDisableRefundSDKTypeEIP712 } from '../messages/greenfield/payment/MsgDisableRefund'; diff --git a/packages/js-sdk/src/clients/spclient/auth.ts b/packages/js-sdk/src/clients/spclient/auth.ts index 9fea4cd2..8d50a96e 100644 --- a/packages/js-sdk/src/clients/spclient/auth.ts +++ b/packages/js-sdk/src/clients/spclient/auth.ts @@ -1,11 +1,10 @@ import { signSignatureByEddsa } from '@/offchainauth'; -import { ReqMeta } from '@/types/auth'; +import { AuthType, ReqMeta } from '@/types/auth'; import { hexlify, joinSignature } from '@ethersproject/bytes'; import { SigningKey } from '@ethersproject/signing-key'; import { Headers } from 'cross-fetch'; import { keccak256 } from 'ethereum-cryptography/keccak.js'; import { utf8ToBytes } from 'ethereum-cryptography/utils.js'; -import { AuthType } from './spClient'; export const getCanonicalHeaders = (reqMeta: Partial, reqHeaders: Headers) => { const sortedHeaders = getSortedHeaders(reqHeaders, SUPPORTED_HEADERS); diff --git a/packages/js-sdk/src/clients/spclient/spClient.ts b/packages/js-sdk/src/clients/spclient/spClient.ts index 05db7865..9f748199 100644 --- a/packages/js-sdk/src/clients/spclient/spClient.ts +++ b/packages/js-sdk/src/clients/spclient/spClient.ts @@ -7,29 +7,11 @@ import { } from '@/clients/spclient/auth'; import { parseError } from '@/clients/spclient/spApis/parseError'; import { SP_NOT_AVAILABLE_ERROR_CODE, SP_NOT_AVAILABLE_ERROR_MSG } from '@/constants/http'; -import { ReqMeta } from '@/types/auth'; +import { AuthType, ReqMeta } from '@/types/auth'; import { injectable } from 'tsyringe'; import { getGetObjectMetaInfo } from './spApis/getObject'; import { getPutObjectMetaInfo } from './spApis/putObject'; -/** - * ECDSA Signature - */ -export type ECDSA = { - type: 'ECDSA'; - privateKey: string; -}; -/** - * EDDSA Signature - */ -export type EDDSA = { - type: 'EDDSA'; - seed: string; - domain: string; - address: string; -}; -export type AuthType = ECDSA | EDDSA; - export interface ISpClient { callApi( url: string, diff --git a/packages/js-sdk/src/types/auth.ts b/packages/js-sdk/src/types/auth.ts index a577d7c9..e77959b7 100644 --- a/packages/js-sdk/src/types/auth.ts +++ b/packages/js-sdk/src/types/auth.ts @@ -1,5 +1,23 @@ import { METHOD_GET, METHOD_POST, METHOD_PUT } from '@/constants/http'; +/** + * ECDSA Signature + */ +export type ECDSA = { + type: 'ECDSA'; + privateKey: string; +}; +/** + * EDDSA Signature + */ +export type EDDSA = { + type: 'EDDSA'; + seed: string; + domain: string; + address: string; +}; +export type AuthType = ECDSA | EDDSA; + export interface ReqMeta { method: typeof METHOD_GET | typeof METHOD_POST | typeof METHOD_PUT; contentType: string; From cfa55a5b3e64b12fe1eabe268e2567b9a9e51d0d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 5 Jan 2024 10:29:46 +0800 Subject: [PATCH 385/433] chore: [ci] release (#472) Co-authored-by: github-actions[bot] --- .changeset/eleven-mirrors-fry.md | 5 ----- examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 8 ++++++++ packages/js-sdk/package.json | 2 +- 5 files changed, 18 insertions(+), 7 deletions(-) delete mode 100644 .changeset/eleven-mirrors-fry.md diff --git a/.changeset/eleven-mirrors-fry.md b/.changeset/eleven-mirrors-fry.md deleted file mode 100644 index b98cca8c..00000000 --- a/.changeset/eleven-mirrors-fry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Export Auth type diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index e95a9c21..84876e27 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.25 + +### Patch Changes + +- Updated dependencies + [[`159cb9c`](https://github.com/bnb-chain/greenfield-js-sdk/commit/159cb9c896d3d44b92715b2c12a6db1aeed20081)]: + - @bnb-chain/greenfield-js-sdk@1.1.3 + ## 0.0.24 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index a52b88a0..0cd51592 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.24", + "version": "0.0.25", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index e40e6a35..7e1486d0 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 1.1.3 + +### Patch Changes + +- [#466](https://github.com/bnb-chain/greenfield-js-sdk/pull/466) + [`159cb9c`](https://github.com/bnb-chain/greenfield-js-sdk/commit/159cb9c896d3d44b92715b2c12a6db1aeed20081) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Export Auth type + ## 1.1.2 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index fda37822..7c86f521 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.1.2", + "version": "1.1.3", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 3a4e8a5e76438067d953bde91442daab9cad015f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 5 Jan 2024 10:37:06 +0800 Subject: [PATCH 386/433] chore: [ci] release (#469) Co-authored-by: github-actions[bot] --- .changeset/chatty-steaks-joke.md | 5 ----- .changeset/itchy-schools-doubt.md | 5 ----- .changeset/little-melons-care.md | 5 ----- .changeset/pre.json | 21 -------------------- .changeset/twelve-mice-grin.md | 5 ----- examples/nextjs/CHANGELOG.md | 11 ++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs-file-management/CHANGELOG.md | 11 ++++++++++ examples/nodejs-file-management/package.json | 4 ++-- packages/js-sdk/CHANGELOG.md | 21 ++++++++++++++++++++ packages/js-sdk/package.json | 2 +- 11 files changed, 47 insertions(+), 45 deletions(-) delete mode 100644 .changeset/chatty-steaks-joke.md delete mode 100644 .changeset/itchy-schools-doubt.md delete mode 100644 .changeset/little-melons-care.md delete mode 100644 .changeset/pre.json delete mode 100644 .changeset/twelve-mice-grin.md diff --git a/.changeset/chatty-steaks-joke.md b/.changeset/chatty-steaks-joke.md deleted file mode 100644 index 58024574..00000000 --- a/.changeset/chatty-steaks-joke.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Sp Api Types diff --git a/.changeset/itchy-schools-doubt.md b/.changeset/itchy-schools-doubt.md deleted file mode 100644 index a76ce2b9..00000000 --- a/.changeset/itchy-schools-doubt.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -chore: pnpm --no-frozen-lockfile diff --git a/.changeset/little-melons-care.md b/.changeset/little-melons-care.md deleted file mode 100644 index 6a7793e2..00000000 --- a/.changeset/little-melons-care.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': minor ---- - -feat: Add SetTag API diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index 8fe6ca75..00000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "mode": "exit", - "tag": "alpha", - "initialVersions": { - "greenfield-js-sdk-docs": "0.0.0", - "browser-file-management": "0.1.0", - "@demo/wallet": "0.0.23", - "@demo/nodejs": "0.0.1", - "@bnb-chain/create-gnfd-app": "1.0.0", - "@bnb-chain/greenfiled-file-handle": "1.0.2", - "@bnb-chain/greenfield-js-sdk": "1.1.2", - "@bnb-chain/reed-solomon": "1.1.2", - "@bnb-chain/greenfield-zk-crypto": "1.0.0" - }, - "changesets": [ - "chatty-steaks-joke", - "itchy-schools-doubt", - "little-melons-care", - "twelve-mice-grin" - ] -} diff --git a/.changeset/twelve-mice-grin.md b/.changeset/twelve-mice-grin.md deleted file mode 100644 index c061f7ac..00000000 --- a/.changeset/twelve-mice-grin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Upgrade cosmos types to 0.4.0-alpha.30 diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 3fb7d278..042775af 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,16 @@ # @demo/wallet +## 0.0.24 + +### Patch Changes + +- Updated dependencies + [[`24ec472`](https://github.com/bnb-chain/greenfield-js-sdk/commit/24ec472b4507d0f3cba3c8fc55b4e9f924d5b1c7), + [`b41fdf0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b41fdf057b7b4b0f416a74fb04ed0793c52c51f7), + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7), + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7)]: + - @bnb-chain/greenfield-js-sdk@1.2.0 + ## 0.0.24-alpha.2 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 0ded8acc..13ad34e9 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.24-alpha.2", + "version": "0.0.24", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs-file-management/CHANGELOG.md b/examples/nodejs-file-management/CHANGELOG.md index a9dbe9f3..4133e888 100644 --- a/examples/nodejs-file-management/CHANGELOG.md +++ b/examples/nodejs-file-management/CHANGELOG.md @@ -1,5 +1,16 @@ # @demo/nodejs +## 0.0.26 + +### Patch Changes + +- Updated dependencies + [[`24ec472`](https://github.com/bnb-chain/greenfield-js-sdk/commit/24ec472b4507d0f3cba3c8fc55b4e9f924d5b1c7), + [`b41fdf0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b41fdf057b7b4b0f416a74fb04ed0793c52c51f7), + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7), + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7)]: + - @bnb-chain/greenfield-js-sdk@1.2.0 + ## 0.0.2-alpha.0 ### Patch Changes diff --git a/examples/nodejs-file-management/package.json b/examples/nodejs-file-management/package.json index ad3e9113..7bc9be83 100644 --- a/examples/nodejs-file-management/package.json +++ b/examples/nodejs-file-management/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.2-alpha.0", + "version": "0.0.26", "type": "commonjs", "private": true, "scripts": { @@ -10,7 +10,7 @@ "author": "", "license": "ISC", "dependencies": { - "@bnb-chain/greenfield-js-sdk": "^1.2.0-alpha.0", + "@bnb-chain/greenfield-js-sdk": "^1.2.0", "@bnb-chain/reed-solomon": "^1.1.1", "dotenv": "^16.3.1", "mime-types": "^2.1.35" diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index f869e455..18b28a25 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,26 @@ # @bnb-chain/greenfield-js-sdk +## 1.2.0 + +### Minor Changes + +- [#461](https://github.com/bnb-chain/greenfield-js-sdk/pull/461) + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add SetTag API + +### Patch Changes + +- [#464](https://github.com/bnb-chain/greenfield-js-sdk/pull/464) + [`24ec472`](https://github.com/bnb-chain/greenfield-js-sdk/commit/24ec472b4507d0f3cba3c8fc55b4e9f924d5b1c7) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Sp Api Types + +- [`b41fdf0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b41fdf057b7b4b0f416a74fb04ed0793c52c51f7) + Thanks [@rrr523](https://github.com/rrr523)! - chore: pnpm --no-frozen-lockfile + +- [#461](https://github.com/bnb-chain/greenfield-js-sdk/pull/461) + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Upgrade cosmos types to 0.4.0-alpha.30 + ## 1.2.0-alpha.2 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index a857db0f..8691f578 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.2.0-alpha.2", + "version": "1.2.0", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From f65b2aeb9726060124c934a834cf7cf88d305212 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Fri, 5 Jan 2024 10:42:50 +0800 Subject: [PATCH 387/433] Release 1.2.0 (#473) * chore: [ci] release (alpha) (#135) Co-authored-by: github-actions[bot] * Fix/sort types (#137) * feat: Sort EIP712 message field * feat: Extra field * Create happy-humans-thank.md * chore: [ci] release (alpha) (#138) Co-authored-by: github-actions[bot] * feat: Bump version (#139) * chore: [ci] release (alpha) (#140) Co-authored-by: github-actions[bot] * feat: Split approval and simulate (#141) * chore: [ci] release (alpha) (#142) Co-authored-by: github-actions[bot] * Revert "feat: Split approval and simulate" (#143) * Revert "feat: Split approval and simulate" This reverts commit 76defa7f31b7f2d4683f8ed04e8dc2786dd1ef6c. * Create dirty-parrots-hear.md * chore: [ci] release (alpha) (#144) Co-authored-by: github-actions[bot] * Chore/test case (#145) * chore(test): Remove private key from config * chore: Test CI * chore: Update rainkit version (#146) * feat: Query Lock Fee API (#147) * feat: Query Lock Fee API * Create green-avocados-jump.md * chore: [ci] release (alpha) (#148) Co-authored-by: github-actions[bot] * Update bucket.ts (#149) * Update bucket.ts throw error * Create hot-countries-begin.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#150) Co-authored-by: github-actions[bot] * fix: Return real statuscode when call metaservice (#164) * fix: Return real statuscode when call metaservice * Create kind-eyes-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#166) Co-authored-by: github-actions[bot] * feat: Upgrade types version (#167) * chore: [ci] release (alpha) (#168) Co-authored-by: github-actions[bot] * Feat/sp exit (#169) * feat: Add Virtual Group API * feat: Compatibility createBukcet and createObject API * feat: Add Migrate bucket API * Feat/batch upload (#171) * feat: Feegrant * feat: Feegrant * Create angry-horses-enjoy.md * Feat/batch upload (#174) * feat: Feegrant * feat: Feegrant * feat: Feegrant grantAllowance API * feat: CreateObject example * feat: CreateBucket example * feat: Transfer example * feat: AuthInfoBytes add feePayer and feeGranter * feat: Add Two Apis (#179) * feat: Add Two Apis * Create mean-wombats-remain.md * chore: [ci] release (alpha) (#170) Co-authored-by: github-actions[bot] * feat AuthV1 (#182) * chore: Update example * chore: Update Example * feat: V1Auth * feat: V1Auth generate * feat: V1Auth createObject Approval * Create shaggy-experts-approve.md * Feat/com new (#186) * feat: Remove GetUserBuckets API Auth * feat: Update BucketProps type * feat: Remove listObjects api auth and update response type * feat: Remove listGroup api auth * feat: Update Types * chore: [ci] release (alpha) (#183) Co-authored-by: github-actions[bot] * feat: Offchainauth timeout reduced to 2s (#187) * feat: Offchainauth timeout reduced to 2s * Create warm-planets-exercise.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#188) Co-authored-by: github-actions[bot] * Feat/auth v1 (#189) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * Create empty-pens-sing.md * chore: [ci] release (alpha) (#190) Co-authored-by: github-actions[bot] * Feat/auth v1 (#191) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * feat: API getStorageProviderInfo params update * chore: Upgrade types * feat: GetSpURLfrom bucket * feat: Remove Sp param when create object and bucket * chore: [ci] release (alpha) (#192) Co-authored-by: github-actions[bot] * feat: Change Allwance value type (#193) * chore: Test config update * feat: Change Allowance Type * chore: [ci] release (alpha) (#194) Co-authored-by: github-actions[bot] * feat: MultiTx support private key (#195) * fix: Throw sp error code and message (#197) * fix: Throw sp error code and message * Create good-bobcats-hang.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#196) Co-authored-by: github-actions[bot] * fix: No sp available error (#200) * fix: No sp available error * Create khaki-ducks-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Opt (#198) * chore: Update Example * refactor: Replace @ethereumjs/util with @ethersproject/bytes * feat: Upload Object V1 auth * fix: CreateObjectTx content-type msg * chore: [ci] release (alpha) (#201) Co-authored-by: github-actions[bot] * feat: Extend response time to 3s (#202) * feat: Extend response time to 3s * Create orange-spiders-add.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#203) Co-authored-by: github-actions[bot] * Chore/conflict (#209) * release 0.2.2 (#204) * feat: Update Types * chore: [ci] release (alpha) * Feat/query status (#42) * fix: Return types * feat: Feegrant * fix: Pubkey typeUrl * feat: Upgrade Cosmos SDK * refactor: Simply broadcast and simulate tx * feat: Support Tx by PrivateKey * feat: Replace local message with types npm * test: Test Framework * chore: Upgrade Example wagmi version, Replace ethersjs with viem * feat: Support EIP712 callback use external provider * feat: Support dynamic provider * test: Support jest test * test: Account Query * feat: Change Tx API * feat: Type Complete * chore: Complate Example in New API * fix: Rollup bundle Support Nodejs * feat: Resolute Module (IoC) * docs: Update README * chore: [ci] release (alpha) (#43) Co-authored-by: github-actions[bot] * Feat/multi msg (#49) * feat: Multi Send * feat: Compatibility multi tx message * Revert "Feat/multi msg (#49)" (#53) This reverts commit fc3dd986646624c81f3cc43bdffb02e70d170b4f. * Update WASM (#55) * feat: Update WASM * feat: Update create object tx * docs: Update doc (#56) * feat: Pre alpha (#57) * chore: [ci] release (alpha) (#58) Co-authored-by: github-actions[bot] * Update README.md * multi msg (#59) * feat: Multi Send * feat: Compatibility multi tx message * chore: [ci] release (alpha) (#62) Co-authored-by: github-actions[bot] * fix: CreateObject Msg (#65) * feat: add offchainauth method (#64) * feat: Add offchainauth method * feat: Compatiable old get approval method * Create ten-suits-crash.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> Co-authored-by: rrr523 * chore: [ci] release (alpha) (#66) Co-authored-by: github-actions[bot] * feat: Add Sp params (#67) * feat: Optimize get approval types and add throw error (#70) * feat: Optimize get approval types and add throw error * Create fluffy-snails-explain.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#68) Co-authored-by: github-actions[bot] * chore: Update example without greenfield-cosmos-types (#71) * fix: Return Promise (#72) * fix: Return Promise * Create strong-snails-count.md * chore: [ci] release (alpha) (#73) Co-authored-by: github-actions[bot] * fix: Create Group message (#74) * fix: Create Group message * Create young-bears-scream.md * feat: Add Storage Params API (#76) * chore: [ci] release (alpha) (#75) Co-authored-by: github-actions[bot] * Chore/group example (#77) * feat: Group API * chore: Group and Mirror example * chore: [ci] release (alpha) (#78) Co-authored-by: github-actions[bot] * chore: Update example (#79) * feat: Add query param to ListObjects API for display folder. (#80) * feat: Add query params to ListObjects API for folder * Create clean-dogs-joke.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/group (#82) * chore: Update Example * feat: Add some group API * Create sweet-feet-hide.md * chore: [ci] release (alpha) (#81) Co-authored-by: github-actions[bot] * Update objectt.ts (#83) * Update objectt.ts add missing resp params * Create cold-suns-accept.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/policy (#86) * feat: Policy API * fix: Object API name * Create pretty-bulldogs-notice.md * feat: Migrate out zkbas-js-sdk and upate the sign msg format (#85) * feat: Migrate out zkbas-js-sdk and upate the sign msg format * Create fluffy-pumas-yawn.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#84) Co-authored-by: github-actions[bot] * fix: Head Group (#96) * fix: Head Group * Create cyan-ties-cross.md * feat: Multi Send Txs (#97) * feat: Multi Send Txs * Create lovely-knives-smile.md * chore: [ci] release (alpha) (#98) Co-authored-by: github-actions[bot] * feat: Allow to have sp auth fail (#101) * feat: Allow to have sp auth fail * fix: Replace endpoint with address when auth failed * Create tidy-dodos-care.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: TS lib (#104) * feat: Sync cosmos types (#106) * chore: [ci] release (alpha) (#102) Co-authored-by: github-actions[bot] * chore: Use rainbowkit simply wallet of example (#107) * Feat/update group (#108) * feat: Update group extra api * chore: Test group api * Create quiet-planets-shop.md * chore: [ci] release (alpha) (#109) Co-authored-by: github-actions[bot] * Feat/sp listgroup (#110) * feat: Add sp.listGroup API * chore: Update Example * chore: [ci] release (alpha) (#111) Co-authored-by: github-actions[bot] * chore: Update Example (#112) * chore: Update Examples (#114) * chore(dep): Add cross-env * chore(dep): Npm script * chore: Pnpm engines * chore: Codesandbox Example (#115) * chore(docs): Update stackblitz url (#116) * refactor: CreateFoler API params (#119) * chore: [ci] release (alpha) (#120) Co-authored-by: github-actions[bot] * feat: TimeStamp format * chore: [ci] release (alpha) (#121) Co-authored-by: github-actions[bot] * Refactor/policy (#122) * refactor: Bucket policy * refactor: Bucket policy * chore: [ci] release (alpha) (#123) Co-authored-by: github-actions[bot] * chore(example): BucketPolicy (#127) * Chore/update policy example (#128) * chore(example): BucketPolicy * chore(example): BucketPolicy * Feat/gashub (#129) * feat: Add gas hub API * refactor: TypeUrl as constants * chore: [ci] release (alpha) (#130) Co-authored-by: github-actions[bot] * feat: Export queryClient (#131) * feat: Export queryClient * Create calm-birds-sleep.md * Update README.md * fix: Compatiable net error (#133) * fix: Compatiable net error * Create old-roses-play.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#132) Co-authored-by: github-actions[bot] * Test/test case (#134) * feat: Isomorphic fetch * test: Uint test and e2e test * feat: Sync Types (#136) * feat: Sync Types * Create weak-hounds-sell.md * chore: [ci] release (alpha) (#135) Co-authored-by: github-actions[bot] * Fix/sort types (#137) * feat: Sort EIP712 message field * feat: Extra field * Create happy-humans-thank.md * chore: [ci] release (alpha) (#138) Co-authored-by: github-actions[bot] * feat: Bump version (#139) * chore: [ci] release (alpha) (#140) Co-authored-by: github-actions[bot] * feat: Split approval and simulate (#141) * chore: [ci] release (alpha) (#142) Co-authored-by: github-actions[bot] * Revert "feat: Split approval and simulate" (#143) * Revert "feat: Split approval and simulate" This reverts commit 76defa7f31b7f2d4683f8ed04e8dc2786dd1ef6c. * Create dirty-parrots-hear.md * chore: [ci] release (alpha) (#144) Co-authored-by: github-actions[bot] * Chore/test case (#145) * chore(test): Remove private key from config * chore: Test CI * chore: Update rainkit version (#146) * feat: Query Lock Fee API (#147) * feat: Query Lock Fee API * Create green-avocados-jump.md * chore: [ci] release (alpha) (#148) Co-authored-by: github-actions[bot] * Update bucket.ts (#149) * Update bucket.ts throw error * Create hot-countries-begin.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#150) Co-authored-by: github-actions[bot] * fix: Return real statuscode when call metaservice (#164) * fix: Return real statuscode when call metaservice * Create kind-eyes-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#166) Co-authored-by: github-actions[bot] * feat: Upgrade types version (#167) * chore: [ci] release (alpha) (#168) Co-authored-by: github-actions[bot] * Feat/sp exit (#169) * feat: Add Virtual Group API * feat: Compatibility createBukcet and createObject API * feat: Add Migrate bucket API * Feat/batch upload (#171) * feat: Feegrant * feat: Feegrant * Create angry-horses-enjoy.md * Feat/batch upload (#174) * feat: Feegrant * feat: Feegrant * feat: Feegrant grantAllowance API * feat: CreateObject example * feat: CreateBucket example * feat: Transfer example * feat: AuthInfoBytes add feePayer and feeGranter * feat: Add Two Apis (#179) * feat: Add Two Apis * Create mean-wombats-remain.md * chore: [ci] release (alpha) (#170) Co-authored-by: github-actions[bot] * feat AuthV1 (#182) * chore: Update example * chore: Update Example * feat: V1Auth * feat: V1Auth generate * feat: V1Auth createObject Approval * Create shaggy-experts-approve.md * Feat/com new (#186) * feat: Remove GetUserBuckets API Auth * feat: Update BucketProps type * feat: Remove listObjects api auth and update response type * feat: Remove listGroup api auth * feat: Update Types * chore: [ci] release (alpha) (#183) Co-authored-by: github-actions[bot] * feat: Offchainauth timeout reduced to 2s (#187) * feat: Offchainauth timeout reduced to 2s * Create warm-planets-exercise.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#188) Co-authored-by: github-actions[bot] * Feat/auth v1 (#189) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * Create empty-pens-sing.md * chore: [ci] release (alpha) (#190) Co-authored-by: github-actions[bot] * Feat/auth v1 (#191) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * feat: API getStorageProviderInfo params update * chore: Upgrade types * feat: GetSpURLfrom bucket * feat: Remove Sp param when create object and bucket * chore: [ci] release (alpha) (#192) Co-authored-by: github-actions[bot] * feat: Change Allwance value type (#193) * chore: Test config update * feat: Change Allowance Type * chore: [ci] release (alpha) (#194) Co-authored-by: github-actions[bot] * feat: MultiTx support private key (#195) * fix: Throw sp error code and message (#197) * fix: Throw sp error code and message * Create good-bobcats-hang.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#196) Co-authored-by: github-actions[bot] * fix: No sp available error (#200) * fix: No sp available error * Create khaki-ducks-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Opt (#198) * chore: Update Example * refactor: Replace @ethereumjs/util with @ethersproject/bytes * feat: Upload Object V1 auth * fix: CreateObjectTx content-type msg * chore: [ci] release (alpha) (#201) Co-authored-by: github-actions[bot] * feat: Extend response time to 3s (#202) * feat: Extend response time to 3s * Create orange-spiders-add.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#203) Co-authored-by: github-actions[bot] --------- Co-authored-by: github-actions[bot] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> * chore: Pre exit (#205) * chore: [ci] release (#206) Co-authored-by: github-actions[bot] * chore: Rename package (#207) * chore: [ci] release (#208) Co-authored-by: github-actions[bot] --------- Co-authored-by: github-actions[bot] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> * Feat/payment (#210) * feat: Add Payment query API * fix: Create Payment Account * fix: Payment disableRefund * chore: Update Example * chore: [ci] release (alpha) (#211) Co-authored-by: github-actions[bot] * chore: Update README link (#214) * fix: Return Types (#213) * chore: Update withdraw example params (#212) * chore: Update withdraw example params * feat: Zk crypto wasm package * chore: Nodejs example update package * chore: Add comment * chore: Update UMD name * feat: Upgrade file handle package * chore: Update OffchainAuth example * feat: New Zk package * chore: Changeset (#215) * chore: [ci] release (alpha) (#216) Co-authored-by: github-actions[bot] * Feat/group api (#217) * fix: Dynamic add and delete members string array * chore: Release zk crypto * chore: [ci] release (alpha) (#218) Co-authored-by: github-actions[bot] * chore: Release zk crypto (#219) * chore: [ci] release (alpha) (#220) Co-authored-by: github-actions[bot] * fix: Zk version bump (#221) * chore: [ci] release (alpha) (#222) Co-authored-by: github-actions[bot] * fix: DeepClone EIP712 (#223) * chore: [ci] release (alpha) (#224) Co-authored-by: github-actions[bot] * fix: Error try catch (#230) * chore: [ci] release (alpha) (#231) Co-authored-by: github-actions[bot] * Feat/auth (#232) * feat: Compatibility new payment api * feat: Compatibility updateGroupMember api * chore: Update example * feat: Feegrant api add timestamp * feat: EDDSA Sign * feat: Remove log (#234) * chore: [ci] release (alpha) (#233) Co-authored-by: github-actions[bot] * fix: Feegrant add expiration time (#235) * fix: Feegrant add expiration time * chore(example): GetAllowence support pagination * refactor (#236) * refactor: Tx * fix: Type * feat: Add Group API * feat: Update Sp API * feat: Bucket add authType * feat: and add params * fix: Types * feat: Change type * chore: [ci] release (alpha) (#237) Co-authored-by: github-actions[bot] * Fix/read quota (#238) * fix: CreateBucketApproval * feat: ReadQuota * chore(example): Update Example * chore: [ci] release (alpha) (#239) Co-authored-by: github-actions[bot] * XML response (#240) * feat: Return XML type * feat: CreateBucket Add payment address * chore: [ci] release (alpha) (#241) Co-authored-by: github-actions[bot] * fix: XMLParser force array not object (#242) * Feat/export req (#243) * fix: XMLParser force array not object * fix: XMLParser force array not object * chore: [ci] release (alpha) (#244) Co-authored-by: github-actions[bot] * feat: Export types (#245) * Export types (#247) * feat: Export types * fix: Hex number convert to string not big number * chore: [ci] release (alpha) (#246) Co-authored-by: github-actions[bot] * Feat/up and down (#248) * feat: Upload Object add AuthType * feat: Download s3 object * feat: Migrate Bucket add authType * feat: SpClient expose makeHeaders method * chore: Update constant pathj * chore: [ci] release (alpha) (#249) Co-authored-by: github-actions[bot] * Feat/xml null (#250) * feat: Add default XML value * feat: Add default XML value * chore: [ci] release (alpha) (#251) Co-authored-by: github-actions[bot] * Fix/gap time (#252) * fix: Gap time * fix: Gap time * Feat/meta (#254) * feat: GetBucketMeta * feat: Object Meta * Create curly-fishes-bow.md * chore: [ci] release (alpha) (#253) Co-authored-by: github-actions[bot] * Refactor/sp client (#255) * chore: Exact parseError * feat: Remove deps * chore: Structor * feat: Refeactor Sp Client * chore: [ci] release (alpha) (#256) Co-authored-by: github-actions[bot] * feat: Custom HTTP method (#257) * feat: Custom HTTP method * chore(example): Update * chore: [ci] release (alpha) (#258) Co-authored-by: github-actions[bot] * chore(docs): Update README (#259) * chore: Add comment (#260) * fix: Sp types (#261) * Feat/upload progress (#263) * fix: GfSpGetUserBucketsResponse Bucket types * feat: Cross fetch * chore: [ci] release (alpha) (#262) Co-authored-by: github-actions[bot] * fix: EncodePath (#264) * chore: [ci] release (alpha) (#265) Co-authored-by: github-actions[bot] * fix: Download http method (#266) * fix: Download http method (#267) * chore: [ci] release (alpha) (#268) Co-authored-by: github-actions[bot] * feat: New API getObjectPreviewUrl (#270) * chore: [ci] release (alpha) (#271) Co-authored-by: github-actions[bot] * fix: XML type align to go struct (#272) * feat: Optional endpoint param (#273) * chore: [ci] release (alpha) (#274) Co-authored-by: github-actions[bot] * fix: XML parse boolean (#275) * chore: [ci] release (alpha) (#276) Co-authored-by: github-actions[bot] * fix: Common Prefix parse as array (#277) * chore: [ci] release (alpha) (#278) Co-authored-by: github-actions[bot] * test: Parse XML test case (#279) * feat: Migrate bucket (#280) * fix: Create bucket quota params (#282) * chore: [ci] release (alpha) (#281) Co-authored-by: github-actions[bot] * feat: Replace xml2js to fast-xml-parse (#283) * Feat/update bucket info (#284) * feat: Update Bucket Info API * chore(example): Update * chore: [ci] release (alpha) (#285) Co-authored-by: github-actions[bot] * fix: EncodePath function (#286) * fix: Convert enum to number (#287) * chore: [ci] release (alpha) (#288) Co-authored-by: github-actions[bot] * feat: Add listReadRecords api * feat: ListGroups API * feat: ListObjectsByIds API * feat: ListBucketsByIds api * feat: Add verifyPermission api * feat: ListGroupsMembers * feat: ListUserGroups api * feat: Add listUserOwnedGroups api * chore: [ci] release (alpha) * feat: Sort query (#292) * feat: Sort query * Create healthy-chicken-beam.md * chore: [ci] release (alpha) (#293) Co-authored-by: github-actions[bot] * chore(exmaple): Group (#294) * docs: Update API (#295) * chore: Pre Exit (#296) * Pre exit (#297) * chore: Pre Exit * chore: Pre Exit * chore: [ci] release (#298) Co-authored-by: github-actions[bot] * chore: Pre Enter (#299) * Refactor/sp (#302) * feat: Auth expiry timestamp add default value * refactor: Sp types * fix: Expire time * feat: Upgrade TinyGo version * Refactor/sp (#305) * feat: Auth expiry timestamp add default value * refactor: Sp types * fix: Expire time * feat: Upgrade TinyGo version * refactor: Sp metainfo * chore: Update Example * chore: [ci] release (alpha) (#303) Co-authored-by: github-actions[bot] * fix: Build (#306) * chore: Update Deps (#308) * chore: [ci] release (alpha) (#307) Co-authored-by: github-actions[bot] * docs: Update README (#309) * Feat/validator (#310) * feat: EditValidator * feat: Add proposal api * refactor: TxClient * feat: Bucket listBucketsByPaymentAccount api * fix: Proposal and Validator API * feat: ListUserPaymentAccount api * chore: [ci] release (alpha) (#311) Co-authored-by: github-actions[bot] * chore: Nodejs example update * test: Test case update * chore: README update * feat: ListBuckets * fix: QueryClient and TxClient is not singleton * chore: Upgrade types * fix: PutPolicy * feat: ListObjectPolicies api * chore: [ci] release (alpha) * fix: IOC (#314) fix: All class use injectable * chore: [ci] release (alpha) (#315) Co-authored-by: github-actions[bot] * chore: Update exmaple (#316) * feat: Distribution API (#317) * chore: [ci] release (alpha) (#318) Co-authored-by: github-actions[bot] * feat: MsgSettle (#319) * feat: MsgSettle * Create fast-houses-do.md * chore: [ci] release (alpha) (#320) Co-authored-by: github-actions[bot] * chore(example): Update custom tx (#321) * chore: [ci] release (alpha) (#322) Co-authored-by: github-actions[bot] * chore: Github Action issue close (#323) * feat: Bucket headBucketExtra api (#324) * chore: [ci] release (alpha) (#325) Co-authored-by: github-actions[bot] * chore: Nodejs Example update (#326) * chore: Example Update (#327) * Chore/example (#328) * chore: Example Update * chore: Example Update * chore: Update (#329) * feat: Custom Tx (#330) * chore: [ci] release (alpha) (#331) Co-authored-by: github-actions[bot] * fix: Delete Policy (#332) * chore: [ci] release (alpha) (#333) Co-authored-by: github-actions[bot] * Feat/create app (#334) * feat: Template Init * feat: Template Init * feat: Create App Commander * chore: [ci] release (alpha) (#335) Co-authored-by: github-actions[bot] * feat: Create App Commander (#336) * chore: [ci] release (alpha) (#337) Co-authored-by: github-actions[bot] * chore: Update README (#338) * feat: Add vite template (#339) * chore: [ci] release (alpha) (#340) Co-authored-by: github-actions[bot] * release 0.2.5 (#341) chore: Pre Exit * chore: [ci] release (#342) Co-authored-by: github-actions[bot] * chore: Enter pre (#343) * chore(docs): Update README (#344) * Chore/package (#346) * chore: Update package.json * chore: Update package.json * Chore/package js sdk (#347) * chore: Update deps * chore: Update deps * chore: [ci] release (alpha) (#348) Co-authored-by: github-actions[bot] * Chore/update deps (#349) * chore: Update deps * chore: Update deps * Docs site ! (#350) * feat: Docs init * feat: Docs init * chore: Update README * docs: Update Docs * chore: Update deps * chore: Update docs * chore: Update docs * chore: Update * docs: Update * docs: Update * docs: Update * docs: Update Crosschain doc * chore: Update docs * chore: Pre exit (#351) * chore: [ci] release (#352) Co-authored-by: github-actions[bot] * feat: Custom Tx support any type! (#355) * chore: Pre enter (#357) * chore: [ci] release (alpha) (#356) Co-authored-by: github-actions[bot] * fix: Offchain auth ei.data undefined (#358) * fix: Offchain auth ei.data undefined * Create witty-bikes-flash.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#359) Co-authored-by: github-actions[bot] * fix: Offchain auth ei.data undefined (#360) * fix: Offchain auth ei.data undefined * Create ten-maps-travel.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#361) Co-authored-by: github-actions[bot] * chore: Release 1.0.0 (#365) * chore: [ci] release (alpha) (#366) Co-authored-by: github-actions[bot] * chore: Pre exit (#367) * chore: [ci] release (#368) Co-authored-by: github-actions[bot] * chore: Pre enter * fix(types): Payment listUserPaymentAccounts return response (#370) * fix(types): Payment listUserPaymentAccounts return response * fix(types): Payment listUserPaymentAccounts return response * Create chilly-pens-listen.md * chore: [ci] release (alpha) (#371) Co-authored-by: github-actions[bot] * chore: Update doc url (#372) * chore: Pre exit (#377) * chore: [ci] release (#378) Co-authored-by: github-actions[bot] * fix: Replace legacy method (#381) * fix: Replace legacy method * Create cool-shoes-visit.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: Update Deps (#382) * docs: Update README (#384) * chore: [ci] release (#383) Co-authored-by: github-actions[bot] * Feat/new msg tag (#413) * feat: Upgrade types to 0.4.0-alpha-25 * feat: Create Group with tags * feat: SetTag tx * chore(example): Update Group Tag * feat: Create Bucket with tags * chore(example): Create bucket with tags * refactor: Rename Object class name * feat: Create Object with tags * chore(example): Create Object with tags * chore: Enter pre changeset * chore: Minor Changeset * chore: [ci] release (alpha) (#414) Co-authored-by: github-actions[bot] * Chore/update create tags (#415) * chore(example): Nodejs example update new create tx * docs: Update Docs - new create tx * chore: Remove engines filed (#418) * Feat/js reed solomon (#422) * feat: Js implement reed solomon * docs: Update README * docs: Update README * Create beige-beds-lay.md * feat: Empty buffer * chore: Update params * feat: Nodejs support worker * feat: Nodejs support worker * feat: Add types * chore: Update Nodejs example * chore: Update docs and example * chore: [ci] release (alpha) (#419) Co-authored-by: github-actions[bot] * chore: Update example (#423) * feat: Add SP Api types (#424) * chore: [ci] release (alpha) (#425) Co-authored-by: github-actions[bot] * feat: Add bucket meta type (#426) * feat: Add bucket meta type (#427) * chore: [ci] release (alpha) (#428) Co-authored-by: github-actions[bot] * Feat/rs webworker (#429) * chore: Update example, using reed solomon * chore: Update Rollup config * chore: Benchmark * docs: Update README * feat: Support WebWorker * chore: [ci] release (alpha) (#430) Co-authored-by: github-actions[bot] * Feat/rs webworker (#431) * chore: Update example, using reed solomon * chore: Update Rollup config * chore: Benchmark * docs: Update README * feat: Support WebWorker * feat: Add types * chore: Add benchmark * Merge branch 'alpha' into feat/rs_webworker * chore: [ci] release (alpha) (#432) Co-authored-by: github-actions[bot] * chore: Exit pre * chore: [ci] release (#433) Co-authored-by: github-actions[bot] * chore: Enter alpha * Feat/new tag (#461) * Fix/sp tag type (#444) * fix: Sp types * fix: Sp types (cherry picked from commit eb75e4d2716d97249bc9f57f20861368ca73204c) * fix: Tag compatibility (#443) (cherry picked from commit 7a2e9d263648c1032f3422235518eb748d99eeab) * feat: Upgrade cosmos type to 0.4.0 alpha 30 * chore: Update feegranet example * feat: Add SetTag API * chore: [ci] release (alpha) (#462) Co-authored-by: github-actions[bot] * chore: Pnpm install --no-frozen-lockfile * chore: [ci] release (alpha) (#463) Co-authored-by: github-actions[bot] * feat: Sp Api types (#464) * chore: [ci] release (alpha) (#465) Co-authored-by: github-actions[bot] * chore: Pre Exit (#468) * chore: [ci] release (#469) Co-authored-by: github-actions[bot] --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl --- examples/nextjs/CHANGELOG.md | 33 +- examples/nextjs/package.json | 2 +- .../src/components/bucket/create/index.tsx | 25 +- .../src/components/feegrant/createObj.tsx | 11 +- .../src/components/group/update/index.tsx | 45 ++- examples/nextjs/src/pages/_document.tsx | 6 - examples/nodejs-file-management/CHANGELOG.md | 21 ++ examples/nodejs-file-management/package.json | 4 +- examples/nodejs/cases/storage.js | 3 + packages/js-sdk/CHANGELOG.md | 50 +++ packages/js-sdk/package.json | 4 +- packages/js-sdk/src/api/crosschain.ts | 11 +- packages/js-sdk/src/api/feegrant.ts | 1 + packages/js-sdk/src/api/group.ts | 2 +- packages/js-sdk/src/api/storage.ts | 26 +- packages/js-sdk/src/constants/typeUrl.ts | 1 + .../messages/greenfield/storage/MsgSetTag.ts | 61 ++++ packages/js-sdk/src/types/sp/Common.ts | 42 +++ pnpm-lock.yaml | 304 ++++++++++++++---- 19 files changed, 563 insertions(+), 89 deletions(-) create mode 100644 examples/nodejs-file-management/CHANGELOG.md create mode 100644 packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 84876e27..7b478585 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -10,11 +10,40 @@ ## 0.0.24 +### Patch Changes + +- Updated dependencies +[[`24ec472`](https://github.com/bnb-chain/greenfield-js-sdk/commit/24ec472b4507d0f3cba3c8fc55b4e9f924d5b1c7), +[`b41fdf0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b41fdf057b7b4b0f416a74fb04ed0793c52c51f7), +[`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7), +[`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7)]: +- @bnb-chain/greenfield-js-sdk@1.2.0 + +## 0.0.24-alpha.2 + ### Patch Changes - Updated dependencies - [[`4cf4abc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4cf4abc348c080f73abd8578f0092ca6ab318fe3)]: - - @bnb-chain/reed-solomon@1.1.3 + [[`24ec472`](https://github.com/bnb-chain/greenfield-js-sdk/commit/24ec472b4507d0f3cba3c8fc55b4e9f924d5b1c7)]: + - @bnb-chain/greenfield-js-sdk@1.2.0-alpha.2 + +## 0.0.24-alpha.1 + +### Patch Changes + +- Updated dependencies + [[`b41fdf0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b41fdf057b7b4b0f416a74fb04ed0793c52c51f7)]: + - @bnb-chain/greenfield-js-sdk@1.2.0-alpha.1 + +## 0.0.24-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7), + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7)]: + - @bnb-chain/greenfield-js-sdk@1.2.0-alpha.0 + ## 0.0.23 diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 0cd51592..ab73cfc9 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -11,7 +11,7 @@ "lint": "next lint" }, "dependencies": { - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.25", + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.30", "@bnb-chain/greenfield-js-sdk": "workspace:*", "@bnb-chain/reed-solomon": "workspace:*", "@cosmjs/encoding": "^0.32.0", diff --git a/examples/nextjs/src/components/bucket/create/index.tsx b/examples/nextjs/src/components/bucket/create/index.tsx index 62d31c84..5254db43 100644 --- a/examples/nextjs/src/components/bucket/create/index.tsx +++ b/examples/nextjs/src/components/bucket/create/index.tsx @@ -1,5 +1,7 @@ import { client, selectSp } from '@/client'; import { getOffchainAuthKeys } from '@/utils/offchainAuth'; +import { GRNToString, newBucketGRN, newGroupGRN } from '@bnb-chain/greenfield-js-sdk'; +import { add } from 'lodash'; import { useState } from 'react'; import { useAccount } from 'wagmi'; @@ -58,13 +60,32 @@ export const CreateBucket = () => { }, ); - const simulateInfo = await createBucketTx.simulate({ + const setTagTx = await client.storage.setTag({ + operator: address, + resource: GRNToString(newBucketGRN(createBucketInfo.bucketName)), + tags: { + tags: [ + { + key: 'x', + value: 'xx', + }, + { + key: 'y', + value: 'yy', + }, + ], + }, + }); + + const tx = await client.txClient.multiTx([createBucketTx, setTagTx]); + + const simulateInfo = await tx.simulate({ denom: 'BNB', }); console.log('simulateInfo', simulateInfo); - const res = await createBucketTx.broadcast({ + const res = await tx.broadcast({ denom: 'BNB', gasLimit: Number(simulateInfo?.gasLimit), gasPrice: simulateInfo?.gasPrice || '5000000000', diff --git a/examples/nextjs/src/components/feegrant/createObj.tsx b/examples/nextjs/src/components/feegrant/createObj.tsx index 2dc78792..42f84e2f 100644 --- a/examples/nextjs/src/components/feegrant/createObj.tsx +++ b/examples/nextjs/src/components/feegrant/createObj.tsx @@ -11,6 +11,7 @@ import { Wallet } from '@ethersproject/wallet'; import { ChangeEvent, useState } from 'react'; import { parseEther } from 'viem'; import { useAccount } from 'wagmi'; +import { ReedSolomon } from '@bnb-chain/reed-solomon'; /** * fee grant for creat object @@ -124,11 +125,9 @@ export const CreateObj = () => { console.log('temp account', granteeAddr, privateKey); + const rs = new ReedSolomon(); const fileBytes = await file.arrayBuffer(); - const hashResult = await (window as any).FileHandle.getCheckSums( - new Uint8Array(fileBytes), - ); - const { contentLength, expectCheckSums } = hashResult; + const expectCheckSums = rs.encode(new Uint8Array(fileBytes)); const createObjectTx = await client.object.createObject( { @@ -137,13 +136,13 @@ export const CreateObj = () => { objectName: objectName, visibility: 'VISIBILITY_TYPE_PUBLIC_READ', redundancyType: 'REDUNDANCY_EC_TYPE', - contentLength, + contentLength: fileBytes.byteLength, expectCheckSums, fileType: file.type, }, { type: 'ECDSA', - privateKey: ACCOUNT_PRIVATEKEY, + privateKey: privateKey, }, ); diff --git a/examples/nextjs/src/components/group/update/index.tsx b/examples/nextjs/src/components/group/update/index.tsx index bd797bdf..f8fed8ea 100644 --- a/examples/nextjs/src/components/group/update/index.tsx +++ b/examples/nextjs/src/components/group/update/index.tsx @@ -1,7 +1,6 @@ import { client } from '@/client'; -import { GRNToString, newBucketGRN, newGroupGRN, toTimestamp } from '@bnb-chain/greenfield-js-sdk'; +import { GRNToString, newGroupGRN, toTimestamp } from '@bnb-chain/greenfield-js-sdk'; import { useState } from 'react'; -import { zeroAddress } from 'viem'; import { useAccount } from 'wagmi'; export const GroupUpdate = () => { @@ -120,6 +119,48 @@ export const GroupUpdate = () => { > updateGroupExtra +
    + ); }; diff --git a/examples/nextjs/src/pages/_document.tsx b/examples/nextjs/src/pages/_document.tsx index 660f65ba..e1e9cbbb 100644 --- a/examples/nextjs/src/pages/_document.tsx +++ b/examples/nextjs/src/pages/_document.tsx @@ -8,12 +8,6 @@ export default function Document() {
    - - ); } diff --git a/examples/nodejs-file-management/CHANGELOG.md b/examples/nodejs-file-management/CHANGELOG.md new file mode 100644 index 00000000..4133e888 --- /dev/null +++ b/examples/nodejs-file-management/CHANGELOG.md @@ -0,0 +1,21 @@ +# @demo/nodejs + +## 0.0.26 + +### Patch Changes + +- Updated dependencies + [[`24ec472`](https://github.com/bnb-chain/greenfield-js-sdk/commit/24ec472b4507d0f3cba3c8fc55b4e9f924d5b1c7), + [`b41fdf0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b41fdf057b7b4b0f416a74fb04ed0793c52c51f7), + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7), + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7)]: + - @bnb-chain/greenfield-js-sdk@1.2.0 + +## 0.0.2-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7), + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7)]: + - @bnb-chain/greenfield-js-sdk@1.2.0-alpha.0 diff --git a/examples/nodejs-file-management/package.json b/examples/nodejs-file-management/package.json index 57491f74..7bc9be83 100644 --- a/examples/nodejs-file-management/package.json +++ b/examples/nodejs-file-management/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.1", + "version": "0.0.26", "type": "commonjs", "private": true, "scripts": { @@ -10,7 +10,7 @@ "author": "", "license": "ISC", "dependencies": { - "@bnb-chain/greenfield-js-sdk": "^1.1.2", + "@bnb-chain/greenfield-js-sdk": "^1.2.0", "@bnb-chain/reed-solomon": "^1.1.1", "dotenv": "^16.3.1", "mime-types": "^2.1.35" diff --git a/examples/nodejs/cases/storage.js b/examples/nodejs/cases/storage.js index 0660b70c..45b85c21 100644 --- a/examples/nodejs/cases/storage.js +++ b/examples/nodejs/cases/storage.js @@ -32,6 +32,9 @@ console.log('objectName', objectName); primarySpAddress: spInfo.primarySpAddress, }, paymentAddress: ACCOUNT_ADDRESS, + tags: { + tags: [], + }, }, { type: 'ECDSA', diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index 7e1486d0..a2e29482 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,55 @@ # @bnb-chain/greenfield-js-sdk +## 1.2.0 + +### Minor Changes + +- [#461](https://github.com/bnb-chain/greenfield-js-sdk/pull/461) + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add SetTag API + +### Patch Changes + +- [#464](https://github.com/bnb-chain/greenfield-js-sdk/pull/464) + [`24ec472`](https://github.com/bnb-chain/greenfield-js-sdk/commit/24ec472b4507d0f3cba3c8fc55b4e9f924d5b1c7) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Sp Api Types + +- [`b41fdf0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b41fdf057b7b4b0f416a74fb04ed0793c52c51f7) + Thanks [@rrr523](https://github.com/rrr523)! - chore: pnpm --no-frozen-lockfile + +- [#461](https://github.com/bnb-chain/greenfield-js-sdk/pull/461) + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Upgrade cosmos types to 0.4.0-alpha.30 + +## 1.2.0-alpha.2 + +### Patch Changes + +- [#464](https://github.com/bnb-chain/greenfield-js-sdk/pull/464) + [`24ec472`](https://github.com/bnb-chain/greenfield-js-sdk/commit/24ec472b4507d0f3cba3c8fc55b4e9f924d5b1c7) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Sp Api Types + +## 1.2.0-alpha.1 + +### Patch Changes + +- [`b41fdf0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b41fdf057b7b4b0f416a74fb04ed0793c52c51f7) + Thanks [@rrr523](https://github.com/rrr523)! - chore: pnpm --no-frozen-lockfile + +## 1.2.0-alpha.0 + +### Minor Changes + +- [#461](https://github.com/bnb-chain/greenfield-js-sdk/pull/461) + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add SetTag API + +### Patch Changes + +- [#461](https://github.com/bnb-chain/greenfield-js-sdk/pull/461) + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Upgrade cosmos types to 0.4.0-alpha.30 + ## 1.1.3 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 7c86f521..8691f578 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.1.3", + "version": "1.2.0", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", @@ -59,7 +59,7 @@ ] }, "dependencies": { - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.23", + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.30", "@bnb-chain/greenfield-zk-crypto": "workspace:*", "@cosmjs/proto-signing": "^0.32.0", "@cosmjs/stargate": "^0.32.0", diff --git a/packages/js-sdk/src/api/crosschain.ts b/packages/js-sdk/src/api/crosschain.ts index ae6d53e7..0c2f03a1 100644 --- a/packages/js-sdk/src/api/crosschain.ts +++ b/packages/js-sdk/src/api/crosschain.ts @@ -6,7 +6,10 @@ import { QuerySendSequenceRequest, QuerySendSequenceResponse, } from '@bnb-chain/greenfield-cosmos-types/cosmos/crosschain/v1/query'; -import { QueryInturnRelayerResponse } from '@bnb-chain/greenfield-cosmos-types/cosmos/oracle/v1/query'; +import { + QueryInturnRelayerRequest, + QueryInturnRelayerResponse, +} from '@bnb-chain/greenfield-cosmos-types/cosmos/oracle/v1/query'; import { MsgClaim } from '@bnb-chain/greenfield-cosmos-types/cosmos/oracle/v1/tx'; import { QueryParamsResponse } from '@bnb-chain/greenfield-cosmos-types/greenfield/bridge/query'; import { MsgTransferOut } from '@bnb-chain/greenfield-cosmos-types/greenfield/bridge/tx'; @@ -58,7 +61,7 @@ export interface ICrossChain { /** * gets the in-turn relayer bls public key and its relay interval */ - getInturnRelayer(): Promise; + getInturnRelayer(request: QueryInturnRelayerRequest): Promise; getCrosschainPackage( request: QueryCrossChainPackageRequest, @@ -117,9 +120,9 @@ export class CrossChain implements ICrossChain { return await rpc.ReceiveSequence(request); } - public async getInturnRelayer() { + public async getInturnRelayer(request: QueryInturnRelayerRequest) { const rpc = await this.queryClient.getOracleQueryClient(); - return await rpc.InturnRelayer(); + return await rpc.InturnRelayer(request); } public async getCrosschainPackage(request: QueryCrossChainPackageRequest) { diff --git a/packages/js-sdk/src/api/feegrant.ts b/packages/js-sdk/src/api/feegrant.ts index fc381d46..74e53688 100644 --- a/packages/js-sdk/src/api/feegrant.ts +++ b/packages/js-sdk/src/api/feegrant.ts @@ -57,6 +57,7 @@ export class FeeGrant implements IFeeGrant { { ...MsgGrantAllowance.toSDK(grantAllowance), allowance: { + // @ts-ignore type: grantAllowance.allowance?.typeUrl, value: base64FromBytes(arrayify('0x' + encodeToHex(JSON.stringify(marshal)))), // TODO: @roshan next version should return hex string diff --git a/packages/js-sdk/src/api/group.ts b/packages/js-sdk/src/api/group.ts index a90c3d77..e0e81c88 100644 --- a/packages/js-sdk/src/api/group.ts +++ b/packages/js-sdk/src/api/group.ts @@ -151,7 +151,7 @@ export class Group implements IGroup { members_to_add: msg.membersToAdd.map((x) => { return { member: x.member, - expiration_time: fromTimestamp(x.expirationTime), + expiration_time: x.expirationTime && fromTimestamp(x.expirationTime), }; }), }, diff --git a/packages/js-sdk/src/api/storage.ts b/packages/js-sdk/src/api/storage.ts index 8dbc518c..97c849b9 100644 --- a/packages/js-sdk/src/api/storage.ts +++ b/packages/js-sdk/src/api/storage.ts @@ -20,10 +20,18 @@ import { import { MsgDeletePolicy, MsgPutPolicy, + MsgSetTag, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import { container, delay, inject, injectable } from 'tsyringe'; -import { fromTimestamp, MsgDeletePolicyTypeUrl, MsgPutPolicyTypeUrl, TxResponse } from '..'; +import { + fromTimestamp, + MsgDeletePolicyTypeUrl, + MsgPutPolicyTypeUrl, + MsgSetTagTypeUrl, + TxResponse, +} from '..'; import { RpcQueryClient } from '../clients/queryclient'; +import { getMsgSetTagSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgSetTag'; export interface IStorage { params(): Promise; @@ -32,6 +40,8 @@ export interface IStorage { deletePolicy(msg: MsgDeletePolicy): Promise; + setTag(msg: MsgSetTag): Promise; + getPolicyForGroup(request: QueryPolicyForGroupRequest): Promise; getQueryPolicyForAccount( @@ -97,6 +107,20 @@ export class Storage implements IStorage { ); } + public async setTag(msg: MsgSetTag) { + const isTagsEmpty = msg?.tags?.tags?.length === 0; + + const MsgSetTagSDKTypeEIP712 = getMsgSetTagSDKTypeEIP712(isTagsEmpty); + + return await this.txClient.tx( + MsgSetTagTypeUrl, + msg.operator, + MsgSetTagSDKTypeEIP712, + MsgSetTag.toSDK(msg), + MsgSetTag.encode(msg).finish(), + ); + } + public async getPolicyForGroup(request: QueryPolicyForGroupRequest) { const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.QueryPolicyForGroup(request); diff --git a/packages/js-sdk/src/constants/typeUrl.ts b/packages/js-sdk/src/constants/typeUrl.ts index 690027a3..e76e990b 100644 --- a/packages/js-sdk/src/constants/typeUrl.ts +++ b/packages/js-sdk/src/constants/typeUrl.ts @@ -19,6 +19,7 @@ export const MsgDeleteBucketTypeUrl = '/greenfield.storage.MsgDeleteBucket'; export const MsgDeleteGroupTypeUrl = '/greenfield.storage.MsgDeleteGroup'; export const MsgDeleteObjectTypeUrl = '/greenfield.storage.MsgDeleteObject'; export const MsgDeletePolicyTypeUrl = '/greenfield.storage.MsgDeletePolicy'; +export const MsgSetTagTypeUrl = '/greenfield.storage.MsgSetTag'; export const MsgLeaveGroupTypeUrl = '/greenfield.storage.MsgLeaveGroup'; export const MsgMirrorBucketTypeUrl = '/greenfield.storage.MsgMirrorBucket'; export const MsgMirrorGroupTypeUrl = '/greenfield.storage.MsgMirrorGroup'; diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts new file mode 100644 index 00000000..c29b64ff --- /dev/null +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgSetTag.ts @@ -0,0 +1,61 @@ +import type { EIP712Msg } from '@/messages/utils'; +import cloneDeep from 'lodash.clonedeep'; + +export const getMsgSetTagSDKTypeEIP712 = (isTagsEmpty: boolean) => { + const res: EIP712Msg = cloneDeep(MsgSetTagSDKTypeEIP712); + + if (!isTagsEmpty) { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'TypeMsg1TagsTags[]', + }, + ]; + res.TypeMsg1TagsTags = [ + { + name: 'key', + type: 'string', + }, + { + name: 'value', + type: 'string', + }, + ]; + } else { + res.Msg1.push({ + name: 'tags', + type: 'TypeMsg1Tags', + }); + + res.TypeMsg1Tags = [ + { + name: 'tags', + type: 'string[]', + }, + ]; + } + + return res; +}; + +const MsgSetTagSDKTypeEIP712 = { + Msg1: [ + { + name: 'operator', + type: 'string', + }, + { + name: 'resource', + type: 'string', + }, + { + name: 'type', + type: 'string', + }, + ], +}; diff --git a/packages/js-sdk/src/types/sp/Common.ts b/packages/js-sdk/src/types/sp/Common.ts index 644b81a3..a8d083c3 100644 --- a/packages/js-sdk/src/types/sp/Common.ts +++ b/packages/js-sdk/src/types/sp/Common.ts @@ -42,6 +42,12 @@ export interface BucketInfo { PaymentAddress: string; SourceType: number; Visibility: number; + Tags: { + Tags: { + Key: string; + Value: string; + }[]; + }; } export interface StreamRecord { @@ -85,9 +91,20 @@ export interface ObjectInfo { RedundancyType: number; SourceType: number; Visibility: number; + Tags: { + Tags: { + Key: string; + Value: string; + }[]; + }; } export function formatBucketInfo(o: BucketInfo): BucketInfo { + let tags = o.Tags.Tags || []; + if (!Array.isArray(tags)) { + tags = [tags]; + } + return { ...o, // PrimarySpId: Number(item.BucketInfo.PrimarySpId), @@ -97,10 +114,18 @@ export function formatBucketInfo(o: BucketInfo): BucketInfo { GlobalVirtualGroupFamilyId: Number(o.GlobalVirtualGroupFamilyId), SourceType: Number(o.SourceType), Visibility: Number(o.Visibility), + Tags: { + Tags: tags, + }, }; } export function formatObjectInfo(o: ObjectInfo): ObjectInfo { + let tags = o.Tags.Tags || []; + if (!Array.isArray(tags)) { + tags = [tags]; + } + return { ...o, CreateAt: Number(o.CreateAt), @@ -111,6 +136,9 @@ export function formatObjectInfo(o: ObjectInfo): ObjectInfo { RedundancyType: Number(o.RedundancyType), SourceType: Number(o.SourceType), Visibility: Number(o.Visibility), + Tags: { + Tags: tags, + }, }; } @@ -140,13 +168,27 @@ export interface GroupInfo { SourceType: number; Id: number; Extra: string; + Tags: { + Tags: { + Key: string; + Value: string; + }[]; + }; } export function formatGroupInfo(o: GroupInfo): GroupInfo { + let tags = o.Tags.Tags || []; + if (!Array.isArray(tags)) { + tags = [tags]; + } + return { ...o, SourceType: Number(o.SourceType), Id: Number(o.Id), + Tags: { + Tags: tags, + }, }; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4bed0da4..db71b048 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.1' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -115,7 +115,7 @@ importers: version: 3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/preset-classic': specifier: 3.0.1 - version: 3.0.1(@algolia/client-search@4.20.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5) + version: 3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) '@mdx-js/react': specifier: ^3.0.0 version: 3.0.0(@types/react@18.2.21)(react@18.2.0) @@ -178,8 +178,8 @@ importers: examples/nextjs: dependencies: '@bnb-chain/greenfield-cosmos-types': - specifier: 0.4.0-alpha.25 - version: 0.4.0-alpha.25 + specifier: 0.4.0-alpha.30 + version: 0.4.0-alpha.30 '@bnb-chain/greenfield-js-sdk': specifier: workspace:* version: link:../../packages/js-sdk @@ -290,7 +290,7 @@ importers: examples/nodejs-file-management: dependencies: '@bnb-chain/greenfield-js-sdk': - specifier: ^1.1.2 + specifier: ^1.2.0-alpha.0 version: link:../../packages/js-sdk '@bnb-chain/reed-solomon': specifier: ^1.1.1 @@ -376,8 +376,8 @@ importers: packages/js-sdk: dependencies: '@bnb-chain/greenfield-cosmos-types': - specifier: 0.4.0-alpha.23 - version: 0.4.0-alpha.23 + specifier: 0.4.0-alpha.30 + version: 0.4.0-alpha.30 '@bnb-chain/greenfield-zk-crypto': specifier: workspace:* version: link:../zk-crypto @@ -486,7 +486,7 @@ importers: version: 3.0.0 ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.23.5)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) @@ -545,47 +545,47 @@ packages: resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} dev: false - /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0): + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0): resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights dev: false - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0): + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0): resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} peerDependencies: search-insights: '>= 1 < 3' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) - search-insights: 2.11.0 + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) + search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch dev: false - /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): + /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0): resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) - '@algolia/client-search': 4.20.0 + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) + '@algolia/client-search': 4.22.0 algoliasearch: 4.20.0 dev: false - /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0): resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/client-search': 4.20.0 + '@algolia/client-search': 4.22.0 algoliasearch: 4.20.0 dev: false @@ -599,6 +599,10 @@ packages: resolution: {integrity: sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==} dev: false + /@algolia/cache-common@4.22.0: + resolution: {integrity: sha512-TPwUMlIGPN16eW67qamNQUmxNiGHg/WBqWcrOoCddhqNTqGDPVqmgfaM85LPbt24t3r1z0zEz/tdsmuq3Q6oaA==} + dev: false + /@algolia/cache-in-memory@4.20.0: resolution: {integrity: sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==} dependencies: @@ -629,6 +633,13 @@ packages: '@algolia/transporter': 4.20.0 dev: false + /@algolia/client-common@4.22.0: + resolution: {integrity: sha512-BlbkF4qXVWuwTmYxVWvqtatCR3lzXwxx628p1wj1Q7QP2+LsTmGt1DiUYRuy9jG7iMsnlExby6kRMOOlbhv2Ag==} + dependencies: + '@algolia/requester-common': 4.22.0 + '@algolia/transporter': 4.22.0 + dev: false + /@algolia/client-personalization@4.20.0: resolution: {integrity: sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==} dependencies: @@ -645,6 +656,14 @@ packages: '@algolia/transporter': 4.20.0 dev: false + /@algolia/client-search@4.22.0: + resolution: {integrity: sha512-bn4qQiIdRPBGCwsNuuqB8rdHhGKKWIij9OqidM1UkQxnSG8yzxHdb7CujM30pvp5EnV7jTqDZRbxacbjYVW20Q==} + dependencies: + '@algolia/client-common': 4.22.0 + '@algolia/requester-common': 4.22.0 + '@algolia/transporter': 4.22.0 + dev: false + /@algolia/events@4.0.1: resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} dev: false @@ -653,6 +672,10 @@ packages: resolution: {integrity: sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==} dev: false + /@algolia/logger-common@4.22.0: + resolution: {integrity: sha512-HMUQTID0ucxNCXs5d1eBJ5q/HuKg8rFVE/vOiLaM4Abfeq1YnTtGV3+rFEhOPWhRQxNDd+YHa4q864IMc0zHpQ==} + dev: false + /@algolia/logger-console@4.20.0: resolution: {integrity: sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==} dependencies: @@ -669,6 +692,10 @@ packages: resolution: {integrity: sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==} dev: false + /@algolia/requester-common@4.22.0: + resolution: {integrity: sha512-Y9cEH/cKjIIZgzvI1aI0ARdtR/xRrOR13g5psCxkdhpgRN0Vcorx+zePhmAa4jdQNqexpxtkUdcKYugBzMZJgQ==} + dev: false + /@algolia/requester-node-http@4.20.0: resolution: {integrity: sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==} dependencies: @@ -683,6 +710,14 @@ packages: '@algolia/requester-common': 4.20.0 dev: false + /@algolia/transporter@4.22.0: + resolution: {integrity: sha512-ieO1k8x2o77GNvOoC+vAkFKppydQSVfbjM3YrSjLmgywiBejPTvU1R1nEvG59JIIUvtSLrZsLGPkd6vL14zopA==} + dependencies: + '@algolia/cache-common': 4.22.0 + '@algolia/logger-common': 4.22.0 + '@algolia/requester-common': 4.22.0 + dev: false + /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} @@ -713,6 +748,11 @@ packages: engines: {node: '>=6.9.0'} dev: false + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/core@7.23.3: resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==} engines: {node: '>=6.9.0'} @@ -757,6 +797,29 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core@7.23.6: + resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/helpers': 7.23.6 + '@babel/parser': 7.23.6 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/eslint-parser@7.21.8(@babel/core@7.23.3)(eslint@8.48.0): resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} @@ -799,6 +862,16 @@ packages: '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + dev: true + /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} @@ -829,6 +902,17 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.2 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.23.3): resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} engines: {node: '>=6.9.0'} @@ -1024,6 +1108,20 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} @@ -1141,6 +1239,11 @@ packages: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-wrap-function@7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} @@ -1182,6 +1285,17 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helpers@7.23.6: + resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/highlight@7.22.13: resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} @@ -1220,6 +1334,14 @@ packages: dependencies: '@babel/types': 7.23.5 + /@babel/parser@7.23.6: + resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.6 + dev: true + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.23.3): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} @@ -3418,6 +3540,24 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse@7.23.6: + resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/types@7.22.15: resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} engines: {node: '>=6.9.0'} @@ -3442,19 +3582,21 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + /@babel/types@7.23.6: + resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.23: - resolution: {integrity: sha512-VAuk5CxTSbiOa8HvlEY/uf8zoTvgyRvQMwQs0S/7wjoloE0I7hSZXWPUEeFmypB1xZuggDtyCfizS2faL/NKeg==} - dependencies: - long: 4.0.0 - protobufjs: 6.11.4 - dev: false - - /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.25: - resolution: {integrity: sha512-A/v0X/rhwmWN8cNmkFCRIzT0sHQn2sb/mPrdwdIgUbjEV49s9KncSAKxRMIz3+ph0KeROmxjUWaDsJ9/KGU2tQ==} + /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.30: + resolution: {integrity: sha512-nYThWPZHfq/bDMEu+Sw9cMMqgTk4NEg+PH9GkvN2OMgpo8QuCDy3Eh4C1g6lJy0BFv+ilethoPmKjSeEwa1m8g==} dependencies: long: 4.0.0 protobufjs: 6.11.4 @@ -4070,7 +4212,7 @@ packages: resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0): + /@docsearch/react@3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -4087,14 +4229,14 @@ packages: search-insights: optional: true dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.11.0) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) '@docsearch/css': 3.5.2 '@types/react': 18.2.21 algoliasearch: 4.20.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - search-insights: 2.11.0 + search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' dev: false @@ -4645,7 +4787,7 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.20.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5): + /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): resolution: {integrity: sha512-il9m9xZKKjoXn6h0cRcdnt6wce0Pv1y5t4xk2Wx7zBGhKG1idu4IFHtikHlD0QPuZ9fizpXspXcTzjL5FXc1Gw==} engines: {node: '>=18.0'} peerDependencies: @@ -4663,7 +4805,7 @@ packages: '@docusaurus/plugin-sitemap': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5) + '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4809,14 +4951,14 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.20.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0)(typescript@4.9.5): + /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): resolution: {integrity: sha512-DDiPc0/xmKSEdwFkXNf1/vH1SzJPzuJBar8kMcBbDAZk/SAmo/4lf6GU2drou4Ae60lN2waix+jYWTWcJRahSA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.11.0) + '@docsearch/react': 3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/logger': 3.0.1 '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) @@ -5716,7 +5858,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 18.16.18 + '@types/node': 20.10.5 '@types/yargs': 17.0.31 chalk: 4.1.2 @@ -7139,13 +7281,13 @@ packages: resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} dependencies: '@types/connect': 3.4.38 - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/bonjour@3.5.11: resolution: {integrity: sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/chai@4.3.5: @@ -7156,13 +7298,13 @@ packages: resolution: {integrity: sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==} dependencies: '@types/express-serve-static-core': 4.17.36 - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/cross-spawn@6.0.3: @@ -7223,7 +7365,7 @@ packages: /@types/express-serve-static-core@4.17.36: resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 '@types/qs': 6.9.8 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -7249,7 +7391,7 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: true /@types/graceful-fs@4.1.6: @@ -7286,7 +7428,7 @@ packages: /@types/http-proxy@1.17.12: resolution: {integrity: sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/is-ci@3.0.0: @@ -7349,7 +7491,7 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/lodash.clonedeep@4.5.7: @@ -7430,7 +7572,7 @@ packages: /@types/mute-stream@0.0.1: resolution: {integrity: sha512-0yQLzYhCqGz7CQPE3iDmYjhb7KMBFOP+tBkyw+/Y2YyDI5wpS7itXXxneN1zSsUwWx3Ji6YiVYrhAnpQGS/vkw==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.6.0 dev: false /@types/node@12.20.55: @@ -7443,6 +7585,11 @@ packages: /@types/node@18.16.18: resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} + /@types/node@20.10.5: + resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==} + dependencies: + undici-types: 5.26.5 + /@types/node@20.6.0: resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} dev: false @@ -7552,7 +7699,7 @@ packages: /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/retry@0.12.0: @@ -7562,7 +7709,7 @@ packages: /@types/sax@1.2.7: resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} dependencies: - '@types/node': 18.16.18 + '@types/node': 17.0.45 dev: false /@types/scheduler@0.16.3: @@ -7593,7 +7740,7 @@ packages: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/serve-index@1.9.1: @@ -7607,13 +7754,13 @@ packages: dependencies: '@types/http-errors': 2.0.2 '@types/mime': 3.0.1 - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/sockjs@0.3.33: resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/stack-utils@2.0.1: @@ -7649,7 +7796,7 @@ packages: /@types/ws@8.5.5: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 dev: false /@types/xml2js@0.4.11: @@ -9805,6 +9952,17 @@ packages: node-releases: 2.0.13 update-browserslist-db: 1.0.13(browserslist@4.22.1) + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001571 + electron-to-chromium: 1.4.616 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + dev: true + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -10003,6 +10161,10 @@ packages: /caniuse-lite@1.0.30001563: resolution: {integrity: sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==} + /caniuse-lite@1.0.30001571: + resolution: {integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==} + dev: true + /case@1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} engines: {node: '>= 0.8.0'} @@ -11555,6 +11717,10 @@ packages: /electron-to-chromium@1.4.588: resolution: {integrity: sha512-soytjxwbgcCu7nh5Pf4S2/4wa6UIu+A3p03U2yVr53qGxi1/VTR3ENI+p50v+UxqqZAfl48j3z55ud7VHIOr9w==} + /electron-to-chromium@1.4.616: + resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} + dev: true + /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -12306,7 +12472,7 @@ packages: resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} engines: {node: '>= 0.8'} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 require-like: 0.1.2 dev: false @@ -14682,7 +14848,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 18.16.18 + '@types/node': 20.10.5 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -14718,7 +14884,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -14736,7 +14902,7 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.16.18 + '@types/node': 20.10.5 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -16425,6 +16591,10 @@ packages: /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -18646,8 +18816,8 @@ packages: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} dev: false - /search-insights@2.11.0: - resolution: {integrity: sha512-Uin2J8Bpm3xaZi9Y8QibSys6uJOFZ+REMrf42v20AA3FUDUrshKkMEP6liJbMAHCm71wO6ls4mwAf7a3gFVxLw==} + /search-insights@2.13.0: + resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} dev: false /secp256k1@4.0.3: @@ -19755,7 +19925,7 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false - /ts-jest@29.1.0(@babel/core@7.23.5)(jest@29.5.0)(typescript@4.9.5): + /ts-jest@29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -19776,7 +19946,7 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) @@ -20003,6 +20173,9 @@ packages: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} dev: false + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + /unenv@1.8.0: resolution: {integrity: sha512-uIGbdCWZfhRRmyKj1UioCepQ0jpq638j/Cf0xFTn4zD1nGJ2lSdzYHLzfdXN791oo/0juUiSWW1fBklXMTsuqg==} dependencies: @@ -20207,6 +20380,17 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 + /update-browserslist-db@1.0.13(browserslist@4.22.2): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /update-notifier@6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} engines: {node: '>=14.16'} From 71d18f3848614c1437d2237e0db2d377629b0b31 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Fri, 5 Jan 2024 10:46:33 +0800 Subject: [PATCH 388/433] chore: Pnpm install --no-frozen-lockfile --- pnpm-lock.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index db71b048..49d424bc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -290,7 +290,7 @@ importers: examples/nodejs-file-management: dependencies: '@bnb-chain/greenfield-js-sdk': - specifier: ^1.2.0-alpha.0 + specifier: ^1.2.0 version: link:../../packages/js-sdk '@bnb-chain/reed-solomon': specifier: ^1.1.1 From e181ae7e56aa987e22cf8ea8bc0aceaf140fc026 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Fri, 5 Jan 2024 10:53:45 +0800 Subject: [PATCH 389/433] 1.2.0 (#474) * chore: [ci] release (alpha) (#138) Co-authored-by: github-actions[bot] * feat: Bump version (#139) * chore: [ci] release (alpha) (#140) Co-authored-by: github-actions[bot] * feat: Split approval and simulate (#141) * chore: [ci] release (alpha) (#142) Co-authored-by: github-actions[bot] * Revert "feat: Split approval and simulate" (#143) * Revert "feat: Split approval and simulate" This reverts commit 76defa7f31b7f2d4683f8ed04e8dc2786dd1ef6c. * Create dirty-parrots-hear.md * chore: [ci] release (alpha) (#144) Co-authored-by: github-actions[bot] * Chore/test case (#145) * chore(test): Remove private key from config * chore: Test CI * chore: Update rainkit version (#146) * feat: Query Lock Fee API (#147) * feat: Query Lock Fee API * Create green-avocados-jump.md * chore: [ci] release (alpha) (#148) Co-authored-by: github-actions[bot] * Update bucket.ts (#149) * Update bucket.ts throw error * Create hot-countries-begin.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#150) Co-authored-by: github-actions[bot] * fix: Return real statuscode when call metaservice (#164) * fix: Return real statuscode when call metaservice * Create kind-eyes-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#166) Co-authored-by: github-actions[bot] * feat: Upgrade types version (#167) * chore: [ci] release (alpha) (#168) Co-authored-by: github-actions[bot] * Feat/sp exit (#169) * feat: Add Virtual Group API * feat: Compatibility createBukcet and createObject API * feat: Add Migrate bucket API * Feat/batch upload (#171) * feat: Feegrant * feat: Feegrant * Create angry-horses-enjoy.md * Feat/batch upload (#174) * feat: Feegrant * feat: Feegrant * feat: Feegrant grantAllowance API * feat: CreateObject example * feat: CreateBucket example * feat: Transfer example * feat: AuthInfoBytes add feePayer and feeGranter * feat: Add Two Apis (#179) * feat: Add Two Apis * Create mean-wombats-remain.md * chore: [ci] release (alpha) (#170) Co-authored-by: github-actions[bot] * feat AuthV1 (#182) * chore: Update example * chore: Update Example * feat: V1Auth * feat: V1Auth generate * feat: V1Auth createObject Approval * Create shaggy-experts-approve.md * Feat/com new (#186) * feat: Remove GetUserBuckets API Auth * feat: Update BucketProps type * feat: Remove listObjects api auth and update response type * feat: Remove listGroup api auth * feat: Update Types * chore: [ci] release (alpha) (#183) Co-authored-by: github-actions[bot] * feat: Offchainauth timeout reduced to 2s (#187) * feat: Offchainauth timeout reduced to 2s * Create warm-planets-exercise.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#188) Co-authored-by: github-actions[bot] * Feat/auth v1 (#189) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * Create empty-pens-sing.md * chore: [ci] release (alpha) (#190) Co-authored-by: github-actions[bot] * Feat/auth v1 (#191) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * feat: API getStorageProviderInfo params update * chore: Upgrade types * feat: GetSpURLfrom bucket * feat: Remove Sp param when create object and bucket * chore: [ci] release (alpha) (#192) Co-authored-by: github-actions[bot] * feat: Change Allwance value type (#193) * chore: Test config update * feat: Change Allowance Type * chore: [ci] release (alpha) (#194) Co-authored-by: github-actions[bot] * feat: MultiTx support private key (#195) * fix: Throw sp error code and message (#197) * fix: Throw sp error code and message * Create good-bobcats-hang.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#196) Co-authored-by: github-actions[bot] * fix: No sp available error (#200) * fix: No sp available error * Create khaki-ducks-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Opt (#198) * chore: Update Example * refactor: Replace @ethereumjs/util with @ethersproject/bytes * feat: Upload Object V1 auth * fix: CreateObjectTx content-type msg * chore: [ci] release (alpha) (#201) Co-authored-by: github-actions[bot] * feat: Extend response time to 3s (#202) * feat: Extend response time to 3s * Create orange-spiders-add.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#203) Co-authored-by: github-actions[bot] * Chore/conflict (#209) * release 0.2.2 (#204) * feat: Update Types * chore: [ci] release (alpha) * Feat/query status (#42) * fix: Return types * feat: Feegrant * fix: Pubkey typeUrl * feat: Upgrade Cosmos SDK * refactor: Simply broadcast and simulate tx * feat: Support Tx by PrivateKey * feat: Replace local message with types npm * test: Test Framework * chore: Upgrade Example wagmi version, Replace ethersjs with viem * feat: Support EIP712 callback use external provider * feat: Support dynamic provider * test: Support jest test * test: Account Query * feat: Change Tx API * feat: Type Complete * chore: Complate Example in New API * fix: Rollup bundle Support Nodejs * feat: Resolute Module (IoC) * docs: Update README * chore: [ci] release (alpha) (#43) Co-authored-by: github-actions[bot] * Feat/multi msg (#49) * feat: Multi Send * feat: Compatibility multi tx message * Revert "Feat/multi msg (#49)" (#53) This reverts commit fc3dd986646624c81f3cc43bdffb02e70d170b4f. * Update WASM (#55) * feat: Update WASM * feat: Update create object tx * docs: Update doc (#56) * feat: Pre alpha (#57) * chore: [ci] release (alpha) (#58) Co-authored-by: github-actions[bot] * Update README.md * multi msg (#59) * feat: Multi Send * feat: Compatibility multi tx message * chore: [ci] release (alpha) (#62) Co-authored-by: github-actions[bot] * fix: CreateObject Msg (#65) * feat: add offchainauth method (#64) * feat: Add offchainauth method * feat: Compatiable old get approval method * Create ten-suits-crash.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> Co-authored-by: rrr523 * chore: [ci] release (alpha) (#66) Co-authored-by: github-actions[bot] * feat: Add Sp params (#67) * feat: Optimize get approval types and add throw error (#70) * feat: Optimize get approval types and add throw error * Create fluffy-snails-explain.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#68) Co-authored-by: github-actions[bot] * chore: Update example without greenfield-cosmos-types (#71) * fix: Return Promise (#72) * fix: Return Promise * Create strong-snails-count.md * chore: [ci] release (alpha) (#73) Co-authored-by: github-actions[bot] * fix: Create Group message (#74) * fix: Create Group message * Create young-bears-scream.md * feat: Add Storage Params API (#76) * chore: [ci] release (alpha) (#75) Co-authored-by: github-actions[bot] * Chore/group example (#77) * feat: Group API * chore: Group and Mirror example * chore: [ci] release (alpha) (#78) Co-authored-by: github-actions[bot] * chore: Update example (#79) * feat: Add query param to ListObjects API for display folder. (#80) * feat: Add query params to ListObjects API for folder * Create clean-dogs-joke.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/group (#82) * chore: Update Example * feat: Add some group API * Create sweet-feet-hide.md * chore: [ci] release (alpha) (#81) Co-authored-by: github-actions[bot] * Update objectt.ts (#83) * Update objectt.ts add missing resp params * Create cold-suns-accept.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/policy (#86) * feat: Policy API * fix: Object API name * Create pretty-bulldogs-notice.md * feat: Migrate out zkbas-js-sdk and upate the sign msg format (#85) * feat: Migrate out zkbas-js-sdk and upate the sign msg format * Create fluffy-pumas-yawn.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#84) Co-authored-by: github-actions[bot] * fix: Head Group (#96) * fix: Head Group * Create cyan-ties-cross.md * feat: Multi Send Txs (#97) * feat: Multi Send Txs * Create lovely-knives-smile.md * chore: [ci] release (alpha) (#98) Co-authored-by: github-actions[bot] * feat: Allow to have sp auth fail (#101) * feat: Allow to have sp auth fail * fix: Replace endpoint with address when auth failed * Create tidy-dodos-care.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: TS lib (#104) * feat: Sync cosmos types (#106) * chore: [ci] release (alpha) (#102) Co-authored-by: github-actions[bot] * chore: Use rainbowkit simply wallet of example (#107) * Feat/update group (#108) * feat: Update group extra api * chore: Test group api * Create quiet-planets-shop.md * chore: [ci] release (alpha) (#109) Co-authored-by: github-actions[bot] * Feat/sp listgroup (#110) * feat: Add sp.listGroup API * chore: Update Example * chore: [ci] release (alpha) (#111) Co-authored-by: github-actions[bot] * chore: Update Example (#112) * chore: Update Examples (#114) * chore(dep): Add cross-env * chore(dep): Npm script * chore: Pnpm engines * chore: Codesandbox Example (#115) * chore(docs): Update stackblitz url (#116) * refactor: CreateFoler API params (#119) * chore: [ci] release (alpha) (#120) Co-authored-by: github-actions[bot] * feat: TimeStamp format * chore: [ci] release (alpha) (#121) Co-authored-by: github-actions[bot] * Refactor/policy (#122) * refactor: Bucket policy * refactor: Bucket policy * chore: [ci] release (alpha) (#123) Co-authored-by: github-actions[bot] * chore(example): BucketPolicy (#127) * Chore/update policy example (#128) * chore(example): BucketPolicy * chore(example): BucketPolicy * Feat/gashub (#129) * feat: Add gas hub API * refactor: TypeUrl as constants * chore: [ci] release (alpha) (#130) Co-authored-by: github-actions[bot] * feat: Export queryClient (#131) * feat: Export queryClient * Create calm-birds-sleep.md * Update README.md * fix: Compatiable net error (#133) * fix: Compatiable net error * Create old-roses-play.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#132) Co-authored-by: github-actions[bot] * Test/test case (#134) * feat: Isomorphic fetch * test: Uint test and e2e test * feat: Sync Types (#136) * feat: Sync Types * Create weak-hounds-sell.md * chore: [ci] release (alpha) (#135) Co-authored-by: github-actions[bot] * Fix/sort types (#137) * feat: Sort EIP712 message field * feat: Extra field * Create happy-humans-thank.md * chore: [ci] release (alpha) (#138) Co-authored-by: github-actions[bot] * feat: Bump version (#139) * chore: [ci] release (alpha) (#140) Co-authored-by: github-actions[bot] * feat: Split approval and simulate (#141) * chore: [ci] release (alpha) (#142) Co-authored-by: github-actions[bot] * Revert "feat: Split approval and simulate" (#143) * Revert "feat: Split approval and simulate" This reverts commit 76defa7f31b7f2d4683f8ed04e8dc2786dd1ef6c. * Create dirty-parrots-hear.md * chore: [ci] release (alpha) (#144) Co-authored-by: github-actions[bot] * Chore/test case (#145) * chore(test): Remove private key from config * chore: Test CI * chore: Update rainkit version (#146) * feat: Query Lock Fee API (#147) * feat: Query Lock Fee API * Create green-avocados-jump.md * chore: [ci] release (alpha) (#148) Co-authored-by: github-actions[bot] * Update bucket.ts (#149) * Update bucket.ts throw error * Create hot-countries-begin.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#150) Co-authored-by: github-actions[bot] * fix: Return real statuscode when call metaservice (#164) * fix: Return real statuscode when call metaservice * Create kind-eyes-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#166) Co-authored-by: github-actions[bot] * feat: Upgrade types version (#167) * chore: [ci] release (alpha) (#168) Co-authored-by: github-actions[bot] * Feat/sp exit (#169) * feat: Add Virtual Group API * feat: Compatibility createBukcet and createObject API * feat: Add Migrate bucket API * Feat/batch upload (#171) * feat: Feegrant * feat: Feegrant * Create angry-horses-enjoy.md * Feat/batch upload (#174) * feat: Feegrant * feat: Feegrant * feat: Feegrant grantAllowance API * feat: CreateObject example * feat: CreateBucket example * feat: Transfer example * feat: AuthInfoBytes add feePayer and feeGranter * feat: Add Two Apis (#179) * feat: Add Two Apis * Create mean-wombats-remain.md * chore: [ci] release (alpha) (#170) Co-authored-by: github-actions[bot] * feat AuthV1 (#182) * chore: Update example * chore: Update Example * feat: V1Auth * feat: V1Auth generate * feat: V1Auth createObject Approval * Create shaggy-experts-approve.md * Feat/com new (#186) * feat: Remove GetUserBuckets API Auth * feat: Update BucketProps type * feat: Remove listObjects api auth and update response type * feat: Remove listGroup api auth * feat: Update Types * chore: [ci] release (alpha) (#183) Co-authored-by: github-actions[bot] * feat: Offchainauth timeout reduced to 2s (#187) * feat: Offchainauth timeout reduced to 2s * Create warm-planets-exercise.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#188) Co-authored-by: github-actions[bot] * Feat/auth v1 (#189) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * Create empty-pens-sing.md * chore: [ci] release (alpha) (#190) Co-authored-by: github-actions[bot] * Feat/auth v1 (#191) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * feat: API getStorageProviderInfo params update * chore: Upgrade types * feat: GetSpURLfrom bucket * feat: Remove Sp param when create object and bucket * chore: [ci] release (alpha) (#192) Co-authored-by: github-actions[bot] * feat: Change Allwance value type (#193) * chore: Test config update * feat: Change Allowance Type * chore: [ci] release (alpha) (#194) Co-authored-by: github-actions[bot] * feat: MultiTx support private key (#195) * fix: Throw sp error code and message (#197) * fix: Throw sp error code and message * Create good-bobcats-hang.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#196) Co-authored-by: github-actions[bot] * fix: No sp available error (#200) * fix: No sp available error * Create khaki-ducks-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Opt (#198) * chore: Update Example * refactor: Replace @ethereumjs/util with @ethersproject/bytes * feat: Upload Object V1 auth * fix: CreateObjectTx content-type msg * chore: [ci] release (alpha) (#201) Co-authored-by: github-actions[bot] * feat: Extend response time to 3s (#202) * feat: Extend response time to 3s * Create orange-spiders-add.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#203) Co-authored-by: github-actions[bot] --------- Co-authored-by: github-actions[bot] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> * chore: Pre exit (#205) * chore: [ci] release (#206) Co-authored-by: github-actions[bot] * chore: Rename package (#207) * chore: [ci] release (#208) Co-authored-by: github-actions[bot] --------- Co-authored-by: github-actions[bot] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> * Feat/payment (#210) * feat: Add Payment query API * fix: Create Payment Account * fix: Payment disableRefund * chore: Update Example * chore: [ci] release (alpha) (#211) Co-authored-by: github-actions[bot] * chore: Update README link (#214) * fix: Return Types (#213) * chore: Update withdraw example params (#212) * chore: Update withdraw example params * feat: Zk crypto wasm package * chore: Nodejs example update package * chore: Add comment * chore: Update UMD name * feat: Upgrade file handle package * chore: Update OffchainAuth example * feat: New Zk package * chore: Changeset (#215) * chore: [ci] release (alpha) (#216) Co-authored-by: github-actions[bot] * Feat/group api (#217) * fix: Dynamic add and delete members string array * chore: Release zk crypto * chore: [ci] release (alpha) (#218) Co-authored-by: github-actions[bot] * chore: Release zk crypto (#219) * chore: [ci] release (alpha) (#220) Co-authored-by: github-actions[bot] * fix: Zk version bump (#221) * chore: [ci] release (alpha) (#222) Co-authored-by: github-actions[bot] * fix: DeepClone EIP712 (#223) * chore: [ci] release (alpha) (#224) Co-authored-by: github-actions[bot] * fix: Error try catch (#230) * chore: [ci] release (alpha) (#231) Co-authored-by: github-actions[bot] * Feat/auth (#232) * feat: Compatibility new payment api * feat: Compatibility updateGroupMember api * chore: Update example * feat: Feegrant api add timestamp * feat: EDDSA Sign * feat: Remove log (#234) * chore: [ci] release (alpha) (#233) Co-authored-by: github-actions[bot] * fix: Feegrant add expiration time (#235) * fix: Feegrant add expiration time * chore(example): GetAllowence support pagination * refactor (#236) * refactor: Tx * fix: Type * feat: Add Group API * feat: Update Sp API * feat: Bucket add authType * feat: and add params * fix: Types * feat: Change type * chore: [ci] release (alpha) (#237) Co-authored-by: github-actions[bot] * Fix/read quota (#238) * fix: CreateBucketApproval * feat: ReadQuota * chore(example): Update Example * chore: [ci] release (alpha) (#239) Co-authored-by: github-actions[bot] * XML response (#240) * feat: Return XML type * feat: CreateBucket Add payment address * chore: [ci] release (alpha) (#241) Co-authored-by: github-actions[bot] * fix: XMLParser force array not object (#242) * Feat/export req (#243) * fix: XMLParser force array not object * fix: XMLParser force array not object * chore: [ci] release (alpha) (#244) Co-authored-by: github-actions[bot] * feat: Export types (#245) * Export types (#247) * feat: Export types * fix: Hex number convert to string not big number * chore: [ci] release (alpha) (#246) Co-authored-by: github-actions[bot] * Feat/up and down (#248) * feat: Upload Object add AuthType * feat: Download s3 object * feat: Migrate Bucket add authType * feat: SpClient expose makeHeaders method * chore: Update constant pathj * chore: [ci] release (alpha) (#249) Co-authored-by: github-actions[bot] * Feat/xml null (#250) * feat: Add default XML value * feat: Add default XML value * chore: [ci] release (alpha) (#251) Co-authored-by: github-actions[bot] * Fix/gap time (#252) * fix: Gap time * fix: Gap time * Feat/meta (#254) * feat: GetBucketMeta * feat: Object Meta * Create curly-fishes-bow.md * chore: [ci] release (alpha) (#253) Co-authored-by: github-actions[bot] * Refactor/sp client (#255) * chore: Exact parseError * feat: Remove deps * chore: Structor * feat: Refeactor Sp Client * chore: [ci] release (alpha) (#256) Co-authored-by: github-actions[bot] * feat: Custom HTTP method (#257) * feat: Custom HTTP method * chore(example): Update * chore: [ci] release (alpha) (#258) Co-authored-by: github-actions[bot] * chore(docs): Update README (#259) * chore: Add comment (#260) * fix: Sp types (#261) * Feat/upload progress (#263) * fix: GfSpGetUserBucketsResponse Bucket types * feat: Cross fetch * chore: [ci] release (alpha) (#262) Co-authored-by: github-actions[bot] * fix: EncodePath (#264) * chore: [ci] release (alpha) (#265) Co-authored-by: github-actions[bot] * fix: Download http method (#266) * fix: Download http method (#267) * chore: [ci] release (alpha) (#268) Co-authored-by: github-actions[bot] * feat: New API getObjectPreviewUrl (#270) * chore: [ci] release (alpha) (#271) Co-authored-by: github-actions[bot] * fix: XML type align to go struct (#272) * feat: Optional endpoint param (#273) * chore: [ci] release (alpha) (#274) Co-authored-by: github-actions[bot] * fix: XML parse boolean (#275) * chore: [ci] release (alpha) (#276) Co-authored-by: github-actions[bot] * fix: Common Prefix parse as array (#277) * chore: [ci] release (alpha) (#278) Co-authored-by: github-actions[bot] * test: Parse XML test case (#279) * feat: Migrate bucket (#280) * fix: Create bucket quota params (#282) * chore: [ci] release (alpha) (#281) Co-authored-by: github-actions[bot] * feat: Replace xml2js to fast-xml-parse (#283) * Feat/update bucket info (#284) * feat: Update Bucket Info API * chore(example): Update * chore: [ci] release (alpha) (#285) Co-authored-by: github-actions[bot] * fix: EncodePath function (#286) * fix: Convert enum to number (#287) * chore: [ci] release (alpha) (#288) Co-authored-by: github-actions[bot] * feat: Add listReadRecords api * feat: ListGroups API * feat: ListObjectsByIds API * feat: ListBucketsByIds api * feat: Add verifyPermission api * feat: ListGroupsMembers * feat: ListUserGroups api * feat: Add listUserOwnedGroups api * chore: [ci] release (alpha) * feat: Sort query (#292) * feat: Sort query * Create healthy-chicken-beam.md * chore: [ci] release (alpha) (#293) Co-authored-by: github-actions[bot] * chore(exmaple): Group (#294) * docs: Update API (#295) * chore: Pre Exit (#296) * Pre exit (#297) * chore: Pre Exit * chore: Pre Exit * chore: [ci] release (#298) Co-authored-by: github-actions[bot] * chore: Pre Enter (#299) * Refactor/sp (#302) * feat: Auth expiry timestamp add default value * refactor: Sp types * fix: Expire time * feat: Upgrade TinyGo version * Refactor/sp (#305) * feat: Auth expiry timestamp add default value * refactor: Sp types * fix: Expire time * feat: Upgrade TinyGo version * refactor: Sp metainfo * chore: Update Example * chore: [ci] release (alpha) (#303) Co-authored-by: github-actions[bot] * fix: Build (#306) * chore: Update Deps (#308) * chore: [ci] release (alpha) (#307) Co-authored-by: github-actions[bot] * docs: Update README (#309) * Feat/validator (#310) * feat: EditValidator * feat: Add proposal api * refactor: TxClient * feat: Bucket listBucketsByPaymentAccount api * fix: Proposal and Validator API * feat: ListUserPaymentAccount api * chore: [ci] release (alpha) (#311) Co-authored-by: github-actions[bot] * chore: Nodejs example update * test: Test case update * chore: README update * feat: ListBuckets * fix: QueryClient and TxClient is not singleton * chore: Upgrade types * fix: PutPolicy * feat: ListObjectPolicies api * chore: [ci] release (alpha) * fix: IOC (#314) fix: All class use injectable * chore: [ci] release (alpha) (#315) Co-authored-by: github-actions[bot] * chore: Update exmaple (#316) * feat: Distribution API (#317) * chore: [ci] release (alpha) (#318) Co-authored-by: github-actions[bot] * feat: MsgSettle (#319) * feat: MsgSettle * Create fast-houses-do.md * chore: [ci] release (alpha) (#320) Co-authored-by: github-actions[bot] * chore(example): Update custom tx (#321) * chore: [ci] release (alpha) (#322) Co-authored-by: github-actions[bot] * chore: Github Action issue close (#323) * feat: Bucket headBucketExtra api (#324) * chore: [ci] release (alpha) (#325) Co-authored-by: github-actions[bot] * chore: Nodejs Example update (#326) * chore: Example Update (#327) * Chore/example (#328) * chore: Example Update * chore: Example Update * chore: Update (#329) * feat: Custom Tx (#330) * chore: [ci] release (alpha) (#331) Co-authored-by: github-actions[bot] * fix: Delete Policy (#332) * chore: [ci] release (alpha) (#333) Co-authored-by: github-actions[bot] * Feat/create app (#334) * feat: Template Init * feat: Template Init * feat: Create App Commander * chore: [ci] release (alpha) (#335) Co-authored-by: github-actions[bot] * feat: Create App Commander (#336) * chore: [ci] release (alpha) (#337) Co-authored-by: github-actions[bot] * chore: Update README (#338) * feat: Add vite template (#339) * chore: [ci] release (alpha) (#340) Co-authored-by: github-actions[bot] * release 0.2.5 (#341) chore: Pre Exit * chore: [ci] release (#342) Co-authored-by: github-actions[bot] * chore: Enter pre (#343) * chore(docs): Update README (#344) * Chore/package (#346) * chore: Update package.json * chore: Update package.json * Chore/package js sdk (#347) * chore: Update deps * chore: Update deps * chore: [ci] release (alpha) (#348) Co-authored-by: github-actions[bot] * Chore/update deps (#349) * chore: Update deps * chore: Update deps * Docs site ! (#350) * feat: Docs init * feat: Docs init * chore: Update README * docs: Update Docs * chore: Update deps * chore: Update docs * chore: Update docs * chore: Update * docs: Update * docs: Update * docs: Update * docs: Update Crosschain doc * chore: Update docs * chore: Pre exit (#351) * chore: [ci] release (#352) Co-authored-by: github-actions[bot] * feat: Custom Tx support any type! (#355) * chore: Pre enter (#357) * chore: [ci] release (alpha) (#356) Co-authored-by: github-actions[bot] * fix: Offchain auth ei.data undefined (#358) * fix: Offchain auth ei.data undefined * Create witty-bikes-flash.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#359) Co-authored-by: github-actions[bot] * fix: Offchain auth ei.data undefined (#360) * fix: Offchain auth ei.data undefined * Create ten-maps-travel.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#361) Co-authored-by: github-actions[bot] * chore: Release 1.0.0 (#365) * chore: [ci] release (alpha) (#366) Co-authored-by: github-actions[bot] * chore: Pre exit (#367) * chore: [ci] release (#368) Co-authored-by: github-actions[bot] * chore: Pre enter * fix(types): Payment listUserPaymentAccounts return response (#370) * fix(types): Payment listUserPaymentAccounts return response * fix(types): Payment listUserPaymentAccounts return response * Create chilly-pens-listen.md * chore: [ci] release (alpha) (#371) Co-authored-by: github-actions[bot] * chore: Update doc url (#372) * chore: Pre exit (#377) * chore: [ci] release (#378) Co-authored-by: github-actions[bot] * fix: Replace legacy method (#381) * fix: Replace legacy method * Create cool-shoes-visit.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: Update Deps (#382) * docs: Update README (#384) * chore: [ci] release (#383) Co-authored-by: github-actions[bot] * Feat/new msg tag (#413) * feat: Upgrade types to 0.4.0-alpha-25 * feat: Create Group with tags * feat: SetTag tx * chore(example): Update Group Tag * feat: Create Bucket with tags * chore(example): Create bucket with tags * refactor: Rename Object class name * feat: Create Object with tags * chore(example): Create Object with tags * chore: Enter pre changeset * chore: Minor Changeset * chore: [ci] release (alpha) (#414) Co-authored-by: github-actions[bot] * Chore/update create tags (#415) * chore(example): Nodejs example update new create tx * docs: Update Docs - new create tx * chore: Remove engines filed (#418) * Feat/js reed solomon (#422) * feat: Js implement reed solomon * docs: Update README * docs: Update README * Create beige-beds-lay.md * feat: Empty buffer * chore: Update params * feat: Nodejs support worker * feat: Nodejs support worker * feat: Add types * chore: Update Nodejs example * chore: Update docs and example * chore: [ci] release (alpha) (#419) Co-authored-by: github-actions[bot] * chore: Update example (#423) * feat: Add SP Api types (#424) * chore: [ci] release (alpha) (#425) Co-authored-by: github-actions[bot] * feat: Add bucket meta type (#426) * feat: Add bucket meta type (#427) * chore: [ci] release (alpha) (#428) Co-authored-by: github-actions[bot] * Feat/rs webworker (#429) * chore: Update example, using reed solomon * chore: Update Rollup config * chore: Benchmark * docs: Update README * feat: Support WebWorker * chore: [ci] release (alpha) (#430) Co-authored-by: github-actions[bot] * Feat/rs webworker (#431) * chore: Update example, using reed solomon * chore: Update Rollup config * chore: Benchmark * docs: Update README * feat: Support WebWorker * feat: Add types * chore: Add benchmark * Merge branch 'alpha' into feat/rs_webworker * chore: [ci] release (alpha) (#432) Co-authored-by: github-actions[bot] * chore: Exit pre * chore: [ci] release (#433) Co-authored-by: github-actions[bot] * chore: Enter alpha * Feat/new tag (#461) * Fix/sp tag type (#444) * fix: Sp types * fix: Sp types (cherry picked from commit eb75e4d2716d97249bc9f57f20861368ca73204c) * fix: Tag compatibility (#443) (cherry picked from commit 7a2e9d263648c1032f3422235518eb748d99eeab) * feat: Upgrade cosmos type to 0.4.0 alpha 30 * chore: Update feegranet example * feat: Add SetTag API * chore: [ci] release (alpha) (#462) Co-authored-by: github-actions[bot] * chore: Pnpm install --no-frozen-lockfile * chore: [ci] release (alpha) (#463) Co-authored-by: github-actions[bot] * feat: Sp Api types (#464) * chore: [ci] release (alpha) (#465) Co-authored-by: github-actions[bot] * chore: Pre Exit (#468) * chore: [ci] release (#469) Co-authored-by: github-actions[bot] * chore: Pnpm install --no-frozen-lockfile --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl --- pnpm-lock.yaml | 245 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 244 insertions(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index db71b048..9659929a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,5 @@ lockfileVersion: '6.0' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -116,6 +117,7 @@ importers: '@docusaurus/preset-classic': specifier: 3.0.1 version: 3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) + version: 3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) '@mdx-js/react': specifier: ^3.0.0 version: 3.0.0(@types/react@18.2.21)(react@18.2.0) @@ -180,6 +182,8 @@ importers: '@bnb-chain/greenfield-cosmos-types': specifier: 0.4.0-alpha.30 version: 0.4.0-alpha.30 + specifier: 0.4.0-alpha.30 + version: 0.4.0-alpha.30 '@bnb-chain/greenfield-js-sdk': specifier: workspace:* version: link:../../packages/js-sdk @@ -290,7 +294,7 @@ importers: examples/nodejs-file-management: dependencies: '@bnb-chain/greenfield-js-sdk': - specifier: ^1.2.0-alpha.0 + specifier: ^1.2.0 version: link:../../packages/js-sdk '@bnb-chain/reed-solomon': specifier: ^1.1.1 @@ -378,6 +382,8 @@ importers: '@bnb-chain/greenfield-cosmos-types': specifier: 0.4.0-alpha.30 version: 0.4.0-alpha.30 + specifier: 0.4.0-alpha.30 + version: 0.4.0-alpha.30 '@bnb-chain/greenfield-zk-crypto': specifier: workspace:* version: link:../zk-crypto @@ -487,6 +493,7 @@ importers: ts-jest: specifier: ^29.1.0 version: 29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) @@ -545,17 +552,21 @@ packages: resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} dev: false + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0): /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0): resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} dependencies: '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0) '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights dev: false + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0): /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0): resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} peerDependencies: @@ -563,28 +574,35 @@ packages: dependencies: '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) search-insights: 2.13.0 + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) + search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch dev: false + /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0): /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0): resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) + '@algolia/client-search': 4.22.0 '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) '@algolia/client-search': 4.22.0 algoliasearch: 4.20.0 dev: false + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0): /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0): resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: + '@algolia/client-search': 4.22.0 '@algolia/client-search': 4.22.0 algoliasearch: 4.20.0 dev: false @@ -603,6 +621,10 @@ packages: resolution: {integrity: sha512-TPwUMlIGPN16eW67qamNQUmxNiGHg/WBqWcrOoCddhqNTqGDPVqmgfaM85LPbt24t3r1z0zEz/tdsmuq3Q6oaA==} dev: false + /@algolia/cache-common@4.22.0: + resolution: {integrity: sha512-TPwUMlIGPN16eW67qamNQUmxNiGHg/WBqWcrOoCddhqNTqGDPVqmgfaM85LPbt24t3r1z0zEz/tdsmuq3Q6oaA==} + dev: false + /@algolia/cache-in-memory@4.20.0: resolution: {integrity: sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==} dependencies: @@ -640,6 +662,13 @@ packages: '@algolia/transporter': 4.22.0 dev: false + /@algolia/client-common@4.22.0: + resolution: {integrity: sha512-BlbkF4qXVWuwTmYxVWvqtatCR3lzXwxx628p1wj1Q7QP2+LsTmGt1DiUYRuy9jG7iMsnlExby6kRMOOlbhv2Ag==} + dependencies: + '@algolia/requester-common': 4.22.0 + '@algolia/transporter': 4.22.0 + dev: false + /@algolia/client-personalization@4.20.0: resolution: {integrity: sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==} dependencies: @@ -664,6 +693,14 @@ packages: '@algolia/transporter': 4.22.0 dev: false + /@algolia/client-search@4.22.0: + resolution: {integrity: sha512-bn4qQiIdRPBGCwsNuuqB8rdHhGKKWIij9OqidM1UkQxnSG8yzxHdb7CujM30pvp5EnV7jTqDZRbxacbjYVW20Q==} + dependencies: + '@algolia/client-common': 4.22.0 + '@algolia/requester-common': 4.22.0 + '@algolia/transporter': 4.22.0 + dev: false + /@algolia/events@4.0.1: resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} dev: false @@ -676,6 +713,10 @@ packages: resolution: {integrity: sha512-HMUQTID0ucxNCXs5d1eBJ5q/HuKg8rFVE/vOiLaM4Abfeq1YnTtGV3+rFEhOPWhRQxNDd+YHa4q864IMc0zHpQ==} dev: false + /@algolia/logger-common@4.22.0: + resolution: {integrity: sha512-HMUQTID0ucxNCXs5d1eBJ5q/HuKg8rFVE/vOiLaM4Abfeq1YnTtGV3+rFEhOPWhRQxNDd+YHa4q864IMc0zHpQ==} + dev: false + /@algolia/logger-console@4.20.0: resolution: {integrity: sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==} dependencies: @@ -696,6 +737,10 @@ packages: resolution: {integrity: sha512-Y9cEH/cKjIIZgzvI1aI0ARdtR/xRrOR13g5psCxkdhpgRN0Vcorx+zePhmAa4jdQNqexpxtkUdcKYugBzMZJgQ==} dev: false + /@algolia/requester-common@4.22.0: + resolution: {integrity: sha512-Y9cEH/cKjIIZgzvI1aI0ARdtR/xRrOR13g5psCxkdhpgRN0Vcorx+zePhmAa4jdQNqexpxtkUdcKYugBzMZJgQ==} + dev: false + /@algolia/requester-node-http@4.20.0: resolution: {integrity: sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==} dependencies: @@ -718,6 +763,14 @@ packages: '@algolia/requester-common': 4.22.0 dev: false + /@algolia/transporter@4.22.0: + resolution: {integrity: sha512-ieO1k8x2o77GNvOoC+vAkFKppydQSVfbjM3YrSjLmgywiBejPTvU1R1nEvG59JIIUvtSLrZsLGPkd6vL14zopA==} + dependencies: + '@algolia/cache-common': 4.22.0 + '@algolia/logger-common': 4.22.0 + '@algolia/requester-common': 4.22.0 + dev: false + /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} @@ -753,6 +806,11 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/core@7.23.3: resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==} engines: {node: '>=6.9.0'} @@ -820,6 +878,29 @@ packages: - supports-color dev: true + /@babel/core@7.23.6: + resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/helpers': 7.23.6 + '@babel/parser': 7.23.6 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/eslint-parser@7.21.8(@babel/core@7.23.3)(eslint@8.48.0): resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} @@ -872,6 +953,16 @@ packages: jsesc: 2.5.2 dev: true + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + dev: true + /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} @@ -913,6 +1004,17 @@ packages: semver: 6.3.1 dev: true + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.2 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.23.3): resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} engines: {node: '>=6.9.0'} @@ -1122,6 +1224,20 @@ packages: '@babel/helper-validator-identifier': 7.22.20 dev: true + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} @@ -1244,6 +1360,11 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-wrap-function@7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} @@ -1296,6 +1417,17 @@ packages: - supports-color dev: true + /@babel/helpers@7.23.6: + resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/highlight@7.22.13: resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} @@ -1342,6 +1474,14 @@ packages: '@babel/types': 7.23.6 dev: true + /@babel/parser@7.23.6: + resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.6 + dev: true + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.23.3): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} @@ -3558,6 +3698,24 @@ packages: - supports-color dev: true + /@babel/traverse@7.23.6: + resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/types@7.22.15: resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} engines: {node: '>=6.9.0'} @@ -3591,10 +3749,21 @@ packages: to-fast-properties: 2.0.0 dev: true + /@babel/types@7.23.6: + resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true + /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.30: + resolution: {integrity: sha512-nYThWPZHfq/bDMEu+Sw9cMMqgTk4NEg+PH9GkvN2OMgpo8QuCDy3Eh4C1g6lJy0BFv+ilethoPmKjSeEwa1m8g==} /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.30: resolution: {integrity: sha512-nYThWPZHfq/bDMEu+Sw9cMMqgTk4NEg+PH9GkvN2OMgpo8QuCDy3Eh4C1g6lJy0BFv+ilethoPmKjSeEwa1m8g==} dependencies: @@ -4212,6 +4381,7 @@ packages: resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false + /@docsearch/react@3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): /@docsearch/react@3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: @@ -4229,6 +4399,8 @@ packages: search-insights: optional: true dependencies: + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0) '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) '@docsearch/css': 3.5.2 @@ -4237,6 +4409,7 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) search-insights: 2.13.0 + search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' dev: false @@ -4787,6 +4960,7 @@ packages: - webpack-cli dev: false + /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): resolution: {integrity: sha512-il9m9xZKKjoXn6h0cRcdnt6wce0Pv1y5t4xk2Wx7zBGhKG1idu4IFHtikHlD0QPuZ9fizpXspXcTzjL5FXc1Gw==} engines: {node: '>=18.0'} @@ -4806,6 +4980,7 @@ packages: '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) + '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4951,6 +5126,7 @@ packages: - webpack-cli dev: false + /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): resolution: {integrity: sha512-DDiPc0/xmKSEdwFkXNf1/vH1SzJPzuJBar8kMcBbDAZk/SAmo/4lf6GU2drou4Ae60lN2waix+jYWTWcJRahSA==} engines: {node: '>=18.0'} @@ -4958,6 +5134,7 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 dependencies: + '@docsearch/react': 3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) '@docsearch/react': 3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/logger': 3.0.1 @@ -5859,6 +6036,7 @@ packages: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 20.10.5 + '@types/node': 20.10.5 '@types/yargs': 17.0.31 chalk: 4.1.2 @@ -7282,12 +7460,14 @@ packages: dependencies: '@types/connect': 3.4.38 '@types/node': 20.10.5 + '@types/node': 20.10.5 dev: false /@types/bonjour@3.5.11: resolution: {integrity: sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==} dependencies: '@types/node': 20.10.5 + '@types/node': 20.10.5 dev: false /@types/chai@4.3.5: @@ -7299,12 +7479,14 @@ packages: dependencies: '@types/express-serve-static-core': 4.17.36 '@types/node': 20.10.5 + '@types/node': 20.10.5 dev: false /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: '@types/node': 20.10.5 + '@types/node': 20.10.5 dev: false /@types/cross-spawn@6.0.3: @@ -7365,6 +7547,7 @@ packages: /@types/express-serve-static-core@4.17.36: resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} dependencies: + '@types/node': 20.10.5 '@types/node': 20.10.5 '@types/qs': 6.9.8 '@types/range-parser': 1.2.4 @@ -7392,6 +7575,7 @@ packages: dependencies: '@types/minimatch': 5.1.2 '@types/node': 20.10.5 + '@types/node': 20.10.5 dev: true /@types/graceful-fs@4.1.6: @@ -7429,6 +7613,7 @@ packages: resolution: {integrity: sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==} dependencies: '@types/node': 20.10.5 + '@types/node': 20.10.5 dev: false /@types/is-ci@3.0.0: @@ -7492,6 +7677,7 @@ packages: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: '@types/node': 20.10.5 + '@types/node': 20.10.5 dev: false /@types/lodash.clonedeep@4.5.7: @@ -7573,6 +7759,7 @@ packages: resolution: {integrity: sha512-0yQLzYhCqGz7CQPE3iDmYjhb7KMBFOP+tBkyw+/Y2YyDI5wpS7itXXxneN1zSsUwWx3Ji6YiVYrhAnpQGS/vkw==} dependencies: '@types/node': 20.6.0 + '@types/node': 20.6.0 dev: false /@types/node@12.20.55: @@ -7590,6 +7777,11 @@ packages: dependencies: undici-types: 5.26.5 + /@types/node@20.10.5: + resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==} + dependencies: + undici-types: 5.26.5 + /@types/node@20.6.0: resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} dev: false @@ -7700,6 +7892,7 @@ packages: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: '@types/node': 20.10.5 + '@types/node': 20.10.5 dev: false /@types/retry@0.12.0: @@ -7710,6 +7903,7 @@ packages: resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} dependencies: '@types/node': 17.0.45 + '@types/node': 17.0.45 dev: false /@types/scheduler@0.16.3: @@ -7741,6 +7935,7 @@ packages: dependencies: '@types/mime': 1.3.2 '@types/node': 20.10.5 + '@types/node': 20.10.5 dev: false /@types/serve-index@1.9.1: @@ -7755,12 +7950,14 @@ packages: '@types/http-errors': 2.0.2 '@types/mime': 3.0.1 '@types/node': 20.10.5 + '@types/node': 20.10.5 dev: false /@types/sockjs@0.3.33: resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: '@types/node': 20.10.5 + '@types/node': 20.10.5 dev: false /@types/stack-utils@2.0.1: @@ -7797,6 +7994,7 @@ packages: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: '@types/node': 20.10.5 + '@types/node': 20.10.5 dev: false /@types/xml2js@0.4.11: @@ -9963,6 +10161,17 @@ packages: update-browserslist-db: 1.0.13(browserslist@4.22.2) dev: true + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001571 + electron-to-chromium: 1.4.616 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + dev: true + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -10165,6 +10374,10 @@ packages: resolution: {integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==} dev: true + /caniuse-lite@1.0.30001571: + resolution: {integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==} + dev: true + /case@1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} engines: {node: '>= 0.8.0'} @@ -11721,6 +11934,10 @@ packages: resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} dev: true + /electron-to-chromium@1.4.616: + resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} + dev: true + /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -12472,6 +12689,7 @@ packages: resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} engines: {node: '>= 0.8'} dependencies: + '@types/node': 20.10.5 '@types/node': 20.10.5 require-like: 0.1.2 dev: false @@ -14849,6 +15067,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/node': 20.10.5 + '@types/node': 20.10.5 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -14884,6 +15103,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: + '@types/node': 20.10.5 '@types/node': 20.10.5 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -14902,6 +15122,7 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: + '@types/node': 20.10.5 '@types/node': 20.10.5 jest-util: 29.7.0 merge-stream: 2.0.0 @@ -16595,6 +16816,10 @@ packages: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} dev: true + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -18816,6 +19041,8 @@ packages: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} dev: false + /search-insights@2.13.0: + resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} /search-insights@2.13.0: resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} dev: false @@ -19925,6 +20152,7 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false + /ts-jest@29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5): /ts-jest@29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -19946,6 +20174,7 @@ packages: esbuild: optional: true dependencies: + '@babel/core': 7.23.6 '@babel/core': 7.23.6 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 @@ -20176,6 +20405,9 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + /unenv@1.8.0: resolution: {integrity: sha512-uIGbdCWZfhRRmyKj1UioCepQ0jpq638j/Cf0xFTn4zD1nGJ2lSdzYHLzfdXN791oo/0juUiSWW1fBklXMTsuqg==} dependencies: @@ -20391,6 +20623,17 @@ packages: picocolors: 1.0.0 dev: true + /update-browserslist-db@1.0.13(browserslist@4.22.2): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /update-notifier@6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} engines: {node: '>=14.16'} From fa2ca10a07712440789d6eb4a5b676e23e1bce26 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Wed, 31 Jan 2024 10:30:14 +0800 Subject: [PATCH 390/433] docs: Update docs (#480) --- doc-site/docs/client/greenfield.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc-site/docs/client/greenfield.mdx b/doc-site/docs/client/greenfield.mdx index cbb03c7b..3ff0c924 100644 --- a/doc-site/docs/client/greenfield.mdx +++ b/doc-site/docs/client/greenfield.mdx @@ -20,7 +20,7 @@ const client = Client.create(GRPC_URL, GREEN_CHAIN_ID); // Browser const client = Client.create(GRPC_URL, String(GREEN_CHAIN_ID), { zkCryptoUrl: - 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto/dist/node/zk-crypto.wasm', + 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto@0.0.3/dist/node/zk-crypto.wasm', }); ``` From 1a99e129c60a47df8fb78be0f0a2b0ce1c29b983 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Wed, 31 Jan 2024 10:37:39 +0800 Subject: [PATCH 391/433] chore: Update pnpm lock file (#481) --- pnpm-lock.yaml | 243 ------------------------------------------------- 1 file changed, 243 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9659929a..49d424bc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,4 @@ lockfileVersion: '6.0' -lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -117,7 +116,6 @@ importers: '@docusaurus/preset-classic': specifier: 3.0.1 version: 3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) - version: 3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) '@mdx-js/react': specifier: ^3.0.0 version: 3.0.0(@types/react@18.2.21)(react@18.2.0) @@ -182,8 +180,6 @@ importers: '@bnb-chain/greenfield-cosmos-types': specifier: 0.4.0-alpha.30 version: 0.4.0-alpha.30 - specifier: 0.4.0-alpha.30 - version: 0.4.0-alpha.30 '@bnb-chain/greenfield-js-sdk': specifier: workspace:* version: link:../../packages/js-sdk @@ -382,8 +378,6 @@ importers: '@bnb-chain/greenfield-cosmos-types': specifier: 0.4.0-alpha.30 version: 0.4.0-alpha.30 - specifier: 0.4.0-alpha.30 - version: 0.4.0-alpha.30 '@bnb-chain/greenfield-zk-crypto': specifier: workspace:* version: link:../zk-crypto @@ -493,7 +487,6 @@ importers: ts-jest: specifier: ^29.1.0 version: 29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5) - version: 29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) @@ -552,21 +545,17 @@ packages: resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} dev: false - /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0): /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0): resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} dependencies: '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0) '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights dev: false - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0): /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0): resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} peerDependencies: @@ -574,35 +563,28 @@ packages: dependencies: '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) search-insights: 2.13.0 - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) - search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch dev: false - /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0): /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0): resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) - '@algolia/client-search': 4.22.0 '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) '@algolia/client-search': 4.22.0 algoliasearch: 4.20.0 dev: false - /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0): /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0): resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/client-search': 4.22.0 '@algolia/client-search': 4.22.0 algoliasearch: 4.20.0 dev: false @@ -621,10 +603,6 @@ packages: resolution: {integrity: sha512-TPwUMlIGPN16eW67qamNQUmxNiGHg/WBqWcrOoCddhqNTqGDPVqmgfaM85LPbt24t3r1z0zEz/tdsmuq3Q6oaA==} dev: false - /@algolia/cache-common@4.22.0: - resolution: {integrity: sha512-TPwUMlIGPN16eW67qamNQUmxNiGHg/WBqWcrOoCddhqNTqGDPVqmgfaM85LPbt24t3r1z0zEz/tdsmuq3Q6oaA==} - dev: false - /@algolia/cache-in-memory@4.20.0: resolution: {integrity: sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==} dependencies: @@ -662,13 +640,6 @@ packages: '@algolia/transporter': 4.22.0 dev: false - /@algolia/client-common@4.22.0: - resolution: {integrity: sha512-BlbkF4qXVWuwTmYxVWvqtatCR3lzXwxx628p1wj1Q7QP2+LsTmGt1DiUYRuy9jG7iMsnlExby6kRMOOlbhv2Ag==} - dependencies: - '@algolia/requester-common': 4.22.0 - '@algolia/transporter': 4.22.0 - dev: false - /@algolia/client-personalization@4.20.0: resolution: {integrity: sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==} dependencies: @@ -693,14 +664,6 @@ packages: '@algolia/transporter': 4.22.0 dev: false - /@algolia/client-search@4.22.0: - resolution: {integrity: sha512-bn4qQiIdRPBGCwsNuuqB8rdHhGKKWIij9OqidM1UkQxnSG8yzxHdb7CujM30pvp5EnV7jTqDZRbxacbjYVW20Q==} - dependencies: - '@algolia/client-common': 4.22.0 - '@algolia/requester-common': 4.22.0 - '@algolia/transporter': 4.22.0 - dev: false - /@algolia/events@4.0.1: resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} dev: false @@ -713,10 +676,6 @@ packages: resolution: {integrity: sha512-HMUQTID0ucxNCXs5d1eBJ5q/HuKg8rFVE/vOiLaM4Abfeq1YnTtGV3+rFEhOPWhRQxNDd+YHa4q864IMc0zHpQ==} dev: false - /@algolia/logger-common@4.22.0: - resolution: {integrity: sha512-HMUQTID0ucxNCXs5d1eBJ5q/HuKg8rFVE/vOiLaM4Abfeq1YnTtGV3+rFEhOPWhRQxNDd+YHa4q864IMc0zHpQ==} - dev: false - /@algolia/logger-console@4.20.0: resolution: {integrity: sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==} dependencies: @@ -737,10 +696,6 @@ packages: resolution: {integrity: sha512-Y9cEH/cKjIIZgzvI1aI0ARdtR/xRrOR13g5psCxkdhpgRN0Vcorx+zePhmAa4jdQNqexpxtkUdcKYugBzMZJgQ==} dev: false - /@algolia/requester-common@4.22.0: - resolution: {integrity: sha512-Y9cEH/cKjIIZgzvI1aI0ARdtR/xRrOR13g5psCxkdhpgRN0Vcorx+zePhmAa4jdQNqexpxtkUdcKYugBzMZJgQ==} - dev: false - /@algolia/requester-node-http@4.20.0: resolution: {integrity: sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==} dependencies: @@ -763,14 +718,6 @@ packages: '@algolia/requester-common': 4.22.0 dev: false - /@algolia/transporter@4.22.0: - resolution: {integrity: sha512-ieO1k8x2o77GNvOoC+vAkFKppydQSVfbjM3YrSjLmgywiBejPTvU1R1nEvG59JIIUvtSLrZsLGPkd6vL14zopA==} - dependencies: - '@algolia/cache-common': 4.22.0 - '@algolia/logger-common': 4.22.0 - '@algolia/requester-common': 4.22.0 - dev: false - /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} @@ -806,11 +753,6 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/compat-data@7.23.5: - resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/core@7.23.3: resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==} engines: {node: '>=6.9.0'} @@ -878,29 +820,6 @@ packages: - supports-color dev: true - /@babel/core@7.23.6: - resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) - '@babel/helpers': 7.23.6 - '@babel/parser': 7.23.6 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.6 - '@babel/types': 7.23.6 - convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/eslint-parser@7.21.8(@babel/core@7.23.3)(eslint@8.48.0): resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} @@ -953,16 +872,6 @@ packages: jsesc: 2.5.2 dev: true - /@babel/generator@7.23.6: - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.6 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - jsesc: 2.5.2 - dev: true - /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} @@ -1004,17 +913,6 @@ packages: semver: 6.3.1 dev: true - /@babel/helper-compilation-targets@7.23.6: - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.22.2 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.23.3): resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} engines: {node: '>=6.9.0'} @@ -1224,20 +1122,6 @@ packages: '@babel/helper-validator-identifier': 7.22.20 dev: true - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} @@ -1360,11 +1244,6 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option@7.23.5: - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-wrap-function@7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} @@ -1417,17 +1296,6 @@ packages: - supports-color dev: true - /@babel/helpers@7.23.6: - resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.6 - '@babel/types': 7.23.6 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/highlight@7.22.13: resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} @@ -1474,14 +1342,6 @@ packages: '@babel/types': 7.23.6 dev: true - /@babel/parser@7.23.6: - resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.23.6 - dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.23.3): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} @@ -3698,24 +3558,6 @@ packages: - supports-color dev: true - /@babel/traverse@7.23.6: - resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 - debug: 4.3.4(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/types@7.22.15: resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} engines: {node: '>=6.9.0'} @@ -3749,21 +3591,10 @@ packages: to-fast-properties: 2.0.0 dev: true - /@babel/types@7.23.6: - resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - dev: true - /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.30: - resolution: {integrity: sha512-nYThWPZHfq/bDMEu+Sw9cMMqgTk4NEg+PH9GkvN2OMgpo8QuCDy3Eh4C1g6lJy0BFv+ilethoPmKjSeEwa1m8g==} /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.30: resolution: {integrity: sha512-nYThWPZHfq/bDMEu+Sw9cMMqgTk4NEg+PH9GkvN2OMgpo8QuCDy3Eh4C1g6lJy0BFv+ilethoPmKjSeEwa1m8g==} dependencies: @@ -4381,7 +4212,6 @@ packages: resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@docsearch/react@3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): /@docsearch/react@3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: @@ -4399,8 +4229,6 @@ packages: search-insights: optional: true dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0) '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) '@docsearch/css': 3.5.2 @@ -4409,7 +4237,6 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) search-insights: 2.13.0 - search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' dev: false @@ -4960,7 +4787,6 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): resolution: {integrity: sha512-il9m9xZKKjoXn6h0cRcdnt6wce0Pv1y5t4xk2Wx7zBGhKG1idu4IFHtikHlD0QPuZ9fizpXspXcTzjL5FXc1Gw==} engines: {node: '>=18.0'} @@ -4980,7 +4806,6 @@ packages: '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) - '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -5126,7 +4951,6 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): resolution: {integrity: sha512-DDiPc0/xmKSEdwFkXNf1/vH1SzJPzuJBar8kMcBbDAZk/SAmo/4lf6GU2drou4Ae60lN2waix+jYWTWcJRahSA==} engines: {node: '>=18.0'} @@ -5134,7 +4958,6 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) '@docsearch/react': 3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/logger': 3.0.1 @@ -6036,7 +5859,6 @@ packages: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 20.10.5 - '@types/node': 20.10.5 '@types/yargs': 17.0.31 chalk: 4.1.2 @@ -7460,14 +7282,12 @@ packages: dependencies: '@types/connect': 3.4.38 '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/bonjour@3.5.11: resolution: {integrity: sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==} dependencies: '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/chai@4.3.5: @@ -7479,14 +7299,12 @@ packages: dependencies: '@types/express-serve-static-core': 4.17.36 '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/cross-spawn@6.0.3: @@ -7547,7 +7365,6 @@ packages: /@types/express-serve-static-core@4.17.36: resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} dependencies: - '@types/node': 20.10.5 '@types/node': 20.10.5 '@types/qs': 6.9.8 '@types/range-parser': 1.2.4 @@ -7575,7 +7392,6 @@ packages: dependencies: '@types/minimatch': 5.1.2 '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: true /@types/graceful-fs@4.1.6: @@ -7613,7 +7429,6 @@ packages: resolution: {integrity: sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==} dependencies: '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/is-ci@3.0.0: @@ -7677,7 +7492,6 @@ packages: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/lodash.clonedeep@4.5.7: @@ -7759,7 +7573,6 @@ packages: resolution: {integrity: sha512-0yQLzYhCqGz7CQPE3iDmYjhb7KMBFOP+tBkyw+/Y2YyDI5wpS7itXXxneN1zSsUwWx3Ji6YiVYrhAnpQGS/vkw==} dependencies: '@types/node': 20.6.0 - '@types/node': 20.6.0 dev: false /@types/node@12.20.55: @@ -7777,11 +7590,6 @@ packages: dependencies: undici-types: 5.26.5 - /@types/node@20.10.5: - resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==} - dependencies: - undici-types: 5.26.5 - /@types/node@20.6.0: resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} dev: false @@ -7892,7 +7700,6 @@ packages: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/retry@0.12.0: @@ -7903,7 +7710,6 @@ packages: resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} dependencies: '@types/node': 17.0.45 - '@types/node': 17.0.45 dev: false /@types/scheduler@0.16.3: @@ -7935,7 +7741,6 @@ packages: dependencies: '@types/mime': 1.3.2 '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/serve-index@1.9.1: @@ -7950,14 +7755,12 @@ packages: '@types/http-errors': 2.0.2 '@types/mime': 3.0.1 '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/sockjs@0.3.33: resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/stack-utils@2.0.1: @@ -7994,7 +7797,6 @@ packages: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/xml2js@0.4.11: @@ -10161,17 +9963,6 @@ packages: update-browserslist-db: 1.0.13(browserslist@4.22.2) dev: true - /browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001571 - electron-to-chromium: 1.4.616 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.2) - dev: true - /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -10374,10 +10165,6 @@ packages: resolution: {integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==} dev: true - /caniuse-lite@1.0.30001571: - resolution: {integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==} - dev: true - /case@1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} engines: {node: '>= 0.8.0'} @@ -11934,10 +11721,6 @@ packages: resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} dev: true - /electron-to-chromium@1.4.616: - resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} - dev: true - /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -12689,7 +12472,6 @@ packages: resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} engines: {node: '>= 0.8'} dependencies: - '@types/node': 20.10.5 '@types/node': 20.10.5 require-like: 0.1.2 dev: false @@ -15067,7 +14849,6 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/node': 20.10.5 - '@types/node': 20.10.5 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -15103,7 +14884,6 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.10.5 '@types/node': 20.10.5 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -15122,7 +14902,6 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.10.5 '@types/node': 20.10.5 jest-util: 29.7.0 merge-stream: 2.0.0 @@ -16816,10 +16595,6 @@ packages: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} dev: true - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - dev: true - /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -19041,8 +18816,6 @@ packages: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} dev: false - /search-insights@2.13.0: - resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} /search-insights@2.13.0: resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} dev: false @@ -20152,7 +19925,6 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false - /ts-jest@29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5): /ts-jest@29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -20174,7 +19946,6 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.23.6 '@babel/core': 7.23.6 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 @@ -20405,9 +20176,6 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /unenv@1.8.0: resolution: {integrity: sha512-uIGbdCWZfhRRmyKj1UioCepQ0jpq638j/Cf0xFTn4zD1nGJ2lSdzYHLzfdXN791oo/0juUiSWW1fBklXMTsuqg==} dependencies: @@ -20623,17 +20391,6 @@ packages: picocolors: 1.0.0 dev: true - /update-browserslist-db@1.0.13(browserslist@4.22.2): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.22.2 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - /update-notifier@6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} engines: {node: '>=14.16'} From 927556e9843e49a4e40ebe0a1d0a3948ac892b97 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Tue, 20 Feb 2024 14:08:42 +0800 Subject: [PATCH 392/433] docs: Update baseUrl (#483) --- doc-site/docusaurus.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc-site/docusaurus.config.js b/doc-site/docusaurus.config.js index cd265e5a..d0d627b9 100644 --- a/doc-site/docusaurus.config.js +++ b/doc-site/docusaurus.config.js @@ -14,7 +14,7 @@ const config = { staticDirectories: ['static'], // Set the production url of your site here - url: 'https://greenfield-js-sdk.netlify.app', + url: 'https://docs.bnbchain.org', // Set the // pathname under which your site is served // For GitHub pages deployment, it is often '//' baseUrl: '/greenfield-js-sdk/', From ec70921011c5b08ea97fb7bd8712de6aa00431a0 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Tue, 20 Feb 2024 15:59:35 +0800 Subject: [PATCH 393/433] feat: Verfify params (#485) --- .changeset/little-jobs-sort.md | 5 + packages/js-sdk/src/api/bucket.ts | 38 ++--- packages/js-sdk/src/api/objects.ts | 133 ++++++++---------- packages/js-sdk/src/api/payment.ts | 2 + .../src/clients/spclient/spApis/getObject.ts | 2 +- .../clients/spclient/spApis/getObjectMeta.ts | 2 +- .../src/clients/spclient/spApis/putObject.ts | 2 +- .../spclient/spApis/queryBucketReadQuota.ts | 2 +- packages/js-sdk/src/clients/txClient.ts | 3 + packages/js-sdk/src/utils/asserts/index.ts | 2 + packages/js-sdk/src/utils/asserts/params.ts | 23 +++ packages/js-sdk/src/utils/{ => asserts}/s3.ts | 26 ++-- packages/js-sdk/src/utils/index.ts | 4 +- 13 files changed, 128 insertions(+), 116 deletions(-) create mode 100644 .changeset/little-jobs-sort.md create mode 100644 packages/js-sdk/src/utils/asserts/index.ts create mode 100644 packages/js-sdk/src/utils/asserts/params.ts rename packages/js-sdk/src/utils/{ => asserts}/s3.ts (89%) diff --git a/.changeset/little-jobs-sort.md b/.changeset/little-jobs-sort.md new file mode 100644 index 00000000..eb738b33 --- /dev/null +++ b/.changeset/little-jobs-sort.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Verify and Assert params diff --git a/packages/js-sdk/src/api/bucket.ts b/packages/js-sdk/src/api/bucket.ts index 71c23769..43f3094b 100644 --- a/packages/js-sdk/src/api/bucket.ts +++ b/packages/js-sdk/src/api/bucket.ts @@ -1,3 +1,4 @@ +import { assertAuthType, assertStringRequire } from '@/utils/asserts/params'; import { UInt64Value } from '@bnb-chain/greenfield-cosmos-types/greenfield/common/wrapper'; import { ActionType, @@ -92,8 +93,8 @@ import type { ReadQuotaRequest, SpResponse, } from '../types/sp'; +import { isValidAddress, verifyBucketName, verifyUrl } from '../utils/asserts/s3'; import { decodeObjectFromHexString } from '../utils/encoding'; -import { isValidAddress, isValidBucketName, isValidUrl } from '../utils/s3'; import { Sp } from './sp'; import { Storage } from './storage'; @@ -216,15 +217,10 @@ export class Bucket implements IBucket { } = params; try { - if (!spInfo.primarySpAddress) { - throw new Error('Primary sp address is missing'); - } - if (!isValidBucketName(bucketName)) { - throw new Error('Error bucket name'); - } - if (!creator) { - throw new Error('Empty creator address'); - } + assertAuthType(authType); + assertStringRequire(spInfo.primarySpAddress, 'Primary sp address is missing'); + assertStringRequire(creator, 'Empty creator address'); + verifyBucketName(bucketName); const endpoint = await this.sp.getSPUrlByPrimaryAddr(spInfo.primarySpAddress); @@ -288,6 +284,7 @@ export class Bucket implements IBucket { } public async createBucket(params: CreateBucketApprovalRequest, authType: AuthType) { + assertAuthType(authType); const { body } = await this.getCreateBucketApproval(params, authType); if (!body) { @@ -365,7 +362,7 @@ export class Bucket implements IBucket { if (!isValidAddress(address)) { throw new Error('Error address'); } - if (!isValidUrl(endpoint)) { + if (!verifyUrl(endpoint)) { throw new Error('Invalid endpoint'); } const { url } = getUserBucketMetaInfo(endpoint); @@ -417,9 +414,10 @@ export class Bucket implements IBucket { ): Promise> { try { const { bucketName, duration = 30000 } = params; - if (!isValidBucketName(bucketName)) { - throw new Error('Error bucket name'); - } + + verifyBucketName(bucketName); + assertAuthType(authType); + let endpoint = params.endpoint; if (!endpoint) { endpoint = await this.sp.getSPUrlByBucket(bucketName); @@ -528,6 +526,7 @@ export class Bucket implements IBucket { } public async getMigrateBucketApproval(params: MigrateBucketApprovalRequest, authType: AuthType) { + assertAuthType(authType); const { bucketName, operator, dstPrimarySpId } = params; try { @@ -579,8 +578,9 @@ export class Bucket implements IBucket { } public async migrateBucket(params: MigrateBucketApprovalRequest, authType: AuthType) { - const { signedMsg } = await this.getMigrateBucketApproval(params, authType); + assertAuthType(authType); + const { signedMsg } = await this.getMigrateBucketApproval(params, authType); if (!signedMsg) { throw new Error('Get migrate bucket approval error'); } @@ -621,9 +621,7 @@ export class Bucket implements IBucket { public async getBucketMeta(params: GetBucketMetaRequest) { const { bucketName } = params; - if (!isValidBucketName(bucketName)) { - throw new Error('Error bucket name'); - } + verifyBucketName(bucketName); let endpoint = params.endpoint; if (!endpoint) { @@ -649,12 +647,14 @@ export class Bucket implements IBucket { public async listBucketReadRecords(params: ListBucketReadRecordRequest, authType: AuthType) { try { + assertAuthType(authType); + const { bucketName } = params; let endpoint = params.endpoint; if (!endpoint) { endpoint = await this.sp.getSPUrlByBucket(bucketName); } - if (!isValidUrl(endpoint)) { + if (!verifyUrl(endpoint)) { throw new Error('Invalid endpoint'); } diff --git a/packages/js-sdk/src/api/objects.ts b/packages/js-sdk/src/api/objects.ts index 316f47ae..04b5fcf8 100644 --- a/packages/js-sdk/src/api/objects.ts +++ b/packages/js-sdk/src/api/objects.ts @@ -1,32 +1,4 @@ -import { encodePath, getMsgToSign, getSortQuery, secpSign } from '../clients/spclient/auth'; -import { getApprovalMetaInfo } from '../clients/spclient/spApis/approval'; -import { getGetObjectMetaInfo } from '../clients/spclient/spApis/getObject'; -import { - getObjectMetaInfo, - parseGetObjectMetaResponse, -} from '../clients/spclient/spApis/getObjectMeta'; -import { - getListObjectPoliciesMetaInfo, - parseGetListObjectPoliciesResponse, -} from '../clients/spclient/spApis/listObjectPolicies'; -import { parseListObjectsByBucketNameResponse } from '../clients/spclient/spApis/listObjectsByBucket'; -import { - getListObjectsByIDsMetaInfo, - parseListObjectsByIdsResponse, -} from '../clients/spclient/spApis/listObjectsByIds'; -import { parseError } from '../clients/spclient/spApis/parseError'; -import { getPutObjectMetaInfo } from '../clients/spclient/spApis/putObject'; -import { TxClient } from '../clients/txClient'; -import { METHOD_GET, NORMAL_ERROR_CODE } from '../constants/http'; -import { MsgCancelCreateObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCancelCreateObject'; -import { MsgCreateObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateObject'; -import { MsgDeleteObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgDeleteObject'; -import { MsgUpdateObjectInfoSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateObjectInfo'; -import { signSignatureByEddsa } from '../offchainauth'; -import { GetObjectRequest } from '../types/sp/GetObject'; -import { GetObjectMetaRequest, GetObjectMetaResponse } from '../types/sp/GetObjectMeta'; -import { ListObjectsByBucketNameResponse } from '../types/sp/ListObjectsByBucketName'; -import { PutObjectRequest } from '../types/sp/PutObject'; +import { assertAuthType, assertStringRequire } from '@/utils/asserts/params'; import { ActionType, Principal, @@ -66,7 +38,32 @@ import { newObjectGRN, } from '..'; import { RpcQueryClient } from '../clients/queryclient'; +import { encodePath, getMsgToSign, getSortQuery, secpSign } from '../clients/spclient/auth'; +import { getApprovalMetaInfo } from '../clients/spclient/spApis/approval'; +import { getGetObjectMetaInfo } from '../clients/spclient/spApis/getObject'; +import { + getObjectMetaInfo, + parseGetObjectMetaResponse, +} from '../clients/spclient/spApis/getObjectMeta'; +import { + getListObjectPoliciesMetaInfo, + parseGetListObjectPoliciesResponse, +} from '../clients/spclient/spApis/listObjectPolicies'; +import { parseListObjectsByBucketNameResponse } from '../clients/spclient/spApis/listObjectsByBucket'; +import { + getListObjectsByIDsMetaInfo, + parseListObjectsByIdsResponse, +} from '../clients/spclient/spApis/listObjectsByIds'; +import { parseError } from '../clients/spclient/spApis/parseError'; +import { getPutObjectMetaInfo } from '../clients/spclient/spApis/putObject'; import { SpClient } from '../clients/spclient/spClient'; +import { TxClient } from '../clients/txClient'; +import { METHOD_GET, NORMAL_ERROR_CODE } from '../constants/http'; +import { MsgCancelCreateObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCancelCreateObject'; +import { MsgCreateObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateObject'; +import { MsgDeleteObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgDeleteObject'; +import { MsgUpdateObjectInfoSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateObjectInfo'; +import { signSignatureByEddsa } from '../offchainauth'; import { AuthType, CreateObjectApprovalRequest, @@ -81,12 +78,16 @@ import { SpResponse, TxResponse, } from '../types'; +import { GetObjectRequest } from '../types/sp/GetObject'; +import { GetObjectMetaRequest, GetObjectMetaResponse } from '../types/sp/GetObjectMeta'; +import { ListObjectsByBucketNameResponse } from '../types/sp/ListObjectsByBucketName'; +import { PutObjectRequest } from '../types/sp/PutObject'; import { generateUrlByBucketName, - isValidBucketName, - isValidObjectName, - isValidUrl, -} from '../utils/s3'; + verifyBucketName, + verifyObjectName, + verifyUrl, +} from '../utils/asserts/s3'; import { Sp } from './sp'; import { Storage } from './storage'; @@ -201,15 +202,10 @@ export class Objects implements IObject { } = params; try { - if (!isValidBucketName(bucketName)) { - throw new Error('Error bucket name'); - } - if (!isValidObjectName(objectName)) { - throw new Error('Error object name'); - } - if (!creator) { - throw new Error('empty creator address'); - } + assertAuthType(authType); + verifyBucketName(bucketName); + verifyObjectName(objectName); + assertStringRequire(creator, 'empty creator address'); let endpoint = params.endpoint; if (!endpoint) { @@ -288,6 +284,8 @@ export class Objects implements IObject { } public async createObject(getApprovalParams: CreateObjectApprovalRequest, authType: AuthType) { + assertAuthType(authType); + const { signedMsg } = await this.getCreateObjectApproval(getApprovalParams, authType); if (!signedMsg) { throw new Error('Get create object approval error'); @@ -316,16 +314,11 @@ export class Objects implements IObject { params: PutObjectRequest, authType: AuthType, ): Promise> { + assertAuthType(authType); const { bucketName, objectName, txnHash, body, duration = 30000 } = params; - if (!isValidBucketName(bucketName)) { - throw new Error('Error bucket name'); - } - if (!isValidObjectName(objectName)) { - throw new Error('Error object name'); - } - if (!txnHash) { - throw new Error('Transaction hash is empty, please check.'); - } + verifyBucketName(bucketName); + verifyObjectName(objectName); + assertStringRequire(txnHash, 'Transaction hash is empty, please check.'); let endpoint = params.endpoint; if (!endpoint) { @@ -415,13 +408,11 @@ export class Objects implements IObject { public async getObject(params: GetObjectRequest, authType: AuthType) { try { + assertAuthType(authType); const { bucketName, objectName, duration = 30000 } = params; - if (!isValidBucketName(bucketName)) { - throw new Error('Error bucket name'); - } - if (!isValidObjectName(objectName)) { - throw new Error('Error object name'); - } + verifyBucketName(bucketName); + verifyObjectName(objectName); + let endpoint = params.endpoint; if (!endpoint) { endpoint = await this.sp.getSPUrlByBucket(bucketName); @@ -471,13 +462,10 @@ export class Objects implements IObject { } public async getObjectPreviewUrl(params: GetPrivewObject, authType: AuthType) { + assertAuthType(authType); const { bucketName, objectName, queryMap } = params; - if (!isValidBucketName(bucketName)) { - throw new Error('Error bucket name'); - } - if (!isValidObjectName(objectName)) { - throw new Error('Error object name'); - } + verifyBucketName(bucketName); + verifyObjectName(objectName); let endpoint = params.endpoint; if (!endpoint) { endpoint = await this.sp.getSPUrlByBucket(bucketName); @@ -539,12 +527,10 @@ export class Objects implements IObject { public async listObjects(configParam: ListObjectsByBucketNameRequest) { try { const { bucketName, endpoint, duration = 30000, query = new URLSearchParams() } = configParam; - if (!isValidBucketName(bucketName)) { - throw new Error('Error bucket name'); - } - if (!isValidUrl(endpoint)) { - throw new Error('Invalid endpoint'); - } + + verifyBucketName(bucketName); + verifyUrl(endpoint); + const url = `${generateUrlByBucketName(endpoint, bucketName)}?${query?.toString()}`; const headers = new Headers(); @@ -592,6 +578,7 @@ export class Objects implements IObject { >, authType: AuthType, ) { + assertAuthType(authType); if (!getApprovalParams.objectName.endsWith('/')) { throw new Error( 'failed to create folder. Folder names must end with a forward slash (/) character', @@ -691,12 +678,8 @@ export class Objects implements IObject { public async getObjectMeta(params: GetObjectMetaRequest) { const { bucketName, objectName, endpoint } = params; - if (!isValidBucketName(bucketName)) { - throw new Error('Error bucket name'); - } - if (!isValidObjectName(objectName)) { - throw new Error('Error object name'); - } + verifyBucketName(bucketName); + verifyObjectName(objectName); const { url } = getObjectMetaInfo(endpoint, params); diff --git a/packages/js-sdk/src/api/payment.ts b/packages/js-sdk/src/api/payment.ts index 77e062c5..d2e6a854 100644 --- a/packages/js-sdk/src/api/payment.ts +++ b/packages/js-sdk/src/api/payment.ts @@ -1,3 +1,4 @@ +import { assertAuthType } from '@/utils/asserts/params'; import { QueryAutoSettleRecordsRequest, QueryAutoSettleRecordsResponse, @@ -226,6 +227,7 @@ export class Payment implements IPayment { config?: SpConfig, ) { try { + assertAuthType(authType); let endpoint = ''; if (config && config.endpoint) { endpoint = config.endpoint; diff --git a/packages/js-sdk/src/clients/spclient/spApis/getObject.ts b/packages/js-sdk/src/clients/spclient/spApis/getObject.ts index 5c3a4785..fc5efcea 100644 --- a/packages/js-sdk/src/clients/spclient/spApis/getObject.ts +++ b/packages/js-sdk/src/clients/spclient/spApis/getObject.ts @@ -1,6 +1,6 @@ import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; import { ReqMeta } from '@/types'; -import { generateUrlByBucketName } from '@/utils/s3'; +import { generateUrlByBucketName } from '@/utils/asserts/s3'; import { encodePath } from '../auth'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/get_object diff --git a/packages/js-sdk/src/clients/spclient/spApis/getObjectMeta.ts b/packages/js-sdk/src/clients/spclient/spApis/getObjectMeta.ts index ec8dfca6..0b348a35 100644 --- a/packages/js-sdk/src/clients/spclient/spApis/getObjectMeta.ts +++ b/packages/js-sdk/src/clients/spclient/spApis/getObjectMeta.ts @@ -1,6 +1,6 @@ import { convertStrToBool, formatObjectInfo } from '@/types/sp/Common'; import { GetObjectMetaRequest, GetObjectMetaResponse } from '@/types/sp/GetObjectMeta'; -import { generateUrlByBucketName } from '@/utils/s3'; +import { generateUrlByBucketName } from '@/utils/asserts/s3'; import { XMLParser } from 'fast-xml-parser'; import { encodePath, getSortQueryParams } from '../auth'; import type { SPMetaInfo } from './metaInfos'; diff --git a/packages/js-sdk/src/clients/spclient/spApis/putObject.ts b/packages/js-sdk/src/clients/spclient/spApis/putObject.ts index d9551207..bd79c972 100644 --- a/packages/js-sdk/src/clients/spclient/spApis/putObject.ts +++ b/packages/js-sdk/src/clients/spclient/spApis/putObject.ts @@ -1,6 +1,6 @@ import { EMPTY_STRING_SHA256, METHOD_PUT } from '@/constants'; import { ReqMeta } from '@/types'; -import { generateUrlByBucketName } from '@/utils/s3'; +import { generateUrlByBucketName } from '@/utils/asserts/s3'; import { encodePath } from '../auth'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/put_object diff --git a/packages/js-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts b/packages/js-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts index 048ece2c..045d96d8 100644 --- a/packages/js-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts +++ b/packages/js-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts @@ -1,7 +1,7 @@ import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; import { ReqMeta, ReadQuotaRequest } from '@/types'; import { ReadQuotaResponse } from '@/types/sp'; -import { generateUrlByBucketName } from '@/utils/s3'; +import { generateUrlByBucketName } from '@/utils/asserts/s3'; import { XMLParser } from 'fast-xml-parser'; import { getSortQuery } from '../auth'; diff --git a/packages/js-sdk/src/clients/txClient.ts b/packages/js-sdk/src/clients/txClient.ts index 9edba598..cf39972f 100644 --- a/packages/js-sdk/src/clients/txClient.ts +++ b/packages/js-sdk/src/clients/txClient.ts @@ -21,6 +21,7 @@ import { arrayify, hexlify } from '@ethersproject/bytes'; import { signTypedData, SignTypedDataVersion } from '@metamask/eth-sig-util'; import { container, inject, injectable } from 'tsyringe'; import { + assertPrivateKey, BroadcastOptions, CustomTx, ISimulateGasFee, @@ -228,6 +229,8 @@ export class TxClient implements ITxClient { eip712: ReturnType, privateKey: SignOptions['privateKey'], ) { + assertPrivateKey(privateKey); + const pubKey = getPubKeyByPriKey(privateKey); const signature = signTypedData({ // eslint-disable-next-line @typescript-eslint/ban-ts-comment diff --git a/packages/js-sdk/src/utils/asserts/index.ts b/packages/js-sdk/src/utils/asserts/index.ts new file mode 100644 index 00000000..a7228192 --- /dev/null +++ b/packages/js-sdk/src/utils/asserts/index.ts @@ -0,0 +1,2 @@ +export * from './params'; +export * from './s3'; diff --git a/packages/js-sdk/src/utils/asserts/params.ts b/packages/js-sdk/src/utils/asserts/params.ts new file mode 100644 index 00000000..cdae6b49 --- /dev/null +++ b/packages/js-sdk/src/utils/asserts/params.ts @@ -0,0 +1,23 @@ +import { AuthType } from '../..'; + +export const assertStringRequire = (s: string, errMsg: string) => { + if (!s) throw new Error(errMsg); +}; + +export const assertPrivateKey = (privateKey: string) => { + if (!privateKey.startsWith('0x')) throw new Error('private key should start with 0x'); +}; + +export const assertAuthType = (authType: AuthType) => { + if (!authType) throw new Error('authType is required'); + + if (authType.type === 'ECDSA') { + assertPrivateKey(authType.privateKey); + } + + if (authType.type === 'EDDSA') { + assertStringRequire(authType.address, 'address param is required'); + assertStringRequire(authType.seed, 'seed param is required'); + assertStringRequire(authType.domain, 'domain param is required'); + } +}; diff --git a/packages/js-sdk/src/utils/s3.ts b/packages/js-sdk/src/utils/asserts/s3.ts similarity index 89% rename from packages/js-sdk/src/utils/s3.ts rename to packages/js-sdk/src/utils/asserts/s3.ts index 3a464851..471b8e20 100644 --- a/packages/js-sdk/src/utils/s3.ts +++ b/packages/js-sdk/src/utils/asserts/s3.ts @@ -4,7 +4,7 @@ const dotdotComponent = '..'; const dotComponent = '.'; const slashSeparator = '/'; -const isValidBucketName = (bucketName?: string) => { +const verifyBucketName = (bucketName?: string) => { if (!bucketName) { throw new Error('Bucket name is empty, please check.'); } @@ -33,7 +33,6 @@ const isValidBucketName = (bucketName?: string) => { 'Bucket name %must start and end with a lowercase letter or number, please check.', ); } - return true; }; const hasBadPathComponent = (path: string): boolean => { @@ -57,7 +56,7 @@ const isUTF8 = (str: string): boolean => { } }; -const isValidObjectName = (objectName?: string) => { +const verifyObjectName = (objectName?: string) => { if (!objectName) { throw new Error('Object name is empty, please check.'); } @@ -73,8 +72,6 @@ const isValidObjectName = (objectName?: string) => { if (objectName.includes(`//`)) { throw new Error(`Object name that contains a "//" is not supported`); } - - return true; }; const isValidAddress = (address?: string) => { @@ -87,7 +84,7 @@ const isValidAddress = (address?: string) => { return true; }; -const isValidUrl = (url?: string) => { +const verifyUrl = (url?: string) => { if (!url || url.length === 0) return false; const pattern = new RegExp( '^(https?:\\/\\/)?' + // 协议 @@ -99,7 +96,8 @@ const isValidUrl = (url?: string) => { '(\\#[-a-zA-Z\\d_]*)?$', 'i', ); // 锚点 - return pattern.test(url); + + if (!pattern.test(url)) throw new Error('Invalid endpoint'); }; // remove specified from prefix and suffix of a string @@ -115,21 +113,17 @@ const trimString = (originString: string, deleteString: string) => { }; const generateUrlByBucketName = (endpoint = '', bucketName: string) => { - if (!isValidUrl(endpoint)) { - throw new Error('Invalid endpoint'); - } - if (!isValidBucketName(bucketName)) { - throw new Error('Error bucket name'); - } + verifyBucketName(bucketName); + verifyUrl(endpoint); const { protocol } = new URL(endpoint); return endpoint.replace(`${protocol}//`, `${protocol}//${bucketName}.`); }; export { - isValidBucketName, - isValidObjectName, + verifyBucketName, + verifyObjectName, isValidAddress, trimString, - isValidUrl, + verifyUrl, generateUrlByBucketName, }; diff --git a/packages/js-sdk/src/utils/index.ts b/packages/js-sdk/src/utils/index.ts index 6758d309..9abdfc6b 100644 --- a/packages/js-sdk/src/utils/index.ts +++ b/packages/js-sdk/src/utils/index.ts @@ -1,7 +1,7 @@ export * from './allowance'; +export * from './asserts'; export * from './encoding'; export * from './grn'; -export * from './s3'; +export * from './helpers'; export * from './time'; export * from './units'; -export * from './helpers'; From a467c26f6991a2f482c969235252f548c90c9827 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Tue, 20 Feb 2024 16:48:37 +0800 Subject: [PATCH 394/433] Fix/cross fetch (#484) * fix: Cross Fetch * chore: Add changeset --- .changeset/bright-melons-think.md | 5 +++++ packages/js-sdk/src/clients/spclient/spClient.ts | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 .changeset/bright-melons-think.md diff --git a/.changeset/bright-melons-think.md b/.changeset/bright-melons-think.md new file mode 100644 index 00000000..107f4433 --- /dev/null +++ b/.changeset/bright-melons-think.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +fix: Using Cross Fetch replace native fetch (occurs on Nodejs 18-) diff --git a/packages/js-sdk/src/clients/spclient/spClient.ts b/packages/js-sdk/src/clients/spclient/spClient.ts index 9f748199..e6b3ecfd 100644 --- a/packages/js-sdk/src/clients/spclient/spClient.ts +++ b/packages/js-sdk/src/clients/spclient/spClient.ts @@ -8,6 +8,7 @@ import { import { parseError } from '@/clients/spclient/spApis/parseError'; import { SP_NOT_AVAILABLE_ERROR_CODE, SP_NOT_AVAILABLE_ERROR_MSG } from '@/constants/http'; import { AuthType, ReqMeta } from '@/types/auth'; +import { fetchWithTimeout } from '@/utils/http'; import { injectable } from 'tsyringe'; import { getGetObjectMetaInfo } from './spApis/getObject'; import { getPutObjectMetaInfo } from './spApis/putObject'; @@ -55,7 +56,7 @@ export class SpClient implements ISpClient { try { const controller = new AbortController(); const _id = setTimeout(() => controller.abort(), timeout); - const response = await fetch(url, { + const response = await fetchWithTimeout(url, { ...options, signal: controller.signal, }); From 8601ee692a85d44bb84cafcab98e90f1eea51af5 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Tue, 20 Feb 2024 16:50:53 +0800 Subject: [PATCH 395/433] chore: TestCase Env Update (#475) --- .../src/components/feegrant/createObj.tsx | 20 +++++++++++++++++-- packages/js-sdk/tests/.env.simple | 4 ++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/examples/nextjs/src/components/feegrant/createObj.tsx b/examples/nextjs/src/components/feegrant/createObj.tsx index 42f84e2f..094d90a6 100644 --- a/examples/nextjs/src/components/feegrant/createObj.tsx +++ b/examples/nextjs/src/components/feegrant/createObj.tsx @@ -4,6 +4,7 @@ import { GRNToString, MsgCreateObjectTypeUrl, newBucketGRN, + newObjectGRN, PermissionTypes, toTimestamp, } from '@bnb-chain/greenfield-js-sdk'; @@ -146,13 +147,28 @@ export const CreateObj = () => { }, ); - const simulateInfo = await createObjectTx.simulate({ + const setTagTx = await client.storage.setTag({ + operator: granteeAddr, + resource: GRNToString(newObjectGRN(bucketName, objectName)), + tags: { + tags: [ + { + key: 'x', + value: 'xx', + }, + ], + }, + }); + + const multiTx = await client.txClient.multiTx([createObjectTx, setTagTx]); + + const simulateInfo = await multiTx.simulate({ denom: 'BNB', }); console.log('simulateInfo', simulateInfo); - const res = await createObjectTx.broadcast({ + const res = await multiTx.broadcast({ denom: 'BNB', gasLimit: Number(simulateInfo?.gasLimit), gasPrice: simulateInfo?.gasPrice || '5000000000', diff --git a/packages/js-sdk/tests/.env.simple b/packages/js-sdk/tests/.env.simple index 7af35f11..6dfbd432 100644 --- a/packages/js-sdk/tests/.env.simple +++ b/packages/js-sdk/tests/.env.simple @@ -1,4 +1,4 @@ ACCOUNT_ADDRESS='0x...' ACCOUNT_PRIVATEKEY='0x...' -NEXT_PUBLIC_GREENFIELD_RPC_URL=https://gnfd-testnet-fullnode-tendermint-ap.bnbchain.org -NEXT_PUBLIC_GREEN_CHAIN_ID=5600 +GREENFIELD_URL=https://gnfd-testnet-fullnode-tendermint-ap.bnbchain.org +GREENFIELD_CHAIN_ID=5600 From 523f1a5dfb0b186745d0c7807bda6f72eaa6679d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 20 Feb 2024 16:52:06 +0800 Subject: [PATCH 396/433] chore: [ci] release (#486) Co-authored-by: github-actions[bot] --- .changeset/bright-melons-think.md | 5 ----- .changeset/little-jobs-sort.md | 5 ----- examples/nextjs/CHANGELOG.md | 20 ++++++++++++++------ examples/nextjs/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 13 +++++++++++++ packages/js-sdk/package.json | 2 +- 6 files changed, 29 insertions(+), 18 deletions(-) delete mode 100644 .changeset/bright-melons-think.md delete mode 100644 .changeset/little-jobs-sort.md diff --git a/.changeset/bright-melons-think.md b/.changeset/bright-melons-think.md deleted file mode 100644 index 107f4433..00000000 --- a/.changeset/bright-melons-think.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: Using Cross Fetch replace native fetch (occurs on Nodejs 18-) diff --git a/.changeset/little-jobs-sort.md b/.changeset/little-jobs-sort.md deleted file mode 100644 index eb738b33..00000000 --- a/.changeset/little-jobs-sort.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Verify and Assert params diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 7b478585..c03d8225 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/wallet +## 0.0.26 + +### Patch Changes + +- Updated dependencies + [[`a467c26`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a467c26f6991a2f482c969235252f548c90c9827), + [`ec70921`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec70921011c5b08ea97fb7bd8712de6aa00431a0)]: + - @bnb-chain/greenfield-js-sdk@1.2.1 + ## 0.0.25 ### Patch Changes @@ -11,12 +20,12 @@ ## 0.0.24 ### Patch Changes - + - Updated dependencies -[[`24ec472`](https://github.com/bnb-chain/greenfield-js-sdk/commit/24ec472b4507d0f3cba3c8fc55b4e9f924d5b1c7), -[`b41fdf0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b41fdf057b7b4b0f416a74fb04ed0793c52c51f7), -[`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7), -[`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7)]: + [[`24ec472`](https://github.com/bnb-chain/greenfield-js-sdk/commit/24ec472b4507d0f3cba3c8fc55b4e9f924d5b1c7), + [`b41fdf0`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b41fdf057b7b4b0f416a74fb04ed0793c52c51f7), + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7), + [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7)]: - @bnb-chain/greenfield-js-sdk@1.2.0 ## 0.0.24-alpha.2 @@ -44,7 +53,6 @@ [`865be47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/865be476dfd78f86b9d0a7dba3074fbf7ae32bb7)]: - @bnb-chain/greenfield-js-sdk@1.2.0-alpha.0 - ## 0.0.23 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index ab73cfc9..ecc2f5f5 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.25", + "version": "0.0.26", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index a2e29482..68a2a1a8 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,18 @@ # @bnb-chain/greenfield-js-sdk +## 1.2.1 + +### Patch Changes + +- [#484](https://github.com/bnb-chain/greenfield-js-sdk/pull/484) + [`a467c26`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a467c26f6991a2f482c969235252f548c90c9827) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Using Cross Fetch replace native fetch (occurs + on Nodejs 18-) + +- [#485](https://github.com/bnb-chain/greenfield-js-sdk/pull/485) + [`ec70921`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec70921011c5b08ea97fb7bd8712de6aa00431a0) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Verify and Assert params + ## 1.2.0 ### Minor Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 8691f578..db67a79e 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.2.0", + "version": "1.2.1", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 389119ea489441d90b0e1d1f8a3946bc97ca6228 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Wed, 21 Feb 2024 00:21:32 +0800 Subject: [PATCH 397/433] Support Source Map (#487) * feat: Verify Address * feat: Support Source Map --- .changeset/cold-sloths-arrive.md | 5 +++++ .changeset/eight-comics-wait.md | 5 +++++ packages/js-sdk/rollup.config.js | 2 ++ packages/js-sdk/src/api/bucket.ts | 15 +++++---------- packages/js-sdk/src/utils/asserts/s3.ts | 17 ++++++----------- 5 files changed, 23 insertions(+), 21 deletions(-) create mode 100644 .changeset/cold-sloths-arrive.md create mode 100644 .changeset/eight-comics-wait.md diff --git a/.changeset/cold-sloths-arrive.md b/.changeset/cold-sloths-arrive.md new file mode 100644 index 00000000..e3d57f7c --- /dev/null +++ b/.changeset/cold-sloths-arrive.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Support source map diff --git a/.changeset/eight-comics-wait.md b/.changeset/eight-comics-wait.md new file mode 100644 index 00000000..9c4c3b89 --- /dev/null +++ b/.changeset/eight-comics-wait.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Verify Address diff --git a/packages/js-sdk/rollup.config.js b/packages/js-sdk/rollup.config.js index 6df2b29f..9c6c0651 100644 --- a/packages/js-sdk/rollup.config.js +++ b/packages/js-sdk/rollup.config.js @@ -21,6 +21,7 @@ export default async () => { output: { dir: './dist/esm', format: 'esm', + sourcemap: true, }, external: resolveExternal(), context: 'window', @@ -55,6 +56,7 @@ export default async () => { output: { dir: './dist/cjs', format: 'cjs', + sourcemap: true, }, external: resolveExternal(), plugins: [ diff --git a/packages/js-sdk/src/api/bucket.ts b/packages/js-sdk/src/api/bucket.ts index 43f3094b..dba8b0ce 100644 --- a/packages/js-sdk/src/api/bucket.ts +++ b/packages/js-sdk/src/api/bucket.ts @@ -93,7 +93,7 @@ import type { ReadQuotaRequest, SpResponse, } from '../types/sp'; -import { isValidAddress, verifyBucketName, verifyUrl } from '../utils/asserts/s3'; +import { verifyAddress, verifyBucketName, verifyUrl } from '../utils/asserts/s3'; import { decodeObjectFromHexString } from '../utils/encoding'; import { Sp } from './sp'; import { Storage } from './storage'; @@ -359,12 +359,9 @@ export class Bucket implements IBucket { public async listBuckets(configParam: GetUserBucketsRequest) { try { const { address, duration = 30000, endpoint } = configParam; - if (!isValidAddress(address)) { - throw new Error('Error address'); - } - if (!verifyUrl(endpoint)) { - throw new Error('Invalid endpoint'); - } + verifyAddress(address); + verifyUrl(endpoint); + const { url } = getUserBucketMetaInfo(endpoint); const headers = new Headers({ @@ -654,9 +651,7 @@ export class Bucket implements IBucket { if (!endpoint) { endpoint = await this.sp.getSPUrlByBucket(bucketName); } - if (!verifyUrl(endpoint)) { - throw new Error('Invalid endpoint'); - } + verifyUrl(endpoint); const { url, optionsWithOutHeaders, reqMeta } = getListBucketReadRecordMetaInfo( endpoint, diff --git a/packages/js-sdk/src/utils/asserts/s3.ts b/packages/js-sdk/src/utils/asserts/s3.ts index 471b8e20..536c1069 100644 --- a/packages/js-sdk/src/utils/asserts/s3.ts +++ b/packages/js-sdk/src/utils/asserts/s3.ts @@ -74,14 +74,9 @@ const verifyObjectName = (objectName?: string) => { } }; -const isValidAddress = (address?: string) => { - if (!address) { - throw new Error('Address is empty, please check.'); - } - if (address.length > 1024) { - throw new Error('Address is limited to 1024 at most, please check.'); - } - return true; +const verifyAddress = (address?: string) => { + if (!address) throw new Error('Address is empty, please check.'); + if (address.length > 1024) throw new Error('Address is limited to 1024 at most, please check.'); }; const verifyUrl = (url?: string) => { @@ -93,9 +88,9 @@ const verifyUrl = (url?: string) => { '(\\:\\d{1,5})?' + // 端口号 '(\\/[-a-zA-Z\\d%_.~+]*)*' + // 路径 '(\\?[;&a-zA-Z\\d%_.~+=-]*)?' + // 查询字符串 - '(\\#[-a-zA-Z\\d_]*)?$', + '(\\#[-a-zA-Z\\d_]*)?$', // 锚点 'i', - ); // 锚点 + ); if (!pattern.test(url)) throw new Error('Invalid endpoint'); }; @@ -122,7 +117,7 @@ const generateUrlByBucketName = (endpoint = '', bucketName: string) => { export { verifyBucketName, verifyObjectName, - isValidAddress, + verifyAddress, trimString, verifyUrl, generateUrlByBucketName, From a63777dea429069fd36131a12c6945a441fdf60f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 28 Feb 2024 11:57:26 +0800 Subject: [PATCH 398/433] chore: [ci] release (#488) Co-authored-by: github-actions[bot] --- .changeset/cold-sloths-arrive.md | 5 ----- .changeset/eight-comics-wait.md | 5 ----- examples/nextjs/CHANGELOG.md | 9 +++++++++ examples/nextjs/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 12 ++++++++++++ packages/js-sdk/package.json | 2 +- 6 files changed, 23 insertions(+), 12 deletions(-) delete mode 100644 .changeset/cold-sloths-arrive.md delete mode 100644 .changeset/eight-comics-wait.md diff --git a/.changeset/cold-sloths-arrive.md b/.changeset/cold-sloths-arrive.md deleted file mode 100644 index e3d57f7c..00000000 --- a/.changeset/cold-sloths-arrive.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Support source map diff --git a/.changeset/eight-comics-wait.md b/.changeset/eight-comics-wait.md deleted file mode 100644 index 9c4c3b89..00000000 --- a/.changeset/eight-comics-wait.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Verify Address diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index c03d8225..5134e6a9 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/wallet +## 0.0.27 + +### Patch Changes + +- Updated dependencies + [[`389119e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/389119ea489441d90b0e1d1f8a3946bc97ca6228), + [`389119e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/389119ea489441d90b0e1d1f8a3946bc97ca6228)]: + - @bnb-chain/greenfield-js-sdk@1.2.2 + ## 0.0.26 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index ecc2f5f5..d17183a9 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.26", + "version": "0.0.27", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index 68a2a1a8..6fd232f2 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/greenfield-js-sdk +## 1.2.2 + +### Patch Changes + +- [#487](https://github.com/bnb-chain/greenfield-js-sdk/pull/487) + [`389119e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/389119ea489441d90b0e1d1f8a3946bc97ca6228) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Support source map + +- [#487](https://github.com/bnb-chain/greenfield-js-sdk/pull/487) + [`389119e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/389119ea489441d90b0e1d1f8a3946bc97ca6228) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Verify Address + ## 1.2.1 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index db67a79e..6d15f00e 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.2.1", + "version": "1.2.2", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From d45791aa715a5bcef2777c3f2a2213fd8124150e Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Mon, 11 Mar 2024 16:48:30 +0800 Subject: [PATCH 399/433] simply offchainauth (ED25519) (#489) * feat: Register pub key * feat: Replace zk crypto with ed25519 * chore: Remove file * chore: Remove console * chore: Changeset file * feat: Remove Client wasm url param --- .changeset/sixty-mayflies-sin.md | 5 + examples/nextjs/src/client/index.ts | 4 +- .../src/components/bucket/create/index.tsx | 4 +- .../nextjs/src/components/deposit/index.tsx | 4 + packages/js-sdk/package.json | 4 +- packages/js-sdk/src/api/objects.ts | 18 +- packages/js-sdk/src/api/offchainauth.ts | 60 +- packages/js-sdk/src/client.ts | 13 +- packages/js-sdk/src/clients/spclient/auth.ts | 18 +- packages/js-sdk/src/clients/spclient/sign.ts | 62 -- .../spclient/spApis/updateUserAccountKey.ts | 4 +- .../js-sdk/src/clients/spclient/spClient.ts | 12 +- packages/js-sdk/src/offchainauth/utils.ts | 15 +- packages/js-sdk/src/types/storage.ts | 10 +- pnpm-lock.yaml | 956 +++++++----------- 15 files changed, 464 insertions(+), 725 deletions(-) create mode 100644 .changeset/sixty-mayflies-sin.md delete mode 100644 packages/js-sdk/src/clients/spclient/sign.ts diff --git a/.changeset/sixty-mayflies-sin.md b/.changeset/sixty-mayflies-sin.md new file mode 100644 index 00000000..9db26c86 --- /dev/null +++ b/.changeset/sixty-mayflies-sin.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': minor +--- + +feat: Replace zk crypto with ed25519. diff --git a/examples/nextjs/src/client/index.ts b/examples/nextjs/src/client/index.ts index aa0712cf..a86c2d99 100644 --- a/examples/nextjs/src/client/index.ts +++ b/examples/nextjs/src/client/index.ts @@ -1,9 +1,7 @@ import { GREEN_CHAIN_ID, GRPC_URL } from '@/config'; import { Client } from '@bnb-chain/greenfield-js-sdk'; -export const client = Client.create(GRPC_URL, String(GREEN_CHAIN_ID), { - zkCryptoUrl: 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto@0.0.3/dist/node/zk-crypto.wasm', -}); +export const client = Client.create(GRPC_URL, String(GREEN_CHAIN_ID)); export const getSps = async () => { const sps = await client.sp.getStorageProviders(); diff --git a/examples/nextjs/src/components/bucket/create/index.tsx b/examples/nextjs/src/components/bucket/create/index.tsx index 5254db43..d85ecb20 100644 --- a/examples/nextjs/src/components/bucket/create/index.tsx +++ b/examples/nextjs/src/components/bucket/create/index.tsx @@ -1,7 +1,6 @@ import { client, selectSp } from '@/client'; import { getOffchainAuthKeys } from '@/utils/offchainAuth'; -import { GRNToString, newBucketGRN, newGroupGRN } from '@bnb-chain/greenfield-js-sdk'; -import { add } from 'lodash'; +import { GRNToString, newBucketGRN } from '@bnb-chain/greenfield-js-sdk'; import { useState } from 'react'; import { useAccount } from 'wagmi'; @@ -34,6 +33,7 @@ export const CreateBucket = () => { const provider = await connector?.getProvider(); const offChainData = await getOffchainAuthKeys(address, provider); + // console.log('offChainData', offChainData); if (!offChainData) { alert('No offchain, please create offchain pairs first'); return; diff --git a/examples/nextjs/src/components/deposit/index.tsx b/examples/nextjs/src/components/deposit/index.tsx index 2aaee61c..bd2d9b4e 100644 --- a/examples/nextjs/src/components/deposit/index.tsx +++ b/examples/nextjs/src/components/deposit/index.tsx @@ -65,6 +65,10 @@ export const Deposit = () => { }); console.log(txHash); + + if (txHash) { + alert('deposit success'); + } }} > deposit diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 6d15f00e..0dd5badf 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -60,7 +60,6 @@ }, "dependencies": { "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.30", - "@bnb-chain/greenfield-zk-crypto": "workspace:*", "@cosmjs/proto-signing": "^0.32.0", "@cosmjs/stargate": "^0.32.0", "@cosmjs/tendermint-rpc": "^0.32.0", @@ -70,7 +69,8 @@ "@ethersproject/strings": "5.7.0", "@ethersproject/units": "^5.7.0", "@metamask/eth-sig-util": "^5.0.2", - "cross-fetch": "^3.1.6", + "@noble/curves": "^1.3.0", + "cross-fetch": "^4.0.0", "dayjs": "^1.11.7", "ethereum-cryptography": "^2.0.0", "fast-xml-parser": "^4.2.7", diff --git a/packages/js-sdk/src/api/objects.ts b/packages/js-sdk/src/api/objects.ts index 04b5fcf8..59fabe74 100644 --- a/packages/js-sdk/src/api/objects.ts +++ b/packages/js-sdk/src/api/objects.ts @@ -25,9 +25,8 @@ import { MsgUpdateObjectInfo, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; -import { hexlify } from '@ethersproject/bytes'; import { Headers } from 'cross-fetch'; -import { bytesToUtf8, hexToBytes, utf8ToBytes } from 'ethereum-cryptography/utils'; +import { bytesToUtf8, hexToBytes } from 'ethereum-cryptography/utils'; import { container, delay, inject, injectable } from 'tsyringe'; import { GRNToString, @@ -38,7 +37,7 @@ import { newObjectGRN, } from '..'; import { RpcQueryClient } from '../clients/queryclient'; -import { encodePath, getMsgToSign, getSortQuery, secpSign } from '../clients/spclient/auth'; +import { encodePath, getAuthorization, getSortQuery } from '../clients/spclient/auth'; import { getApprovalMetaInfo } from '../clients/spclient/spApis/approval'; import { getGetObjectMetaInfo } from '../clients/spclient/spApis/getObject'; import { @@ -63,7 +62,6 @@ import { MsgCancelCreateObjectSDKTypeEIP712 } from '../messages/greenfield/stora import { MsgCreateObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgCreateObject'; import { MsgDeleteObjectSDKTypeEIP712 } from '../messages/greenfield/storage/MsgDeleteObject'; import { MsgUpdateObjectInfoSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateObjectInfo'; -import { signSignatureByEddsa } from '../offchainauth'; import { AuthType, CreateObjectApprovalRequest, @@ -484,17 +482,9 @@ export class Objects implements IObject { '\n', ].join('\n'); - const unsignedMsg = getMsgToSign(utf8ToBytes(canonicalRequest)); - let authorization = ''; - if (authType.type === 'ECDSA') { - const sig = secpSign(unsignedMsg, authType.privateKey); - authorization = `GNFD1-ECDSA, Signature=${sig.slice(2)}`; - } else { - const sig = await signSignatureByEddsa(authType.seed, hexlify(unsignedMsg).slice(2)); - authorization = `GNFD1-EDDSA,Signature=${sig}`; - } + const auth = getAuthorization(canonicalRequest, authType); - return `${url}?Authorization=${encodeURIComponent(authorization)}&${queryRaw}`; + return `${url}?Authorization=${encodeURIComponent(auth)}&${queryRaw}`; } public async downloadFile(configParam: GetObjectRequest, authType: AuthType): Promise { diff --git a/packages/js-sdk/src/api/offchainauth.ts b/packages/js-sdk/src/api/offchainauth.ts index d1169893..01b8e58b 100644 --- a/packages/js-sdk/src/api/offchainauth.ts +++ b/packages/js-sdk/src/api/offchainauth.ts @@ -1,20 +1,12 @@ -import { NORMAL_ERROR_CODE } from '../constants/http'; -import { - fetchNonces, - genLocalSignMsg, - genSecondSignMsg, - getCurrentAccountPublicKey, - getCurrentSeedString, - personalSign, - updateSpsPubKey, -} from '../offchainauth'; import { hexlify } from '@ethersproject/bytes'; +import { ed25519 } from '@noble/curves/ed25519'; import { injectable } from 'tsyringe'; import { convertTimeStampToDate, getUtcZeroTimestamp, SpResponse } from '..'; +import { NORMAL_ERROR_CODE } from '../constants/http'; +import { genSecondSignMsg, personalSign, updateSpsPubKey } from '../offchainauth'; import { IGenOffChainAuthKeyPairAndUpload, IReturnOffChainAuthKeyPairAndUpload, - ISp, } from '../types/storage'; export interface IOffChainAuth { @@ -34,23 +26,8 @@ export class OffChainAuth implements IOffChainAuth { provider: any, ) { try { - // 1. first sign, generate seed string and public key - const spsNonceRaw = await fetchNonces({ sps, address, domain }); - const fetchSpsNonceFailed = spsNonceRaw - .filter((item: ISp) => item.nonce === null) - .map((item: ISp) => item.address); - if (fetchSpsNonceFailed.length === spsNonceRaw.length) { - throw new Error(`No SP service is available. Please try again later.`); - } - const spsWithNonce = spsNonceRaw.filter((item: ISp) => item.nonce !== null); - // 2. generate signature key pair - const seedMsg = genLocalSignMsg(spsWithNonce, domain); - // Uint8Array - const seed = await getCurrentSeedString({ message: seedMsg, address, chainId, provider }); - const seedString = hexlify(seed); - const pubKey = await getCurrentAccountPublicKey(seedString); + const { privateKey, publicKey } = this.generateKeys(); - // 3. second sign for upload public key to server const curUtcZeroTimestamp = getUtcZeroTimestamp(); const expirationTime = curUtcZeroTimestamp + expirationMs; const issuedDate = convertTimeStampToDate(curUtcZeroTimestamp); @@ -58,11 +35,10 @@ export class OffChainAuth implements IOffChainAuth { const signMsg = genSecondSignMsg({ domain, address, - pubKey, + pubKey: hexlify(publicKey).slice(2), chainId, issuedDate, expireDate, - sps: spsWithNonce, }); const signRes = await personalSign({ message: signMsg, address, provider }); const jsonSignMsg = JSON.stringify(signMsg).replace(/\"/g, ''); @@ -70,16 +46,17 @@ export class OffChainAuth implements IOffChainAuth { // 4. upload signature and pubKey to server const res = await updateSpsPubKey({ address, - sps: spsWithNonce, + sps, domain, - pubKey, + pubKey: hexlify(publicKey).slice(2), expireDate, authorization, }); + const uploadSpsPubkeyFailed = res .filter((item: any) => item.code !== 0) .map((item: any) => item.data.address); - if (uploadSpsPubkeyFailed.length === spsWithNonce.length) { + if (uploadSpsPubkeyFailed.length === sps.length) { throw new Error(`No SP service is available. Please try again later.`); } const successSps: string[] = []; @@ -92,11 +69,14 @@ export class OffChainAuth implements IOffChainAuth { return { code: 0, body: { - seedString, - pubKey, + seedString: hexlify(privateKey), + keypars: { + privateKey: hexlify(privateKey), + publicKey: hexlify(publicKey), + }, expirationTime, spAddresses: successSps, - failedSpAddresses: [...fetchSpsNonceFailed, ...uploadSpsPubkeyFailed], + failedSpAddresses: uploadSpsPubkeyFailed, }, message: 'Sign and upload public key success', }; @@ -104,4 +84,14 @@ export class OffChainAuth implements IOffChainAuth { return { code: -1, message: error.message, statusCode: error?.status || NORMAL_ERROR_CODE }; } } + + private generateKeys() { + const privateKey = ed25519.utils.randomPrivateKey(); + const publicKey = ed25519.getPublicKey(privateKey); + + return { + privateKey, + publicKey, + }; + } } diff --git a/packages/js-sdk/src/client.ts b/packages/js-sdk/src/client.ts index b87185b7..00e2d4c1 100644 --- a/packages/js-sdk/src/client.ts +++ b/packages/js-sdk/src/client.ts @@ -27,20 +27,9 @@ export class Client { * @chaidId string * @wasmURL optional, need setting only used for browser */ - static create( - rpcUrl: string, - chainId: string, - wasmURL?: { - zkCryptoUrl?: string; - }, - ): Client { + static create(rpcUrl: string, chainId: string): Client { container.register('RPC_URL', { useValue: rpcUrl }); container.register('CHAIN_ID', { useValue: chainId }); - container.register('ZK_CRYPTO', { useValue: wasmURL?.zkCryptoUrl }); - - if (wasmURL?.zkCryptoUrl) { - (globalThis as any).__PUBLIC_ZKCRYPTO_WASM_PATH__ = wasmURL.zkCryptoUrl; - } const account = container.resolve(Account); const basic = container.resolve(Basic); diff --git a/packages/js-sdk/src/clients/spclient/auth.ts b/packages/js-sdk/src/clients/spclient/auth.ts index 8d50a96e..1dc71aeb 100644 --- a/packages/js-sdk/src/clients/spclient/auth.ts +++ b/packages/js-sdk/src/clients/spclient/auth.ts @@ -1,7 +1,7 @@ -import { signSignatureByEddsa } from '@/offchainauth'; import { AuthType, ReqMeta } from '@/types/auth'; import { hexlify, joinSignature } from '@ethersproject/bytes'; import { SigningKey } from '@ethersproject/signing-key'; +import { ed25519 } from '@noble/curves/ed25519'; import { Headers } from 'cross-fetch'; import { keccak256 } from 'ethereum-cryptography/keccak.js'; import { utf8ToBytes } from 'ethereum-cryptography/utils.js'; @@ -41,11 +41,7 @@ const getSignedHeaders = (reqHeaders: Headers) => { return sortedHeaders.join(';'); }; -export const getAuthorization = async ( - reqMeta: Partial, - reqHeaders: Headers, - authType: AuthType, -) => { +export const getCanonicalRequest = (reqMeta: Partial, reqHeaders: Headers) => { const canonicalHeaders = getCanonicalHeaders(reqMeta, reqHeaders); const signedHeaders = getSignedHeaders(reqHeaders); const canonicalRequestArr = [ @@ -57,6 +53,11 @@ export const getAuthorization = async ( ]; const canonicalRequest = canonicalRequestArr.join('\n'); + + return canonicalRequest; +}; + +export const getAuthorization = (canonicalRequest: string, authType: AuthType) => { // console.log('canonicalRequest', canonicalRequest); const unsignedMsg = getMsgToSign(utf8ToBytes(canonicalRequest)); @@ -65,8 +66,8 @@ export const getAuthorization = async ( const sig = secpSign(unsignedMsg, authType.privateKey); authorization = `GNFD1-ECDSA, Signature=${sig.slice(2)}`; } else { - const sig = await signSignatureByEddsa(authType.seed, hexlify(unsignedMsg).slice(2)); - authorization = `GNFD1-EDDSA,Signature=${sig}`; + const sig = hexlify(ed25519.sign(hexlify(unsignedMsg).slice(2), authType.seed.slice(2))); + authorization = `GNFD2-EDDSA,Signature=${sig.slice(2)}`; } return authorization; @@ -131,6 +132,7 @@ export const HTTPHeaderContentMD5 = 'Content-MD5'; export const HTTPHeaderUnsignedMsg = 'X-Gnfd-Unsigned-Msg'; export const HTTPHeaderUserAddress = 'X-Gnfd-User-Address'; export const HTTPHeaderAppDomain = 'X-Gnfd-App-Domain'; +export const HTTPHeaderRegPubKey = 'X-Gnfd-App-Reg-Public-Key'; const SUPPORTED_HEADERS = [ HTTPHeaderContentSHA256.toLocaleLowerCase(), diff --git a/packages/js-sdk/src/clients/spclient/sign.ts b/packages/js-sdk/src/clients/spclient/sign.ts deleted file mode 100644 index 8bd19fe3..00000000 --- a/packages/js-sdk/src/clients/spclient/sign.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { hexlify, arrayify } from '@ethersproject/bytes'; -import { toUtf8Bytes } from '@ethersproject/strings'; -import { TGetCurrentSeedStringParams } from '../../types/storage'; -import { getEddsaCompressedPublicKey, eddsaSign } from '@bnb-chain/greenfield-zk-crypto'; - -const getCurrentAccountPublicKey = async (seedString: string) => { - if ((window as any).getEddsaCompressedPublicKey) { - return (window as any).getEddsaCompressedPublicKey(seedString); - } - return await getEddsaCompressedPublicKey(seedString); -}; - -const signSignatureByEddsa = async (seedString: string, message: string) => { - if ((window as any).eddsaSign) { - return (window as any).eddsaSign(seedString, message); - } - return await eddsaSign(seedString, message); -}; - -const signMessagePersonalAPI = async ( - provider: any, - message: Uint8Array, - address: string, -): Promise => { - return provider.request({ - method: 'personal_sign', - params: [hexlify(message), address], - }); -}; - -const generateSeed = async ( - { message, address }: { message: string; address: string }, - provider: any, -) => { - const signedBytes = typeof message === 'string' ? toUtf8Bytes(message) : arrayify(message); - const res = (await signMessagePersonalAPI(provider, signedBytes, address)) as any; - const seed = arrayify(res); - - return { seed }; -}; - -const getCurrentSeedString = async ({ - message, - address, - chainId, - provider, -}: TGetCurrentSeedStringParams) => { - const seedKey = `${chainId}-${address}`; - const seeds: { [id: string]: any } = {}; - if (!seeds[seedKey]) { - seeds[seedKey] = await generateSeed({ message, address }, provider); - seeds[seedKey].seed = seeds[seedKey].seed - .toString() - .split(',') - .map((x: string) => +x); - } - - seeds[seedKey].seed = Uint8Array.from(seeds[seedKey].seed); - return seeds[seedKey].seed; -}; - -export { getCurrentAccountPublicKey, signSignatureByEddsa, getCurrentSeedString }; diff --git a/packages/js-sdk/src/clients/spclient/spApis/updateUserAccountKey.ts b/packages/js-sdk/src/clients/spclient/spApis/updateUserAccountKey.ts index e606a28b..37e50041 100644 --- a/packages/js-sdk/src/clients/spclient/spApis/updateUserAccountKey.ts +++ b/packages/js-sdk/src/clients/spclient/spApis/updateUserAccountKey.ts @@ -11,12 +11,10 @@ export const updateUserAccountKey = async ({ authorization, }: IUpdateOneSpPubKeyParams) => { let result; - const url = `${sp.endpoint}/auth/update_key`; - const nonce = sp.nonce + ''; + const url = `${sp.endpoint}/auth/update_key_v2`; const headers = new Headers({ 'X-Gnfd-User-Address': address, 'X-Gnfd-App-Domain': domain, - 'X-Gnfd-App-Reg-Nonce': nonce, 'X-Gnfd-App-Reg-Public-Key': pubKey, 'X-Gnfd-Expiry-Timestamp': expireDate, Authorization: authorization, diff --git a/packages/js-sdk/src/clients/spclient/spClient.ts b/packages/js-sdk/src/clients/spclient/spClient.ts index e6b3ecfd..1d196cbe 100644 --- a/packages/js-sdk/src/clients/spclient/spClient.ts +++ b/packages/js-sdk/src/clients/spclient/spClient.ts @@ -1,7 +1,9 @@ import { getAuthorization, + getCanonicalRequest, HTTPHeaderAppDomain, HTTPHeaderAuthorization, + HTTPHeaderRegPubKey, HTTPHeaderUserAddress, newRequestHeadersByMeta, } from '@/clients/spclient/auth'; @@ -12,6 +14,8 @@ import { fetchWithTimeout } from '@/utils/http'; import { injectable } from 'tsyringe'; import { getGetObjectMetaInfo } from './spApis/getObject'; import { getPutObjectMetaInfo } from './spApis/putObject'; +import { ed25519 } from '@noble/curves/ed25519'; +import { hexlify } from '@ethersproject/bytes'; export interface ISpClient { callApi( @@ -92,12 +96,16 @@ export class SpClient implements ISpClient { const metaHeaders: Headers = newRequestHeadersByMeta(reqMeta); if (authType.type === 'EDDSA') { - const { domain, address } = authType; + const { domain, address, seed } = authType; + const pubKey = hexlify(ed25519.getPublicKey(seed.slice(2))); + metaHeaders.set(HTTPHeaderUserAddress, address); metaHeaders.set(HTTPHeaderAppDomain, domain); + metaHeaders.set(HTTPHeaderRegPubKey, pubKey.slice(2)); } - const auth = await getAuthorization(reqMeta, metaHeaders, authType); + const canonicalRequest = getCanonicalRequest(reqMeta, metaHeaders); + const auth = getAuthorization(canonicalRequest, authType); metaHeaders.set(HTTPHeaderAuthorization, auth); return metaHeaders; diff --git a/packages/js-sdk/src/offchainauth/utils.ts b/packages/js-sdk/src/offchainauth/utils.ts index 04a7a476..1e906650 100644 --- a/packages/js-sdk/src/offchainauth/utils.ts +++ b/packages/js-sdk/src/offchainauth/utils.ts @@ -88,27 +88,16 @@ export const genSecondSignMsg = ({ chainId, issuedDate, expireDate, - sps, }: TGenSecondSignMsgParams): string => { - let resourceList = ''; - const spsMsg: string[] = []; - sps.forEach((sp: ISp) => { - const spMsg = `- SP ${sp.address} (name: ${sp.name || ''}) with nonce: ${sp.nonce}`; - spsMsg.push(spMsg); - }); - resourceList = spsMsg.join('\n'); // NOTICE: DO NOT CHANGE THE TEMPLATE FORMAT - const unSignedContentTemplate = `${domain} wants you to sign in with your BNB Greenfield account:${address} + return `${domain} wants you to sign in with your BNB Greenfield account:${address} Register your identity public key ${pubKey} URI: ${domain} Version: 1 Chain ID: ${chainId} Issued At: ${issuedDate} Expiration Time: ${expireDate} -Resources: -${resourceList}`; - - return unSignedContentTemplate; +`; }; export const personalSign = async ({ message, address, provider }: IPersonalSignParams) => { diff --git a/packages/js-sdk/src/types/storage.ts b/packages/js-sdk/src/types/storage.ts index dd4285ab..012246d5 100644 --- a/packages/js-sdk/src/types/storage.ts +++ b/packages/js-sdk/src/types/storage.ts @@ -20,8 +20,14 @@ export interface IGenOffChainAuthKeyPairAndUpload extends IBaseUser { } export interface IReturnOffChainAuthKeyPairAndUpload { + /** + * compatibility: private key + */ seedString: string; - pubKey: string; + keypars: { + privateKey: string; + publicKey: string; + }; expirationTime: number; spAddresses: string[]; failedSpAddresses: string[]; @@ -40,7 +46,7 @@ export interface TGenSecondSignMsgParams { chainId: number; issuedDate: string; expireDate: string; - sps: ISp[]; + // sps: ISp[]; } export interface IUpdateOneSpPubKeyBaseParams { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9659929a..270cad3b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,4 @@ lockfileVersion: '6.0' -lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -44,7 +43,7 @@ importers: version: 3.0.2(rollup@2.79.1) '@rollup/plugin-typescript': specifier: ^11.1.3 - version: 11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5) + version: 11.1.3(rollup@2.79.1)(typescript@5.4.2) '@types/chai': specifier: ^4.3.5 version: 4.3.5 @@ -62,10 +61,10 @@ importers: version: 18.2.5 '@typescript-eslint/eslint-plugin': specifier: ^5.59.11 - version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.4.2) '@typescript-eslint/parser': specifier: ^5.59.11 - version: 5.59.11(eslint@8.48.0)(typescript@4.9.5) + version: 5.59.11(eslint@8.48.0)(typescript@5.4.2) chai: specifier: ^4.3.7 version: 4.3.7 @@ -77,7 +76,7 @@ importers: version: 8.48.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5) + version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.4.2) eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.1(eslint@8.48.0)(prettier@2.8.8) @@ -110,17 +109,16 @@ importers: dependencies: '@docusaurus/core': specifier: 3.0.1 - version: 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + version: 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/plugin-ideal-image': specifier: ^3.0.1 - version: 3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + version: 3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/preset-classic': specifier: 3.0.1 - version: 3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) - version: 3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) + version: 3.0.1(@algolia/client-search@4.22.1)(@types/react@18.2.64)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.4.2) '@mdx-js/react': specifier: ^3.0.0 - version: 3.0.0(@types/react@18.2.21)(react@18.2.0) + version: 3.0.0(@types/react@18.2.64)(react@18.2.0) clsx: specifier: ^1.2.1 version: 1.2.1 @@ -182,8 +180,6 @@ importers: '@bnb-chain/greenfield-cosmos-types': specifier: 0.4.0-alpha.30 version: 0.4.0-alpha.30 - specifier: 0.4.0-alpha.30 - version: 0.4.0-alpha.30 '@bnb-chain/greenfield-js-sdk': specifier: workspace:* version: link:../../packages/js-sdk @@ -382,11 +378,6 @@ importers: '@bnb-chain/greenfield-cosmos-types': specifier: 0.4.0-alpha.30 version: 0.4.0-alpha.30 - specifier: 0.4.0-alpha.30 - version: 0.4.0-alpha.30 - '@bnb-chain/greenfield-zk-crypto': - specifier: workspace:* - version: link:../zk-crypto '@cosmjs/proto-signing': specifier: ^0.32.0 version: 0.32.0 @@ -414,9 +405,12 @@ importers: '@metamask/eth-sig-util': specifier: ^5.0.2 version: 5.0.2 + '@noble/curves': + specifier: ^1.3.0 + version: 1.3.0 cross-fetch: - specifier: ^3.1.6 - version: 3.1.6 + specifier: ^4.0.0 + version: 4.0.0 dayjs: specifier: ^1.11.7 version: 1.11.7 @@ -456,7 +450,7 @@ importers: version: 29.5.0 '@rollup/plugin-typescript': specifier: ^11.1.3 - version: 11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5) + version: 11.1.3(tslib@2.5.2)(typescript@4.9.5) '@types/jest': specifier: ^29.5.1 version: 29.5.1 @@ -486,17 +480,16 @@ importers: version: 16.0.3 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + version: 29.5.0(@types/node@20.11.25)(ts-node@10.9.1) mime: specifier: ^3.0.0 version: 3.0.0 ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5) - version: 29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.23.3)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + version: 10.9.1(@types/node@20.11.25)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.2 @@ -552,58 +545,47 @@ packages: resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} dev: false - /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0): - /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0): + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.20.0)(search-insights@2.13.0): resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.20.0)(search-insights@2.13.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.20.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights dev: false - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0): - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0): + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.20.0)(search-insights@2.13.0): resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} peerDependencies: search-insights: '>= 1 < 3' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) - search-insights: 2.13.0 - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.20.0) search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch dev: false - /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0): - /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0): + /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.20.0): resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) - '@algolia/client-search': 4.22.0 - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) - '@algolia/client-search': 4.22.0 + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.20.0) + '@algolia/client-search': 4.22.1 algoliasearch: 4.20.0 dev: false - /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0): - /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0): + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.20.0): resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/client-search': 4.22.0 - '@algolia/client-search': 4.22.0 + '@algolia/client-search': 4.22.1 algoliasearch: 4.20.0 dev: false @@ -617,12 +599,8 @@ packages: resolution: {integrity: sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==} dev: false - /@algolia/cache-common@4.22.0: - resolution: {integrity: sha512-TPwUMlIGPN16eW67qamNQUmxNiGHg/WBqWcrOoCddhqNTqGDPVqmgfaM85LPbt24t3r1z0zEz/tdsmuq3Q6oaA==} - dev: false - - /@algolia/cache-common@4.22.0: - resolution: {integrity: sha512-TPwUMlIGPN16eW67qamNQUmxNiGHg/WBqWcrOoCddhqNTqGDPVqmgfaM85LPbt24t3r1z0zEz/tdsmuq3Q6oaA==} + /@algolia/cache-common@4.22.1: + resolution: {integrity: sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA==} dev: false /@algolia/cache-in-memory@4.20.0: @@ -655,18 +633,11 @@ packages: '@algolia/transporter': 4.20.0 dev: false - /@algolia/client-common@4.22.0: - resolution: {integrity: sha512-BlbkF4qXVWuwTmYxVWvqtatCR3lzXwxx628p1wj1Q7QP2+LsTmGt1DiUYRuy9jG7iMsnlExby6kRMOOlbhv2Ag==} - dependencies: - '@algolia/requester-common': 4.22.0 - '@algolia/transporter': 4.22.0 - dev: false - - /@algolia/client-common@4.22.0: - resolution: {integrity: sha512-BlbkF4qXVWuwTmYxVWvqtatCR3lzXwxx628p1wj1Q7QP2+LsTmGt1DiUYRuy9jG7iMsnlExby6kRMOOlbhv2Ag==} + /@algolia/client-common@4.22.1: + resolution: {integrity: sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ==} dependencies: - '@algolia/requester-common': 4.22.0 - '@algolia/transporter': 4.22.0 + '@algolia/requester-common': 4.22.1 + '@algolia/transporter': 4.22.1 dev: false /@algolia/client-personalization@4.20.0: @@ -685,20 +656,12 @@ packages: '@algolia/transporter': 4.20.0 dev: false - /@algolia/client-search@4.22.0: - resolution: {integrity: sha512-bn4qQiIdRPBGCwsNuuqB8rdHhGKKWIij9OqidM1UkQxnSG8yzxHdb7CujM30pvp5EnV7jTqDZRbxacbjYVW20Q==} + /@algolia/client-search@4.22.1: + resolution: {integrity: sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA==} dependencies: - '@algolia/client-common': 4.22.0 - '@algolia/requester-common': 4.22.0 - '@algolia/transporter': 4.22.0 - dev: false - - /@algolia/client-search@4.22.0: - resolution: {integrity: sha512-bn4qQiIdRPBGCwsNuuqB8rdHhGKKWIij9OqidM1UkQxnSG8yzxHdb7CujM30pvp5EnV7jTqDZRbxacbjYVW20Q==} - dependencies: - '@algolia/client-common': 4.22.0 - '@algolia/requester-common': 4.22.0 - '@algolia/transporter': 4.22.0 + '@algolia/client-common': 4.22.1 + '@algolia/requester-common': 4.22.1 + '@algolia/transporter': 4.22.1 dev: false /@algolia/events@4.0.1: @@ -709,12 +672,8 @@ packages: resolution: {integrity: sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==} dev: false - /@algolia/logger-common@4.22.0: - resolution: {integrity: sha512-HMUQTID0ucxNCXs5d1eBJ5q/HuKg8rFVE/vOiLaM4Abfeq1YnTtGV3+rFEhOPWhRQxNDd+YHa4q864IMc0zHpQ==} - dev: false - - /@algolia/logger-common@4.22.0: - resolution: {integrity: sha512-HMUQTID0ucxNCXs5d1eBJ5q/HuKg8rFVE/vOiLaM4Abfeq1YnTtGV3+rFEhOPWhRQxNDd+YHa4q864IMc0zHpQ==} + /@algolia/logger-common@4.22.1: + resolution: {integrity: sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg==} dev: false /@algolia/logger-console@4.20.0: @@ -733,12 +692,8 @@ packages: resolution: {integrity: sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==} dev: false - /@algolia/requester-common@4.22.0: - resolution: {integrity: sha512-Y9cEH/cKjIIZgzvI1aI0ARdtR/xRrOR13g5psCxkdhpgRN0Vcorx+zePhmAa4jdQNqexpxtkUdcKYugBzMZJgQ==} - dev: false - - /@algolia/requester-common@4.22.0: - resolution: {integrity: sha512-Y9cEH/cKjIIZgzvI1aI0ARdtR/xRrOR13g5psCxkdhpgRN0Vcorx+zePhmAa4jdQNqexpxtkUdcKYugBzMZJgQ==} + /@algolia/requester-common@4.22.1: + resolution: {integrity: sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg==} dev: false /@algolia/requester-node-http@4.20.0: @@ -755,20 +710,12 @@ packages: '@algolia/requester-common': 4.20.0 dev: false - /@algolia/transporter@4.22.0: - resolution: {integrity: sha512-ieO1k8x2o77GNvOoC+vAkFKppydQSVfbjM3YrSjLmgywiBejPTvU1R1nEvG59JIIUvtSLrZsLGPkd6vL14zopA==} + /@algolia/transporter@4.22.1: + resolution: {integrity: sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ==} dependencies: - '@algolia/cache-common': 4.22.0 - '@algolia/logger-common': 4.22.0 - '@algolia/requester-common': 4.22.0 - dev: false - - /@algolia/transporter@4.22.0: - resolution: {integrity: sha512-ieO1k8x2o77GNvOoC+vAkFKppydQSVfbjM3YrSjLmgywiBejPTvU1R1nEvG59JIIUvtSLrZsLGPkd6vL14zopA==} - dependencies: - '@algolia/cache-common': 4.22.0 - '@algolia/logger-common': 4.22.0 - '@algolia/requester-common': 4.22.0 + '@algolia/cache-common': 4.22.1 + '@algolia/logger-common': 4.22.1 + '@algolia/requester-common': 4.22.1 dev: false /@ampproject/remapping@2.2.1: @@ -801,16 +748,6 @@ packages: engines: {node: '>=6.9.0'} dev: false - /@babel/compat-data@7.23.5: - resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/compat-data@7.23.5: - resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/core@7.23.3: resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==} engines: {node: '>=6.9.0'} @@ -826,7 +763,7 @@ packages: '@babel/traverse': 7.23.3 '@babel/types': 7.23.3 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -848,59 +785,13 @@ packages: '@babel/traverse': 7.23.5 '@babel/types': 7.23.5 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - /@babel/core@7.23.6: - resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) - '@babel/helpers': 7.23.6 - '@babel/parser': 7.23.6 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.6 - '@babel/types': 7.23.6 - convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/core@7.23.6: - resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) - '@babel/helpers': 7.23.6 - '@babel/parser': 7.23.6 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.6 - '@babel/types': 7.23.6 - convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/eslint-parser@7.21.8(@babel/core@7.23.3)(eslint@8.48.0): resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} @@ -943,26 +834,6 @@ packages: '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 - /@babel/generator@7.23.6: - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.6 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - jsesc: 2.5.2 - dev: true - - /@babel/generator@7.23.6: - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.6 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - jsesc: 2.5.2 - dev: true - /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} @@ -993,28 +864,6 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-compilation-targets@7.23.6: - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.22.2 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - - /@babel/helper-compilation-targets@7.23.6: - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.22.2 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.23.3): resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} engines: {node: '>=6.9.0'} @@ -1210,34 +1059,6 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} @@ -1256,6 +1077,11 @@ packages: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} + /@babel/helper-plugin-utils@7.24.0: + resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.23.3): resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} @@ -1355,16 +1181,6 @@ packages: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.23.5: - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-option@7.23.5: - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-wrap-function@7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} @@ -1406,28 +1222,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helpers@7.23.6: - resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.6 - '@babel/types': 7.23.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helpers@7.23.6: - resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.6 - '@babel/types': 7.23.6 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/highlight@7.22.13: resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} @@ -1466,22 +1260,6 @@ packages: dependencies: '@babel/types': 7.23.5 - /@babel/parser@7.23.6: - resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.23.6 - dev: true - - /@babel/parser@7.23.6: - resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.23.6 - dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.23.3): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} @@ -1783,7 +1561,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: true /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.23.3): @@ -3658,7 +3436,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.3 '@babel/types': 7.23.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -3675,47 +3453,11 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.5 '@babel/types': 7.23.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/traverse@7.23.6: - resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 - debug: 4.3.4(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/traverse@7.23.6: - resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 - debug: 4.3.4(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/types@7.22.15: resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} engines: {node: '>=6.9.0'} @@ -3740,30 +3482,10 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - /@babel/types@7.23.6: - resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - dev: true - - /@babel/types@7.23.6: - resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - dev: true - /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.30: - resolution: {integrity: sha512-nYThWPZHfq/bDMEu+Sw9cMMqgTk4NEg+PH9GkvN2OMgpo8QuCDy3Eh4C1g6lJy0BFv+ilethoPmKjSeEwa1m8g==} /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.30: resolution: {integrity: sha512-nYThWPZHfq/bDMEu+Sw9cMMqgTk4NEg+PH9GkvN2OMgpo8QuCDy3Eh4C1g6lJy0BFv+ilethoPmKjSeEwa1m8g==} dependencies: @@ -4121,7 +3843,7 @@ packages: lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.4.2) typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -4381,8 +4103,7 @@ packages: resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@docsearch/react@3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): - /@docsearch/react@3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): + /@docsearch/react@3.5.2(@algolia/client-search@4.22.1)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -4399,22 +4120,19 @@ packages: search-insights: optional: true dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0)(search-insights@2.13.0) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.0)(algoliasearch@4.20.0) + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.20.0)(search-insights@2.13.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.20.0) '@docsearch/css': 3.5.2 - '@types/react': 18.2.21 + '@types/react': 18.2.64 algoliasearch: 4.20.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) search-insights: 2.13.0 - search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' dev: false - /@docusaurus/core@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/core@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-CXrLpOnW+dJdSv8M5FAJ3JBwXtL6mhUWxFA8aS0ozK6jBG/wgxERk5uvH28fCeFxOGbAT9v1e9dOMo1X2IEVhQ==} engines: {node: '>=18.0'} hasBin: true @@ -4469,10 +4187,10 @@ packages: lodash: 4.17.21 mini-css-extract-plugin: 2.7.6(webpack@5.89.0) postcss: 8.4.31 - postcss-loader: 7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0) + postcss-loader: 7.3.3(postcss@8.4.31)(typescript@5.4.2)(webpack@5.89.0) prompts: 2.4.2 react: 18.2.0 - react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) + react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@5.4.2)(webpack@5.89.0) react-dom: 18.2.0(react@18.2.0) react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) @@ -4633,14 +4351,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-blog@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-content-blog@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-cLOvtvAyaMQFLI8vm4j26svg3ktxMPSXpuUJ7EERKoGbfpJSsgtowNHcRsaBVmfuCsRSk1HZ/yHBsUkTmHFEsg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/logger': 3.0.1 '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) @@ -4677,14 +4395,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-content-docs@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-dRfAOA5Ivo+sdzzJGXEu33yAtvGg8dlZkvt/NEJ7nwi1F2j4LEdsxtfX2GKeETB2fP6XoGNSQnFXqa2NYGrHFg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/logger': 3.0.1 '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) @@ -4719,14 +4437,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-content-pages@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-oP7PoYizKAXyEttcvVzfX3OoBIXEmXTMzCdfmC4oSwjG4SPcJsRge3mmI6O8jcZBgUPjIzXD21bVGWEE1iu8gg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) @@ -4754,14 +4472,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-debug@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-09dxZMdATky4qdsZGzhzlUvvC+ilQ2hKbYF+wez+cM2mGo4qHbv8+qKXqxq0CQZyimwlAOWQLoSozIXU0g0i7g==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) fs-extra: 11.1.1 @@ -4787,14 +4505,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-google-analytics@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-jwseSz1E+g9rXQwDdr0ZdYNjn8leZBnKPjjQhMBEiwDoenL3JYFcNW0+p0sWoVF/f2z5t7HkKA+cYObrUh18gg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) react: 18.2.0 @@ -4818,14 +4536,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-google-gtag@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-UFTDvXniAWrajsulKUJ1DB6qplui1BlKLQZjX4F7qS/qfJ+qkKqSkhJ/F4VuGQ2JYeZstYb+KaUzUzvaPK1aRQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) '@types/gtag.js': 0.0.12 @@ -4850,14 +4568,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-google-tag-manager@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-IPFvuz83aFuheZcWpTlAdiiX1RqWIHM+OH8wS66JgwAKOiQMR3+nLywGjkLV4bp52x7nCnwhNk1rE85Cpy/CIw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) react: 18.2.0 @@ -4881,7 +4599,7 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-ideal-image@3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-ideal-image@3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-IvAUpEIz6v1/fVz6UTdQY12pYIE5geNFtsuKpsULpMaotwYf3Gs7acXjQog4qquKkc65yV5zuvMj8BZMHEwLyQ==} engines: {node: '>=18.0'} peerDependencies: @@ -4892,7 +4610,7 @@ packages: jimp: optional: true dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/lqip-loader': 3.0.1(webpack@5.89.0) '@docusaurus/responsive-loader': 1.7.0(sharp@0.32.6) '@docusaurus/theme-translations': 3.0.1 @@ -4924,14 +4642,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-sitemap@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-xARiWnjtVvoEniZudlCq5T9ifnhCu/GAZ5nA7XgyLfPcNpHQa241HZdsTlLtVcecEVVdllevBKOp7qknBBaMGw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/logger': 3.0.1 '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) @@ -4960,27 +4678,25 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): - /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.22.0)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): + /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.22.1)(@types/react@18.2.64)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.4.2): resolution: {integrity: sha512-il9m9xZKKjoXn6h0cRcdnt6wce0Pv1y5t4xk2Wx7zBGhKG1idu4IFHtikHlD0QPuZ9fizpXspXcTzjL5FXc1Gw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-debug': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-analytics': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-gtag': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-tag-manager': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-sitemap': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) - '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-debug': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-google-analytics': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-google-gtag': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-google-tag-manager': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-sitemap': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.64)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.22.1)(@docusaurus/types@3.0.1)(@types/react@18.2.64)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.4.2) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -5010,7 +4726,7 @@ packages: peerDependencies: react: '*' dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.37 prop-types: 15.8.1 react: 18.2.0 @@ -5030,26 +4746,26 @@ packages: sharp: 0.32.6 dev: false - /@docusaurus/theme-classic@3.0.1(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/theme-classic@3.0.1(@types/react@18.2.64)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-XD1FRXaJiDlmYaiHHdm27PNhhPboUah9rqIH0lMpBt5kYtsGjJzhqa27KuZvHLzOP2OEpqd2+GZ5b6YPq7Q05Q==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/theme-translations': 3.0.1 '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) - '@mdx-js/react': 3.0.0(@types/react@18.2.21)(react@18.2.0) + '@mdx-js/react': 3.0.0(@types/react@18.2.64)(react@18.2.0) clsx: 2.0.0 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.43 @@ -5083,7 +4799,7 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/theme-common@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-cr9TOWXuIOL0PUfuXv6L5lPlTgaphKP+22NdVBOYah5jSq5XAAulJTjfe+IfLsEG4L7lJttLbhW7LXDFSAI7Ag==} engines: {node: '>=18.0'} peerDependencies: @@ -5092,9 +4808,9 @@ packages: dependencies: '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) '@types/history': 4.7.11 @@ -5126,20 +4842,18 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): - /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.22.0)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): + /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.22.1)(@docusaurus/types@3.0.1)(@types/react@18.2.64)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.4.2): resolution: {integrity: sha512-DDiPc0/xmKSEdwFkXNf1/vH1SzJPzuJBar8kMcBbDAZk/SAmo/4lf6GU2drou4Ae60lN2waix+jYWTWcJRahSA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) - '@docsearch/react': 3.5.2(@algolia/client-search@4.22.0)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docsearch/react': 3.5.2(@algolia/client-search@4.22.1)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/logger': 3.0.1 - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/theme-translations': 3.0.1 '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) @@ -6036,7 +5750,6 @@ packages: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 20.10.5 - '@types/node': 20.10.5 '@types/yargs': 17.0.31 chalk: 4.1.2 @@ -6152,14 +5865,14 @@ packages: - supports-color dev: false - /@mdx-js/react@3.0.0(@types/react@18.2.21)(react@18.2.0): + /@mdx-js/react@3.0.0(@types/react@18.2.64)(react@18.2.0): resolution: {integrity: sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ==} peerDependencies: '@types/react': '>=16' react: '>=16' dependencies: '@types/mdx': 2.0.10 - '@types/react': 18.2.21 + '@types/react': 18.2.64 react: 18.2.0 dev: false @@ -6376,6 +6089,12 @@ packages: '@noble/hashes': 1.3.2 dev: false + /@noble/curves@1.3.0: + resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} + dependencies: + '@noble/hashes': 1.3.3 + dev: false + /@noble/hashes@1.2.0: resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} dev: false @@ -6389,6 +6108,11 @@ packages: engines: {node: '>= 16'} dev: false + /@noble/hashes@1.3.3: + resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} + engines: {node: '>= 16'} + dev: false + /@noble/secp256k1@1.7.1: resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} dev: false @@ -6563,6 +6287,7 @@ packages: picocolors: 1.0.0 tiny-glob: 0.2.9 tslib: 2.6.2 + dev: false /@pnpm/config.env-replace@1.1.0: resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} @@ -6793,7 +6518,7 @@ packages: terser: 5.24.0 dev: true - /@rollup/plugin-typescript@11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5): + /@rollup/plugin-typescript@11.1.3(rollup@2.79.1)(typescript@5.4.2): resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6809,6 +6534,24 @@ packages: '@rollup/pluginutils': 5.0.2(rollup@2.79.1) resolve: 1.22.2 rollup: 2.79.1 + typescript: 5.4.2 + dev: true + + /@rollup/plugin-typescript@11.1.3(tslib@2.5.2)(typescript@4.9.5): + resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2 + resolve: 1.22.2 tslib: 2.5.2 typescript: 4.9.5 dev: true @@ -6825,6 +6568,20 @@ packages: rollup: 2.79.1 dev: true + /@rollup/pluginutils@5.0.2: + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + /@rollup/pluginutils@5.0.2(rollup@2.79.1): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} @@ -7460,14 +7217,12 @@ packages: dependencies: '@types/connect': 3.4.38 '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/bonjour@3.5.11: resolution: {integrity: sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==} dependencies: '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/chai@4.3.5: @@ -7479,14 +7234,12 @@ packages: dependencies: '@types/express-serve-static-core': 4.17.36 '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/cross-spawn@6.0.3: @@ -7547,7 +7300,6 @@ packages: /@types/express-serve-static-core@4.17.36: resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} dependencies: - '@types/node': 20.10.5 '@types/node': 20.10.5 '@types/qs': 6.9.8 '@types/range-parser': 1.2.4 @@ -7575,7 +7327,6 @@ packages: dependencies: '@types/minimatch': 5.1.2 '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: true /@types/graceful-fs@4.1.6: @@ -7613,7 +7364,6 @@ packages: resolution: {integrity: sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==} dependencies: '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/is-ci@3.0.0: @@ -7677,7 +7427,6 @@ packages: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/lodash.clonedeep@4.5.7: @@ -7759,7 +7508,6 @@ packages: resolution: {integrity: sha512-0yQLzYhCqGz7CQPE3iDmYjhb7KMBFOP+tBkyw+/Y2YyDI5wpS7itXXxneN1zSsUwWx3Ji6YiVYrhAnpQGS/vkw==} dependencies: '@types/node': 20.6.0 - '@types/node': 20.6.0 dev: false /@types/node@12.20.55: @@ -7777,10 +7525,11 @@ packages: dependencies: undici-types: 5.26.5 - /@types/node@20.10.5: - resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==} + /@types/node@20.11.25: + resolution: {integrity: sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==} dependencies: undici-types: 5.26.5 + dev: true /@types/node@20.6.0: resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} @@ -7813,7 +7562,6 @@ packages: /@types/prop-types@15.7.10: resolution: {integrity: sha512-mxSnDQxPqsZxmeShFH+uwQ4kO4gcJcGahjjMFeLbKE95IAZiiZyiEepGZjtXJ7hN/yfu0bu9xN2ajcU0JcxX6A==} - dev: true /@types/prop-types@15.7.11: resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} @@ -7880,7 +7628,14 @@ packages: '@types/prop-types': 15.7.10 '@types/scheduler': 0.16.6 csstype: 3.1.2 - dev: true + + /@types/react@18.2.64: + resolution: {integrity: sha512-MlmPvHgjj2p3vZaxbQgFUQFvD8QiZwACfGqEdDSWou5yISWxDQ4/74nCAwsUiX7UFLKZz3BbVSPj+YxeoGGCfg==} + dependencies: + '@types/prop-types': 15.7.11 + '@types/scheduler': 0.16.8 + csstype: 3.1.3 + dev: false /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} @@ -7892,7 +7647,6 @@ packages: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/retry@0.12.0: @@ -7903,7 +7657,6 @@ packages: resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} dependencies: '@types/node': 17.0.45 - '@types/node': 17.0.45 dev: false /@types/scheduler@0.16.3: @@ -7911,7 +7664,6 @@ packages: /@types/scheduler@0.16.6: resolution: {integrity: sha512-Vlktnchmkylvc9SnwwwozTv04L/e1NykF5vgoQ0XTmI8DD+wxfjQuHuvHS3p0r2jz2x2ghPs2h1FVeDirIteWA==} - dev: true /@types/scheduler@0.16.8: resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} @@ -7935,7 +7687,6 @@ packages: dependencies: '@types/mime': 1.3.2 '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/serve-index@1.9.1: @@ -7950,14 +7701,12 @@ packages: '@types/http-errors': 2.0.2 '@types/mime': 3.0.1 '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/sockjs@0.3.33: resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/stack-utils@2.0.1: @@ -7994,7 +7743,6 @@ packages: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: '@types/node': 20.10.5 - '@types/node': 20.10.5 dev: false /@types/xml2js@0.4.11: @@ -8021,7 +7769,7 @@ packages: dependencies: '@types/yargs-parser': 21.0.3 - /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.4.2): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -8033,29 +7781,29 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.4.2) '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@5.4.2) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.4.2) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.2 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.4.2) + typescript: 5.4.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@5.4.2): resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@5.4.2) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -8080,6 +7828,26 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: false + + /@typescript-eslint/parser@5.59.11(eslint@8.48.0)(typescript@5.4.2): + resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.59.11 + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.4.2) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.48.0 + typescript: 5.4.2 + transitivePeerDependencies: + - supports-color /@typescript-eslint/scope-manager@5.59.11: resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} @@ -8096,7 +7864,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.7 dev: true - /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@5.4.2): resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -8106,12 +7874,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.4.2) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.4.2) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.4.2) + typescript: 5.4.2 transitivePeerDependencies: - supports-color dev: true @@ -8144,8 +7912,29 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: false + + /@typescript-eslint/typescript-estree@5.59.11(typescript@5.4.2): + resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/visitor-keys': 5.59.11 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.2 + tsutils: 3.21.0(typescript@5.4.2) + typescript: 5.4.2 + transitivePeerDependencies: + - supports-color - /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): + /@typescript-eslint/typescript-estree@5.59.7(typescript@5.4.2): resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -8160,13 +7949,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.4.2) + typescript: 5.4.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@5.4.2): resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -8177,7 +7966,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.4.2) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.2 @@ -8186,7 +7975,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@5.4.2): resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -8197,7 +7986,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.7 '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.4.2) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.4 @@ -10150,28 +9939,6 @@ packages: node-releases: 2.0.13 update-browserslist-db: 1.0.13(browserslist@4.22.1) - /browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001571 - electron-to-chromium: 1.4.616 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.2) - dev: true - - /browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001571 - electron-to-chromium: 1.4.616 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.2) - dev: true - /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -10370,14 +10137,6 @@ packages: /caniuse-lite@1.0.30001563: resolution: {integrity: sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==} - /caniuse-lite@1.0.30001571: - resolution: {integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==} - dev: true - - /caniuse-lite@1.0.30001571: - resolution: {integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==} - dev: true - /case@1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} engines: {node: '>= 0.8.0'} @@ -11007,7 +10766,7 @@ packages: dependencies: '@types/node': 18.16.18 cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.4.2) typescript: 4.9.5 dev: true @@ -11042,7 +10801,7 @@ packages: path-type: 4.0.0 dev: true - /cosmiconfig@8.3.6(typescript@4.9.5): + /cosmiconfig@8.3.6(typescript@5.4.2): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -11055,7 +10814,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 4.9.5 + typescript: 5.4.2 dev: false /cosmjs-types@0.4.1: @@ -11109,16 +10868,16 @@ packages: cross-spawn: 7.0.3 dev: true - /cross-fetch@3.1.6: - resolution: {integrity: sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==} + /cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} dependencies: - node-fetch: 2.6.11 + node-fetch: 2.7.0 transitivePeerDependencies: - encoding dev: false - /cross-fetch@3.1.8: - resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + /cross-fetch@4.0.0: + resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} dependencies: node-fetch: 2.7.0 transitivePeerDependencies: @@ -11349,6 +11108,10 @@ packages: /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + dev: false + /csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} dev: true @@ -11412,6 +11175,17 @@ packages: dependencies: ms: 2.1.3 + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -11597,6 +11371,7 @@ packages: /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} + dev: false /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} @@ -11930,14 +11705,6 @@ packages: /electron-to-chromium@1.4.588: resolution: {integrity: sha512-soytjxwbgcCu7nh5Pf4S2/4wa6UIu+A3p03U2yVr53qGxi1/VTR3ENI+p50v+UxqqZAfl48j3z55ud7VHIOr9w==} - /electron-to-chromium@1.4.616: - resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} - dev: true - - /electron-to-chromium@1.4.616: - resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} - dev: true - /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -12159,7 +11926,7 @@ packages: eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) @@ -12169,7 +11936,7 @@ packages: - supports-color dev: false - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.4.2): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -12182,19 +11949,19 @@ packages: '@babel/core': 7.23.3 '@babel/eslint-parser': 7.21.8(@babel/core@7.23.3)(eslint@8.48.0) '@rushstack/eslint-patch': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.4.2) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.4.2) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.48.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.4.2) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) - eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@4.9.5) - typescript: 4.9.5 + eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@5.4.2) + typescript: 5.4.2 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -12223,7 +11990,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.15.0 eslint: 8.48.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) get-tsconfig: 4.5.0 globby: 13.1.3 is-core-module: 2.12.1 @@ -12231,8 +11998,9 @@ packages: synckit: 0.8.5 transitivePeerDependencies: - supports-color + dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -12253,11 +12021,10 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.4.2) debug: 3.2.7 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) transitivePeerDependencies: - supports-color @@ -12276,7 +12043,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -12286,7 +12053,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.4.2) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -12294,7 +12061,7 @@ packages: doctrine: 2.1.0 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0) has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 @@ -12308,7 +12075,7 @@ packages: - eslint-import-resolver-webpack - supports-color - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.4.2): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -12321,8 +12088,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.4.2) + '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@5.4.2) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -12400,13 +12167,13 @@ packages: semver: 6.3.1 string.prototype.matchall: 4.0.8 - /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@4.9.5): + /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@5.4.2): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.4.2) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -12684,12 +12451,12 @@ packages: is-hex-prefixed: 1.0.0 strip-hex-prefix: 1.0.0 dev: false + bundledDependencies: false /eval@0.1.8: resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} engines: {node: '>= 0.8'} dependencies: - '@types/node': 20.10.5 '@types/node': 20.10.5 require-like: 0.1.2 dev: false @@ -13120,7 +12887,7 @@ packages: dependencies: is-callable: 1.2.7 - /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@5.4.2)(webpack@5.89.0): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -13148,7 +12915,7 @@ packages: schema-utils: 2.7.0 semver: 7.5.4 tapable: 1.1.3 - typescript: 4.9.5 + typescript: 5.4.2 webpack: 5.89.0 dev: false @@ -13345,6 +13112,7 @@ packages: /get-tsconfig@4.5.0: resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} + dev: false /git-clone@0.1.0: resolution: {integrity: sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==} @@ -13465,6 +13233,7 @@ packages: /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: false /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -13500,6 +13269,7 @@ packages: /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: false /google-protobuf@3.21.2: resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} @@ -14298,6 +14068,7 @@ packages: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true + dev: false /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} @@ -14583,6 +14354,7 @@ packages: engines: {node: '>=8'} dependencies: is-docker: 2.2.1 + dev: false /is-yarn-global@0.4.1: resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} @@ -14662,7 +14434,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -14743,7 +14515,7 @@ packages: - supports-color dev: true - /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + /jest-cli@29.5.0(@types/node@20.11.25)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -14760,7 +14532,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@20.11.25)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -14806,7 +14578,47 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@20.11.25)(typescript@4.9.5) + transitivePeerDependencies: + - supports-color + dev: true + + /jest-config@29.5.0(@types/node@20.11.25)(ts-node@10.9.1): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.23.3 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.11.25 + babel-jest: 29.5.0(@babel/core@7.23.3) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1(@types/node@20.11.25)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true @@ -15067,7 +14879,6 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/node': 20.10.5 - '@types/node': 20.10.5 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -15103,7 +14914,6 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.10.5 '@types/node': 20.10.5 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -15122,14 +14932,13 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.10.5 '@types/node': 20.10.5 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false - /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + /jest@29.5.0(@types/node@20.11.25)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -15142,7 +14951,7 @@ packages: '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-cli: 29.5.0(@types/node@20.11.25)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color @@ -16777,6 +16586,7 @@ packages: optional: true dependencies: whatwg-url: 5.0.0 + dev: true /node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} @@ -16812,14 +16622,6 @@ packages: /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - dev: true - - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - dev: true - /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -17008,6 +16810,7 @@ packages: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 + dev: false /opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} @@ -17520,14 +17323,14 @@ packages: postcss-selector-parser: 6.0.13 dev: false - /postcss-loader@7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0): + /postcss-loader@7.3.3(postcss@8.4.31)(typescript@5.4.2)(webpack@5.89.0): resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} engines: {node: '>= 14.15.0'} peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 dependencies: - cosmiconfig: 8.3.6(typescript@4.9.5) + cosmiconfig: 8.3.6(typescript@5.4.2) jiti: 1.21.0 postcss: 8.4.31 semver: 7.5.4 @@ -18192,7 +17995,7 @@ packages: strip-json-comments: 2.0.1 dev: false - /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): + /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@5.4.2)(webpack@5.89.0): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -18211,7 +18014,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@5.4.2)(webpack@5.89.0) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -18226,7 +18029,7 @@ packages: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - typescript: 4.9.5 + typescript: 5.4.2 webpack: 5.89.0 transitivePeerDependencies: - eslint @@ -19041,8 +18844,6 @@ packages: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} dev: false - /search-insights@2.13.0: - resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} /search-insights@2.13.0: resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} dev: false @@ -19901,6 +19702,7 @@ packages: dependencies: '@pkgr/utils': 2.3.1 tslib: 2.6.2 + dev: false /tapable@1.1.3: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} @@ -20082,6 +19884,7 @@ packages: dependencies: globalyzer: 0.1.0 globrex: 0.1.2 + dev: false /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} @@ -20152,8 +19955,7 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false - /ts-jest@29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5): - /ts-jest@29.1.0(@babel/core@7.23.6)(jest@29.5.0)(typescript@4.9.5): + /ts-jest@29.1.0(@babel/core@7.23.3)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -20174,11 +19976,10 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.23.6 - '@babel/core': 7.23.6 + '@babel/core': 7.23.3 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest: 29.5.0(@types/node@20.11.25)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -20188,7 +19989,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.16.18)(typescript@4.9.5): + /ts-node@10.9.1(@types/node@18.16.18)(typescript@5.4.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -20214,6 +20015,37 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 + typescript: 5.4.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /ts-node@10.9.1(@types/node@20.11.25)(typescript@4.9.5): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 20.11.25 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -20245,6 +20077,16 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 + dev: false + + /tsutils@3.21.0(typescript@5.4.2): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.4.2 /tsyringe@4.8.0: resolution: {integrity: sha512-YB1FG+axdxADa3ncEtRnQCFq/M0lALGLxSZeVNbTU8NqhOVc51nnv2CISTcvc1kyv6EGPtXVr0v6lWeDxiijOA==} @@ -20361,6 +20203,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + /typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true + /ua-parser-js@1.0.37: resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} dev: false @@ -20405,9 +20252,6 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /unenv@1.8.0: resolution: {integrity: sha512-uIGbdCWZfhRRmyKj1UioCepQ0jpq638j/Cf0xFTn4zD1nGJ2lSdzYHLzfdXN791oo/0juUiSWW1fBklXMTsuqg==} dependencies: @@ -20612,28 +20456,6 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 - /update-browserslist-db@1.0.13(browserslist@4.22.2): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.22.2 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - - /update-browserslist-db@1.0.13(browserslist@4.22.2): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.22.2 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - /update-notifier@6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} engines: {node: '>=14.16'} From 47a3c3e10a11a8100035a805fe80fe96ffa39891 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Mon, 11 Mar 2024 17:24:44 +0800 Subject: [PATCH 400/433] chore/ remove file (#490) * feat: Register pub key * feat: Replace zk crypto with ed25519 * chore: Remove file * chore: Remove console * chore: Changeset file * feat: Remove Client wasm url param * chore: Update Example * chore: Remove file --- examples/browser-file-management/src/client/index.ts | 4 +--- packages/js-sdk/src/offchainauth/index.ts | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/examples/browser-file-management/src/client/index.ts b/examples/browser-file-management/src/client/index.ts index 5fee6955..8ea4f817 100644 --- a/examples/browser-file-management/src/client/index.ts +++ b/examples/browser-file-management/src/client/index.ts @@ -1,9 +1,7 @@ import { GREEN_CHAIN_ID, GRPC_URL } from '@/config/env'; import { Client } from '@bnb-chain/greenfield-js-sdk'; -export const client = Client.create(GRPC_URL, String(GREEN_CHAIN_ID), { - zkCryptoUrl: 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto@0.0.3/dist/node/zk-crypto.wasm', -}); +export const client = Client.create(GRPC_URL, String(GREEN_CHAIN_ID)); export const getSps = async () => { const sps = await client.sp.getStorageProviders(); diff --git a/packages/js-sdk/src/offchainauth/index.ts b/packages/js-sdk/src/offchainauth/index.ts index 29f4b07f..04bca77e 100644 --- a/packages/js-sdk/src/offchainauth/index.ts +++ b/packages/js-sdk/src/offchainauth/index.ts @@ -1,2 +1 @@ -export * from '../clients/spclient/sign'; export * from './utils'; From 721ab579656abd02e804c1464130d5ec9dd31335 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Mon, 11 Mar 2024 17:29:07 +0800 Subject: [PATCH 401/433] chore: Alpha mode --- .changeset/pre.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 00000000..ffc13613 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,16 @@ +{ + "mode": "pre", + "tag": "alpha", + "initialVersions": { + "greenfield-js-sdk-docs": "0.0.0", + "browser-file-management": "0.1.0", + "@demo/wallet": "0.0.27", + "@demo/nodejs": "0.0.26", + "@bnb-chain/create-gnfd-app": "1.0.0", + "@bnb-chain/greenfiled-file-handle": "1.0.2", + "@bnb-chain/greenfield-js-sdk": "1.2.2", + "@bnb-chain/reed-solomon": "1.1.3", + "@bnb-chain/greenfield-zk-crypto": "1.0.0" + }, + "changesets": [] +} From 3374b4a6ed729cf6f2cf8fa5ab147a4cb5618247 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Mon, 11 Mar 2024 17:41:45 +0800 Subject: [PATCH 402/433] chore: Merge in alpha (#492) * chore: Merge in alpha * chore: Changeset file * Create heavy-dolphins-obey.md * Update heavy-dolphins-obey.md --- .changeset/heavy-dolphins-obey.md | 5 +++++ .changeset/pre.json | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 .changeset/heavy-dolphins-obey.md diff --git a/.changeset/heavy-dolphins-obey.md b/.changeset/heavy-dolphins-obey.md new file mode 100644 index 00000000..31915064 --- /dev/null +++ b/.changeset/heavy-dolphins-obey.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': minor +--- + +chore: Merge in alpha diff --git a/.changeset/pre.json b/.changeset/pre.json index ffc13613..723c0b3b 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -12,5 +12,7 @@ "@bnb-chain/reed-solomon": "1.1.3", "@bnb-chain/greenfield-zk-crypto": "1.0.0" }, - "changesets": [] + "changesets": [ + "sixty-mayflies-sin" + ] } From 782a9b0d3764b674ad434ad29397b8308871fe51 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 17:46:29 +0800 Subject: [PATCH 403/433] chore: [ci] release (alpha) (#493) * chore: [ci] release (alpha) * Update CHANGELOG.md --------- Co-authored-by: github-actions[bot] Co-authored-by: rk <59029880+rrr523@users.noreply.github.com> --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs-file-management/CHANGELOG.md | 8 ++++++++ examples/nodejs-file-management/package.json | 4 ++-- packages/js-sdk/CHANGELOG.md | 8 ++++++++ packages/js-sdk/package.json | 2 +- 7 files changed, 29 insertions(+), 4 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 723c0b3b..d52cafd7 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -13,6 +13,7 @@ "@bnb-chain/greenfield-zk-crypto": "1.0.0" }, "changesets": [ + "heavy-dolphins-obey", "sixty-mayflies-sin" ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 5134e6a9..6af0bf89 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.28-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`3374b4a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3374b4a6ed729cf6f2cf8fa5ab147a4cb5618247)]: + - @bnb-chain/greenfield-js-sdk@1.3.0-alpha.0 + ## 0.0.27 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index d17183a9..25de8a8c 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.27", + "version": "0.0.28-alpha.0", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs-file-management/CHANGELOG.md b/examples/nodejs-file-management/CHANGELOG.md index 4133e888..c361a0b7 100644 --- a/examples/nodejs-file-management/CHANGELOG.md +++ b/examples/nodejs-file-management/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.27-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`3374b4a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3374b4a6ed729cf6f2cf8fa5ab147a4cb5618247)]: + - @bnb-chain/greenfield-js-sdk@1.3.0-alpha.0 + ## 0.0.26 ### Patch Changes diff --git a/examples/nodejs-file-management/package.json b/examples/nodejs-file-management/package.json index 7bc9be83..c3585a93 100644 --- a/examples/nodejs-file-management/package.json +++ b/examples/nodejs-file-management/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.26", + "version": "0.0.27-alpha.0", "type": "commonjs", "private": true, "scripts": { @@ -10,7 +10,7 @@ "author": "", "license": "ISC", "dependencies": { - "@bnb-chain/greenfield-js-sdk": "^1.2.0", + "@bnb-chain/greenfield-js-sdk": "^1.3.0-alpha.0", "@bnb-chain/reed-solomon": "^1.1.1", "dotenv": "^16.3.1", "mime-types": "^2.1.35" diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index 6fd232f2..66ded43b 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 1.3.0-alpha.0 + +### Minor Changes + +- [#489](https://github.com/bnb-chain/greenfield-js-sdk/pull/489) + [`d45791`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d45791aa715a5bcef2777c3f2a2213fd8124150e) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Replace zk crypto with ed25519. + ## 1.2.2 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 0dd5badf..1794bb9d 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.2.2", + "version": "1.3.0-alpha.0", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From f5d1a207f97cdae534c3e3e14640b60ec25595a3 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Mon, 11 Mar 2024 17:52:20 +0800 Subject: [PATCH 404/433] chore: Pnpm lockfile --- pnpm-lock.yaml | 464 ++++++++++++++----------------------------------- 1 file changed, 133 insertions(+), 331 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 270cad3b..38d7f676 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,7 +43,7 @@ importers: version: 3.0.2(rollup@2.79.1) '@rollup/plugin-typescript': specifier: ^11.1.3 - version: 11.1.3(rollup@2.79.1)(typescript@5.4.2) + version: 11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5) '@types/chai': specifier: ^4.3.5 version: 4.3.5 @@ -61,10 +61,10 @@ importers: version: 18.2.5 '@typescript-eslint/eslint-plugin': specifier: ^5.59.11 - version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.4.2) + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) '@typescript-eslint/parser': specifier: ^5.59.11 - version: 5.59.11(eslint@8.48.0)(typescript@5.4.2) + version: 5.59.11(eslint@8.48.0)(typescript@4.9.5) chai: specifier: ^4.3.7 version: 4.3.7 @@ -76,7 +76,7 @@ importers: version: 8.48.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.4.2) + version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5) eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.1(eslint@8.48.0)(prettier@2.8.8) @@ -109,16 +109,16 @@ importers: dependencies: '@docusaurus/core': specifier: 3.0.1 - version: 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + version: 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/plugin-ideal-image': specifier: ^3.0.1 - version: 3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + version: 3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/preset-classic': specifier: 3.0.1 - version: 3.0.1(@algolia/client-search@4.22.1)(@types/react@18.2.64)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.4.2) + version: 3.0.1(@algolia/client-search@4.22.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) '@mdx-js/react': specifier: ^3.0.0 - version: 3.0.0(@types/react@18.2.64)(react@18.2.0) + version: 3.0.0(@types/react@18.2.21)(react@18.2.0) clsx: specifier: ^1.2.1 version: 1.2.1 @@ -290,7 +290,7 @@ importers: examples/nodejs-file-management: dependencies: '@bnb-chain/greenfield-js-sdk': - specifier: ^1.2.0 + specifier: ^1.3.0-alpha.0 version: link:../../packages/js-sdk '@bnb-chain/reed-solomon': specifier: ^1.1.1 @@ -450,7 +450,7 @@ importers: version: 29.5.0 '@rollup/plugin-typescript': specifier: ^11.1.3 - version: 11.1.3(tslib@2.5.2)(typescript@4.9.5) + version: 11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5) '@types/jest': specifier: ^29.5.1 version: 29.5.1 @@ -480,16 +480,16 @@ importers: version: 16.0.3 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@20.11.25)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) mime: specifier: ^3.0.0 version: 3.0.0 ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.23.3)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.23.5)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@20.11.25)(typescript@4.9.5) + version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.2 @@ -763,7 +763,7 @@ packages: '@babel/traverse': 7.23.3 '@babel/types': 7.23.3 convert-source-map: 2.0.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -785,7 +785,7 @@ packages: '@babel/traverse': 7.23.5 '@babel/types': 7.23.5 convert-source-map: 2.0.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -3436,7 +3436,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.3 '@babel/types': 7.23.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -3453,7 +3453,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.5 '@babel/types': 7.23.5 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -3843,7 +3843,7 @@ packages: lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.4.2) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -4103,7 +4103,7 @@ packages: resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@docsearch/react@3.5.2(@algolia/client-search@4.22.1)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): + /@docsearch/react@3.5.2(@algolia/client-search@4.22.1)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -4123,7 +4123,7 @@ packages: '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.20.0)(search-insights@2.13.0) '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.20.0) '@docsearch/css': 3.5.2 - '@types/react': 18.2.64 + '@types/react': 18.2.21 algoliasearch: 4.20.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4132,7 +4132,7 @@ packages: - '@algolia/client-search' dev: false - /@docusaurus/core@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + /@docusaurus/core@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-CXrLpOnW+dJdSv8M5FAJ3JBwXtL6mhUWxFA8aS0ozK6jBG/wgxERk5uvH28fCeFxOGbAT9v1e9dOMo1X2IEVhQ==} engines: {node: '>=18.0'} hasBin: true @@ -4187,10 +4187,10 @@ packages: lodash: 4.17.21 mini-css-extract-plugin: 2.7.6(webpack@5.89.0) postcss: 8.4.31 - postcss-loader: 7.3.3(postcss@8.4.31)(typescript@5.4.2)(webpack@5.89.0) + postcss-loader: 7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0) prompts: 2.4.2 react: 18.2.0 - react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@5.4.2)(webpack@5.89.0) + react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) react-dom: 18.2.0(react@18.2.0) react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) @@ -4351,14 +4351,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-blog@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + /@docusaurus/plugin-content-blog@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-cLOvtvAyaMQFLI8vm4j26svg3ktxMPSXpuUJ7EERKoGbfpJSsgtowNHcRsaBVmfuCsRSk1HZ/yHBsUkTmHFEsg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/logger': 3.0.1 '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) @@ -4395,14 +4395,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + /@docusaurus/plugin-content-docs@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-dRfAOA5Ivo+sdzzJGXEu33yAtvGg8dlZkvt/NEJ7nwi1F2j4LEdsxtfX2GKeETB2fP6XoGNSQnFXqa2NYGrHFg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/logger': 3.0.1 '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) @@ -4437,14 +4437,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + /@docusaurus/plugin-content-pages@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-oP7PoYizKAXyEttcvVzfX3OoBIXEmXTMzCdfmC4oSwjG4SPcJsRge3mmI6O8jcZBgUPjIzXD21bVGWEE1iu8gg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) @@ -4472,14 +4472,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + /@docusaurus/plugin-debug@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-09dxZMdATky4qdsZGzhzlUvvC+ilQ2hKbYF+wez+cM2mGo4qHbv8+qKXqxq0CQZyimwlAOWQLoSozIXU0g0i7g==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) fs-extra: 11.1.1 @@ -4505,14 +4505,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + /@docusaurus/plugin-google-analytics@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-jwseSz1E+g9rXQwDdr0ZdYNjn8leZBnKPjjQhMBEiwDoenL3JYFcNW0+p0sWoVF/f2z5t7HkKA+cYObrUh18gg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) react: 18.2.0 @@ -4536,14 +4536,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + /@docusaurus/plugin-google-gtag@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-UFTDvXniAWrajsulKUJ1DB6qplui1BlKLQZjX4F7qS/qfJ+qkKqSkhJ/F4VuGQ2JYeZstYb+KaUzUzvaPK1aRQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) '@types/gtag.js': 0.0.12 @@ -4568,14 +4568,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + /@docusaurus/plugin-google-tag-manager@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-IPFvuz83aFuheZcWpTlAdiiX1RqWIHM+OH8wS66JgwAKOiQMR3+nLywGjkLV4bp52x7nCnwhNk1rE85Cpy/CIw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) react: 18.2.0 @@ -4599,7 +4599,7 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-ideal-image@3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + /@docusaurus/plugin-ideal-image@3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-IvAUpEIz6v1/fVz6UTdQY12pYIE5geNFtsuKpsULpMaotwYf3Gs7acXjQog4qquKkc65yV5zuvMj8BZMHEwLyQ==} engines: {node: '>=18.0'} peerDependencies: @@ -4610,7 +4610,7 @@ packages: jimp: optional: true dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/lqip-loader': 3.0.1(webpack@5.89.0) '@docusaurus/responsive-loader': 1.7.0(sharp@0.32.6) '@docusaurus/theme-translations': 3.0.1 @@ -4642,14 +4642,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + /@docusaurus/plugin-sitemap@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-xARiWnjtVvoEniZudlCq5T9ifnhCu/GAZ5nA7XgyLfPcNpHQa241HZdsTlLtVcecEVVdllevBKOp7qknBBaMGw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/logger': 3.0.1 '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) @@ -4678,25 +4678,25 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.22.1)(@types/react@18.2.64)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.4.2): + /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.22.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): resolution: {integrity: sha512-il9m9xZKKjoXn6h0cRcdnt6wce0Pv1y5t4xk2Wx7zBGhKG1idu4IFHtikHlD0QPuZ9fizpXspXcTzjL5FXc1Gw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - '@docusaurus/plugin-debug': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - '@docusaurus/plugin-google-analytics': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - '@docusaurus/plugin-google-gtag': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - '@docusaurus/plugin-google-tag-manager': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - '@docusaurus/plugin-sitemap': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.64)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.22.1)(@docusaurus/types@3.0.1)(@types/react@18.2.64)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.4.2) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-debug': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-google-analytics': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-google-gtag': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-google-tag-manager': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-sitemap': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.22.1)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4746,26 +4746,26 @@ packages: sharp: 0.32.6 dev: false - /@docusaurus/theme-classic@3.0.1(@types/react@18.2.64)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + /@docusaurus/theme-classic@3.0.1(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-XD1FRXaJiDlmYaiHHdm27PNhhPboUah9rqIH0lMpBt5kYtsGjJzhqa27KuZvHLzOP2OEpqd2+GZ5b6YPq7Q05Q==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/theme-translations': 3.0.1 '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) - '@mdx-js/react': 3.0.0(@types/react@18.2.64)(react@18.2.0) + '@mdx-js/react': 3.0.0(@types/react@18.2.21)(react@18.2.0) clsx: 2.0.0 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.43 @@ -4799,7 +4799,7 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): + /@docusaurus/theme-common@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): resolution: {integrity: sha512-cr9TOWXuIOL0PUfuXv6L5lPlTgaphKP+22NdVBOYah5jSq5XAAulJTjfe+IfLsEG4L7lJttLbhW7LXDFSAI7Ag==} engines: {node: '>=18.0'} peerDependencies: @@ -4808,9 +4808,9 @@ packages: dependencies: '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) '@types/history': 4.7.11 @@ -4842,18 +4842,18 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.22.1)(@docusaurus/types@3.0.1)(@types/react@18.2.64)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.4.2): + /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.22.1)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): resolution: {integrity: sha512-DDiPc0/xmKSEdwFkXNf1/vH1SzJPzuJBar8kMcBbDAZk/SAmo/4lf6GU2drou4Ae60lN2waix+jYWTWcJRahSA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.5.2(@algolia/client-search@4.22.1)(@types/react@18.2.64)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docsearch/react': 3.5.2(@algolia/client-search@4.22.1)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/logger': 3.0.1 - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) '@docusaurus/theme-translations': 3.0.1 '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) @@ -5865,14 +5865,14 @@ packages: - supports-color dev: false - /@mdx-js/react@3.0.0(@types/react@18.2.64)(react@18.2.0): + /@mdx-js/react@3.0.0(@types/react@18.2.21)(react@18.2.0): resolution: {integrity: sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ==} peerDependencies: '@types/react': '>=16' react: '>=16' dependencies: '@types/mdx': 2.0.10 - '@types/react': 18.2.64 + '@types/react': 18.2.21 react: 18.2.0 dev: false @@ -6287,7 +6287,6 @@ packages: picocolors: 1.0.0 tiny-glob: 0.2.9 tslib: 2.6.2 - dev: false /@pnpm/config.env-replace@1.1.0: resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} @@ -6518,7 +6517,7 @@ packages: terser: 5.24.0 dev: true - /@rollup/plugin-typescript@11.1.3(rollup@2.79.1)(typescript@5.4.2): + /@rollup/plugin-typescript@11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5): resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -6534,24 +6533,6 @@ packages: '@rollup/pluginutils': 5.0.2(rollup@2.79.1) resolve: 1.22.2 rollup: 2.79.1 - typescript: 5.4.2 - dev: true - - /@rollup/plugin-typescript@11.1.3(tslib@2.5.2)(typescript@4.9.5): - resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.14.0||^3.0.0 - tslib: '*' - typescript: '>=3.7.0' - peerDependenciesMeta: - rollup: - optional: true - tslib: - optional: true - dependencies: - '@rollup/pluginutils': 5.0.2 - resolve: 1.22.2 tslib: 2.5.2 typescript: 4.9.5 dev: true @@ -6568,20 +6549,6 @@ packages: rollup: 2.79.1 dev: true - /@rollup/pluginutils@5.0.2: - resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@types/estree': 1.0.1 - estree-walker: 2.0.2 - picomatch: 2.3.1 - dev: true - /@rollup/pluginutils@5.0.2(rollup@2.79.1): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} @@ -7525,12 +7492,6 @@ packages: dependencies: undici-types: 5.26.5 - /@types/node@20.11.25: - resolution: {integrity: sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==} - dependencies: - undici-types: 5.26.5 - dev: true - /@types/node@20.6.0: resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} dev: false @@ -7629,14 +7590,6 @@ packages: '@types/scheduler': 0.16.6 csstype: 3.1.2 - /@types/react@18.2.64: - resolution: {integrity: sha512-MlmPvHgjj2p3vZaxbQgFUQFvD8QiZwACfGqEdDSWou5yISWxDQ4/74nCAwsUiX7UFLKZz3BbVSPj+YxeoGGCfg==} - dependencies: - '@types/prop-types': 15.7.11 - '@types/scheduler': 0.16.8 - csstype: 3.1.3 - dev: false - /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: @@ -7769,7 +7722,7 @@ packages: dependencies: '@types/yargs-parser': 21.0.3 - /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.4.2): + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7781,29 +7734,29 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.4.2) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@5.4.2) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.4.2) + '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.2 - tsutils: 3.21.0(typescript@5.4.2) - typescript: 5.4.2 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@5.4.2): + /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@5.4.2) + '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -7828,26 +7781,6 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: false - - /@typescript-eslint/parser@5.59.11(eslint@8.48.0)(typescript@5.4.2): - resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.4.2) - debug: 4.3.4(supports-color@8.1.1) - eslint: 8.48.0 - typescript: 5.4.2 - transitivePeerDependencies: - - supports-color /@typescript-eslint/scope-manager@5.59.11: resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} @@ -7864,7 +7797,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.7 dev: true - /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@5.4.2): + /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7874,12 +7807,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.4.2) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.4.2) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 - tsutils: 3.21.0(typescript@5.4.2) - typescript: 5.4.2 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true @@ -7912,29 +7845,8 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: false - /@typescript-eslint/typescript-estree@5.59.11(typescript@5.4.2): - resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/visitor-keys': 5.59.11 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.2 - tsutils: 3.21.0(typescript@5.4.2) - typescript: 5.4.2 - transitivePeerDependencies: - - supports-color - - /@typescript-eslint/typescript-estree@5.59.7(typescript@5.4.2): + /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7949,13 +7861,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.4.2) - typescript: 5.4.2 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@5.4.2): + /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7966,7 +7878,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.4.2) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.2 @@ -7975,7 +7887,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@5.4.2): + /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7986,7 +7898,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.7 '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.4.2) + '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.4 @@ -10766,7 +10678,7 @@ packages: dependencies: '@types/node': 18.16.18 cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.4.2) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) typescript: 4.9.5 dev: true @@ -10801,7 +10713,7 @@ packages: path-type: 4.0.0 dev: true - /cosmiconfig@8.3.6(typescript@5.4.2): + /cosmiconfig@8.3.6(typescript@4.9.5): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -10814,7 +10726,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 5.4.2 + typescript: 4.9.5 dev: false /cosmjs-types@0.4.1: @@ -11108,10 +11020,6 @@ packages: /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - /csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - dev: false - /csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} dev: true @@ -11175,17 +11083,6 @@ packages: dependencies: ms: 2.1.3 - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -11371,7 +11268,6 @@ packages: /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} - dev: false /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} @@ -11926,7 +11822,7 @@ packages: eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) @@ -11936,7 +11832,7 @@ packages: - supports-color dev: false - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.4.2): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -11949,19 +11845,19 @@ packages: '@babel/core': 7.23.3 '@babel/eslint-parser': 7.21.8(@babel/core@7.23.3)(eslint@8.48.0) '@rushstack/eslint-patch': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.4.2) - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.4.2) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.48.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.4.2) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) - eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@5.4.2) - typescript: 5.4.2 + eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -11990,7 +11886,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.15.0 eslint: 8.48.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) get-tsconfig: 4.5.0 globby: 13.1.3 is-core-module: 2.12.1 @@ -11998,9 +11894,8 @@ packages: synckit: 0.8.5 transitivePeerDependencies: - supports-color - dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -12021,10 +11916,11 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.4.2) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 3.2.7 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) transitivePeerDependencies: - supports-color @@ -12043,7 +11939,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -12053,7 +11949,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.4.2) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -12061,7 +11957,7 @@ packages: doctrine: 2.1.0 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 @@ -12075,7 +11971,7 @@ packages: - eslint-import-resolver-webpack - supports-color - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.4.2): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -12088,8 +11984,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.4.2) - '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@5.4.2) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -12167,13 +12063,13 @@ packages: semver: 6.3.1 string.prototype.matchall: 4.0.8 - /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@5.4.2): + /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.4.2) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -12887,7 +12783,7 @@ packages: dependencies: is-callable: 1.2.7 - /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@5.4.2)(webpack@5.89.0): + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -12915,7 +12811,7 @@ packages: schema-utils: 2.7.0 semver: 7.5.4 tapable: 1.1.3 - typescript: 5.4.2 + typescript: 4.9.5 webpack: 5.89.0 dev: false @@ -13112,7 +13008,6 @@ packages: /get-tsconfig@4.5.0: resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} - dev: false /git-clone@0.1.0: resolution: {integrity: sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==} @@ -13233,7 +13128,6 @@ packages: /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - dev: false /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -13269,7 +13163,6 @@ packages: /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - dev: false /google-protobuf@3.21.2: resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} @@ -14068,7 +13961,6 @@ packages: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true - dev: false /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} @@ -14354,7 +14246,6 @@ packages: engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - dev: false /is-yarn-global@0.4.1: resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} @@ -14434,7 +14325,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -14515,7 +14406,7 @@ packages: - supports-color dev: true - /jest-cli@29.5.0(@types/node@20.11.25)(ts-node@10.9.1): + /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -14532,7 +14423,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@20.11.25)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -14578,47 +14469,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.11.25)(typescript@4.9.5) - transitivePeerDependencies: - - supports-color - dev: true - - /jest-config@29.5.0(@types/node@20.11.25)(ts-node@10.9.1): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.23.3 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.11.25 - babel-jest: 29.5.0(@babel/core@7.23.3) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@20.11.25)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true @@ -14938,7 +14789,7 @@ packages: supports-color: 8.1.1 dev: false - /jest@29.5.0(@types/node@20.11.25)(ts-node@10.9.1): + /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -14951,7 +14802,7 @@ packages: '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@20.11.25)(ts-node@10.9.1) + jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color @@ -16810,7 +16661,6 @@ packages: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 - dev: false /opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} @@ -17323,14 +17173,14 @@ packages: postcss-selector-parser: 6.0.13 dev: false - /postcss-loader@7.3.3(postcss@8.4.31)(typescript@5.4.2)(webpack@5.89.0): + /postcss-loader@7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0): resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} engines: {node: '>= 14.15.0'} peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 dependencies: - cosmiconfig: 8.3.6(typescript@5.4.2) + cosmiconfig: 8.3.6(typescript@4.9.5) jiti: 1.21.0 postcss: 8.4.31 semver: 7.5.4 @@ -17995,7 +17845,7 @@ packages: strip-json-comments: 2.0.1 dev: false - /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@5.4.2)(webpack@5.89.0): + /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -18014,7 +17864,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@5.4.2)(webpack@5.89.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -18029,7 +17879,7 @@ packages: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - typescript: 5.4.2 + typescript: 4.9.5 webpack: 5.89.0 transitivePeerDependencies: - eslint @@ -19702,7 +19552,6 @@ packages: dependencies: '@pkgr/utils': 2.3.1 tslib: 2.6.2 - dev: false /tapable@1.1.3: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} @@ -19884,7 +19733,6 @@ packages: dependencies: globalyzer: 0.1.0 globrex: 0.1.2 - dev: false /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} @@ -19955,7 +19803,7 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false - /ts-jest@29.1.0(@babel/core@7.23.3)(jest@29.5.0)(typescript@4.9.5): + /ts-jest@29.1.0(@babel/core@7.23.5)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -19976,10 +19824,10 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.23.3 + '@babel/core': 7.23.5 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@20.11.25)(ts-node@10.9.1) + jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -19989,7 +19837,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.16.18)(typescript@5.4.2): + /ts-node@10.9.1(@types/node@18.16.18)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -20015,37 +19863,6 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.4.2 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - - /ts-node@10.9.1(@types/node@20.11.25)(typescript@4.9.5): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 20.11.25 - acorn: 8.10.0 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -20077,16 +19894,6 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 - dev: false - - /tsutils@3.21.0(typescript@5.4.2): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.4.2 /tsyringe@4.8.0: resolution: {integrity: sha512-YB1FG+axdxADa3ncEtRnQCFq/M0lALGLxSZeVNbTU8NqhOVc51nnv2CISTcvc1kyv6EGPtXVr0v6lWeDxiijOA==} @@ -20203,11 +20010,6 @@ packages: engines: {node: '>=14.17'} hasBin: true - /typescript@5.4.2: - resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} - engines: {node: '>=14.17'} - hasBin: true - /ua-parser-js@1.0.37: resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} dev: false From b96eabb4680b0ab60473149def2b6946e708de3c Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Mon, 11 Mar 2024 17:54:10 +0800 Subject: [PATCH 405/433] Changeset release/alpha (#494) * chore: [ci] release (alpha) * Update CHANGELOG.md --------- Co-authored-by: github-actions[bot] From 98ee8e5fbdb0fb089e417a4d238eab1def82e7c8 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Mon, 11 Mar 2024 18:04:34 +0800 Subject: [PATCH 406/433] docs: Update REAMDE (#495) --- README.md | 6 +++--- packages/zk-crypto/README.md | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 16319f3c..c517a9f5 100644 --- a/README.md +++ b/README.md @@ -6,11 +6,10 @@ A Greenfield JS SDK is an easy-to-use tool designed to help developers build dec You can find some package documentation below: -| Package | Description | Version | +| Package | Description | Version | | --- | --- | --- | | [@bnb-chain/greenfield-js-sdk](./packages/js-sdk/README.md) | A client library for Greenfield Chain | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-js-sdk?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-js-sdk) | | [@bnb-chain/reed-solomon](./packages/reed-solomon/README.md) | calculate file's `checksums` | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Freed-solomon?color=blue)](https://www.npmjs.com/package/@bnb-chain/reed-solomon) | -| [@bnb-chain/greenfield-zk-crypto](./packages/zk-crypto/README.md) | WASM module about sign crypto | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-zk-crypto?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-zk-crypto) | | [@bnb-chain/create-gnfd-app](./packages/create-gnfd-app/README.md) | Create Greenfield App Quickly | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fcreate-gnfd-app?color=blue)](https://www.npmjs.com/package/@bnb-chain/create-gnfd-app) | ## Online Examples @@ -27,7 +26,7 @@ You can use [`create-gnfd-app`](./packages/create-gnfd-app/README.md) to create > npx @bnb-chain/create-gnfd-app ``` -![](./packages/create-gnfd-app/example.gif) +![quick start example](./packages/create-gnfd-app/example.gif) ## Supported JS environments @@ -44,6 +43,7 @@ You can use [`create-gnfd-app`](./packages/create-gnfd-app/README.md) to create ``` 2. Build packages: + ```bash > pnpm -F "@bnb-chain/**" build ``` diff --git a/packages/zk-crypto/README.md b/packages/zk-crypto/README.md index 0ab7a576..d10b0054 100644 --- a/packages/zk-crypto/README.md +++ b/packages/zk-crypto/README.md @@ -1,4 +1,6 @@ -# Zk Crypto +# Zk Crypto (Deprecated!) + +> Using ed25519 since `1.3.0` NPM Wrap for [zkbnb-js-sdk](https://github.com/bnb-chain/zkbnb-js-sdk). From 007a4ba9b0414825279dbfb78c74ef311f34ca65 Mon Sep 17 00:00:00 2001 From: rk <59029880+rrr523@users.noreply.github.com> Date: Tue, 12 Mar 2024 17:27:43 +0800 Subject: [PATCH 407/433] Feat/preview api (#496) * feat: Preview Api * feat: Preview Api --- .changeset/wet-dragons-obey.md | 5 +++++ .../src/components/object/info/index.tsx | 3 ++- packages/js-sdk/src/api/objects.ts | 22 +++++++++++++++++-- packages/js-sdk/src/api/offchainauth.ts | 8 +++---- packages/js-sdk/src/types/storage.ts | 7 ++++-- 5 files changed, 36 insertions(+), 9 deletions(-) create mode 100644 .changeset/wet-dragons-obey.md diff --git a/.changeset/wet-dragons-obey.md b/.changeset/wet-dragons-obey.md new file mode 100644 index 00000000..1c995388 --- /dev/null +++ b/.changeset/wet-dragons-obey.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: ed25519 support preview api diff --git a/examples/nextjs/src/components/object/info/index.tsx b/examples/nextjs/src/components/object/info/index.tsx index 1205bedc..4c4ec4bc 100644 --- a/examples/nextjs/src/components/object/info/index.tsx +++ b/examples/nextjs/src/components/object/info/index.tsx @@ -1,4 +1,5 @@ import { client, selectSp } from '@/client'; +import { ACCOUNT_PRIVATEKEY } from '@/config/env'; import { getOffchainAuthKeys } from '@/utils/offchainAuth'; import { useState } from 'react'; import { useAccount } from 'wagmi'; @@ -96,7 +97,7 @@ export const ObjectInfo = () => { view: '1', 'X-Gnfd-User-Address': address, 'X-Gnfd-App-Domain': window.location.origin, - 'X-Gnfd-Expiry-Timestamp': '2023-09-03T09%3A23%3A39Z', + 'X-Gnfd-Expiry-Timestamp': '2024-03-12T09:39:22Z', }, }, { diff --git a/packages/js-sdk/src/api/objects.ts b/packages/js-sdk/src/api/objects.ts index 59fabe74..97442185 100644 --- a/packages/js-sdk/src/api/objects.ts +++ b/packages/js-sdk/src/api/objects.ts @@ -25,6 +25,8 @@ import { MsgUpdateObjectInfo, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; +import { hexlify } from '@ethersproject/bytes'; +import { ed25519 } from '@noble/curves/ed25519'; import { Headers } from 'cross-fetch'; import { bytesToUtf8, hexToBytes } from 'ethereum-cryptography/utils'; import { container, delay, inject, injectable } from 'tsyringe'; @@ -37,7 +39,12 @@ import { newObjectGRN, } from '..'; import { RpcQueryClient } from '../clients/queryclient'; -import { encodePath, getAuthorization, getSortQuery } from '../clients/spclient/auth'; +import { + encodePath, + getAuthorization, + getSortQuery, + HTTPHeaderRegPubKey, +} from '../clients/spclient/auth'; import { getApprovalMetaInfo } from '../clients/spclient/spApis/approval'; import { getGetObjectMetaInfo } from '../clients/spclient/spApis/getObject'; import { @@ -461,6 +468,9 @@ export class Objects implements IObject { public async getObjectPreviewUrl(params: GetPrivewObject, authType: AuthType) { assertAuthType(authType); + if (authType.type === 'ECDSA') { + throw new Error('Get object preview url only support EDDSA'); + } const { bucketName, objectName, queryMap } = params; verifyBucketName(bucketName); verifyObjectName(objectName); @@ -472,7 +482,15 @@ export class Objects implements IObject { const path = '/' + encodePath(objectName); const url = generateUrlByBucketName(endpoint, bucketName) + path; - const queryRaw = getSortQuery(queryMap); + let pubKey = ''; + if (authType.type === 'EDDSA') { + pubKey = hexlify(ed25519.getPublicKey(authType.seed.slice(2))); + } + + const queryRaw = getSortQuery({ + ...queryMap, + [HTTPHeaderRegPubKey]: pubKey.slice(2), + }); const canonicalRequest = [ METHOD_GET, diff --git a/packages/js-sdk/src/api/offchainauth.ts b/packages/js-sdk/src/api/offchainauth.ts index 01b8e58b..afc53d44 100644 --- a/packages/js-sdk/src/api/offchainauth.ts +++ b/packages/js-sdk/src/api/offchainauth.ts @@ -43,7 +43,7 @@ export class OffChainAuth implements IOffChainAuth { const signRes = await personalSign({ message: signMsg, address, provider }); const jsonSignMsg = JSON.stringify(signMsg).replace(/\"/g, ''); const authorization = `GNFD1-ETH-PERSONAL_SIGN,SignedMsg=${jsonSignMsg},Signature=${signRes}`; - // 4. upload signature and pubKey to server + const res = await updateSpsPubKey({ address, sps, @@ -70,9 +70,9 @@ export class OffChainAuth implements IOffChainAuth { code: 0, body: { seedString: hexlify(privateKey), - keypars: { - privateKey: hexlify(privateKey), - publicKey: hexlify(publicKey), + keypairs: { + privateKey: hexlify(privateKey).slice(2), + publicKey: hexlify(publicKey).slice(2), }, expirationTime, spAddresses: successSps, diff --git a/packages/js-sdk/src/types/storage.ts b/packages/js-sdk/src/types/storage.ts index 012246d5..67b5e4e6 100644 --- a/packages/js-sdk/src/types/storage.ts +++ b/packages/js-sdk/src/types/storage.ts @@ -21,10 +21,13 @@ export interface IGenOffChainAuthKeyPairAndUpload extends IBaseUser { export interface IReturnOffChainAuthKeyPairAndUpload { /** - * compatibility: private key + * compatibility for old version: private key */ seedString: string; - keypars: { + /** + * public key and private key without prefix `0x` + */ + keypairs: { privateKey: string; publicKey: string; }; From 7168d2f7b4bf57ac63de51ed8b994dc3779e9ee3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 13 Mar 2024 11:33:11 +0800 Subject: [PATCH 408/433] chore: [ci] release (alpha) (#497) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 3 ++- examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 8 ++++++++ packages/js-sdk/package.json | 2 +- 5 files changed, 20 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index d52cafd7..766f9582 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -14,6 +14,7 @@ }, "changesets": [ "heavy-dolphins-obey", - "sixty-mayflies-sin" + "sixty-mayflies-sin", + "wet-dragons-obey" ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 6af0bf89..84209508 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.28-alpha.1 + +### Patch Changes + +- Updated dependencies + [[`007a4ba`](https://github.com/bnb-chain/greenfield-js-sdk/commit/007a4ba9b0414825279dbfb78c74ef311f34ca65)]: + - @bnb-chain/greenfield-js-sdk@1.3.0-alpha.1 + ## 0.0.28-alpha.0 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 25de8a8c..94a96e83 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.28-alpha.0", + "version": "0.0.28-alpha.1", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index 66ded43b..90dc03aa 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 1.3.0-alpha.1 + +### Patch Changes + +- [#496](https://github.com/bnb-chain/greenfield-js-sdk/pull/496) + [`007a4ba`](https://github.com/bnb-chain/greenfield-js-sdk/commit/007a4ba9b0414825279dbfb78c74ef311f34ca65) + Thanks [@rrr523](https://github.com/rrr523)! - feat: ed25519 support preview api + ## 1.3.0-alpha.0 ### Minor Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 1794bb9d..f792c8de 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.3.0-alpha.0", + "version": "1.3.0-alpha.1", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 70afa12e6194b99426e41af21bebd74b17f60faa Mon Sep 17 00:00:00 2001 From: rrr523 Date: Fri, 15 Mar 2024 23:32:18 +0800 Subject: [PATCH 409/433] feat: Upgrade types to 31 --- packages/js-sdk/package.json | 2 +- pnpm-lock.yaml | 886 ++++++++++++++++++++++++++++++----- 2 files changed, 758 insertions(+), 130 deletions(-) diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index f792c8de..95078a94 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -59,7 +59,7 @@ ] }, "dependencies": { - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.30", + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.31", "@cosmjs/proto-signing": "^0.32.0", "@cosmjs/stargate": "^0.32.0", "@cosmjs/tendermint-rpc": "^0.32.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 38d7f676..e36e946b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,7 +43,7 @@ importers: version: 3.0.2(rollup@2.79.1) '@rollup/plugin-typescript': specifier: ^11.1.3 - version: 11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5) + version: 11.1.3(rollup@2.79.1)(typescript@5.4.2) '@types/chai': specifier: ^4.3.5 version: 4.3.5 @@ -61,10 +61,10 @@ importers: version: 18.2.5 '@typescript-eslint/eslint-plugin': specifier: ^5.59.11 - version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.4.2) '@typescript-eslint/parser': specifier: ^5.59.11 - version: 5.59.11(eslint@8.48.0)(typescript@4.9.5) + version: 5.59.11(eslint@8.48.0)(typescript@5.4.2) chai: specifier: ^4.3.7 version: 4.3.7 @@ -76,7 +76,7 @@ importers: version: 8.48.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5) + version: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.4.2) eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.1(eslint@8.48.0)(prettier@2.8.8) @@ -109,16 +109,16 @@ importers: dependencies: '@docusaurus/core': specifier: 3.0.1 - version: 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + version: 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/plugin-ideal-image': specifier: ^3.0.1 - version: 3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + version: 3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/preset-classic': specifier: 3.0.1 - version: 3.0.1(@algolia/client-search@4.22.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) + version: 3.0.1(@algolia/client-search@4.22.1)(@types/react@18.2.65)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.4.2) '@mdx-js/react': specifier: ^3.0.0 - version: 3.0.0(@types/react@18.2.21)(react@18.2.0) + version: 3.0.0(@types/react@18.2.65)(react@18.2.0) clsx: specifier: ^1.2.1 version: 1.2.1 @@ -291,7 +291,7 @@ importers: dependencies: '@bnb-chain/greenfield-js-sdk': specifier: ^1.3.0-alpha.0 - version: link:../../packages/js-sdk + version: 1.3.0-alpha.1 '@bnb-chain/reed-solomon': specifier: ^1.1.1 version: link:../../packages/reed-solomon @@ -376,8 +376,8 @@ importers: packages/js-sdk: dependencies: '@bnb-chain/greenfield-cosmos-types': - specifier: 0.4.0-alpha.30 - version: 0.4.0-alpha.30 + specifier: 0.4.0-alpha.31 + version: 0.4.0-alpha.31 '@cosmjs/proto-signing': specifier: ^0.32.0 version: 0.32.0 @@ -480,16 +480,16 @@ importers: version: 16.0.3 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + version: 29.5.0(@types/node@20.11.27)(ts-node@10.9.1) mime: specifier: ^3.0.0 version: 3.0.0 ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.23.5)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.24.0)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + version: 10.9.1(@types/node@20.11.27)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.2 @@ -725,6 +725,14 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} @@ -748,6 +756,11 @@ packages: engines: {node: '>=6.9.0'} dev: false + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/core@7.23.3: resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==} engines: {node: '>=6.9.0'} @@ -792,6 +805,29 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core@7.24.0: + resolution: {integrity: sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) + '@babel/helpers': 7.24.0 + '@babel/parser': 7.24.0 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.0 + '@babel/types': 7.24.0 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/eslint-parser@7.21.8(@babel/core@7.23.3)(eslint@8.48.0): resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} @@ -834,6 +870,16 @@ packages: '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + dev: true + /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} @@ -864,6 +910,17 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.23.0 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.23.3): resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} engines: {node: '>=6.9.0'} @@ -1059,6 +1116,20 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} @@ -1181,6 +1252,11 @@ packages: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-wrap-function@7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} @@ -1222,6 +1298,17 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helpers@7.24.0: + resolution: {integrity: sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.0 + '@babel/types': 7.24.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/highlight@7.22.13: resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} @@ -1260,6 +1347,14 @@ packages: dependencies: '@babel/types': 7.23.5 + /@babel/parser@7.24.0: + resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.0 + dev: true + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.23.3): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} @@ -3424,6 +3519,15 @@ packages: '@babel/parser': 7.23.3 '@babel/types': 7.23.3 + /@babel/template@7.24.0: + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 + dev: true + /@babel/traverse@7.23.3: resolution: {integrity: sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==} engines: {node: '>=6.9.0'} @@ -3458,6 +3562,24 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse@7.24.0: + resolution: {integrity: sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/types@7.22.15: resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} engines: {node: '>=6.9.0'} @@ -3482,6 +3604,15 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + /@babel/types@7.24.0: + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true @@ -3493,6 +3624,46 @@ packages: protobufjs: 6.11.4 dev: false + /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.31: + resolution: {integrity: sha512-EPKQyQC/oe4/2p1Pn0FCECl7RyIvsXKs8bOmQHaylZweS6rZkXj5yov9oD1dVoHglV/tbQ/6EjdPg3wXUR+rww==} + dependencies: + long: 4.0.0 + protobufjs: 6.11.4 + dev: false + + /@bnb-chain/greenfield-js-sdk@1.3.0-alpha.1: + resolution: {integrity: sha512-kjgAoLnRhuSQmOyk4mpeFfREwsQsZlo9Kom9Om8X58B/oUA1wnjblkvuHf1vab4667DOo7oNMT35YnSN9XtVAg==} + dependencies: + '@bnb-chain/greenfield-cosmos-types': 0.4.0-alpha.30 + '@cosmjs/proto-signing': 0.32.3 + '@cosmjs/stargate': 0.32.3 + '@cosmjs/tendermint-rpc': 0.32.3 + '@ethersproject/base64': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/units': 5.7.0 + '@metamask/eth-sig-util': 5.1.0 + '@noble/curves': 1.4.0 + cross-fetch: 4.0.0 + dayjs: 1.11.10 + ethereum-cryptography: 2.1.3 + fast-xml-parser: 4.3.5 + lodash.clonedeep: 4.5.0 + lodash.get: 4.4.2 + lodash.mapvalues: 4.6.0 + lodash.set: 4.3.2 + lodash.sortby: 4.7.0 + long: 5.2.3 + reflect-metadata: 0.1.14 + tsyringe: 4.8.0 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - utf-8-validate + dev: false + /@chainsafe/as-sha256@0.3.1: resolution: {integrity: sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==} dev: false @@ -3843,7 +4014,7 @@ packages: lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.4.2) typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -3942,6 +4113,15 @@ packages: '@cosmjs/utils': 0.32.0 dev: false + /@cosmjs/amino@0.32.3: + resolution: {integrity: sha512-G4zXl+dJbqrz1sSJ56H/25l5NJEk/pAPIr8piAHgbXYw88OdAOlpA26PQvk2IbSN/rRgVbvlLTNgX2tzz1dyUA==} + dependencies: + '@cosmjs/crypto': 0.32.3 + '@cosmjs/encoding': 0.32.3 + '@cosmjs/math': 0.32.3 + '@cosmjs/utils': 0.32.3 + dev: false + /@cosmjs/crypto@0.28.13: resolution: {integrity: sha512-ynKfM0q/tMBQMHJby6ad8lR3gkgBKaelQhIsCZTjClsnuC7oYT9y3ThSZCUWr7Pa9h0J8ahU2YV2oFWFVWJQzQ==} dependencies: @@ -3966,6 +4146,18 @@ packages: libsodium-wrappers-sumo: 0.7.13 dev: false + /@cosmjs/crypto@0.32.3: + resolution: {integrity: sha512-niQOWJHUtlJm2GG4F00yGT7sGPKxfUwz+2qQ30uO/E3p58gOusTcH2qjiJNVxb8vScYJhFYFqpm/OA/mVqoUGQ==} + dependencies: + '@cosmjs/encoding': 0.32.3 + '@cosmjs/math': 0.32.3 + '@cosmjs/utils': 0.32.3 + '@noble/hashes': 1.4.0 + bn.js: 5.2.1 + elliptic: 6.5.5 + libsodium-wrappers-sumo: 0.7.13 + dev: false + /@cosmjs/encoding@0.28.13: resolution: {integrity: sha512-jtXbAYtV77rLHxoIrjGFsvgGjeTKttuHRv6cvuy3toCZzY7JzTclKH5O2g36IIE4lXwD9xwuhGJ2aa6A3dhNkA==} dependencies: @@ -3982,6 +4174,14 @@ packages: readonly-date: 1.0.0 dev: false + /@cosmjs/encoding@0.32.3: + resolution: {integrity: sha512-p4KF7hhv8jBQX3MkB3Defuhz/W0l3PwWVYU2vkVuBJ13bJcXyhU9nJjiMkaIv+XP+W2QgRceqNNgFUC5chNR7w==} + dependencies: + base64-js: 1.5.1 + bech32: 1.1.4 + readonly-date: 1.0.0 + dev: false + /@cosmjs/json-rpc@0.32.0: resolution: {integrity: sha512-BhnPvgbNPjQZnpzstn6+uLGsP2E4IwREbP7L95yTid+IdTrdnFcF8Ol6xXBWsUtVHtUibX+rbK3wSSgEAV0OBA==} dependencies: @@ -3989,6 +4189,13 @@ packages: xstream: 11.14.0 dev: false + /@cosmjs/json-rpc@0.32.3: + resolution: {integrity: sha512-JwFRWZa+Y95KrAG8CuEbPVOSnXO2uMSEBcaAB/FBU3Mo4jQnDoUjXvt3vwtFWxfAytrWCn1I4YDFaOAinnEG/Q==} + dependencies: + '@cosmjs/stream': 0.32.3 + xstream: 11.14.0 + dev: false + /@cosmjs/math@0.28.13: resolution: {integrity: sha512-PDpL8W/kbyeWi0mQ2OruyqE8ZUAdxPs1xCbDX3WXJwy2oU+X2UTbkuweJHVpS9CIqmZulBoWQAmlf6t6zr1N/g==} dependencies: @@ -4001,6 +4208,12 @@ packages: bn.js: 5.2.1 dev: false + /@cosmjs/math@0.32.3: + resolution: {integrity: sha512-amumUtZs8hCCnV+lSBaJIiZkGabQm22QGg/IotYrhcmoOEOjt82n7hMNlNXRs7V6WLMidGrGYcswB5zcmp0Meg==} + dependencies: + bn.js: 5.2.1 + dev: false + /@cosmjs/proto-signing@0.28.13: resolution: {integrity: sha512-nSl/2ZLsUJYz3Ad0RY3ihZUgRHIow2OnYqKsESMu+3RA/jTi9bDYhiBu8mNMHI0xrEJry918B2CyI56pOUHdPQ==} dependencies: @@ -4024,6 +4237,17 @@ packages: cosmjs-types: 0.9.0 dev: false + /@cosmjs/proto-signing@0.32.3: + resolution: {integrity: sha512-kSZ0ZUY0DwcRT0NcIn2HkadH4NKlwjfZgbLj1ABwh/4l0RgeT84QCscZCu63tJYq3K6auwqTiZSZERwlO4/nbg==} + dependencies: + '@cosmjs/amino': 0.32.3 + '@cosmjs/crypto': 0.32.3 + '@cosmjs/encoding': 0.32.3 + '@cosmjs/math': 0.32.3 + '@cosmjs/utils': 0.32.3 + cosmjs-types: 0.9.0 + dev: false + /@cosmjs/socket@0.32.0: resolution: {integrity: sha512-fzb9pBJ6RNYdMIpjCv6NHdQ7C9xSJvP0tF/Tfmmq0yexxl/xDkqSghaDub/os7QzN23RHjTreWjrz9Gov4Z5Vg==} dependencies: @@ -4036,6 +4260,18 @@ packages: - utf-8-validate dev: false + /@cosmjs/socket@0.32.3: + resolution: {integrity: sha512-F2WwNmaUPdZ4SsH6Uyreq3wQk7jpaEkb3wfOP951f5Jt6HCW/PxbxhKzHkAAf6+Sqks6SPhkbWoE8XaZpjL2KA==} + dependencies: + '@cosmjs/stream': 0.32.3 + isomorphic-ws: 4.0.1(ws@7.5.9) + ws: 7.5.9 + xstream: 11.14.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + /@cosmjs/stargate@0.32.0: resolution: {integrity: sha512-Yo3l+A4vdy3ql30cIanY/j2uD3zxRXTQPrn2YUc67qCxacFkf7Fn3N9GdI7D/B2LQlguf/B5OwheizzWucapkw==} dependencies: @@ -4055,12 +4291,37 @@ packages: - utf-8-validate dev: false + /@cosmjs/stargate@0.32.3: + resolution: {integrity: sha512-OQWzO9YWKerUinPIxrO1MARbe84XkeXJAW0lyMIjXIEikajuXZ+PwftiKA5yA+8OyditVmHVLtPud6Pjna2s5w==} + dependencies: + '@confio/ics23': 0.6.8 + '@cosmjs/amino': 0.32.3 + '@cosmjs/encoding': 0.32.3 + '@cosmjs/math': 0.32.3 + '@cosmjs/proto-signing': 0.32.3 + '@cosmjs/stream': 0.32.3 + '@cosmjs/tendermint-rpc': 0.32.3 + '@cosmjs/utils': 0.32.3 + cosmjs-types: 0.9.0 + xstream: 11.14.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: false + /@cosmjs/stream@0.32.0: resolution: {integrity: sha512-df3Svup2QwVr6EqmOzv3KTL0sOxN2sKvz4XJItUeDDxXbcEtTB0+kypmsRQihpXCCmetNArdnvbvkPWxsKCq0w==} dependencies: xstream: 11.14.0 dev: false + /@cosmjs/stream@0.32.3: + resolution: {integrity: sha512-J2zVWDojkynYifAUcRmVczzmp6STEpyiAARq0rSsviqjreGIfspfuws/8rmkPa6qQBZvpQOBQCm2HyZZwYplIw==} + dependencies: + xstream: 11.14.0 + dev: false + /@cosmjs/tendermint-rpc@0.32.0: resolution: {integrity: sha512-bGH3C0CymIzkROltbqw1iXOEkXJkpjdngJu3hdCdB7bD9xbCWOqB9mT+aLpjNAkzSEAHR4nrWv1JF+3PU2Eggg==} dependencies: @@ -4080,6 +4341,25 @@ packages: - utf-8-validate dev: false + /@cosmjs/tendermint-rpc@0.32.3: + resolution: {integrity: sha512-xeprW+VR9xKGstqZg0H/KBZoUp8/FfFyS9ljIUTLM/UINjP2MhiwncANPS2KScfJVepGufUKk0/phHUeIBSEkw==} + dependencies: + '@cosmjs/crypto': 0.32.3 + '@cosmjs/encoding': 0.32.3 + '@cosmjs/json-rpc': 0.32.3 + '@cosmjs/math': 0.32.3 + '@cosmjs/socket': 0.32.3 + '@cosmjs/stream': 0.32.3 + '@cosmjs/utils': 0.32.3 + axios: 1.6.7 + readonly-date: 1.0.0 + xstream: 11.14.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: false + /@cosmjs/utils@0.28.13: resolution: {integrity: sha512-dVeMBiyg+46x7XBZEfJK8yTihphbCFpjVYmLJVqmTsHfJwymQ65cpyW/C+V/LgWARGK8hWQ/aX9HM5Ao8QmMSg==} dev: false @@ -4088,6 +4368,10 @@ packages: resolution: {integrity: sha512-9EWhdTtpaNBSDf2i8nwkWWHfgXGumTVAQe4KuC/R0p3A842MiZhpMAU1WxaZkEO0fcvTbfnM/svAIMVcilDtkw==} dev: false + /@cosmjs/utils@0.32.3: + resolution: {integrity: sha512-WCZK4yksj2hBDz4w7xFZQTRZQ/RJhBX26uFHmmQFIcNUUVAihrLO+RerqJgk0dZqC42wstM9pEUQGtPmLcIYvg==} + dev: false + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -4103,7 +4387,7 @@ packages: resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@docsearch/react@3.5.2(@algolia/client-search@4.22.1)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): + /@docsearch/react@3.5.2(@algolia/client-search@4.22.1)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0): resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -4123,7 +4407,7 @@ packages: '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.20.0)(search-insights@2.13.0) '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.20.0) '@docsearch/css': 3.5.2 - '@types/react': 18.2.21 + '@types/react': 18.2.65 algoliasearch: 4.20.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4132,7 +4416,7 @@ packages: - '@algolia/client-search' dev: false - /@docusaurus/core@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/core@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-CXrLpOnW+dJdSv8M5FAJ3JBwXtL6mhUWxFA8aS0ozK6jBG/wgxERk5uvH28fCeFxOGbAT9v1e9dOMo1X2IEVhQ==} engines: {node: '>=18.0'} hasBin: true @@ -4187,10 +4471,10 @@ packages: lodash: 4.17.21 mini-css-extract-plugin: 2.7.6(webpack@5.89.0) postcss: 8.4.31 - postcss-loader: 7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0) + postcss-loader: 7.3.3(postcss@8.4.31)(typescript@5.4.2)(webpack@5.89.0) prompts: 2.4.2 react: 18.2.0 - react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) + react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@5.4.2)(webpack@5.89.0) react-dom: 18.2.0(react@18.2.0) react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) react-loadable: /@docusaurus/react-loadable@5.5.2(react@18.2.0) @@ -4351,14 +4635,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-blog@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-content-blog@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-cLOvtvAyaMQFLI8vm4j26svg3ktxMPSXpuUJ7EERKoGbfpJSsgtowNHcRsaBVmfuCsRSk1HZ/yHBsUkTmHFEsg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/logger': 3.0.1 '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) @@ -4395,14 +4679,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-content-docs@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-dRfAOA5Ivo+sdzzJGXEu33yAtvGg8dlZkvt/NEJ7nwi1F2j4LEdsxtfX2GKeETB2fP6XoGNSQnFXqa2NYGrHFg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/logger': 3.0.1 '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) @@ -4437,14 +4721,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-content-pages@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-oP7PoYizKAXyEttcvVzfX3OoBIXEmXTMzCdfmC4oSwjG4SPcJsRge3mmI6O8jcZBgUPjIzXD21bVGWEE1iu8gg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) @@ -4472,14 +4756,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-debug@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-09dxZMdATky4qdsZGzhzlUvvC+ilQ2hKbYF+wez+cM2mGo4qHbv8+qKXqxq0CQZyimwlAOWQLoSozIXU0g0i7g==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) fs-extra: 11.1.1 @@ -4505,14 +4789,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-google-analytics@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-jwseSz1E+g9rXQwDdr0ZdYNjn8leZBnKPjjQhMBEiwDoenL3JYFcNW0+p0sWoVF/f2z5t7HkKA+cYObrUh18gg==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) react: 18.2.0 @@ -4536,14 +4820,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-google-gtag@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-UFTDvXniAWrajsulKUJ1DB6qplui1BlKLQZjX4F7qS/qfJ+qkKqSkhJ/F4VuGQ2JYeZstYb+KaUzUzvaPK1aRQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) '@types/gtag.js': 0.0.12 @@ -4568,14 +4852,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-google-tag-manager@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-IPFvuz83aFuheZcWpTlAdiiX1RqWIHM+OH8wS66JgwAKOiQMR3+nLywGjkLV4bp52x7nCnwhNk1rE85Cpy/CIw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) react: 18.2.0 @@ -4599,7 +4883,7 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-ideal-image@3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-ideal-image@3.0.1(eslint@8.48.0)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-IvAUpEIz6v1/fVz6UTdQY12pYIE5geNFtsuKpsULpMaotwYf3Gs7acXjQog4qquKkc65yV5zuvMj8BZMHEwLyQ==} engines: {node: '>=18.0'} peerDependencies: @@ -4610,7 +4894,7 @@ packages: jimp: optional: true dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/lqip-loader': 3.0.1(webpack@5.89.0) '@docusaurus/responsive-loader': 1.7.0(sharp@0.32.6) '@docusaurus/theme-translations': 3.0.1 @@ -4642,14 +4926,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/plugin-sitemap@3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-xARiWnjtVvoEniZudlCq5T9ifnhCu/GAZ5nA7XgyLfPcNpHQa241HZdsTlLtVcecEVVdllevBKOp7qknBBaMGw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/logger': 3.0.1 '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) @@ -4678,25 +4962,25 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.22.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): + /@docusaurus/preset-classic@3.0.1(@algolia/client-search@4.22.1)(@types/react@18.2.65)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.4.2): resolution: {integrity: sha512-il9m9xZKKjoXn6h0cRcdnt6wce0Pv1y5t4xk2Wx7zBGhKG1idu4IFHtikHlD0QPuZ9fizpXspXcTzjL5FXc1Gw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-debug': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-analytics': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-gtag': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-google-tag-manager': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-sitemap': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.22.1)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-debug': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-google-analytics': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-google-gtag': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-google-tag-manager': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-sitemap': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/theme-classic': 3.0.1(@types/react@18.2.65)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/theme-search-algolia': 3.0.1(@algolia/client-search@4.22.1)(@docusaurus/types@3.0.1)(@types/react@18.2.65)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.4.2) '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4746,26 +5030,26 @@ packages: sharp: 0.32.6 dev: false - /@docusaurus/theme-classic@3.0.1(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/theme-classic@3.0.1(@types/react@18.2.65)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-XD1FRXaJiDlmYaiHHdm27PNhhPboUah9rqIH0lMpBt5kYtsGjJzhqa27KuZvHLzOP2OEpqd2+GZ5b6YPq7Q05Q==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/theme-translations': 3.0.1 '@docusaurus/types': 3.0.1(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) - '@mdx-js/react': 3.0.0(@types/react@18.2.21)(react@18.2.0) + '@mdx-js/react': 3.0.0(@types/react@18.2.65)(react@18.2.0) clsx: 2.0.0 copy-text-to-clipboard: 3.2.0 infima: 0.2.0-alpha.43 @@ -4799,7 +5083,7 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5): + /@docusaurus/theme-common@3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2): resolution: {integrity: sha512-cr9TOWXuIOL0PUfuXv6L5lPlTgaphKP+22NdVBOYah5jSq5XAAulJTjfe+IfLsEG4L7lJttLbhW7LXDFSAI7Ag==} engines: {node: '>=18.0'} peerDependencies: @@ -4808,9 +5092,9 @@ packages: dependencies: '@docusaurus/mdx-loader': 3.0.1(@docusaurus/types@3.0.1)(react-dom@18.2.0)(react@18.2.0) '@docusaurus/module-type-aliases': 3.0.1(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-blog': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/plugin-content-pages': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-common': 3.0.1(@docusaurus/types@3.0.1) '@types/history': 4.7.11 @@ -4842,18 +5126,18 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.22.1)(@docusaurus/types@3.0.1)(@types/react@18.2.21)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@4.9.5): + /@docusaurus/theme-search-algolia@3.0.1(@algolia/client-search@4.22.1)(@docusaurus/types@3.0.1)(@types/react@18.2.65)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0)(typescript@5.4.2): resolution: {integrity: sha512-DDiPc0/xmKSEdwFkXNf1/vH1SzJPzuJBar8kMcBbDAZk/SAmo/4lf6GU2drou4Ae60lN2waix+jYWTWcJRahSA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.5.2(@algolia/client-search@4.22.1)(@types/react@18.2.21)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) - '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docsearch/react': 3.5.2(@algolia/client-search@4.22.1)(@types/react@18.2.65)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.13.0) + '@docusaurus/core': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/logger': 3.0.1 - '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) - '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 3.0.1(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) + '@docusaurus/theme-common': 3.0.1(@docusaurus/types@3.0.1)(eslint@8.48.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.2) '@docusaurus/theme-translations': 3.0.1 '@docusaurus/utils': 3.0.1(@docusaurus/types@3.0.1) '@docusaurus/utils-validation': 3.0.1(@docusaurus/types@3.0.1) @@ -5061,6 +5345,15 @@ packages: ethereum-cryptography: 1.2.0 dev: false + /@ethereumjs/util@8.1.0: + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.1.3 + micro-ftch: 0.3.1 + dev: false + /@ethersproject/abstract-provider@5.7.0: resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} dependencies: @@ -5761,14 +6054,33 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.19 + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true + /@jridgewell/source-map@0.3.5: resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} dependencies: @@ -5790,6 +6102,13 @@ packages: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: @@ -5865,14 +6184,14 @@ packages: - supports-color dev: false - /@mdx-js/react@3.0.0(@types/react@18.2.21)(react@18.2.0): + /@mdx-js/react@3.0.0(@types/react@18.2.65)(react@18.2.0): resolution: {integrity: sha512-nDctevR9KyYFyV+m+/+S4cpzCWHqj+iHDHq3QrsWezcC+B17uZdIWgCguESUkwFhM3n/56KxWVE3V6EokrmONQ==} peerDependencies: '@types/react': '>=16' react: '>=16' dependencies: '@types/mdx': 2.0.10 - '@types/react': 18.2.21 + '@types/react': 18.2.65 react: 18.2.0 dev: false @@ -5899,6 +6218,18 @@ packages: tweetnacl-util: 0.15.1 dev: false + /@metamask/eth-sig-util@5.1.0: + resolution: {integrity: sha512-mlgziIHYlA9pi/XZerChqg4NocdOgBPB9NmxgXWQO2U2hH8RGOJQrz6j/AIKkYxgCMIE2PY000+joOwXfzeTDQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 4.12.0 + ethereum-cryptography: 2.1.3 + ethjs-util: 0.1.6 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + dev: false + /@metamask/safe-event-emitter@2.0.0: resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} dev: false @@ -6095,6 +6426,12 @@ packages: '@noble/hashes': 1.3.3 dev: false + /@noble/curves@1.4.0: + resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} + dependencies: + '@noble/hashes': 1.4.0 + dev: false + /@noble/hashes@1.2.0: resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} dev: false @@ -6113,6 +6450,11 @@ packages: engines: {node: '>= 16'} dev: false + /@noble/hashes@1.4.0: + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + dev: false + /@noble/secp256k1@1.7.1: resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} dev: false @@ -6287,6 +6629,7 @@ packages: picocolors: 1.0.0 tiny-glob: 0.2.9 tslib: 2.6.2 + dev: false /@pnpm/config.env-replace@1.1.0: resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} @@ -6537,6 +6880,25 @@ packages: typescript: 4.9.5 dev: true + /@rollup/plugin-typescript@11.1.3(rollup@2.79.1)(typescript@5.4.2): + resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@2.79.1) + resolve: 1.22.2 + rollup: 2.79.1 + typescript: 5.4.2 + dev: true + /@rollup/pluginutils@3.1.0(rollup@2.79.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} @@ -6664,6 +7026,14 @@ packages: '@scure/base': 1.1.5 dev: false + /@scure/bip32@1.3.3: + resolution: {integrity: sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==} + dependencies: + '@noble/curves': 1.3.0 + '@noble/hashes': 1.3.3 + '@scure/base': 1.1.5 + dev: false + /@scure/bip39@1.1.1: resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} dependencies: @@ -6685,6 +7055,13 @@ packages: '@scure/base': 1.1.5 dev: false + /@scure/bip39@1.2.2: + resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} + dependencies: + '@noble/hashes': 1.3.3 + '@scure/base': 1.1.5 + dev: false + /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: @@ -7492,6 +7869,11 @@ packages: dependencies: undici-types: 5.26.5 + /@types/node@20.11.27: + resolution: {integrity: sha512-qyUZfMnCg1KEz57r7pzFtSGt49f6RPkPBis3Vo4PbS7roQEDn22hiHzl/Lo1q4i4hDEgBJmBF/NTNg2XR0HbFg==} + dependencies: + undici-types: 5.26.5 + /@types/node@20.6.0: resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} dev: false @@ -7590,6 +7972,14 @@ packages: '@types/scheduler': 0.16.6 csstype: 3.1.2 + /@types/react@18.2.65: + resolution: {integrity: sha512-98TsY0aW4jqx/3RqsUXwMDZSWR1Z4CUlJNue8ueS2/wcxZOsz4xmW1X8ieaWVRHcmmQM3R8xVA4XWB3dJnWwDQ==} + dependencies: + '@types/prop-types': 15.7.11 + '@types/scheduler': 0.16.8 + csstype: 3.1.3 + dev: false + /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: @@ -7722,7 +8112,7 @@ packages: dependencies: '@types/yargs-parser': 21.0.3 - /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.4.2): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7734,29 +8124,29 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.4.2) '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@5.4.2) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.4.2) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.2 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.4.2) + typescript: 5.4.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@5.4.2): resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@5.4.2) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -7781,6 +8171,26 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: false + + /@typescript-eslint/parser@5.59.11(eslint@8.48.0)(typescript@5.4.2): + resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.59.11 + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.4.2) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.48.0 + typescript: 5.4.2 + transitivePeerDependencies: + - supports-color /@typescript-eslint/scope-manager@5.59.11: resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} @@ -7797,7 +8207,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.7 dev: true - /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@5.4.2): resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7807,12 +8217,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.4.2) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.4.2) debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.4.2) + typescript: 5.4.2 transitivePeerDependencies: - supports-color dev: true @@ -7845,8 +8255,29 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: false + + /@typescript-eslint/typescript-estree@5.59.11(typescript@5.4.2): + resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/visitor-keys': 5.59.11 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.2 + tsutils: 3.21.0(typescript@5.4.2) + typescript: 5.4.2 + transitivePeerDependencies: + - supports-color - /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): + /@typescript-eslint/typescript-estree@5.59.7(typescript@5.4.2): resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7861,13 +8292,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@5.4.2) + typescript: 5.4.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@5.4.2): resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7878,7 +8309,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.4.2) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.2 @@ -7887,7 +8318,7 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@5.4.2): resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7898,7 +8329,7 @@ packages: '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.7 '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.4.2) eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.4 @@ -9412,6 +9843,16 @@ packages: - debug dev: false + /axios@1.6.7: + resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} + dependencies: + follow-redirects: 1.15.5 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + /axobject-query@3.1.1: resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} dependencies: @@ -9851,6 +10292,17 @@ packages: node-releases: 2.0.13 update-browserslist-db: 1.0.13(browserslist@4.22.1) + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001597 + electron-to-chromium: 1.4.704 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + dev: true + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -10049,6 +10501,10 @@ packages: /caniuse-lite@1.0.30001563: resolution: {integrity: sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==} + /caniuse-lite@1.0.30001597: + resolution: {integrity: sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==} + dev: true + /case@1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} engines: {node: '>= 0.8.0'} @@ -10678,7 +11134,7 @@ packages: dependencies: '@types/node': 18.16.18 cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@5.4.2) typescript: 4.9.5 dev: true @@ -10713,7 +11169,7 @@ packages: path-type: 4.0.0 dev: true - /cosmiconfig@8.3.6(typescript@4.9.5): + /cosmiconfig@8.3.6(typescript@5.4.2): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -10726,7 +11182,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 4.9.5 + typescript: 5.4.2 dev: false /cosmjs-types@0.4.1: @@ -11020,6 +11476,10 @@ packages: /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + dev: false + /csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} dev: true @@ -11054,6 +11514,10 @@ packages: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} dev: true + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dev: false + /dayjs@1.11.7: resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} dev: false @@ -11268,6 +11732,7 @@ packages: /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} + dev: false /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} @@ -11601,6 +12066,10 @@ packages: /electron-to-chromium@1.4.588: resolution: {integrity: sha512-soytjxwbgcCu7nh5Pf4S2/4wa6UIu+A3p03U2yVr53qGxi1/VTR3ENI+p50v+UxqqZAfl48j3z55ud7VHIOr9w==} + /electron-to-chromium@1.4.704: + resolution: {integrity: sha512-OK01+86Qvby1V6cTiowVbhp25aX4DLZnwar+NocAOXdzKAByd+jq5156bmo4kHwevWMknznW18Y/Svfk2dU91A==} + dev: true + /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -11613,6 +12082,18 @@ packages: minimalistic-crypto-utils: 1.0.1 dev: false + /elliptic@6.5.5: + resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==} + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: false + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} @@ -11822,7 +12303,7 @@ packages: eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) @@ -11832,7 +12313,7 @@ packages: - supports-color dev: false - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@4.9.5): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0)(typescript@5.4.2): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -11845,19 +12326,19 @@ packages: '@babel/core': 7.23.3 '@babel/eslint-parser': 7.21.8(@babel/core@7.23.3)(eslint@8.48.0) '@rushstack/eslint-patch': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.4.2) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.4.2) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.48.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.4.2) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.32.2(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) - eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@4.9.5) - typescript: 4.9.5 + eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@5.4.2) + typescript: 5.4.2 transitivePeerDependencies: - '@babel/plugin-syntax-flow' - '@babel/plugin-transform-react-jsx' @@ -11886,7 +12367,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.15.0 eslint: 8.48.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0) get-tsconfig: 4.5.0 globby: 13.1.3 is-core-module: 2.12.1 @@ -11894,8 +12375,9 @@ packages: synckit: 0.8.5 transitivePeerDependencies: - supports-color + dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -11916,11 +12398,10 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.4.2) debug: 3.2.7 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) transitivePeerDependencies: - supports-color @@ -11939,7 +12420,7 @@ packages: string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.48.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -11949,7 +12430,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@5.4.2) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -11957,7 +12438,7 @@ packages: doctrine: 2.1.0 eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.48.0) has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 @@ -11971,7 +12452,7 @@ packages: - eslint-import-resolver-webpack - supports-color - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@5.4.2): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -11984,8 +12465,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@5.4.2) + '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@5.4.2) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -12063,13 +12544,13 @@ packages: semver: 6.3.1 string.prototype.matchall: 4.0.8 - /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@4.9.5): + /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@5.4.2): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@5.4.2) eslint: 8.48.0 transitivePeerDependencies: - supports-color @@ -12321,6 +12802,15 @@ packages: '@scure/bip39': 1.2.0 dev: false + /ethereum-cryptography@2.1.3: + resolution: {integrity: sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==} + dependencies: + '@noble/curves': 1.3.0 + '@noble/hashes': 1.3.3 + '@scure/bip32': 1.3.3 + '@scure/bip39': 1.2.2 + dev: false + /ethereumjs-abi@0.6.8: resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} dependencies: @@ -12570,6 +13060,13 @@ packages: strnum: 1.0.5 dev: false + /fast-xml-parser@4.3.5: + resolution: {integrity: sha512-sWvP1Pl8H03B8oFJpFR3HE31HUfwtX7Rlf9BNsvdpujD4n7WMhfmu8h9wOV2u+c1k0ZilTADhPqypzx2J690ZQ==} + hasBin: true + dependencies: + strnum: 1.0.5 + dev: false + /fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -12778,12 +13275,22 @@ packages: optional: true dev: false + /follow-redirects@1.15.5: + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 - /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@5.4.2)(webpack@5.89.0): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -12811,7 +13318,7 @@ packages: schema-utils: 2.7.0 semver: 7.5.4 tapable: 1.1.3 - typescript: 4.9.5 + typescript: 5.4.2 webpack: 5.89.0 dev: false @@ -13008,6 +13515,7 @@ packages: /get-tsconfig@4.5.0: resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} + dev: false /git-clone@0.1.0: resolution: {integrity: sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==} @@ -13128,6 +13636,7 @@ packages: /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: false /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -13163,6 +13672,7 @@ packages: /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: false /google-protobuf@3.21.2: resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} @@ -13961,6 +14471,7 @@ packages: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true + dev: false /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} @@ -14246,6 +14757,7 @@ packages: engines: {node: '>=8'} dependencies: is-docker: 2.2.1 + dev: false /is-yarn-global@0.4.1: resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} @@ -14406,7 +14918,7 @@ packages: - supports-color dev: true - /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + /jest-cli@29.5.0(@types/node@20.11.27)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -14423,7 +14935,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@20.11.27)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -14469,7 +14981,47 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@20.11.27)(typescript@4.9.5) + transitivePeerDependencies: + - supports-color + dev: true + + /jest-config@29.5.0(@types/node@20.11.27)(ts-node@10.9.1): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.23.3 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.11.27 + babel-jest: 29.5.0(@babel/core@7.23.3) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1(@types/node@20.11.27)(typescript@4.9.5) transitivePeerDependencies: - supports-color dev: true @@ -14789,7 +15341,7 @@ packages: supports-color: 8.1.1 dev: false - /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + /jest@29.5.0(@types/node@20.11.27)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -14802,7 +15354,7 @@ packages: '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-cli: 29.5.0(@types/node@20.11.27)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color @@ -15308,6 +15860,10 @@ packages: resolution: {integrity: sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==} dev: false + /long@5.2.3: + resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + dev: false + /longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} dev: false @@ -15730,6 +16286,10 @@ packages: engines: {node: '>= 0.6'} dev: false + /micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + dev: false + /micromark-core-commonmark@2.0.0: resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} dependencies: @@ -16473,6 +17033,10 @@ packages: /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -16661,6 +17225,7 @@ packages: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 + dev: false /opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} @@ -17173,14 +17738,14 @@ packages: postcss-selector-parser: 6.0.13 dev: false - /postcss-loader@7.3.3(postcss@8.4.31)(typescript@4.9.5)(webpack@5.89.0): + /postcss-loader@7.3.3(postcss@8.4.31)(typescript@5.4.2)(webpack@5.89.0): resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} engines: {node: '>= 14.15.0'} peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 dependencies: - cosmiconfig: 8.3.6(typescript@4.9.5) + cosmiconfig: 8.3.6(typescript@5.4.2) jiti: 1.21.0 postcss: 8.4.31 semver: 7.5.4 @@ -17659,7 +18224,7 @@ packages: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 18.16.18 + '@types/node': 20.11.27 long: 4.0.0 dev: false @@ -17845,7 +18410,7 @@ packages: strip-json-comments: 2.0.1 dev: false - /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0): + /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@5.4.2)(webpack@5.89.0): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -17864,7 +18429,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.89.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@5.4.2)(webpack@5.89.0) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -17879,7 +18444,7 @@ packages: shell-quote: 1.8.1 strip-ansi: 6.0.1 text-table: 0.2.0 - typescript: 4.9.5 + typescript: 5.4.2 webpack: 5.89.0 transitivePeerDependencies: - eslint @@ -18231,6 +18796,10 @@ packages: resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} dev: false + /reflect-metadata@0.1.14: + resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==} + dev: false + /regenerate-unicode-properties@10.1.0: resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} engines: {node: '>=4'} @@ -19552,6 +20121,7 @@ packages: dependencies: '@pkgr/utils': 2.3.1 tslib: 2.6.2 + dev: false /tapable@1.1.3: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} @@ -19733,6 +20303,7 @@ packages: dependencies: globalyzer: 0.1.0 globrex: 0.1.2 + dev: false /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} @@ -19803,7 +20374,7 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false - /ts-jest@29.1.0(@babel/core@7.23.5)(jest@29.5.0)(typescript@4.9.5): + /ts-jest@29.1.0(@babel/core@7.24.0)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -19824,10 +20395,10 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.24.0 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest: 29.5.0(@types/node@20.11.27)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -19837,7 +20408,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.16.18)(typescript@4.9.5): + /ts-node@10.9.1(@types/node@18.16.18)(typescript@5.4.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -19863,6 +20434,37 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 + typescript: 5.4.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /ts-node@10.9.1(@types/node@20.11.27)(typescript@4.9.5): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 20.11.27 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -19894,6 +20496,16 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 + dev: false + + /tsutils@3.21.0(typescript@5.4.2): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.4.2 /tsyringe@4.8.0: resolution: {integrity: sha512-YB1FG+axdxADa3ncEtRnQCFq/M0lALGLxSZeVNbTU8NqhOVc51nnv2CISTcvc1kyv6EGPtXVr0v6lWeDxiijOA==} @@ -20010,6 +20622,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + /typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true + /ua-parser-js@1.0.37: resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} dev: false @@ -20258,6 +20875,17 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 + /update-browserslist-db@1.0.13(browserslist@4.23.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /update-notifier@6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} engines: {node: '>=14.16'} From 25e8a99a319fe2129fb5d3eb2f0c8658323ed0e3 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Fri, 15 Mar 2024 23:44:32 +0800 Subject: [PATCH 410/433] feat: Remove Approval when creating bucket --- .changeset/heavy-suits-punch.md | 5 + .../src/components/bucket/create/index.tsx | 39 ++--- packages/js-sdk/src/api/bucket.ts | 140 +++++------------- packages/js-sdk/src/api/virtualGroup.ts | 26 ++++ .../greenfield/storage/MsgCreateBucket.ts | 8 +- packages/js-sdk/src/types/common.ts | 16 +- .../js-sdk/src/types/sp/BucketApproval.ts | 27 ---- packages/js-sdk/src/types/sp/index.ts | 1 - packages/js-sdk/src/utils/asserts/s3.ts | 40 +++++ 9 files changed, 129 insertions(+), 173 deletions(-) create mode 100644 .changeset/heavy-suits-punch.md delete mode 100644 packages/js-sdk/src/types/sp/BucketApproval.ts diff --git a/.changeset/heavy-suits-punch.md b/.changeset/heavy-suits-punch.md new file mode 100644 index 00000000..09bf83e2 --- /dev/null +++ b/.changeset/heavy-suits-punch.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': minor +--- + +feat: Remove approval when create bucket diff --git a/examples/nextjs/src/components/bucket/create/index.tsx b/examples/nextjs/src/components/bucket/create/index.tsx index d85ecb20..53991b89 100644 --- a/examples/nextjs/src/components/bucket/create/index.tsx +++ b/examples/nextjs/src/components/bucket/create/index.tsx @@ -1,6 +1,5 @@ import { client, selectSp } from '@/client'; -import { getOffchainAuthKeys } from '@/utils/offchainAuth'; -import { GRNToString, newBucketGRN } from '@bnb-chain/greenfield-js-sdk'; +import { GRNToString, Long, newBucketGRN, VisibilityType } from '@bnb-chain/greenfield-js-sdk'; import { useState } from 'react'; import { useAccount } from 'wagmi'; @@ -31,34 +30,14 @@ export const CreateBucket = () => { const spInfo = await selectSp(); console.log('spInfo', spInfo); - const provider = await connector?.getProvider(); - const offChainData = await getOffchainAuthKeys(address, provider); - // console.log('offChainData', offChainData); - if (!offChainData) { - alert('No offchain, please create offchain pairs first'); - return; - } - - const createBucketTx = await client.bucket.createBucket( - { - bucketName: createBucketInfo.bucketName, - creator: address, - visibility: 'VISIBILITY_TYPE_PUBLIC_READ', - chargedReadQuota: '0', - spInfo: { - primarySpAddress: spInfo.primarySpAddress, - }, - paymentAddress: address, - }, - { - // type: 'ECDSA', - // privateKey: ACCOUNT_PRIVATEKEY, - type: 'EDDSA', - domain: window.location.origin, - seed: offChainData.seedString, - address, - }, - ); + const createBucketTx = await client.bucket.createBucket({ + bucketName: createBucketInfo.bucketName, + creator: address, + visibility: VisibilityType.VISIBILITY_TYPE_PUBLIC_READ, + chargedReadQuota: Long.fromString('0'), + paymentAddress: address, + primarySpAddress: spInfo.primarySpAddress, + }); const setTagTx = await client.storage.setTag({ operator: address, diff --git a/packages/js-sdk/src/api/bucket.ts b/packages/js-sdk/src/api/bucket.ts index dba8b0ce..9dd38430 100644 --- a/packages/js-sdk/src/api/bucket.ts +++ b/packages/js-sdk/src/api/bucket.ts @@ -24,9 +24,9 @@ import { MsgPutPolicy, MsgUpdateBucketInfo, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; +import { PickVGFStrategy } from '@bnb-chain/greenfield-cosmos-types/greenfield/virtualgroup/common'; import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { Headers } from 'cross-fetch'; -import { bytesToUtf8, hexToBytes } from 'ethereum-cryptography/utils'; import Long from 'long'; import { container, delay, inject, injectable } from 'tsyringe'; import { @@ -75,8 +75,6 @@ import { MsgDeleteBucketSDKTypeEIP712 } from '../messages/greenfield/storage/Msg import { MsgMigrateBucketSDKTypeEIP712 } from '../messages/greenfield/storage/MsgMigrateBucket'; import { MsgUpdateBucketInfoSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateBucketInfo'; import type { - CreateBucketApprovalRequest, - CreateBucketApprovalResponse, GetBucketMetaRequest, GetBucketMetaResponse, GetUserBucketsRequest, @@ -97,12 +95,13 @@ import { verifyAddress, verifyBucketName, verifyUrl } from '../utils/asserts/s3' import { decodeObjectFromHexString } from '../utils/encoding'; import { Sp } from './sp'; import { Storage } from './storage'; +import { VirtualGroup } from './virtualGroup'; export interface IBucket { /** - * get approval of creating bucket and send createBucket txn to greenfield chain + * send createBucket txn to greenfield chain */ - createBucket(params: CreateBucketApprovalRequest, authType: AuthType): Promise; + createBucket(msg: MsgCreateBucket): Promise; deleteBucket(msg: MsgDeleteBucket): Promise; @@ -125,14 +124,6 @@ export interface IBucket { authType: AuthType, ): Promise>; - /** - * returns the signature info for the approval of preCreating resources - */ - getCreateBucketApproval( - configParam: CreateBucketApprovalRequest, - authType: AuthType, - ): Promise>; - getMigrateBucketApproval( params: MigrateBucketApprovalRequest, authType: AuthType, @@ -197,119 +188,56 @@ export class Bucket implements IBucket { @inject(delay(() => TxClient)) private txClient: TxClient, @inject(delay(() => Sp)) private sp: Sp, @inject(delay(() => Storage)) private storage: Storage, + @inject(delay(() => VirtualGroup)) private virtualGroup: VirtualGroup, ) {} private queryClient = container.resolve(RpcQueryClient); private spClient = container.resolve(SpClient); - public async getCreateBucketApproval( - params: CreateBucketApprovalRequest, - authType: AuthType, - ): Promise> { - const { - bucketName, - creator, - visibility = 'VISIBILITY_TYPE_PUBLIC_READ', - chargedReadQuota, - spInfo, - duration, - paymentAddress, - } = params; - - try { - assertAuthType(authType); - assertStringRequire(spInfo.primarySpAddress, 'Primary sp address is missing'); - assertStringRequire(creator, 'Empty creator address'); - verifyBucketName(bucketName); + public async createBucket(msg: MsgCreateBucket) { + assertStringRequire(msg.primarySpAddress, 'Primary sp address is missing'); + assertStringRequire(msg.creator, 'Empty creator address'); + verifyBucketName(msg.bucketName); - const endpoint = await this.sp.getSPUrlByPrimaryAddr(spInfo.primarySpAddress); - - const { reqMeta, optionsWithOutHeaders, url } = - getApprovalMetaInfo(endpoint, 'CreateBucket', { - bucket_name: bucketName, - creator, - visibility, - primary_sp_address: spInfo.primarySpAddress, - primary_sp_approval: { - expired_height: '0', - sig: '', - global_virtual_group_family_id: 0, - }, - charged_read_quota: chargedReadQuota, - payment_address: paymentAddress, - }); + const { storageProvider } = await this.sp.getStorageProviderByOperatorAddress({ + operatorAddress: msg.primarySpAddress, + }); - const signHeaders = await this.spClient.signHeaders(reqMeta, authType); - const requestOptions: RequestInit = { - ...optionsWithOutHeaders, - headers: signHeaders, - }; + if (!storageProvider) { + throw new Error(`Storage provider ${msg.primarySpAddress} not found`); + } - const result = await this.spClient.callApi(url, requestOptions, duration, { - code: -1, - message: 'Get create bucket approval error.', + const { globalVirtualGroupFamilyId } = + await this.virtualGroup.getSpOptimalGlobalVirtualGroupFamily({ + spId: storageProvider.id, + pickVgfStrategy: PickVGFStrategy.Strategy_Maximize_Free_Store_Size, }); - const signedMsgString = result.headers.get('X-Gnfd-Signed-Msg') || ''; - - return { - code: 0, - message: 'Get create bucket approval success.', - body: signedMsgString, - statusCode: result.status, - } as SpResponse; - } catch (error: any) { - throw { - code: -1, - message: error.message, - statusCode: error?.statusCode || NORMAL_ERROR_CODE, - }; - } - } + const createBucketMsg: MsgCreateBucket = { + ...msg, + primarySpApproval: { + globalVirtualGroupFamilyId: globalVirtualGroupFamilyId, + expiredHeight: Long.fromInt(0), + sig: Uint8Array.from([]), + }, + }; - private async createBucketTx(msg: MsgCreateBucket, signedMsg: CreateBucketApprovalResponse) { return await this.txClient.tx( MsgCreateBucketTypeUrl, msg.creator, MsgCreateBucketSDKTypeEIP712, { - ...signedMsg, - type: MsgCreateBucketTypeUrl, - charged_read_quota: signedMsg.charged_read_quota, - visibility: signedMsg.visibility, - primary_sp_approval: signedMsg.primary_sp_approval, + ...MsgCreateBucket.toSDK(createBucketMsg), + primary_sp_approval: { + expired_height: '0', + global_virtual_group_family_id: globalVirtualGroupFamilyId, + }, + charged_read_quota: createBucketMsg.chargedReadQuota.toString(), }, - MsgCreateBucket.encode(msg).finish(), + MsgCreateBucket.encode(createBucketMsg).finish(), ); } - public async createBucket(params: CreateBucketApprovalRequest, authType: AuthType) { - assertAuthType(authType); - const { body } = await this.getCreateBucketApproval(params, authType); - - if (!body) { - throw new Error('Get create bucket approval error'); - } - - const signedMsg = JSON.parse(bytesToUtf8(hexToBytes(body))) as CreateBucketApprovalResponse; - - const msg: MsgCreateBucket = { - bucketName: signedMsg.bucket_name, - creator: signedMsg.creator, - visibility: visibilityTypeFromJSON(signedMsg.visibility), - primarySpAddress: signedMsg.primary_sp_address, - primarySpApproval: { - expiredHeight: Long.fromString(signedMsg.primary_sp_approval.expired_height), - sig: bytesFromBase64(signedMsg.primary_sp_approval.sig), - globalVirtualGroupFamilyId: signedMsg.primary_sp_approval.global_virtual_group_family_id, - }, - chargedReadQuota: Long.fromString(signedMsg.charged_read_quota), - paymentAddress: signedMsg.payment_address, - }; - - return await this.createBucketTx(msg, signedMsg); - } - public async deleteBucket(msg: MsgDeleteBucket) { return await this.txClient.tx( MsgDeleteBucketTypeUrl, diff --git a/packages/js-sdk/src/api/virtualGroup.ts b/packages/js-sdk/src/api/virtualGroup.ts index 9e5a4081..7c847dc3 100644 --- a/packages/js-sdk/src/api/virtualGroup.ts +++ b/packages/js-sdk/src/api/virtualGroup.ts @@ -8,6 +8,10 @@ import { QueryGlobalVirtualGroupRequest, QueryGlobalVirtualGroupResponse, QueryParamsResponse, + QuerySPAvailableGlobalVirtualGroupFamiliesRequest, + QuerySPAvailableGlobalVirtualGroupFamiliesResponse, + QuerySpOptimalGlobalVirtualGroupFamilyRequest, + QuerySpOptimalGlobalVirtualGroupFamilyResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/virtualgroup/query'; import { MsgSettle } from '@bnb-chain/greenfield-cosmos-types/greenfield/virtualgroup/tx'; import { container, delay, inject, injectable } from 'tsyringe'; @@ -35,6 +39,14 @@ export interface IVirtualGroup { request: QueryGlobalVirtualGroupFamilyRequest, ): Promise; + getSpOptimalGlobalVirtualGroupFamily( + request: QuerySpOptimalGlobalVirtualGroupFamilyRequest, + ): Promise; + + getSpAvailableGlobalVirtualGroupFamilies( + request: QuerySPAvailableGlobalVirtualGroupFamiliesRequest, + ): Promise; + settle(address: string, msg: MsgSettle): Promise; } @@ -68,6 +80,20 @@ export class VirtualGroup implements IVirtualGroup { return await rpc.GlobalVirtualGroupFamily(request); } + public async getSpOptimalGlobalVirtualGroupFamily( + request: QuerySpOptimalGlobalVirtualGroupFamilyRequest, + ) { + const rpc = await this.queryClient.getVirtualGroupClient(); + return await rpc.QuerySpOptimalGlobalVirtualGroupFamily(request); + } + + public async getSpAvailableGlobalVirtualGroupFamilies( + request: QuerySPAvailableGlobalVirtualGroupFamiliesRequest, + ) { + const rpc = await this.queryClient.getVirtualGroupClient(); + return await rpc.QuerySpAvailableGlobalVirtualGroupFamilies(request); + } + public async settle(address: string, msg: MsgSettle) { return await this.txClient.tx( MsgSettleTypeUrl, diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts index c56a2136..86c767bc 100644 --- a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts @@ -42,9 +42,9 @@ export const MsgCreateBucketSDKTypeEIP712 = { name: 'global_virtual_group_family_id', type: 'uint32', }, - { - name: 'sig', - type: 'bytes', - }, + // { + // name: 'sig', + // type: 'bytes', + // }, ], }; diff --git a/packages/js-sdk/src/types/common.ts b/packages/js-sdk/src/types/common.ts index c206a047..57dcb12b 100644 --- a/packages/js-sdk/src/types/common.ts +++ b/packages/js-sdk/src/types/common.ts @@ -1,6 +1,12 @@ -import * as StorageEnums from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; -import * as PermissionTypes from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; -import * as TimestampTypes from '@bnb-chain/greenfield-cosmos-types/google/protobuf/timestamp'; +export * as TimestampTypes from '@bnb-chain/greenfield-cosmos-types/google/protobuf/timestamp'; +export * as PermissionTypes from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; +export * as StorageEnums from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; +export { + BucketStatus, + ObjectStatus, + RedundancyType, + SourceType, + VisibilityType, +} from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; +export { Long }; import Long from 'long'; - -export { Long, StorageEnums, PermissionTypes, TimestampTypes }; diff --git a/packages/js-sdk/src/types/sp/BucketApproval.ts b/packages/js-sdk/src/types/sp/BucketApproval.ts deleted file mode 100644 index 1ca043ba..00000000 --- a/packages/js-sdk/src/types/sp/BucketApproval.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { VisibilityType } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; - -export type CreateBucketApprovalRequest = { - bucketName: string; - creator: string; - visibility: keyof typeof VisibilityType; - chargedReadQuota: string; - spInfo: { - primarySpAddress: string; - }; - duration?: number; - paymentAddress: string; -}; - -export interface CreateBucketApprovalResponse { - creator: string; - bucket_name: string; - visibility: keyof typeof VisibilityType; - payment_address: string; - primary_sp_address: string; - primary_sp_approval: { - expired_height: string; - sig: string; - global_virtual_group_family_id: number; - }; - charged_read_quota: string; -} diff --git a/packages/js-sdk/src/types/sp/index.ts b/packages/js-sdk/src/types/sp/index.ts index cea87ef0..cd13cd0d 100644 --- a/packages/js-sdk/src/types/sp/index.ts +++ b/packages/js-sdk/src/types/sp/index.ts @@ -1,4 +1,3 @@ -export * from './BucketApproval'; export * from './ErrorResponse'; export * from './GetBucketMeta'; export * from './GetObject'; diff --git a/packages/js-sdk/src/utils/asserts/s3.ts b/packages/js-sdk/src/utils/asserts/s3.ts index 536c1069..87a6a5d7 100644 --- a/packages/js-sdk/src/utils/asserts/s3.ts +++ b/packages/js-sdk/src/utils/asserts/s3.ts @@ -114,9 +114,49 @@ const generateUrlByBucketName = (endpoint = '', bucketName: string) => { return endpoint.replace(`${protocol}//`, `${protocol}//${bucketName}.`); }; +const isSQLInjection = (input: string) => { + // Define patterns that may indicate SQL injection, especially those with a semicolon followed by common SQL keywords + const patterns = [ + '(?i).*;.*select', // Matches any string with a semicolon followed by "select" + '(?i).*;.*insert', // Matches any string with a semicolon followed by "insert" + '(?i).*;.*update', // Matches any string with a semicolon followed by "update" + '(?i).*;.*delete', // Matches any string with a semicolon followed by "delete" + '(?i).*;.*drop', // Matches any string with a semicolon followed by "drop" + '(?i).*;.*alter', // Matches any string with a semicolon followed by "alter" + '/\\*.*\\*/', // Matches SQL block comment + ]; + + for (const pattern of patterns) { + const regex = new RegExp(pattern); + if (regex.test(input)) { + return true; + } + } + + return false; +}; + +// CheckObjectName This code block checks for unsupported or potentially risky formats in object names. +// The checks are essential for ensuring the security and compatibility of the object names within the system. +// 1. ".." in object names: Checked to prevent path traversal attacks which might access directories outside the intended scope. +// 2. Object name being "/": The root directory should not be used as an object name due to potential security risks and ambiguity. +// 3. "\\" in object names: Backslashes are checked because they are often not supported in UNIX-like file systems and can cause issues in path parsing. +// 4. SQL Injection patterns in object names: Ensures that the object name does not contain patterns that could be used for SQL injection attacks, maintaining the integrity of the database. +const checkObjectName = (objectName: string) => { + if ( + objectName.includes('..') || + objectName === '/' || + objectName.includes('\\') || + isSQLInjection(objectName) + ) { + throw new Error(`fail to check object name: ${objectName}`); + } +}; + export { verifyBucketName, verifyObjectName, + checkObjectName, verifyAddress, trimString, verifyUrl, From 10244a56dd2da222e85bc25523d25756585dfc43 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Sat, 16 Mar 2024 00:38:07 +0800 Subject: [PATCH 411/433] feat: Remove Approval when creating object --- .changeset/calm-cougars-kiss.md | 5 + .../src/components/object/create/index.tsx | 67 +++---- packages/js-sdk/src/api/objects.ts | 186 ++++-------------- .../greenfield/storage/MsgCreateObject.ts | 8 +- .../js-sdk/src/types/sp/ObjectApproval.ts | 35 ---- packages/js-sdk/src/types/sp/index.ts | 1 - packages/js-sdk/src/utils/asserts/s3.ts | 20 +- 7 files changed, 78 insertions(+), 244 deletions(-) create mode 100644 .changeset/calm-cougars-kiss.md delete mode 100644 packages/js-sdk/src/types/sp/ObjectApproval.ts diff --git a/.changeset/calm-cougars-kiss.md b/.changeset/calm-cougars-kiss.md new file mode 100644 index 00000000..e69a68cd --- /dev/null +++ b/.changeset/calm-cougars-kiss.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': minor +--- + +feat: Remove approval when creating object diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index ee990a1c..11aded1b 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -1,8 +1,14 @@ import { client } from '@/client'; import { getOffchainAuthKeys } from '@/utils/offchainAuth'; +import { + bytesFromBase64, + Long, + RedundancyType, + VisibilityType, +} from '@bnb-chain/greenfield-js-sdk'; +import { ReedSolomon } from '@bnb-chain/reed-solomon'; import { ChangeEvent, useState } from 'react'; import { useAccount } from 'wagmi'; -import { ReedSolomon } from '@bnb-chain/reed-solomon'; export const CreateObject = () => { const { address, connector } = useAccount(); @@ -52,13 +58,6 @@ export const CreateObject = () => { return; } - const provider = await connector?.getProvider(); - const offChainData = await getOffchainAuthKeys(address, provider); - if (!offChainData) { - alert('No offchain, please create offchain pairs first'); - return; - } - // const checksumWorker = getCheckSumsWorker(); // const multiCal = await checksumWorker.generateCheckSumV2(file); // console.log('multiCal', multiCal); @@ -67,28 +66,16 @@ export const CreateObject = () => { const fileBytes = await file.arrayBuffer(); const expectCheckSums = rs.encode(new Uint8Array(fileBytes)); - console.log('offChainData', offChainData); - - const createObjectTx = await client.object.createObject( - { - bucketName: createObjectInfo.bucketName, - objectName: createObjectInfo.objectName, - creator: address, - visibility: 'VISIBILITY_TYPE_PRIVATE', - fileType: file.type, - redundancyType: 'REDUNDANCY_EC_TYPE', - contentLength: fileBytes.byteLength, - expectCheckSums: expectCheckSums, - }, - { - type: 'EDDSA', - domain: window.location.origin, - seed: offChainData.seedString, - address, - // type: 'ECDSA', - // privateKey: ACCOUNT_PRIVATEKEY, - }, - ); + const createObjectTx = await client.object.createObject({ + bucketName: createObjectInfo.bucketName, + objectName: createObjectInfo.objectName, + creator: address, + visibility: VisibilityType.VISIBILITY_TYPE_PRIVATE, + contentType: file.type, + redundancyType: RedundancyType.REDUNDANCY_EC_TYPE, + payloadSize: Long.fromInt(fileBytes.byteLength), + expectChecksums: expectCheckSums.map((x) => bytesFromBase64(x)), + }); const simulateInfo = await createObjectTx.simulate({ denom: 'BNB', @@ -163,19 +150,13 @@ export const CreateObject = () => { return; } - const createFolderTx = await client.object.createFolder( - { - bucketName: createObjectInfo.bucketName, - objectName: createObjectInfo.objectName + '/', - creator: address, - }, - { - type: 'EDDSA', - domain: window.location.origin, - seed: offChainData.seedString, - address, - }, - ); + const createFolderTx = await client.object.createFolder({ + bucketName: createObjectInfo.bucketName, + objectName: createObjectInfo.objectName + '/', + creator: address, + redundancyType: RedundancyType.REDUNDANCY_EC_TYPE, + visibility: VisibilityType.VISIBILITY_TYPE_PRIVATE, + }); const simulateInfo = await createFolderTx.simulate({ denom: 'BNB', diff --git a/packages/js-sdk/src/api/objects.ts b/packages/js-sdk/src/api/objects.ts index 97442185..679cfbb0 100644 --- a/packages/js-sdk/src/api/objects.ts +++ b/packages/js-sdk/src/api/objects.ts @@ -5,10 +5,6 @@ import { PrincipalType, principalTypeFromJSON, } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; -import { - redundancyTypeFromJSON, - visibilityTypeFromJSON, -} from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; import { QueryHeadObjectResponse, QueryNFTRequest, @@ -24,11 +20,10 @@ import { MsgPutPolicy, MsgUpdateObjectInfo, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; +import { base64FromBytes, bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { hexlify } from '@ethersproject/bytes'; import { ed25519 } from '@noble/curves/ed25519'; import { Headers } from 'cross-fetch'; -import { bytesToUtf8, hexToBytes } from 'ethereum-cryptography/utils'; import { container, delay, inject, injectable } from 'tsyringe'; import { GRNToString, @@ -45,7 +40,6 @@ import { getSortQuery, HTTPHeaderRegPubKey, } from '../clients/spclient/auth'; -import { getApprovalMetaInfo } from '../clients/spclient/spApis/approval'; import { getGetObjectMetaInfo } from '../clients/spclient/spApis/getObject'; import { getObjectMetaInfo, @@ -71,8 +65,6 @@ import { MsgDeleteObjectSDKTypeEIP712 } from '../messages/greenfield/storage/Msg import { MsgUpdateObjectInfoSDKTypeEIP712 } from '../messages/greenfield/storage/MsgUpdateObjectInfo'; import { AuthType, - CreateObjectApprovalRequest, - CreateObjectApprovalResponse, GetListObjectPoliciesRequest, GetListObjectPoliciesResponse, GetPrivewObject, @@ -88,6 +80,7 @@ import { GetObjectMetaRequest, GetObjectMetaResponse } from '../types/sp/GetObje import { ListObjectsByBucketNameResponse } from '../types/sp/ListObjectsByBucketName'; import { PutObjectRequest } from '../types/sp/PutObject'; import { + checkObjectName, generateUrlByBucketName, verifyBucketName, verifyObjectName, @@ -97,15 +90,7 @@ import { Sp } from './sp'; import { Storage } from './storage'; export interface IObject { - getCreateObjectApproval( - configParam: CreateObjectApprovalRequest, - authType: AuthType, - ): Promise>; - - createObject( - getApprovalParams: CreateObjectApprovalRequest, - authType: AuthType, - ): Promise; + createObject(msg: MsgCreateObject): Promise; uploadObject(configParam: PutObjectRequest, authType: AuthType): Promise>; @@ -138,11 +123,7 @@ export interface IObject { ): Promise>; createFolder( - getApprovalParams: Omit< - CreateObjectApprovalRequest, - 'contentLength' | 'fileType' | 'expectCheckSums' - >, - authType: AuthType, + msg: Omit, ): Promise; putObjectPolicy( @@ -193,128 +174,38 @@ export class Objects implements IObject { private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); private spClient = container.resolve(SpClient); - public async getCreateObjectApproval(params: CreateObjectApprovalRequest, authType: AuthType) { - const { - bucketName, - creator, - objectName, - visibility = 'VISIBILITY_TYPE_PUBLIC_READ', - duration = 3000, - fileType = 'application/octet-stream', - redundancyType = 'REDUNDANCY_EC_TYPE', - contentLength, - expectCheckSums, - } = params; - - try { - assertAuthType(authType); - verifyBucketName(bucketName); - verifyObjectName(objectName); - assertStringRequire(creator, 'empty creator address'); - - let endpoint = params.endpoint; - if (!endpoint) { - endpoint = await this.sp.getSPUrlByBucket(bucketName); - } - const { reqMeta, optionsWithOutHeaders, url } = - getApprovalMetaInfo(endpoint, 'CreateObject', { - bucket_name: bucketName, - content_type: fileType, - creator: creator, - expect_checksums: expectCheckSums, - object_name: objectName, - payload_size: contentLength.toString(), - primary_sp_approval: { - expired_height: '0', - global_virtual_group_family_id: 0, - sig: null, - }, - redundancy_type: redundancyType, - visibility, - }); - - const signHeaders = await this.spClient.signHeaders(reqMeta, authType); - - const result = await this.spClient.callApi( - url, - { - ...optionsWithOutHeaders, - headers: signHeaders, - }, - duration, - { - code: -1, - message: 'Get create object approval error.', - }, - ); - - const signedMsgString = result.headers.get('X-Gnfd-Signed-Msg') || ''; - const signedMsg = JSON.parse( - bytesToUtf8(hexToBytes(signedMsgString)), - ) as CreateObjectApprovalResponse; + public async createObject(msg: MsgCreateObject) { + verifyBucketName(msg.bucketName); + verifyObjectName(msg.objectName); + checkObjectName(msg.objectName); + assertStringRequire(msg.creator, 'empty creator address'); - return { - code: 0, - message: 'Get create object approval success.', - body: result.headers.get('X-Gnfd-Signed-Msg') ?? '', - statusCode: result.status, - signedMsg, - }; - } catch (error: any) { - throw { - code: -1, - message: error.message, - statusCode: error?.statusCode || NORMAL_ERROR_CODE, - }; - } - } + const createObjMsg: MsgCreateObject = { + ...msg, + primarySpApproval: { + globalVirtualGroupFamilyId: 0, + expiredHeight: Long.fromInt(0), + sig: Uint8Array.from([]), + }, + }; - private async createObjectTx(msg: MsgCreateObject, signedMsg: CreateObjectApprovalResponse) { return await this.txClient.tx( MsgCreateObjectTypeUrl, msg.creator, MsgCreateObjectSDKTypeEIP712, { - ...signedMsg, - type: MsgCreateObjectTypeUrl, + ...MsgCreateObject.toSDK(createObjMsg), primary_sp_approval: { - expired_height: signedMsg.primary_sp_approval.expired_height, - global_virtual_group_family_id: - signedMsg.primary_sp_approval.global_virtual_group_family_id, - sig: signedMsg.primary_sp_approval.sig, + expired_height: '0', + global_virtual_group_family_id: 0, }, + expect_checksums: createObjMsg.expectChecksums.map((e) => base64FromBytes(e)), + payload_size: createObjMsg.payloadSize.toNumber(), }, - MsgCreateObject.encode(msg).finish(), + MsgCreateObject.encode(createObjMsg).finish(), ); } - public async createObject(getApprovalParams: CreateObjectApprovalRequest, authType: AuthType) { - assertAuthType(authType); - - const { signedMsg } = await this.getCreateObjectApproval(getApprovalParams, authType); - if (!signedMsg) { - throw new Error('Get create object approval error'); - } - - const msg: MsgCreateObject = { - bucketName: signedMsg.bucket_name, - creator: signedMsg.creator, - objectName: signedMsg.object_name, - contentType: signedMsg.content_type, - payloadSize: Long.fromString(signedMsg.payload_size), - visibility: visibilityTypeFromJSON(signedMsg.visibility), - expectChecksums: signedMsg.expect_checksums.map((e: string) => bytesFromBase64(e)), - redundancyType: redundancyTypeFromJSON(signedMsg.redundancy_type), - primarySpApproval: { - expiredHeight: Long.fromString(signedMsg.primary_sp_approval.expired_height), - sig: bytesFromBase64(signedMsg.primary_sp_approval.sig || ''), - globalVirtualGroupFamilyId: signedMsg.primary_sp_approval.global_virtual_group_family_id, - }, - }; - - return await this.createObjectTx(msg, signedMsg); - } - public async uploadObject( params: PutObjectRequest, authType: AuthType, @@ -580,14 +471,9 @@ export class Objects implements IObject { } public async createFolder( - getApprovalParams: Omit< - CreateObjectApprovalRequest, - 'contentLength' | 'fileType' | 'expectCheckSums' - >, - authType: AuthType, + msg: Omit, ) { - assertAuthType(authType); - if (!getApprovalParams.objectName.endsWith('/')) { + if (!msg.objectName.endsWith('/')) { throw new Error( 'failed to create folder. Folder names must end with a forward slash (/) character', ); @@ -597,17 +483,16 @@ export class Objects implements IObject { * const file = new File([], 'scc', { type: 'text/plain' }); const fileBytes = await file.arrayBuffer(); console.log('fileBytes', fileBytes); - const hashResult = await FileHandler.getPieceHashRoots(new Uint8Array(fileBytes)); - console.log('hashResult', hashResult); - const { contentLength, expectCheckSums } = hashResult; + const rs = new ReedSolomon(); + const fileBytes = await file.arrayBuffer(); + const expectCheckSums = rs.encode(new Uint8Array(fileBytes)); */ - const params: CreateObjectApprovalRequest = { - bucketName: getApprovalParams.bucketName, - objectName: getApprovalParams.objectName, - contentLength: 0, - fileType: 'text/plain', - expectCheckSums: [ + const newMsg: MsgCreateObject = { + ...msg, + payloadSize: Long.fromInt(0), + contentType: 'text/plain', + expectChecksums: [ '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', @@ -615,11 +500,10 @@ export class Objects implements IObject { '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - ], - creator: getApprovalParams.creator, + ].map((x) => bytesFromBase64(x)), }; - return this.createObject(params, authType); + return this.createObject(newMsg); } public async putObjectPolicy( diff --git a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts index b1b92a4e..22d95523 100644 --- a/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts +++ b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts @@ -50,9 +50,9 @@ export const MsgCreateObjectSDKTypeEIP712 = { name: 'global_virtual_group_family_id', type: 'uint32', }, - { - name: 'sig', - type: 'bytes', - }, + // { + // name: 'sig', + // type: 'bytes', + // }, ], }; diff --git a/packages/js-sdk/src/types/sp/ObjectApproval.ts b/packages/js-sdk/src/types/sp/ObjectApproval.ts deleted file mode 100644 index da504c2c..00000000 --- a/packages/js-sdk/src/types/sp/ObjectApproval.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { - RedundancyType, - VisibilityType, -} from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; - -export type CreateObjectApprovalRequest = { - bucketName: string; - objectName: string; - creator: string; - visibility?: keyof typeof VisibilityType; - fileType: string; - redundancyType?: keyof typeof RedundancyType; - duration?: number; - contentLength: number; - expectCheckSums: string[]; - endpoint?: string; -}; - -export type CreateObjectApprovalResponse = { - creator: string; - bucket_name: string; - object_name: string; - payload_size: string; - visibility: keyof typeof VisibilityType; - content_type: string; - primary_sp_approval: { - expired_height: string; - sig: string | null; - global_virtual_group_family_id: number; - }; - expect_checksums: string[]; - // expect_secondary_sp_addresses: string[]; - redundancy_type: keyof typeof RedundancyType; - // charged_read_quota: string; -}; diff --git a/packages/js-sdk/src/types/sp/index.ts b/packages/js-sdk/src/types/sp/index.ts index cd13cd0d..d5c701e2 100644 --- a/packages/js-sdk/src/types/sp/index.ts +++ b/packages/js-sdk/src/types/sp/index.ts @@ -15,7 +15,6 @@ export * from './ListObjectsByIDs'; export * from './ListUserGroups'; export * from './ListUserOwnedGroups'; export * from './MigrateBucket'; -export * from './ObjectApproval'; export * from './PutObject'; export * from './ReadQuota'; export * from './RequestNonce'; diff --git a/packages/js-sdk/src/utils/asserts/s3.ts b/packages/js-sdk/src/utils/asserts/s3.ts index 87a6a5d7..2dd86491 100644 --- a/packages/js-sdk/src/utils/asserts/s3.ts +++ b/packages/js-sdk/src/utils/asserts/s3.ts @@ -115,20 +115,20 @@ const generateUrlByBucketName = (endpoint = '', bucketName: string) => { }; const isSQLInjection = (input: string) => { - // Define patterns that may indicate SQL injection, especially those with a semicolon followed by common SQL keywords + // define patterns that may indicate SQL injection const patterns = [ - '(?i).*;.*select', // Matches any string with a semicolon followed by "select" - '(?i).*;.*insert', // Matches any string with a semicolon followed by "insert" - '(?i).*;.*update', // Matches any string with a semicolon followed by "update" - '(?i).*;.*delete', // Matches any string with a semicolon followed by "delete" - '(?i).*;.*drop', // Matches any string with a semicolon followed by "drop" - '(?i).*;.*alter', // Matches any string with a semicolon followed by "alter" - '/\\*.*\\*/', // Matches SQL block comment + /;.*select/, // Matches any string with a semicolon followed by "select" + /;.*insert/, // Matches any string with a semicolon followed by "insert" + /;.*update/, // Matches any string with a semicolon followed by "update" + /;.*delete/, // Matches any string with a semicolon followed by "delete" + /;.*drop/, // Matches any string with a semicolon followed by "drop" + /;.*alter/, // Matches any string with a semicolon followed by "alter" + /\/\*[\s\S]*?\*\//, // Matches SQL block comment ]; for (const pattern of patterns) { - const regex = new RegExp(pattern); - if (regex.test(input)) { + const match = pattern.test(input); + if (match) { return true; } } From 9e8b15374e2c4a6b7aa9b8b7dc7b5cd9ffa8f38c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 15 Mar 2024 16:54:13 +0000 Subject: [PATCH 412/433] chore: [ci] release (alpha) --- .changeset/pre.json | 2 ++ examples/nextjs/CHANGELOG.md | 9 +++++++++ examples/nextjs/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 12 ++++++++++++ packages/js-sdk/package.json | 2 +- 5 files changed, 25 insertions(+), 2 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 766f9582..c3092cb1 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -13,7 +13,9 @@ "@bnb-chain/greenfield-zk-crypto": "1.0.0" }, "changesets": [ + "calm-cougars-kiss", "heavy-dolphins-obey", + "heavy-suits-punch", "sixty-mayflies-sin", "wet-dragons-obey" ] diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 84209508..a812d3b3 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/wallet +## 0.0.28-alpha.2 + +### Patch Changes + +- Updated dependencies + [[`10244a5`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10244a56dd2da222e85bc25523d25756585dfc43), + [`25e8a99`](https://github.com/bnb-chain/greenfield-js-sdk/commit/25e8a99a319fe2129fb5d3eb2f0c8658323ed0e3)]: + - @bnb-chain/greenfield-js-sdk@1.3.0-alpha.2 + ## 0.0.28-alpha.1 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 94a96e83..43f98679 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.28-alpha.1", + "version": "0.0.28-alpha.2", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index 90dc03aa..60133c1e 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/greenfield-js-sdk +## 1.3.0-alpha.2 + +### Minor Changes + +- [#498](https://github.com/bnb-chain/greenfield-js-sdk/pull/498) + [`10244a5`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10244a56dd2da222e85bc25523d25756585dfc43) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Remove approval when creating object + +- [#498](https://github.com/bnb-chain/greenfield-js-sdk/pull/498) + [`25e8a99`](https://github.com/bnb-chain/greenfield-js-sdk/commit/25e8a99a319fe2129fb5d3eb2f0c8658323ed0e3) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Remove approval when create bucket + ## 1.3.0-alpha.1 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 95078a94..84ce1bc2 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.3.0-alpha.1", + "version": "1.3.0-alpha.2", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 7b938f014c9961cf156326580bbddbb62f6c928c Mon Sep 17 00:00:00 2001 From: rrr523 Date: Tue, 19 Mar 2024 17:23:04 +0800 Subject: [PATCH 413/433] feat: Delegate upload --- .changeset/strange-maps-begin.md | 5 ++ .../src/components/object/create/index.tsx | 39 ++++++++++++++- packages/js-sdk/src/api/objects.ts | 48 ++++++++++++++++++- .../src/clients/spclient/spApis/putObject.ts | 24 +++++++--- packages/js-sdk/src/types/sp/PutObject.ts | 10 ++++ 5 files changed, 117 insertions(+), 9 deletions(-) create mode 100644 .changeset/strange-maps-begin.md diff --git a/.changeset/strange-maps-begin.md b/.changeset/strange-maps-begin.md new file mode 100644 index 00000000..cdbb5259 --- /dev/null +++ b/.changeset/strange-maps-begin.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Add delegateUploadObject API diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index 11aded1b..2f864819 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -51,6 +51,7 @@ export const CreateObject = () => { }} />
    + upload object with tx:{' '} -
    + {' '}
    + or uploaded by delegated agent + +
    {' '} {' '} +
    - or uploaded by delegated agent + or uploaded by delegated agent :{' '} + {' '} +
    +
    {' '} + diff --git a/packages/js-sdk/src/api/objects.ts b/packages/js-sdk/src/api/objects.ts index 0918e661..4ae19709 100644 --- a/packages/js-sdk/src/api/objects.ts +++ b/packages/js-sdk/src/api/objects.ts @@ -1,3 +1,4 @@ +import { getDelegatedCreateFolderMetaInfo } from '@/clients/spclient/spApis/delegatedCreateFolder'; import { getObjectOffsetInfo, parseObjectOffsetResponse, @@ -91,7 +92,12 @@ import { import { GetObjectRequest } from '../types/sp/GetObject'; import { GetObjectMetaRequest, GetObjectMetaResponse } from '../types/sp/GetObjectMeta'; import { ListObjectsByBucketNameResponse } from '../types/sp/ListObjectsByBucketName'; -import { DelegatedOpts, DelegatedPubObjectRequest, PutObjectRequest } from '../types/sp/PutObject'; +import { + DelegatedCreateFolderRequest, + DelegatedOpts, + DelegatedPubObjectRequest, + PutObjectRequest, +} from '../types/sp/PutObject'; import { checkObjectName, generateUrlByBucketName, @@ -144,6 +150,11 @@ export interface IObject { msg: Omit, ): Promise; + delegateCreateFolder( + params: DelegatedCreateFolderRequest, + authType: AuthType, + ): Promise>; + putObjectPolicy( bucketName: string, objectName: string, @@ -884,6 +895,45 @@ export class Objects implements IObject { return this.createObject(newMsg); } + public async delegateCreateFolder(params: DelegatedCreateFolderRequest, authType: AuthType) { + const { bucketName, objectName, delegatedOpts, timeout = 10000 } = params; + + let endpoint = params.endpoint; + if (!endpoint) { + endpoint = await this.sp.getSPUrlByBucket(bucketName); + } + const { reqMeta, optionsWithOutHeaders, url } = await getDelegatedCreateFolderMetaInfo( + endpoint, + { + bucketName: bucketName, + objectName: objectName, + // contentType: '', + delegatedOpts, + }, + ); + const signHeaders = await this.spClient.signHeaders(reqMeta, authType); + + try { + const result = await this.spClient.callApi( + url, + { + ...optionsWithOutHeaders, + headers: signHeaders, + }, + timeout, + ); + const { status } = result; + + return { code: 0, message: 'Put object success.', statusCode: status }; + } catch (error: any) { + return { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; + } + } + public async putObjectPolicy( bucketName: string, objectName: string, diff --git a/packages/js-sdk/src/clients/spclient/spApis/delegatedCreateFolder.ts b/packages/js-sdk/src/clients/spclient/spApis/delegatedCreateFolder.ts new file mode 100644 index 00000000..48ffda92 --- /dev/null +++ b/packages/js-sdk/src/clients/spclient/spApis/delegatedCreateFolder.ts @@ -0,0 +1,52 @@ +import { EMPTY_STRING_SHA256, METHOD_POST } from '@/constants'; +import { ReqMeta } from '@/types'; +import { generateUrlByBucketName } from '@/utils'; +import { VisibilityType } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; +import { encodePath, getSortQueryParams } from '../auth'; + +export const getDelegatedCreateFolderMetaInfo = async ( + endpoint: string, + params: { + objectName: string; + bucketName: string; + delegatedOpts?: { + visibility: VisibilityType; + }; + }, +) => { + const { bucketName, objectName, delegatedOpts } = params; + const path = `/${encodePath(objectName)}`; + let queryMap = {}; + + if (delegatedOpts) { + queryMap = { + 'create-folder': '', + payload_size: '0', + visibility: delegatedOpts.visibility.toString(), + }; + } + + let url = new URL(path, generateUrlByBucketName(endpoint, bucketName)); + url = getSortQueryParams(url, queryMap); + + const reqMeta: Partial = { + contentSHA256: EMPTY_STRING_SHA256, + method: METHOD_POST, + url: { + hostname: url.hostname, + query: url.searchParams.toString(), + path, + }, + contentType: '', + }; + + const optionsWithOutHeaders: Omit = { + method: METHOD_POST, + }; + + return { + url: url.href, + optionsWithOutHeaders, + reqMeta, + }; +}; diff --git a/packages/js-sdk/src/types/sp/PutObject.ts b/packages/js-sdk/src/types/sp/PutObject.ts index 40ea0c1b..f57d6e9e 100644 --- a/packages/js-sdk/src/types/sp/PutObject.ts +++ b/packages/js-sdk/src/types/sp/PutObject.ts @@ -21,6 +21,14 @@ export type DelegatedPubObjectRequest = { resumableOpts?: ResumableOpts; }; +export type DelegatedCreateFolderRequest = { + bucketName: string; + objectName: string; + delegatedOpts: DelegatedOpts; + endpoint?: string; + timeout?: number; +}; + export type DelegatedOpts = { visibility: VisibilityType; isUpdate?: boolean; From ed3e599e2b6b1d0015e29a19b1808d4929b2b49b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 3 Apr 2024 04:10:42 +0000 Subject: [PATCH 426/433] chore: [ci] release (alpha) --- .changeset/pre.json | 1 + examples/browser-file-management/CHANGELOG.md | 9 +++++++++ examples/browser-file-management/package.json | 2 +- examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs-file-management/CHANGELOG.md | 8 ++++++++ examples/nodejs-file-management/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 8 ++++++++ packages/js-sdk/package.json | 2 +- 9 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 examples/browser-file-management/CHANGELOG.md diff --git a/.changeset/pre.json b/.changeset/pre.json index 47829103..d6cc2357 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -14,6 +14,7 @@ }, "changesets": [ "calm-cougars-kiss", + "eleven-dragons-report", "fifty-moles-serve", "heavy-dolphins-obey", "heavy-suits-punch", diff --git a/examples/browser-file-management/CHANGELOG.md b/examples/browser-file-management/CHANGELOG.md new file mode 100644 index 00000000..2c9520e6 --- /dev/null +++ b/examples/browser-file-management/CHANGELOG.md @@ -0,0 +1,9 @@ +# browser-file-management + +## 0.1.1-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`83f861d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/83f861d9cd1837808b9e3d2f46c1142f2c6a3adc)]: + - @bnb-chain/greenfield-js-sdk@2.0.0-alpha.4 diff --git a/examples/browser-file-management/package.json b/examples/browser-file-management/package.json index 2dd45c72..54c1cc71 100644 --- a/examples/browser-file-management/package.json +++ b/examples/browser-file-management/package.json @@ -1,6 +1,6 @@ { "name": "browser-file-management", - "version": "0.1.0", + "version": "0.1.1-alpha.0", "private": true, "scripts": { "dev": "next dev", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 780fefc3..4d1adf83 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.28-alpha.4 + +### Patch Changes + +- Updated dependencies + [[`83f861d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/83f861d9cd1837808b9e3d2f46c1142f2c6a3adc)]: + - @bnb-chain/greenfield-js-sdk@2.0.0-alpha.4 + ## 0.0.28-alpha.3 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index c69f706d..84a99822 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.28-alpha.3", + "version": "0.0.28-alpha.4", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs-file-management/CHANGELOG.md b/examples/nodejs-file-management/CHANGELOG.md index c361a0b7..db94ceee 100644 --- a/examples/nodejs-file-management/CHANGELOG.md +++ b/examples/nodejs-file-management/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.27-alpha.1 + +### Patch Changes + +- Updated dependencies + [[`83f861d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/83f861d9cd1837808b9e3d2f46c1142f2c6a3adc)]: + - @bnb-chain/greenfield-js-sdk@2.0.0-alpha.4 + ## 0.0.27-alpha.0 ### Patch Changes diff --git a/examples/nodejs-file-management/package.json b/examples/nodejs-file-management/package.json index dedf52cd..d6c78f62 100644 --- a/examples/nodejs-file-management/package.json +++ b/examples/nodejs-file-management/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.27-alpha.0", + "version": "0.0.27-alpha.1", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index fee41039..6f17317b 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 2.0.0-alpha.4 + +### Major Changes + +- [#506](https://github.com/bnb-chain/greenfield-js-sdk/pull/506) + [`83f861d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/83f861d9cd1837808b9e3d2f46c1142f2c6a3adc) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Support delegatedCreateFolder + ## 1.3.0-alpha.3 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index ae580496..a70143cf 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "1.3.0-alpha.3", + "version": "2.0.0-alpha.4", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From dff47d6c069df3520fd77f911d4ede0fb2e96cf1 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Wed, 3 Apr 2024 12:16:57 +0800 Subject: [PATCH 427/433] chore(docs): Update docs --- doc-site/docs/FAQs/migrate-to-1.3.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc-site/docs/FAQs/migrate-to-1.3.mdx b/doc-site/docs/FAQs/migrate-to-1.3.mdx index 4ce5a47b..1f3e4ac4 100644 --- a/doc-site/docs/FAQs/migrate-to-1.3.mdx +++ b/doc-site/docs/FAQs/migrate-to-1.3.mdx @@ -1,6 +1,6 @@ --- id: migrate -title: migrate to 1.3 +title: migrate to 2 order: 1 --- From 159c01fe5e4a798d23b0593497c0845e6371d7d2 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Sun, 7 Apr 2024 19:07:06 +0800 Subject: [PATCH 428/433] feat: Sp response add offchainstatus and SpAsDelegatedAgentDisabled --- .changeset/rare-vans-talk.md | 5 ++ packages/js-sdk/src/types/sp/Common.ts | 102 ++++++++++++++++++++++++- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 .changeset/rare-vans-talk.md diff --git a/.changeset/rare-vans-talk.md b/.changeset/rare-vans-talk.md new file mode 100644 index 00000000..008e18a2 --- /dev/null +++ b/.changeset/rare-vans-talk.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: SpResponse - bucketinfo add SpAsDelegatedAgentDisabled and offchainstatus field diff --git a/packages/js-sdk/src/types/sp/Common.ts b/packages/js-sdk/src/types/sp/Common.ts index a8d083c3..8247338e 100644 --- a/packages/js-sdk/src/types/sp/Common.ts +++ b/packages/js-sdk/src/types/sp/Common.ts @@ -1,13 +1,58 @@ export type BucketMeta = { + /** + * defines the information of the bucket. + */ BucketInfo: BucketInfo; + + /** + * defines the creation transaction hash of bucket + */ CreateTxHash: string; + + /** + * defines the block number when the bucket deleted. + */ DeleteAt: number; + + /** + * defines the deleted reason of bucket + */ DeleteReason: string; + + /** + * defines the operator address of bucket + */ Operator: string; + + /** + * defines the bucket is deleted or not + */ Removed: boolean; + + /** + * defines the block number when the bucket updated + */ UpdateAt: number; + + /** + * defines the block number when the bucket updated + */ UpdateTime: number; + + /** + * defines the update transaction hash of bucket + */ UpdateTxHash: string; + + /** + * OffChainStatus represents the status of a bucket in the off-chain storage. + It is used to track the current state of the bucket with respect to off-chain operations, + 1 means 0001 -> OffChainStatusIsLimited is true + 0 means 0000 -> OffChainStatusIsLimited is false + + For an explanation of the different OffChainStatus values, please visit:https://github.com/bnb-chain/greenfield-storage-provider/blob/9d7048ad33cf51a2f7eb347e2113c5d0cc45f970/modular/blocksyncer/modules/bucket/bucket_handle.go#L40 + */ + OffChainStatus: number; }; export type GlobalVirtualGroupFamily = { @@ -18,6 +63,9 @@ export type GlobalVirtualGroupFamily = { }; export interface BucketMetaWithVGF extends BucketMeta { + /** + * serve as a means of grouping global virtual groups. + */ Vgf: GlobalVirtualGroupFamily; } @@ -31,23 +79,73 @@ export function formatVGF(vgf: GlobalVirtualGroupFamily): GlobalVirtualGroupFami } export interface BucketInfo { - // PrimarySpId: number; + /** + * globally unique name of bucket + */ BucketName: string; + + /** + * define the status of the bucket. + */ BucketStatus: number; + + /** + * charged_read_quota defines the traffic quota for read in bytes per month. + The available read data for each user is the sum of the free read data provided by SP and + the ChargeReadQuota specified here. + */ ChargedReadQuota: number; + + /** + * define the block timestamp when the bucket created. + */ CreateAt: number; + + /** + * defines the unique id of gvg family + */ GlobalVirtualGroupFamilyId: number; + + /** + * the unique identification for bucket. + */ Id: string; + + /** + * the account address of bucket creator, it is also the bucket owner. + */ Owner: string; + + /** + * the address of the payment account + */ PaymentAddress: string; + + /** + * defines which chain the user should send the bucket management transactions to + */ SourceType: number; + + /** + * defines the highest permissions for bucket. When a bucket is public, everyone can get storage objects in it. + */ Visibility: number; + + /** + * defines a list of tags the bucket has + */ Tags: { Tags: { Key: string; Value: string; }[]; }; + + /** + * indicates that whether bucket owner disable SP as the upload agent. + when a bucket is created, by default, this is false, means SP is allowed to create object for delegator + */ + SpAsDelegatedAgentDisabled: string; } export interface StreamRecord { @@ -114,6 +212,8 @@ export function formatBucketInfo(o: BucketInfo): BucketInfo { GlobalVirtualGroupFamilyId: Number(o.GlobalVirtualGroupFamilyId), SourceType: Number(o.SourceType), Visibility: Number(o.Visibility), + // @ts-ignore + SpAsDelegatedAgentDisabled: convertStrToBool(o.SpAsDelegatedAgentDisabled), Tags: { Tags: tags, }, From c9ab316597c2b4d6f30cdcb4a6d3645096dbeecc Mon Sep 17 00:00:00 2001 From: rrr523 Date: Sun, 7 Apr 2024 18:34:56 +0800 Subject: [PATCH 429/433] feat: Bucket.getBucketReadQuota add monthly field --- .changeset/grumpy-suns-roll.md | 5 +++++ packages/js-sdk/src/api/bucket.ts | 2 ++ packages/js-sdk/src/types/sp/ReadQuota.ts | 4 ++++ 3 files changed, 11 insertions(+) create mode 100644 .changeset/grumpy-suns-roll.md diff --git a/.changeset/grumpy-suns-roll.md b/.changeset/grumpy-suns-roll.md new file mode 100644 index 00000000..ecb7c11c --- /dev/null +++ b/.changeset/grumpy-suns-roll.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: `Bucket.getBucketReadQuota` add monthly field diff --git a/packages/js-sdk/src/api/bucket.ts b/packages/js-sdk/src/api/bucket.ts index 758aa468..426dfd8a 100644 --- a/packages/js-sdk/src/api/bucket.ts +++ b/packages/js-sdk/src/api/bucket.ts @@ -400,6 +400,8 @@ export class Bucket implements IBucket { freeQuota: Number(res.GetReadQuotaResult.SPFreeReadQuotaSize ?? '0'), consumedQuota: Number(res.GetReadQuotaResult.ReadConsumedSize ?? '0'), freeConsumedSize: Number(res.GetReadQuotaResult.FreeConsumedSize ?? '0'), + monthlyFreeQuota: Number(res.GetReadQuotaResult.MonthlyFreeQuota ?? '0'), + monthlyQuotaConsumedSize: Number(res.GetReadQuotaResult.MonthlyQuotaConsumedSize ?? '0'), }, message: 'Get bucket read quota.', statusCode: result.status, diff --git a/packages/js-sdk/src/types/sp/ReadQuota.ts b/packages/js-sdk/src/types/sp/ReadQuota.ts index 4ec4e50e..94cfb96e 100644 --- a/packages/js-sdk/src/types/sp/ReadQuota.ts +++ b/packages/js-sdk/src/types/sp/ReadQuota.ts @@ -14,6 +14,8 @@ export interface ReadQuotaResponse { SPFreeReadQuotaSize: number; ReadConsumedSize: number; FreeConsumedSize: number; + MonthlyFreeQuota: number; + MonthlyQuotaConsumedSize: number; }; } @@ -22,4 +24,6 @@ export interface IQuotaProps { freeQuota: number; consumedQuota: number; freeConsumedSize: number; + monthlyFreeQuota: number; + monthlyQuotaConsumedSize: number; } From 3cebc32ec58dcc4f5d6e30208918716240ea395e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 7 Apr 2024 13:01:40 +0000 Subject: [PATCH 430/433] chore: [ci] release (alpha) --- .changeset/pre.json | 2 ++ examples/browser-file-management/CHANGELOG.md | 9 +++++++++ examples/browser-file-management/package.json | 2 +- examples/nextjs/CHANGELOG.md | 9 +++++++++ examples/nextjs/package.json | 2 +- examples/nodejs-file-management/CHANGELOG.md | 9 +++++++++ examples/nodejs-file-management/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 13 +++++++++++++ packages/js-sdk/package.json | 2 +- 9 files changed, 46 insertions(+), 4 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index d6cc2357..a5bf5ff0 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -16,8 +16,10 @@ "calm-cougars-kiss", "eleven-dragons-report", "fifty-moles-serve", + "grumpy-suns-roll", "heavy-dolphins-obey", "heavy-suits-punch", + "rare-vans-talk", "silent-crews-cover", "sixty-mayflies-sin", "strange-maps-begin", diff --git a/examples/browser-file-management/CHANGELOG.md b/examples/browser-file-management/CHANGELOG.md index 2c9520e6..c4dd5455 100644 --- a/examples/browser-file-management/CHANGELOG.md +++ b/examples/browser-file-management/CHANGELOG.md @@ -1,5 +1,14 @@ # browser-file-management +## 0.1.1-alpha.1 + +### Patch Changes + +- Updated dependencies + [[`c9ab316`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c9ab316597c2b4d6f30cdcb4a6d3645096dbeecc), + [`159c01f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/159c01fe5e4a798d23b0593497c0845e6371d7d2)]: + - @bnb-chain/greenfield-js-sdk@2.0.0-alpha.5 + ## 0.1.1-alpha.0 ### Patch Changes diff --git a/examples/browser-file-management/package.json b/examples/browser-file-management/package.json index 54c1cc71..39fbb8ac 100644 --- a/examples/browser-file-management/package.json +++ b/examples/browser-file-management/package.json @@ -1,6 +1,6 @@ { "name": "browser-file-management", - "version": "0.1.1-alpha.0", + "version": "0.1.1-alpha.1", "private": true, "scripts": { "dev": "next dev", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 4d1adf83..b00dab41 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/wallet +## 0.0.28-alpha.5 + +### Patch Changes + +- Updated dependencies + [[`c9ab316`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c9ab316597c2b4d6f30cdcb4a6d3645096dbeecc), + [`159c01f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/159c01fe5e4a798d23b0593497c0845e6371d7d2)]: + - @bnb-chain/greenfield-js-sdk@2.0.0-alpha.5 + ## 0.0.28-alpha.4 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 84a99822..b44e00da 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.28-alpha.4", + "version": "0.0.28-alpha.5", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs-file-management/CHANGELOG.md b/examples/nodejs-file-management/CHANGELOG.md index db94ceee..299c4f0c 100644 --- a/examples/nodejs-file-management/CHANGELOG.md +++ b/examples/nodejs-file-management/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/nodejs +## 0.0.27-alpha.2 + +### Patch Changes + +- Updated dependencies + [[`c9ab316`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c9ab316597c2b4d6f30cdcb4a6d3645096dbeecc), + [`159c01f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/159c01fe5e4a798d23b0593497c0845e6371d7d2)]: + - @bnb-chain/greenfield-js-sdk@2.0.0-alpha.5 + ## 0.0.27-alpha.1 ### Patch Changes diff --git a/examples/nodejs-file-management/package.json b/examples/nodejs-file-management/package.json index d6c78f62..8d6e38fb 100644 --- a/examples/nodejs-file-management/package.json +++ b/examples/nodejs-file-management/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.27-alpha.1", + "version": "0.0.27-alpha.2", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index 6f17317b..265b0184 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,18 @@ # @bnb-chain/greenfield-js-sdk +## 2.0.0-alpha.5 + +### Patch Changes + +- [#509](https://github.com/bnb-chain/greenfield-js-sdk/pull/509) + [`c9ab316`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c9ab316597c2b4d6f30cdcb4a6d3645096dbeecc) + Thanks [@rrr523](https://github.com/rrr523)! - feat: `Bucket.getBucketReadQuota` add monthly field + +- [#510](https://github.com/bnb-chain/greenfield-js-sdk/pull/510) + [`159c01f`](https://github.com/bnb-chain/greenfield-js-sdk/commit/159c01fe5e4a798d23b0593497c0845e6371d7d2) + Thanks [@rrr523](https://github.com/rrr523)! - feat: SpResponse - bucketinfo add + SpAsDelegatedAgentDisabled and offchainstatus field + ## 2.0.0-alpha.4 ### Major Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index a70143cf..f73cd7b0 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "2.0.0-alpha.4", + "version": "2.0.0-alpha.5", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From acf8644ba0b893d6c0a4395845c365995b520ce1 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Mon, 8 Apr 2024 10:49:52 +0800 Subject: [PATCH 431/433] fix: OffChainStatus type --- .changeset/thin-readers-listen.md | 5 +++++ packages/js-sdk/src/types/sp/Common.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/thin-readers-listen.md diff --git a/.changeset/thin-readers-listen.md b/.changeset/thin-readers-listen.md new file mode 100644 index 00000000..232b3310 --- /dev/null +++ b/.changeset/thin-readers-listen.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +fix: OffchainStatus type number -> string diff --git a/packages/js-sdk/src/types/sp/Common.ts b/packages/js-sdk/src/types/sp/Common.ts index 8247338e..b5fc2101 100644 --- a/packages/js-sdk/src/types/sp/Common.ts +++ b/packages/js-sdk/src/types/sp/Common.ts @@ -52,7 +52,7 @@ export type BucketMeta = { For an explanation of the different OffChainStatus values, please visit:https://github.com/bnb-chain/greenfield-storage-provider/blob/9d7048ad33cf51a2f7eb347e2113c5d0cc45f970/modular/blocksyncer/modules/bucket/bucket_handle.go#L40 */ - OffChainStatus: number; + OffChainStatus: string; }; export type GlobalVirtualGroupFamily = { From cb9658e65e630f5ff071d415efa8d6f14cb10dea Mon Sep 17 00:00:00 2001 From: rrr523 Date: Tue, 9 Apr 2024 12:03:46 +0800 Subject: [PATCH 432/433] fix: Delegated create folder response return parse error --- .changeset/nasty-tomatoes-occur.md | 5 +++ .../src/components/object/create/index.tsx | 2 ++ packages/js-sdk/src/api/objects.ts | 29 ++++++++++------- .../spclient/spApis/delegatedCreateFolder.ts | 11 +++++++ .../spclient/spApis/resumablePutObject.ts | 3 +- .../js-sdk/src/clients/spclient/spClient.ts | 3 +- packages/js-sdk/src/types/sp/Common.ts | 12 +++++++ .../src/types/sp/DelegateCreateFolder.ts | 15 +++++++++ .../js-sdk/src/types/sp/DelegatedPubObject.ts | 12 +++++++ packages/js-sdk/src/types/sp/PutObject.ts | 31 +------------------ packages/js-sdk/src/types/sp/index.ts | 2 ++ 11 files changed, 82 insertions(+), 43 deletions(-) create mode 100644 .changeset/nasty-tomatoes-occur.md create mode 100644 packages/js-sdk/src/types/sp/DelegateCreateFolder.ts create mode 100644 packages/js-sdk/src/types/sp/DelegatedPubObject.ts diff --git a/.changeset/nasty-tomatoes-occur.md b/.changeset/nasty-tomatoes-occur.md new file mode 100644 index 00000000..12924248 --- /dev/null +++ b/.changeset/nasty-tomatoes-occur.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +fix: Delegated Create Folder APi return parse error message diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index 084454ba..fe7f8730 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -351,6 +351,8 @@ export const CreateObject = () => { }, ); + console.log('res', res); + if (res.code === 0) { alert('success'); } diff --git a/packages/js-sdk/src/api/objects.ts b/packages/js-sdk/src/api/objects.ts index 4ae19709..30d03c95 100644 --- a/packages/js-sdk/src/api/objects.ts +++ b/packages/js-sdk/src/api/objects.ts @@ -1,4 +1,7 @@ -import { getDelegatedCreateFolderMetaInfo } from '@/clients/spclient/spApis/delegatedCreateFolder'; +import { + getDelegatedCreateFolderMetaInfo, + parseDelegatedCreateFolderResponse, +} from '@/clients/spclient/spApis/delegatedCreateFolder'; import { getObjectOffsetInfo, parseObjectOffsetResponse, @@ -8,6 +11,12 @@ import { parseObjectStatusResponse, } from '@/clients/spclient/spApis/getObjectStatus'; import { getResumablePutObjectMetaInfo } from '@/clients/spclient/spApis/resumablePutObject'; +import { DelegatedOpts } from '@/types/sp/Common'; +import { + DelegateCreateFolderRepsonse, + DelegatedCreateFolderRequest, +} from '@/types/sp/DelegateCreateFolder'; +import { DelegatedPubObjectRequest } from '@/types/sp/DelegatedPubObject'; import { UploadProgressResponse } from '@/types/sp/UploadProgress'; import { assertAuthType, assertStringRequire } from '@/utils/asserts/params'; import { @@ -92,12 +101,7 @@ import { import { GetObjectRequest } from '../types/sp/GetObject'; import { GetObjectMetaRequest, GetObjectMetaResponse } from '../types/sp/GetObjectMeta'; import { ListObjectsByBucketNameResponse } from '../types/sp/ListObjectsByBucketName'; -import { - DelegatedCreateFolderRequest, - DelegatedOpts, - DelegatedPubObjectRequest, - PutObjectRequest, -} from '../types/sp/PutObject'; +import { PutObjectRequest } from '../types/sp/PutObject'; import { checkObjectName, generateUrlByBucketName, @@ -153,7 +157,7 @@ export interface IObject { delegateCreateFolder( params: DelegatedCreateFolderRequest, authType: AuthType, - ): Promise>; + ): Promise>; putObjectPolicy( bucketName: string, @@ -396,7 +400,7 @@ export class Objects implements IObject { return { code: 0, message: 'Put object success.', statusCode: status }; } catch (error: any) { return { - code: -1, + code: error.code || -1, message: error.message, statusCode: error?.statusCode || NORMAL_ERROR_CODE, }; @@ -924,10 +928,13 @@ export class Objects implements IObject { ); const { status } = result; - return { code: 0, message: 'Put object success.', statusCode: status }; + const xmlData = await result.text(); + const res = parseDelegatedCreateFolderResponse(xmlData); + + return { code: 0, message: 'Create folder success.', statusCode: status, body: res }; } catch (error: any) { return { - code: -1, + code: error.code || -1, message: error.message, statusCode: error?.statusCode || NORMAL_ERROR_CODE, }; diff --git a/packages/js-sdk/src/clients/spclient/spApis/delegatedCreateFolder.ts b/packages/js-sdk/src/clients/spclient/spApis/delegatedCreateFolder.ts index 48ffda92..36bb9235 100644 --- a/packages/js-sdk/src/clients/spclient/spApis/delegatedCreateFolder.ts +++ b/packages/js-sdk/src/clients/spclient/spApis/delegatedCreateFolder.ts @@ -1,7 +1,9 @@ import { EMPTY_STRING_SHA256, METHOD_POST } from '@/constants'; import { ReqMeta } from '@/types'; +import { DelegateCreateFolderRepsonse } from '@/types/sp/DelegateCreateFolder'; import { generateUrlByBucketName } from '@/utils'; import { VisibilityType } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; +import { XMLParser } from 'fast-xml-parser'; import { encodePath, getSortQueryParams } from '../auth'; export const getDelegatedCreateFolderMetaInfo = async ( @@ -50,3 +52,12 @@ export const getDelegatedCreateFolderMetaInfo = async ( reqMeta, }; }; + +export const parseDelegatedCreateFolderResponse = (data: string) => { + const xmlParser = new XMLParser({ + parseTagValue: false, + }); + + const res = xmlParser.parse(data) as DelegateCreateFolderRepsonse; + return res; +}; diff --git a/packages/js-sdk/src/clients/spclient/spApis/resumablePutObject.ts b/packages/js-sdk/src/clients/spclient/spApis/resumablePutObject.ts index 9172aec4..2ad7d3e8 100644 --- a/packages/js-sdk/src/clients/spclient/spApis/resumablePutObject.ts +++ b/packages/js-sdk/src/clients/spclient/spApis/resumablePutObject.ts @@ -1,5 +1,6 @@ import { EMPTY_STRING_SHA256, METHOD_POST } from '@/constants'; -import { DelegatedOpts, ReqMeta } from '@/types'; +import { ReqMeta } from '@/types'; +import { DelegatedOpts } from '@/types/sp/Common'; import { generateUrlByBucketName } from '@/utils/asserts/s3'; import { encodePath, getSortQueryParams } from '../auth'; diff --git a/packages/js-sdk/src/clients/spclient/spClient.ts b/packages/js-sdk/src/clients/spclient/spClient.ts index 195ae8e8..c8c9bcca 100644 --- a/packages/js-sdk/src/clients/spclient/spClient.ts +++ b/packages/js-sdk/src/clients/spclient/spClient.ts @@ -79,6 +79,7 @@ export class SpClient implements ISpClient { if (!response.ok) { const xmlError = await response.text(); const { code, message } = await parseError(xmlError); + throw { code: code || customError?.code, message: message || customError?.message, @@ -88,7 +89,7 @@ export class SpClient implements ISpClient { return response; } catch (error) { - return Promise.reject(error + ': timeout, try to increase the request time'); + return Promise.reject(error); } } diff --git a/packages/js-sdk/src/types/sp/Common.ts b/packages/js-sdk/src/types/sp/Common.ts index b5fc2101..921f2901 100644 --- a/packages/js-sdk/src/types/sp/Common.ts +++ b/packages/js-sdk/src/types/sp/Common.ts @@ -1,3 +1,5 @@ +import { VisibilityType } from '../common'; + export type BucketMeta = { /** * defines the information of the bucket. @@ -322,3 +324,13 @@ export interface PolicyMeta { */ ExpirationTime: number; } + +export type DelegatedOpts = { + visibility: VisibilityType; + isUpdate?: boolean; +}; + +export type ResumableOpts = { + disableResumable: boolean; + partSize?: number; +}; diff --git a/packages/js-sdk/src/types/sp/DelegateCreateFolder.ts b/packages/js-sdk/src/types/sp/DelegateCreateFolder.ts new file mode 100644 index 00000000..cafb776a --- /dev/null +++ b/packages/js-sdk/src/types/sp/DelegateCreateFolder.ts @@ -0,0 +1,15 @@ +import { DelegatedOpts } from './Common'; + +export type DelegatedCreateFolderRequest = { + bucketName: string; + objectName: string; + delegatedOpts: DelegatedOpts; + endpoint?: string; + timeout?: number; +}; + +export interface DelegateCreateFolderRepsonse { + CreateHash: { + TxHash: string; + }; +} diff --git a/packages/js-sdk/src/types/sp/DelegatedPubObject.ts b/packages/js-sdk/src/types/sp/DelegatedPubObject.ts new file mode 100644 index 00000000..0b62a474 --- /dev/null +++ b/packages/js-sdk/src/types/sp/DelegatedPubObject.ts @@ -0,0 +1,12 @@ +import { DelegatedOpts, ResumableOpts } from './Common'; + +export type DelegatedPubObjectRequest = { + bucketName: string; + objectName: string; + body: File; + delegatedOpts: DelegatedOpts; + endpoint?: string; + timeout?: number; + contentType?: string; + resumableOpts?: ResumableOpts; +}; diff --git a/packages/js-sdk/src/types/sp/PutObject.ts b/packages/js-sdk/src/types/sp/PutObject.ts index f57d6e9e..413bf874 100644 --- a/packages/js-sdk/src/types/sp/PutObject.ts +++ b/packages/js-sdk/src/types/sp/PutObject.ts @@ -1,4 +1,4 @@ -import { VisibilityType } from '../common'; +import { ResumableOpts } from './Common'; export type PutObjectRequest = { bucketName: string; @@ -9,32 +9,3 @@ export type PutObjectRequest = { endpoint?: string; resumableOpts?: ResumableOpts; }; - -export type DelegatedPubObjectRequest = { - bucketName: string; - objectName: string; - body: File; - delegatedOpts: DelegatedOpts; - endpoint?: string; - timeout?: number; - contentType?: string; - resumableOpts?: ResumableOpts; -}; - -export type DelegatedCreateFolderRequest = { - bucketName: string; - objectName: string; - delegatedOpts: DelegatedOpts; - endpoint?: string; - timeout?: number; -}; - -export type DelegatedOpts = { - visibility: VisibilityType; - isUpdate?: boolean; -}; - -export type ResumableOpts = { - disableResumable: boolean; - partSize?: number; -}; diff --git a/packages/js-sdk/src/types/sp/index.ts b/packages/js-sdk/src/types/sp/index.ts index 266ef945..7f2dd9ef 100644 --- a/packages/js-sdk/src/types/sp/index.ts +++ b/packages/js-sdk/src/types/sp/index.ts @@ -1,3 +1,5 @@ +export * from './DelegateCreateFolder'; +export * from './DelegatedPubObject'; export * from './ErrorResponse'; export * from './GetBucketMeta'; export * from './GetObject'; From c346d6b239dfa4337cefc63325b2d72f11b4240f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 9 Apr 2024 12:14:28 +0800 Subject: [PATCH 433/433] chore: [ci] release (alpha) (#514) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 2 ++ examples/browser-file-management/CHANGELOG.md | 9 +++++++++ examples/browser-file-management/package.json | 2 +- examples/nextjs/CHANGELOG.md | 9 +++++++++ examples/nextjs/package.json | 2 +- examples/nodejs-file-management/CHANGELOG.md | 9 +++++++++ examples/nodejs-file-management/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 13 +++++++++++++ packages/js-sdk/package.json | 2 +- 9 files changed, 46 insertions(+), 4 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index a5bf5ff0..f74c5a4e 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -19,10 +19,12 @@ "grumpy-suns-roll", "heavy-dolphins-obey", "heavy-suits-punch", + "nasty-tomatoes-occur", "rare-vans-talk", "silent-crews-cover", "sixty-mayflies-sin", "strange-maps-begin", + "thin-readers-listen", "wet-dragons-obey" ] } diff --git a/examples/browser-file-management/CHANGELOG.md b/examples/browser-file-management/CHANGELOG.md index c4dd5455..159a9825 100644 --- a/examples/browser-file-management/CHANGELOG.md +++ b/examples/browser-file-management/CHANGELOG.md @@ -1,5 +1,14 @@ # browser-file-management +## 0.1.1-alpha.2 + +### Patch Changes + +- Updated dependencies + [[`cb9658e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/cb9658e65e630f5ff071d415efa8d6f14cb10dea), + [`acf8644`](https://github.com/bnb-chain/greenfield-js-sdk/commit/acf8644ba0b893d6c0a4395845c365995b520ce1)]: + - @bnb-chain/greenfield-js-sdk@2.0.0-alpha.6 + ## 0.1.1-alpha.1 ### Patch Changes diff --git a/examples/browser-file-management/package.json b/examples/browser-file-management/package.json index 39fbb8ac..13d7dbd1 100644 --- a/examples/browser-file-management/package.json +++ b/examples/browser-file-management/package.json @@ -1,6 +1,6 @@ { "name": "browser-file-management", - "version": "0.1.1-alpha.1", + "version": "0.1.1-alpha.2", "private": true, "scripts": { "dev": "next dev", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index b00dab41..e6ee6b3f 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/wallet +## 0.0.28-alpha.6 + +### Patch Changes + +- Updated dependencies + [[`cb9658e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/cb9658e65e630f5ff071d415efa8d6f14cb10dea), + [`acf8644`](https://github.com/bnb-chain/greenfield-js-sdk/commit/acf8644ba0b893d6c0a4395845c365995b520ce1)]: + - @bnb-chain/greenfield-js-sdk@2.0.0-alpha.6 + ## 0.0.28-alpha.5 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index b44e00da..5749b66f 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.28-alpha.5", + "version": "0.0.28-alpha.6", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs-file-management/CHANGELOG.md b/examples/nodejs-file-management/CHANGELOG.md index 299c4f0c..33db12ec 100644 --- a/examples/nodejs-file-management/CHANGELOG.md +++ b/examples/nodejs-file-management/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/nodejs +## 0.0.27-alpha.3 + +### Patch Changes + +- Updated dependencies + [[`cb9658e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/cb9658e65e630f5ff071d415efa8d6f14cb10dea), + [`acf8644`](https://github.com/bnb-chain/greenfield-js-sdk/commit/acf8644ba0b893d6c0a4395845c365995b520ce1)]: + - @bnb-chain/greenfield-js-sdk@2.0.0-alpha.6 + ## 0.0.27-alpha.2 ### Patch Changes diff --git a/examples/nodejs-file-management/package.json b/examples/nodejs-file-management/package.json index 8d6e38fb..a7ef87aa 100644 --- a/examples/nodejs-file-management/package.json +++ b/examples/nodejs-file-management/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.27-alpha.2", + "version": "0.0.27-alpha.3", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index 265b0184..d78eafb2 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,18 @@ # @bnb-chain/greenfield-js-sdk +## 2.0.0-alpha.6 + +### Patch Changes + +- [#513](https://github.com/bnb-chain/greenfield-js-sdk/pull/513) + [`cb9658e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/cb9658e65e630f5ff071d415efa8d6f14cb10dea) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Delegated Create Folder APi return parse error + message + +- [#512](https://github.com/bnb-chain/greenfield-js-sdk/pull/512) + [`acf8644`](https://github.com/bnb-chain/greenfield-js-sdk/commit/acf8644ba0b893d6c0a4395845c365995b520ce1) + Thanks [@rrr523](https://github.com/rrr523)! - fix: OffchainStatus type number -> string + ## 2.0.0-alpha.5 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index f73cd7b0..1809198f 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "2.0.0-alpha.5", + "version": "2.0.0-alpha.6", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js",

    >zO#isl_T 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

+ + +
+
diff --git a/examples/nextjs/src/components/bucket/quota/index.tsx b/examples/nextjs/src/components/bucket/quota/index.tsx new file mode 100644 index 00000000..78f8719a --- /dev/null +++ b/examples/nextjs/src/components/bucket/quota/index.tsx @@ -0,0 +1,47 @@ +import { client } from '@/client'; +import { getOffchainAuthKeys } from '@/utils/offchainAuth'; +import { useState } from 'react'; +import { useAccount } from 'wagmi'; + +export const BucketQuota = () => { + const { address, connector } = useAccount(); + const [bucketName, setBucketName] = useState(''); + + return ( +
+

bucket quota

+
+ bucket name: + setBucketName(e.target.value)} /> +
+ +
+
+ ); +}; diff --git a/examples/nextjs/src/components/feegrant/createObj.tsx b/examples/nextjs/src/components/feegrant/createObj.tsx index 4fa6cc5e..1411a94c 100644 --- a/examples/nextjs/src/components/feegrant/createObj.tsx +++ b/examples/nextjs/src/components/feegrant/createObj.tsx @@ -1,4 +1,5 @@ import { client } from '@/client'; +import { ACCOUNT_PRIVATEKEY } from '@/config/env'; import { GRNToString, MsgCreateObjectTypeUrl, @@ -129,18 +130,22 @@ export const CreateObj = () => { ); const { contentLength, expectCheckSums } = hashResult; - const createObjectTx = await client.object.createObject({ - bucketName: bucketName, - objectName: objectName, - visibility: 'VISIBILITY_TYPE_PUBLIC_READ', - redundancyType: 'REDUNDANCY_EC_TYPE', - contentLength, - expectCheckSums, - fileType: file.type, - signType: 'authTypeV1', - creator: granteeAddr, - privateKey: privateKey, - }); + const createObjectTx = await client.object.createObject( + { + creator: granteeAddr, + bucketName: bucketName, + objectName: objectName, + visibility: 'VISIBILITY_TYPE_PUBLIC_READ', + redundancyType: 'REDUNDANCY_EC_TYPE', + contentLength, + expectCheckSums, + fileType: file.type, + }, + { + type: 'ECDSA', + privateKey: ACCOUNT_PRIVATEKEY, + }, + ); const simulateInfo = await createObjectTx.simulate({ denom: 'BNB', diff --git a/examples/nextjs/src/components/mirror/index.tsx b/examples/nextjs/src/components/mirror/index.tsx index 9e9df125..b91e3cdd 100644 --- a/examples/nextjs/src/components/mirror/index.tsx +++ b/examples/nextjs/src/components/mirror/index.tsx @@ -1,4 +1,5 @@ import { client } from '@/client'; +import { BSC_CHAIN_ID } from '@/config'; import { useState } from 'react'; import { useAccount } from 'wagmi'; @@ -29,6 +30,7 @@ export const Mirror = () => { groupName: '', id: groupInfo.id, operator: address, + destChainId: BSC_CHAIN_ID, }); const simulateInfo = await mirrorGroupTx.simulate({ diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index 094f6bc4..6e774a4a 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -83,6 +83,7 @@ export const CreateObject = () => { type: 'EDDSA', domain: window.location.origin, seed: offChainData.seedString, + address, // type: 'ECDSA', // privateKey: ACCOUNT_PRIVATEKEY, }, @@ -167,6 +168,7 @@ export const CreateObject = () => { type: 'EDDSA', domain: window.location.origin, seed: offChainData.seedString, + address, }, ); diff --git a/examples/nextjs/src/components/query/index.tsx b/examples/nextjs/src/components/query/index.tsx index b94fd792..20cbf3a6 100644 --- a/examples/nextjs/src/components/query/index.tsx +++ b/examples/nextjs/src/components/query/index.tsx @@ -1,4 +1,5 @@ import { client } from '@/client'; +import { Long } from '@bnb-chain/greenfield-js-sdk'; import { useAccount } from 'wagmi'; export const QueryComponent = () => { @@ -31,6 +32,13 @@ export const QueryComponent = () => { onClick={async () => { const gasfeeList = await client.gashub.getMsgGasParams({ msgTypeUrls: [], + pagination: { + countTotal: true, + key: Uint8Array.from([]), + limit: Long.fromInt(10), + offset: Long.fromInt(0), + reverse: false, + }, }); console.log('gasfeeList', gasfeeList); diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index cd12f0b9..98966e61 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -2,6 +2,7 @@ import { MsgCreateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgC import { MsgDeleteBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteBucket'; import { MsgMigrateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMigrateBucket'; import { MsgUpdateBucketInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; +import { ReadQuotaResponse } from '@/types/spXML'; import { getAuthorization, getAuthorizationAuthTypeV2, @@ -41,6 +42,7 @@ import { } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { Headers } from 'cross-fetch'; +import { XMLParser } from 'fast-xml-parser'; import Long from 'long'; import { container, delay, inject, singleton } from 'tsyringe'; import { @@ -61,6 +63,7 @@ import { IMigrateBucketMsgType, IObjectResultType, IQuotaProps, + TBaseGetBucketReadQuota, TCreateBucket, TGetBucketReadQuota, TGetUserBuckets, @@ -112,7 +115,10 @@ export interface IBucket { /** * return quota info of bucket of current month, include chain quota, free quota and consumed quota */ - getBucketReadQuota(configParam: TGetBucketReadQuota): Promise>; + getBucketReadQuota( + configParam: TBaseGetBucketReadQuota, + authType: AuthType, + ): Promise>; deleteBucket(msg: MsgDeleteBucket): Promise; @@ -207,7 +213,7 @@ export class Bucket implements IBucket { 'X-Gnfd-Content-Sha256': EMPTY_STRING_SHA256, }; - if (authType.type === 'OffChainAuth') { + if (authType.type === 'EDDSA') { const { domain } = authType; metaHeaders.append('X-Gnfd-User-Address', creator); metaHeaders.append('X-Gnfd-App-Domain', domain); @@ -391,20 +397,100 @@ export class Bucket implements IBucket { } public async getBucketReadQuota( - configParam: TGetBucketReadQuota, + configParam: TBaseGetBucketReadQuota, + authType: AuthType, ): Promise> { try { - const { bucketName, endpoint, duration = 30000, year, month, signType } = configParam; - if (!isValidUrl(endpoint)) { - throw new Error('Invalid endpoint'); - } - if (!isValidBucketName(bucketName)) { - throw new Error('Error bucket name'); - } + const { bucketName, duration = 30000, year, month } = configParam; const currentDate = new Date(); const finalYear = year ? year : currentDate.getFullYear(); const finalMonth = month ? month : currentDate.getMonth() + 1; const formattedMonth = finalMonth.toString().padStart(2, '0'); // format month to 2 digits, like "01" + if (!isValidBucketName(bucketName)) { + throw new Error('Error bucket name'); + } + + const endpoint = await this.sp.getSPUrlByBucket(bucketName); + const path = '/'; + const query = `read-quota=null&year-month=${finalYear}-${formattedMonth}`; + const url = `${generateUrlByBucketName(endpoint, bucketName)}${path}?${query}`; + + const reqMeta: Partial = { + contentSHA256: EMPTY_STRING_SHA256, + method: METHOD_GET, + url: { + hostname: new URL(url).hostname, + query, + path, + }, + }; + const metaHeaders: Headers = newRequestHeadersByMeta(reqMeta); + + let headerObj: Record = { + 'X-Gnfd-Date': metaHeaders.get('X-Gnfd-Date'), + 'X-Gnfd-Expiry-Timestamp': metaHeaders.get('X-Gnfd-Expiry-Timestamp'), + 'X-Gnfd-Content-Sha256': EMPTY_STRING_SHA256, + }; + + if (authType.type === 'EDDSA') { + const { domain, address } = authType; + metaHeaders.append('X-Gnfd-User-Address', address); + metaHeaders.append('X-Gnfd-App-Domain', domain); + + headerObj = { + ...headerObj, + 'X-Gnfd-User-Address': address, + 'X-Gnfd-App-Domain': domain, + }; + } + + const auth = await getAuthorization(reqMeta, metaHeaders, authType); + + headerObj = { + ...headerObj, + Authorization: auth, + }; + + const headers = new Headers(headerObj); + + const result = await this.spClient.callApi( + url, + { + headers, + method: METHOD_GET, + }, + duration, + { + code: -1, + message: 'Get Bucket Quota error.', + }, + ); + + const xmlParser = new XMLParser(); + const xmlData = await result.text(); + const res = xmlParser.parse(xmlData) as ReadQuotaResponse; + + return { + code: 0, + body: { + readQuota: Number(res.GetReadQuotaResult.ReadQuotaSize ?? '0'), + freeQuota: Number(res.GetReadQuotaResult.SPFreeReadQuotaSize ?? '0'), + consumedQuota: Number(res.GetReadQuotaResult.ReadConsumedSize ?? '0'), + }, + message: 'Get bucket read quota.', + statusCode: result.status, + }; + } catch (error: any) { + return { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; + } + + /* try { + const { bucketName, endpoint, duration = 30000, year, month, signType } = configParam; + const url = generateUrlByBucketName(endpoint, bucketName) + `/?read-quota&year-month=${finalYear}-${formattedMonth}`; @@ -488,7 +574,7 @@ export class Bucket implements IBucket { message: error.message, statusCode: error?.statusCode || NORMAL_ERROR_CODE, }; - } + } */ } public async updateBucketInfo(msg: MsgUpdateBucketInfo) { diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 4d756a2d..d0d6bf8b 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -359,7 +359,7 @@ export class Objectt implements IObject { txnHash: txnHash, }; - const Authorization = getAuthorizationAuthTypeV1(reqMeta, null, configParam.privateKey); + const Authorization = getAuthorizationAuthTypeV1(reqMeta, null, configParam.privateKey) || ''; headerContent = { ...headerContent, 'Content-Type': 'application/octet-stream', diff --git a/packages/chain-sdk/src/api/spclient.ts b/packages/chain-sdk/src/api/spclient.ts index b5a71bb7..69a7439a 100644 --- a/packages/chain-sdk/src/api/spclient.ts +++ b/packages/chain-sdk/src/api/spclient.ts @@ -15,6 +15,7 @@ export type EDDSA = { type: 'EDDSA'; seed: string; domain: string; + address: string; }; export type AuthType = ECDSA | EDDSA; diff --git a/packages/chain-sdk/src/offchainauth/fetch.ts b/packages/chain-sdk/src/offchainauth/fetch.ts index 39678234..62791388 100644 --- a/packages/chain-sdk/src/offchainauth/fetch.ts +++ b/packages/chain-sdk/src/offchainauth/fetch.ts @@ -2,15 +2,8 @@ import { fetchWithTimeout } from '@/utils/http'; import { Headers } from 'cross-fetch'; import { IFetchNonce, IUpdateOneSpPubKeyParams } from '../types/storage'; import { XMLParser } from 'fast-xml-parser'; +import { RequestNonceResponse } from '@/types/spXML'; -interface RequestNonceResponse { - RequestNonceResp: { - CurrentNonce: number; - CurrentPublicKey: string; - ExpiryDate: string; - NextNonce: number; - }; -} export const fetchNonce = async ({ spEndpoint, spName, diff --git a/packages/chain-sdk/src/types/spXML.ts b/packages/chain-sdk/src/types/spXML.ts new file mode 100644 index 00000000..f6b08364 --- /dev/null +++ b/packages/chain-sdk/src/types/spXML.ts @@ -0,0 +1,25 @@ +export interface RequestErrorResponse { + Error: { + Code: string; + Message: string; + }; +} + +export interface RequestNonceResponse { + RequestNonceResp: { + CurrentNonce: number; + CurrentPublicKey: string; + ExpiryDate: string; + NextNonce: number; + }; +} + +export interface ReadQuotaResponse { + GetReadQuotaResult: { + BucketID: number; + BucketName: string; + ReadConsumedSize: number; + ReadQuotaSize: number; + SPFreeReadQuotaSize: number; + }; +} diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index 9b80bed4..7ccd6fc3 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -91,7 +91,7 @@ export type BucketProps = { export type TBaseGetBucketReadQuota = { bucketName: string; - endpoint: string; + // endpoint: string; duration?: number; year?: number; month?: number; diff --git a/packages/chain-sdk/src/utils/auth.ts b/packages/chain-sdk/src/utils/auth.ts index b7a804de..97587c67 100644 --- a/packages/chain-sdk/src/utils/auth.ts +++ b/packages/chain-sdk/src/utils/auth.ts @@ -81,6 +81,7 @@ export const getAuthorizationAuthTypeV1 = ( reqHeaders: Headers | null, privateKey: string, ) => { + if (!reqHeaders) return; const canonicalHeaders = getCanonicalHeaders(reqMeta, reqHeaders); const signedHeaders = getSignedHeaders(reqHeaders); @@ -105,7 +106,9 @@ export const getAuthorizationAuthTypeV1 = ( export const newRequestHeadersByMeta = (meta: Partial) => { const headers = new Headers(); // console.log('meta', meta); - headers.set(HTTPHeaderContentType, meta.contentType || ''); + if (meta.contentType) { + headers.set(HTTPHeaderContentType, meta.contentType); + } if (meta.txnHash && meta.txnHash !== '') { headers.set(HTTPHeaderTransactionHash, meta.txnHash); diff --git a/packages/chain-sdk/src/utils/http.ts b/packages/chain-sdk/src/utils/http.ts index 76395e20..5ca34a6b 100644 --- a/packages/chain-sdk/src/utils/http.ts +++ b/packages/chain-sdk/src/utils/http.ts @@ -1,3 +1,4 @@ +import { RequestErrorResponse } from '@/types/spXML'; import fetch from 'cross-fetch'; import { XMLParser } from 'fast-xml-parser'; @@ -28,12 +29,6 @@ const fetchWithTimeout = async (fetchUrl = '', fetchOptions: any = {}, duration } }; -export interface RequestErrorResponse { - Error: { - Code: string; - Message: string; - }; -} export const parseErrorXML = async (result: Response) => { const xmlParser = new XMLParser(); const xmlData = await result.text(); From 8d912ccea6ff46b2bb5806375416ff21385821a3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 22 Aug 2023 17:24:12 +0800 Subject: [PATCH 139/433] chore: [ci] release (alpha) (#239) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 2 ++ examples/nextjs/CHANGELOG.md | 9 +++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 9 +++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 12 ++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 35 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index ac027a4b..7b1c71b9 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -16,6 +16,7 @@ "eleven-numbers-cover", "five-mice-whisper", "flat-mugs-collect", + "gorgeous-penguins-invite", "grumpy-tables-drop", "itchy-candles-fold", "large-jokes-fly", @@ -23,6 +24,7 @@ "mean-horses-change", "mighty-deers-build", "nice-geckos-think", + "ninety-jokes-study", "plenty-squids-walk", "proud-dragons-repair", "quiet-numbers-camp", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index fd218511..eb68b830 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/wallet +## 0.0.5-alpha.8 + +### Patch Changes + +- Updated dependencies + [[`a823e61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a823e615266973639ff3101e6bec7e3cf88891db), + [`a823e61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a823e615266973639ff3101e6bec7e3cf88891db)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.8 + ## 0.0.5-alpha.7 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index f923bd8f..8841dd23 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.5-alpha.7", + "version": "0.0.5-alpha.8", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 9515010a..8fec6bb6 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/nodejs +## 0.0.8-alpha.8 + +### Patch Changes + +- Updated dependencies + [[`a823e61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a823e615266973639ff3101e6bec7e3cf88891db), + [`a823e61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a823e615266973639ff3101e6bec7e3cf88891db)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.8 + ## 0.0.8-alpha.7 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index e542f694..59093347 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.8-alpha.7", + "version": "0.0.8-alpha.8", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index bbd51355..883c523a 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.4-alpha.8 + +### Patch Changes + +- [#238](https://github.com/bnb-chain/greenfield-js-sdk/pull/238) + [`a823e61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a823e615266973639ff3101e6bec7e3cf88891db) + Thanks [@rrr523](https://github.com/rrr523)! - feat: ReadQuota + +- [#238](https://github.com/bnb-chain/greenfield-js-sdk/pull/238) + [`a823e61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a823e615266973639ff3101e6bec7e3cf88891db) + Thanks [@rrr523](https://github.com/rrr523)! - fix: CreateBucketApproval + ## 0.2.4-alpha.7 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index a993d872..59e67f50 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.4-alpha.7", + "version": "0.2.4-alpha.8", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From db61ff671f7ccc1be9ed6b1a229596916e1ae5ab Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 23 Aug 2023 10:39:36 +0800 Subject: [PATCH 140/433] XML response (#240) * feat: Return XML type * feat: CreateBucket Add payment address --- .changeset/gold-bugs-occur.md | 5 ++ .../src/components/bucket/create/index.tsx | 1 + packages/chain-sdk/src/api/bucket.ts | 25 ++++--- packages/chain-sdk/src/api/objectt.ts | 20 +++--- packages/chain-sdk/src/types/spXML.ts | 69 +++++++++++++++++++ packages/chain-sdk/src/types/storage.ts | 1 + 6 files changed, 102 insertions(+), 19 deletions(-) create mode 100644 .changeset/gold-bugs-occur.md diff --git a/.changeset/gold-bugs-occur.md b/.changeset/gold-bugs-occur.md new file mode 100644 index 00000000..9d32b543 --- /dev/null +++ b/.changeset/gold-bugs-occur.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Create Bucket add Payment address diff --git a/examples/nextjs/src/components/bucket/create/index.tsx b/examples/nextjs/src/components/bucket/create/index.tsx index e57fb829..62569b20 100644 --- a/examples/nextjs/src/components/bucket/create/index.tsx +++ b/examples/nextjs/src/components/bucket/create/index.tsx @@ -47,6 +47,7 @@ export const CreateBucket = () => { spInfo: { primarySpAddress: spInfo.primarySpAddress, }, + paymentAddress: address, }, { // type: 'ECDSA', diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index 98966e61..9ac5d840 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -2,7 +2,7 @@ import { MsgCreateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgC import { MsgDeleteBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteBucket'; import { MsgMigrateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMigrateBucket'; import { MsgUpdateBucketInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; -import { ReadQuotaResponse } from '@/types/spXML'; +import { GetUserBucketsResponse, ReadQuotaResponse } from '@/types/spXML'; import { getAuthorization, getAuthorizationAuthTypeV2, @@ -56,7 +56,6 @@ import { TxResponse, } from '..'; import { - BucketProps, IBaseGetCreateBucket, ICreateBucketMsgType, IMigrateBucket, @@ -65,7 +64,6 @@ import { IQuotaProps, TBaseGetBucketReadQuota, TCreateBucket, - TGetBucketReadQuota, TGetUserBuckets, } from '../types/storage'; import { Basic } from './basic'; @@ -110,7 +108,9 @@ export interface IBucket { actionType: ActionType, ): Promise; - getUserBuckets(configParam: TGetUserBuckets): Promise>>; + getUserBuckets( + configParam: TGetUserBuckets, + ): Promise>; /** * return quota info of bucket of current month, include chain quota, free quota and consumed quota @@ -159,6 +159,7 @@ export class Bucket implements IBucket { chargedReadQuota, spInfo, duration, + paymentAddress, } = params; try { @@ -184,7 +185,7 @@ export class Bucket implements IBucket { global_virtual_group_family_id: 0, }, charged_read_quota: chargedReadQuota, - payment_address: '', + payment_address: paymentAddress, }; const path = '/greenfield/admin/v1/get-approval'; const query = 'action=CreateBucket'; @@ -200,13 +201,13 @@ export class Bucket implements IBucket { query, path, }, - contentType: '', + // contentType: '', }; const metaHeaders: Headers = newRequestHeadersByMeta(reqMeta); let headerObj: Record = { - 'Content-Type': '', + // 'Content-Type': '', 'X-Gnfd-Date': metaHeaders.get('X-Gnfd-Date'), 'X-Gnfd-Expiry-Timestamp': metaHeaders.get('X-Gnfd-Expiry-Timestamp'), 'X-Gnfd-Unsigned-Msg': unSignedMessageInHex, @@ -302,7 +303,7 @@ export class Bucket implements IBucket { chargedReadQuota: signedMsg.charged_read_quota ? Long.fromString('0') : Long.fromString(signedMsg.charged_read_quota), - paymentAddress: '', + paymentAddress: signedMsg.payment_address, }; return await this.createBucketTx(msg, signedMsg); @@ -371,6 +372,7 @@ export class Bucket implements IBucket { duration, ); const { status } = result; + if (!result.ok) { const { code, message } = await parseErrorXml(result); throw { @@ -379,13 +381,16 @@ export class Bucket implements IBucket { statusCode: status, }; } - const { buckets } = await result.json(); + + const xmlParser = new XMLParser(); + const xmlData = await result.text(); + const res = xmlParser.parse(xmlData) as GetUserBucketsResponse; return { code: 0, message: 'Get bucket success.', statusCode: status, - body: buckets, + body: res.GfSpGetUserBucketsResponse.Buckets, }; } catch (error: any) { return { diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index d0d6bf8b..8c48693e 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -2,6 +2,7 @@ import { MsgCancelCreateObjectSDKTypeEIP712 } from '@/messages/greenfield/storag import { MsgCreateObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCreateObject'; import { MsgDeleteObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteObject'; import { MsgUpdateObjectInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateObjectInfo'; +import { GetSpListObjectsByBucketNameResponse } from '@/types/spXML'; import { getAuthorization, getAuthorizationAuthTypeV1, @@ -13,7 +14,6 @@ import { EMPTY_STRING_SHA256, fetchWithTimeout, METHOD_GET, - METHOD_POST, METHOD_PUT, NORMAL_ERROR_CODE, parseErrorXml, @@ -44,6 +44,7 @@ import { } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { Headers } from 'cross-fetch'; +import { XMLParser } from 'fast-xml-parser'; import { container, delay, inject, singleton } from 'tsyringe'; import { GRNToString, @@ -55,13 +56,9 @@ import { } from '..'; import { ICreateObjectMsgType, - IObjectsProps, IObjectResultType, Long, - SignTypeOffChain, - SignTypeV1, TBaseGetCreateObject, - TCreateObject, TGetObject, TKeyValue, TListObjects, @@ -76,7 +73,6 @@ import { isValidUrl, } from '../utils/s3'; import { Basic } from './basic'; -import { Bucket } from './bucket'; import { OffChainAuth } from './offchainauth'; import { RpcQueryClient } from './queryclient'; import { Sp } from './sp'; @@ -109,7 +105,9 @@ export interface IObject { downloadFile(configParam: TGetObject): Promise; - listObjects(configParam: TListObjects): Promise>; + listObjects( + configParam: TListObjects, + ): Promise>; createFolder( getApprovalParams: Omit, @@ -602,12 +600,16 @@ export class Objectt implements IObject { statusCode: status, }; } - const body = await result.json(); + + const xmlParser = new XMLParser(); + const xmlData = await result.text(); + const res = xmlParser.parse(xmlData) as GetSpListObjectsByBucketNameResponse; + return { code: 0, message: 'List object success.', statusCode: status, - body, + body: res, }; } catch (error: any) { return { diff --git a/packages/chain-sdk/src/types/spXML.ts b/packages/chain-sdk/src/types/spXML.ts index f6b08364..9a8224fa 100644 --- a/packages/chain-sdk/src/types/spXML.ts +++ b/packages/chain-sdk/src/types/spXML.ts @@ -23,3 +23,72 @@ export interface ReadQuotaResponse { SPFreeReadQuotaSize: number; }; } + +export interface GetUserBucketsResponse { + GfSpGetUserBucketsResponse: { + Buckets: { + BucketInfo: { + BucketName: string; + BucketStatus: number; + ChargedReadQuota: number; + CreateAt: number; + GlobalVirtualGroupFamilyId: number; + Id: number; + Owner: string; + PaymentAddress: string; + SourceType: number; + Visibility: number; + }; + CreateTxHash: string; + DeleteAt: number; + DeleteReason: string; + Operator: string; + Removed: boolean; + UpdateAt: number; + UpdateTime: number; + UpdateTxHash: string; + }[]; + }; +} + +interface ObjectInfo { + Owner: number; + Creator: number; + BucketName: string; + ObjectName: string; + Id: number; + LocalVirtualGroupId: number; + PayloadSize: number; + Visibility: number; + ContentType: string; + CreateAt: number; + ObjectStatus: number; + RedundancyType: number; + SourceType: number; + Checksums: string[]; +} + +export interface GetSpListObjectsByBucketNameResponse { + GfSpListObjectsByBucketNameResponse: { + Objects: { + ObjectInfo: ObjectInfo; + LockedBalance: number; + Removed: boolean; + UpdateAt: number; + DeleteAt: number; + DeleteReason: string; + Operator: number; + CreateTxHash: number; + UpdateTxHash: number; + SealTxHash: number; + }[]; + KeyCount: number; + MaxKeys: number; + IsTruncated: boolean; + NextContinuationToken: string; + Name: string; + Prefix: string; + Delimiter: string; + ContinuationToken: string; + }; +} diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index 7ccd6fc3..665ec7ab 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -13,6 +13,7 @@ export interface IBaseGetCreateBucket { primarySpAddress: string; }; duration?: number; + paymentAddress: string; } export interface ICreateBucketByOffChainAuth extends IBaseGetCreateBucket { From e0c33985930eb89f2a4033036d15864e34b8f69c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 23 Aug 2023 10:42:46 +0800 Subject: [PATCH 141/433] chore: [ci] release (alpha) (#241) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 7b1c71b9..e509c2d7 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -16,6 +16,7 @@ "eleven-numbers-cover", "five-mice-whisper", "flat-mugs-collect", + "gold-bugs-occur", "gorgeous-penguins-invite", "grumpy-tables-drop", "itchy-candles-fold", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index eb68b830..8c141fee 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.5-alpha.9 + +### Patch Changes + +- Updated dependencies + [[`db61ff6`](https://github.com/bnb-chain/greenfield-js-sdk/commit/db61ff671f7ccc1be9ed6b1a229596916e1ae5ab)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.9 + ## 0.0.5-alpha.8 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 8841dd23..3d6c978b 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.5-alpha.8", + "version": "0.0.5-alpha.9", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 8fec6bb6..ff096aeb 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.8-alpha.9 + +### Patch Changes + +- Updated dependencies + [[`db61ff6`](https://github.com/bnb-chain/greenfield-js-sdk/commit/db61ff671f7ccc1be9ed6b1a229596916e1ae5ab)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.9 + ## 0.0.8-alpha.8 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 59093347..a68dfa3a 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.8-alpha.8", + "version": "0.0.8-alpha.9", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 883c523a..647d6695 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.4-alpha.9 + +### Patch Changes + +- [#240](https://github.com/bnb-chain/greenfield-js-sdk/pull/240) + [`db61ff6`](https://github.com/bnb-chain/greenfield-js-sdk/commit/db61ff671f7ccc1be9ed6b1a229596916e1ae5ab) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Create Bucket add Payment address + ## 0.2.4-alpha.8 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 59e67f50..e844387c 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.4-alpha.8", + "version": "0.2.4-alpha.9", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From f98b8dc89e10a4478d113e66e0154741ff563042 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 23 Aug 2023 11:16:05 +0800 Subject: [PATCH 142/433] fix: XMLParser force array not object (#242) --- packages/chain-sdk/src/api/bucket.ts | 13 +++++++++++-- packages/chain-sdk/src/api/objectt.ts | 7 ++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index 9ac5d840..4496c4dd 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -2,7 +2,11 @@ import { MsgCreateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgC import { MsgDeleteBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteBucket'; import { MsgMigrateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMigrateBucket'; import { MsgUpdateBucketInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; -import { GetUserBucketsResponse, ReadQuotaResponse } from '@/types/spXML'; +import { + GetSpListObjectsByBucketNameResponse, + GetUserBucketsResponse, + ReadQuotaResponse, +} from '@/types/spXML'; import { getAuthorization, getAuthorizationAuthTypeV2, @@ -382,7 +386,12 @@ export class Bucket implements IBucket { }; } - const xmlParser = new XMLParser(); + const xmlParser = new XMLParser({ + isArray: (tagName: string) => { + if (tagName === 'Buckets') return true; + return false; + }, + }); const xmlData = await result.text(); const res = xmlParser.parse(xmlData) as GetUserBucketsResponse; diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 8c48693e..9925938a 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -601,7 +601,12 @@ export class Objectt implements IObject { }; } - const xmlParser = new XMLParser(); + const xmlParser = new XMLParser({ + isArray: (tagName: string) => { + if (tagName === 'Objects') return true; + return false; + }, + }); const xmlData = await result.text(); const res = xmlParser.parse(xmlData) as GetSpListObjectsByBucketNameResponse; From cbbb4aa2d0f1e76b9f367b95355590370d35d684 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 23 Aug 2023 11:18:00 +0800 Subject: [PATCH 143/433] Feat/export req (#243) * fix: XMLParser force array not object * fix: XMLParser force array not object --- .changeset/twelve-mangos-scream.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/twelve-mangos-scream.md diff --git a/.changeset/twelve-mangos-scream.md b/.changeset/twelve-mangos-scream.md new file mode 100644 index 00000000..0135b39a --- /dev/null +++ b/.changeset/twelve-mangos-scream.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +fix: XML force convert array not object From e7851320a85eba89a62a30a4a14e26606a245cb7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 23 Aug 2023 11:20:20 +0800 Subject: [PATCH 144/433] chore: [ci] release (alpha) (#244) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index e509c2d7..c0e65acd 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -36,6 +36,7 @@ "stupid-spies-poke", "swift-pigs-travel", "tender-sloths-shake", + "twelve-mangos-scream", "yellow-plums-cheat" ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 8c141fee..b03304ff 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.5-alpha.10 + +### Patch Changes + +- Updated dependencies + [[`cbbb4aa`](https://github.com/bnb-chain/greenfield-js-sdk/commit/cbbb4aa2d0f1e76b9f367b95355590370d35d684)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.10 + ## 0.0.5-alpha.9 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 3d6c978b..e9f9e64b 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.5-alpha.9", + "version": "0.0.5-alpha.10", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index ff096aeb..2126e2a7 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.8-alpha.10 + +### Patch Changes + +- Updated dependencies + [[`cbbb4aa`](https://github.com/bnb-chain/greenfield-js-sdk/commit/cbbb4aa2d0f1e76b9f367b95355590370d35d684)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.10 + ## 0.0.8-alpha.9 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index a68dfa3a..5b563470 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.8-alpha.9", + "version": "0.0.8-alpha.10", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 647d6695..ef0959f7 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.4-alpha.10 + +### Patch Changes + +- [#243](https://github.com/bnb-chain/greenfield-js-sdk/pull/243) + [`cbbb4aa`](https://github.com/bnb-chain/greenfield-js-sdk/commit/cbbb4aa2d0f1e76b9f367b95355590370d35d684) + Thanks [@rrr523](https://github.com/rrr523)! - fix: XML force convert array not object + ## 0.2.4-alpha.9 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index e844387c..91996f4c 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.4-alpha.9", + "version": "0.2.4-alpha.10", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 8782a21a9dcae1f9b83062877ff92540534fa40c Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 23 Aug 2023 11:52:29 +0800 Subject: [PATCH 145/433] feat: Export types (#245) --- .changeset/odd-hotels-glow.md | 5 +++++ packages/chain-sdk/src/types/index.ts | 1 + 2 files changed, 6 insertions(+) create mode 100644 .changeset/odd-hotels-glow.md diff --git a/.changeset/odd-hotels-glow.md b/.changeset/odd-hotels-glow.md new file mode 100644 index 00000000..bd46de4f --- /dev/null +++ b/.changeset/odd-hotels-glow.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Export types diff --git a/packages/chain-sdk/src/types/index.ts b/packages/chain-sdk/src/types/index.ts index 52927e7f..e4a6b37c 100644 --- a/packages/chain-sdk/src/types/index.ts +++ b/packages/chain-sdk/src/types/index.ts @@ -1,3 +1,4 @@ export * from './common'; export * from './storage'; export * from './tx'; +export * from './spXML'; From d388940e821e7fc3cb9671ffae4753d63a3189b9 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 23 Aug 2023 12:17:54 +0800 Subject: [PATCH 146/433] Export types (#247) * feat: Export types * fix: Hex number convert to string not big number --- .changeset/wet-trainers-whisper.md | 5 +++++ packages/chain-sdk/src/api/bucket.ts | 12 +++++++----- packages/chain-sdk/src/api/objectt.ts | 6 ++++++ 3 files changed, 18 insertions(+), 5 deletions(-) create mode 100644 .changeset/wet-trainers-whisper.md diff --git a/.changeset/wet-trainers-whisper.md b/.changeset/wet-trainers-whisper.md new file mode 100644 index 00000000..2003db6b --- /dev/null +++ b/.changeset/wet-trainers-whisper.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +fix: Hex don't convert number diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index 4496c4dd..5d82e8d1 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -2,11 +2,7 @@ import { MsgCreateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgC import { MsgDeleteBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteBucket'; import { MsgMigrateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMigrateBucket'; import { MsgUpdateBucketInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; -import { - GetSpListObjectsByBucketNameResponse, - GetUserBucketsResponse, - ReadQuotaResponse, -} from '@/types/spXML'; +import { GetUserBucketsResponse, ReadQuotaResponse } from '@/types/spXML'; import { getAuthorization, getAuthorizationAuthTypeV2, @@ -391,6 +387,12 @@ export class Bucket implements IBucket { if (tagName === 'Buckets') return true; return false; }, + numberParseOptions: { + hex: false, + leadingZeros: true, + skipLike: undefined, + eNotation: false, + }, }); const xmlData = await result.text(); const res = xmlParser.parse(xmlData) as GetUserBucketsResponse; diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 9925938a..9232baef 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -606,6 +606,12 @@ export class Objectt implements IObject { if (tagName === 'Objects') return true; return false; }, + numberParseOptions: { + hex: false, + leadingZeros: true, + skipLike: undefined, + eNotation: false, + }, }); const xmlData = await result.text(); const res = xmlParser.parse(xmlData) as GetSpListObjectsByBucketNameResponse; From c1ef739f7183cc33f8a982a4a6eec6b36acb9109 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 23 Aug 2023 12:20:43 +0800 Subject: [PATCH 147/433] chore: [ci] release (alpha) (#246) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 2 ++ examples/nextjs/CHANGELOG.md | 9 +++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 9 +++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 12 ++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 35 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index c0e65acd..d51ed3a2 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -26,6 +26,7 @@ "mighty-deers-build", "nice-geckos-think", "ninety-jokes-study", + "odd-hotels-glow", "plenty-squids-walk", "proud-dragons-repair", "quiet-numbers-camp", @@ -37,6 +38,7 @@ "swift-pigs-travel", "tender-sloths-shake", "twelve-mangos-scream", + "wet-trainers-whisper", "yellow-plums-cheat" ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index b03304ff..ad83e0a7 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/wallet +## 0.0.5-alpha.11 + +### Patch Changes + +- Updated dependencies + [[`8782a21`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8782a21a9dcae1f9b83062877ff92540534fa40c), + [`d388940`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d388940e821e7fc3cb9671ffae4753d63a3189b9)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.11 + ## 0.0.5-alpha.10 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index e9f9e64b..25ec302d 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.5-alpha.10", + "version": "0.0.5-alpha.11", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 2126e2a7..a1bab314 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/nodejs +## 0.0.8-alpha.11 + +### Patch Changes + +- Updated dependencies + [[`8782a21`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8782a21a9dcae1f9b83062877ff92540534fa40c), + [`d388940`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d388940e821e7fc3cb9671ffae4753d63a3189b9)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.11 + ## 0.0.8-alpha.10 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 5b563470..fa4ef980 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.8-alpha.10", + "version": "0.0.8-alpha.11", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index ef0959f7..26fb23d3 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.4-alpha.11 + +### Patch Changes + +- [#245](https://github.com/bnb-chain/greenfield-js-sdk/pull/245) + [`8782a21`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8782a21a9dcae1f9b83062877ff92540534fa40c) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Export types + +- [#247](https://github.com/bnb-chain/greenfield-js-sdk/pull/247) + [`d388940`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d388940e821e7fc3cb9671ffae4753d63a3189b9) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Hex don't convert number + ## 0.2.4-alpha.10 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 91996f4c..3bf441ee 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.4-alpha.10", + "version": "0.2.4-alpha.11", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From a3e2210805780a691f796caca32295ed8f8903a7 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 23 Aug 2023 16:21:25 +0800 Subject: [PATCH 148/433] Feat/up and down (#248) * feat: Upload Object add AuthType * feat: Download s3 object * feat: Migrate Bucket add authType * feat: SpClient expose makeHeaders method * chore: Update constant pathj --- .changeset/angry-lies-beam.md | 5 + .changeset/cuddly-radios-wink.md | 5 + .changeset/fair-impalas-approve.md | 5 + .changeset/unlucky-suns-look.md | 5 + .../src/components/bucket/migrate/index.tsx | 27 ++- .../src/components/object/create/index.tsx | 24 +- .../src/components/object/info/index.tsx | 38 +++- packages/chain-sdk/src/api/bucket.ts | 208 ++++++------------ packages/chain-sdk/src/api/objectt.ts | 183 +++++++-------- packages/chain-sdk/src/api/offchainauth.ts | 2 +- packages/chain-sdk/src/api/sp.ts | 3 +- packages/chain-sdk/src/api/spclient.ts | 60 +++-- packages/chain-sdk/src/client.ts | 4 + packages/chain-sdk/src/constants/http.ts | 7 + packages/chain-sdk/src/constants/index.ts | 1 + packages/chain-sdk/src/types/auth.ts | 17 ++ packages/chain-sdk/src/types/index.ts | 1 + packages/chain-sdk/src/types/storage.ts | 102 +-------- packages/chain-sdk/src/utils/auth.ts | 57 +---- packages/chain-sdk/src/utils/http.ts | 18 +- 20 files changed, 336 insertions(+), 436 deletions(-) create mode 100644 .changeset/angry-lies-beam.md create mode 100644 .changeset/cuddly-radios-wink.md create mode 100644 .changeset/fair-impalas-approve.md create mode 100644 .changeset/unlucky-suns-look.md create mode 100644 packages/chain-sdk/src/constants/http.ts create mode 100644 packages/chain-sdk/src/types/auth.ts diff --git a/.changeset/angry-lies-beam.md b/.changeset/angry-lies-beam.md new file mode 100644 index 00000000..f9b89b18 --- /dev/null +++ b/.changeset/angry-lies-beam.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Upload Object add AuthType diff --git a/.changeset/cuddly-radios-wink.md b/.changeset/cuddly-radios-wink.md new file mode 100644 index 00000000..bd28871e --- /dev/null +++ b/.changeset/cuddly-radios-wink.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: download s3 object diff --git a/.changeset/fair-impalas-approve.md b/.changeset/fair-impalas-approve.md new file mode 100644 index 00000000..ed08b09c --- /dev/null +++ b/.changeset/fair-impalas-approve.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Migrate bucket diff --git a/.changeset/unlucky-suns-look.md b/.changeset/unlucky-suns-look.md new file mode 100644 index 00000000..e6c7fa0e --- /dev/null +++ b/.changeset/unlucky-suns-look.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Export SpClient diff --git a/examples/nextjs/src/components/bucket/migrate/index.tsx b/examples/nextjs/src/components/bucket/migrate/index.tsx index dd601d16..44a87f0f 100644 --- a/examples/nextjs/src/components/bucket/migrate/index.tsx +++ b/examples/nextjs/src/components/bucket/migrate/index.tsx @@ -1,9 +1,10 @@ import { client, selectSp } from '@/client'; +import { getOffchainAuthKeys } from '@/utils/offchainAuth'; import { useState } from 'react'; import { useAccount } from 'wagmi'; export const MigrateBucket = () => { - const { address } = useAccount(); + const { address, connector } = useAccount(); const [bucketName, setBucketName] = useState(''); return ( @@ -23,17 +24,27 @@ export const MigrateBucket = () => { onClick={async () => { if (!address) return; - const spInfo = await selectSp(); + const destinationSpInfo = await selectSp(); + const provider = await connector?.getProvider(); + const offChainData = await getOffchainAuthKeys(address, provider); + if (!offChainData) { + alert('No offchain, please create offchain pairs first'); + return; + } - const migrateBucketTx = await client.bucket.migrateBucket({ - params: { + const migrateBucketTx = await client.bucket.migrateBucket( + { bucketName, operator: address, - dstPrimarySpId: spInfo.id, + dstPrimarySpId: destinationSpInfo.id, }, - spInfo, - signType: 'authTypeV2', - }); + { + type: 'EDDSA', + address, + domain: window.location.origin, + seed: offChainData.seedString, + }, + ); const simulateInfo = await migrateBucketTx.simulate({ denom: 'BNB', diff --git a/examples/nextjs/src/components/object/create/index.tsx b/examples/nextjs/src/components/object/create/index.tsx index 6e774a4a..0f19ff68 100644 --- a/examples/nextjs/src/components/object/create/index.tsx +++ b/examples/nextjs/src/components/object/create/index.tsx @@ -127,16 +127,20 @@ export const CreateObject = () => { return; } - const uploadRes = await client.object.uploadObject({ - bucketName: createObjectInfo.bucketName, - objectName: createObjectInfo.objectName, - body: file, - txnHash: txHash, - signType: 'offChainAuth', - domain: window.location.origin, - seedString: offChainData.seedString, - address, - }); + const uploadRes = await client.object.uploadObject( + { + bucketName: createObjectInfo.bucketName, + objectName: createObjectInfo.objectName, + body: file, + txnHash: txHash, + }, + { + type: 'EDDSA', + domain: window.location.origin, + seed: offChainData.seedString, + address, + }, + ); console.log('uploadRes', uploadRes); if (uploadRes.code === 0) { diff --git a/examples/nextjs/src/components/object/info/index.tsx b/examples/nextjs/src/components/object/info/index.tsx index 891669c7..6d3ead4a 100644 --- a/examples/nextjs/src/components/object/info/index.tsx +++ b/examples/nextjs/src/components/object/info/index.tsx @@ -1,7 +1,10 @@ import { client, selectSp } from '@/client'; +import { getOffchainAuthKeys } from '@/utils/offchainAuth'; import { useState } from 'react'; +import { useAccount } from 'wagmi'; export const ObjectInfo = () => { + const { address, connector } = useAccount(); const [bucketName, setBucketName] = useState(''); const [objectName, setObjectName] = useState(''); @@ -23,13 +26,44 @@ export const ObjectInfo = () => { console.log(objInfo); }} > - get obj info + get object info (headObject) + + +
+ +
- get object by bucket name + get objects list by bucket name
+
diff --git a/examples/nextjs/src/components/object/info/index.tsx b/examples/nextjs/src/components/object/info/index.tsx index 6d3ead4a..2e8efbc7 100644 --- a/examples/nextjs/src/components/object/info/index.tsx +++ b/examples/nextjs/src/components/object/info/index.tsx @@ -29,6 +29,20 @@ export const ObjectInfo = () => { get object info (headObject) + +
+
+ + +
+
get objects list by bucket name
diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 0659b5a1..ec475b08 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -1,4 +1,4 @@ -import { encodePath } from '@/clients/spclient/auth'; +import { encodePath, getMsgToSign, secpSign } from '@/clients/spclient/auth'; import { getGetObjectMetaInfo } from '@/clients/spclient/spApis/getObject'; import { parseGetObjectMetaResponse } from '@/clients/spclient/spApis/getObjectMeta'; import { parseListObjectsByBucketNameResponse } from '@/clients/spclient/spApis/listObjectsByBucket'; @@ -10,6 +10,7 @@ import { MsgCancelCreateObjectSDKTypeEIP712 } from '@/messages/greenfield/storag import { MsgCreateObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCreateObject'; import { MsgDeleteObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteObject'; import { MsgUpdateObjectInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateObjectInfo'; +import { signSignatureByEddsa } from '@/offchainauth'; import { GetObjectMetaRequest, GetObjectMetaResponse } from '@/types/sp-xml/GetObjectMetaResponse'; import { ListObjectsByBucketNameResponse } from '@/types/sp-xml/ListObjectsByBucketNameResponse'; import { @@ -37,8 +38,9 @@ import { MsgUpdateObjectInfo, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; +import { hexlify } from '@ethersproject/bytes'; import { Headers } from 'cross-fetch'; -import { bytesToUtf8, hexToBytes } from 'ethereum-cryptography/utils'; +import { bytesToUtf8, hexToBytes, utf8ToBytes } from 'ethereum-cryptography/utils'; import { container, delay, inject, singleton } from 'tsyringe'; import { GRNToString, @@ -56,6 +58,7 @@ import { Long, TBaseGetCreateObject, TBaseGetObject, + TBaseGetPrivewObject, TBasePutObject, TListObjects, TxResponse, @@ -97,6 +100,8 @@ export interface IObject { */ getObject(configParam: TBaseGetObject, authType: AuthType): Promise>; + getObjectPreviewUrl(configParam: TBaseGetPrivewObject, authType: AuthType): Promise; + /** * download s3 object */ @@ -427,6 +432,48 @@ export class Objectt implements IObject { } } + public async getObjectPreviewUrl(configParam: TBaseGetPrivewObject, authType: AuthType) { + const { bucketName, objectName, queryMap } = configParam; + if (!isValidBucketName(bucketName)) { + throw new Error('Error bucket name'); + } + if (!isValidObjectName(objectName)) { + throw new Error('Error object name'); + } + const endpoint = await this.sp.getSPUrlByBucket(bucketName); + + const path = '/' + encodePath(objectName); + const url = generateUrlByBucketName(endpoint, bucketName) + path; + + const queryParams = new URLSearchParams(); + for (const k in queryMap) { + queryParams.append(k, queryMap[k]); + } + queryParams.sort(); + + const queryRaw = queryParams.toString(); + + const canonicalRequest = [ + METHOD_GET, + `/${encodePath(objectName)}`, + queryRaw, + new URL(url).host, + '\n', + ].join('\n'); + + const unsignedMsg = getMsgToSign(utf8ToBytes(canonicalRequest)); + let authorization = ''; + if (authType.type === 'ECDSA') { + const sig = secpSign(unsignedMsg, authType.privateKey); + authorization = `GNFD1-ECDSA, Signature=${sig.slice(2)}`; + } else { + const sig = await signSignatureByEddsa(authType.seed, hexlify(unsignedMsg).slice(2)); + authorization = `GNFD1-EDDSA,Signature=${sig}`; + } + + return `${url}?Authorization=${encodeURIComponent(authorization)}&${queryRaw}`; + } + public async downloadFile(configParam: TBaseGetObject, authType: AuthType): Promise { try { const { objectName } = configParam; diff --git a/packages/chain-sdk/src/clients/spclient/auth.ts b/packages/chain-sdk/src/clients/spclient/auth.ts index 8de3a667..7e1118f0 100644 --- a/packages/chain-sdk/src/clients/spclient/auth.ts +++ b/packages/chain-sdk/src/clients/spclient/auth.ts @@ -142,7 +142,7 @@ const SUPPORTED_HEADERS = [ ]; // https://github.com/ethers-io/ethers.js/issues/823 -const secpSign = (digestBz: Uint8Array, privateKey: string) => { +export const secpSign = (digestBz: Uint8Array, privateKey: string) => { const signingKey = new SigningKey(privateKey); const signature = signingKey.signDigest(digestBz); let res = joinSignature(signature); diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getObject.ts b/packages/chain-sdk/src/clients/spclient/spApis/getObject.ts index 922b1c72..e789bda6 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getObject.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getObject.ts @@ -1,6 +1,7 @@ import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; import { ReqMeta } from '@/types'; import { generateUrlByBucketName } from '@/utils/s3'; +import { encodePath } from '../auth'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_object export const getGetObjectMetaInfo = async ( @@ -11,9 +12,9 @@ export const getGetObjectMetaInfo = async ( }, ) => { const { bucketName, objectName } = params; - const path = `/${objectName}`; + const path = `/${encodePath(objectName)}`; const query = ''; - const url = generateUrlByBucketName(endpoint, bucketName) + '/' + objectName; + const url = generateUrlByBucketName(endpoint, bucketName) + path; const reqMeta: Partial = { contentSHA256: EMPTY_STRING_SHA256, diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index f2188705..f573edc5 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -148,6 +148,13 @@ export type TBaseGetObject = { duration?: number; }; +export type TBaseGetPrivewObject = { + bucketName: string; + objectName: string; + duration?: number; + queryMap: Record; +}; + export type TListObjects = { bucketName: string; duration?: number; From 7924c50dbcf8b259183651d2866d878cf461e4e9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 28 Aug 2023 21:06:01 +0800 Subject: [PATCH 170/433] chore: [ci] release (alpha) (#271) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 3c63a9aa..3f84e61e 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -19,6 +19,7 @@ "eighty-parrots-tap", "eleven-numbers-cover", "fair-impalas-approve", + "fast-drinks-move", "five-mice-whisper", "flat-mugs-collect", "giant-panthers-collect", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 4b54d308..704c2ec5 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.5-alpha.20 + +### Patch Changes + +- Updated dependencies + [[`a3e6b47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e6b472329e32fe86f7dd8a770d39a371a034cc)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.20 + ## 0.0.5-alpha.19 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index b2dae833..2509776c 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.5-alpha.19", + "version": "0.0.5-alpha.20", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 9e162ef7..ef903d13 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.8-alpha.20 + +### Patch Changes + +- Updated dependencies + [[`a3e6b47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e6b472329e32fe86f7dd8a770d39a371a034cc)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.20 + ## 0.0.8-alpha.19 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index a16f866f..0e699242 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.8-alpha.19", + "version": "0.0.8-alpha.20", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 01258ac0..628d6e8e 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.4-alpha.20 + +### Patch Changes + +- [#270](https://github.com/bnb-chain/greenfield-js-sdk/pull/270) + [`a3e6b47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e6b472329e32fe86f7dd8a770d39a371a034cc) + Thanks [@rrr523](https://github.com/rrr523)! - feat: New API getObjectPreviewUrl + ## 0.2.4-alpha.19 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index c882563b..8e54cddf 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.4-alpha.19", + "version": "0.2.4-alpha.20", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From b3683b8ce7e56a96c970964b2ade500eb95ef298 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Mon, 28 Aug 2023 23:16:04 +0800 Subject: [PATCH 171/433] fix: XML type align to go struct (#272) --- .changeset/silver-avocados-march.md | 5 + .../nextjs/src/components/deposit/index.tsx | 21 +- examples/nextjs/src/utils/offchainAuth.ts | 1 + packages/chain-sdk/package.json | 5 +- packages/chain-sdk/src/api/bucket.ts | 10 +- packages/chain-sdk/src/api/objectt.ts | 8 +- packages/chain-sdk/src/api/sp.ts | 2 +- .../clients/spclient/spApis/getBucketMeta.ts | 24 +-- .../src/clients/spclient/spApis/getNonce.ts | 12 +- .../clients/spclient/spApis/getObjectMeta.ts | 38 ++-- .../clients/spclient/spApis/getUserBuckets.ts | 48 ++--- .../spclient/spApis/listObjectsByBucket.ts | 55 +++--- .../src/clients/spclient/spApis/parseError.ts | 12 +- .../spclient/spApis/queryBucketReadQuota.ts | 13 +- .../src/clients/spclient/spClient.ts | 2 +- packages/chain-sdk/src/types/sp-xml/Common.ts | 43 ++-- .../src/types/sp-xml/GetBucketMetaResponse.ts | 4 +- .../src/types/sp-xml/GetObjectMetaResponse.ts | 4 +- .../types/sp-xml/GetUserBucketsResponse.ts | 4 +- .../sp-xml/ListObjectsByBucketNameResponse.ts | 16 +- .../src/types/sp-xml/ReadQuotaResponse.ts | 5 +- pnpm-lock.yaml | 183 +++++------------- 22 files changed, 236 insertions(+), 279 deletions(-) create mode 100644 .changeset/silver-avocados-march.md diff --git a/.changeset/silver-avocados-march.md b/.changeset/silver-avocados-march.md new file mode 100644 index 00000000..c42e0f29 --- /dev/null +++ b/.changeset/silver-avocados-march.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +fix: XML response from sp align to go struct diff --git a/examples/nextjs/src/components/deposit/index.tsx b/examples/nextjs/src/components/deposit/index.tsx index 82e1acb2..2aaee61c 100644 --- a/examples/nextjs/src/components/deposit/index.tsx +++ b/examples/nextjs/src/components/deposit/index.tsx @@ -37,21 +37,22 @@ export const Deposit = () => { const amount_with_relay_fee = relayFee + ackRelayFee + amount; console.log('amount_with_relay_fee', amount_with_relay_fee); - const estimateGas = await publicClient.estimateContractGas({ - address: TOKEN_HUB_CONTRACT_ADDRESS, - abi: TOKENHUB_ABI, - functionName: 'transferOut', - args: [address, amount], - account: address, - value: amount_with_relay_fee, - }); - console.log('estimateGas', estimateGas); + // const estimateGas = await publicClient.estimateContractGas({ + // address: TOKEN_HUB_CONTRACT_ADDRESS, + // abi: TOKENHUB_ABI, + // functionName: 'transferOut', + // args: [address, amount], + // account: address, + // value: amount_with_relay_fee, + // }); + // console.log('estimateGas', estimateGas); const gasPrice = await publicClient.getGasPrice(); console.log('gasPrice', gasPrice); - const gasFee = estimateGas * gasPrice; + // const gasFee = BigInt(5) * gasPrice; + const gasFee = 21000n; console.log('estimate gas fee: gas price * gas = ', formatEther(gasFee), 'ETH'); const txHash = await walletClient.writeContract({ diff --git a/examples/nextjs/src/utils/offchainAuth.ts b/examples/nextjs/src/utils/offchainAuth.ts index 5567b078..2401bf74 100644 --- a/examples/nextjs/src/utils/offchainAuth.ts +++ b/examples/nextjs/src/utils/offchainAuth.ts @@ -12,6 +12,7 @@ export const getOffchainAuthKeys = async (address: string, provider: any) => { const storageRes = JSON.parse(storageResStr) as IReturnOffChainAuthKeyPairAndUpload; if (storageRes.expirationTime < Date.now()) { alert('Your auth key has expired, please generate a new one'); + localStorage.removeItem(address); return; } diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 8e54cddf..efd9f6f9 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -67,13 +67,13 @@ "dayjs": "^1.11.7", "dotenv": "^16.0.3", "ethereum-cryptography": "^2.0.0", - "fast-xml-parser": "^4.2.7", "lodash.clonedeep": "^4.5.0", "lodash.mapvalues": "^4.6.0", "lodash.sortby": "^4.7.0", "long": "^5.2.1", "reflect-metadata": "^0.1.13", - "tsyringe": "^4.7.0" + "tsyringe": "^4.7.0", + "xml2js": "^0.6.2" }, "devDependencies": { "@jest/globals": "^29.5.0", @@ -82,6 +82,7 @@ "@types/lodash.mapvalues": "^4.6.7", "@types/lodash.sortby": "^4.7.7", "@types/mime": "^3.0.1", + "@types/xml2js": "^0.4.11", "jest": "^29.5.0", "mime": "^3.0.0", "rollup": "^2.79.1", diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index 7e3f1e32..a62962a7 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -342,7 +342,7 @@ export class Bucket implements IBucket { if (!result.ok) { const xmlError = await result.text(); - const { code, message } = parseError(xmlError); + const { code, message } = await parseError(xmlError); throw { code: code || -1, message: message || 'Get bucket error.', @@ -351,7 +351,7 @@ export class Bucket implements IBucket { } const xmlData = await result.text(); - const res = parseGetUserBucketsResponse(xmlData); + const res = await parseGetUserBucketsResponse(xmlData); return { code: 0, @@ -399,7 +399,7 @@ export class Bucket implements IBucket { ); const xmlData = await result.text(); - const res = parseReadQuotaResponse(xmlData); + const res = await parseReadQuotaResponse(xmlData); return { code: 0, @@ -532,7 +532,7 @@ export class Bucket implements IBucket { const { status } = result; if (!result.ok) { const xmlError = await result.text(); - const { code, message } = parseError(xmlError); + const { code, message } = await parseError(xmlError); throw { code: code || -1, message: message || 'Get migrate bucket approval error.', @@ -615,7 +615,7 @@ export class Bucket implements IBucket { }); const xml = await result.text(); - const res = parseGetBucketMetaResponse(xml); + const res = await parseGetBucketMetaResponse(xml); return { code: 0, diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index ec475b08..809f76ea 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -407,7 +407,7 @@ export class Objectt implements IObject { const { status } = result; if (!result.ok) { const xmlError = await result.text(); - const { code, message } = parseError(xmlError); + const { code, message } = await parseError(xmlError); return { code: code || -1, @@ -524,7 +524,7 @@ export class Objectt implements IObject { const { status } = result; if (!result.ok) { const xmlError = await result.text(); - const { code, message } = parseError(xmlError); + const { code, message } = await parseError(xmlError); return { code: code || -1, message: message || 'List object error.', @@ -533,7 +533,7 @@ export class Objectt implements IObject { } const xmlData = await result.text(); - const res = parseListObjectsByBucketNameResponse(xmlData); + const res = await parseListObjectsByBucketNameResponse(xmlData); return { code: 0, @@ -667,7 +667,7 @@ export class Objectt implements IObject { }); const xml = await result.text(); - const res = parseGetObjectMetaResponse(xml); + const res = await parseGetObjectMetaResponse(xml); return { code: 0, diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index 8b0a8b04..f895e7b8 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -186,7 +186,7 @@ export class Sp implements ISp { const { status } = result; if (!result.ok) { const xmlError = await result.text(); - const { code, message } = parseError(xmlError); + const { code, message } = await parseError(xmlError); throw { code: code || -1, message: message || 'Get group list error.', diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts b/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts index 09c7ed47..70a8d914 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts @@ -1,22 +1,14 @@ import { GetBucketMetaResponse } from '@/types'; -import { XMLParser } from 'fast-xml-parser'; +import xml from 'xml2js'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_bucket_meta -export const parseGetBucketMetaResponse = (data: string) => { - const xmlParser = new XMLParser({ - isArray: (tagName: string) => { - if (tagName === 'Buckets') return true; - return false; - }, - numberParseOptions: { - hex: false, - leadingZeros: true, - skipLike: undefined, - eNotation: false, - }, - }); - - const res = xmlParser.parse(data) as GetBucketMetaResponse; +export const parseGetBucketMetaResponse = async (data: string) => { + // Buckets + const res = (await xml.parseStringPromise(data, { + strict: true, + explicitRoot: true, + explicitArray: false, + })) as GetBucketMetaResponse; return res; }; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getNonce.ts b/packages/chain-sdk/src/clients/spclient/spApis/getNonce.ts index a82902fa..277db2f2 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getNonce.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getNonce.ts @@ -1,6 +1,6 @@ import { IFetchNonce, RequestNonceResponse } from '@/types'; import { fetchWithTimeout } from '@/utils/http'; -import { XMLParser } from 'fast-xml-parser'; +import xml from 'xml2js'; import { Headers } from 'cross-fetch'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_nonce @@ -20,9 +20,13 @@ export const getNonce = async ({ spEndpoint, spName, spAddress, address, domain return { code: -1, nonce: null }; } - const xmlParser = new XMLParser(); - const xmlData = await result.text(); - res = xmlParser.parse(xmlData) as RequestNonceResponse; + const data = await result.text(); + + res = (await xml.parseStringPromise(data, { + strict: true, + explicitRoot: true, + explicitArray: false, + })) as RequestNonceResponse; } catch (error) { return { code: -1, nonce: null }; } diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts b/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts index e08d6d4d..ee1fd657 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts @@ -1,20 +1,28 @@ +import { formatObjectInfo } from '@/types'; import { GetObjectMetaResponse } from '@/types/sp-xml/GetObjectMetaResponse'; -import { XMLParser } from 'fast-xml-parser'; +import xml from 'xml2js'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_object_meta -export const parseGetObjectMetaResponse = (data: string) => { - const xmlParser = new XMLParser({ - isArray: (tagName: string) => { - if (tagName === 'Objects') return true; - return false; - }, - numberParseOptions: { - hex: false, - leadingZeros: true, - skipLike: undefined, - eNotation: false, - }, - }); +export const parseGetObjectMetaResponse = async (data: string) => { + const res = (await xml.parseStringPromise(data, { + strict: true, + explicitRoot: true, + explicitArray: false, + })) as GetObjectMetaResponse; - return xmlParser.parse(data) as GetObjectMetaResponse; + const Object = res.GfSpGetObjectMetaResponse.Object || {}; + if (Object) { + Object.Removed = Boolean(Object.Removed); + Object.UpdateAt = Number(Object.UpdateAt); + Object.DeleteAt = Number(Object.DeleteAt); + + Object.ObjectInfo = formatObjectInfo(Object.ObjectInfo); + } + + res.GfSpGetObjectMetaResponse = { + ...res.GfSpGetObjectMetaResponse, + Object, + }; + + return res; }; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts b/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts index dc46f16b..bffa7fcb 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts @@ -1,34 +1,34 @@ import { GetUserBucketsResponse } from '@/types'; -import { XMLParser } from 'fast-xml-parser'; +import xml from 'xml2js'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_user_buckets -export const parseGetUserBucketsResponse = (data: string) => { - const xmlParser = new XMLParser({ - isArray: (tagName: string) => { - if (tagName === 'Buckets') return true; - return false; - }, - numberParseOptions: { - hex: false, - leadingZeros: true, - skipLike: undefined, - eNotation: false, - }, - }); +export const parseGetUserBucketsResponse = async (data: string) => { + const res = (await xml.parseStringPromise(data, { + strict: true, + explicitRoot: true, + explicitArray: false, + })) as GetUserBucketsResponse; - const res = xmlParser.parse(data) as GetUserBucketsResponse; + let Buckets = res.GfSpGetUserBucketsResponse.Buckets || []; + if (Buckets) { + if (!Array.isArray(Buckets)) { + Buckets = [Buckets]; + } - if (typeof res.GfSpGetUserBucketsResponse === 'string') { - return { - GfSpGetUserBucketsResponse: { - Buckets: [], - }, - }; + Buckets = Buckets.map((item) => { + return { + ...item, + Removed: Boolean(item.Removed), + DeleteAt: Number(item.DeleteAt), + UpdateAt: Number(item.UpdateAt), + UpdateTime: Number(item.UpdateTime), + }; + }); } - if (!res.GfSpGetUserBucketsResponse?.Buckets) { - res.GfSpGetUserBucketsResponse.Buckets = []; - } + res.GfSpGetUserBucketsResponse = { + Buckets, + }; return res; }; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts index 5c425880..4d0d84d0 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts @@ -1,31 +1,42 @@ -import { ListObjectsByBucketNameResponse } from '@/types/sp-xml/ListObjectsByBucketNameResponse'; -import { XMLParser } from 'fast-xml-parser'; +import { + formatObjectInfo, + ListObjectsByBucketNameResponse, +} from '@/types/sp-xml/ListObjectsByBucketNameResponse'; +import xml from 'xml2js'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_objects_by_bucket -export const parseListObjectsByBucketNameResponse = (data: string) => { - const arrayFields = ['Objects', 'CommonPrefixes']; - const xmlParser = new XMLParser({ - isArray: (tagName: string) => { - if (arrayFields.includes(tagName)) return true; - return false; - }, - numberParseOptions: { - hex: false, - leadingZeros: true, - skipLike: undefined, - eNotation: false, - }, - }); +export const parseListObjectsByBucketNameResponse = async (data: string) => { + const res = (await xml.parseStringPromise(data, { + strict: true, + explicitRoot: true, + explicitArray: false, + })) as ListObjectsByBucketNameResponse; - const res = xmlParser.parse(data) as ListObjectsByBucketNameResponse; + let Objects = res.GfSpListObjectsByBucketNameResponse.Objects || []; + if (Objects) { + if (!Array.isArray(Objects)) { + Objects = [Objects]; + } - if (!res.GfSpListObjectsByBucketNameResponse?.CommonPrefixes) { - res.GfSpListObjectsByBucketNameResponse.CommonPrefixes = []; + Objects = Objects.map((item) => { + return { + ...item, + Removed: Boolean(item.Removed), + UpdateAt: Number(item.UpdateAt), + DeleteAt: Number(item.DeleteAt), + ObjectInfo: formatObjectInfo(item.ObjectInfo), + }; + }); } - if (!res.GfSpListObjectsByBucketNameResponse?.Objects) { - res.GfSpListObjectsByBucketNameResponse.Objects = []; - } + const CommonPrefixes = res.GfSpListObjectsByBucketNameResponse.CommonPrefixes || []; + + res.GfSpListObjectsByBucketNameResponse = { + ...res.GfSpListObjectsByBucketNameResponse, + Objects, + CommonPrefixes, + IsTruncated: Boolean(res.GfSpListObjectsByBucketNameResponse.IsTruncated), + }; return res; }; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/parseError.ts b/packages/chain-sdk/src/clients/spclient/spApis/parseError.ts index fb81621a..a12a3398 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/parseError.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/parseError.ts @@ -1,9 +1,13 @@ import { RequestErrorResponse } from '@/types'; -import { XMLParser } from 'fast-xml-parser'; +import xml from 'xml2js'; + +export const parseError = async (data: string) => { + const res = (await xml.parseStringPromise(data, { + strict: true, + explicitRoot: true, + explicitArray: false, + })) as RequestErrorResponse; -export const parseError = (data: string) => { - const xmlParser = new XMLParser(); - const res = xmlParser.parse(data) as RequestErrorResponse; return { code: res.Error.Code, message: res.Error.Message, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts b/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts index 5cfa62f4..aea685c4 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts @@ -2,7 +2,7 @@ import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; import { ReqMeta, TBaseGetBucketReadQuota } from '@/types'; import { ReadQuotaResponse } from '@/types/sp-xml'; import { generateUrlByBucketName } from '@/utils/s3'; -import { XMLParser } from 'fast-xml-parser'; +import xml from 'xml2js'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/query_bucket_read_quota export const getQueryBucketReadQuotaMetaInfo = async ( @@ -41,7 +41,12 @@ export const getQueryBucketReadQuotaMetaInfo = async ( }; }; -export const parseReadQuotaResponse = (data: string) => { - const xmlParser = new XMLParser(); - return xmlParser.parse(data) as ReadQuotaResponse; +export const parseReadQuotaResponse = async (data: string) => { + const res = (await xml.parseStringPromise(data, { + strict: true, + explicitRoot: true, + explicitArray: false, + })) as ReadQuotaResponse; + + return res; }; diff --git a/packages/chain-sdk/src/clients/spclient/spClient.ts b/packages/chain-sdk/src/clients/spclient/spClient.ts index c13ad93c..f968fb36 100644 --- a/packages/chain-sdk/src/clients/spclient/spClient.ts +++ b/packages/chain-sdk/src/clients/spclient/spClient.ts @@ -64,7 +64,7 @@ export class SpClient implements ISpClient { if (!response.ok) { const xmlError = await response.text(); - const { code, message } = parseError(xmlError); + const { code, message } = await parseError(xmlError); throw { code: code || customError?.code, message: message || customError?.message, diff --git a/packages/chain-sdk/src/types/sp-xml/Common.ts b/packages/chain-sdk/src/types/sp-xml/Common.ts index 5960d755..b72d0fb6 100644 --- a/packages/chain-sdk/src/types/sp-xml/Common.ts +++ b/packages/chain-sdk/src/types/sp-xml/Common.ts @@ -1,19 +1,21 @@ import { + BucketStatus, + ObjectStatus, RedundancyType, SourceType, VisibilityType, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; -export interface Bucket { +export interface BucketMeta { BucketInfo: BucketInfo; - Removed: string; - DeleteAt: string; + Removed: boolean; + DeleteAt: number; DeleteReason: string; Operator: string; CreateTxHash: string; UpdateTxHash: string; - UpdateAt: string; - UpdateTime: string; + UpdateAt: number; + UpdateTime: number; } export interface BucketInfo { @@ -22,11 +24,12 @@ export interface BucketInfo { Visibility: keyof typeof VisibilityType; Id: string; SourceType: keyof typeof SourceType; - CreateAt: string; + CreateAt: number; PaymentAddress: string; - GlobalVirtualGroupFamilyId: string; - ChargedReadQuota: string; - BucketStatus: string; + PrimarySpId: number; + GlobalVirtualGroupFamilyId: number; + ChargedReadQuota: number; + BucketStatus: keyof typeof BucketStatus; } export interface StreamRecord { @@ -42,12 +45,12 @@ export interface StreamRecord { FrozenNetflowRate: string; } -export interface TObject { +export interface ObjectMeta { ObjectInfo: ObjectInfo; LockedBalance: string; - Removed: string; - UpdateAt: string; - DeleteAt: string; + Removed: boolean; + UpdateAt: number; + DeleteAt: number; DeleteReason: string; Operator: string; CreateTxHash: string; @@ -60,14 +63,14 @@ export interface ObjectInfo { Creator: string; BucketName: string; ObjectName: string; - Id: string; - LocalVirtualGroupId: string; - PayloadSize: string; - Visibility: string; + Id: number; + LocalVirtualGroupId: number; + PayloadSize: number; + Visibility: keyof typeof VisibilityType; ContentType: string; - CreateAt: string; - ObjectStatus: string; + CreateAt: number; + ObjectStatus: keyof typeof ObjectStatus; RedundancyType: keyof typeof RedundancyType; - SourceType: string; + SourceType: keyof typeof SourceType; Checksums: string[]; } diff --git a/packages/chain-sdk/src/types/sp-xml/GetBucketMetaResponse.ts b/packages/chain-sdk/src/types/sp-xml/GetBucketMetaResponse.ts index 4d39d3d6..55272bf9 100644 --- a/packages/chain-sdk/src/types/sp-xml/GetBucketMetaResponse.ts +++ b/packages/chain-sdk/src/types/sp-xml/GetBucketMetaResponse.ts @@ -1,4 +1,4 @@ -import { Bucket, StreamRecord } from './Common'; +import { BucketMeta, StreamRecord } from './Common'; export interface GetBucketMetaRequest { bucketName: string; @@ -10,6 +10,6 @@ export interface GetBucketMetaResponse { } export interface GfSPGetBucketMetaResponse { - Bucket: Bucket; + Bucket: BucketMeta; StreamRecord: StreamRecord; } diff --git a/packages/chain-sdk/src/types/sp-xml/GetObjectMetaResponse.ts b/packages/chain-sdk/src/types/sp-xml/GetObjectMetaResponse.ts index e2aeb6d6..5c6d215d 100644 --- a/packages/chain-sdk/src/types/sp-xml/GetObjectMetaResponse.ts +++ b/packages/chain-sdk/src/types/sp-xml/GetObjectMetaResponse.ts @@ -1,4 +1,4 @@ -import { TObject } from './Common'; +import { ObjectMeta } from './Common'; export interface GetObjectMetaRequest { bucketName: string; @@ -11,5 +11,5 @@ export interface GetObjectMetaResponse { } export interface GfSPGetObjectMetaResponse { - Object: TObject; + Object: ObjectMeta; } diff --git a/packages/chain-sdk/src/types/sp-xml/GetUserBucketsResponse.ts b/packages/chain-sdk/src/types/sp-xml/GetUserBucketsResponse.ts index ac191234..45c09a1e 100644 --- a/packages/chain-sdk/src/types/sp-xml/GetUserBucketsResponse.ts +++ b/packages/chain-sdk/src/types/sp-xml/GetUserBucketsResponse.ts @@ -1,9 +1,9 @@ -import { Bucket } from './Common'; +import { BucketMeta } from './Common'; export interface GetUserBucketsResponse { GfSpGetUserBucketsResponse: GfSPGetUserBucketsResponse; } export interface GfSPGetUserBucketsResponse { - Buckets: Bucket[]; + Buckets: BucketMeta[]; } diff --git a/packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts index 9f32b853..c79f08ea 100644 --- a/packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts +++ b/packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts @@ -1,14 +1,14 @@ -import { TObject } from './Common'; +import { ObjectInfo, ObjectMeta } from './Common'; export interface ListObjectsByBucketNameResponse { GfSpListObjectsByBucketNameResponse: GfSPListObjectsByBucketNameResponse; } export interface GfSPListObjectsByBucketNameResponse { - Objects: TObject[]; + Objects: ObjectMeta[]; KeyCount: string; MaxKeys: string; - IsTruncated: string; + IsTruncated: boolean; NextContinuationToken: string; Name: string; Prefix: string; @@ -16,3 +16,13 @@ export interface GfSPListObjectsByBucketNameResponse { CommonPrefixes: string[]; ContinuationToken: string; } + +export function formatObjectInfo(o: ObjectInfo) { + return { + ...o, + Id: Number(o.Id), + LocalVirtualGroupId: Number(o.LocalVirtualGroupId), + PayloadSize: Number(o.PayloadSize), + CreateAt: Number(o.CreateAt), + }; +} diff --git a/packages/chain-sdk/src/types/sp-xml/ReadQuotaResponse.ts b/packages/chain-sdk/src/types/sp-xml/ReadQuotaResponse.ts index 23a51277..5498c434 100644 --- a/packages/chain-sdk/src/types/sp-xml/ReadQuotaResponse.ts +++ b/packages/chain-sdk/src/types/sp-xml/ReadQuotaResponse.ts @@ -1,9 +1,10 @@ export interface ReadQuotaResponse { GetReadQuotaResult: { - BucketID: number; BucketName: string; - ReadConsumedSize: number; + BucketID: string; ReadQuotaSize: number; SPFreeReadQuotaSize: number; + ReadConsumedSize: number; + FreeConsumedSize: number; }; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 616643b4..66a05a5b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -238,9 +238,6 @@ importers: ethereum-cryptography: specifier: ^2.0.0 version: 2.0.0 - fast-xml-parser: - specifier: ^4.2.7 - version: 4.2.7 lodash.clonedeep: specifier: ^4.5.0 version: 4.5.0 @@ -259,6 +256,9 @@ importers: tsyringe: specifier: ^4.7.0 version: 4.7.0 + xml2js: + specifier: ^0.6.2 + version: 0.6.2 devDependencies: '@jest/globals': specifier: ^29.5.0 @@ -278,6 +278,9 @@ importers: '@types/mime': specifier: ^3.0.1 version: 3.0.1 + '@types/xml2js': + specifier: ^0.4.11 + version: 0.4.11 jest: specifier: ^29.5.0 version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) @@ -301,7 +304,7 @@ importers: version: 7.0.2(rollup@2.79.1) ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.22.9)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) @@ -391,11 +394,6 @@ packages: resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} engines: {node: '>=6.9.0'} - /@babel/compat-data@7.22.9: - resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/core@7.22.5: resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} engines: {node: '>=6.9.0'} @@ -411,36 +409,13 @@ packages: '@babel/traverse': 7.22.5 '@babel/types': 7.22.5 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 transitivePeerDependencies: - supports-color - /@babel/core@7.22.9: - resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.9 - '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) - '@babel/helpers': 7.22.6 - '@babel/parser': 7.22.7 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.8 - '@babel/types': 7.22.5 - convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/eslint-parser@7.21.8(@babel/core@7.22.5)(eslint@8.42.0): resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} @@ -474,16 +449,6 @@ packages: '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 - /@babel/generator@7.22.9: - resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - jsesc: 2.5.2 - dev: true - /@babel/helper-annotate-as-pure@7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} @@ -518,20 +483,6 @@ packages: lru-cache: 5.1.1 semver: 6.3.0 - /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.9 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.9 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.22.5): resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} engines: {node: '>=6.9.0'} @@ -632,20 +583,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9): - resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.9 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.5 - dev: true - /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} @@ -711,13 +648,6 @@ packages: dependencies: '@babel/types': 7.22.5 - /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - dev: true - /@babel/helper-string-parser@7.21.5: resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} engines: {node: '>=6.9.0'} @@ -762,17 +692,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helpers@7.22.6: - resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.8 - '@babel/types': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/highlight@7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} @@ -797,14 +716,6 @@ packages: dependencies: '@babel/types': 7.22.5 - /@babel/parser@7.22.7: - resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.22.5 - dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} @@ -1997,7 +1908,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.5 '@babel/parser': 7.22.5 '@babel/types': 7.22.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2015,28 +1926,10 @@ packages: '@babel/helper-split-export-declaration': 7.22.5 '@babel/parser': 7.22.5 '@babel/types': 7.22.5 - debug: 4.3.4(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - /@babel/traverse@7.22.8: - resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.9 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.7 - '@babel/types': 7.22.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true /@babel/types@7.21.5: resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} @@ -4696,6 +4589,12 @@ packages: '@types/node': 18.16.18 dev: false + /@types/xml2js@0.4.11: + resolution: {integrity: sha512-JdigeAKmCyoJUiQljjr7tQG3if9NkqGUgwEUqBvV0N7LM4HyQk7UXCnusRa1lnvXAEYJ8mw8GtZWioagNztOwA==} + dependencies: + '@types/node': 18.16.18 + dev: true + /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true @@ -6937,6 +6836,17 @@ packages: dependencies: ms: 2.1.3 + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -8188,13 +8098,6 @@ packages: resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} dev: false - /fast-xml-parser@4.2.7: - resolution: {integrity: sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig==} - hasBin: true - dependencies: - strnum: 1.0.5 - dev: false - /fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -9106,7 +9009,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -11456,6 +11359,10 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true + /sax@1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + dev: false + /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: @@ -11509,11 +11416,6 @@ packages: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - dev: true - /semver@7.5.0: resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} engines: {node: '>=10'} @@ -11940,10 +11842,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - /strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - dev: false - /styled-jsx@5.1.1(@babel/core@7.22.5)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} @@ -12137,7 +12035,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-jest@29.1.0(@babel/core@7.22.9)(jest@29.5.0)(typescript@4.9.5): + /ts-jest@29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -12158,7 +12056,7 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.22.5 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) @@ -12822,6 +12720,19 @@ packages: utf-8-validate: 5.0.10 dev: false + /xml2js@0.6.2: + resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} + engines: {node: '>=4.0.0'} + dependencies: + sax: 1.2.4 + xmlbuilder: 11.0.1 + dev: false + + /xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + dev: false + /xstream@11.14.0: resolution: {integrity: sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==} dependencies: From 25ccbb6612b86d8037cec4b9ca3a9b141e10cc66 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Mon, 28 Aug 2023 23:17:37 +0800 Subject: [PATCH 172/433] feat: Optional endpoint param (#273) --- .changeset/poor-steaks-warn.md | 5 ++++ packages/chain-sdk/src/api/bucket.ts | 16 +++++++---- packages/chain-sdk/src/api/objectt.ts | 36 ++++++++++++++++--------- packages/chain-sdk/src/types/storage.ts | 6 ++++- 4 files changed, 45 insertions(+), 18 deletions(-) create mode 100644 .changeset/poor-steaks-warn.md diff --git a/.changeset/poor-steaks-warn.md b/.changeset/poor-steaks-warn.md new file mode 100644 index 00000000..ad2ab564 --- /dev/null +++ b/.changeset/poor-steaks-warn.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Sp API add optional endpoint param diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index a62962a7..640d86ee 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -377,7 +377,10 @@ export class Bucket implements IBucket { if (!isValidBucketName(bucketName)) { throw new Error('Error bucket name'); } - const endpoint = await this.sp.getSPUrlByBucket(bucketName); + let endpoint = params.endpoint; + if (!endpoint) { + endpoint = await this.sp.getSPUrlByBucket(bucketName); + } const { url, optionsWithOutHeaders, reqMeta } = await getQueryBucketReadQuotaMetaInfo( endpoint, @@ -461,13 +464,16 @@ export class Bucket implements IBucket { } public async getMigrateBucketApproval( - configParams: Omit, + params: Omit & { endpoint?: string }, authType: AuthType, ) { - const { bucketName, operator, dstPrimarySpId } = configParams; + const { bucketName, operator, dstPrimarySpId } = params; try { - const endpoint = await this.sp.getSPUrlByBucket(bucketName); + let endpoint = params.endpoint; + if (!endpoint) { + endpoint = await this.sp.getSPUrlByBucket(bucketName); + } const path = '/greenfield/admin/v1/get-approval'; const query = 'action=MigrateBucket'; const url = `${endpoint}${path}?${query}`; @@ -559,7 +565,7 @@ export class Bucket implements IBucket { } public async migrateBucket( - configParams: Omit, + configParams: Omit & { endpoint?: string }, authType: AuthType, ) { const { signedMsg } = await this.getMigrateBucketApproval(configParams, authType); diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 809f76ea..420f9c7e 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -159,7 +159,7 @@ export class Objectt implements IObject { private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); private spClient = container.resolve(SpClient); - public async getCreateObjectApproval(configParam: TBaseGetCreateObject, authType: AuthType) { + public async getCreateObjectApproval(params: TBaseGetCreateObject, authType: AuthType) { const { bucketName, creator, @@ -170,7 +170,7 @@ export class Objectt implements IObject { redundancyType = 'REDUNDANCY_EC_TYPE', contentLength, expectCheckSums, - } = configParam; + } = params; try { if (!isValidBucketName(bucketName)) { @@ -183,7 +183,10 @@ export class Objectt implements IObject { throw new Error('empty creator address'); } - const endpoint = await this.sp.getSPUrlByBucket(bucketName); + let endpoint = params.endpoint; + if (!endpoint) { + endpoint = await this.sp.getSPUrlByBucket(bucketName); + } const { reqMeta, optionsWithOutHeaders, url } = await getObjectApprovalMetaInfo(endpoint, { bucket_name: bucketName, content_type: fileType, @@ -281,10 +284,10 @@ export class Objectt implements IObject { } public async uploadObject( - configParam: TBasePutObject, + params: TBasePutObject, authType: AuthType, ): Promise> { - const { bucketName, objectName, txnHash, body, duration = 30000 } = configParam; + const { bucketName, objectName, txnHash, body, duration = 30000 } = params; if (!isValidBucketName(bucketName)) { throw new Error('Error bucket name'); } @@ -295,7 +298,10 @@ export class Objectt implements IObject { throw new Error('Transaction hash is empty, please check.'); } - const endpoint = await this.sp.getSPUrlByBucket(bucketName); + let endpoint = params.endpoint; + if (!endpoint) { + endpoint = await this.sp.getSPUrlByBucket(bucketName); + } const { reqMeta, optionsWithOutHeaders, url } = await getPutObjectMetaInfo(endpoint, { bucketName, objectName, @@ -378,16 +384,19 @@ export class Objectt implements IObject { return await rpc.HeadObjectNFT(request); } - public async getObject(configParam: TBaseGetObject, authType: AuthType) { + public async getObject(params: TBaseGetObject, authType: AuthType) { try { - const { bucketName, objectName, duration = 30000 } = configParam; + const { bucketName, objectName, duration = 30000 } = params; if (!isValidBucketName(bucketName)) { throw new Error('Error bucket name'); } if (!isValidObjectName(objectName)) { throw new Error('Error object name'); } - const endpoint = await this.sp.getSPUrlByBucket(bucketName); + let endpoint = params.endpoint; + if (!endpoint) { + endpoint = await this.sp.getSPUrlByBucket(bucketName); + } const { reqMeta, optionsWithOutHeaders, url } = await getGetObjectMetaInfo(endpoint, { bucketName, @@ -432,15 +441,18 @@ export class Objectt implements IObject { } } - public async getObjectPreviewUrl(configParam: TBaseGetPrivewObject, authType: AuthType) { - const { bucketName, objectName, queryMap } = configParam; + public async getObjectPreviewUrl(params: TBaseGetPrivewObject, authType: AuthType) { + const { bucketName, objectName, queryMap } = params; if (!isValidBucketName(bucketName)) { throw new Error('Error bucket name'); } if (!isValidObjectName(objectName)) { throw new Error('Error object name'); } - const endpoint = await this.sp.getSPUrlByBucket(bucketName); + let endpoint = params.endpoint; + if (!endpoint) { + endpoint = await this.sp.getSPUrlByBucket(bucketName); + } const path = '/' + encodePath(objectName); const url = generateUrlByBucketName(endpoint, bucketName) + path; diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index f573edc5..c9e02c0e 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -78,7 +78,7 @@ export type BucketProps = { export type TBaseGetBucketReadQuota = { bucketName: string; - // endpoint: string; + endpoint?: string; duration?: number; year?: number; month?: number; @@ -100,6 +100,7 @@ export type TBaseGetCreateObject = { duration?: number; contentLength: number; expectCheckSums: string[]; + endpoint?: string; }; export interface ICreateObjectMsgType { @@ -126,6 +127,7 @@ export type TBasePutObject = { txnHash: string; body: File; duration?: number; + endpoint?: string; }; export type TPutObjectByAuthTypeV1 = TBasePutObject & { @@ -146,6 +148,7 @@ export type TBaseGetObject = { bucketName: string; objectName: string; duration?: number; + endpoint?: string; }; export type TBaseGetPrivewObject = { @@ -153,6 +156,7 @@ export type TBaseGetPrivewObject = { objectName: string; duration?: number; queryMap: Record; + endpoint?: string; }; export type TListObjects = { From 8b6b2c675aaf506664b8ba0fe416df6c6e434890 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 28 Aug 2023 23:20:35 +0800 Subject: [PATCH 173/433] chore: [ci] release (alpha) (#274) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 2 ++ examples/nextjs/CHANGELOG.md | 9 +++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 9 +++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 12 ++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 35 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 3f84e61e..4b2a7c36 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -40,10 +40,12 @@ "ninety-jokes-study", "odd-hotels-glow", "plenty-squids-walk", + "poor-steaks-warn", "proud-dragons-repair", "quiet-numbers-camp", "rich-carrots-cheer", "seven-toys-fry", + "silver-avocados-march", "soft-phones-give", "spicy-lizards-think", "strong-wombats-help", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 704c2ec5..87378fef 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/wallet +## 0.0.5-alpha.21 + +### Patch Changes + +- Updated dependencies + [[`25ccbb6`](https://github.com/bnb-chain/greenfield-js-sdk/commit/25ccbb6612b86d8037cec4b9ca3a9b141e10cc66), + [`b3683b8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b3683b8ce7e56a96c970964b2ade500eb95ef298)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.21 + ## 0.0.5-alpha.20 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 2509776c..5b6d7ddb 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.5-alpha.20", + "version": "0.0.5-alpha.21", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index ef903d13..6b656e45 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/nodejs +## 0.0.8-alpha.21 + +### Patch Changes + +- Updated dependencies + [[`25ccbb6`](https://github.com/bnb-chain/greenfield-js-sdk/commit/25ccbb6612b86d8037cec4b9ca3a9b141e10cc66), + [`b3683b8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b3683b8ce7e56a96c970964b2ade500eb95ef298)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.21 + ## 0.0.8-alpha.20 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 0e699242..e50271fa 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.8-alpha.20", + "version": "0.0.8-alpha.21", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 628d6e8e..fb2a4b37 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.4-alpha.21 + +### Patch Changes + +- [#273](https://github.com/bnb-chain/greenfield-js-sdk/pull/273) + [`25ccbb6`](https://github.com/bnb-chain/greenfield-js-sdk/commit/25ccbb6612b86d8037cec4b9ca3a9b141e10cc66) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Sp API add optional endpoint param + +- [#272](https://github.com/bnb-chain/greenfield-js-sdk/pull/272) + [`b3683b8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b3683b8ce7e56a96c970964b2ade500eb95ef298) + Thanks [@rrr523](https://github.com/rrr523)! - fix: XML response from sp align to go struct + ## 0.2.4-alpha.20 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index efd9f6f9..924f5c0f 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.4-alpha.20", + "version": "0.2.4-alpha.21", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 55f8851a659a178c1ab37473f0c76f9a374a0368 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 29 Aug 2023 13:39:30 +0800 Subject: [PATCH 174/433] fix: XML parse boolean (#275) --- .changeset/gorgeous-ligers-give.md | 5 +++++ .../src/clients/spclient/spApis/getObjectMeta.ts | 5 +++-- .../src/clients/spclient/spApis/getUserBuckets.ts | 4 +++- .../clients/spclient/spApis/listObjectsByBucket.ts | 12 ++++++------ packages/chain-sdk/src/types/sp-xml/Common.ts | 14 ++++++++++++++ .../sp-xml/ListObjectsByBucketNameResponse.ts | 10 ---------- 6 files changed, 31 insertions(+), 19 deletions(-) create mode 100644 .changeset/gorgeous-ligers-give.md diff --git a/.changeset/gorgeous-ligers-give.md b/.changeset/gorgeous-ligers-give.md new file mode 100644 index 00000000..215c5692 --- /dev/null +++ b/.changeset/gorgeous-ligers-give.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +fix: XML boolean parse diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts b/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts index ee1fd657..86d22157 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts @@ -1,4 +1,4 @@ -import { formatObjectInfo } from '@/types'; +import { convertStrToBool, formatObjectInfo } from '@/types/sp-xml/Common'; import { GetObjectMetaResponse } from '@/types/sp-xml/GetObjectMetaResponse'; import xml from 'xml2js'; @@ -12,7 +12,8 @@ export const parseGetObjectMetaResponse = async (data: string) => { const Object = res.GfSpGetObjectMetaResponse.Object || {}; if (Object) { - Object.Removed = Boolean(Object.Removed); + // @ts-ignore + Object.Removed = convertStrToBool(Object.Removed); Object.UpdateAt = Number(Object.UpdateAt); Object.DeleteAt = Number(Object.DeleteAt); diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts b/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts index bffa7fcb..32e43851 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts @@ -1,4 +1,5 @@ import { GetUserBucketsResponse } from '@/types'; +import { convertStrToBool } from '@/types/sp-xml/Common'; import xml from 'xml2js'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_user_buckets @@ -18,7 +19,8 @@ export const parseGetUserBucketsResponse = async (data: string) => { Buckets = Buckets.map((item) => { return { ...item, - Removed: Boolean(item.Removed), + // @ts-ignore + Removed: convertStrToBool(item.Removed), DeleteAt: Number(item.DeleteAt), UpdateAt: Number(item.UpdateAt), UpdateTime: Number(item.UpdateTime), diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts index 4d0d84d0..c627b1f6 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts @@ -1,7 +1,5 @@ -import { - formatObjectInfo, - ListObjectsByBucketNameResponse, -} from '@/types/sp-xml/ListObjectsByBucketNameResponse'; +import { convertStrToBool, formatObjectInfo } from '@/types/sp-xml/Common'; +import { ListObjectsByBucketNameResponse } from '@/types/sp-xml/ListObjectsByBucketNameResponse'; import xml from 'xml2js'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_objects_by_bucket @@ -21,7 +19,8 @@ export const parseListObjectsByBucketNameResponse = async (data: string) => { Objects = Objects.map((item) => { return { ...item, - Removed: Boolean(item.Removed), + // @ts-ignore + Removed: convertStrToBool(item.Removed), UpdateAt: Number(item.UpdateAt), DeleteAt: Number(item.DeleteAt), ObjectInfo: formatObjectInfo(item.ObjectInfo), @@ -35,7 +34,8 @@ export const parseListObjectsByBucketNameResponse = async (data: string) => { ...res.GfSpListObjectsByBucketNameResponse, Objects, CommonPrefixes, - IsTruncated: Boolean(res.GfSpListObjectsByBucketNameResponse.IsTruncated), + // @ts-ignore + IsTruncated: convertStrToBool(res.GfSpListObjectsByBucketNameResponse.IsTruncated), }; return res; diff --git a/packages/chain-sdk/src/types/sp-xml/Common.ts b/packages/chain-sdk/src/types/sp-xml/Common.ts index b72d0fb6..a621b17a 100644 --- a/packages/chain-sdk/src/types/sp-xml/Common.ts +++ b/packages/chain-sdk/src/types/sp-xml/Common.ts @@ -74,3 +74,17 @@ export interface ObjectInfo { SourceType: keyof typeof SourceType; Checksums: string[]; } + +export function formatObjectInfo(o: ObjectInfo) { + return { + ...o, + Id: Number(o.Id), + LocalVirtualGroupId: Number(o.LocalVirtualGroupId), + PayloadSize: Number(o.PayloadSize), + CreateAt: Number(o.CreateAt), + }; +} + +export function convertStrToBool(str: string) { + return String(str).toLowerCase() === 'true'; +} diff --git a/packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts index c79f08ea..d5f73875 100644 --- a/packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts +++ b/packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts @@ -16,13 +16,3 @@ export interface GfSPListObjectsByBucketNameResponse { CommonPrefixes: string[]; ContinuationToken: string; } - -export function formatObjectInfo(o: ObjectInfo) { - return { - ...o, - Id: Number(o.Id), - LocalVirtualGroupId: Number(o.LocalVirtualGroupId), - PayloadSize: Number(o.PayloadSize), - CreateAt: Number(o.CreateAt), - }; -} From 84e181188d47a63ed0474c39821b57ac5453b8ec Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 13:40:50 +0800 Subject: [PATCH 175/433] chore: [ci] release (alpha) (#276) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 4b2a7c36..30e1acc7 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -25,6 +25,7 @@ "giant-panthers-collect", "gold-bugs-occur", "gold-singers-grab", + "gorgeous-ligers-give", "gorgeous-penguins-invite", "grumpy-tables-drop", "honest-tables-lick", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 87378fef..4a9662e1 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.5-alpha.22 + +### Patch Changes + +- Updated dependencies + [[`55f8851`](https://github.com/bnb-chain/greenfield-js-sdk/commit/55f8851a659a178c1ab37473f0c76f9a374a0368)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.22 + ## 0.0.5-alpha.21 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 5b6d7ddb..e4541e09 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.5-alpha.21", + "version": "0.0.5-alpha.22", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 6b656e45..ac99db75 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.8-alpha.22 + +### Patch Changes + +- Updated dependencies + [[`55f8851`](https://github.com/bnb-chain/greenfield-js-sdk/commit/55f8851a659a178c1ab37473f0c76f9a374a0368)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.22 + ## 0.0.8-alpha.21 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index e50271fa..ee2ebbae 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.8-alpha.21", + "version": "0.0.8-alpha.22", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index fb2a4b37..04560ff0 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.4-alpha.22 + +### Patch Changes + +- [#275](https://github.com/bnb-chain/greenfield-js-sdk/pull/275) + [`55f8851`](https://github.com/bnb-chain/greenfield-js-sdk/commit/55f8851a659a178c1ab37473f0c76f9a374a0368) + Thanks [@rrr523](https://github.com/rrr523)! - fix: XML boolean parse + ## 0.2.4-alpha.21 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 924f5c0f..c9662958 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.4-alpha.21", + "version": "0.2.4-alpha.22", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From ff112b2403b3e9826acb120cf42203996bf97872 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 29 Aug 2023 14:45:24 +0800 Subject: [PATCH 176/433] fix: Common Prefix parse as array (#277) --- .changeset/late-mice-count.md | 5 +++++ .../src/clients/spclient/spApis/listObjectsByBucket.ts | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .changeset/late-mice-count.md diff --git a/.changeset/late-mice-count.md b/.changeset/late-mice-count.md new file mode 100644 index 00000000..cce6dd7a --- /dev/null +++ b/.changeset/late-mice-count.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +fix: Common Prefix XML parse as array diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts index c627b1f6..70182b64 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts @@ -28,7 +28,12 @@ export const parseListObjectsByBucketNameResponse = async (data: string) => { }); } - const CommonPrefixes = res.GfSpListObjectsByBucketNameResponse.CommonPrefixes || []; + let CommonPrefixes = res.GfSpListObjectsByBucketNameResponse.CommonPrefixes || []; + if (CommonPrefixes) { + if (!Array.isArray(CommonPrefixes)) { + CommonPrefixes = [CommonPrefixes]; + } + } res.GfSpListObjectsByBucketNameResponse = { ...res.GfSpListObjectsByBucketNameResponse, From f744807015a7db2a2a37ff78798bac94114becc3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 14:49:06 +0800 Subject: [PATCH 177/433] chore: [ci] release (alpha) (#278) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 30e1acc7..e854cd65 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -31,6 +31,7 @@ "honest-tables-lick", "itchy-candles-fold", "large-jokes-fly", + "late-mice-count", "lazy-needles-shave", "long-suits-share", "many-fans-decide", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 4a9662e1..be0ebd90 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.5-alpha.23 + +### Patch Changes + +- Updated dependencies + [[`ff112b2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ff112b2403b3e9826acb120cf42203996bf97872)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.23 + ## 0.0.5-alpha.22 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index e4541e09..a190ba9c 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.5-alpha.22", + "version": "0.0.5-alpha.23", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index ac99db75..ab04cd10 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.8-alpha.23 + +### Patch Changes + +- Updated dependencies + [[`ff112b2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ff112b2403b3e9826acb120cf42203996bf97872)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.23 + ## 0.0.8-alpha.22 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index ee2ebbae..9b2bca01 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.8-alpha.22", + "version": "0.0.8-alpha.23", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 04560ff0..8eb58874 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.4-alpha.23 + +### Patch Changes + +- [#277](https://github.com/bnb-chain/greenfield-js-sdk/pull/277) + [`ff112b2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ff112b2403b3e9826acb120cf42203996bf97872) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Common Prefix XML parse as array + ## 0.2.4-alpha.22 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index c9662958..31ccae74 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.4-alpha.22", + "version": "0.2.4-alpha.23", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 4929b1260c7a738cc7118b5f43445976791ff9d5 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 29 Aug 2023 15:57:19 +0800 Subject: [PATCH 178/433] test: Parse XML test case (#279) --- .../clients/spclient/spApis/getUserBuckets.ts | 9 + packages/chain-sdk/src/tests/parsexml.spec.ts | 465 ++++++++++++++++++ packages/chain-sdk/src/types/sp-xml/Common.ts | 2 +- 3 files changed, 475 insertions(+), 1 deletion(-) create mode 100644 packages/chain-sdk/src/tests/parsexml.spec.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts b/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts index 32e43851..0dd3abe4 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts @@ -17,8 +17,17 @@ export const parseGetUserBucketsResponse = async (data: string) => { } Buckets = Buckets.map((item) => { + const BucketInfo = { + ...item.BucketInfo, + CreateAt: Number(item.BucketInfo.CreateAt), + // PrimarySpId: Number(item.BucketInfo.PrimarySpId), + GlobalVirtualGroupFamilyId: Number(item.BucketInfo.GlobalVirtualGroupFamilyId), + ChargedReadQuota: Number(item.BucketInfo.ChargedReadQuota), + }; + return { ...item, + BucketInfo, // @ts-ignore Removed: convertStrToBool(item.Removed), DeleteAt: Number(item.DeleteAt), diff --git a/packages/chain-sdk/src/tests/parsexml.spec.ts b/packages/chain-sdk/src/tests/parsexml.spec.ts new file mode 100644 index 00000000..a5e1e4c3 --- /dev/null +++ b/packages/chain-sdk/src/tests/parsexml.spec.ts @@ -0,0 +1,465 @@ +import { expect } from 'chai'; +import { parseListObjectsByBucketNameResponse } from '../clients/spclient/spApis/listObjectsByBucket'; +import { parseGetUserBucketsResponse } from '../clients/spclient/spApis/getUserBuckets'; + +describe('parseListObjectsByBucketNameResponse', () => { + test('parse CommonPrefixes contains 2 element at least', async () => { + const data = ` + + xxx + yyy + 36 + 50 + false + + foo + + + + + `; + + const res = await parseListObjectsByBucketNameResponse(data); + + expect(res.GfSpListObjectsByBucketNameResponse).to.have.deep.property('CommonPrefixes', [ + 'xxx', + 'yyy', + ]); + }); + + test('parse CommonPrefixes contains 1 element', async () => { + const data = ` + + xxx + 36 + 50 + false + + foo + + + + + `; + + const res = await parseListObjectsByBucketNameResponse(data); + + expect(res.GfSpListObjectsByBucketNameResponse).to.have.deep.property('CommonPrefixes', [ + 'xxx', + ]); + }); + + test('parse empty CommonPrefixes', async () => { + const data = ` + + 36 + 50 + false + + foo + + + + + `; + + const res = await parseListObjectsByBucketNameResponse(data); + + expect(res.GfSpListObjectsByBucketNameResponse).to.have.deep.property('CommonPrefixes', []); + }); + + test('parse empty Objects', async () => { + const data = ` + + 36 + 50 + false + + foo + + + + + `; + + const res = await parseListObjectsByBucketNameResponse(data); + + expect(res.GfSpListObjectsByBucketNameResponse).to.have.deep.property('Objects', []); + }); + + test('parse Objects contains 1 element', async () => { + const data = ` + + + + 0x1C893441AB6c1A75E01887087ea508bE8e07AAae + 0x1C893441AB6c1A75E01887087ea508bE8e07AAae + foo + obk + 739112 + 1 + 205 + 1 + application/x-yaml + 1692971564 + 1 + 0 + 0 + a7554caa696d4db8c8ea4500ad2eac6244bca79e3c3193db8cc699a7e89cf341 + b054fd20d637bfa706182288d687f2c0f0ef5afaa4114170bc18699b268e9c28 + + 0x0000000000000000000000000000000000000000000000000000000000000000 + false + 232480 + 0 + + 0x8b97D152149309C15B1C339F547a9aca9Bf629D2 + 0x42d854103bc83359b86b55b8a0452895865c2de1ac51f26d551fca0e2a587214 + 0x704ba83349018ddcdd0774fb4a01e84eda3d32d8577d958cfa272fbcc2892f75 + 0x704ba83349018ddcdd0774fb4a01e84eda3d32d8577d958cfa272fbcc2892f75 + + 36 + 50 + false + + foo + + + + + `; + + const res = await parseListObjectsByBucketNameResponse(data); + + expect(res.GfSpListObjectsByBucketNameResponse).to.have.deep.property('Objects', [ + { + ObjectInfo: { + Owner: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + Creator: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + BucketName: 'foo', + ObjectName: 'obk', + Id: 739112, + LocalVirtualGroupId: 1, + PayloadSize: 205, + Visibility: '1', + ContentType: 'application/x-yaml', + CreateAt: 1692971564, + ObjectStatus: '1', + RedundancyType: '0', + SourceType: '0', + Checksums: [ + 'a7554caa696d4db8c8ea4500ad2eac6244bca79e3c3193db8cc699a7e89cf341', + 'b054fd20d637bfa706182288d687f2c0f0ef5afaa4114170bc18699b268e9c28', + ], + }, + LockedBalance: '0x0000000000000000000000000000000000000000000000000000000000000000', + Removed: false, + UpdateAt: 232480, + DeleteAt: 0, + DeleteReason: '', + Operator: '0x8b97D152149309C15B1C339F547a9aca9Bf629D2', + CreateTxHash: '0x42d854103bc83359b86b55b8a0452895865c2de1ac51f26d551fca0e2a587214', + UpdateTxHash: '0x704ba83349018ddcdd0774fb4a01e84eda3d32d8577d958cfa272fbcc2892f75', + SealTxHash: '0x704ba83349018ddcdd0774fb4a01e84eda3d32d8577d958cfa272fbcc2892f75', + }, + ]); + }); + + test('parse Objects contains 2 element at least', async () => { + const data = ` + + + + 0x1C893441AB6c1A75E01887087ea508bE8e07AAae + 0x1C893441AB6c1A75E01887087ea508bE8e07AAae + foo + obk + 739112 + 1 + 205 + 1 + application/x-yaml + 1692971564 + 1 + 0 + 0 + a7554caa696d4db8c8ea4500ad2eac6244bca79e3c3193db8cc699a7e89cf341 + b054fd20d637bfa706182288d687f2c0f0ef5afaa4114170bc18699b268e9c28 + + 0x0000000000000000000000000000000000000000000000000000000000000000 + false + 232480 + 0 + + 0x8b97D152149309C15B1C339F547a9aca9Bf629D2 + 0x42d854103bc83359b86b55b8a0452895865c2de1ac51f26d551fca0e2a587214 + 0x704ba83349018ddcdd0774fb4a01e84eda3d32d8577d958cfa272fbcc2892f75 + 0x704ba83349018ddcdd0774fb4a01e84eda3d32d8577d958cfa272fbcc2892f75 + + + + 0x1C893441AB6c1A75E01887087ea508bE8e07AAae + 0x1C893441AB6c1A75E01887087ea508bE8e07AAae + foo + obk + 739112 + 1 + 205 + 1 + application/x-yaml + 1692971564 + 1 + 0 + 0 + a7554caa696d4db8c8ea4500ad2eac6244bca79e3c3193db8cc699a7e89cf341 + b054fd20d637bfa706182288d687f2c0f0ef5afaa4114170bc18699b268e9c28 + + 0x0000000000000000000000000000000000000000000000000000000000000000 + false + 232480 + 0 + + 0x8b97D152149309C15B1C339F547a9aca9Bf629D2 + 0x42d854103bc83359b86b55b8a0452895865c2de1ac51f26d551fca0e2a587214 + 0x704ba83349018ddcdd0774fb4a01e84eda3d32d8577d958cfa272fbcc2892f75 + 0x704ba83349018ddcdd0774fb4a01e84eda3d32d8577d958cfa272fbcc2892f75 + + 36 + 50 + false + + foo + + + + + `; + + const res = await parseListObjectsByBucketNameResponse(data); + + expect(res.GfSpListObjectsByBucketNameResponse).to.have.deep.property('Objects', [ + { + ObjectInfo: { + Owner: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + Creator: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + BucketName: 'foo', + ObjectName: 'obk', + Id: 739112, + LocalVirtualGroupId: 1, + PayloadSize: 205, + Visibility: '1', + ContentType: 'application/x-yaml', + CreateAt: 1692971564, + ObjectStatus: '1', + RedundancyType: '0', + SourceType: '0', + Checksums: [ + 'a7554caa696d4db8c8ea4500ad2eac6244bca79e3c3193db8cc699a7e89cf341', + 'b054fd20d637bfa706182288d687f2c0f0ef5afaa4114170bc18699b268e9c28', + ], + }, + LockedBalance: '0x0000000000000000000000000000000000000000000000000000000000000000', + Removed: false, + UpdateAt: 232480, + DeleteAt: 0, + DeleteReason: '', + Operator: '0x8b97D152149309C15B1C339F547a9aca9Bf629D2', + CreateTxHash: '0x42d854103bc83359b86b55b8a0452895865c2de1ac51f26d551fca0e2a587214', + UpdateTxHash: '0x704ba83349018ddcdd0774fb4a01e84eda3d32d8577d958cfa272fbcc2892f75', + SealTxHash: '0x704ba83349018ddcdd0774fb4a01e84eda3d32d8577d958cfa272fbcc2892f75', + }, + { + ObjectInfo: { + Owner: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + Creator: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + BucketName: 'foo', + ObjectName: 'obk', + Id: 739112, + LocalVirtualGroupId: 1, + PayloadSize: 205, + Visibility: '1', + ContentType: 'application/x-yaml', + CreateAt: 1692971564, + ObjectStatus: '1', + RedundancyType: '0', + SourceType: '0', + Checksums: [ + 'a7554caa696d4db8c8ea4500ad2eac6244bca79e3c3193db8cc699a7e89cf341', + 'b054fd20d637bfa706182288d687f2c0f0ef5afaa4114170bc18699b268e9c28', + ], + }, + LockedBalance: '0x0000000000000000000000000000000000000000000000000000000000000000', + Removed: false, + UpdateAt: 232480, + DeleteAt: 0, + DeleteReason: '', + Operator: '0x8b97D152149309C15B1C339F547a9aca9Bf629D2', + CreateTxHash: '0x42d854103bc83359b86b55b8a0452895865c2de1ac51f26d551fca0e2a587214', + UpdateTxHash: '0x704ba83349018ddcdd0774fb4a01e84eda3d32d8577d958cfa272fbcc2892f75', + SealTxHash: '0x704ba83349018ddcdd0774fb4a01e84eda3d32d8577d958cfa272fbcc2892f75', + }, + ]); + }); +}); + +describe('parseGetUserBucketsResponse', () => { + test('parse Buckets containers 2 element at least', async () => { + const data = ` + + + 0x1C893441AB6c1A75E01887087ea508bE8e07AAae + false + 1 + 1156769 + 0 + 1693279149 + 0x1C893441AB6c1A75E01887087ea508bE8e07AAae + 8 + 0 + 0 + + false + 0 + + 0x1C893441AB6c1A75E01887087ea508bE8e07AAae + 0xea5f91a6ba8e558e35ecc416579b4585cc494d5dcc99bce519cc54968b0b1292 + 0xea5f91a6ba8e558e35ecc416579b4585cc494d5dcc99bce519cc54968b0b1292 + 363707 + 1693279149 + + + + 0x1C893441AB6c1A75E01887087ea508bE8e07AAae + false + 1 + 1156769 + 0 + 1693279149 + 0x1C893441AB6c1A75E01887087ea508bE8e07AAae + 8 + 0 + 0 + + false + 0 + + 0x1C893441AB6c1A75E01887087ea508bE8e07AAae + 0xea5f91a6ba8e558e35ecc416579b4585cc494d5dcc99bce519cc54968b0b1292 + 0xea5f91a6ba8e558e35ecc416579b4585cc494d5dcc99bce519cc54968b0b1292 + 363707 + 1693279149 + +`; + + const res = await parseGetUserBucketsResponse(data); + + expect(res.GfSpGetUserBucketsResponse).to.have.deep.property('Buckets', [ + { + BucketInfo: { + Owner: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + BucketName: 'false', + Visibility: '1', + Id: '1156769', + SourceType: '0', + CreateAt: 1693279149, + PaymentAddress: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + GlobalVirtualGroupFamilyId: 8, + ChargedReadQuota: 0, + BucketStatus: '0', + }, + Removed: false, + DeleteAt: 0, + DeleteReason: '', + Operator: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + CreateTxHash: '0xea5f91a6ba8e558e35ecc416579b4585cc494d5dcc99bce519cc54968b0b1292', + UpdateTxHash: '0xea5f91a6ba8e558e35ecc416579b4585cc494d5dcc99bce519cc54968b0b1292', + UpdateAt: 363707, + UpdateTime: 1693279149, + }, + { + BucketInfo: { + Owner: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + BucketName: 'false', + Visibility: '1', + Id: '1156769', + SourceType: '0', + CreateAt: 1693279149, + PaymentAddress: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + GlobalVirtualGroupFamilyId: 8, + ChargedReadQuota: 0, + BucketStatus: '0', + }, + Removed: false, + DeleteAt: 0, + DeleteReason: '', + Operator: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + CreateTxHash: '0xea5f91a6ba8e558e35ecc416579b4585cc494d5dcc99bce519cc54968b0b1292', + UpdateTxHash: '0xea5f91a6ba8e558e35ecc416579b4585cc494d5dcc99bce519cc54968b0b1292', + UpdateAt: 363707, + UpdateTime: 1693279149, + }, + ]); + }); + + test('parse Buckets containers 1 element', async () => { + const data = ` + + + 0x1C893441AB6c1A75E01887087ea508bE8e07AAae + false + 1 + 1156769 + 0 + 1693279149 + 0x1C893441AB6c1A75E01887087ea508bE8e07AAae + 8 + 0 + 0 + + false + 0 + + 0x1C893441AB6c1A75E01887087ea508bE8e07AAae + 0xea5f91a6ba8e558e35ecc416579b4585cc494d5dcc99bce519cc54968b0b1292 + 0xea5f91a6ba8e558e35ecc416579b4585cc494d5dcc99bce519cc54968b0b1292 + 363707 + 1693279149 + +`; + + const res = await parseGetUserBucketsResponse(data); + + expect(res.GfSpGetUserBucketsResponse).to.have.deep.property('Buckets', [ + { + BucketInfo: { + Owner: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + BucketName: 'false', + Visibility: '1', + Id: '1156769', + SourceType: '0', + CreateAt: 1693279149, + PaymentAddress: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + GlobalVirtualGroupFamilyId: 8, + ChargedReadQuota: 0, + BucketStatus: '0', + }, + Removed: false, + DeleteAt: 0, + DeleteReason: '', + Operator: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', + CreateTxHash: '0xea5f91a6ba8e558e35ecc416579b4585cc494d5dcc99bce519cc54968b0b1292', + UpdateTxHash: '0xea5f91a6ba8e558e35ecc416579b4585cc494d5dcc99bce519cc54968b0b1292', + UpdateAt: 363707, + UpdateTime: 1693279149, + }, + ]); + }); + + test('parse empty Buckets', async () => { + const data = ``; + + const res = await parseGetUserBucketsResponse(data); + + expect(res.GfSpGetUserBucketsResponse).to.have.deep.property('Buckets', []); + }); +}); diff --git a/packages/chain-sdk/src/types/sp-xml/Common.ts b/packages/chain-sdk/src/types/sp-xml/Common.ts index a621b17a..603f7007 100644 --- a/packages/chain-sdk/src/types/sp-xml/Common.ts +++ b/packages/chain-sdk/src/types/sp-xml/Common.ts @@ -26,7 +26,7 @@ export interface BucketInfo { SourceType: keyof typeof SourceType; CreateAt: number; PaymentAddress: string; - PrimarySpId: number; + // PrimarySpId: number; GlobalVirtualGroupFamilyId: number; ChargedReadQuota: number; BucketStatus: keyof typeof BucketStatus; From c92e07e725accece3e1b126ea2ef0d4c6e5db431 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 29 Aug 2023 17:07:07 +0800 Subject: [PATCH 179/433] feat: Migrate bucket (#280) --- .changeset/mighty-mangos-exercise.md | 5 ++ .../src/components/bucket/migrate/index.tsx | 3 +- packages/chain-sdk/src/api/bucket.ts | 81 ++++--------------- packages/chain-sdk/src/api/sp.ts | 7 ++ .../chain-sdk/src/clients/spclient/auth.ts | 2 +- .../spclient/spApis/migrateApproval.ts | 32 ++++++++ .../greenfield/storage/MsgMigrateBucket.ts | 4 + 7 files changed, 65 insertions(+), 69 deletions(-) create mode 100644 .changeset/mighty-mangos-exercise.md create mode 100644 packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts diff --git a/.changeset/mighty-mangos-exercise.md b/.changeset/mighty-mangos-exercise.md new file mode 100644 index 00000000..ed08b09c --- /dev/null +++ b/.changeset/mighty-mangos-exercise.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Migrate bucket diff --git a/examples/nextjs/src/components/bucket/migrate/index.tsx b/examples/nextjs/src/components/bucket/migrate/index.tsx index 44a87f0f..92dba858 100644 --- a/examples/nextjs/src/components/bucket/migrate/index.tsx +++ b/examples/nextjs/src/components/bucket/migrate/index.tsx @@ -17,7 +17,6 @@ export const MigrateBucket = () => { setBucketName(e.target.value); }} /> -

+ + ); +}; diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index 5f91de9a..3f79e534 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -20,6 +20,7 @@ import { } from '@/types/sp-xml'; import { decodeObjectFromHexString } from '@/utils/encoding'; import { isValidAddress, isValidBucketName, isValidUrl } from '@/utils/s3'; +import { UInt64Value } from '@bnb-chain/greenfield-cosmos-types/greenfield/common/wrapper'; import { ActionType, Principal, @@ -120,7 +121,9 @@ export interface IBucket { deleteBucket(msg: MsgDeleteBucket): Promise; - updateBucketInfo(msg: MsgUpdateBucketInfo): Promise; + updateBucketInfo( + srcMsg: Omit & { chargedReadQuota?: string }, + ): Promise; putBucketPolicy(bucketName: string, srcMsg: Omit): Promise; @@ -416,12 +419,27 @@ export class Bucket implements IBucket { } } - public async updateBucketInfo(msg: MsgUpdateBucketInfo) { + public async updateBucketInfo( + srcMsg: Omit & { chargedReadQuota: string }, + ) { + const msg: MsgUpdateBucketInfo = { + ...srcMsg, + visibility: visibilityTypeFromJSON(srcMsg.visibility), + chargedReadQuota: UInt64Value.fromPartial({ + value: Long.fromString(srcMsg.chargedReadQuota), + }), + }; + return await this.basic.tx( MsgUpdateBucketInfoTypeUrl, msg.operator, MsgUpdateBucketInfoSDKTypeEIP712, - MsgUpdateBucketInfo.toSDK(msg), + { + ...MsgUpdateBucketInfo.toSDK(msg), + charged_read_quota: { + value: srcMsg.chargedReadQuota, + }, + }, MsgUpdateBucketInfo.encode(msg).finish(), ); } diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts index eaaa5ecf..8500cd36 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts @@ -12,6 +12,10 @@ export const MsgUpdateBucketInfoSDKTypeEIP712 = { name: 'bucket_name', type: 'string', }, + { + name: 'charged_read_quota', + type: 'TypeMsg1ChargedReadQuota', + }, { name: 'payment_address', type: 'string', @@ -21,4 +25,10 @@ export const MsgUpdateBucketInfoSDKTypeEIP712 = { type: 'string', }, ], + TypeMsg1ChargedReadQuota: [ + { + name: 'value', + type: 'uint64', + }, + ], }; From 6ebcd9dfb51c6dacc756b1e0761047ff00c7e937 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 21:03:33 +0800 Subject: [PATCH 184/433] chore: [ci] release (alpha) (#285) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 2 ++ examples/nextjs/CHANGELOG.md | 9 +++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 9 +++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 13 +++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 36 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 43b6aa0a..0b6e0308 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -24,11 +24,13 @@ "five-mice-whisper", "flat-mugs-collect", "giant-panthers-collect", + "giant-toys-march", "gold-bugs-occur", "gold-singers-grab", "gorgeous-ligers-give", "gorgeous-penguins-invite", "grumpy-tables-drop", + "happy-monkeys-exist", "honest-tables-lick", "itchy-candles-fold", "large-jokes-fly", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 6c002aac..2c305625 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/wallet +## 0.0.5-alpha.25 + +### Patch Changes + +- Updated dependencies + [[`1badb9c`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1badb9c9dd71a7a39025e90adfe9a6feace75936), + [`c28ab8b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c28ab8b283f9aca37633c761527706f780bd13f5)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.25 + ## 0.0.5-alpha.24 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index e1bc3573..1c40f87d 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.5-alpha.24", + "version": "0.0.5-alpha.25", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index c6c8738a..fb51d7f0 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/nodejs +## 0.0.8-alpha.25 + +### Patch Changes + +- Updated dependencies + [[`1badb9c`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1badb9c9dd71a7a39025e90adfe9a6feace75936), + [`c28ab8b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c28ab8b283f9aca37633c761527706f780bd13f5)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.25 + ## 0.0.8-alpha.24 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 035ff875..4ef9e6c9 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.8-alpha.24", + "version": "0.0.8-alpha.25", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 24e03d17..94fc49ea 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,18 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.4-alpha.25 + +### Patch Changes + +- [#283](https://github.com/bnb-chain/greenfield-js-sdk/pull/283) + [`1badb9c`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1badb9c9dd71a7a39025e90adfe9a6feace75936) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Replace xml2js for universal usage browser + and nodejs + +- [#284](https://github.com/bnb-chain/greenfield-js-sdk/pull/284) + [`c28ab8b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c28ab8b283f9aca37633c761527706f780bd13f5) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Update Bucket Info + ## 0.2.4-alpha.24 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 6a6cb3b5..0b2b2fe3 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.4-alpha.24", + "version": "0.2.4-alpha.25", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From c7de1fc86211e879dcdf4c420e3f7363fa1e36a5 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 30 Aug 2023 19:08:37 +0800 Subject: [PATCH 185/433] fix: EncodePath function (#286) --- .changeset/slimy-buses-smoke.md | 5 ++++ .../chain-sdk/src/clients/spclient/auth.ts | 15 ++++++----- packages/chain-sdk/src/tests/utils.spec.ts | 26 +++++++++++++++++++ 3 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 .changeset/slimy-buses-smoke.md create mode 100644 packages/chain-sdk/src/tests/utils.spec.ts diff --git a/.changeset/slimy-buses-smoke.md b/.changeset/slimy-buses-smoke.md new file mode 100644 index 00000000..68e6d0fb --- /dev/null +++ b/.changeset/slimy-buses-smoke.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +fix: EncodePath function handling non-English chars diff --git a/packages/chain-sdk/src/clients/spclient/auth.ts b/packages/chain-sdk/src/clients/spclient/auth.ts index 63938a13..4275bfeb 100644 --- a/packages/chain-sdk/src/clients/spclient/auth.ts +++ b/packages/chain-sdk/src/clients/spclient/auth.ts @@ -187,14 +187,15 @@ export const encodePath = (pathName: string) => { // others characters need to be encoded default: - const length = encodeURIComponent(s).length; - if (length < 0) { - // if encodeURIComponent cannot convert return the same string as is - return pathName; + // . ! @ # $ % ^ & * ) ( - + = { } [ ] / " , ' < > ~ \ .` ? : ; | \\ + if (/[.!@#\$%\^&\*\)\(\-+=\{\}\[\]\/\",'<>~\·`\?:;|\\]+$/.test(s)) { + // english characters + const hexStr = s.charCodeAt(0).toString(16); + encodedPathName += '%' + hexStr.toUpperCase(); + } else { + // others characters + encodedPathName += encodeURI(s); } - - const hexStr = s.charCodeAt(0).toString(16); - encodedPathName += '%' + hexStr.toUpperCase(); } } return encodedPathName; diff --git a/packages/chain-sdk/src/tests/utils.spec.ts b/packages/chain-sdk/src/tests/utils.spec.ts new file mode 100644 index 00000000..336db589 --- /dev/null +++ b/packages/chain-sdk/src/tests/utils.spec.ts @@ -0,0 +1,26 @@ +import { expect } from 'chai'; +import { encodePath } from '../clients/spclient/auth'; + +describe('encodePaths', () => { + it('encode english chars', () => { + expect(encodePath('~!@#$%^&*()')).equals('~%21%40%23%24%25%5E%26%2A%28%29'); + + expect(encodePath('-=_+`:;\'[]{}<>,./?\\|"')).equals( + '-%3D_%2B%60%3A%3B%27%5B%5D%7B%7D%3C%3E%2C./%3F%5C%7C%22', + ); + }); + + it('encode chinese chars', () => { + expect(encodePath('中文')).equals('%E4%B8%AD%E6%96%87'); + }); + + it('encode complex utf-8 chars', () => { + expect( + encodePath( + '(h~d…-o#y))$i…nla@)l!zq%ja.!m…)ug(z@a…*sd(tz.#(—$…!)-tz…*ko#$l&jz$bu…@q(cf+k()a)¥dya%!)(qo@raz@$d@d~rl.y…ga—)ep*#+mqmu¥…ril—)vde…@p……l+hif—%z~!%li~o((kh%—%—#u)$zhunu@.~#t…#di.jfohw…!)@z…xm*…m—)gzop*q%…qxxzqrno%h-…k~&)~w)!%w.…u20230830112135_jim _255MB', + ), + ).equals( + '%EF%BC%88h%EF%BD%9Ed%E2%80%A6-o%23y%29%29%24i%E2%80%A6nla%40%29l%EF%BC%81zq%25ja.%EF%BC%81m%E2%80%A6%29ug%28z%40a%E2%80%A6%2Asd%EF%BC%88tz.%23%28%E2%80%94%24%E2%80%A6%21%29-tz%E2%80%A6%2Ako%23%24l%26jz%24bu%E2%80%A6%40q%28cf%2Bk%28%29a%EF%BC%89%C2%A5dya%25%EF%BC%81%29%28qo%40raz%40%24d%40d%EF%BD%9Erl.y%E2%80%A6ga%E2%80%94%29ep%2A%23%2Bmqmu%C2%A5%E2%80%A6ril%E2%80%94%29vde%E2%80%A6%40p%E2%80%A6%E2%80%A6l%2Bhif%E2%80%94%25z%EF%BD%9E%EF%BC%81%25li%EF%BD%9Eo%EF%BC%88%28kh%25%E2%80%94%25%E2%80%94%23u%29%24zhunu%40.%EF%BD%9E%23t%E2%80%A6%23di.jfohw%E2%80%A6%21%EF%BC%89%40z%E2%80%A6xm%2A%E2%80%A6m%E2%80%94%29gzop%2Aq%25%E2%80%A6qxxzqrno%25h-%E2%80%A6k%EF%BD%9E%26%29%EF%BD%9Ew%29%21%25w.%E2%80%A6u20230830112135_jim%20_255MB', + ); + }); +}); From 402da22ea101f855a05f098b8970eef13b045ead Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 30 Aug 2023 19:10:05 +0800 Subject: [PATCH 186/433] fix: Convert enum to number (#287) --- .changeset/flat-cameras-divide.md | 5 ++ packages/chain-sdk/src/api/bucket.ts | 1 + .../clients/spclient/spApis/getBucketMeta.ts | 9 +++ .../clients/spclient/spApis/getUserBuckets.ts | 12 +--- packages/chain-sdk/src/tests/parsexml.spec.ts | 42 ++++++------- packages/chain-sdk/src/types/sp-xml/Common.ts | 63 +++++++++++-------- packages/chain-sdk/src/types/storage.ts | 1 + 7 files changed, 75 insertions(+), 58 deletions(-) create mode 100644 .changeset/flat-cameras-divide.md diff --git a/.changeset/flat-cameras-divide.md b/.changeset/flat-cameras-divide.md new file mode 100644 index 00000000..f566a26c --- /dev/null +++ b/.changeset/flat-cameras-divide.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: convert XML enum to number diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index 3f79e534..b207d702 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -406,6 +406,7 @@ export class Bucket implements IBucket { readQuota: Number(res.GetReadQuotaResult.ReadQuotaSize ?? '0'), freeQuota: Number(res.GetReadQuotaResult.SPFreeReadQuotaSize ?? '0'), consumedQuota: Number(res.GetReadQuotaResult.ReadConsumedSize ?? '0'), + freeConsumedSize: Number(res.GetReadQuotaResult.FreeConsumedSize ?? '0'), }, message: 'Get bucket read quota.', statusCode: result.status, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts b/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts index f7120494..129eb7ea 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts @@ -1,4 +1,5 @@ import { GetBucketMetaResponse } from '@/types'; +import { formatBucketInfo } from '@/types/sp-xml/Common'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_bucket_meta @@ -8,5 +9,13 @@ export const parseGetBucketMetaResponse = async (data: string) => { }); const res = xmlParser.parse(data) as GetBucketMetaResponse; + res.GfSpGetBucketMetaResponse.Bucket = { + ...res.GfSpGetBucketMetaResponse.Bucket, + BucketInfo: formatBucketInfo(res.GfSpGetBucketMetaResponse.Bucket.BucketInfo), + DeleteAt: Number(res.GfSpGetBucketMetaResponse.Bucket.DeleteAt), + UpdateAt: Number(res.GfSpGetBucketMetaResponse.Bucket.UpdateAt), + UpdateTime: Number(res.GfSpGetBucketMetaResponse.Bucket.UpdateTime), + }; + return res; }; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts b/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts index aa30f278..21f62149 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts @@ -1,5 +1,5 @@ import { GetUserBucketsResponse } from '@/types'; -import { convertStrToBool } from '@/types/sp-xml/Common'; +import { convertStrToBool, formatBucketInfo } from '@/types/sp-xml/Common'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_user_buckets @@ -16,17 +16,9 @@ export const parseGetUserBucketsResponse = async (data: string) => { } Buckets = Buckets.map((item) => { - const BucketInfo = { - ...item.BucketInfo, - CreateAt: Number(item.BucketInfo.CreateAt), - // PrimarySpId: Number(item.BucketInfo.PrimarySpId), - GlobalVirtualGroupFamilyId: Number(item.BucketInfo.GlobalVirtualGroupFamilyId), - ChargedReadQuota: Number(item.BucketInfo.ChargedReadQuota), - }; - return { ...item, - BucketInfo, + BucketInfo: formatBucketInfo(item.BucketInfo), // @ts-ignore Removed: convertStrToBool(item.Removed), DeleteAt: Number(item.DeleteAt), diff --git a/packages/chain-sdk/src/tests/parsexml.spec.ts b/packages/chain-sdk/src/tests/parsexml.spec.ts index 4c3f7a1b..f0e3fb07 100644 --- a/packages/chain-sdk/src/tests/parsexml.spec.ts +++ b/packages/chain-sdk/src/tests/parsexml.spec.ts @@ -141,12 +141,12 @@ describe('parseListObjectsByBucketNameResponse', () => { Id: 739112, LocalVirtualGroupId: 1, PayloadSize: 205, - Visibility: '1', + Visibility: 1, ContentType: 'application/x-yaml', CreateAt: 1692971564, - ObjectStatus: '1', - RedundancyType: '0', - SourceType: '0', + ObjectStatus: 1, + RedundancyType: 0, + SourceType: 0, Checksums: [ 'a7554caa696d4db8c8ea4500ad2eac6244bca79e3c3193db8cc699a7e89cf341', 'b054fd20d637bfa706182288d687f2c0f0ef5afaa4114170bc18699b268e9c28', @@ -247,12 +247,12 @@ describe('parseListObjectsByBucketNameResponse', () => { Id: 739112, LocalVirtualGroupId: 1, PayloadSize: 205, - Visibility: '1', + Visibility: 1, ContentType: 'application/x-yaml', CreateAt: 1692971564, - ObjectStatus: '1', - RedundancyType: '0', - SourceType: '0', + ObjectStatus: 1, + RedundancyType: 0, + SourceType: 0, Checksums: [ 'a7554caa696d4db8c8ea4500ad2eac6244bca79e3c3193db8cc699a7e89cf341', 'b054fd20d637bfa706182288d687f2c0f0ef5afaa4114170bc18699b268e9c28', @@ -277,12 +277,12 @@ describe('parseListObjectsByBucketNameResponse', () => { Id: 739112, LocalVirtualGroupId: 1, PayloadSize: 205, - Visibility: '1', + Visibility: 1, ContentType: 'application/x-yaml', CreateAt: 1692971564, - ObjectStatus: '1', - RedundancyType: '0', - SourceType: '0', + ObjectStatus: 1, + RedundancyType: 0, + SourceType: 0, Checksums: [ 'a7554caa696d4db8c8ea4500ad2eac6244bca79e3c3193db8cc699a7e89cf341', 'b054fd20d637bfa706182288d687f2c0f0ef5afaa4114170bc18699b268e9c28', @@ -358,14 +358,14 @@ describe('parseGetUserBucketsResponse', () => { BucketInfo: { Owner: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', BucketName: 'false', - Visibility: '1', + Visibility: 1, Id: '1156769', - SourceType: '0', + SourceType: 0, CreateAt: 1693279149, PaymentAddress: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', GlobalVirtualGroupFamilyId: 8, ChargedReadQuota: 0, - BucketStatus: '0', + BucketStatus: 0, }, Removed: false, DeleteAt: 0, @@ -380,14 +380,14 @@ describe('parseGetUserBucketsResponse', () => { BucketInfo: { Owner: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', BucketName: 'false', - Visibility: '1', + Visibility: 1, Id: '1156769', - SourceType: '0', + SourceType: 0, CreateAt: 1693279149, PaymentAddress: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', GlobalVirtualGroupFamilyId: 8, ChargedReadQuota: 0, - BucketStatus: '0', + BucketStatus: 0, }, Removed: false, DeleteAt: 0, @@ -434,14 +434,14 @@ describe('parseGetUserBucketsResponse', () => { BucketInfo: { Owner: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', BucketName: 'false', - Visibility: '1', + Visibility: 1, Id: '1156769', - SourceType: '0', + SourceType: 0, CreateAt: 1693279149, PaymentAddress: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', GlobalVirtualGroupFamilyId: 8, ChargedReadQuota: 0, - BucketStatus: '0', + BucketStatus: 0, }, Removed: false, DeleteAt: 0, diff --git a/packages/chain-sdk/src/types/sp-xml/Common.ts b/packages/chain-sdk/src/types/sp-xml/Common.ts index 603f7007..10ebc43a 100644 --- a/packages/chain-sdk/src/types/sp-xml/Common.ts +++ b/packages/chain-sdk/src/types/sp-xml/Common.ts @@ -1,11 +1,3 @@ -import { - BucketStatus, - ObjectStatus, - RedundancyType, - SourceType, - VisibilityType, -} from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; - export interface BucketMeta { BucketInfo: BucketInfo; Removed: boolean; @@ -19,17 +11,17 @@ export interface BucketMeta { } export interface BucketInfo { - Owner: string; + // PrimarySpId: number; BucketName: string; - Visibility: keyof typeof VisibilityType; - Id: string; - SourceType: keyof typeof SourceType; + BucketStatus: number; + ChargedReadQuota: number; CreateAt: number; - PaymentAddress: string; - // PrimarySpId: number; GlobalVirtualGroupFamilyId: number; - ChargedReadQuota: number; - BucketStatus: keyof typeof BucketStatus; + Id: string; + Owner: string; + PaymentAddress: string; + SourceType: number; + Visibility: number; } export interface StreamRecord { @@ -59,29 +51,46 @@ export interface ObjectMeta { } export interface ObjectInfo { - Owner: string; - Creator: string; BucketName: string; - ObjectName: string; + Checksums: string[]; + ContentType: string; + CreateAt: number; + Creator: string; Id: number; LocalVirtualGroupId: number; + ObjectName: string; + ObjectStatus: number; + Owner: string; PayloadSize: number; - Visibility: keyof typeof VisibilityType; - ContentType: string; - CreateAt: number; - ObjectStatus: keyof typeof ObjectStatus; - RedundancyType: keyof typeof RedundancyType; - SourceType: keyof typeof SourceType; - Checksums: string[]; + RedundancyType: number; + SourceType: number; + Visibility: number; +} + +export function formatBucketInfo(o: BucketInfo) { + return { + ...o, + // PrimarySpId: Number(item.BucketInfo.PrimarySpId), + BucketStatus: Number(o.BucketStatus), + ChargedReadQuota: Number(o.ChargedReadQuota), + CreateAt: Number(o.CreateAt), + GlobalVirtualGroupFamilyId: Number(o.GlobalVirtualGroupFamilyId), + SourceType: Number(o.SourceType), + Visibility: Number(o.Visibility), + }; } export function formatObjectInfo(o: ObjectInfo) { return { ...o, + CreateAt: Number(o.CreateAt), Id: Number(o.Id), LocalVirtualGroupId: Number(o.LocalVirtualGroupId), + ObjectStatus: Number(o.ObjectStatus), PayloadSize: Number(o.PayloadSize), - CreateAt: Number(o.CreateAt), + RedundancyType: Number(o.RedundancyType), + SourceType: Number(o.SourceType), + Visibility: Number(o.Visibility), }; } diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index c9e02c0e..b13a4df9 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -88,6 +88,7 @@ export interface IQuotaProps { readQuota: number; freeQuota: number; consumedQuota: number; + freeConsumedSize: number; } export type TBaseGetCreateObject = { From 6fb245e4ffd7cf28afc111ea0e833685a1607cbd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 30 Aug 2023 19:11:32 +0800 Subject: [PATCH 187/433] chore: [ci] release (alpha) (#288) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 2 ++ examples/nextjs/CHANGELOG.md | 9 +++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 9 +++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 12 ++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 35 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 0b6e0308..9be9b4c5 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -22,6 +22,7 @@ "fair-impalas-approve", "fast-drinks-move", "five-mice-whisper", + "flat-cameras-divide", "flat-mugs-collect", "giant-panthers-collect", "giant-toys-march", @@ -52,6 +53,7 @@ "rich-carrots-cheer", "seven-toys-fry", "silver-avocados-march", + "slimy-buses-smoke", "soft-phones-give", "spicy-lizards-think", "strong-wombats-help", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 2c305625..03bb5bb6 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/wallet +## 0.0.5-alpha.26 + +### Patch Changes + +- Updated dependencies + [[`402da22`](https://github.com/bnb-chain/greenfield-js-sdk/commit/402da22ea101f855a05f098b8970eef13b045ead), + [`c7de1fc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7de1fc86211e879dcdf4c420e3f7363fa1e36a5)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.26 + ## 0.0.5-alpha.25 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 1c40f87d..f4070a20 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.5-alpha.25", + "version": "0.0.5-alpha.26", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index fb51d7f0..0bb999fd 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/nodejs +## 0.0.8-alpha.26 + +### Patch Changes + +- Updated dependencies + [[`402da22`](https://github.com/bnb-chain/greenfield-js-sdk/commit/402da22ea101f855a05f098b8970eef13b045ead), + [`c7de1fc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7de1fc86211e879dcdf4c420e3f7363fa1e36a5)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.26 + ## 0.0.8-alpha.25 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 4ef9e6c9..55cf4994 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.8-alpha.25", + "version": "0.0.8-alpha.26", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 94fc49ea..f2d7282c 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.4-alpha.26 + +### Patch Changes + +- [#287](https://github.com/bnb-chain/greenfield-js-sdk/pull/287) + [`402da22`](https://github.com/bnb-chain/greenfield-js-sdk/commit/402da22ea101f855a05f098b8970eef13b045ead) + Thanks [@rrr523](https://github.com/rrr523)! - feat: convert XML enum to number + +- [#286](https://github.com/bnb-chain/greenfield-js-sdk/pull/286) + [`c7de1fc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7de1fc86211e879dcdf4c420e3f7363fa1e36a5) + Thanks [@rrr523](https://github.com/rrr523)! - fix: EncodePath function handling non-English chars + ## 0.2.4-alpha.25 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 0b2b2fe3..65b6f27a 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.4-alpha.25", + "version": "0.2.4-alpha.26", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From ea31d738124058d75b251d6a897f924a122b1471 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Thu, 31 Aug 2023 15:59:49 +0800 Subject: [PATCH 188/433] feat: Add listReadRecords api --- .changeset/itchy-pants-search.md | 5 ++ .../src/components/bucket/info/index.tsx | 39 +++++++++++- packages/chain-sdk/src/api/bucket.ts | 62 +++++++++++++++++++ .../spclient/spApis/listBucketReadRecords.ts | 62 +++++++++++++++++++ packages/chain-sdk/src/types/sp-xml/Common.ts | 16 +++++ .../sp-xml/ListBucketReadRecordResponse.ts | 10 +++ .../sp-xml/ListObjectsByBucketNameResponse.ts | 2 +- packages/chain-sdk/src/types/storage.ts | 23 +++---- 8 files changed, 203 insertions(+), 16 deletions(-) create mode 100644 .changeset/itchy-pants-search.md create mode 100644 packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts create mode 100644 packages/chain-sdk/src/types/sp-xml/ListBucketReadRecordResponse.ts diff --git a/.changeset/itchy-pants-search.md b/.changeset/itchy-pants-search.md new file mode 100644 index 00000000..13acdcc9 --- /dev/null +++ b/.changeset/itchy-pants-search.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Add `ListBucketReadRecords` api diff --git a/examples/nextjs/src/components/bucket/info/index.tsx b/examples/nextjs/src/components/bucket/info/index.tsx index 8c1d9067..2106f3ca 100644 --- a/examples/nextjs/src/components/bucket/info/index.tsx +++ b/examples/nextjs/src/components/bucket/info/index.tsx @@ -1,9 +1,10 @@ import { client, selectSp } from '@/client'; +import { getOffchainAuthKeys } from '@/utils/offchainAuth'; import { useState } from 'react'; import { useAccount } from 'wagmi'; export const BucketInfo = () => { - const { address } = useAccount(); + const { address, connector } = useAccount(); const [bucketName, setBucketName] = useState(''); const [bucketId, setBucketId] = useState(''); @@ -22,6 +23,42 @@ export const BucketInfo = () => { > get bucket info by name +
+ +
+
  • + +
  • ); diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 420f9c7e..e8b0aa44 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -2,6 +2,7 @@ import { encodePath, getMsgToSign, secpSign } from '@/clients/spclient/auth'; import { getGetObjectMetaInfo } from '@/clients/spclient/spApis/getObject'; import { parseGetObjectMetaResponse } from '@/clients/spclient/spApis/getObjectMeta'; import { parseListObjectsByBucketNameResponse } from '@/clients/spclient/spApis/listObjectsByBucket'; +import { parseListObjectsByIdsResponse } from '@/clients/spclient/spApis/listObjectsByIds'; import { getObjectApprovalMetaInfo } from '@/clients/spclient/spApis/objectApproval'; import { parseError } from '@/clients/spclient/spApis/parseError'; import { getPutObjectMetaInfo } from '@/clients/spclient/spApis/putObject'; @@ -55,12 +56,14 @@ import { AuthType, SpClient } from '../clients/spclient/spClient'; import { ICreateObjectMsgType, IObjectResultType, + ListObjectsByIDsResponse, Long, TBaseGetCreateObject, TBaseGetObject, TBaseGetPrivewObject, TBasePutObject, TListObjects, + TListObjectsByIDsRequest, TxResponse, } from '../types'; import { @@ -144,6 +147,10 @@ export interface IObject { ): Promise; getObjectMeta(params: GetObjectMetaRequest): Promise>; + + listObjectsByIds( + params: TListObjectsByIDsRequest, + ): Promise>; // TODO: GetObjectUploadProgress // TODO: getObjectStatusFromSP } @@ -689,16 +696,47 @@ export class Objectt implements IObject { }; } - // private async getObjectStatusFromSP(params: IGetObjectStaus) { - // const {bucketInfo} = await this.bucket.headBucket(params.bucketName); - // const primarySpAddress = bucketInfo?.primarySpAddress - - // // const url = params.endpoint + '/greenfield/admin/v1/get-approval?upload-progress='; - // // const unSignedMessageInHex = encodeObjectToHexString(msg); - // // const headers = new Headers({ - // // // TODO: replace when offchain release - // // Authorization: `authTypeV2 ECDSA-secp256k1, Signature=${MOCK_SIGNATURE}`, - // // 'X-Gnfd-Unsigned-Msg': unSignedMessageInHex, - // // }); - // } + public async listObjectsByIds(params: TListObjectsByIDsRequest) { + try { + const { ids } = params; + + const sp = await this.sp.getInServiceSP(); + const url = `${sp.endpoint}?objects-query=null&ids=${ids.join(',')}`; + + const result = await this.spClient.callApi( + url, + { + headers: {}, + method: METHOD_GET, + }, + 3000, + ); + const { status } = result; + if (!result.ok) { + const xmlError = await result.text(); + const { code, message } = await parseError(xmlError); + throw { + code: code || -1, + message: message || 'error', + statusCode: status, + }; + } + + const xmlData = await result.text(); + const res = await parseListObjectsByIdsResponse(xmlData); + + return { + code: 0, + message: 'success', + statusCode: status, + body: res, + }; + } catch (error: any) { + return { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; + } + } } diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts new file mode 100644 index 00000000..a246f578 --- /dev/null +++ b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts @@ -0,0 +1,41 @@ +import { ListObjectsByIDsResponse } from '@/types'; +import { formatObjectInfo, convertStrToBool } from '@/types/sp-xml/Common'; +import { XMLParser } from 'fast-xml-parser'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_objects_by_ids +export const parseListObjectsByIdsResponse = async (data: string) => { + const xmlParser = new XMLParser({ + parseTagValue: false, + }); + const res = xmlParser.parse(data) as ListObjectsByIDsResponse; + + let ObjectEntry = res.GfSpListObjectsByIDsResponse.ObjectEntry; + + if (ObjectEntry) { + if (!Array.isArray(ObjectEntry)) { + ObjectEntry = [ObjectEntry]; + } + + ObjectEntry = ObjectEntry.map((item) => { + return { + ...item, + Id: Number(item.Id), + Value: { + ...item.Value, + ObjectInfo: formatObjectInfo(item.Value.ObjectInfo), + // @ts-ignore + Removed: convertStrToBool(item.Value.Removed), + UpdateAt: Number(item.Value.UpdateAt), + DeleteAt: Number(item.Value.DeleteAt), + }, + }; + }); + } + + res.GfSpListObjectsByIDsResponse = { + ...res.GfSpListObjectsByIDsResponse, + ObjectEntry, + }; + + return res; +}; diff --git a/packages/chain-sdk/src/types/sp-xml/ListObjectsByIDsResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListObjectsByIDsResponse.ts new file mode 100644 index 00000000..967b742e --- /dev/null +++ b/packages/chain-sdk/src/types/sp-xml/ListObjectsByIDsResponse.ts @@ -0,0 +1,25 @@ +import { ObjectInfo } from './Common'; + +export interface ListObjectsByIDsResponse { + GfSpListObjectsByIDsResponse: GfSpListObjectsByIDsResponse; +} + +export interface GfSpListObjectsByIDsResponse { + ObjectEntry: ObjectEntry[]; +} + +export interface ObjectEntry { + Id: number; + Value: { + ObjectInfo: ObjectInfo; + LockedBalance: string; + Removed: boolean; + UpdateAt: number; + DeleteAt: number; + DeleteReason: string; + Operator: string; + CreateTxHash: string; + UpdateTxHash: string; + SealTxHash: string; + }; +} diff --git a/packages/chain-sdk/src/types/sp-xml/index.ts b/packages/chain-sdk/src/types/sp-xml/index.ts index 45c15350..8c6970e5 100644 --- a/packages/chain-sdk/src/types/sp-xml/index.ts +++ b/packages/chain-sdk/src/types/sp-xml/index.ts @@ -4,6 +4,7 @@ export * from './GetUserBucketsResponse'; export * from './ListBucketReadRecordResponse'; export * from './ListGroupsResponse'; export * from './ListObjectsByBucketNameResponse'; +export * from './ListObjectsByIDsResponse'; export * from './ReadQuotaResponse'; export * from './RequestErrorResponse'; export * from './RequestNonceResponse'; diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index ff61255f..dbf73e83 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -275,3 +275,7 @@ export type TListGroups = { limit?: number; offset?: number; }; + +export type TListObjectsByIDsRequest = { + ids: string[]; +}; From faf5d474d626010ef9a4d83bf96491b66d265d35 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Thu, 31 Aug 2023 17:46:37 +0800 Subject: [PATCH 191/433] feat: ListBucketsByIds api --- .changeset/famous-goats-visit.md | 5 ++ .../nextjs/src/components/query/index.tsx | 12 +++++ packages/chain-sdk/src/api/bucket.ts | 51 +++++++++++++++++++ .../spclient/spApis/listBucketsByIds.ts | 45 ++++++++++++++++ .../spclient/spApis/listObjectsByIds.ts | 15 ++++-- .../types/sp-xml/ListBucketsByIDsResponse.ts | 24 +++++++++ packages/chain-sdk/src/types/sp-xml/index.ts | 1 + packages/chain-sdk/src/types/storage.ts | 4 ++ 8 files changed, 152 insertions(+), 5 deletions(-) create mode 100644 .changeset/famous-goats-visit.md create mode 100644 packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts create mode 100644 packages/chain-sdk/src/types/sp-xml/ListBucketsByIDsResponse.ts diff --git a/.changeset/famous-goats-visit.md b/.changeset/famous-goats-visit.md new file mode 100644 index 00000000..ab97ed85 --- /dev/null +++ b/.changeset/famous-goats-visit.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: `ListBucketsByIds` api diff --git a/examples/nextjs/src/components/query/index.tsx b/examples/nextjs/src/components/query/index.tsx index 5d6442fc..46c64bbf 100644 --- a/examples/nextjs/src/components/query/index.tsx +++ b/examples/nextjs/src/components/query/index.tsx @@ -71,6 +71,18 @@ export const QueryComponent = () => { getSPUrlByBucket +
  • + +
  • +
  • + +
  • ); diff --git a/packages/chain-sdk/src/api/basic.ts b/packages/chain-sdk/src/api/basic.ts index 8b9c140f..94ad4ee4 100644 --- a/packages/chain-sdk/src/api/basic.ts +++ b/packages/chain-sdk/src/api/basic.ts @@ -35,6 +35,7 @@ import { SimulateOptions, TxResponse, } from '..'; +import { RpcQueryClient } from '../clients/queryclient'; import { DEFAULT_DENOM, ZERO_PUBKEY } from '../constants'; import { createEIP712, @@ -47,7 +48,6 @@ import { import { generateMsg } from '../messages/utils'; import { eip712Hash, makeCosmsPubKey, recoverPk } from '../sign'; import { Account } from './account'; -import { RpcQueryClient } from '../clients/queryclient'; export interface IBasic { /** diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index 5b0fb383..b4f81fd1 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -1,8 +1,10 @@ +import { encodePath } from '@/clients/spclient/auth'; import { parseListGroupsResponse } from '@/clients/spclient/spApis/listGroups'; import { parseError } from '@/clients/spclient/spApis/parseError'; +import { parseVerifyPermissionResponse } from '@/clients/spclient/spApis/verifyPermission'; import { SpClient } from '@/clients/spclient/spClient'; import { METHOD_GET, NORMAL_ERROR_CODE } from '@/constants/http'; -import { IObjectResultType, TListGroups } from '@/types/storage'; +import { actionTypeFromJSON } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; import { QueryGlobalSpStorePriceByTimeRequest, QueryGlobalSpStorePriceByTimeResponse, @@ -16,7 +18,13 @@ import { } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/query'; import { Status, StorageProvider } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/types'; import { container, singleton } from 'tsyringe'; -import { ListGroupsResponse } from '..'; +import { + IObjectResultType, + ListGroupsResponse, + TListGroups, + TVerifyPermissionRequest, + VerifyPermissionResponse, +} from '..'; import { RpcQueryClient } from '../clients/queryclient'; import { Bucket } from './bucket'; import { VirtualGroup } from './virtualGroup'; @@ -68,6 +76,10 @@ export interface ISp { getSPUrlByPrimaryAddr(parimaryAddr: string): Promise; getSPUrlById(primaryId: number): Promise; + + verifyPermission( + params: TVerifyPermissionRequest, + ): Promise>; } @singleton() @@ -210,4 +222,52 @@ export class Sp implements ISp { }; } } + + public async verifyPermission(params: TVerifyPermissionRequest) { + try { + const { action, bucketName, objectName, operator } = params; + + const sp = await this.getInServiceSP(); + let url = `${sp.endpoint}/permission/${operator}/${bucketName}/${actionTypeFromJSON(action)}`; + + if (objectName) { + url += `?object=${encodePath(objectName)}`; + } + + const result = await this.spClient.callApi( + url, + { + headers: {}, + method: METHOD_GET, + }, + 3000, + ); + const { status } = result; + if (!result.ok) { + const xmlError = await result.text(); + const { code, message } = await parseError(xmlError); + throw { + code: code || -1, + message: message || 'error', + statusCode: status, + }; + } + + const xmlData = await result.text(); + const res = await parseVerifyPermissionResponse(xmlData); + + return { + code: 0, + message: 'success', + statusCode: status, + body: res, + }; + } catch (error: any) { + return { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; + } + } } diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts b/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts index 030106f6..72041ac8 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts @@ -2,7 +2,7 @@ import { ListBucketsByIDsResponse } from '@/types'; import { convertStrToBool, formatBucketInfo } from '@/types/sp-xml/Common'; import { XMLParser } from 'fast-xml-parser'; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_objects_by_ids +// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_buckets_by_ids export const parseListBucketsByIdsResponse = async (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/verifyPermission.ts b/packages/chain-sdk/src/clients/spclient/spApis/verifyPermission.ts new file mode 100644 index 00000000..76b4c7ca --- /dev/null +++ b/packages/chain-sdk/src/clients/spclient/spApis/verifyPermission.ts @@ -0,0 +1,17 @@ +import { VerifyPermissionResponse } from '@/types/sp-xml/VerifyPermissionResponse'; +import { XMLParser } from 'fast-xml-parser'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/verify_permission +export const parseVerifyPermissionResponse = async (data: string) => { + const xmlParser = new XMLParser({ + parseTagValue: false, + }); + const res = xmlParser.parse(data) as VerifyPermissionResponse; + + res.QueryVerifyPermissionResponse = { + ...res.QueryVerifyPermissionResponse, + Effect: Number(res.QueryVerifyPermissionResponse.Effect), + }; + + return res; +}; diff --git a/packages/chain-sdk/src/types/sp-xml/VerifyPermissionResponse.ts b/packages/chain-sdk/src/types/sp-xml/VerifyPermissionResponse.ts new file mode 100644 index 00000000..f0aed8ae --- /dev/null +++ b/packages/chain-sdk/src/types/sp-xml/VerifyPermissionResponse.ts @@ -0,0 +1,7 @@ +export interface VerifyPermissionResponse { + QueryVerifyPermissionResponse: QueryVerifyPermissionResponse; +} + +export interface QueryVerifyPermissionResponse { + Effect: number; +} diff --git a/packages/chain-sdk/src/types/sp-xml/index.ts b/packages/chain-sdk/src/types/sp-xml/index.ts index ea07b366..ae865127 100644 --- a/packages/chain-sdk/src/types/sp-xml/index.ts +++ b/packages/chain-sdk/src/types/sp-xml/index.ts @@ -9,3 +9,4 @@ export * from './ListObjectsByIDsResponse'; export * from './ReadQuotaResponse'; export * from './RequestErrorResponse'; export * from './RequestNonceResponse'; +export * from './VerifyPermissionResponse'; diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index eaa0f5ed..5e3c6a0b 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -1,3 +1,4 @@ +import { ActionType } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; import { RedundancyType, SourceType, @@ -283,3 +284,10 @@ export type TListObjectsByIDsRequest = { export type TListBucketsByIDsRequest = { ids: string[]; }; + +export type TVerifyPermissionRequest = { + operator: string; + bucketName: string; + objectName?: string; + action: keyof typeof ActionType; +}; From 7d69f2e3d044fc5f4c50d5251f99d8e04fb39b86 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Thu, 31 Aug 2023 18:30:08 +0800 Subject: [PATCH 193/433] feat: ListGroupsMembers --- .changeset/gold-eyes-push.md | 5 ++ .../nextjs/src/components/query/index.tsx | 15 +++++ packages/chain-sdk/src/api/sp.ts | 57 +++++++++++++++++++ .../spclient/spApis/listGroupsMembers.ts | 12 ++++ .../types/sp-xml/ListGroupsMembersResponse.ts | 18 ++++++ .../src/types/sp-xml/ListGroupsResponse.ts | 2 +- packages/chain-sdk/src/types/sp-xml/index.ts | 1 + packages/chain-sdk/src/types/storage.ts | 6 ++ 8 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 .changeset/gold-eyes-push.md create mode 100644 packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts create mode 100644 packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts diff --git a/.changeset/gold-eyes-push.md b/.changeset/gold-eyes-push.md new file mode 100644 index 00000000..ba7a751d --- /dev/null +++ b/.changeset/gold-eyes-push.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: ListGroupsMembers diff --git a/examples/nextjs/src/components/query/index.tsx b/examples/nextjs/src/components/query/index.tsx index 2ea95347..8399a852 100644 --- a/examples/nextjs/src/components/query/index.tsx +++ b/examples/nextjs/src/components/query/index.tsx @@ -112,6 +112,21 @@ export const QueryComponent = () => { verify permission +
  • + +
  • ); diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index b4f81fd1..d34eb6bf 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -1,5 +1,6 @@ import { encodePath } from '@/clients/spclient/auth'; import { parseListGroupsResponse } from '@/clients/spclient/spApis/listGroups'; +import { parseListGroupsMembersResponse } from '@/clients/spclient/spApis/listGroupsMembers'; import { parseError } from '@/clients/spclient/spApis/parseError'; import { parseVerifyPermissionResponse } from '@/clients/spclient/spApis/verifyPermission'; import { SpClient } from '@/clients/spclient/spClient'; @@ -20,8 +21,10 @@ import { Status, StorageProvider } from '@bnb-chain/greenfield-cosmos-types/gree import { container, singleton } from 'tsyringe'; import { IObjectResultType, + ListGroupsMembersResponse, ListGroupsResponse, TListGroups, + TListGroupsMembers, TVerifyPermissionRequest, VerifyPermissionResponse, } from '..'; @@ -71,6 +74,10 @@ export interface ISp { listGroups(params: TListGroups): Promise>; + listGroupsMembers( + params: TListGroupsMembers, + ): Promise>; + getSPUrlByBucket(bucketName: string): Promise; getSPUrlByPrimaryAddr(parimaryAddr: string): Promise; @@ -270,4 +277,54 @@ export class Sp implements ISp { }; } } + + public async listGroupsMembers(params: TListGroupsMembers) { + try { + const { groupId, limit, startAfter } = params; + const sp = await this.getInServiceSP(); + let url = `${sp.endpoint}?group-members&group-id=${groupId}`; + + if (limit) { + url += `&limit=${limit}`; + } + if (startAfter) { + url += `&start-after=${startAfter}`; + } + + const result = await this.spClient.callApi( + url, + { + headers: {}, + method: METHOD_GET, + }, + 3000, + ); + const { status } = result; + if (!result.ok) { + const xmlError = await result.text(); + const { code, message } = await parseError(xmlError); + throw { + code: code || -1, + message: message || 'error', + statusCode: status, + }; + } + + const xmlData = await result.text(); + const res = await parseListGroupsMembersResponse(xmlData); + + return { + code: 0, + message: 'success', + statusCode: status, + body: res, + }; + } catch (error: any) { + return { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; + } + } } diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts b/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts new file mode 100644 index 00000000..c35142fe --- /dev/null +++ b/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts @@ -0,0 +1,12 @@ +import { ListGroupsMembersResponse } from '@/types'; +import { XMLParser } from 'fast-xml-parser'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_group_members +export const parseListGroupsMembersResponse = async (data: string) => { + const xmlParser = new XMLParser({ + parseTagValue: false, + }); + const res = xmlParser.parse(data) as ListGroupsMembersResponse; + + return res; +}; diff --git a/packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts new file mode 100644 index 00000000..05fcb330 --- /dev/null +++ b/packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts @@ -0,0 +1,18 @@ +export interface ListGroupsMembersResponse { + GfSpGetGroupMembersResponse: GfSpGetGroupMembersResponse; +} + +export interface GfSpGetGroupMembersResponse { + Groups: Group[]; +} + +interface Group { + AccountId: string; + Operator: string; + CreateAt: number; + CreateTime: number; + UpdateAt: number; + UpdateTime: number; + Removed: boolean; + ExpirationTime: string; +} diff --git a/packages/chain-sdk/src/types/sp-xml/ListGroupsResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListGroupsResponse.ts index 82027414..d2755afd 100644 --- a/packages/chain-sdk/src/types/sp-xml/ListGroupsResponse.ts +++ b/packages/chain-sdk/src/types/sp-xml/ListGroupsResponse.ts @@ -4,7 +4,7 @@ export interface ListGroupsResponse { GfSpGetGroupListResponse: GfSpGetGroupListResponse; } -export interface Group { +interface Group { Group: GroupInfo; Operator: string; CreateAt: number; diff --git a/packages/chain-sdk/src/types/sp-xml/index.ts b/packages/chain-sdk/src/types/sp-xml/index.ts index ae865127..b83f7baf 100644 --- a/packages/chain-sdk/src/types/sp-xml/index.ts +++ b/packages/chain-sdk/src/types/sp-xml/index.ts @@ -3,6 +3,7 @@ export * from './GetObjectMetaResponse'; export * from './GetUserBucketsResponse'; export * from './ListBucketReadRecordResponse'; export * from './ListBucketsByIDsResponse'; +export * from './ListGroupsMembersResponse'; export * from './ListGroupsResponse'; export * from './ListObjectsByBucketNameResponse'; export * from './ListObjectsByIDsResponse'; diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index 5e3c6a0b..cede307b 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -291,3 +291,9 @@ export type TVerifyPermissionRequest = { objectName?: string; action: keyof typeof ActionType; }; + +export type TListGroupsMembers = { + groupId: number; + limit?: number; + startAfter?: string; +}; From fcf62832288fa3a67b552d69e321d73690cbc87e Mon Sep 17 00:00:00 2001 From: rrr523 Date: Thu, 31 Aug 2023 18:48:13 +0800 Subject: [PATCH 194/433] feat: ListUserGroups api --- .changeset/fresh-emus-serve.md | 5 ++ .../nextjs/src/components/query/index.tsx | 17 +++++ packages/chain-sdk/src/api/sp.ts | 66 +++++++++++++++++-- .../clients/spclient/spApis/listUserGroups.ts | 38 +++++++++++ .../types/sp-xml/ListGroupsMembersResponse.ts | 3 + .../types/sp-xml/ListUserGroupsResponse.ts | 21 ++++++ packages/chain-sdk/src/types/sp-xml/index.ts | 1 + packages/chain-sdk/src/types/storage.ts | 8 ++- 8 files changed, 154 insertions(+), 5 deletions(-) create mode 100644 .changeset/fresh-emus-serve.md create mode 100644 packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts create mode 100644 packages/chain-sdk/src/types/sp-xml/ListUserGroupsResponse.ts diff --git a/.changeset/fresh-emus-serve.md b/.changeset/fresh-emus-serve.md new file mode 100644 index 00000000..dfbdb39f --- /dev/null +++ b/.changeset/fresh-emus-serve.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Add listUserGroups diff --git a/examples/nextjs/src/components/query/index.tsx b/examples/nextjs/src/components/query/index.tsx index 8399a852..89b0732e 100644 --- a/examples/nextjs/src/components/query/index.tsx +++ b/examples/nextjs/src/components/query/index.tsx @@ -127,6 +127,23 @@ export const QueryComponent = () => { list groups members +
  • + +
  • ); diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index d34eb6bf..00e43f63 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -1,6 +1,7 @@ -import { encodePath } from '@/clients/spclient/auth'; +import { encodePath, HTTPHeaderUserAddress } from '@/clients/spclient/auth'; import { parseListGroupsResponse } from '@/clients/spclient/spApis/listGroups'; import { parseListGroupsMembersResponse } from '@/clients/spclient/spApis/listGroupsMembers'; +import { parseListUserGroupsResponse } from '@/clients/spclient/spApis/listUserGroups'; import { parseError } from '@/clients/spclient/spApis/parseError'; import { parseVerifyPermissionResponse } from '@/clients/spclient/spApis/verifyPermission'; import { SpClient } from '@/clients/spclient/spClient'; @@ -23,8 +24,10 @@ import { IObjectResultType, ListGroupsMembersResponse, ListGroupsResponse, + ListUserGroupsResponse, TListGroups, - TListGroupsMembers, + TListGroupsMembersRequest, + TListUserGroupRequest, TVerifyPermissionRequest, VerifyPermissionResponse, } from '..'; @@ -75,9 +78,11 @@ export interface ISp { listGroups(params: TListGroups): Promise>; listGroupsMembers( - params: TListGroupsMembers, + params: TListGroupsMembersRequest, ): Promise>; + listUserGroups(params: TListUserGroupRequest): Promise>; + getSPUrlByBucket(bucketName: string): Promise; getSPUrlByPrimaryAddr(parimaryAddr: string): Promise; @@ -278,7 +283,7 @@ export class Sp implements ISp { } } - public async listGroupsMembers(params: TListGroupsMembers) { + public async listGroupsMembers(params: TListGroupsMembersRequest) { try { const { groupId, limit, startAfter } = params; const sp = await this.getInServiceSP(); @@ -327,4 +332,57 @@ export class Sp implements ISp { }; } } + + public async listUserGroups(params: TListUserGroupRequest) { + try { + const { address, limit, startAfter } = params; + const sp = await this.getInServiceSP(); + let url = `${sp.endpoint}?user-groups`; + + if (limit) { + url += `&limit=${limit}`; + } + if (startAfter) { + url += `&start-after=${startAfter}`; + } + + const headers = new Headers({ + [HTTPHeaderUserAddress]: address, + }); + const result = await this.spClient.callApi( + url, + { + headers, + method: METHOD_GET, + }, + 3000, + ); + const { status } = result; + if (!result.ok) { + const xmlError = await result.text(); + const { code, message } = await parseError(xmlError); + throw { + code: code || -1, + message: message || 'error', + statusCode: status, + }; + } + + const xmlData = await result.text(); + const res = await parseListUserGroupsResponse(xmlData); + + return { + code: 0, + message: 'success', + statusCode: status, + body: res, + }; + } catch (error: any) { + return { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; + } + } } diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts b/packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts new file mode 100644 index 00000000..8a61cdb1 --- /dev/null +++ b/packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts @@ -0,0 +1,38 @@ +import { ListUserGroupsResponse } from '@/types'; +import { formatGroupInfo } from '@/types/sp-xml/Common'; +import { XMLParser } from 'fast-xml-parser'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_user_groups +export const parseListUserGroupsResponse = async (data: string) => { + const xmlParser = new XMLParser({ + parseTagValue: false, + }); + + const res = xmlParser.parse(data) as ListUserGroupsResponse; + + let Groups = res.GfSpGetUserGroupsResponse.Groups || []; + if (Groups) { + if (!Array.isArray(Groups)) { + Groups = [Groups]; + } + + Groups = Groups.map((item) => { + return { + ...item, + CreateAt: Number(item.CreateAt), + CreateTime: Number(item.CreateTime), + UpdateAt: Number(item.UpdateAt), + UpdateTime: Number(item.UpdateTime), + // @ts-ignore + Removed: convertStrToBool(item.Removed), + Group: formatGroupInfo(item.Group), + }; + }); + } + + res.GfSpGetUserGroupsResponse = { + Groups: Groups, + }; + + return res; +}; diff --git a/packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts index 05fcb330..7c4b9441 100644 --- a/packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts +++ b/packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts @@ -1,3 +1,5 @@ +import { GroupInfo } from './Common'; + export interface ListGroupsMembersResponse { GfSpGetGroupMembersResponse: GfSpGetGroupMembersResponse; } @@ -7,6 +9,7 @@ export interface GfSpGetGroupMembersResponse { } interface Group { + Group: GroupInfo; AccountId: string; Operator: string; CreateAt: number; diff --git a/packages/chain-sdk/src/types/sp-xml/ListUserGroupsResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListUserGroupsResponse.ts new file mode 100644 index 00000000..b89398af --- /dev/null +++ b/packages/chain-sdk/src/types/sp-xml/ListUserGroupsResponse.ts @@ -0,0 +1,21 @@ +import { GroupInfo } from './Common'; + +export interface ListUserGroupsResponse { + GfSpGetUserGroupsResponse: GfSpGetUserGroupsResponse; +} + +export interface GfSpGetUserGroupsResponse { + Groups: Group[]; +} + +interface Group { + Group: GroupInfo; + AccountId: string; + Operator: string; + CreateAt: number; + CreateTime: number; + UpdateAt: number; + UpdateTime: number; + Removed: boolean; + ExpirationTime: string; +} diff --git a/packages/chain-sdk/src/types/sp-xml/index.ts b/packages/chain-sdk/src/types/sp-xml/index.ts index b83f7baf..3bf8b1a8 100644 --- a/packages/chain-sdk/src/types/sp-xml/index.ts +++ b/packages/chain-sdk/src/types/sp-xml/index.ts @@ -7,6 +7,7 @@ export * from './ListGroupsMembersResponse'; export * from './ListGroupsResponse'; export * from './ListObjectsByBucketNameResponse'; export * from './ListObjectsByIDsResponse'; +export * from './ListUserGroupsResponse'; export * from './ReadQuotaResponse'; export * from './RequestErrorResponse'; export * from './RequestNonceResponse'; diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index cede307b..03d91952 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -292,8 +292,14 @@ export type TVerifyPermissionRequest = { action: keyof typeof ActionType; }; -export type TListGroupsMembers = { +export type TListGroupsMembersRequest = { groupId: number; limit?: number; startAfter?: string; }; + +export type TListUserGroupRequest = { + address: string; + limit?: number; + startAfter?: string; +}; From ad1d7d3fa54fae50aed1b4e1d45a152e2e3fb08c Mon Sep 17 00:00:00 2001 From: rrr523 Date: Thu, 31 Aug 2023 19:00:25 +0800 Subject: [PATCH 195/433] feat: Add listUserOwnedGroups api --- .changeset/orange-berries-jog.md | 5 ++ .../nextjs/src/components/query/index.tsx | 17 ++++++ packages/chain-sdk/src/api/sp.ts | 60 +++++++++++++++++++ .../src/clients/spclient/spApis/listGroups.ts | 2 +- .../spclient/spApis/listGroupsMembers.ts | 21 +++++++ .../clients/spclient/spApis/listUserGroups.ts | 2 +- .../spclient/spApis/listUserOwnedGroups.ts | 38 ++++++++++++ .../sp-xml/ListUserOwnedGroupsResponse.ts | 21 +++++++ packages/chain-sdk/src/types/storage.ts | 6 ++ 9 files changed, 170 insertions(+), 2 deletions(-) create mode 100644 .changeset/orange-berries-jog.md create mode 100644 packages/chain-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts create mode 100644 packages/chain-sdk/src/types/sp-xml/ListUserOwnedGroupsResponse.ts diff --git a/.changeset/orange-berries-jog.md b/.changeset/orange-berries-jog.md new file mode 100644 index 00000000..95cc9f03 --- /dev/null +++ b/.changeset/orange-berries-jog.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Add `listUserOwnedGroups` api diff --git a/examples/nextjs/src/components/query/index.tsx b/examples/nextjs/src/components/query/index.tsx index 89b0732e..f07536f4 100644 --- a/examples/nextjs/src/components/query/index.tsx +++ b/examples/nextjs/src/components/query/index.tsx @@ -144,6 +144,23 @@ export const QueryComponent = () => { list user groups +
  • + +
  • ); diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index 00e43f63..daa4732b 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -2,10 +2,12 @@ import { encodePath, HTTPHeaderUserAddress } from '@/clients/spclient/auth'; import { parseListGroupsResponse } from '@/clients/spclient/spApis/listGroups'; import { parseListGroupsMembersResponse } from '@/clients/spclient/spApis/listGroupsMembers'; import { parseListUserGroupsResponse } from '@/clients/spclient/spApis/listUserGroups'; +import { parseListUserOwnedGroupsResponse } from '@/clients/spclient/spApis/listUserOwnedGroups'; import { parseError } from '@/clients/spclient/spApis/parseError'; import { parseVerifyPermissionResponse } from '@/clients/spclient/spApis/verifyPermission'; import { SpClient } from '@/clients/spclient/spClient'; import { METHOD_GET, NORMAL_ERROR_CODE } from '@/constants/http'; +import { ListUserOwnedGroupsResponse } from '@/types/sp-xml/ListUserOwnedGroupsResponse'; import { actionTypeFromJSON } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; import { QueryGlobalSpStorePriceByTimeRequest, @@ -28,6 +30,7 @@ import { TListGroups, TListGroupsMembersRequest, TListUserGroupRequest, + TListUserOwnedGroupRequest, TVerifyPermissionRequest, VerifyPermissionResponse, } from '..'; @@ -83,6 +86,10 @@ export interface ISp { listUserGroups(params: TListUserGroupRequest): Promise>; + listUserOwnedGroups( + params: TListUserOwnedGroupRequest, + ): Promise>; + getSPUrlByBucket(bucketName: string): Promise; getSPUrlByPrimaryAddr(parimaryAddr: string): Promise; @@ -385,4 +392,57 @@ export class Sp implements ISp { }; } } + + public async listUserOwnedGroups(params: TListUserOwnedGroupRequest) { + try { + const { address, limit, startAfter } = params; + const sp = await this.getInServiceSP(); + let url = `${sp.endpoint}?owned-groups`; + + if (limit) { + url += `&limit=${limit}`; + } + if (startAfter) { + url += `&start-after=${startAfter}`; + } + + const headers = new Headers({ + [HTTPHeaderUserAddress]: address, + }); + const result = await this.spClient.callApi( + url, + { + headers, + method: METHOD_GET, + }, + 3000, + ); + const { status } = result; + if (!result.ok) { + const xmlError = await result.text(); + const { code, message } = await parseError(xmlError); + throw { + code: code || -1, + message: message || 'error', + statusCode: status, + }; + } + + const xmlData = await result.text(); + const res = await parseListUserOwnedGroupsResponse(xmlData); + + return { + code: 0, + message: 'success', + statusCode: status, + body: res, + }; + } catch (error: any) { + return { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; + } + } } diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts b/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts index 56ef4285..5a4f2170 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts @@ -1,5 +1,5 @@ import { ListGroupsResponse } from '@/types'; -import { formatGroupInfo } from '@/types/sp-xml/Common'; +import { formatGroupInfo, convertStrToBool } from '@/types/sp-xml/Common'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_group_list diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts b/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts index c35142fe..bc3e76cf 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts @@ -1,4 +1,5 @@ import { ListGroupsMembersResponse } from '@/types'; +import { formatGroupInfo, convertStrToBool } from '@/types/sp-xml/Common'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_group_members @@ -8,5 +9,25 @@ export const parseListGroupsMembersResponse = async (data: string) => { }); const res = xmlParser.parse(data) as ListGroupsMembersResponse; + let Groups = res.GfSpGetGroupMembersResponse.Groups || []; + if (Groups) { + if (!Array.isArray(Groups)) { + Groups = [Groups]; + } + + Groups = Groups.map((item) => { + return { + ...item, + CreateAt: Number(item.CreateAt), + CreateTime: Number(item.CreateTime), + UpdateAt: Number(item.UpdateAt), + UpdateTime: Number(item.UpdateTime), + // @ts-ignore + Removed: convertStrToBool(item.Removed), + Group: formatGroupInfo(item.Group), + }; + }); + } + return res; }; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts b/packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts index 8a61cdb1..d9173219 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts @@ -1,5 +1,5 @@ import { ListUserGroupsResponse } from '@/types'; -import { formatGroupInfo } from '@/types/sp-xml/Common'; +import { formatGroupInfo, convertStrToBool } from '@/types/sp-xml/Common'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_user_groups diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts b/packages/chain-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts new file mode 100644 index 00000000..d1ef8bcb --- /dev/null +++ b/packages/chain-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts @@ -0,0 +1,38 @@ +import { formatGroupInfo, convertStrToBool } from '@/types/sp-xml/Common'; +import { ListUserOwnedGroupsResponse } from '@/types/sp-xml/ListUserOwnedGroupsResponse'; +import { XMLParser } from 'fast-xml-parser'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_user_owned_groups +export const parseListUserOwnedGroupsResponse = async (data: string) => { + const xmlParser = new XMLParser({ + parseTagValue: false, + }); + + const res = xmlParser.parse(data) as ListUserOwnedGroupsResponse; + + let Groups = res.GfSpGetUserOwnedGroupsResponse.Groups || []; + if (Groups) { + if (!Array.isArray(Groups)) { + Groups = [Groups]; + } + + Groups = Groups.map((item) => { + return { + ...item, + CreateAt: Number(item.CreateAt), + CreateTime: Number(item.CreateTime), + UpdateAt: Number(item.UpdateAt), + UpdateTime: Number(item.UpdateTime), + // @ts-ignore + Removed: convertStrToBool(item.Removed), + Group: formatGroupInfo(item.Group), + }; + }); + } + + res.GfSpGetUserOwnedGroupsResponse = { + Groups: Groups, + }; + + return res; +}; diff --git a/packages/chain-sdk/src/types/sp-xml/ListUserOwnedGroupsResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListUserOwnedGroupsResponse.ts new file mode 100644 index 00000000..c3e1a058 --- /dev/null +++ b/packages/chain-sdk/src/types/sp-xml/ListUserOwnedGroupsResponse.ts @@ -0,0 +1,21 @@ +import { GroupInfo } from './Common'; + +export interface ListUserOwnedGroupsResponse { + GfSpGetUserOwnedGroupsResponse: GfSpGetUserOwnedGroupsResponse; +} + +export interface GfSpGetUserOwnedGroupsResponse { + Groups: Group[]; +} + +interface Group { + Group: GroupInfo; + AccountId: string; + Operator: string; + CreateAt: number; + CreateTime: number; + UpdateAt: number; + UpdateTime: number; + Removed: boolean; + ExpirationTime: string; +} diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index 03d91952..f5675de7 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -303,3 +303,9 @@ export type TListUserGroupRequest = { limit?: number; startAfter?: string; }; + +export type TListUserOwnedGroupRequest = { + address: string; + limit?: number; + startAfter?: string; +}; From 1769cb36206f372c916ea483610f6d63d121c091 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 31 Aug 2023 11:03:34 +0000 Subject: [PATCH 196/433] chore: [ci] release (alpha) --- .changeset/pre.json | 8 ++++++++ examples/nextjs/CHANGELOG.md | 15 ++++++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 15 ++++++++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 36 +++++++++++++++++++++++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 77 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 9be9b4c5..ee408d6a 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -20,20 +20,26 @@ "eighty-parrots-tap", "eleven-numbers-cover", "fair-impalas-approve", + "famous-goats-visit", "fast-drinks-move", "five-mice-whisper", "flat-cameras-divide", "flat-mugs-collect", + "fresh-emus-serve", "giant-panthers-collect", "giant-toys-march", "gold-bugs-occur", + "gold-eyes-push", "gold-singers-grab", "gorgeous-ligers-give", "gorgeous-penguins-invite", + "great-readers-breathe", "grumpy-tables-drop", "happy-monkeys-exist", + "honest-countries-hear", "honest-tables-lick", "itchy-candles-fold", + "itchy-pants-search", "large-jokes-fly", "late-mice-count", "lazy-needles-shave", @@ -43,9 +49,11 @@ "mighty-deers-build", "mighty-mangos-exercise", "modern-ties-give", + "nice-dodos-sip", "nice-geckos-think", "ninety-jokes-study", "odd-hotels-glow", + "orange-berries-jog", "plenty-squids-walk", "poor-steaks-warn", "proud-dragons-repair", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 03bb5bb6..f1ba651c 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,20 @@ # @demo/wallet +## 0.0.5-alpha.27 + +### Patch Changes + +- Updated dependencies + [[`faf5d47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/faf5d474d626010ef9a4d83bf96491b66d265d35), + [`fcf6283`](https://github.com/bnb-chain/greenfield-js-sdk/commit/fcf62832288fa3a67b552d69e321d73690cbc87e), + [`7d69f2e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7d69f2e3d044fc5f4c50d5251f99d8e04fb39b86), + [`0084053`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00840538a95e830752dd0ea07f52990303dccf95), + [`9710b5b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/9710b5bd294484c8a8021193f649b006481e9cd5), + [`ea31d73`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ea31d738124058d75b251d6a897f924a122b1471), + [`12bd37c`](https://github.com/bnb-chain/greenfield-js-sdk/commit/12bd37ccdefe789660409882c7045e2cf2a60ff6), + [`ad1d7d3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ad1d7d3fa54fae50aed1b4e1d45a152e2e3fb08c)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.27 + ## 0.0.5-alpha.26 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index f4070a20..82d6799d 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.5-alpha.26", + "version": "0.0.5-alpha.27", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 0bb999fd..b89d6e58 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,20 @@ # @demo/nodejs +## 0.0.8-alpha.27 + +### Patch Changes + +- Updated dependencies + [[`faf5d47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/faf5d474d626010ef9a4d83bf96491b66d265d35), + [`fcf6283`](https://github.com/bnb-chain/greenfield-js-sdk/commit/fcf62832288fa3a67b552d69e321d73690cbc87e), + [`7d69f2e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7d69f2e3d044fc5f4c50d5251f99d8e04fb39b86), + [`0084053`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00840538a95e830752dd0ea07f52990303dccf95), + [`9710b5b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/9710b5bd294484c8a8021193f649b006481e9cd5), + [`ea31d73`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ea31d738124058d75b251d6a897f924a122b1471), + [`12bd37c`](https://github.com/bnb-chain/greenfield-js-sdk/commit/12bd37ccdefe789660409882c7045e2cf2a60ff6), + [`ad1d7d3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ad1d7d3fa54fae50aed1b4e1d45a152e2e3fb08c)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.27 + ## 0.0.8-alpha.26 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 55cf4994..78438958 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.8-alpha.26", + "version": "0.0.8-alpha.27", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index f2d7282c..0b390a69 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,41 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.4-alpha.27 + +### Patch Changes + +- [#290](https://github.com/bnb-chain/greenfield-js-sdk/pull/290) + [`faf5d47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/faf5d474d626010ef9a4d83bf96491b66d265d35) + Thanks [@rrr523](https://github.com/rrr523)! - feat: `ListBucketsByIds` api + +- [#290](https://github.com/bnb-chain/greenfield-js-sdk/pull/290) + [`fcf6283`](https://github.com/bnb-chain/greenfield-js-sdk/commit/fcf62832288fa3a67b552d69e321d73690cbc87e) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add listUserGroups + +- [#290](https://github.com/bnb-chain/greenfield-js-sdk/pull/290) + [`7d69f2e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7d69f2e3d044fc5f4c50d5251f99d8e04fb39b86) + Thanks [@rrr523](https://github.com/rrr523)! - feat: ListGroupsMembers + +- [#290](https://github.com/bnb-chain/greenfield-js-sdk/pull/290) + [`0084053`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00840538a95e830752dd0ea07f52990303dccf95) + Thanks [@rrr523](https://github.com/rrr523)! - feat: ListGroup -> ListGroups + +- [#290](https://github.com/bnb-chain/greenfield-js-sdk/pull/290) + [`9710b5b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/9710b5bd294484c8a8021193f649b006481e9cd5) + Thanks [@rrr523](https://github.com/rrr523)! - feat: `ListObjectByIds` api + +- [#290](https://github.com/bnb-chain/greenfield-js-sdk/pull/290) + [`ea31d73`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ea31d738124058d75b251d6a897f924a122b1471) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add `ListBucketReadRecords` api + +- [#290](https://github.com/bnb-chain/greenfield-js-sdk/pull/290) + [`12bd37c`](https://github.com/bnb-chain/greenfield-js-sdk/commit/12bd37ccdefe789660409882c7045e2cf2a60ff6) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add `verifyPermission` api + +- [#290](https://github.com/bnb-chain/greenfield-js-sdk/pull/290) + [`ad1d7d3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ad1d7d3fa54fae50aed1b4e1d45a152e2e3fb08c) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add `listUserOwnedGroups` api + ## 0.2.4-alpha.26 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 65b6f27a..e1eaf9fe 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.4-alpha.26", + "version": "0.2.4-alpha.27", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 7869b75fa16ef8f71daad0a00b0d10ba7fb13fb3 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Thu, 31 Aug 2023 21:08:59 +0800 Subject: [PATCH 197/433] feat: Sort query (#292) * feat: Sort query * Create healthy-chicken-beam.md --- .changeset/healthy-chicken-beam.md | 6 ++++++ .../src/components/bucket/info/index.tsx | 1 - .../src/components/object/info/index.tsx | 4 +--- packages/chain-sdk/src/api/bucket.ts | 9 ++++++--- packages/chain-sdk/src/api/objectt.ts | 15 ++++++--------- .../chain-sdk/src/clients/spclient/auth.ts | 10 ++++++++++ .../clients/spclient/spApis/bucketApproval.ts | 6 +++++- .../spclient/spApis/listBucketReadRecords.ts | 19 +++++++++++++------ .../spclient/spApis/migrateApproval.ts | 6 +++++- .../clients/spclient/spApis/objectApproval.ts | 6 +++++- .../spclient/spApis/queryBucketReadQuota.ts | 7 ++++++- .../greenfield/storage/MsgMirrorGroup.ts | 12 ++++++++---- .../sp-xml/ListBucketReadRecordResponse.ts | 4 ++-- packages/chain-sdk/src/types/storage.ts | 1 - 14 files changed, 73 insertions(+), 33 deletions(-) create mode 100644 .changeset/healthy-chicken-beam.md diff --git a/.changeset/healthy-chicken-beam.md b/.changeset/healthy-chicken-beam.md new file mode 100644 index 00000000..7c437912 --- /dev/null +++ b/.changeset/healthy-chicken-beam.md @@ -0,0 +1,6 @@ +--- +"@demo/wallet": patch +"@bnb-chain/greenfield-js-sdk": patch +--- + +feat: Sort query diff --git a/examples/nextjs/src/components/bucket/info/index.tsx b/examples/nextjs/src/components/bucket/info/index.tsx index 2106f3ca..5aefc5ab 100644 --- a/examples/nextjs/src/components/bucket/info/index.tsx +++ b/examples/nextjs/src/components/bucket/info/index.tsx @@ -43,7 +43,6 @@ export const BucketInfo = () => { bucketName, startTimeStamp, endTimeStamp, - listReadRecord: 'null', maxRecords: 1000, }, { diff --git a/examples/nextjs/src/components/object/info/index.tsx b/examples/nextjs/src/components/object/info/index.tsx index 0f882c43..ed68c0f9 100644 --- a/examples/nextjs/src/components/object/info/index.tsx +++ b/examples/nextjs/src/components/object/info/index.tsx @@ -93,13 +93,11 @@ export const ObjectInfo = () => { bucketName, objectName, queryMap: { - view: '0', + view: '1', 'X-Gnfd-User-Address': address, 'X-Gnfd-App-Domain': window.location.origin, 'X-Gnfd-Expiry-Timestamp': '2023-09-03T09%3A23%3A39Z', }, - // queryRaw: - // 'X-Gnfd-App-Domain=http%3A%2F%2Flocalhost%3A3000&X-Gnfd-Expiry-Timestamp=2023-09-03T09%3A23%3A39Z&X-Gnfd-User-Address=0x1C893441AB6c1A75E01887087ea508bE8e07AAae&view=0', }, { type: 'EDDSA', diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index 030b9d64..ae8ce4e8 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -1,4 +1,4 @@ -import { HTTPHeaderUserAddress } from '@/clients/spclient/auth'; +import { getSortQuery, HTTPHeaderUserAddress } from '@/clients/spclient/auth'; import { getBucketApprovalMetaInfo } from '@/clients/spclient/spApis/bucketApproval'; import { parseGetBucketMetaResponse } from '@/clients/spclient/spApis/getBucketMeta'; import { parseGetUserBucketsResponse } from '@/clients/spclient/spApis/getUserBuckets'; @@ -595,7 +595,10 @@ export class Bucket implements IBucket { if (!isValidBucketName(bucketName)) { throw new Error('Error bucket name'); } - const query = 'bucket-meta'; + const queryMap = { + 'bucket-meta': '', + }; + const query = getSortQuery(queryMap); const path = bucketName; const url = `${endpoint}/${path}?${query}`; const result = await this.spClient.callApi(url, { @@ -669,7 +672,7 @@ export class Bucket implements IBucket { const { ids } = params; const sp = await this.sp.getInServiceSP(); - const url = `${sp.endpoint}?buckets-query=null&ids=${ids.join(',')}`; + const url = `${sp.endpoint}?ids=${ids.join(',')}&buckets-query=null`; const result = await this.spClient.callApi( url, diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index e8b0aa44..f25f3dc3 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -1,4 +1,4 @@ -import { encodePath, getMsgToSign, secpSign } from '@/clients/spclient/auth'; +import { encodePath, getMsgToSign, getSortQuery, secpSign } from '@/clients/spclient/auth'; import { getGetObjectMetaInfo } from '@/clients/spclient/spApis/getObject'; import { parseGetObjectMetaResponse } from '@/clients/spclient/spApis/getObjectMeta'; import { parseListObjectsByBucketNameResponse } from '@/clients/spclient/spApis/listObjectsByBucket'; @@ -464,13 +464,7 @@ export class Objectt implements IObject { const path = '/' + encodePath(objectName); const url = generateUrlByBucketName(endpoint, bucketName) + path; - const queryParams = new URLSearchParams(); - for (const k in queryMap) { - queryParams.append(k, queryMap[k]); - } - queryParams.sort(); - - const queryRaw = queryParams.toString(); + const queryRaw = getSortQuery(queryMap); const canonicalRequest = [ METHOD_GET, @@ -678,7 +672,10 @@ export class Objectt implements IObject { throw new Error('Error object name'); } - const query = 'object-meta'; + const queryMap = { + 'object-meta': '', + }; + const query = getSortQuery(queryMap); const path = encodePath(objectName); const url = `${generateUrlByBucketName(endpoint, bucketName)}/${path}?${query}`; const result = await this.spClient.callApi(url, { diff --git a/packages/chain-sdk/src/clients/spclient/auth.ts b/packages/chain-sdk/src/clients/spclient/auth.ts index 4275bfeb..bb38700e 100644 --- a/packages/chain-sdk/src/clients/spclient/auth.ts +++ b/packages/chain-sdk/src/clients/spclient/auth.ts @@ -200,3 +200,13 @@ export const encodePath = (pathName: string) => { } return encodedPathName; }; + +export const getSortQuery = (queryMap: Record) => { + const queryParams = new URLSearchParams(); + for (const k in queryMap) { + queryParams.append(k, queryMap[k]); + } + queryParams.sort(); + + return queryParams.toString(); +}; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts b/packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts index 427eab7e..9d6ca5fd 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts @@ -1,11 +1,15 @@ import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; import { ICreateBucketMsgType, ReqMeta } from '@/types'; import { toHex, utf8ToBytes } from 'ethereum-cryptography/utils'; +import { getSortQuery } from '../auth'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_approval export const getBucketApprovalMetaInfo = async (endpoint: string, msg: ICreateBucketMsgType) => { const path = '/greenfield/admin/v1/get-approval'; - const query = 'action=CreateBucket'; + const queryMap = { + action: 'CreateBucket', + }; + const query = getSortQuery(queryMap); const url = `${endpoint}${path}?${query}`; const unSignedMessageInHex = toHex(utf8ToBytes(JSON.stringify(msg))); diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts b/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts index 02c05951..ce80b6f3 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts @@ -4,6 +4,7 @@ import { formatReadRecord } from '@/types/sp-xml/Common'; import { ListBucketReadRecordResponse } from '@/types/sp-xml/ListBucketReadRecordResponse'; import { generateUrlByBucketName } from '@/utils'; import { XMLParser } from 'fast-xml-parser'; +import { getSortQuery } from '../auth'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_bucket_read_records export const parseListBucketReadRecordResponse = async (data: string) => { @@ -13,7 +14,7 @@ export const parseListBucketReadRecordResponse = async (data: string) => { const res = xmlParser.parse(data) as ListBucketReadRecordResponse; - let readRecords = res.ListBucketReadRecordResult.ReadRecords || []; + let readRecords = res.GetBucketReadQuotaResult?.ReadRecords || []; if (readRecords) { if (!Array.isArray(readRecords)) { readRecords = [readRecords]; @@ -22,8 +23,8 @@ export const parseListBucketReadRecordResponse = async (data: string) => { readRecords = readRecords.map((readRecord) => formatReadRecord(readRecord)); } - res.ListBucketReadRecordResult = { - ...res.ListBucketReadRecordResult, + res.GetBucketReadQuotaResult = { + ...res.GetBucketReadQuotaResult, ReadRecords: readRecords, }; @@ -34,10 +35,16 @@ export const getListBucketReadRecordMetaInfo = async ( endpoint: string, params: TListBucketReadRecord, ) => { - const { bucketName, endTimeStamp, listReadRecord, maxRecords, startTimeStamp } = params; - + const { bucketName, endTimeStamp, maxRecords, startTimeStamp } = params; const path = '/'; - const query = `end-timestamp=${endTimeStamp}&list-read-record=${listReadRecord}&max-records=${maxRecords}&start-timestamp=${startTimeStamp}`; + const queryMap = { + 'list-read-record': 'null', + 'end-timestamp': String(endTimeStamp), + 'max-records': String(maxRecords), + 'start-timestamp': String(startTimeStamp), + }; + const query = getSortQuery(queryMap); + const url = `${generateUrlByBucketName(endpoint, bucketName)}${path}?${query}`; const reqMeta: Partial = { diff --git a/packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts b/packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts index e83a6e61..903039be 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts @@ -1,11 +1,15 @@ import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; import { IMigrateBucketMsgType, ReqMeta } from '@/types'; import { toHex, utf8ToBytes } from 'ethereum-cryptography/utils'; +import { getSortQuery } from '../auth'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_approval export const getMigrateMetaInfo = async (endpoint: string, msg: IMigrateBucketMsgType) => { const path = '/greenfield/admin/v1/get-approval'; - const query = 'action=MigrateBucket'; + const queryMap = { + action: 'MigrateBucket', + }; + const query = getSortQuery(queryMap); const url = `${endpoint}${path}?${query}`; const unSignedMessageInHex = toHex(utf8ToBytes(JSON.stringify(msg))); diff --git a/packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts b/packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts index dab1821a..a30339de 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts @@ -1,11 +1,15 @@ import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; import { ICreateObjectMsgType, ReqMeta } from '@/types'; import { toHex, utf8ToBytes } from 'ethereum-cryptography/utils'; +import { getSortQuery } from '../auth'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_approval export const getObjectApprovalMetaInfo = async (endpoint: string, msg: ICreateObjectMsgType) => { const path = '/greenfield/admin/v1/get-approval'; - const query = 'action=CreateObject'; + const queryMap = { + action: 'CreateObject', + }; + const query = getSortQuery(queryMap); const url = `${endpoint}${path}?${query}`; const unSignedMessageInHex = toHex(utf8ToBytes(JSON.stringify(msg))); diff --git a/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts b/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts index 5ec86d58..98dedde6 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts @@ -3,6 +3,7 @@ import { ReqMeta, TBaseGetBucketReadQuota } from '@/types'; import { ReadQuotaResponse } from '@/types/sp-xml'; import { generateUrlByBucketName } from '@/utils/s3'; import { XMLParser } from 'fast-xml-parser'; +import { getSortQuery } from '../auth'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/query_bucket_read_quota export const getQueryBucketReadQuotaMetaInfo = async ( @@ -17,7 +18,11 @@ export const getQueryBucketReadQuotaMetaInfo = async ( const formattedMonth = finalMonth.toString().padStart(2, '0'); const path = '/'; - const query = `read-quota=null&year-month=${finalYear}-${formattedMonth}`; + const queryMap = { + 'year-month': `${finalYear}-${formattedMonth}`, + 'read-quota': 'null', + }; + const query = getSortQuery(queryMap); const url = `${generateUrlByBucketName(endpoint, bucketName)}${path}?${query}`; const reqMeta: Partial = { diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts index 5b41f86f..8e3fb5be 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts @@ -1,11 +1,11 @@ export const MsgMirrorGroupSDKTypeEIP712 = { Msg1: [ { - name: 'type', - type: 'string', + name: 'dest_chain_id', + type: 'uint32', }, { - name: 'operator', + name: 'group_name', type: 'string', }, { @@ -13,7 +13,11 @@ export const MsgMirrorGroupSDKTypeEIP712 = { type: 'string', }, { - name: 'group_name', + name: 'operator', + type: 'string', + }, + { + name: 'type', type: 'string', }, ], diff --git a/packages/chain-sdk/src/types/sp-xml/ListBucketReadRecordResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListBucketReadRecordResponse.ts index a514a901..ed7906aa 100644 --- a/packages/chain-sdk/src/types/sp-xml/ListBucketReadRecordResponse.ts +++ b/packages/chain-sdk/src/types/sp-xml/ListBucketReadRecordResponse.ts @@ -1,10 +1,10 @@ import { ReadRecord } from './Common'; export interface ListBucketReadRecordResponse { - ListBucketReadRecordResult: ListBucketReadRecordResult; + GetBucketReadQuotaResult: GetBucketReadQuotaResult; } -export interface ListBucketReadRecordResult { +export interface GetBucketReadQuotaResult { NextStartTimestampUs: string; ReadRecords: ReadRecord[]; } diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index f5675de7..ce8b83d1 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -263,7 +263,6 @@ export interface IMigrateBucketMsgType { export type TListBucketReadRecord = { bucketName: string; endpoint?: string; - listReadRecord: string; maxRecords: number; startTimeStamp: number; endTimeStamp: number; From 00f363d296d9212a47b9bbaf7bd687d85c5d6139 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 31 Aug 2023 21:11:54 +0800 Subject: [PATCH 198/433] chore: [ci] release (alpha) (#293) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 12 ++++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 32 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index ee408d6a..46739643 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -36,6 +36,7 @@ "great-readers-breathe", "grumpy-tables-drop", "happy-monkeys-exist", + "healthy-chicken-beam", "honest-countries-hear", "honest-tables-lick", "itchy-candles-fold", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index f1ba651c..25d1884f 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,17 @@ # @demo/wallet +## 0.0.5-alpha.28 + +### Patch Changes + +- [#292](https://github.com/bnb-chain/greenfield-js-sdk/pull/292) + [`7869b75`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7869b75fa16ef8f71daad0a00b0d10ba7fb13fb3) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Sort query + +- Updated dependencies + [[`7869b75`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7869b75fa16ef8f71daad0a00b0d10ba7fb13fb3)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.28 + ## 0.0.5-alpha.27 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 82d6799d..dfcdc91f 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.5-alpha.27", + "version": "0.0.5-alpha.28", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index b89d6e58..5a9fa3ba 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.8-alpha.28 + +### Patch Changes + +- Updated dependencies + [[`7869b75`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7869b75fa16ef8f71daad0a00b0d10ba7fb13fb3)]: + - @bnb-chain/greenfield-js-sdk@0.2.4-alpha.28 + ## 0.0.8-alpha.27 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 78438958..b5e788ed 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.8-alpha.27", + "version": "0.0.8-alpha.28", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 0b390a69..8ab463de 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.4-alpha.28 + +### Patch Changes + +- [#292](https://github.com/bnb-chain/greenfield-js-sdk/pull/292) + [`7869b75`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7869b75fa16ef8f71daad0a00b0d10ba7fb13fb3) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Sort query + ## 0.2.4-alpha.27 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index e1eaf9fe..9c891a28 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.4-alpha.27", + "version": "0.2.4-alpha.28", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From c3c2d308b5e407850546b5470fb3e1e13c175409 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Thu, 31 Aug 2023 21:50:50 +0800 Subject: [PATCH 199/433] chore(exmaple): Group (#294) --- .../src/components/group/info/index.tsx | 15 ++++++++- .../src/components/group/update/index.tsx | 31 ++++++++++++++++++- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/examples/nextjs/src/components/group/info/index.tsx b/examples/nextjs/src/components/group/info/index.tsx index ebeeb69b..bbb8562a 100644 --- a/examples/nextjs/src/components/group/info/index.tsx +++ b/examples/nextjs/src/components/group/info/index.tsx @@ -20,12 +20,25 @@ export const GroupInfo = () => { if (!address) return; const groupInfo = await client.group.headGroup(groupName, address); - console.log('groupInfo', groupInfo); }} > get group info +
    ); }; diff --git a/examples/nextjs/src/components/group/update/index.tsx b/examples/nextjs/src/components/group/update/index.tsx index 7baaec47..ec51a2bc 100644 --- a/examples/nextjs/src/components/group/update/index.tsx +++ b/examples/nextjs/src/components/group/update/index.tsx @@ -56,7 +56,6 @@ export const GroupUpdate = () => { > update group (add) - +
    ); }; From d34e2d2b361a3373dcf13e4b18f67df14c86886d Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Thu, 31 Aug 2023 22:18:10 +0800 Subject: [PATCH 200/433] docs: Update API (#295) --- packages/chain-sdk/README.md | 102 +++++++++++++++++++++++++++-------- 1 file changed, 80 insertions(+), 22 deletions(-) diff --git a/packages/chain-sdk/README.md b/packages/chain-sdk/README.md index 6a95e682..ff716194 100644 --- a/packages/chain-sdk/README.md +++ b/packages/chain-sdk/README.md @@ -6,21 +6,36 @@ npm install @bnb-chain/greenfield-js-sdk ``` -## Usage - -### create client +## Create Client ```js import {Client} from '@bnb-chain/greenfield-js-sdk' + +// Node.js const client = Client.create(GRPC_URL, GREEN_CHAIN_ID); + +// Browser +Client.create(GRPC_URL, String(GREEN_CHAIN_ID), { + zkCryptoUrl: + 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto@0.0.2-alpha.4/dist/node/zk-crypto.wasm', +}); ``` -Apis include transactions and queries. +> Browser need load wasm manually. + +## Usage + +The SDK consists of two parts: + +* Chain: https://docs.bnbchain.org/greenfield-docs/docs/api/blockchain-rest +* Storage Provider: https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest + +## Chain -### Tx Client +### Tx #### 1. Tx construction -take `transfer` for example: +`transfer` tx for example: ```js const transferTx = await client.account.transfer({ @@ -57,14 +72,16 @@ const broadcastRes = await transferTx.broadcast({ }); ``` +#### NOTICE: Signature mode for `Broadcast` + `broadcast` use `window.ethereum` as signature provider by default. If you want to use others, you can set `signTypedDataCallback`: ```js -// trustwallet +// trustwallet: const broadcastRes = await transferTx.broadcast({ - //... + // ... signTypedDataCallback: async (addr: string, message: string) => { return await window.trustwallet.request({ method: 'eth_signTypedData_v4', @@ -74,35 +91,76 @@ const broadcastRes = await transferTx.broadcast({ }); ``` -If you broadcast in Nodejs, you can set `privateKey`: +If you broadcast in Nodejs, you can broadcast a tx by `privateKey`: ```js const broadcastRes = await transferTx.broadcast({ - //... + // ... privateKey: '0x.......' }); ``` -### Query Client +### Query ```js // get account info await client.account.getAccount(address); ``` - -more API: - -* [account](./src/api/account.ts) -* [basic](./src/api/basic.ts) -* [backet](./src/api/backet.ts) -* [challenge](./src/api/challenge.ts) -* [object](./src/api/object.ts) -* [group](./src/api/group.ts) -* [payment](./src/api/payment.ts) -* [sp](./src/api/sp.ts) +Examples: +* [Next.js](../../examples/nextjs/README.md) +* [Node.js](../../examples/nodejs/README.md) ### Storage Provider Client > https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest +SDK support two [authentication type](https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest#authentication-type): + +* ECDSA: It is usually used on Node.js(Because it need to use a private key) +* EDDSA: It is usually used in a browser + +`getBucketReadQuota` as example: +```js +// browser: + +// generate seed: +const allSps = await getAllSps(); +const offchainAuthRes = await client.offchainauth.genOffChainAuthKeyPairAndUpload( + { + sps: allSps, + chainId: GREEN_CHAIN_ID, + expirationMs: 5 * 24 * 60 * 60 * 1000, + domain: window.location.origin, + address: 'your address', + }, + provider: 'wallet provider', +); + +// request sp api +const bucketQuota = await client.bucket.getBucketReadQuota( + { + bucketName, + }, + { + type: 'EDDSA', + seed: offchainAuthRes.seedString, + domain: window.location.origin, + address: 'your address', + }, +); +``` + +```js +// Node.js: +// request sp api +const bucketQuota = await client.bucket.getBucketReadQuota( + { + bucketName, + }, + { + type: 'ECDSA', + privateKey: '0x....' + }, +); +``` From c992a076497f6e1bf86c0ce4fd0ace5facbca474 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 1 Sep 2023 01:10:26 +0800 Subject: [PATCH 201/433] chore: Pre Exit (#296) --- .changeset/pre.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 46739643..b90f0ecc 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -1,5 +1,5 @@ { - "mode": "pre", + "mode": "exit", "tag": "alpha", "initialVersions": { "@demo/wallet": "0.0.2", From adee03354da6ff73898b60b482a768e374e19fe6 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 1 Sep 2023 01:14:08 +0800 Subject: [PATCH 202/433] Pre exit (#297) * chore: Pre Exit * chore: Pre Exit --- .changeset/five-mice-whisper.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 .changeset/five-mice-whisper.md diff --git a/.changeset/five-mice-whisper.md b/.changeset/five-mice-whisper.md deleted file mode 100644 index be328093..00000000 --- a/.changeset/five-mice-whisper.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/zk-crypto': patch ---- - -feat: New Zk package From 3e5d195216d1be89455f88291995fc733954c14c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 1 Sep 2023 01:17:07 +0800 Subject: [PATCH 203/433] chore: [ci] release (#298) Co-authored-by: github-actions[bot] --- .changeset/angry-lies-beam.md | 5 - .changeset/blue-bugs-whisper.md | 5 - .changeset/blue-zebras-cover.md | 5 - .changeset/brave-avocados-impress.md | 5 - .changeset/clever-deers-turn.md | 5 - .changeset/cuddly-radios-wink.md | 5 - .changeset/curly-fishes-bow.md | 6 - .changeset/curvy-bears-kneel.md | 5 - .changeset/eighty-parrots-tap.md | 5 - .changeset/eleven-numbers-cover.md | 5 - .changeset/fair-impalas-approve.md | 5 - .changeset/famous-goats-visit.md | 5 - .changeset/fast-drinks-move.md | 5 - .changeset/flat-cameras-divide.md | 5 - .changeset/flat-mugs-collect.md | 5 - .changeset/fresh-emus-serve.md | 5 - .changeset/giant-panthers-collect.md | 5 - .changeset/giant-toys-march.md | 5 - .changeset/gold-bugs-occur.md | 5 - .changeset/gold-eyes-push.md | 5 - .changeset/gold-singers-grab.md | 5 - .changeset/gorgeous-ligers-give.md | 5 - .changeset/gorgeous-penguins-invite.md | 5 - .changeset/great-readers-breathe.md | 5 - .changeset/grumpy-tables-drop.md | 5 - .changeset/happy-monkeys-exist.md | 5 - .changeset/healthy-chicken-beam.md | 6 - .changeset/honest-countries-hear.md | 5 - .changeset/honest-tables-lick.md | 5 - .changeset/itchy-candles-fold.md | 5 - .changeset/itchy-pants-search.md | 5 - .changeset/large-jokes-fly.md | 5 - .changeset/late-mice-count.md | 5 - .changeset/lazy-needles-shave.md | 5 - .changeset/long-suits-share.md | 5 - .changeset/many-fans-decide.md | 5 - .changeset/mean-horses-change.md | 5 - .changeset/mighty-deers-build.md | 5 - .changeset/mighty-mangos-exercise.md | 5 - .changeset/modern-ties-give.md | 5 - .changeset/nice-dodos-sip.md | 5 - .changeset/nice-geckos-think.md | 5 - .changeset/ninety-jokes-study.md | 5 - .changeset/odd-hotels-glow.md | 5 - .changeset/orange-berries-jog.md | 5 - .changeset/plenty-squids-walk.md | 5 - .changeset/poor-steaks-warn.md | 5 - .changeset/pre.json | 77 -------- .changeset/proud-dragons-repair.md | 5 - .changeset/quiet-numbers-camp.md | 5 - .changeset/rich-carrots-cheer.md | 5 - .changeset/seven-toys-fry.md | 5 - .changeset/silver-avocados-march.md | 5 - .changeset/slimy-buses-smoke.md | 5 - .changeset/soft-phones-give.md | 5 - .changeset/spicy-lizards-think.md | 5 - .changeset/strong-wombats-help.md | 5 - .changeset/stupid-spies-poke.md | 6 - .changeset/swift-pigs-travel.md | 5 - .changeset/tender-sloths-shake.md | 5 - .changeset/twelve-mangos-scream.md | 5 - .changeset/unlucky-suns-look.md | 5 - .changeset/wet-trainers-whisper.md | 5 - .changeset/yellow-plums-cheat.md | 5 - examples/nextjs/CHANGELOG.md | 75 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 67 +++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 251 +++++++++++++++++++++++++ packages/chain-sdk/package.json | 2 +- packages/file-handle/CHANGELOG.md | 8 + packages/file-handle/package.json | 2 +- packages/zk-crypto/CHANGELOG.md | 24 +++ packages/zk-crypto/package.json | 2 +- 74 files changed, 430 insertions(+), 400 deletions(-) delete mode 100644 .changeset/angry-lies-beam.md delete mode 100644 .changeset/blue-bugs-whisper.md delete mode 100644 .changeset/blue-zebras-cover.md delete mode 100644 .changeset/brave-avocados-impress.md delete mode 100644 .changeset/clever-deers-turn.md delete mode 100644 .changeset/cuddly-radios-wink.md delete mode 100644 .changeset/curly-fishes-bow.md delete mode 100644 .changeset/curvy-bears-kneel.md delete mode 100644 .changeset/eighty-parrots-tap.md delete mode 100644 .changeset/eleven-numbers-cover.md delete mode 100644 .changeset/fair-impalas-approve.md delete mode 100644 .changeset/famous-goats-visit.md delete mode 100644 .changeset/fast-drinks-move.md delete mode 100644 .changeset/flat-cameras-divide.md delete mode 100644 .changeset/flat-mugs-collect.md delete mode 100644 .changeset/fresh-emus-serve.md delete mode 100644 .changeset/giant-panthers-collect.md delete mode 100644 .changeset/giant-toys-march.md delete mode 100644 .changeset/gold-bugs-occur.md delete mode 100644 .changeset/gold-eyes-push.md delete mode 100644 .changeset/gold-singers-grab.md delete mode 100644 .changeset/gorgeous-ligers-give.md delete mode 100644 .changeset/gorgeous-penguins-invite.md delete mode 100644 .changeset/great-readers-breathe.md delete mode 100644 .changeset/grumpy-tables-drop.md delete mode 100644 .changeset/happy-monkeys-exist.md delete mode 100644 .changeset/healthy-chicken-beam.md delete mode 100644 .changeset/honest-countries-hear.md delete mode 100644 .changeset/honest-tables-lick.md delete mode 100644 .changeset/itchy-candles-fold.md delete mode 100644 .changeset/itchy-pants-search.md delete mode 100644 .changeset/large-jokes-fly.md delete mode 100644 .changeset/late-mice-count.md delete mode 100644 .changeset/lazy-needles-shave.md delete mode 100644 .changeset/long-suits-share.md delete mode 100644 .changeset/many-fans-decide.md delete mode 100644 .changeset/mean-horses-change.md delete mode 100644 .changeset/mighty-deers-build.md delete mode 100644 .changeset/mighty-mangos-exercise.md delete mode 100644 .changeset/modern-ties-give.md delete mode 100644 .changeset/nice-dodos-sip.md delete mode 100644 .changeset/nice-geckos-think.md delete mode 100644 .changeset/ninety-jokes-study.md delete mode 100644 .changeset/odd-hotels-glow.md delete mode 100644 .changeset/orange-berries-jog.md delete mode 100644 .changeset/plenty-squids-walk.md delete mode 100644 .changeset/poor-steaks-warn.md delete mode 100644 .changeset/pre.json delete mode 100644 .changeset/proud-dragons-repair.md delete mode 100644 .changeset/quiet-numbers-camp.md delete mode 100644 .changeset/rich-carrots-cheer.md delete mode 100644 .changeset/seven-toys-fry.md delete mode 100644 .changeset/silver-avocados-march.md delete mode 100644 .changeset/slimy-buses-smoke.md delete mode 100644 .changeset/soft-phones-give.md delete mode 100644 .changeset/spicy-lizards-think.md delete mode 100644 .changeset/strong-wombats-help.md delete mode 100644 .changeset/stupid-spies-poke.md delete mode 100644 .changeset/swift-pigs-travel.md delete mode 100644 .changeset/tender-sloths-shake.md delete mode 100644 .changeset/twelve-mangos-scream.md delete mode 100644 .changeset/unlucky-suns-look.md delete mode 100644 .changeset/wet-trainers-whisper.md delete mode 100644 .changeset/yellow-plums-cheat.md diff --git a/.changeset/angry-lies-beam.md b/.changeset/angry-lies-beam.md deleted file mode 100644 index f9b89b18..00000000 --- a/.changeset/angry-lies-beam.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Upload Object add AuthType diff --git a/.changeset/blue-bugs-whisper.md b/.changeset/blue-bugs-whisper.md deleted file mode 100644 index 5adcc8f0..00000000 --- a/.changeset/blue-bugs-whisper.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Compatibility new `updateGroupMember` api diff --git a/.changeset/blue-zebras-cover.md b/.changeset/blue-zebras-cover.md deleted file mode 100644 index 50e21ef1..00000000 --- a/.changeset/blue-zebras-cover.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: Download HTTP method diff --git a/.changeset/brave-avocados-impress.md b/.changeset/brave-avocados-impress.md deleted file mode 100644 index d5c61415..00000000 --- a/.changeset/brave-avocados-impress.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -refactor: Tx diff --git a/.changeset/clever-deers-turn.md b/.changeset/clever-deers-turn.md deleted file mode 100644 index 0a01b84a..00000000 --- a/.changeset/clever-deers-turn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: DeepClone EIP712 diff --git a/.changeset/cuddly-radios-wink.md b/.changeset/cuddly-radios-wink.md deleted file mode 100644 index bd28871e..00000000 --- a/.changeset/cuddly-radios-wink.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: download s3 object diff --git a/.changeset/curly-fishes-bow.md b/.changeset/curly-fishes-bow.md deleted file mode 100644 index c3090782..00000000 --- a/.changeset/curly-fishes-bow.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@demo/wallet": patch -"@bnb-chain/greenfield-js-sdk": patch ---- - -feat: Add GetBucketMeta and GetObjectMeta diff --git a/.changeset/curvy-bears-kneel.md b/.changeset/curvy-bears-kneel.md deleted file mode 100644 index e57c8b3d..00000000 --- a/.changeset/curvy-bears-kneel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: Create bucket quota params diff --git a/.changeset/eighty-parrots-tap.md b/.changeset/eighty-parrots-tap.md deleted file mode 100644 index 36177c31..00000000 --- a/.changeset/eighty-parrots-tap.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Changet auth type: `OffChainAuth` -> `EDDSA`, `V1` -> `ECDSA` diff --git a/.changeset/eleven-numbers-cover.md b/.changeset/eleven-numbers-cover.md deleted file mode 100644 index 8f0793c0..00000000 --- a/.changeset/eleven-numbers-cover.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: Feegrant add expiration time diff --git a/.changeset/fair-impalas-approve.md b/.changeset/fair-impalas-approve.md deleted file mode 100644 index ed08b09c..00000000 --- a/.changeset/fair-impalas-approve.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Migrate bucket diff --git a/.changeset/famous-goats-visit.md b/.changeset/famous-goats-visit.md deleted file mode 100644 index ab97ed85..00000000 --- a/.changeset/famous-goats-visit.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: `ListBucketsByIds` api diff --git a/.changeset/fast-drinks-move.md b/.changeset/fast-drinks-move.md deleted file mode 100644 index 863605bb..00000000 --- a/.changeset/fast-drinks-move.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: New API getObjectPreviewUrl diff --git a/.changeset/flat-cameras-divide.md b/.changeset/flat-cameras-divide.md deleted file mode 100644 index f566a26c..00000000 --- a/.changeset/flat-cameras-divide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: convert XML enum to number diff --git a/.changeset/flat-mugs-collect.md b/.changeset/flat-mugs-collect.md deleted file mode 100644 index 0f76c824..00000000 --- a/.changeset/flat-mugs-collect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: Payment disableRefund api addr diff --git a/.changeset/fresh-emus-serve.md b/.changeset/fresh-emus-serve.md deleted file mode 100644 index dfbdb39f..00000000 --- a/.changeset/fresh-emus-serve.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Add listUserGroups diff --git a/.changeset/giant-panthers-collect.md b/.changeset/giant-panthers-collect.md deleted file mode 100644 index 89dfb86a..00000000 --- a/.changeset/giant-panthers-collect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: Gap time diff --git a/.changeset/giant-toys-march.md b/.changeset/giant-toys-march.md deleted file mode 100644 index 41854586..00000000 --- a/.changeset/giant-toys-march.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Replace xml2js for universal usage browser and nodejs diff --git a/.changeset/gold-bugs-occur.md b/.changeset/gold-bugs-occur.md deleted file mode 100644 index 9d32b543..00000000 --- a/.changeset/gold-bugs-occur.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Create Bucket add Payment address diff --git a/.changeset/gold-eyes-push.md b/.changeset/gold-eyes-push.md deleted file mode 100644 index ba7a751d..00000000 --- a/.changeset/gold-eyes-push.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: ListGroupsMembers diff --git a/.changeset/gold-singers-grab.md b/.changeset/gold-singers-grab.md deleted file mode 100644 index 632de920..00000000 --- a/.changeset/gold-singers-grab.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: Cross Headers diff --git a/.changeset/gorgeous-ligers-give.md b/.changeset/gorgeous-ligers-give.md deleted file mode 100644 index 215c5692..00000000 --- a/.changeset/gorgeous-ligers-give.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: XML boolean parse diff --git a/.changeset/gorgeous-penguins-invite.md b/.changeset/gorgeous-penguins-invite.md deleted file mode 100644 index 6f6aac8f..00000000 --- a/.changeset/gorgeous-penguins-invite.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: ReadQuota diff --git a/.changeset/great-readers-breathe.md b/.changeset/great-readers-breathe.md deleted file mode 100644 index f329d02e..00000000 --- a/.changeset/great-readers-breathe.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: ListGroup -> ListGroups diff --git a/.changeset/grumpy-tables-drop.md b/.changeset/grumpy-tables-drop.md deleted file mode 100644 index bc69ed82..00000000 --- a/.changeset/grumpy-tables-drop.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Feegrant api add timestamp diff --git a/.changeset/happy-monkeys-exist.md b/.changeset/happy-monkeys-exist.md deleted file mode 100644 index 88cbe934..00000000 --- a/.changeset/happy-monkeys-exist.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Update Bucket Info diff --git a/.changeset/healthy-chicken-beam.md b/.changeset/healthy-chicken-beam.md deleted file mode 100644 index 7c437912..00000000 --- a/.changeset/healthy-chicken-beam.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@demo/wallet": patch -"@bnb-chain/greenfield-js-sdk": patch ---- - -feat: Sort query diff --git a/.changeset/honest-countries-hear.md b/.changeset/honest-countries-hear.md deleted file mode 100644 index d7d65aae..00000000 --- a/.changeset/honest-countries-hear.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: `ListObjectByIds` api diff --git a/.changeset/honest-tables-lick.md b/.changeset/honest-tables-lick.md deleted file mode 100644 index 8bc9d560..00000000 --- a/.changeset/honest-tables-lick.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Refactor Sp client and supply custom http request for meteInfo diff --git a/.changeset/itchy-candles-fold.md b/.changeset/itchy-candles-fold.md deleted file mode 100644 index 32e449e7..00000000 --- a/.changeset/itchy-candles-fold.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Upgrade types and update SP API: `getQueryGlobalSpStorePriceByTime` `getQuerySpStoragePrice` diff --git a/.changeset/itchy-pants-search.md b/.changeset/itchy-pants-search.md deleted file mode 100644 index 13acdcc9..00000000 --- a/.changeset/itchy-pants-search.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Add `ListBucketReadRecords` api diff --git a/.changeset/large-jokes-fly.md b/.changeset/large-jokes-fly.md deleted file mode 100644 index 1bcab6cd..00000000 --- a/.changeset/large-jokes-fly.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: Dynamic add and delete members string array diff --git a/.changeset/late-mice-count.md b/.changeset/late-mice-count.md deleted file mode 100644 index cce6dd7a..00000000 --- a/.changeset/late-mice-count.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: Common Prefix XML parse as array diff --git a/.changeset/lazy-needles-shave.md b/.changeset/lazy-needles-shave.md deleted file mode 100644 index f48b049d..00000000 --- a/.changeset/lazy-needles-shave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: Bucket XML type diff --git a/.changeset/long-suits-share.md b/.changeset/long-suits-share.md deleted file mode 100644 index 1bea55a6..00000000 --- a/.changeset/long-suits-share.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: EncodePath diff --git a/.changeset/many-fans-decide.md b/.changeset/many-fans-decide.md deleted file mode 100644 index afca17fb..00000000 --- a/.changeset/many-fans-decide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: `getCreateBucketApproval` and `createBucket` add `authType` params diff --git a/.changeset/mean-horses-change.md b/.changeset/mean-horses-change.md deleted file mode 100644 index c5f2d350..00000000 --- a/.changeset/mean-horses-change.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Add payment API diff --git a/.changeset/mighty-deers-build.md b/.changeset/mighty-deers-build.md deleted file mode 100644 index a27cc386..00000000 --- a/.changeset/mighty-deers-build.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Compatibility new payment api diff --git a/.changeset/mighty-mangos-exercise.md b/.changeset/mighty-mangos-exercise.md deleted file mode 100644 index ed08b09c..00000000 --- a/.changeset/mighty-mangos-exercise.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Migrate bucket diff --git a/.changeset/modern-ties-give.md b/.changeset/modern-ties-give.md deleted file mode 100644 index 41fb4f87..00000000 --- a/.changeset/modern-ties-give.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Add XML default value when null diff --git a/.changeset/nice-dodos-sip.md b/.changeset/nice-dodos-sip.md deleted file mode 100644 index c3540173..00000000 --- a/.changeset/nice-dodos-sip.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Add `verifyPermission` api diff --git a/.changeset/nice-geckos-think.md b/.changeset/nice-geckos-think.md deleted file mode 100644 index 21f37fc6..00000000 --- a/.changeset/nice-geckos-think.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-zk-crypto': patch ---- - -chore: Release diff --git a/.changeset/ninety-jokes-study.md b/.changeset/ninety-jokes-study.md deleted file mode 100644 index d4640f05..00000000 --- a/.changeset/ninety-jokes-study.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: CreateBucketApproval diff --git a/.changeset/odd-hotels-glow.md b/.changeset/odd-hotels-glow.md deleted file mode 100644 index bd46de4f..00000000 --- a/.changeset/odd-hotels-glow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Export types diff --git a/.changeset/orange-berries-jog.md b/.changeset/orange-berries-jog.md deleted file mode 100644 index 95cc9f03..00000000 --- a/.changeset/orange-berries-jog.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Add `listUserOwnedGroups` api diff --git a/.changeset/plenty-squids-walk.md b/.changeset/plenty-squids-walk.md deleted file mode 100644 index 2ea58fab..00000000 --- a/.changeset/plenty-squids-walk.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfiled-file-handle': patch ---- - -feat: Using tinygo reduce size diff --git a/.changeset/poor-steaks-warn.md b/.changeset/poor-steaks-warn.md deleted file mode 100644 index ad2ab564..00000000 --- a/.changeset/poor-steaks-warn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Sp API add optional endpoint param diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index b90f0ecc..00000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "mode": "exit", - "tag": "alpha", - "initialVersions": { - "@demo/wallet": "0.0.2", - "@demo/nodejs": "0.0.5", - "@bnb-chain/greenfield-js-sdk": "0.2.3", - "@bnb-chain/greenfiled-file-handle": "0.2.0", - "@bnb-chain/greenfield-zk-crypto": "0.0.1" - }, - "changesets": [ - "angry-lies-beam", - "blue-bugs-whisper", - "blue-zebras-cover", - "brave-avocados-impress", - "clever-deers-turn", - "cuddly-radios-wink", - "curly-fishes-bow", - "curvy-bears-kneel", - "eighty-parrots-tap", - "eleven-numbers-cover", - "fair-impalas-approve", - "famous-goats-visit", - "fast-drinks-move", - "five-mice-whisper", - "flat-cameras-divide", - "flat-mugs-collect", - "fresh-emus-serve", - "giant-panthers-collect", - "giant-toys-march", - "gold-bugs-occur", - "gold-eyes-push", - "gold-singers-grab", - "gorgeous-ligers-give", - "gorgeous-penguins-invite", - "great-readers-breathe", - "grumpy-tables-drop", - "happy-monkeys-exist", - "healthy-chicken-beam", - "honest-countries-hear", - "honest-tables-lick", - "itchy-candles-fold", - "itchy-pants-search", - "large-jokes-fly", - "late-mice-count", - "lazy-needles-shave", - "long-suits-share", - "many-fans-decide", - "mean-horses-change", - "mighty-deers-build", - "mighty-mangos-exercise", - "modern-ties-give", - "nice-dodos-sip", - "nice-geckos-think", - "ninety-jokes-study", - "odd-hotels-glow", - "orange-berries-jog", - "plenty-squids-walk", - "poor-steaks-warn", - "proud-dragons-repair", - "quiet-numbers-camp", - "rich-carrots-cheer", - "seven-toys-fry", - "silver-avocados-march", - "slimy-buses-smoke", - "soft-phones-give", - "spicy-lizards-think", - "strong-wombats-help", - "stupid-spies-poke", - "swift-pigs-travel", - "tender-sloths-shake", - "twelve-mangos-scream", - "unlucky-suns-look", - "wet-trainers-whisper", - "yellow-plums-cheat" - ] -} diff --git a/.changeset/proud-dragons-repair.md b/.changeset/proud-dragons-repair.md deleted file mode 100644 index 356ce8bd..00000000 --- a/.changeset/proud-dragons-repair.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-zk-crypto': patch ---- - -fix: Remove log diff --git a/.changeset/quiet-numbers-camp.md b/.changeset/quiet-numbers-camp.md deleted file mode 100644 index 655c8f16..00000000 --- a/.changeset/quiet-numbers-camp.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: Create Payment Account eip712 struct diff --git a/.changeset/rich-carrots-cheer.md b/.changeset/rich-carrots-cheer.md deleted file mode 100644 index 4414e166..00000000 --- a/.changeset/rich-carrots-cheer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Custom HTTP method with headers and options diff --git a/.changeset/seven-toys-fry.md b/.changeset/seven-toys-fry.md deleted file mode 100644 index 667c4252..00000000 --- a/.changeset/seven-toys-fry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: Return Types diff --git a/.changeset/silver-avocados-march.md b/.changeset/silver-avocados-march.md deleted file mode 100644 index c42e0f29..00000000 --- a/.changeset/silver-avocados-march.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: XML response from sp align to go struct diff --git a/.changeset/slimy-buses-smoke.md b/.changeset/slimy-buses-smoke.md deleted file mode 100644 index 68e6d0fb..00000000 --- a/.changeset/slimy-buses-smoke.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: EncodePath function handling non-English chars diff --git a/.changeset/soft-phones-give.md b/.changeset/soft-phones-give.md deleted file mode 100644 index 12cd327c..00000000 --- a/.changeset/soft-phones-give.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Zk crypto package diff --git a/.changeset/spicy-lizards-think.md b/.changeset/spicy-lizards-think.md deleted file mode 100644 index 02cb145a..00000000 --- a/.changeset/spicy-lizards-think.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: `getCreateObjectApproval` and `createObject` add `authType` params diff --git a/.changeset/strong-wombats-help.md b/.changeset/strong-wombats-help.md deleted file mode 100644 index 36064570..00000000 --- a/.changeset/strong-wombats-help.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Group Exist API: `queryGroupMembersExist` `queryGroupExist` `queryGroupsExistById` diff --git a/.changeset/stupid-spies-poke.md b/.changeset/stupid-spies-poke.md deleted file mode 100644 index bcedabf4..00000000 --- a/.changeset/stupid-spies-poke.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch -'@bnb-chain/greenfield-zk-crypto': patch ---- - -fix: Zk crypto version diff --git a/.changeset/swift-pigs-travel.md b/.changeset/swift-pigs-travel.md deleted file mode 100644 index 6d048451..00000000 --- a/.changeset/swift-pigs-travel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-zk-crypto': patch ---- - -feat: Sign EDDSA new API diff --git a/.changeset/tender-sloths-shake.md b/.changeset/tender-sloths-shake.md deleted file mode 100644 index 977af96c..00000000 --- a/.changeset/tender-sloths-shake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: Error try catch diff --git a/.changeset/twelve-mangos-scream.md b/.changeset/twelve-mangos-scream.md deleted file mode 100644 index 0135b39a..00000000 --- a/.changeset/twelve-mangos-scream.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: XML force convert array not object diff --git a/.changeset/unlucky-suns-look.md b/.changeset/unlucky-suns-look.md deleted file mode 100644 index e6c7fa0e..00000000 --- a/.changeset/unlucky-suns-look.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Export SpClient diff --git a/.changeset/wet-trainers-whisper.md b/.changeset/wet-trainers-whisper.md deleted file mode 100644 index 2003db6b..00000000 --- a/.changeset/wet-trainers-whisper.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: Hex don't convert number diff --git a/.changeset/yellow-plums-cheat.md b/.changeset/yellow-plums-cheat.md deleted file mode 100644 index 21f37fc6..00000000 --- a/.changeset/yellow-plums-cheat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-zk-crypto': patch ---- - -chore: Release diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 25d1884f..979ea941 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,80 @@ # @demo/wallet +## 0.0.5 + +### Patch Changes + +- [#254](https://github.com/bnb-chain/greenfield-js-sdk/pull/254) + [`1ede2ea`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1ede2ea0ecc9ffc35d262a43a007221f06df3a0e) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add GetBucketMeta and GetObjectMeta + +- [#292](https://github.com/bnb-chain/greenfield-js-sdk/pull/292) + [`7869b75`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7869b75fa16ef8f71daad0a00b0d10ba7fb13fb3) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Sort query + +- Updated dependencies + [[`a3e2210`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e2210805780a691f796caca32295ed8f8903a7), + [`4b9b4bc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4b9b4bc44063aee49f91c285f327819283bd6cee), + [`a485367`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a485367f23175c4004a7f030a1a4081c65d0d632), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`2e44e95`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e44e9548712739c33cc98d82bfada1a06ef9472), + [`a3e2210`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e2210805780a691f796caca32295ed8f8903a7), + [`1ede2ea`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1ede2ea0ecc9ffc35d262a43a007221f06df3a0e), + [`8f4e206`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8f4e20671b30befd4b6ede4807b1b1bacb190626), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`53fa253`](https://github.com/bnb-chain/greenfield-js-sdk/commit/53fa253423a47ef190457eec980c895a1d035ab0), + [`a3e2210`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e2210805780a691f796caca32295ed8f8903a7), + [`faf5d47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/faf5d474d626010ef9a4d83bf96491b66d265d35), + [`a3e6b47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e6b472329e32fe86f7dd8a770d39a371a034cc), + [`402da22`](https://github.com/bnb-chain/greenfield-js-sdk/commit/402da22ea101f855a05f098b8970eef13b045ead), + [`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28), + [`fcf6283`](https://github.com/bnb-chain/greenfield-js-sdk/commit/fcf62832288fa3a67b552d69e321d73690cbc87e), + [`dba9871`](https://github.com/bnb-chain/greenfield-js-sdk/commit/dba987145172ddff7c7e363c144861a3f33ec999), + [`1badb9c`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1badb9c9dd71a7a39025e90adfe9a6feace75936), + [`db61ff6`](https://github.com/bnb-chain/greenfield-js-sdk/commit/db61ff671f7ccc1be9ed6b1a229596916e1ae5ab), + [`7d69f2e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7d69f2e3d044fc5f4c50d5251f99d8e04fb39b86), + [`352419e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/352419e2016e6643fe7223adfe2cc1c3a6ee7ba6), + [`55f8851`](https://github.com/bnb-chain/greenfield-js-sdk/commit/55f8851a659a178c1ab37473f0c76f9a374a0368), + [`a823e61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a823e615266973639ff3101e6bec7e3cf88891db), + [`0084053`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00840538a95e830752dd0ea07f52990303dccf95), + [`4b9b4bc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4b9b4bc44063aee49f91c285f327819283bd6cee), + [`c28ab8b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c28ab8b283f9aca37633c761527706f780bd13f5), + [`7869b75`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7869b75fa16ef8f71daad0a00b0d10ba7fb13fb3), + [`9710b5b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/9710b5bd294484c8a8021193f649b006481e9cd5), + [`ce00ce1`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ce00ce1779c2ef3c627fb7172600093e6b580d23), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`ea31d73`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ea31d738124058d75b251d6a897f924a122b1471), + [`8d08848`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8d08848490d98fb774a8542d226647e8e5d65652), + [`ff112b2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ff112b2403b3e9826acb120cf42203996bf97872), + [`21c9f6e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/21c9f6e2daa434a3d1385a845a0879750559ffbc), + [`7824130`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7824130027ca00254b94b0a8af61330551c639ef), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28), + [`4b9b4bc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4b9b4bc44063aee49f91c285f327819283bd6cee), + [`c92e07e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c92e07e725accece3e1b126ea2ef0d4c6e5db431), + [`2e86b92`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e86b92a0762d0701356d24b7ad774364c039e3c), + [`12bd37c`](https://github.com/bnb-chain/greenfield-js-sdk/commit/12bd37ccdefe789660409882c7045e2cf2a60ff6), + [`a823e61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a823e615266973639ff3101e6bec7e3cf88891db), + [`8782a21`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8782a21a9dcae1f9b83062877ff92540534fa40c), + [`ad1d7d3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ad1d7d3fa54fae50aed1b4e1d45a152e2e3fb08c), + [`ab9d200`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ab9d20036dda8e972db029025a6140e43c19464d), + [`25ccbb6`](https://github.com/bnb-chain/greenfield-js-sdk/commit/25ccbb6612b86d8037cec4b9ca3a9b141e10cc66), + [`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28), + [`569445b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/569445b218a156205172a15ce7aeb2d598b83f76), + [`e586e77`](https://github.com/bnb-chain/greenfield-js-sdk/commit/e586e7738e42581a9103e6157caad558896a8c63), + [`b3683b8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b3683b8ce7e56a96c970964b2ade500eb95ef298), + [`c7de1fc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7de1fc86211e879dcdf4c420e3f7363fa1e36a5), + [`ab9d200`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ab9d20036dda8e972db029025a6140e43c19464d), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`8ba4cc7`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8ba4cc735cbd72b07d8d0a9fadae2c4bda1dea53), + [`48521b3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/48521b39f1b1ab5bb806fbe525ca1cd4437b3cbc), + [`cbbb4aa`](https://github.com/bnb-chain/greenfield-js-sdk/commit/cbbb4aa2d0f1e76b9f367b95355590370d35d684), + [`a3e2210`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e2210805780a691f796caca32295ed8f8903a7), + [`d388940`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d388940e821e7fc3cb9671ffae4753d63a3189b9)]: + - @bnb-chain/greenfield-js-sdk@0.2.4 + - @bnb-chain/greenfiled-file-handle@0.2.1 + ## 0.0.5-alpha.28 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index dfcdc91f..1b2da818 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.5-alpha.28", + "version": "0.0.5", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 5a9fa3ba..72b005f5 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,72 @@ # @demo/nodejs +## 0.0.8 + +### Patch Changes + +- Updated dependencies + [[`a3e2210`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e2210805780a691f796caca32295ed8f8903a7), + [`4b9b4bc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4b9b4bc44063aee49f91c285f327819283bd6cee), + [`a485367`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a485367f23175c4004a7f030a1a4081c65d0d632), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`2e44e95`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e44e9548712739c33cc98d82bfada1a06ef9472), + [`a3e2210`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e2210805780a691f796caca32295ed8f8903a7), + [`1ede2ea`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1ede2ea0ecc9ffc35d262a43a007221f06df3a0e), + [`8f4e206`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8f4e20671b30befd4b6ede4807b1b1bacb190626), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`53fa253`](https://github.com/bnb-chain/greenfield-js-sdk/commit/53fa253423a47ef190457eec980c895a1d035ab0), + [`a3e2210`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e2210805780a691f796caca32295ed8f8903a7), + [`faf5d47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/faf5d474d626010ef9a4d83bf96491b66d265d35), + [`a3e6b47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e6b472329e32fe86f7dd8a770d39a371a034cc), + [`402da22`](https://github.com/bnb-chain/greenfield-js-sdk/commit/402da22ea101f855a05f098b8970eef13b045ead), + [`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28), + [`fcf6283`](https://github.com/bnb-chain/greenfield-js-sdk/commit/fcf62832288fa3a67b552d69e321d73690cbc87e), + [`dba9871`](https://github.com/bnb-chain/greenfield-js-sdk/commit/dba987145172ddff7c7e363c144861a3f33ec999), + [`1badb9c`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1badb9c9dd71a7a39025e90adfe9a6feace75936), + [`db61ff6`](https://github.com/bnb-chain/greenfield-js-sdk/commit/db61ff671f7ccc1be9ed6b1a229596916e1ae5ab), + [`7d69f2e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7d69f2e3d044fc5f4c50d5251f99d8e04fb39b86), + [`352419e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/352419e2016e6643fe7223adfe2cc1c3a6ee7ba6), + [`55f8851`](https://github.com/bnb-chain/greenfield-js-sdk/commit/55f8851a659a178c1ab37473f0c76f9a374a0368), + [`a823e61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a823e615266973639ff3101e6bec7e3cf88891db), + [`0084053`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00840538a95e830752dd0ea07f52990303dccf95), + [`4b9b4bc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4b9b4bc44063aee49f91c285f327819283bd6cee), + [`c28ab8b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c28ab8b283f9aca37633c761527706f780bd13f5), + [`7869b75`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7869b75fa16ef8f71daad0a00b0d10ba7fb13fb3), + [`9710b5b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/9710b5bd294484c8a8021193f649b006481e9cd5), + [`ce00ce1`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ce00ce1779c2ef3c627fb7172600093e6b580d23), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`ea31d73`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ea31d738124058d75b251d6a897f924a122b1471), + [`8d08848`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8d08848490d98fb774a8542d226647e8e5d65652), + [`ff112b2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ff112b2403b3e9826acb120cf42203996bf97872), + [`21c9f6e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/21c9f6e2daa434a3d1385a845a0879750559ffbc), + [`7824130`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7824130027ca00254b94b0a8af61330551c639ef), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28), + [`4b9b4bc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4b9b4bc44063aee49f91c285f327819283bd6cee), + [`c92e07e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c92e07e725accece3e1b126ea2ef0d4c6e5db431), + [`2e86b92`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e86b92a0762d0701356d24b7ad774364c039e3c), + [`12bd37c`](https://github.com/bnb-chain/greenfield-js-sdk/commit/12bd37ccdefe789660409882c7045e2cf2a60ff6), + [`a823e61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a823e615266973639ff3101e6bec7e3cf88891db), + [`8782a21`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8782a21a9dcae1f9b83062877ff92540534fa40c), + [`ad1d7d3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ad1d7d3fa54fae50aed1b4e1d45a152e2e3fb08c), + [`ab9d200`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ab9d20036dda8e972db029025a6140e43c19464d), + [`25ccbb6`](https://github.com/bnb-chain/greenfield-js-sdk/commit/25ccbb6612b86d8037cec4b9ca3a9b141e10cc66), + [`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28), + [`569445b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/569445b218a156205172a15ce7aeb2d598b83f76), + [`e586e77`](https://github.com/bnb-chain/greenfield-js-sdk/commit/e586e7738e42581a9103e6157caad558896a8c63), + [`b3683b8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b3683b8ce7e56a96c970964b2ade500eb95ef298), + [`c7de1fc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7de1fc86211e879dcdf4c420e3f7363fa1e36a5), + [`ab9d200`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ab9d20036dda8e972db029025a6140e43c19464d), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a), + [`8ba4cc7`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8ba4cc735cbd72b07d8d0a9fadae2c4bda1dea53), + [`48521b3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/48521b39f1b1ab5bb806fbe525ca1cd4437b3cbc), + [`cbbb4aa`](https://github.com/bnb-chain/greenfield-js-sdk/commit/cbbb4aa2d0f1e76b9f367b95355590370d35d684), + [`a3e2210`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e2210805780a691f796caca32295ed8f8903a7), + [`d388940`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d388940e821e7fc3cb9671ffae4753d63a3189b9)]: + - @bnb-chain/greenfield-js-sdk@0.2.4 + - @bnb-chain/greenfiled-file-handle@0.2.1 + ## 0.0.8-alpha.28 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index b5e788ed..9ab81a68 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.8-alpha.28", + "version": "0.0.8", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 8ab463de..28e3eb58 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,256 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.4 + +### Patch Changes + +- [#248](https://github.com/bnb-chain/greenfield-js-sdk/pull/248) + [`a3e2210`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e2210805780a691f796caca32295ed8f8903a7) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Upload Object add AuthType + +- [#232](https://github.com/bnb-chain/greenfield-js-sdk/pull/232) + [`4b9b4bc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4b9b4bc44063aee49f91c285f327819283bd6cee) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Compatibility new `updateGroupMember` api + +- [#267](https://github.com/bnb-chain/greenfield-js-sdk/pull/267) + [`a485367`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a485367f23175c4004a7f030a1a4081c65d0d632) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Download HTTP method + +- [#236](https://github.com/bnb-chain/greenfield-js-sdk/pull/236) + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: Tx + +- [#223](https://github.com/bnb-chain/greenfield-js-sdk/pull/223) + [`2e44e95`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e44e9548712739c33cc98d82bfada1a06ef9472) + Thanks [@rrr523](https://github.com/rrr523)! - fix: DeepClone EIP712 + +- [#248](https://github.com/bnb-chain/greenfield-js-sdk/pull/248) + [`a3e2210`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e2210805780a691f796caca32295ed8f8903a7) + Thanks [@rrr523](https://github.com/rrr523)! - feat: download s3 object + +- [#254](https://github.com/bnb-chain/greenfield-js-sdk/pull/254) + [`1ede2ea`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1ede2ea0ecc9ffc35d262a43a007221f06df3a0e) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add GetBucketMeta and GetObjectMeta + +- [#282](https://github.com/bnb-chain/greenfield-js-sdk/pull/282) + [`8f4e206`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8f4e20671b30befd4b6ede4807b1b1bacb190626) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Create bucket quota params + +- [#236](https://github.com/bnb-chain/greenfield-js-sdk/pull/236) + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Changet auth type: `OffChainAuth` -> `EDDSA`, + `V1` -> `ECDSA` + +- [#235](https://github.com/bnb-chain/greenfield-js-sdk/pull/235) + [`53fa253`](https://github.com/bnb-chain/greenfield-js-sdk/commit/53fa253423a47ef190457eec980c895a1d035ab0) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Feegrant add expiration time + +- [#248](https://github.com/bnb-chain/greenfield-js-sdk/pull/248) + [`a3e2210`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e2210805780a691f796caca32295ed8f8903a7) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Migrate bucket + +- [#290](https://github.com/bnb-chain/greenfield-js-sdk/pull/290) + [`faf5d47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/faf5d474d626010ef9a4d83bf96491b66d265d35) + Thanks [@rrr523](https://github.com/rrr523)! - feat: `ListBucketsByIds` api + +- [#270](https://github.com/bnb-chain/greenfield-js-sdk/pull/270) + [`a3e6b47`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e6b472329e32fe86f7dd8a770d39a371a034cc) + Thanks [@rrr523](https://github.com/rrr523)! - feat: New API getObjectPreviewUrl + +- [#287](https://github.com/bnb-chain/greenfield-js-sdk/pull/287) + [`402da22`](https://github.com/bnb-chain/greenfield-js-sdk/commit/402da22ea101f855a05f098b8970eef13b045ead) + Thanks [@rrr523](https://github.com/rrr523)! - feat: convert XML enum to number + +- [#210](https://github.com/bnb-chain/greenfield-js-sdk/pull/210) + [`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Payment disableRefund api addr + +- [#290](https://github.com/bnb-chain/greenfield-js-sdk/pull/290) + [`fcf6283`](https://github.com/bnb-chain/greenfield-js-sdk/commit/fcf62832288fa3a67b552d69e321d73690cbc87e) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add listUserGroups + +- [#252](https://github.com/bnb-chain/greenfield-js-sdk/pull/252) + [`dba9871`](https://github.com/bnb-chain/greenfield-js-sdk/commit/dba987145172ddff7c7e363c144861a3f33ec999) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Gap time + +- [#283](https://github.com/bnb-chain/greenfield-js-sdk/pull/283) + [`1badb9c`](https://github.com/bnb-chain/greenfield-js-sdk/commit/1badb9c9dd71a7a39025e90adfe9a6feace75936) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Replace xml2js for universal usage browser + and nodejs + +- [#240](https://github.com/bnb-chain/greenfield-js-sdk/pull/240) + [`db61ff6`](https://github.com/bnb-chain/greenfield-js-sdk/commit/db61ff671f7ccc1be9ed6b1a229596916e1ae5ab) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Create Bucket add Payment address + +- [#290](https://github.com/bnb-chain/greenfield-js-sdk/pull/290) + [`7d69f2e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7d69f2e3d044fc5f4c50d5251f99d8e04fb39b86) + Thanks [@rrr523](https://github.com/rrr523)! - feat: ListGroupsMembers + +- [#263](https://github.com/bnb-chain/greenfield-js-sdk/pull/263) + [`352419e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/352419e2016e6643fe7223adfe2cc1c3a6ee7ba6) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Cross Headers + +- [#275](https://github.com/bnb-chain/greenfield-js-sdk/pull/275) + [`55f8851`](https://github.com/bnb-chain/greenfield-js-sdk/commit/55f8851a659a178c1ab37473f0c76f9a374a0368) + Thanks [@rrr523](https://github.com/rrr523)! - fix: XML boolean parse + +- [#238](https://github.com/bnb-chain/greenfield-js-sdk/pull/238) + [`a823e61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a823e615266973639ff3101e6bec7e3cf88891db) + Thanks [@rrr523](https://github.com/rrr523)! - feat: ReadQuota + +- [#290](https://github.com/bnb-chain/greenfield-js-sdk/pull/290) + [`0084053`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00840538a95e830752dd0ea07f52990303dccf95) + Thanks [@rrr523](https://github.com/rrr523)! - feat: ListGroup -> ListGroups + +- [#232](https://github.com/bnb-chain/greenfield-js-sdk/pull/232) + [`4b9b4bc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4b9b4bc44063aee49f91c285f327819283bd6cee) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Feegrant api add timestamp + +- [#284](https://github.com/bnb-chain/greenfield-js-sdk/pull/284) + [`c28ab8b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c28ab8b283f9aca37633c761527706f780bd13f5) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Update Bucket Info + +- [#292](https://github.com/bnb-chain/greenfield-js-sdk/pull/292) + [`7869b75`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7869b75fa16ef8f71daad0a00b0d10ba7fb13fb3) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Sort query + +- [#290](https://github.com/bnb-chain/greenfield-js-sdk/pull/290) + [`9710b5b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/9710b5bd294484c8a8021193f649b006481e9cd5) + Thanks [@rrr523](https://github.com/rrr523)! - feat: `ListObjectByIds` api + +- [#255](https://github.com/bnb-chain/greenfield-js-sdk/pull/255) + [`ce00ce1`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ce00ce1779c2ef3c627fb7172600093e6b580d23) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Refactor Sp client and supply custom http + request for meteInfo + +- [#236](https://github.com/bnb-chain/greenfield-js-sdk/pull/236) + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Upgrade types and update SP API: + `getQueryGlobalSpStorePriceByTime` `getQuerySpStoragePrice` + +- [#290](https://github.com/bnb-chain/greenfield-js-sdk/pull/290) + [`ea31d73`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ea31d738124058d75b251d6a897f924a122b1471) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add `ListBucketReadRecords` api + +- [#217](https://github.com/bnb-chain/greenfield-js-sdk/pull/217) + [`8d08848`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8d08848490d98fb774a8542d226647e8e5d65652) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Dynamic add and delete members string array + +- [#277](https://github.com/bnb-chain/greenfield-js-sdk/pull/277) + [`ff112b2`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ff112b2403b3e9826acb120cf42203996bf97872) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Common Prefix XML parse as array + +- [#261](https://github.com/bnb-chain/greenfield-js-sdk/pull/261) + [`21c9f6e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/21c9f6e2daa434a3d1385a845a0879750559ffbc) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Bucket XML type + +- [#264](https://github.com/bnb-chain/greenfield-js-sdk/pull/264) + [`7824130`](https://github.com/bnb-chain/greenfield-js-sdk/commit/7824130027ca00254b94b0a8af61330551c639ef) + Thanks [@rrr523](https://github.com/rrr523)! - fix: EncodePath + +- [#236](https://github.com/bnb-chain/greenfield-js-sdk/pull/236) + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a) + Thanks [@rrr523](https://github.com/rrr523)! - feat: `getCreateBucketApproval` and `createBucket` + add `authType` params + +- [#210](https://github.com/bnb-chain/greenfield-js-sdk/pull/210) + [`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add payment API + +- [#232](https://github.com/bnb-chain/greenfield-js-sdk/pull/232) + [`4b9b4bc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4b9b4bc44063aee49f91c285f327819283bd6cee) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Compatibility new payment api + +- [#280](https://github.com/bnb-chain/greenfield-js-sdk/pull/280) + [`c92e07e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c92e07e725accece3e1b126ea2ef0d4c6e5db431) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Migrate bucket + +- [#250](https://github.com/bnb-chain/greenfield-js-sdk/pull/250) + [`2e86b92`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2e86b92a0762d0701356d24b7ad774364c039e3c) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add XML default value when null + +- [#290](https://github.com/bnb-chain/greenfield-js-sdk/pull/290) + [`12bd37c`](https://github.com/bnb-chain/greenfield-js-sdk/commit/12bd37ccdefe789660409882c7045e2cf2a60ff6) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add `verifyPermission` api + +- [#238](https://github.com/bnb-chain/greenfield-js-sdk/pull/238) + [`a823e61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a823e615266973639ff3101e6bec7e3cf88891db) + Thanks [@rrr523](https://github.com/rrr523)! - fix: CreateBucketApproval + +- [#245](https://github.com/bnb-chain/greenfield-js-sdk/pull/245) + [`8782a21`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8782a21a9dcae1f9b83062877ff92540534fa40c) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Export types + +- [#290](https://github.com/bnb-chain/greenfield-js-sdk/pull/290) + [`ad1d7d3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ad1d7d3fa54fae50aed1b4e1d45a152e2e3fb08c) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add `listUserOwnedGroups` api + +- [#273](https://github.com/bnb-chain/greenfield-js-sdk/pull/273) + [`25ccbb6`](https://github.com/bnb-chain/greenfield-js-sdk/commit/25ccbb6612b86d8037cec4b9ca3a9b141e10cc66) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Sp API add optional endpoint param + +- [#210](https://github.com/bnb-chain/greenfield-js-sdk/pull/210) + [`3e0abf3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/3e0abf34395a121e941bc3f378b01e7391a64e28) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Create Payment Account eip712 struct + +- [#257](https://github.com/bnb-chain/greenfield-js-sdk/pull/257) + [`569445b`](https://github.com/bnb-chain/greenfield-js-sdk/commit/569445b218a156205172a15ce7aeb2d598b83f76) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Custom HTTP method with headers and options + +- [#213](https://github.com/bnb-chain/greenfield-js-sdk/pull/213) + [`e586e77`](https://github.com/bnb-chain/greenfield-js-sdk/commit/e586e7738e42581a9103e6157caad558896a8c63) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Return Types + +- [#272](https://github.com/bnb-chain/greenfield-js-sdk/pull/272) + [`b3683b8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b3683b8ce7e56a96c970964b2ade500eb95ef298) + Thanks [@rrr523](https://github.com/rrr523)! - fix: XML response from sp align to go struct + +- [#286](https://github.com/bnb-chain/greenfield-js-sdk/pull/286) + [`c7de1fc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7de1fc86211e879dcdf4c420e3f7363fa1e36a5) + Thanks [@rrr523](https://github.com/rrr523)! - fix: EncodePath function handling non-English chars + +- [#212](https://github.com/bnb-chain/greenfield-js-sdk/pull/212) + [`ab9d200`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ab9d20036dda8e972db029025a6140e43c19464d) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Zk crypto package + +- [#236](https://github.com/bnb-chain/greenfield-js-sdk/pull/236) + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a) + Thanks [@rrr523](https://github.com/rrr523)! - feat: `getCreateObjectApproval` and `createObject` + add `authType` params + +- [#236](https://github.com/bnb-chain/greenfield-js-sdk/pull/236) + [`41581f4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/41581f4e684ff7a3e6738e3477e295968af45b4a) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Group Exist API: `queryGroupMembersExist` + `queryGroupExist` `queryGroupsExistById` + +- [#221](https://github.com/bnb-chain/greenfield-js-sdk/pull/221) + [`8ba4cc7`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8ba4cc735cbd72b07d8d0a9fadae2c4bda1dea53) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Zk crypto version + +- [#230](https://github.com/bnb-chain/greenfield-js-sdk/pull/230) + [`48521b3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/48521b39f1b1ab5bb806fbe525ca1cd4437b3cbc) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Error try catch + +- [#243](https://github.com/bnb-chain/greenfield-js-sdk/pull/243) + [`cbbb4aa`](https://github.com/bnb-chain/greenfield-js-sdk/commit/cbbb4aa2d0f1e76b9f367b95355590370d35d684) + Thanks [@rrr523](https://github.com/rrr523)! - fix: XML force convert array not object + +- [#248](https://github.com/bnb-chain/greenfield-js-sdk/pull/248) + [`a3e2210`](https://github.com/bnb-chain/greenfield-js-sdk/commit/a3e2210805780a691f796caca32295ed8f8903a7) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Export SpClient + +- [#247](https://github.com/bnb-chain/greenfield-js-sdk/pull/247) + [`d388940`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d388940e821e7fc3cb9671ffae4753d63a3189b9) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Hex don't convert number + +- Updated dependencies + [[`2715b17`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2715b171dd8b0984e2515e7c77975ffc15e258f8), + [`d0da019`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d0da0190216e5914e08cc8555be7375e72095b48), + [`8ba4cc7`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8ba4cc735cbd72b07d8d0a9fadae2c4bda1dea53), + [`4b9b4bc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4b9b4bc44063aee49f91c285f327819283bd6cee), + [`8d08848`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8d08848490d98fb774a8542d226647e8e5d65652)]: + - @bnb-chain/greenfield-zk-crypto@0.0.2 + ## 0.2.4-alpha.28 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 9c891a28..6a59239c 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.4-alpha.28", + "version": "0.2.4", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", diff --git a/packages/file-handle/CHANGELOG.md b/packages/file-handle/CHANGELOG.md index dfa1fc7e..78c51c6c 100644 --- a/packages/file-handle/CHANGELOG.md +++ b/packages/file-handle/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfiled-file-handle +## 0.2.1 + +### Patch Changes + +- [#212](https://github.com/bnb-chain/greenfield-js-sdk/pull/212) + [`ab9d200`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ab9d20036dda8e972db029025a6140e43c19464d) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Using tinygo reduce size + ## 0.2.1-alpha.0 ### Patch Changes diff --git a/packages/file-handle/package.json b/packages/file-handle/package.json index 13764875..1d3ecef6 100644 --- a/packages/file-handle/package.json +++ b/packages/file-handle/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfiled-file-handle", - "version": "0.2.1-alpha.0", + "version": "0.2.1", "description": "checksums wasm package", "module": "./dist/browser/esm/index.js", "main": "./dist/node/index.js", diff --git a/packages/zk-crypto/CHANGELOG.md b/packages/zk-crypto/CHANGELOG.md index 593a93d7..3a04fd09 100644 --- a/packages/zk-crypto/CHANGELOG.md +++ b/packages/zk-crypto/CHANGELOG.md @@ -1,5 +1,29 @@ # @bnb-chain/zk-crypto +## 0.0.2 + +### Patch Changes + +- [#219](https://github.com/bnb-chain/greenfield-js-sdk/pull/219) + [`2715b17`](https://github.com/bnb-chain/greenfield-js-sdk/commit/2715b171dd8b0984e2515e7c77975ffc15e258f8) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Release + +- [#234](https://github.com/bnb-chain/greenfield-js-sdk/pull/234) + [`d0da019`](https://github.com/bnb-chain/greenfield-js-sdk/commit/d0da0190216e5914e08cc8555be7375e72095b48) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Remove log + +- [#221](https://github.com/bnb-chain/greenfield-js-sdk/pull/221) + [`8ba4cc7`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8ba4cc735cbd72b07d8d0a9fadae2c4bda1dea53) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Zk crypto version + +- [#232](https://github.com/bnb-chain/greenfield-js-sdk/pull/232) + [`4b9b4bc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4b9b4bc44063aee49f91c285f327819283bd6cee) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Sign EDDSA new API + +- [#217](https://github.com/bnb-chain/greenfield-js-sdk/pull/217) + [`8d08848`](https://github.com/bnb-chain/greenfield-js-sdk/commit/8d08848490d98fb774a8542d226647e8e5d65652) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Release + ## 0.0.2-alpha.4 ### Patch Changes diff --git a/packages/zk-crypto/package.json b/packages/zk-crypto/package.json index 25e9cec4..4d25f70e 100644 --- a/packages/zk-crypto/package.json +++ b/packages/zk-crypto/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-zk-crypto", - "version": "0.0.2-alpha.4", + "version": "0.0.2", "description": "Zk crypto wasm module", "scripts": { "predev": "rimraf ./dist", From 39492f68bb811095b419d77aa6a06acf243c9edc Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 1 Sep 2023 01:26:40 +0800 Subject: [PATCH 204/433] chore: Pre Enter (#299) --- .changeset/pre.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 00000000..4b87c69f --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,12 @@ +{ + "mode": "pre", + "tag": "alpha", + "initialVersions": { + "@demo/wallet": "0.0.5", + "@demo/nodejs": "0.0.8", + "@bnb-chain/greenfield-js-sdk": "0.2.4", + "@bnb-chain/greenfiled-file-handle": "0.2.1", + "@bnb-chain/greenfield-zk-crypto": "0.0.2" + }, + "changesets": [] +} From f0d69c9f6614bfbf799d199c4a530b5f0d4d1274 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Mon, 4 Sep 2023 16:37:06 +0800 Subject: [PATCH 205/433] Refactor/sp (#302) * feat: Auth expiry timestamp add default value * refactor: Sp types * fix: Expire time * feat: Upgrade TinyGo version --- .changeset/giant-bikes-grab.md | 5 + .changeset/perfect-starfishes-watch.md | 5 + packages/chain-sdk/src/api/bucket.ts | 94 ++++--- packages/chain-sdk/src/api/objectt.ts | 81 +++--- packages/chain-sdk/src/api/offchainauth.ts | 5 +- packages/chain-sdk/src/api/sp.ts | 42 ++-- .../chain-sdk/src/clients/spclient/auth.ts | 26 +- .../clients/spclient/spApis/bucketApproval.ts | 8 +- .../clients/spclient/spApis/getBucketMeta.ts | 2 +- .../src/clients/spclient/spApis/getNonce.ts | 10 +- .../clients/spclient/spApis/getObjectMeta.ts | 4 +- .../clients/spclient/spApis/getUserBuckets.ts | 2 +- .../spclient/spApis/listBucketReadRecords.ts | 11 +- .../spclient/spApis/listBucketsByIds.ts | 2 +- .../src/clients/spclient/spApis/listGroups.ts | 2 +- .../spclient/spApis/listGroupsMembers.ts | 2 +- .../spclient/spApis/listObjectsByBucket.ts | 4 +- .../spclient/spApis/listObjectsByIds.ts | 2 +- .../clients/spclient/spApis/listUserGroups.ts | 2 +- .../spclient/spApis/listUserOwnedGroups.ts | 4 +- .../spclient/spApis/migrateApproval.ts | 4 +- .../clients/spclient/spApis/objectApproval.ts | 7 +- .../spclient/spApis/queryBucketReadQuota.ts | 6 +- .../spclient/spApis/verifyPermission.ts | 2 +- packages/chain-sdk/src/types/auth.ts | 4 +- packages/chain-sdk/src/types/index.ts | 2 +- .../src/types/sp-xml/ReadQuotaResponse.ts | 10 - .../types/sp-xml/VerifyPermissionResponse.ts | 7 - packages/chain-sdk/src/types/sp-xml/index.ts | 14 -- .../chain-sdk/src/types/sp/BucketApproval.ts | 27 ++ .../src/types/{sp-xml => sp}/Common.ts | 0 .../ErrorResponse.ts} | 0 .../GetBucketMeta.ts} | 0 packages/chain-sdk/src/types/sp/GetObject.ts | 6 + .../GetObjectMeta.ts} | 0 .../src/types/sp/GetPreviewObject.ts | 7 + .../GetUserBuckets.ts} | 6 + .../ListBucketReadRecord.ts} | 8 + .../ListBucketsByIDs.ts} | 4 + .../ListGroups.ts} | 9 + .../ListGroupsMembers.ts} | 6 + .../ListObjectsByBucketName.ts} | 8 + .../ListObjectsByIDs.ts} | 4 + .../ListUserGroups.ts} | 6 + .../ListUserOwnedGroups.ts} | 6 + .../chain-sdk/src/types/sp/MigrateBucket.ts | 16 ++ .../chain-sdk/src/types/sp/ObjectApproval.ts | 35 +++ packages/chain-sdk/src/types/sp/PutObject.ts | 8 + packages/chain-sdk/src/types/sp/ReadQuota.ts | 25 ++ .../RequestNonce.ts} | 8 + .../chain-sdk/src/types/sp/SuccessResponse.ts | 8 + .../src/types/sp/VerifyPermission.ts | 16 ++ packages/chain-sdk/src/types/sp/index.ts | 22 ++ packages/chain-sdk/src/types/storage.ts | 238 ------------------ packages/zk-crypto/src/browser/wasm_exec.js | 202 +++++++-------- packages/zk-crypto/src/node/wasm_exec.js | 202 +++++++-------- packages/zk-crypto/src/wasm/zk-crypto.wasm | Bin 471254 -> 478558 bytes 57 files changed, 616 insertions(+), 630 deletions(-) create mode 100644 .changeset/giant-bikes-grab.md create mode 100644 .changeset/perfect-starfishes-watch.md delete mode 100644 packages/chain-sdk/src/types/sp-xml/ReadQuotaResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/VerifyPermissionResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/index.ts create mode 100644 packages/chain-sdk/src/types/sp/BucketApproval.ts rename packages/chain-sdk/src/types/{sp-xml => sp}/Common.ts (100%) rename packages/chain-sdk/src/types/{sp-xml/RequestErrorResponse.ts => sp/ErrorResponse.ts} (100%) rename packages/chain-sdk/src/types/{sp-xml/GetBucketMetaResponse.ts => sp/GetBucketMeta.ts} (100%) create mode 100644 packages/chain-sdk/src/types/sp/GetObject.ts rename packages/chain-sdk/src/types/{sp-xml/GetObjectMetaResponse.ts => sp/GetObjectMeta.ts} (100%) create mode 100644 packages/chain-sdk/src/types/sp/GetPreviewObject.ts rename packages/chain-sdk/src/types/{sp-xml/GetUserBucketsResponse.ts => sp/GetUserBuckets.ts} (67%) rename packages/chain-sdk/src/types/{sp-xml/ListBucketReadRecordResponse.ts => sp/ListBucketReadRecord.ts} (60%) rename packages/chain-sdk/src/types/{sp-xml/ListBucketsByIDsResponse.ts => sp/ListBucketsByIDs.ts} (89%) rename packages/chain-sdk/src/types/{sp-xml/ListGroupsResponse.ts => sp/ListGroups.ts} (61%) rename packages/chain-sdk/src/types/{sp-xml/ListGroupsMembersResponse.ts => sp/ListGroupsMembers.ts} (80%) rename packages/chain-sdk/src/types/{sp-xml/ListObjectsByBucketNameResponse.ts => sp/ListObjectsByBucketName.ts} (73%) rename packages/chain-sdk/src/types/{sp-xml/ListObjectsByIDsResponse.ts => sp/ListObjectsByIDs.ts} (89%) rename packages/chain-sdk/src/types/{sp-xml/ListUserGroupsResponse.ts => sp/ListUserGroups.ts} (80%) rename packages/chain-sdk/src/types/{sp-xml/ListUserOwnedGroupsResponse.ts => sp/ListUserOwnedGroups.ts} (80%) create mode 100644 packages/chain-sdk/src/types/sp/MigrateBucket.ts create mode 100644 packages/chain-sdk/src/types/sp/ObjectApproval.ts create mode 100644 packages/chain-sdk/src/types/sp/PutObject.ts create mode 100644 packages/chain-sdk/src/types/sp/ReadQuota.ts rename packages/chain-sdk/src/types/{sp-xml/RequestNonceResponse.ts => sp/RequestNonce.ts} (54%) create mode 100644 packages/chain-sdk/src/types/sp/SuccessResponse.ts create mode 100644 packages/chain-sdk/src/types/sp/VerifyPermission.ts create mode 100644 packages/chain-sdk/src/types/sp/index.ts diff --git a/.changeset/giant-bikes-grab.md b/.changeset/giant-bikes-grab.md new file mode 100644 index 00000000..12bf0c7e --- /dev/null +++ b/.changeset/giant-bikes-grab.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +refactor: Sp types diff --git a/.changeset/perfect-starfishes-watch.md b/.changeset/perfect-starfishes-watch.md new file mode 100644 index 00000000..249d7e55 --- /dev/null +++ b/.changeset/perfect-starfishes-watch.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-zk-crypto': patch +--- + +feat: Upgrade TinyGo version and Go version diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index ae8ce4e8..d015679f 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -21,10 +21,22 @@ import { MsgUpdateBucketInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/ import { GetBucketMetaRequest, GetBucketMetaResponse, + GetUserBucketsRequest, GetUserBucketsResponse, ListBucketsByIDsResponse, -} from '@/types/sp-xml'; -import { ListBucketReadRecordResponse } from '@/types/sp-xml/ListBucketReadRecordResponse'; + ListBucketReadRecordResponse, + ListBucketReadRecordRequest, + ListBucketsByIDsRequest, + ReadQuotaRequest, + SpResponse, + IQuotaProps, + MigrateBucketApprovalRequest, + MigrateBucketApprovalResponse, +} from '@/types/sp'; +import { + CreateBucketApprovalRequest, + CreateBucketApprovalResponse, +} from '@/types/sp/BucketApproval'; import { decodeObjectFromHexString } from '@/utils/encoding'; import { isValidAddress, isValidBucketName, isValidUrl } from '@/utils/s3'; import { UInt64Value } from '@bnb-chain/greenfield-cosmos-types/greenfield/common/wrapper'; @@ -66,17 +78,6 @@ import { } from '..'; import { RpcQueryClient } from '../clients/queryclient'; import { AuthType, SpClient } from '../clients/spclient/spClient'; -import { - IBaseGetCreateBucket, - ICreateBucketMsgType, - IMigrateBucketMsgType, - IObjectResultType, - IQuotaProps, - TBaseGetBucketReadQuota, - TGetUserBuckets, - TListBucketReadRecord, - TListBucketsByIDsRequest, -} from '../types/storage'; import { Basic } from './basic'; import { Sp } from './sp'; import { Storage } from './storage'; @@ -86,14 +87,14 @@ export interface IBucket { * returns the signature info for the approval of preCreating resources */ getCreateBucketApproval( - configParam: IBaseGetCreateBucket, + configParam: CreateBucketApprovalRequest, authType: AuthType, - ): Promise>; + ): Promise>; /** * get approval of creating bucket and send createBucket txn to greenfield chain */ - createBucket(params: IBaseGetCreateBucket, authType: AuthType): Promise; + createBucket(params: CreateBucketApprovalRequest, authType: AuthType): Promise; /** * query the bucketInfo on chain, return the bucket info if exists @@ -117,16 +118,16 @@ export interface IBucket { ): Promise; getUserBuckets( - configParam: TGetUserBuckets, - ): Promise>; + configParam: GetUserBucketsRequest, + ): Promise>; /** * return quota info of bucket of current month, include chain quota, free quota and consumed quota */ getBucketReadQuota( - configParam: TBaseGetBucketReadQuota, + configParam: ReadQuotaRequest, authType: AuthType, - ): Promise>; + ): Promise>; deleteBucket(msg: MsgDeleteBucket): Promise; @@ -145,25 +146,20 @@ export interface IBucket { getBucketPolicy(request: QueryPolicyForAccountRequest): Promise; getMigrateBucketApproval( - params: Omit, + params: MigrateBucketApprovalRequest, authType: AuthType, - ): Promise>; + ): Promise>; - migrateBucket( - configParams: Omit, - authType: AuthType, - ): Promise; + migrateBucket(params: MigrateBucketApprovalRequest, authType: AuthType): Promise; - getBucketMeta(params: GetBucketMetaRequest): Promise>; + getBucketMeta(params: GetBucketMetaRequest): Promise>; listBucketReadRecords( - params: TListBucketReadRecord, + params: ListBucketReadRecordRequest, authType: AuthType, - ): Promise>; + ): Promise>; - listBucketsByIds( - params: TListBucketsByIDsRequest, - ): Promise>; + listBucketsByIds(params: ListBucketsByIDsRequest): Promise>; } @singleton() @@ -177,7 +173,7 @@ export class Bucket implements IBucket { private queryClient = container.resolve(RpcQueryClient); private spClient = container.resolve(SpClient); - public async getCreateBucketApproval(params: IBaseGetCreateBucket, authType: AuthType) { + public async getCreateBucketApproval(params: CreateBucketApprovalRequest, authType: AuthType) { const { bucketName, creator, @@ -233,7 +229,7 @@ export class Bucket implements IBucket { const signedMsgString = result.headers.get('X-Gnfd-Signed-Msg') || ''; const signedMsg = JSON.parse( bytesToUtf8(hexToBytes(signedMsgString)), - ) as ICreateBucketMsgType; + ) as CreateBucketApprovalResponse; return { code: 0, @@ -251,7 +247,7 @@ export class Bucket implements IBucket { } } - private async createBucketTx(msg: MsgCreateBucket, signedMsg: ICreateBucketMsgType) { + private async createBucketTx(msg: MsgCreateBucket, signedMsg: CreateBucketApprovalResponse) { return await this.basic.tx( MsgCreateBucketTypeUrl, msg.creator, @@ -267,7 +263,7 @@ export class Bucket implements IBucket { ); } - public async createBucket(params: IBaseGetCreateBucket, authType: AuthType) { + public async createBucket(params: CreateBucketApprovalRequest, authType: AuthType) { const { signedMsg } = await this.getCreateBucketApproval(params, authType); if (!signedMsg) { @@ -330,7 +326,7 @@ export class Bucket implements IBucket { }); } - public async getUserBuckets(configParam: TGetUserBuckets) { + public async getUserBuckets(configParam: GetUserBucketsRequest) { try { const { address, duration = 30000, endpoint } = configParam; if (!isValidAddress(address)) { @@ -383,9 +379,9 @@ export class Bucket implements IBucket { } public async getBucketReadQuota( - params: TBaseGetBucketReadQuota, + params: ReadQuotaRequest, authType: AuthType, - ): Promise> { + ): Promise> { try { const { bucketName, duration = 30000 } = params; if (!isValidBucketName(bucketName)) { @@ -493,10 +489,7 @@ export class Bucket implements IBucket { return rpc.QueryPolicyForAccount(request); } - public async getMigrateBucketApproval( - params: Omit & { endpoint?: string }, - authType: AuthType, - ) { + public async getMigrateBucketApproval(params: MigrateBucketApprovalRequest, authType: AuthType) { const { bucketName, operator, dstPrimarySpId } = params; try { @@ -528,7 +521,7 @@ export class Bucket implements IBucket { ); const signedMsgString = result.headers.get('X-Gnfd-Signed-Msg') || ''; - const signedMsg = decodeObjectFromHexString(signedMsgString) as IMigrateBucketMsgType; + const signedMsg = decodeObjectFromHexString(signedMsgString) as MigrateBucketApprovalResponse; return { code: 0, @@ -546,11 +539,8 @@ export class Bucket implements IBucket { } } - public async migrateBucket( - configParams: Omit & { endpoint?: string }, - authType: AuthType, - ) { - const { signedMsg } = await this.getMigrateBucketApproval(configParams, authType); + public async migrateBucket(params: MigrateBucketApprovalRequest, authType: AuthType) { + const { signedMsg } = await this.getMigrateBucketApproval(params, authType); if (!signedMsg) { throw new Error('Get migrate bucket approval error'); @@ -571,7 +561,7 @@ export class Bucket implements IBucket { return await this.migrateBucketTx(msg, signedMsg); } - private async migrateBucketTx(msg: MsgMigrateBucket, signedMsg: IMigrateBucketMsgType) { + private async migrateBucketTx(msg: MsgMigrateBucket, signedMsg: MigrateBucketApprovalResponse) { return await this.basic.tx( MsgMigrateBucketTypeUrl, msg.operator, @@ -616,7 +606,7 @@ export class Bucket implements IBucket { }; } - public async listBucketReadRecords(params: TListBucketReadRecord, authType: AuthType) { + public async listBucketReadRecords(params: ListBucketReadRecordRequest, authType: AuthType) { try { const { bucketName } = params; // if (!isValidAddress(address)) { @@ -667,7 +657,7 @@ export class Bucket implements IBucket { } } - public async listBucketsByIds(params: TListBucketsByIDsRequest) { + public async listBucketsByIds(params: ListBucketsByIDsRequest) { try { const { ids } = params; diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index f25f3dc3..fdd71d53 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -12,8 +12,10 @@ import { MsgCreateObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgC import { MsgDeleteObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteObject'; import { MsgUpdateObjectInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateObjectInfo'; import { signSignatureByEddsa } from '@/offchainauth'; -import { GetObjectMetaRequest, GetObjectMetaResponse } from '@/types/sp-xml/GetObjectMetaResponse'; -import { ListObjectsByBucketNameResponse } from '@/types/sp-xml/ListObjectsByBucketNameResponse'; +import { GetObjectRequest } from '@/types/sp/GetObject'; +import { GetObjectMetaRequest, GetObjectMetaResponse } from '@/types/sp/GetObjectMeta'; +import { ListObjectsByBucketNameResponse } from '@/types/sp/ListObjectsByBucketName'; +import { PutObjectRequest } from '@/types/sp/PutObject'; import { ActionType, Principal, @@ -54,16 +56,14 @@ import { import { RpcQueryClient } from '../clients/queryclient'; import { AuthType, SpClient } from '../clients/spclient/spClient'; import { - ICreateObjectMsgType, - IObjectResultType, + CreateObjectApprovalRequest, + CreateObjectApprovalResponse, + ListObjectsByBucketNameRequest, + ListObjectsByIDsRequest, ListObjectsByIDsResponse, Long, - TBaseGetCreateObject, - TBaseGetObject, - TBaseGetPrivewObject, - TBasePutObject, - TListObjects, - TListObjectsByIDsRequest, + SpResponse, + GetPrivewObject, TxResponse, } from '../types'; import { @@ -78,13 +78,16 @@ import { Storage } from './storage'; export interface IObject { getCreateObjectApproval( - configParam: TBaseGetCreateObject, + configParam: CreateObjectApprovalRequest, authType: AuthType, - ): Promise>; + ): Promise>; - createObject(getApprovalParams: TBaseGetCreateObject, authType: AuthType): Promise; + createObject( + getApprovalParams: CreateObjectApprovalRequest, + authType: AuthType, + ): Promise; - uploadObject(configParam: TBasePutObject, authType: AuthType): Promise>; + uploadObject(configParam: PutObjectRequest, authType: AuthType): Promise>; cancelCreateObject(msg: MsgCancelCreateObject): Promise; @@ -101,21 +104,24 @@ export interface IObject { /** * get s3 object's blob */ - getObject(configParam: TBaseGetObject, authType: AuthType): Promise>; + getObject(configParam: GetObjectRequest, authType: AuthType): Promise>; - getObjectPreviewUrl(configParam: TBaseGetPrivewObject, authType: AuthType): Promise; + getObjectPreviewUrl(configParam: GetPrivewObject, authType: AuthType): Promise; /** * download s3 object */ - downloadFile(configParam: TBaseGetObject, authType: AuthType): Promise; + downloadFile(configParam: GetObjectRequest, authType: AuthType): Promise; listObjects( - configParam: TListObjects, - ): Promise>; + configParam: ListObjectsByBucketNameRequest, + ): Promise>; createFolder( - getApprovalParams: Omit, + getApprovalParams: Omit< + CreateObjectApprovalRequest, + 'contentLength' | 'fileType' | 'expectCheckSums' + >, authType: AuthType, ): Promise; @@ -146,11 +152,9 @@ export interface IObject { principalAddr: string, ): Promise; - getObjectMeta(params: GetObjectMetaRequest): Promise>; + getObjectMeta(params: GetObjectMetaRequest): Promise>; - listObjectsByIds( - params: TListObjectsByIDsRequest, - ): Promise>; + listObjectsByIds(params: ListObjectsByIDsRequest): Promise>; // TODO: GetObjectUploadProgress // TODO: getObjectStatusFromSP } @@ -166,7 +170,7 @@ export class Objectt implements IObject { private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); private spClient = container.resolve(SpClient); - public async getCreateObjectApproval(params: TBaseGetCreateObject, authType: AuthType) { + public async getCreateObjectApproval(params: CreateObjectApprovalRequest, authType: AuthType) { const { bucketName, creator, @@ -228,7 +232,7 @@ export class Objectt implements IObject { const signedMsgString = result.headers.get('X-Gnfd-Signed-Msg') || ''; const signedMsg = JSON.parse( bytesToUtf8(hexToBytes(signedMsgString)), - ) as ICreateObjectMsgType; + ) as CreateObjectApprovalResponse; return { code: 0, @@ -246,7 +250,7 @@ export class Objectt implements IObject { } } - private async createObjectTx(msg: MsgCreateObject, signedMsg: ICreateObjectMsgType) { + private async createObjectTx(msg: MsgCreateObject, signedMsg: CreateObjectApprovalResponse) { return await this.basic.tx( MsgCreateObjectTypeUrl, msg.creator, @@ -265,7 +269,7 @@ export class Objectt implements IObject { ); } - public async createObject(getApprovalParams: TBaseGetCreateObject, authType: AuthType) { + public async createObject(getApprovalParams: CreateObjectApprovalRequest, authType: AuthType) { const { signedMsg } = await this.getCreateObjectApproval(getApprovalParams, authType); if (!signedMsg) { throw new Error('Get create object approval error'); @@ -291,9 +295,9 @@ export class Objectt implements IObject { } public async uploadObject( - params: TBasePutObject, + params: PutObjectRequest, authType: AuthType, - ): Promise> { + ): Promise> { const { bucketName, objectName, txnHash, body, duration = 30000 } = params; if (!isValidBucketName(bucketName)) { throw new Error('Error bucket name'); @@ -391,7 +395,7 @@ export class Objectt implements IObject { return await rpc.HeadObjectNFT(request); } - public async getObject(params: TBaseGetObject, authType: AuthType) { + public async getObject(params: GetObjectRequest, authType: AuthType) { try { const { bucketName, objectName, duration = 30000 } = params; if (!isValidBucketName(bucketName)) { @@ -448,7 +452,7 @@ export class Objectt implements IObject { } } - public async getObjectPreviewUrl(params: TBaseGetPrivewObject, authType: AuthType) { + public async getObjectPreviewUrl(params: GetPrivewObject, authType: AuthType) { const { bucketName, objectName, queryMap } = params; if (!isValidBucketName(bucketName)) { throw new Error('Error bucket name'); @@ -487,7 +491,7 @@ export class Objectt implements IObject { return `${url}?Authorization=${encodeURIComponent(authorization)}&${queryRaw}`; } - public async downloadFile(configParam: TBaseGetObject, authType: AuthType): Promise { + public async downloadFile(configParam: GetObjectRequest, authType: AuthType): Promise { try { const { objectName } = configParam; const getObjectResult = await this.getObject(configParam, authType); @@ -514,7 +518,7 @@ export class Objectt implements IObject { } } - public async listObjects(configParam: TListObjects) { + public async listObjects(configParam: ListObjectsByBucketNameRequest) { try { const { bucketName, endpoint, duration = 30000, query = new URLSearchParams() } = configParam; if (!isValidBucketName(bucketName)) { @@ -564,7 +568,10 @@ export class Objectt implements IObject { } public async createFolder( - getApprovalParams: Omit, + getApprovalParams: Omit< + CreateObjectApprovalRequest, + 'contentLength' | 'fileType' | 'expectCheckSums' + >, authType: AuthType, ) { if (!getApprovalParams.objectName.endsWith('/')) { @@ -582,7 +589,7 @@ export class Objectt implements IObject { const { contentLength, expectCheckSums } = hashResult; */ - const params: TBaseGetCreateObject = { + const params: CreateObjectApprovalRequest = { bucketName: getApprovalParams.bucketName, objectName: getApprovalParams.objectName, contentLength: 0, @@ -693,7 +700,7 @@ export class Objectt implements IObject { }; } - public async listObjectsByIds(params: TListObjectsByIDsRequest) { + public async listObjectsByIds(params: ListObjectsByIDsRequest) { try { const { ids } = params; diff --git a/packages/chain-sdk/src/api/offchainauth.ts b/packages/chain-sdk/src/api/offchainauth.ts index 869c3693..9fc55cbd 100644 --- a/packages/chain-sdk/src/api/offchainauth.ts +++ b/packages/chain-sdk/src/api/offchainauth.ts @@ -10,10 +10,9 @@ import { } from '@/offchainauth'; import { hexlify } from '@ethersproject/bytes'; import { singleton } from 'tsyringe'; -import { convertTimeStampToDate, getUtcZeroTimestamp } from '..'; +import { convertTimeStampToDate, getUtcZeroTimestamp, SpResponse } from '..'; import { IGenOffChainAuthKeyPairAndUpload, - IObjectResultType, IReturnOffChainAuthKeyPairAndUpload, ISp, } from '../types/storage'; @@ -25,7 +24,7 @@ export interface IOffChainAuth { genOffChainAuthKeyPairAndUpload( params: IGenOffChainAuthKeyPairAndUpload, provider: any, - ): Promise>; + ): Promise>; } @singleton() diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index daa4732b..36be8274 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -7,7 +7,7 @@ import { parseError } from '@/clients/spclient/spApis/parseError'; import { parseVerifyPermissionResponse } from '@/clients/spclient/spApis/verifyPermission'; import { SpClient } from '@/clients/spclient/spClient'; import { METHOD_GET, NORMAL_ERROR_CODE } from '@/constants/http'; -import { ListUserOwnedGroupsResponse } from '@/types/sp-xml/ListUserOwnedGroupsResponse'; +import { ListUserOwnedGroupsResponse } from '@/types/sp/ListUserOwnedGroups'; import { actionTypeFromJSON } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; import { QueryGlobalSpStorePriceByTimeRequest, @@ -22,16 +22,16 @@ import { } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/query'; import { Status, StorageProvider } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/types'; import { container, singleton } from 'tsyringe'; -import { - IObjectResultType, +import type { + SpResponse, ListGroupsMembersResponse, ListGroupsResponse, ListUserGroupsResponse, - TListGroups, - TListGroupsMembersRequest, - TListUserGroupRequest, - TListUserOwnedGroupRequest, - TVerifyPermissionRequest, + ListGroupsResquest, + ListGroupsMembersRequest, + ListUserGroupsResquest, + ListUserOwnedGroupsRequest, + VerifyPermissionRequest, VerifyPermissionResponse, } from '..'; import { RpcQueryClient } from '../clients/queryclient'; @@ -78,17 +78,17 @@ export interface ISp { params(): Promise; - listGroups(params: TListGroups): Promise>; + listGroups(params: ListGroupsResquest): Promise>; listGroupsMembers( - params: TListGroupsMembersRequest, - ): Promise>; + params: ListGroupsMembersRequest, + ): Promise>; - listUserGroups(params: TListUserGroupRequest): Promise>; + listUserGroups(params: ListUserGroupsResquest): Promise>; listUserOwnedGroups( - params: TListUserOwnedGroupRequest, - ): Promise>; + params: ListUserOwnedGroupsRequest, + ): Promise>; getSPUrlByBucket(bucketName: string): Promise; @@ -96,9 +96,7 @@ export interface ISp { getSPUrlById(primaryId: number): Promise; - verifyPermission( - params: TVerifyPermissionRequest, - ): Promise>; + verifyPermission(params: VerifyPermissionRequest): Promise>; } @singleton() @@ -183,7 +181,7 @@ export class Sp implements ISp { return spList[0]; } - public async listGroups(params: TListGroups) { + public async listGroups(params: ListGroupsResquest) { try { const { name, prefix, sourceType, limit, offset } = params; @@ -242,7 +240,7 @@ export class Sp implements ISp { } } - public async verifyPermission(params: TVerifyPermissionRequest) { + public async verifyPermission(params: VerifyPermissionRequest) { try { const { action, bucketName, objectName, operator } = params; @@ -290,7 +288,7 @@ export class Sp implements ISp { } } - public async listGroupsMembers(params: TListGroupsMembersRequest) { + public async listGroupsMembers(params: ListGroupsMembersRequest) { try { const { groupId, limit, startAfter } = params; const sp = await this.getInServiceSP(); @@ -340,7 +338,7 @@ export class Sp implements ISp { } } - public async listUserGroups(params: TListUserGroupRequest) { + public async listUserGroups(params: ListUserGroupsResquest) { try { const { address, limit, startAfter } = params; const sp = await this.getInServiceSP(); @@ -393,7 +391,7 @@ export class Sp implements ISp { } } - public async listUserOwnedGroups(params: TListUserOwnedGroupRequest) { + public async listUserOwnedGroups(params: ListUserOwnedGroupsRequest) { try { const { address, limit, startAfter } = params; const sp = await this.getInServiceSP(); diff --git a/packages/chain-sdk/src/clients/spclient/auth.ts b/packages/chain-sdk/src/clients/spclient/auth.ts index bb38700e..28413216 100644 --- a/packages/chain-sdk/src/clients/spclient/auth.ts +++ b/packages/chain-sdk/src/clients/spclient/auth.ts @@ -93,12 +93,18 @@ export const newRequestHeadersByMeta = (meta: Partial) => { } const date = new Date(); - // NOTICE: Smoothing local and server time gap - date.setSeconds(date.getSeconds() + 200); - headers.set(HTTPHeaderDate.toLocaleLowerCase(), formatDate(date)); + if (meta.date) { + headers.set(HTTPHeaderDate.toLocaleLowerCase(), formatDate(meta.date)); + } else { + headers.set(HTTPHeaderDate.toLocaleLowerCase(), formatDate(date)); + } - date.setDate(date.getDate() + 6); - headers.set(HTTPHeaderExpiryTimestamp.toLocaleLowerCase(), formatDate(date)); + if (meta.expiryTimestamp) { + headers.set(HTTPHeaderExpiryTimestamp.toLocaleLowerCase(), formatDate(meta.expiryTimestamp)); + } else { + date.setHours(date.getHours() + 2); + headers.set(HTTPHeaderExpiryTimestamp.toLocaleLowerCase(), formatDate(date)); + } return headers; }; @@ -210,3 +216,13 @@ export const getSortQuery = (queryMap: Record) => { return queryParams.toString(); }; + +export const getSortQueryParams = (url: URL, queryMap: Record) => { + // const queryParams = new URLSearchParams(); + for (const k in queryMap) { + url.searchParams.append(k, queryMap[k]); + } + url.searchParams.sort(); + + return url; +}; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts b/packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts index 9d6ca5fd..a89182db 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts @@ -1,10 +1,14 @@ import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; -import { ICreateBucketMsgType, ReqMeta } from '@/types'; +import { ReqMeta } from '@/types'; +import { CreateBucketApprovalResponse } from '@/types/sp/BucketApproval'; import { toHex, utf8ToBytes } from 'ethereum-cryptography/utils'; import { getSortQuery } from '../auth'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_approval -export const getBucketApprovalMetaInfo = async (endpoint: string, msg: ICreateBucketMsgType) => { +export const getBucketApprovalMetaInfo = async ( + endpoint: string, + msg: CreateBucketApprovalResponse, +) => { const path = '/greenfield/admin/v1/get-approval'; const queryMap = { action: 'CreateBucket', diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts b/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts index 129eb7ea..7ac2dd2c 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts @@ -1,5 +1,5 @@ import { GetBucketMetaResponse } from '@/types'; -import { formatBucketInfo } from '@/types/sp-xml/Common'; +import { formatBucketInfo } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_bucket_meta diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getNonce.ts b/packages/chain-sdk/src/clients/spclient/spApis/getNonce.ts index 886f4552..ad294fe6 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getNonce.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getNonce.ts @@ -1,10 +1,16 @@ -import { IFetchNonce, RequestNonceResponse } from '@/types'; +import type { RequestNonceRequest, RequestNonceResponse } from '@/types'; import { fetchWithTimeout } from '@/utils/http'; import { XMLParser } from 'fast-xml-parser'; import { Headers } from 'cross-fetch'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_nonce -export const getNonce = async ({ spEndpoint, spName, spAddress, address, domain }: IFetchNonce) => { +export const getNonce = async ({ + spEndpoint, + spName, + spAddress, + address, + domain, +}: RequestNonceRequest) => { let result; let res; const url = `${spEndpoint}/auth/request_nonce`; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts b/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts index 3d625753..52dccdb7 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts @@ -1,5 +1,5 @@ -import { convertStrToBool, formatObjectInfo } from '@/types/sp-xml/Common'; -import { GetObjectMetaResponse } from '@/types/sp-xml/GetObjectMetaResponse'; +import { convertStrToBool, formatObjectInfo } from '@/types/sp/Common'; +import { GetObjectMetaResponse } from '@/types/sp/GetObjectMeta'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_object_meta diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts b/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts index 21f62149..6a9b0225 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts @@ -1,5 +1,5 @@ import { GetUserBucketsResponse } from '@/types'; -import { convertStrToBool, formatBucketInfo } from '@/types/sp-xml/Common'; +import { convertStrToBool, formatBucketInfo } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_user_buckets diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts b/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts index ce80b6f3..cc7abb1a 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts @@ -1,7 +1,10 @@ import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; -import { ReqMeta, TListBucketReadRecord } from '@/types'; -import { formatReadRecord } from '@/types/sp-xml/Common'; -import { ListBucketReadRecordResponse } from '@/types/sp-xml/ListBucketReadRecordResponse'; +import { ReqMeta } from '@/types'; +import { formatReadRecord } from '@/types/sp/Common'; +import { + ListBucketReadRecordRequest, + ListBucketReadRecordResponse, +} from '@/types/sp/ListBucketReadRecord'; import { generateUrlByBucketName } from '@/utils'; import { XMLParser } from 'fast-xml-parser'; import { getSortQuery } from '../auth'; @@ -33,7 +36,7 @@ export const parseListBucketReadRecordResponse = async (data: string) => { export const getListBucketReadRecordMetaInfo = async ( endpoint: string, - params: TListBucketReadRecord, + params: ListBucketReadRecordRequest, ) => { const { bucketName, endTimeStamp, maxRecords, startTimeStamp } = params; const path = '/'; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts b/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts index 72041ac8..752ef44e 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts @@ -1,5 +1,5 @@ import { ListBucketsByIDsResponse } from '@/types'; -import { convertStrToBool, formatBucketInfo } from '@/types/sp-xml/Common'; +import { convertStrToBool, formatBucketInfo } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_buckets_by_ids diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts b/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts index 5a4f2170..0679b6a3 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts @@ -1,5 +1,5 @@ import { ListGroupsResponse } from '@/types'; -import { formatGroupInfo, convertStrToBool } from '@/types/sp-xml/Common'; +import { formatGroupInfo, convertStrToBool } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_group_list diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts b/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts index bc3e76cf..c043c496 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts @@ -1,5 +1,5 @@ import { ListGroupsMembersResponse } from '@/types'; -import { formatGroupInfo, convertStrToBool } from '@/types/sp-xml/Common'; +import { formatGroupInfo, convertStrToBool } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_group_members diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts index 0a381fce..ca2f3099 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts @@ -1,5 +1,5 @@ -import { convertStrToBool, formatObjectInfo } from '@/types/sp-xml/Common'; -import { ListObjectsByBucketNameResponse } from '@/types/sp-xml/ListObjectsByBucketNameResponse'; +import { convertStrToBool, formatObjectInfo } from '@/types/sp/Common'; +import { ListObjectsByBucketNameResponse } from '@/types/sp/ListObjectsByBucketName'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_objects_by_bucket diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts index 22540413..bc0ad1ba 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts @@ -1,5 +1,5 @@ import { ListObjectsByIDsResponse } from '@/types'; -import { formatObjectInfo, convertStrToBool } from '@/types/sp-xml/Common'; +import { formatObjectInfo, convertStrToBool } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_objects_by_ids diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts b/packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts index d9173219..08d987dc 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts @@ -1,5 +1,5 @@ import { ListUserGroupsResponse } from '@/types'; -import { formatGroupInfo, convertStrToBool } from '@/types/sp-xml/Common'; +import { formatGroupInfo, convertStrToBool } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_user_groups diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts b/packages/chain-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts index d1ef8bcb..7676a0ae 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts @@ -1,5 +1,5 @@ -import { formatGroupInfo, convertStrToBool } from '@/types/sp-xml/Common'; -import { ListUserOwnedGroupsResponse } from '@/types/sp-xml/ListUserOwnedGroupsResponse'; +import { formatGroupInfo, convertStrToBool } from '@/types/sp/Common'; +import { ListUserOwnedGroupsResponse } from '@/types/sp/ListUserOwnedGroups'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_user_owned_groups diff --git a/packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts b/packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts index 903039be..c3de0209 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts @@ -1,10 +1,10 @@ import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; -import { IMigrateBucketMsgType, ReqMeta } from '@/types'; +import { MigrateBucketApprovalResponse, ReqMeta } from '@/types'; import { toHex, utf8ToBytes } from 'ethereum-cryptography/utils'; import { getSortQuery } from '../auth'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_approval -export const getMigrateMetaInfo = async (endpoint: string, msg: IMigrateBucketMsgType) => { +export const getMigrateMetaInfo = async (endpoint: string, msg: MigrateBucketApprovalResponse) => { const path = '/greenfield/admin/v1/get-approval'; const queryMap = { action: 'MigrateBucket', diff --git a/packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts b/packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts index a30339de..65c259f8 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts @@ -1,10 +1,13 @@ import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; -import { ICreateObjectMsgType, ReqMeta } from '@/types'; +import { CreateObjectApprovalResponse, ReqMeta } from '@/types'; import { toHex, utf8ToBytes } from 'ethereum-cryptography/utils'; import { getSortQuery } from '../auth'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_approval -export const getObjectApprovalMetaInfo = async (endpoint: string, msg: ICreateObjectMsgType) => { +export const getObjectApprovalMetaInfo = async ( + endpoint: string, + msg: CreateObjectApprovalResponse, +) => { const path = '/greenfield/admin/v1/get-approval'; const queryMap = { action: 'CreateObject', diff --git a/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts b/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts index 98dedde6..5502ec6e 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts @@ -1,6 +1,6 @@ import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; -import { ReqMeta, TBaseGetBucketReadQuota } from '@/types'; -import { ReadQuotaResponse } from '@/types/sp-xml'; +import { ReqMeta, ReadQuotaRequest } from '@/types'; +import { ReadQuotaResponse } from '@/types/sp'; import { generateUrlByBucketName } from '@/utils/s3'; import { XMLParser } from 'fast-xml-parser'; import { getSortQuery } from '../auth'; @@ -8,7 +8,7 @@ import { getSortQuery } from '../auth'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/query_bucket_read_quota export const getQueryBucketReadQuotaMetaInfo = async ( endpoint: string, - params: TBaseGetBucketReadQuota, + params: ReadQuotaRequest, ) => { const { year, month, bucketName } = params; const currentDate = new Date(); diff --git a/packages/chain-sdk/src/clients/spclient/spApis/verifyPermission.ts b/packages/chain-sdk/src/clients/spclient/spApis/verifyPermission.ts index 76b4c7ca..62c57894 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/verifyPermission.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/verifyPermission.ts @@ -1,4 +1,4 @@ -import { VerifyPermissionResponse } from '@/types/sp-xml/VerifyPermissionResponse'; +import { VerifyPermissionResponse } from '@/types/sp/VerifyPermission'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/verify_permission diff --git a/packages/chain-sdk/src/types/auth.ts b/packages/chain-sdk/src/types/auth.ts index 9fd7e016..5e396e5d 100644 --- a/packages/chain-sdk/src/types/auth.ts +++ b/packages/chain-sdk/src/types/auth.ts @@ -8,8 +8,8 @@ export interface ReqMeta { path: string; query: string; }; - date: string; - expiryTimestamp: string; + date: Date; + expiryTimestamp: Date; contentSHA256: string; unsignMsg: string; txnHash: string; diff --git a/packages/chain-sdk/src/types/index.ts b/packages/chain-sdk/src/types/index.ts index a48ca381..c4a6e537 100644 --- a/packages/chain-sdk/src/types/index.ts +++ b/packages/chain-sdk/src/types/index.ts @@ -2,4 +2,4 @@ export * from './auth'; export * from './common'; export * from './storage'; export * from './tx'; -export * from './sp-xml'; +export * from './sp'; diff --git a/packages/chain-sdk/src/types/sp-xml/ReadQuotaResponse.ts b/packages/chain-sdk/src/types/sp-xml/ReadQuotaResponse.ts deleted file mode 100644 index 5498c434..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ReadQuotaResponse.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface ReadQuotaResponse { - GetReadQuotaResult: { - BucketName: string; - BucketID: string; - ReadQuotaSize: number; - SPFreeReadQuotaSize: number; - ReadConsumedSize: number; - FreeConsumedSize: number; - }; -} diff --git a/packages/chain-sdk/src/types/sp-xml/VerifyPermissionResponse.ts b/packages/chain-sdk/src/types/sp-xml/VerifyPermissionResponse.ts deleted file mode 100644 index f0aed8ae..00000000 --- a/packages/chain-sdk/src/types/sp-xml/VerifyPermissionResponse.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface VerifyPermissionResponse { - QueryVerifyPermissionResponse: QueryVerifyPermissionResponse; -} - -export interface QueryVerifyPermissionResponse { - Effect: number; -} diff --git a/packages/chain-sdk/src/types/sp-xml/index.ts b/packages/chain-sdk/src/types/sp-xml/index.ts deleted file mode 100644 index 3bf8b1a8..00000000 --- a/packages/chain-sdk/src/types/sp-xml/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -export * from './GetBucketMetaResponse'; -export * from './GetObjectMetaResponse'; -export * from './GetUserBucketsResponse'; -export * from './ListBucketReadRecordResponse'; -export * from './ListBucketsByIDsResponse'; -export * from './ListGroupsMembersResponse'; -export * from './ListGroupsResponse'; -export * from './ListObjectsByBucketNameResponse'; -export * from './ListObjectsByIDsResponse'; -export * from './ListUserGroupsResponse'; -export * from './ReadQuotaResponse'; -export * from './RequestErrorResponse'; -export * from './RequestNonceResponse'; -export * from './VerifyPermissionResponse'; diff --git a/packages/chain-sdk/src/types/sp/BucketApproval.ts b/packages/chain-sdk/src/types/sp/BucketApproval.ts new file mode 100644 index 00000000..1ca043ba --- /dev/null +++ b/packages/chain-sdk/src/types/sp/BucketApproval.ts @@ -0,0 +1,27 @@ +import { VisibilityType } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; + +export type CreateBucketApprovalRequest = { + bucketName: string; + creator: string; + visibility: keyof typeof VisibilityType; + chargedReadQuota: string; + spInfo: { + primarySpAddress: string; + }; + duration?: number; + paymentAddress: string; +}; + +export interface CreateBucketApprovalResponse { + creator: string; + bucket_name: string; + visibility: keyof typeof VisibilityType; + payment_address: string; + primary_sp_address: string; + primary_sp_approval: { + expired_height: string; + sig: string; + global_virtual_group_family_id: number; + }; + charged_read_quota: string; +} diff --git a/packages/chain-sdk/src/types/sp-xml/Common.ts b/packages/chain-sdk/src/types/sp/Common.ts similarity index 100% rename from packages/chain-sdk/src/types/sp-xml/Common.ts rename to packages/chain-sdk/src/types/sp/Common.ts diff --git a/packages/chain-sdk/src/types/sp-xml/RequestErrorResponse.ts b/packages/chain-sdk/src/types/sp/ErrorResponse.ts similarity index 100% rename from packages/chain-sdk/src/types/sp-xml/RequestErrorResponse.ts rename to packages/chain-sdk/src/types/sp/ErrorResponse.ts diff --git a/packages/chain-sdk/src/types/sp-xml/GetBucketMetaResponse.ts b/packages/chain-sdk/src/types/sp/GetBucketMeta.ts similarity index 100% rename from packages/chain-sdk/src/types/sp-xml/GetBucketMetaResponse.ts rename to packages/chain-sdk/src/types/sp/GetBucketMeta.ts diff --git a/packages/chain-sdk/src/types/sp/GetObject.ts b/packages/chain-sdk/src/types/sp/GetObject.ts new file mode 100644 index 00000000..5aab4805 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/GetObject.ts @@ -0,0 +1,6 @@ +export type GetObjectRequest = { + bucketName: string; + objectName: string; + duration?: number; + endpoint?: string; +}; diff --git a/packages/chain-sdk/src/types/sp-xml/GetObjectMetaResponse.ts b/packages/chain-sdk/src/types/sp/GetObjectMeta.ts similarity index 100% rename from packages/chain-sdk/src/types/sp-xml/GetObjectMetaResponse.ts rename to packages/chain-sdk/src/types/sp/GetObjectMeta.ts diff --git a/packages/chain-sdk/src/types/sp/GetPreviewObject.ts b/packages/chain-sdk/src/types/sp/GetPreviewObject.ts new file mode 100644 index 00000000..58d1f862 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/GetPreviewObject.ts @@ -0,0 +1,7 @@ +export type GetPrivewObject = { + bucketName: string; + objectName: string; + duration?: number; + queryMap: Record; + endpoint?: string; +}; diff --git a/packages/chain-sdk/src/types/sp-xml/GetUserBucketsResponse.ts b/packages/chain-sdk/src/types/sp/GetUserBuckets.ts similarity index 67% rename from packages/chain-sdk/src/types/sp-xml/GetUserBucketsResponse.ts rename to packages/chain-sdk/src/types/sp/GetUserBuckets.ts index 45c09a1e..5bf928a5 100644 --- a/packages/chain-sdk/src/types/sp-xml/GetUserBucketsResponse.ts +++ b/packages/chain-sdk/src/types/sp/GetUserBuckets.ts @@ -1,5 +1,11 @@ import { BucketMeta } from './Common'; +export type GetUserBucketsRequest = { + address: string; + duration?: number; + endpoint: string; +}; + export interface GetUserBucketsResponse { GfSpGetUserBucketsResponse: GfSPGetUserBucketsResponse; } diff --git a/packages/chain-sdk/src/types/sp-xml/ListBucketReadRecordResponse.ts b/packages/chain-sdk/src/types/sp/ListBucketReadRecord.ts similarity index 60% rename from packages/chain-sdk/src/types/sp-xml/ListBucketReadRecordResponse.ts rename to packages/chain-sdk/src/types/sp/ListBucketReadRecord.ts index ed7906aa..4d49a22d 100644 --- a/packages/chain-sdk/src/types/sp-xml/ListBucketReadRecordResponse.ts +++ b/packages/chain-sdk/src/types/sp/ListBucketReadRecord.ts @@ -1,5 +1,13 @@ import { ReadRecord } from './Common'; +export type ListBucketReadRecordRequest = { + bucketName: string; + endpoint?: string; + maxRecords: number; + startTimeStamp: number; + endTimeStamp: number; +}; + export interface ListBucketReadRecordResponse { GetBucketReadQuotaResult: GetBucketReadQuotaResult; } diff --git a/packages/chain-sdk/src/types/sp-xml/ListBucketsByIDsResponse.ts b/packages/chain-sdk/src/types/sp/ListBucketsByIDs.ts similarity index 89% rename from packages/chain-sdk/src/types/sp-xml/ListBucketsByIDsResponse.ts rename to packages/chain-sdk/src/types/sp/ListBucketsByIDs.ts index 84c2c223..d8df1d85 100644 --- a/packages/chain-sdk/src/types/sp-xml/ListBucketsByIDsResponse.ts +++ b/packages/chain-sdk/src/types/sp/ListBucketsByIDs.ts @@ -1,5 +1,9 @@ import { BucketInfo } from './Common'; +export type ListBucketsByIDsRequest = { + ids: string[]; +}; + export interface ListBucketsByIDsResponse { GfSpListBucketsByIDsResponse: GfSpListBucketsByIDsResponse; } diff --git a/packages/chain-sdk/src/types/sp-xml/ListGroupsResponse.ts b/packages/chain-sdk/src/types/sp/ListGroups.ts similarity index 61% rename from packages/chain-sdk/src/types/sp-xml/ListGroupsResponse.ts rename to packages/chain-sdk/src/types/sp/ListGroups.ts index d2755afd..58810500 100644 --- a/packages/chain-sdk/src/types/sp-xml/ListGroupsResponse.ts +++ b/packages/chain-sdk/src/types/sp/ListGroups.ts @@ -1,5 +1,14 @@ +import { SourceType } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; import { GroupInfo } from './Common'; +export type ListGroupsResquest = { + name: string; + prefix: string; + sourceType?: keyof typeof SourceType; + limit?: number; + offset?: number; +}; + export interface ListGroupsResponse { GfSpGetGroupListResponse: GfSpGetGroupListResponse; } diff --git a/packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts b/packages/chain-sdk/src/types/sp/ListGroupsMembers.ts similarity index 80% rename from packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts rename to packages/chain-sdk/src/types/sp/ListGroupsMembers.ts index 7c4b9441..2445df08 100644 --- a/packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts +++ b/packages/chain-sdk/src/types/sp/ListGroupsMembers.ts @@ -1,5 +1,11 @@ import { GroupInfo } from './Common'; +export type ListGroupsMembersRequest = { + groupId: number; + limit?: number; + startAfter?: string; +}; + export interface ListGroupsMembersResponse { GfSpGetGroupMembersResponse: GfSpGetGroupMembersResponse; } diff --git a/packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts b/packages/chain-sdk/src/types/sp/ListObjectsByBucketName.ts similarity index 73% rename from packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts rename to packages/chain-sdk/src/types/sp/ListObjectsByBucketName.ts index 8579f978..b704a4a2 100644 --- a/packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts +++ b/packages/chain-sdk/src/types/sp/ListObjectsByBucketName.ts @@ -1,5 +1,13 @@ import { ObjectMeta } from './Common'; +export type ListObjectsByBucketNameRequest = { + bucketName: string; + duration?: number; + endpoint: string; + protocol?: string; + query?: URLSearchParams; +}; + export interface ListObjectsByBucketNameResponse { GfSpListObjectsByBucketNameResponse: GfSPListObjectsByBucketNameResponse; } diff --git a/packages/chain-sdk/src/types/sp-xml/ListObjectsByIDsResponse.ts b/packages/chain-sdk/src/types/sp/ListObjectsByIDs.ts similarity index 89% rename from packages/chain-sdk/src/types/sp-xml/ListObjectsByIDsResponse.ts rename to packages/chain-sdk/src/types/sp/ListObjectsByIDs.ts index 967b742e..4d36b063 100644 --- a/packages/chain-sdk/src/types/sp-xml/ListObjectsByIDsResponse.ts +++ b/packages/chain-sdk/src/types/sp/ListObjectsByIDs.ts @@ -1,5 +1,9 @@ import { ObjectInfo } from './Common'; +export type ListObjectsByIDsRequest = { + ids: string[]; +}; + export interface ListObjectsByIDsResponse { GfSpListObjectsByIDsResponse: GfSpListObjectsByIDsResponse; } diff --git a/packages/chain-sdk/src/types/sp-xml/ListUserGroupsResponse.ts b/packages/chain-sdk/src/types/sp/ListUserGroups.ts similarity index 80% rename from packages/chain-sdk/src/types/sp-xml/ListUserGroupsResponse.ts rename to packages/chain-sdk/src/types/sp/ListUserGroups.ts index b89398af..450b3ebd 100644 --- a/packages/chain-sdk/src/types/sp-xml/ListUserGroupsResponse.ts +++ b/packages/chain-sdk/src/types/sp/ListUserGroups.ts @@ -1,5 +1,11 @@ import { GroupInfo } from './Common'; +export type ListUserGroupsResquest = { + address: string; + limit?: number; + startAfter?: string; +}; + export interface ListUserGroupsResponse { GfSpGetUserGroupsResponse: GfSpGetUserGroupsResponse; } diff --git a/packages/chain-sdk/src/types/sp-xml/ListUserOwnedGroupsResponse.ts b/packages/chain-sdk/src/types/sp/ListUserOwnedGroups.ts similarity index 80% rename from packages/chain-sdk/src/types/sp-xml/ListUserOwnedGroupsResponse.ts rename to packages/chain-sdk/src/types/sp/ListUserOwnedGroups.ts index c3e1a058..b1c3eedd 100644 --- a/packages/chain-sdk/src/types/sp-xml/ListUserOwnedGroupsResponse.ts +++ b/packages/chain-sdk/src/types/sp/ListUserOwnedGroups.ts @@ -1,5 +1,11 @@ import { GroupInfo } from './Common'; +export type ListUserOwnedGroupsRequest = { + address: string; + limit?: number; + startAfter?: string; +}; + export interface ListUserOwnedGroupsResponse { GfSpGetUserOwnedGroupsResponse: GfSpGetUserOwnedGroupsResponse; } diff --git a/packages/chain-sdk/src/types/sp/MigrateBucket.ts b/packages/chain-sdk/src/types/sp/MigrateBucket.ts new file mode 100644 index 00000000..1f6507b6 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/MigrateBucket.ts @@ -0,0 +1,16 @@ +import { MsgMigrateBucket } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; + +export type MigrateBucketApprovalRequest = Omit & { + endpoint?: string; +}; + +export type MigrateBucketApprovalResponse = { + operator: string; + bucket_name: string; + dst_primary_sp_id: number; + dst_primary_sp_approval: { + expired_height: string; + sig: string; + global_virtual_group_family_id: number; + }; +}; diff --git a/packages/chain-sdk/src/types/sp/ObjectApproval.ts b/packages/chain-sdk/src/types/sp/ObjectApproval.ts new file mode 100644 index 00000000..da504c2c --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ObjectApproval.ts @@ -0,0 +1,35 @@ +import { + RedundancyType, + VisibilityType, +} from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; + +export type CreateObjectApprovalRequest = { + bucketName: string; + objectName: string; + creator: string; + visibility?: keyof typeof VisibilityType; + fileType: string; + redundancyType?: keyof typeof RedundancyType; + duration?: number; + contentLength: number; + expectCheckSums: string[]; + endpoint?: string; +}; + +export type CreateObjectApprovalResponse = { + creator: string; + bucket_name: string; + object_name: string; + payload_size: string; + visibility: keyof typeof VisibilityType; + content_type: string; + primary_sp_approval: { + expired_height: string; + sig: string | null; + global_virtual_group_family_id: number; + }; + expect_checksums: string[]; + // expect_secondary_sp_addresses: string[]; + redundancy_type: keyof typeof RedundancyType; + // charged_read_quota: string; +}; diff --git a/packages/chain-sdk/src/types/sp/PutObject.ts b/packages/chain-sdk/src/types/sp/PutObject.ts new file mode 100644 index 00000000..c1fa9cb0 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/PutObject.ts @@ -0,0 +1,8 @@ +export type PutObjectRequest = { + bucketName: string; + objectName: string; + txnHash: string; + body: File; + duration?: number; + endpoint?: string; +}; diff --git a/packages/chain-sdk/src/types/sp/ReadQuota.ts b/packages/chain-sdk/src/types/sp/ReadQuota.ts new file mode 100644 index 00000000..4ec4e50e --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ReadQuota.ts @@ -0,0 +1,25 @@ +export type ReadQuotaRequest = { + bucketName: string; + endpoint?: string; + duration?: number; + year?: number; + month?: number; +}; + +export interface ReadQuotaResponse { + GetReadQuotaResult: { + BucketName: string; + BucketID: string; + ReadQuotaSize: number; + SPFreeReadQuotaSize: number; + ReadConsumedSize: number; + FreeConsumedSize: number; + }; +} + +export interface IQuotaProps { + readQuota: number; + freeQuota: number; + consumedQuota: number; + freeConsumedSize: number; +} diff --git a/packages/chain-sdk/src/types/sp-xml/RequestNonceResponse.ts b/packages/chain-sdk/src/types/sp/RequestNonce.ts similarity index 54% rename from packages/chain-sdk/src/types/sp-xml/RequestNonceResponse.ts rename to packages/chain-sdk/src/types/sp/RequestNonce.ts index aa129d46..11ae9e79 100644 --- a/packages/chain-sdk/src/types/sp-xml/RequestNonceResponse.ts +++ b/packages/chain-sdk/src/types/sp/RequestNonce.ts @@ -1,3 +1,11 @@ +export interface RequestNonceRequest { + spEndpoint: string; + spAddress: string; + address: string; + domain: string; + spName?: string; +} + export interface RequestNonceResponse { RequestNonceResp: { CurrentNonce: number; diff --git a/packages/chain-sdk/src/types/sp/SuccessResponse.ts b/packages/chain-sdk/src/types/sp/SuccessResponse.ts new file mode 100644 index 00000000..993fad9f --- /dev/null +++ b/packages/chain-sdk/src/types/sp/SuccessResponse.ts @@ -0,0 +1,8 @@ +export type SpResponse = { + code: number | string; + xml?: Document; + message?: string; + statusCode?: number; + body?: T; + signedMsg?: object; +}; diff --git a/packages/chain-sdk/src/types/sp/VerifyPermission.ts b/packages/chain-sdk/src/types/sp/VerifyPermission.ts new file mode 100644 index 00000000..1249598f --- /dev/null +++ b/packages/chain-sdk/src/types/sp/VerifyPermission.ts @@ -0,0 +1,16 @@ +import { ActionType } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; + +export type VerifyPermissionRequest = { + operator: string; + bucketName: string; + objectName?: string; + action: keyof typeof ActionType; +}; + +export interface VerifyPermissionResponse { + QueryVerifyPermissionResponse: QueryVerifyPermissionResponse; +} + +export interface QueryVerifyPermissionResponse { + Effect: number; +} diff --git a/packages/chain-sdk/src/types/sp/index.ts b/packages/chain-sdk/src/types/sp/index.ts new file mode 100644 index 00000000..2045f20c --- /dev/null +++ b/packages/chain-sdk/src/types/sp/index.ts @@ -0,0 +1,22 @@ +export * from './BucketApproval'; +export * from './ErrorResponse'; +export * from './GetBucketMeta'; +export * from './GetObject'; +export * from './GetObjectMeta'; +export * from './GetPreviewObject'; +export * from './GetUserBuckets'; +export * from './ListBucketReadRecord'; +export * from './ListBucketsByIDs'; +export * from './ListGroups'; +export * from './ListGroupsMembers'; +export * from './ListObjectsByBucketName'; +export * from './ListObjectsByIDs'; +export * from './ListUserGroups'; +export * from './ListUserOwnedGroups'; +export * from './ObjectApproval'; +export * from './PutObject'; +export * from './ReadQuota'; +export * from './RequestNonce'; +export * from './SuccessResponse'; +export * from './VerifyPermission'; +export * from './MigrateBucket'; diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index ce8b83d1..dd4285ab 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -1,175 +1,3 @@ -import { ActionType } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; -import { - RedundancyType, - SourceType, - VisibilityType, -} from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; - -export interface IBaseGetCreateBucket { - bucketName: string; - creator: string; - visibility: keyof typeof VisibilityType; - chargedReadQuota: string; - spInfo: { - primarySpAddress: string; - }; - duration?: number; - paymentAddress: string; -} - -export interface ISpInfo { - id: number; - endpoint: string; - primarySpAddress?: string; - sealAddress: string; - secondarySpAddresses: string[]; -} - -export interface IObjectResultType { - code: number | string; - xml?: Document; - message?: string; - statusCode?: number; - body?: T; - signedMsg?: object; -} - -export interface ICreateBucketMsgType { - creator: string; - bucket_name: string; - visibility: keyof typeof VisibilityType; - payment_address: string; - primary_sp_address: string; - primary_sp_approval: { - expired_height: string; - sig: string; - global_virtual_group_family_id: number; - }; - charged_read_quota: string; -} - -export type TGetUserBuckets = { - address: string; - duration?: number; - endpoint: string; -}; - -export type BucketProps = { - bucket_info: { - bucket_name: string; - bucket_status: number; - charged_read_quota: string; - create_at: string; - global_virtual_group_family_id: number; - id: string; - owner: string; - payment_address: string; - primary_sp_id: number; - source_type: string; - visibility: number; - }; - create_tx_hash: string; - delete_at: string; - delete_reason: string; - operator: string; - removed: boolean; - update_at: string; - update_time: string; - update_tx_hash: string; -}; - -export type TBaseGetBucketReadQuota = { - bucketName: string; - endpoint?: string; - duration?: number; - year?: number; - month?: number; -}; - -export interface IQuotaProps { - readQuota: number; - freeQuota: number; - consumedQuota: number; - freeConsumedSize: number; -} - -export type TBaseGetCreateObject = { - bucketName: string; - objectName: string; - creator: string; - visibility?: keyof typeof VisibilityType; - fileType: string; - redundancyType?: keyof typeof RedundancyType; - duration?: number; - contentLength: number; - expectCheckSums: string[]; - endpoint?: string; -}; - -export interface ICreateObjectMsgType { - creator: string; - bucket_name: string; - object_name: string; - payload_size: string; - visibility: keyof typeof VisibilityType; - content_type: string; - primary_sp_approval: { - expired_height: string; - sig: string | null; - global_virtual_group_family_id: number; - }; - expect_checksums: string[]; - // expect_secondary_sp_addresses: string[]; - redundancy_type: keyof typeof RedundancyType; - // charged_read_quota: string; -} - -export type TBasePutObject = { - bucketName: string; - objectName: string; - txnHash: string; - body: File; - duration?: number; - endpoint?: string; -}; - -export type TBaseGetObject = { - bucketName: string; - objectName: string; - duration?: number; - endpoint?: string; -}; - -export type TBaseGetPrivewObject = { - bucketName: string; - objectName: string; - duration?: number; - queryMap: Record; - endpoint?: string; -}; - -export type TListObjects = { - bucketName: string; - duration?: number; - endpoint: string; - protocol?: string; - query?: URLSearchParams; -}; - -export type TDownloadFile = { - bucketName: string; - endpoint: string; - duration?: number; - year?: number; - month?: number; -}; - -export interface IGetObjectStaus { - bucketName: string; - objectName: string; - endpoint: string; -} - export interface IBaseUser { address: string; domain: string; @@ -181,12 +9,6 @@ export interface ISp { nonce?: number; } -export interface IFetchNonce extends IBaseUser { - spEndpoint: string; - spAddress: string; - spName?: string; -} - export interface IFetchNonces extends IBaseUser { sps: ISp[]; } @@ -248,63 +70,3 @@ export interface TGetCurrentSeedStringParams { chainId: number; provider: any; } - -export interface IMigrateBucketMsgType { - operator: string; - bucket_name: string; - dst_primary_sp_id: number; - dst_primary_sp_approval: { - expired_height: string; - sig: string; - global_virtual_group_family_id: number; - }; -} - -export type TListBucketReadRecord = { - bucketName: string; - endpoint?: string; - maxRecords: number; - startTimeStamp: number; - endTimeStamp: number; -}; - -export type TListGroups = { - name: string; - prefix: string; - sourceType?: keyof typeof SourceType; - limit?: number; - offset?: number; -}; - -export type TListObjectsByIDsRequest = { - ids: string[]; -}; - -export type TListBucketsByIDsRequest = { - ids: string[]; -}; - -export type TVerifyPermissionRequest = { - operator: string; - bucketName: string; - objectName?: string; - action: keyof typeof ActionType; -}; - -export type TListGroupsMembersRequest = { - groupId: number; - limit?: number; - startAfter?: string; -}; - -export type TListUserGroupRequest = { - address: string; - limit?: number; - startAfter?: string; -}; - -export type TListUserOwnedGroupRequest = { - address: string; - limit?: number; - startAfter?: string; -}; diff --git a/packages/zk-crypto/src/browser/wasm_exec.js b/packages/zk-crypto/src/browser/wasm_exec.js index 56d7352b..7dac3356 100644 --- a/packages/zk-crypto/src/browser/wasm_exec.js +++ b/packages/zk-crypto/src/browser/wasm_exec.js @@ -193,10 +193,10 @@ if (!global.TextDecoder) { const encoder = new TextEncoder('utf-8'); const decoder = new TextDecoder('utf-8'); +let reinterpretBuf = new DataView(new ArrayBuffer(8)); var logLine = []; export default class Go { - importObject; constructor() { this._callbackTimeouts = new Map(); this._nextCallbackTimeoutID = 1; @@ -206,19 +206,9 @@ export default class Go { return new DataView(this._inst.exports.memory.buffer); }; - const setInt64 = (addr, v) => { - mem().setUint32(addr + 0, v, true); - mem().setUint32(addr + 4, Math.floor(v / 4294967296), true); - }; - - const getInt64 = (addr) => { - const low = mem().getUint32(addr + 0, true); - const high = mem().getInt32(addr + 4, true); - return low + high * 4294967296; - }; - - const loadValue = (addr) => { - const f = mem().getFloat64(addr, true); + const unboxValue = (v_ref) => { + reinterpretBuf.setBigInt64(0, v_ref, true); + const f = reinterpretBuf.getFloat64(0, true); if (f === 0) { return undefined; } @@ -226,71 +216,69 @@ export default class Go { return f; } - const id = mem().getUint32(addr, true); + const id = v_ref & 0xffffffffn; return this._values[id]; }; - const storeValue = (addr, v) => { - const nanHead = 0x7ff80000; + const loadValue = (addr) => { + let v_ref = mem().getBigUint64(addr, true); + return unboxValue(v_ref); + }; + + const boxValue = (v) => { + const nanHead = 0x7ff80000n; if (typeof v === 'number') { if (isNaN(v)) { - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 0, true); - return; + return nanHead << 32n; } if (v === 0) { - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 1, true); - return; + return (nanHead << 32n) | 1n; } - mem().setFloat64(addr, v, true); - return; + reinterpretBuf.setFloat64(0, v, true); + return reinterpretBuf.getBigInt64(0, true); } switch (v) { case undefined: - mem().setFloat64(addr, 0, true); - return; + return 0n; case null: - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 2, true); - return; + return (nanHead << 32n) | 2n; case true: - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 3, true); - return; + return (nanHead << 32n) | 3n; case false: - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 4, true); - return; + return (nanHead << 32n) | 4n; } let id = this._ids.get(v); if (id === undefined) { id = this._idPool.pop(); if (id === undefined) { - id = this._values.length; + id = BigInt(this._values.length); } this._values[id] = v; this._goRefCounts[id] = 0; this._ids.set(v, id); } this._goRefCounts[id]++; - let typeFlag = 1; + let typeFlag = 1n; switch (typeof v) { case 'string': - typeFlag = 2; + typeFlag = 2n; break; case 'symbol': - typeFlag = 3; + typeFlag = 3n; break; case 'function': - typeFlag = 4; + typeFlag = 4n; break; } - mem().setUint32(addr + 4, nanHead | typeFlag, true); - mem().setUint32(addr, id, true); + return id | ((nanHead | typeFlag) << 32n); + }; + + const storeValue = (addr, v) => { + let v_ref = boxValue(v); + mem().setBigUint64(addr, v_ref, true); }; const loadSlice = (array, len, cap) => { @@ -360,7 +348,7 @@ export default class Go { return 0; }, }, - env: { + gojs: { // func ticks() float64 'runtime.ticks': () => { return timeOrigin + performance.now(); @@ -373,10 +361,8 @@ export default class Go { }, // func finalizeRef(v ref) - 'syscall/js.finalizeRef': (v_addr) => { - // Note: TinyGo does not support finalizers so this is only called - // for one specific case, by js.go:jsString. - const id = mem().getUint32(v_addr, true); + 'syscall/js.finalizeRef': (v_ref) => { + const id = mem().getUint32(unboxValue(v_ref), true); this._goRefCounts[id]--; if (this._goRefCounts[id] === 0) { const v = this._values[id]; @@ -387,47 +373,47 @@ export default class Go { }, // func stringVal(value string) ref - 'syscall/js.stringVal': (ret_ptr, value_ptr, value_len) => { + 'syscall/js.stringVal': (value_ptr, value_len) => { const s = loadString(value_ptr, value_len); - storeValue(ret_ptr, s); + return boxValue(s); }, // func valueGet(v ref, p string) ref - 'syscall/js.valueGet': (retval, v_addr, p_ptr, p_len) => { + 'syscall/js.valueGet': (v_ref, p_ptr, p_len) => { let prop = loadString(p_ptr, p_len); - let value = loadValue(v_addr); - let result = Reflect.get(value, prop); - storeValue(retval, result); + let v = unboxValue(v_ref); + let result = Reflect.get(v, prop); + return boxValue(result); }, // func valueSet(v ref, p string, x ref) - 'syscall/js.valueSet': (v_addr, p_ptr, p_len, x_addr) => { - const v = loadValue(v_addr); + 'syscall/js.valueSet': (v_ref, p_ptr, p_len, x_ref) => { + const v = unboxValue(v_ref); const p = loadString(p_ptr, p_len); - const x = loadValue(x_addr); + const x = unboxValue(x_ref); Reflect.set(v, p, x); }, // func valueDelete(v ref, p string) - 'syscall/js.valueDelete': (v_addr, p_ptr, p_len) => { - const v = loadValue(v_addr); + 'syscall/js.valueDelete': (v_ref, p_ptr, p_len) => { + const v = unboxValue(v_ref); const p = loadString(p_ptr, p_len); Reflect.deleteProperty(v, p); }, // func valueIndex(v ref, i int) ref - 'syscall/js.valueIndex': (ret_addr, v_addr, i) => { - storeValue(ret_addr, Reflect.get(loadValue(v_addr), i)); + 'syscall/js.valueIndex': (v_ref, i) => { + return boxValue(Reflect.get(unboxValue(v_ref), i)); }, // valueSetIndex(v ref, i int, x ref) - 'syscall/js.valueSetIndex': (v_addr, i, x_addr) => { - Reflect.set(loadValue(v_addr), i, loadValue(x_addr)); + 'syscall/js.valueSetIndex': (v_ref, i, x_ref) => { + Reflect.set(unboxValue(v_ref), i, unboxValue(x_ref)); }, // func valueCall(v ref, m string, args []ref) (ref, bool) - 'syscall/js.valueCall': (ret_addr, v_addr, m_ptr, m_len, args_ptr, args_len, args_cap) => { - const v = loadValue(v_addr); + 'syscall/js.valueCall': (ret_addr, v_ref, m_ptr, m_len, args_ptr, args_len, args_cap) => { + const v = unboxValue(v_ref); const name = loadString(m_ptr, m_len); const args = loadSliceOfValues(args_ptr, args_len, args_cap); try { @@ -441,9 +427,9 @@ export default class Go { }, // func valueInvoke(v ref, args []ref) (ref, bool) - 'syscall/js.valueInvoke': (ret_addr, v_addr, args_ptr, args_len, args_cap) => { + 'syscall/js.valueInvoke': (ret_addr, v_ref, args_ptr, args_len, args_cap) => { try { - const v = loadValue(v_addr); + const v = unboxValue(v_ref); const args = loadSliceOfValues(args_ptr, args_len, args_cap); storeValue(ret_addr, Reflect.apply(v, undefined, args)); mem().setUint8(ret_addr + 8, 1); @@ -454,8 +440,8 @@ export default class Go { }, // func valueNew(v ref, args []ref) (ref, bool) - 'syscall/js.valueNew': (ret_addr, v_addr, args_ptr, args_len, args_cap) => { - const v = loadValue(v_addr); + 'syscall/js.valueNew': (ret_addr, v_ref, args_ptr, args_len, args_cap) => { + const v = unboxValue(v_ref); const args = loadSliceOfValues(args_ptr, args_len, args_cap); try { storeValue(ret_addr, Reflect.construct(v, args)); @@ -467,66 +453,70 @@ export default class Go { }, // func valueLength(v ref) int - 'syscall/js.valueLength': (v_addr) => { - return loadValue(v_addr).length; + 'syscall/js.valueLength': (v_ref) => { + return unboxValue(v_ref).length; }, // valuePrepareString(v ref) (ref, int) - 'syscall/js.valuePrepareString': (ret_addr, v_addr) => { - const s = String(loadValue(v_addr)); + 'syscall/js.valuePrepareString': (ret_addr, v_ref) => { + const s = String(unboxValue(v_ref)); const str = encoder.encode(s); storeValue(ret_addr, str); - setInt64(ret_addr + 8, str.length); + mem().setInt32(ret_addr + 8, str.length, true); }, // valueLoadString(v ref, b []byte) - 'syscall/js.valueLoadString': (v_addr, slice_ptr, slice_len, slice_cap) => { - const str = loadValue(v_addr); + 'syscall/js.valueLoadString': (v_ref, slice_ptr, slice_len, slice_cap) => { + const str = unboxValue(v_ref); loadSlice(slice_ptr, slice_len, slice_cap).set(str); }, // func valueInstanceOf(v ref, t ref) bool - 'syscall/js.valueInstanceOf': (v_addr, t_addr) => { - return loadValue(v_addr) instanceof loadValue(t_addr); + 'syscall/js.valueInstanceOf': (v_ref, t_ref) => { + return unboxValue(v_ref) instanceof unboxValue(t_ref); }, // func copyBytesToGo(dst []byte, src ref) (int, bool) - 'syscall/js.copyBytesToGo': (ret_addr, dest_addr, dest_len, dest_cap, source_addr) => { + 'syscall/js.copyBytesToGo': (ret_addr, dest_addr, dest_len, dest_cap, src_ref) => { let num_bytes_copied_addr = ret_addr; let returned_status_addr = ret_addr + 4; // Address of returned boolean status variable const dst = loadSlice(dest_addr, dest_len); - const src = loadValue(source_addr); + const src = unboxValue(src_ref); if (!(src instanceof Uint8Array || src instanceof Uint8ClampedArray)) { mem().setUint8(returned_status_addr, 0); // Return "not ok" status return; } const toCopy = src.subarray(0, dst.length); dst.set(toCopy); - setInt64(num_bytes_copied_addr, toCopy.length); + mem().setUint32(num_bytes_copied_addr, toCopy.length, true); mem().setUint8(returned_status_addr, 1); // Return "ok" status }, // copyBytesToJS(dst ref, src []byte) (int, bool) // Originally copied from upstream Go project, then modified: // https://github.com/golang/go/blob/3f995c3f3b43033013013e6c7ccc93a9b1411ca9/misc/wasm/wasm_exec.js#L404-L416 - 'syscall/js.copyBytesToJS': (ret_addr, dest_addr, source_addr, source_len, source_cap) => { + 'syscall/js.copyBytesToJS': (ret_addr, dst_ref, src_addr, src_len, src_cap) => { let num_bytes_copied_addr = ret_addr; let returned_status_addr = ret_addr + 4; // Address of returned boolean status variable - const dst = loadValue(dest_addr); - const src = loadSlice(source_addr, source_len); + const dst = unboxValue(dst_ref); + const src = loadSlice(src_addr, src_len); if (!(dst instanceof Uint8Array || dst instanceof Uint8ClampedArray)) { mem().setUint8(returned_status_addr, 0); // Return "not ok" status return; } const toCopy = src.subarray(0, dst.length); dst.set(toCopy); - setInt64(num_bytes_copied_addr, toCopy.length); + mem().setUint32(num_bytes_copied_addr, toCopy.length, true); mem().setUint8(returned_status_addr, 1); // Return "ok" status }, }, }; + + // Go 1.20 uses 'env'. Go 1.21 uses 'gojs'. + // For compatibility, we use both as long as Go 1.20 is supported. + this.importObject.env = this.importObject.gojs; } async run(instance) { @@ -586,23 +576,25 @@ export default class Go { } } -// if ( -// global.require && -// global.require.main === module && -// global.process && -// global.process.versions && -// !global.process.versions.electron -// ) { -// if (process.argv.length != 3) { -// console.error("usage: go_js_wasm_exec [wasm binary] [arguments]"); -// process.exit(1); -// } - -// const go = new Go(); -// WebAssembly.instantiate(fs.readFileSync(process.argv[2]), go.importObject).then((result) => { -// return go.run(result.instance); -// }).catch((err) => { -// console.error(err); -// process.exit(1); -// }); -// } +if ( + global.require && + global.require.main === module && + global.process && + global.process.versions && + !global.process.versions.electron +) { + if (process.argv.length != 3) { + console.error('usage: go_js_wasm_exec [wasm binary] [arguments]'); + process.exit(1); + } + + const go = new Go(); + WebAssembly.instantiate(fs.readFileSync(process.argv[2]), go.importObject) + .then((result) => { + return go.run(result.instance); + }) + .catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/packages/zk-crypto/src/node/wasm_exec.js b/packages/zk-crypto/src/node/wasm_exec.js index d53f3291..e3d32784 100644 --- a/packages/zk-crypto/src/node/wasm_exec.js +++ b/packages/zk-crypto/src/node/wasm_exec.js @@ -193,10 +193,10 @@ if (!global.TextDecoder) { const encoder = new TextEncoder('utf-8'); const decoder = new TextDecoder('utf-8'); +let reinterpretBuf = new DataView(new ArrayBuffer(8)); var logLine = []; module.exports = class Go { - importObject; constructor() { this._callbackTimeouts = new Map(); this._nextCallbackTimeoutID = 1; @@ -206,19 +206,9 @@ module.exports = class Go { return new DataView(this._inst.exports.memory.buffer); }; - const setInt64 = (addr, v) => { - mem().setUint32(addr + 0, v, true); - mem().setUint32(addr + 4, Math.floor(v / 4294967296), true); - }; - - const getInt64 = (addr) => { - const low = mem().getUint32(addr + 0, true); - const high = mem().getInt32(addr + 4, true); - return low + high * 4294967296; - }; - - const loadValue = (addr) => { - const f = mem().getFloat64(addr, true); + const unboxValue = (v_ref) => { + reinterpretBuf.setBigInt64(0, v_ref, true); + const f = reinterpretBuf.getFloat64(0, true); if (f === 0) { return undefined; } @@ -226,71 +216,69 @@ module.exports = class Go { return f; } - const id = mem().getUint32(addr, true); + const id = v_ref & 0xffffffffn; return this._values[id]; }; - const storeValue = (addr, v) => { - const nanHead = 0x7ff80000; + const loadValue = (addr) => { + let v_ref = mem().getBigUint64(addr, true); + return unboxValue(v_ref); + }; + + const boxValue = (v) => { + const nanHead = 0x7ff80000n; if (typeof v === 'number') { if (isNaN(v)) { - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 0, true); - return; + return nanHead << 32n; } if (v === 0) { - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 1, true); - return; + return (nanHead << 32n) | 1n; } - mem().setFloat64(addr, v, true); - return; + reinterpretBuf.setFloat64(0, v, true); + return reinterpretBuf.getBigInt64(0, true); } switch (v) { case undefined: - mem().setFloat64(addr, 0, true); - return; + return 0n; case null: - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 2, true); - return; + return (nanHead << 32n) | 2n; case true: - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 3, true); - return; + return (nanHead << 32n) | 3n; case false: - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 4, true); - return; + return (nanHead << 32n) | 4n; } let id = this._ids.get(v); if (id === undefined) { id = this._idPool.pop(); if (id === undefined) { - id = this._values.length; + id = BigInt(this._values.length); } this._values[id] = v; this._goRefCounts[id] = 0; this._ids.set(v, id); } this._goRefCounts[id]++; - let typeFlag = 1; + let typeFlag = 1n; switch (typeof v) { case 'string': - typeFlag = 2; + typeFlag = 2n; break; case 'symbol': - typeFlag = 3; + typeFlag = 3n; break; case 'function': - typeFlag = 4; + typeFlag = 4n; break; } - mem().setUint32(addr + 4, nanHead | typeFlag, true); - mem().setUint32(addr, id, true); + return id | ((nanHead | typeFlag) << 32n); + }; + + const storeValue = (addr, v) => { + let v_ref = boxValue(v); + mem().setBigUint64(addr, v_ref, true); }; const loadSlice = (array, len, cap) => { @@ -360,7 +348,7 @@ module.exports = class Go { return 0; }, }, - env: { + gojs: { // func ticks() float64 'runtime.ticks': () => { return timeOrigin + performance.now(); @@ -373,10 +361,8 @@ module.exports = class Go { }, // func finalizeRef(v ref) - 'syscall/js.finalizeRef': (v_addr) => { - // Note: TinyGo does not support finalizers so this is only called - // for one specific case, by js.go:jsString. - const id = mem().getUint32(v_addr, true); + 'syscall/js.finalizeRef': (v_ref) => { + const id = mem().getUint32(unboxValue(v_ref), true); this._goRefCounts[id]--; if (this._goRefCounts[id] === 0) { const v = this._values[id]; @@ -387,47 +373,47 @@ module.exports = class Go { }, // func stringVal(value string) ref - 'syscall/js.stringVal': (ret_ptr, value_ptr, value_len) => { + 'syscall/js.stringVal': (value_ptr, value_len) => { const s = loadString(value_ptr, value_len); - storeValue(ret_ptr, s); + return boxValue(s); }, // func valueGet(v ref, p string) ref - 'syscall/js.valueGet': (retval, v_addr, p_ptr, p_len) => { + 'syscall/js.valueGet': (v_ref, p_ptr, p_len) => { let prop = loadString(p_ptr, p_len); - let value = loadValue(v_addr); - let result = Reflect.get(value, prop); - storeValue(retval, result); + let v = unboxValue(v_ref); + let result = Reflect.get(v, prop); + return boxValue(result); }, // func valueSet(v ref, p string, x ref) - 'syscall/js.valueSet': (v_addr, p_ptr, p_len, x_addr) => { - const v = loadValue(v_addr); + 'syscall/js.valueSet': (v_ref, p_ptr, p_len, x_ref) => { + const v = unboxValue(v_ref); const p = loadString(p_ptr, p_len); - const x = loadValue(x_addr); + const x = unboxValue(x_ref); Reflect.set(v, p, x); }, // func valueDelete(v ref, p string) - 'syscall/js.valueDelete': (v_addr, p_ptr, p_len) => { - const v = loadValue(v_addr); + 'syscall/js.valueDelete': (v_ref, p_ptr, p_len) => { + const v = unboxValue(v_ref); const p = loadString(p_ptr, p_len); Reflect.deleteProperty(v, p); }, // func valueIndex(v ref, i int) ref - 'syscall/js.valueIndex': (ret_addr, v_addr, i) => { - storeValue(ret_addr, Reflect.get(loadValue(v_addr), i)); + 'syscall/js.valueIndex': (v_ref, i) => { + return boxValue(Reflect.get(unboxValue(v_ref), i)); }, // valueSetIndex(v ref, i int, x ref) - 'syscall/js.valueSetIndex': (v_addr, i, x_addr) => { - Reflect.set(loadValue(v_addr), i, loadValue(x_addr)); + 'syscall/js.valueSetIndex': (v_ref, i, x_ref) => { + Reflect.set(unboxValue(v_ref), i, unboxValue(x_ref)); }, // func valueCall(v ref, m string, args []ref) (ref, bool) - 'syscall/js.valueCall': (ret_addr, v_addr, m_ptr, m_len, args_ptr, args_len, args_cap) => { - const v = loadValue(v_addr); + 'syscall/js.valueCall': (ret_addr, v_ref, m_ptr, m_len, args_ptr, args_len, args_cap) => { + const v = unboxValue(v_ref); const name = loadString(m_ptr, m_len); const args = loadSliceOfValues(args_ptr, args_len, args_cap); try { @@ -441,9 +427,9 @@ module.exports = class Go { }, // func valueInvoke(v ref, args []ref) (ref, bool) - 'syscall/js.valueInvoke': (ret_addr, v_addr, args_ptr, args_len, args_cap) => { + 'syscall/js.valueInvoke': (ret_addr, v_ref, args_ptr, args_len, args_cap) => { try { - const v = loadValue(v_addr); + const v = unboxValue(v_ref); const args = loadSliceOfValues(args_ptr, args_len, args_cap); storeValue(ret_addr, Reflect.apply(v, undefined, args)); mem().setUint8(ret_addr + 8, 1); @@ -454,8 +440,8 @@ module.exports = class Go { }, // func valueNew(v ref, args []ref) (ref, bool) - 'syscall/js.valueNew': (ret_addr, v_addr, args_ptr, args_len, args_cap) => { - const v = loadValue(v_addr); + 'syscall/js.valueNew': (ret_addr, v_ref, args_ptr, args_len, args_cap) => { + const v = unboxValue(v_ref); const args = loadSliceOfValues(args_ptr, args_len, args_cap); try { storeValue(ret_addr, Reflect.construct(v, args)); @@ -467,66 +453,70 @@ module.exports = class Go { }, // func valueLength(v ref) int - 'syscall/js.valueLength': (v_addr) => { - return loadValue(v_addr).length; + 'syscall/js.valueLength': (v_ref) => { + return unboxValue(v_ref).length; }, // valuePrepareString(v ref) (ref, int) - 'syscall/js.valuePrepareString': (ret_addr, v_addr) => { - const s = String(loadValue(v_addr)); + 'syscall/js.valuePrepareString': (ret_addr, v_ref) => { + const s = String(unboxValue(v_ref)); const str = encoder.encode(s); storeValue(ret_addr, str); - setInt64(ret_addr + 8, str.length); + mem().setInt32(ret_addr + 8, str.length, true); }, // valueLoadString(v ref, b []byte) - 'syscall/js.valueLoadString': (v_addr, slice_ptr, slice_len, slice_cap) => { - const str = loadValue(v_addr); + 'syscall/js.valueLoadString': (v_ref, slice_ptr, slice_len, slice_cap) => { + const str = unboxValue(v_ref); loadSlice(slice_ptr, slice_len, slice_cap).set(str); }, // func valueInstanceOf(v ref, t ref) bool - 'syscall/js.valueInstanceOf': (v_addr, t_addr) => { - return loadValue(v_addr) instanceof loadValue(t_addr); + 'syscall/js.valueInstanceOf': (v_ref, t_ref) => { + return unboxValue(v_ref) instanceof unboxValue(t_ref); }, // func copyBytesToGo(dst []byte, src ref) (int, bool) - 'syscall/js.copyBytesToGo': (ret_addr, dest_addr, dest_len, dest_cap, source_addr) => { + 'syscall/js.copyBytesToGo': (ret_addr, dest_addr, dest_len, dest_cap, src_ref) => { let num_bytes_copied_addr = ret_addr; let returned_status_addr = ret_addr + 4; // Address of returned boolean status variable const dst = loadSlice(dest_addr, dest_len); - const src = loadValue(source_addr); + const src = unboxValue(src_ref); if (!(src instanceof Uint8Array || src instanceof Uint8ClampedArray)) { mem().setUint8(returned_status_addr, 0); // Return "not ok" status return; } const toCopy = src.subarray(0, dst.length); dst.set(toCopy); - setInt64(num_bytes_copied_addr, toCopy.length); + mem().setUint32(num_bytes_copied_addr, toCopy.length, true); mem().setUint8(returned_status_addr, 1); // Return "ok" status }, // copyBytesToJS(dst ref, src []byte) (int, bool) // Originally copied from upstream Go project, then modified: // https://github.com/golang/go/blob/3f995c3f3b43033013013e6c7ccc93a9b1411ca9/misc/wasm/wasm_exec.js#L404-L416 - 'syscall/js.copyBytesToJS': (ret_addr, dest_addr, source_addr, source_len, source_cap) => { + 'syscall/js.copyBytesToJS': (ret_addr, dst_ref, src_addr, src_len, src_cap) => { let num_bytes_copied_addr = ret_addr; let returned_status_addr = ret_addr + 4; // Address of returned boolean status variable - const dst = loadValue(dest_addr); - const src = loadSlice(source_addr, source_len); + const dst = unboxValue(dst_ref); + const src = loadSlice(src_addr, src_len); if (!(dst instanceof Uint8Array || dst instanceof Uint8ClampedArray)) { mem().setUint8(returned_status_addr, 0); // Return "not ok" status return; } const toCopy = src.subarray(0, dst.length); dst.set(toCopy); - setInt64(num_bytes_copied_addr, toCopy.length); + mem().setUint32(num_bytes_copied_addr, toCopy.length, true); mem().setUint8(returned_status_addr, 1); // Return "ok" status }, }, }; + + // Go 1.20 uses 'env'. Go 1.21 uses 'gojs'. + // For compatibility, we use both as long as Go 1.20 is supported. + this.importObject.env = this.importObject.gojs; } async run(instance) { @@ -586,23 +576,25 @@ module.exports = class Go { } }; -// if ( -// global.require && -// global.require.main === module && -// global.process && -// global.process.versions && -// !global.process.versions.electron -// ) { -// if (process.argv.length != 3) { -// console.error("usage: go_js_wasm_exec [wasm binary] [arguments]"); -// process.exit(1); -// } - -// const go = new Go(); -// WebAssembly.instantiate(fs.readFileSync(process.argv[2]), go.importObject).then((result) => { -// return go.run(result.instance); -// }).catch((err) => { -// console.error(err); -// process.exit(1); -// }); -// } +if ( + global.require && + global.require.main === module && + global.process && + global.process.versions && + !global.process.versions.electron +) { + if (process.argv.length != 3) { + console.error('usage: go_js_wasm_exec [wasm binary] [arguments]'); + process.exit(1); + } + + const go = new Go(); + WebAssembly.instantiate(fs.readFileSync(process.argv[2]), go.importObject) + .then((result) => { + return go.run(result.instance); + }) + .catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/packages/zk-crypto/src/wasm/zk-crypto.wasm b/packages/zk-crypto/src/wasm/zk-crypto.wasm index f45033bd01d90100ff2371eb155a24d8ad713e46..bb3e04ff70862bc9256c30b3d5bf21a4a7a7a0da 100755 GIT binary patch delta 97388 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 delta 91406 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�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 ICx~(X2Z|qVod5s; From bea04668309bb4a769b68e9eab4f193ad2ef1d4b Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 5 Sep 2023 18:30:13 +0800 Subject: [PATCH 206/433] Refactor/sp (#305) * feat: Auth expiry timestamp add default value * refactor: Sp types * fix: Expire time * feat: Upgrade TinyGo version * refactor: Sp metainfo * chore: Update Example --- .changeset/short-moons-pretend.md | 5 + examples/nextjs/src/client/index.ts | 3 +- packages/chain-sdk/README.md | 12 ++ packages/chain-sdk/src/api/bucket.ts | 141 +++++++++--------- packages/chain-sdk/src/api/objectt.ts | 57 +++---- packages/chain-sdk/src/api/sp.ts | 9 +- .../spApis/{bucketApproval.ts => approval.ts} | 26 ++-- .../clients/spclient/spApis/getBucketMeta.ts | 22 ++- .../src/clients/spclient/spApis/getObject.ts | 7 +- .../clients/spclient/spApis/getObjectMeta.ts | 26 +++- .../clients/spclient/spApis/getUserBuckets.ts | 11 +- .../spclient/spApis/listBucketReadRecords.ts | 67 +++++---- .../spclient/spApis/listBucketsByIds.ts | 24 ++- .../src/clients/spclient/spApis/listGroups.ts | 28 +++- .../spclient/spApis/listGroupsMembers.ts | 2 +- .../spclient/spApis/listObjectsByBucket.ts | 2 +- .../spclient/spApis/listObjectsByIds.ts | 20 ++- .../src/clients/spclient/spApis/metaInfos.ts | 7 + .../spclient/spApis/migrateApproval.ts | 36 ----- .../clients/spclient/spApis/objectApproval.ts | 39 ----- .../src/clients/spclient/spApis/putObject.ts | 9 +- .../spclient/spApis/queryBucketReadQuota.ts | 2 +- .../src/clients/spclient/spClient.ts | 30 +++- .../chain-sdk/src/types/sp/GetBucketMeta.ts | 2 +- 24 files changed, 339 insertions(+), 248 deletions(-) create mode 100644 .changeset/short-moons-pretend.md rename packages/chain-sdk/src/clients/spclient/spApis/{bucketApproval.ts => approval.ts} (58%) delete mode 100644 packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts delete mode 100644 packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts diff --git a/.changeset/short-moons-pretend.md b/.changeset/short-moons-pretend.md new file mode 100644 index 00000000..d3f1f727 --- /dev/null +++ b/.changeset/short-moons-pretend.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +refactor: Sp metainfo diff --git a/examples/nextjs/src/client/index.ts b/examples/nextjs/src/client/index.ts index ef65e391..59699810 100644 --- a/examples/nextjs/src/client/index.ts +++ b/examples/nextjs/src/client/index.ts @@ -2,9 +2,8 @@ import { GREEN_CHAIN_ID, GRPC_URL } from '@/config'; import { Client } from '@bnb-chain/greenfield-js-sdk'; export const client = Client.create(GRPC_URL, String(GREEN_CHAIN_ID), { - // zkCryptoUrl: 'https://dcellar.io/static/dcellar-web-ui/wasm/zk.wasm', zkCryptoUrl: - 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto@0.0.2-alpha.4/dist/node/zk-crypto.wasm', + 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto@0.0.3-alpha.0/dist/node/zk-crypto.wasm', }); export const getSps = async () => { diff --git a/packages/chain-sdk/README.md b/packages/chain-sdk/README.md index ff716194..52ba460b 100644 --- a/packages/chain-sdk/README.md +++ b/packages/chain-sdk/README.md @@ -164,3 +164,15 @@ const bucketQuota = await client.bucket.getBucketReadQuota( }, ); ``` + +#### Support Custom Http Request + +It's actually an HTTP request, we use `fetch` by default, and if you want to use another http library like `axios`, we'll construct it for you as well. + +```js +// custom upload object +const { PUT_OBJECT: getPutObjectMetaInfo } = client.spClient.getMetaInfo(endpoint, payload); +const {reqMeta, url} = await getPutObjectMetaInfo(endpoint, params); + +axios.put(...) +``` diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index d015679f..ba6b90ed 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -1,13 +1,21 @@ -import { getSortQuery, HTTPHeaderUserAddress } from '@/clients/spclient/auth'; -import { getBucketApprovalMetaInfo } from '@/clients/spclient/spApis/bucketApproval'; -import { parseGetBucketMetaResponse } from '@/clients/spclient/spApis/getBucketMeta'; -import { parseGetUserBucketsResponse } from '@/clients/spclient/spApis/getUserBuckets'; +import { HTTPHeaderUserAddress } from '@/clients/spclient/auth'; +import { getApprovalMetaInfo } from '@/clients/spclient/spApis/approval'; +import { + getBucketMetaInfo, + parseGetBucketMetaResponse, +} from '@/clients/spclient/spApis/getBucketMeta'; +import { + getUserBucketMetaInfo, + parseGetUserBucketsResponse, +} from '@/clients/spclient/spApis/getUserBuckets'; import { getListBucketReadRecordMetaInfo, parseListBucketReadRecordResponse, } from '@/clients/spclient/spApis/listBucketReadRecords'; -import { parseListBucketsByIdsResponse } from '@/clients/spclient/spApis/listBucketsByIds'; -import { getMigrateMetaInfo } from '@/clients/spclient/spApis/migrateApproval'; +import { + getListBucketsByIDsMetaInfo, + parseListBucketsByIdsResponse, +} from '@/clients/spclient/spApis/listBucketsByIds'; import { parseError } from '@/clients/spclient/spApis/parseError'; import { getQueryBucketReadQuotaMetaInfo, @@ -23,15 +31,15 @@ import { GetBucketMetaResponse, GetUserBucketsRequest, GetUserBucketsResponse, - ListBucketsByIDsResponse, - ListBucketReadRecordResponse, + IQuotaProps, ListBucketReadRecordRequest, + ListBucketReadRecordResponse, ListBucketsByIDsRequest, - ReadQuotaRequest, - SpResponse, - IQuotaProps, + ListBucketsByIDsResponse, MigrateBucketApprovalRequest, MigrateBucketApprovalResponse, + ReadQuotaRequest, + SpResponse, } from '@/types/sp'; import { CreateBucketApprovalRequest, @@ -173,7 +181,10 @@ export class Bucket implements IBucket { private queryClient = container.resolve(RpcQueryClient); private spClient = container.resolve(SpClient); - public async getCreateBucketApproval(params: CreateBucketApprovalRequest, authType: AuthType) { + public async getCreateBucketApproval( + params: CreateBucketApprovalRequest, + authType: AuthType, + ): Promise> { const { bucketName, creator, @@ -197,47 +208,40 @@ export class Bucket implements IBucket { const endpoint = await this.sp.getSPUrlByPrimaryAddr(spInfo.primarySpAddress); - const { reqMeta, optionsWithOutHeaders, url } = await getBucketApprovalMetaInfo(endpoint, { - bucket_name: bucketName, - creator, - visibility, - primary_sp_address: spInfo.primarySpAddress, - primary_sp_approval: { - expired_height: '0', - sig: '', - global_virtual_group_family_id: 0, - }, - charged_read_quota: chargedReadQuota, - payment_address: paymentAddress, - }); + const { reqMeta, optionsWithOutHeaders, url } = + getApprovalMetaInfo(endpoint, 'CreateBucket', { + bucket_name: bucketName, + creator, + visibility, + primary_sp_address: spInfo.primarySpAddress, + primary_sp_approval: { + expired_height: '0', + sig: '', + global_virtual_group_family_id: 0, + }, + charged_read_quota: chargedReadQuota, + payment_address: paymentAddress, + }); const signHeaders = await this.spClient.signHeaders(reqMeta, authType); + const requestOptions: RequestInit = { + ...optionsWithOutHeaders, + headers: signHeaders, + }; - const result = await this.spClient.callApi( - url, - { - ...optionsWithOutHeaders, - headers: signHeaders, - }, - duration, - { - code: -1, - message: 'Get create bucket approval error.', - }, - ); + const result = await this.spClient.callApi(url, requestOptions, duration, { + code: -1, + message: 'Get create bucket approval error.', + }); const signedMsgString = result.headers.get('X-Gnfd-Signed-Msg') || ''; - const signedMsg = JSON.parse( - bytesToUtf8(hexToBytes(signedMsgString)), - ) as CreateBucketApprovalResponse; return { code: 0, message: 'Get create bucket approval success.', body: signedMsgString, statusCode: result.status, - signedMsg: signedMsg, - }; + } as SpResponse; } catch (error: any) { throw { code: -1, @@ -264,12 +268,14 @@ export class Bucket implements IBucket { } public async createBucket(params: CreateBucketApprovalRequest, authType: AuthType) { - const { signedMsg } = await this.getCreateBucketApproval(params, authType); + const { body } = await this.getCreateBucketApproval(params, authType); - if (!signedMsg) { + if (!body) { throw new Error('Get create bucket approval error'); } + const signedMsg = JSON.parse(bytesToUtf8(hexToBytes(body))) as CreateBucketApprovalResponse; + const msg: MsgCreateBucket = { bucketName: signedMsg.bucket_name, creator: signedMsg.creator, @@ -335,7 +341,7 @@ export class Bucket implements IBucket { if (!isValidUrl(endpoint)) { throw new Error('Invalid endpoint'); } - const url = endpoint; + const { url } = getUserBucketMetaInfo(endpoint); const headers = new Headers({ [HTTPHeaderUserAddress]: address, @@ -498,16 +504,17 @@ export class Bucket implements IBucket { endpoint = await this.sp.getSPUrlById(params.dstPrimarySpId); } - const { reqMeta, optionsWithOutHeaders, url } = await getMigrateMetaInfo(endpoint, { - operator: operator, - bucket_name: bucketName, - dst_primary_sp_id: dstPrimarySpId, - dst_primary_sp_approval: { - expired_height: '0', - sig: '', - global_virtual_group_family_id: 0, - }, - }); + const { reqMeta, optionsWithOutHeaders, url } = + getApprovalMetaInfo(endpoint, 'MigrateBucket', { + operator: operator, + bucket_name: bucketName, + dst_primary_sp_id: dstPrimarySpId, + dst_primary_sp_approval: { + expired_height: '0', + sig: '', + global_virtual_group_family_id: 0, + }, + }); const signHeaders = await this.spClient.signHeaders(reqMeta, authType); @@ -581,16 +588,18 @@ export class Bucket implements IBucket { } public async getBucketMeta(params: GetBucketMetaRequest) { - const { bucketName, endpoint } = params; + const { bucketName } = params; if (!isValidBucketName(bucketName)) { throw new Error('Error bucket name'); } - const queryMap = { - 'bucket-meta': '', - }; - const query = getSortQuery(queryMap); - const path = bucketName; - const url = `${endpoint}/${path}?${query}`; + + let endpoint = params.endpoint; + if (!endpoint) { + endpoint = await this.sp.getSPUrlByBucket(bucketName); + } + + const { url } = getBucketMetaInfo(endpoint, params); + const result = await this.spClient.callApi(url, { method: METHOD_GET, }); @@ -609,9 +618,6 @@ export class Bucket implements IBucket { public async listBucketReadRecords(params: ListBucketReadRecordRequest, authType: AuthType) { try { const { bucketName } = params; - // if (!isValidAddress(address)) { - // throw new Error('Error address'); - // } let endpoint = params.endpoint; if (!endpoint) { endpoint = await this.sp.getSPUrlByBucket(bucketName); @@ -620,7 +626,7 @@ export class Bucket implements IBucket { throw new Error('Invalid endpoint'); } - const { url, optionsWithOutHeaders, reqMeta } = await getListBucketReadRecordMetaInfo( + const { url, optionsWithOutHeaders, reqMeta } = getListBucketReadRecordMetaInfo( endpoint, params, ); @@ -660,9 +666,8 @@ export class Bucket implements IBucket { public async listBucketsByIds(params: ListBucketsByIDsRequest) { try { const { ids } = params; - const sp = await this.sp.getInServiceSP(); - const url = `${sp.endpoint}?ids=${ids.join(',')}&buckets-query=null`; + const { url } = getListBucketsByIDsMetaInfo(sp.endpoint, { ids }); const result = await this.spClient.callApi( url, diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index fdd71d53..805fdd2e 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -1,9 +1,15 @@ import { encodePath, getMsgToSign, getSortQuery, secpSign } from '@/clients/spclient/auth'; +import { getApprovalMetaInfo } from '@/clients/spclient/spApis/approval'; import { getGetObjectMetaInfo } from '@/clients/spclient/spApis/getObject'; -import { parseGetObjectMetaResponse } from '@/clients/spclient/spApis/getObjectMeta'; +import { + getObjectMetaInfo, + parseGetObjectMetaResponse, +} from '@/clients/spclient/spApis/getObjectMeta'; import { parseListObjectsByBucketNameResponse } from '@/clients/spclient/spApis/listObjectsByBucket'; -import { parseListObjectsByIdsResponse } from '@/clients/spclient/spApis/listObjectsByIds'; -import { getObjectApprovalMetaInfo } from '@/clients/spclient/spApis/objectApproval'; +import { + getListObjectsByIDsMetaInfo, + parseListObjectsByIdsResponse, +} from '@/clients/spclient/spApis/listObjectsByIds'; import { parseError } from '@/clients/spclient/spApis/parseError'; import { getPutObjectMetaInfo } from '@/clients/spclient/spApis/putObject'; import { METHOD_GET, NORMAL_ERROR_CODE } from '@/constants/http'; @@ -58,12 +64,12 @@ import { AuthType, SpClient } from '../clients/spclient/spClient'; import { CreateObjectApprovalRequest, CreateObjectApprovalResponse, + GetPrivewObject, ListObjectsByBucketNameRequest, ListObjectsByIDsRequest, ListObjectsByIDsResponse, Long, SpResponse, - GetPrivewObject, TxResponse, } from '../types'; import { @@ -198,21 +204,22 @@ export class Objectt implements IObject { if (!endpoint) { endpoint = await this.sp.getSPUrlByBucket(bucketName); } - const { reqMeta, optionsWithOutHeaders, url } = await getObjectApprovalMetaInfo(endpoint, { - bucket_name: bucketName, - content_type: fileType, - creator: creator, - expect_checksums: expectCheckSums, - object_name: objectName, - payload_size: contentLength.toString(), - primary_sp_approval: { - expired_height: '0', - global_virtual_group_family_id: 0, - sig: null, - }, - redundancy_type: redundancyType, - visibility, - }); + const { reqMeta, optionsWithOutHeaders, url } = + getApprovalMetaInfo(endpoint, 'CreateObject', { + bucket_name: bucketName, + content_type: fileType, + creator: creator, + expect_checksums: expectCheckSums, + object_name: objectName, + payload_size: contentLength.toString(), + primary_sp_approval: { + expired_height: '0', + global_virtual_group_family_id: 0, + sig: null, + }, + redundancy_type: redundancyType, + visibility, + }); const signHeaders = await this.spClient.signHeaders(reqMeta, authType); @@ -679,12 +686,8 @@ export class Objectt implements IObject { throw new Error('Error object name'); } - const queryMap = { - 'object-meta': '', - }; - const query = getSortQuery(queryMap); - const path = encodePath(objectName); - const url = `${generateUrlByBucketName(endpoint, bucketName)}/${path}?${query}`; + const { url } = getObjectMetaInfo(endpoint, params); + const result = await this.spClient.callApi(url, { method: METHOD_GET, }); @@ -702,10 +705,8 @@ export class Objectt implements IObject { public async listObjectsByIds(params: ListObjectsByIDsRequest) { try { - const { ids } = params; - const sp = await this.sp.getInServiceSP(); - const url = `${sp.endpoint}?objects-query=null&ids=${ids.join(',')}`; + const { url } = getListObjectsByIDsMetaInfo(sp.endpoint, params); const result = await this.spClient.callApi( url, diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index 36be8274..73d9ae0c 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -1,5 +1,8 @@ import { encodePath, HTTPHeaderUserAddress } from '@/clients/spclient/auth'; -import { parseListGroupsResponse } from '@/clients/spclient/spApis/listGroups'; +import { + getListGroupMetaInfo, + parseListGroupsResponse, +} from '@/clients/spclient/spApis/listGroups'; import { parseListGroupsMembersResponse } from '@/clients/spclient/spApis/listGroupsMembers'; import { parseListUserGroupsResponse } from '@/clients/spclient/spApis/listUserGroups'; import { parseListUserOwnedGroupsResponse } from '@/clients/spclient/spApis/listUserOwnedGroups'; @@ -183,7 +186,7 @@ export class Sp implements ISp { public async listGroups(params: ListGroupsResquest) { try { - const { name, prefix, sourceType, limit, offset } = params; + const { name, prefix } = params; let res: ListGroupsResponse = { GfSpGetGroupListResponse: { @@ -201,7 +204,7 @@ export class Sp implements ISp { } const sp = await this.getInServiceSP(); - const url = `${sp.endpoint}?group-query=null&name=${name}&prefix=${prefix}&source-type=${sourceType}&limit=${limit}&offset=${offset}`; + const { url } = getListGroupMetaInfo(sp.endpoint, params); const result = await this.spClient.callApi( url, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts b/packages/chain-sdk/src/clients/spclient/spApis/approval.ts similarity index 58% rename from packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts rename to packages/chain-sdk/src/clients/spclient/spApis/approval.ts index a89182db..d74aa682 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/approval.ts @@ -1,20 +1,20 @@ import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; import { ReqMeta } from '@/types'; -import { CreateBucketApprovalResponse } from '@/types/sp/BucketApproval'; import { toHex, utf8ToBytes } from 'ethereum-cryptography/utils'; -import { getSortQuery } from '../auth'; +import { getSortQueryParams } from '../auth'; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_approval -export const getBucketApprovalMetaInfo = async ( - endpoint: string, - msg: CreateBucketApprovalResponse, -) => { +export type APPROVAL_ACTION = 'CreateBucket' | 'CreateObject' | 'MigrateBucket'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/get_approval +export const getApprovalMetaInfo = (endpoint: string, action: APPROVAL_ACTION, msg: T) => { const path = '/greenfield/admin/v1/get-approval'; const queryMap = { - action: 'CreateBucket', + action, }; - const query = getSortQuery(queryMap); - const url = `${endpoint}${path}?${query}`; + + let url = new URL(path, endpoint); + url = getSortQueryParams(url, queryMap); + const unSignedMessageInHex = toHex(utf8ToBytes(JSON.stringify(msg))); const reqMeta: Partial = { @@ -22,8 +22,8 @@ export const getBucketApprovalMetaInfo = async ( unsignMsg: unSignedMessageInHex, method: METHOD_GET, url: { - hostname: new URL(endpoint).hostname, - query, + hostname: url.hostname, + query: url.searchParams.toString(), path, }, }; @@ -33,7 +33,7 @@ export const getBucketApprovalMetaInfo = async ( }; return { - url, + url: url.href, optionsWithOutHeaders, reqMeta, }; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts b/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts index 7ac2dd2c..c24a2677 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts @@ -1,8 +1,26 @@ -import { GetBucketMetaResponse } from '@/types'; +import { GetBucketMetaRequest, GetBucketMetaResponse } from '@/types'; import { formatBucketInfo } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; +import { getSortQueryParams } from '../auth'; +import { SPMetaInfo } from './metaInfos'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/get_bucket_meta +export const getBucketMetaInfo = ( + endpoint: string, + params: GetBucketMetaRequest, +): Pick => { + const path = `/${params.bucketName}`; + const queryMap = { + 'bucket-meta': '', + }; + let url = new URL(path, endpoint); + url = getSortQueryParams(url, queryMap); + + return { + url: url.href, + }; +}; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_bucket_meta export const parseGetBucketMetaResponse = async (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getObject.ts b/packages/chain-sdk/src/clients/spclient/spApis/getObject.ts index e789bda6..5c3a4785 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getObject.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getObject.ts @@ -3,7 +3,7 @@ import { ReqMeta } from '@/types'; import { generateUrlByBucketName } from '@/utils/s3'; import { encodePath } from '../auth'; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_object +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/get_object export const getGetObjectMetaInfo = async ( endpoint: string, params: { @@ -14,7 +14,8 @@ export const getGetObjectMetaInfo = async ( const { bucketName, objectName } = params; const path = `/${encodePath(objectName)}`; const query = ''; - const url = generateUrlByBucketName(endpoint, bucketName) + path; + + const url = new URL(path, generateUrlByBucketName(endpoint, bucketName)); const reqMeta: Partial = { contentSHA256: EMPTY_STRING_SHA256, @@ -32,7 +33,7 @@ export const getGetObjectMetaInfo = async ( }; return { - url, + url: url.href, optionsWithOutHeaders, reqMeta, }; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts b/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts index 52dccdb7..ec8dfca6 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts @@ -1,8 +1,30 @@ import { convertStrToBool, formatObjectInfo } from '@/types/sp/Common'; -import { GetObjectMetaResponse } from '@/types/sp/GetObjectMeta'; +import { GetObjectMetaRequest, GetObjectMetaResponse } from '@/types/sp/GetObjectMeta'; +import { generateUrlByBucketName } from '@/utils/s3'; import { XMLParser } from 'fast-xml-parser'; +import { encodePath, getSortQueryParams } from '../auth'; +import type { SPMetaInfo } from './metaInfos'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/get_object_meta +export const getObjectMetaInfo = ( + endpoint: string, + params: GetObjectMetaRequest, +): Pick => { + const { objectName, bucketName } = params; + + const path = `${encodePath(objectName)}`; + const queryMap = { + 'object-meta': '', + }; + + let url = new URL(path, generateUrlByBucketName(endpoint, bucketName)); + url = getSortQueryParams(url, queryMap); + + return { + url: url.href, + }; +}; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_object_meta export const parseGetObjectMetaResponse = async (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts b/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts index 6a9b0225..b9b49fdd 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts @@ -1,8 +1,15 @@ -import { GetUserBucketsResponse } from '@/types'; +import type { GetUserBucketsResponse } from '@/types'; import { convertStrToBool, formatBucketInfo } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; +import { SPMetaInfo } from './metaInfos'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/get_user_buckets +export const getUserBucketMetaInfo = (endpoint: string): Pick => { + return { + url: endpoint, + }; +}; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_user_buckets export const parseGetUserBucketsResponse = async (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts b/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts index cc7abb1a..51b93e71 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts @@ -7,37 +7,14 @@ import { } from '@/types/sp/ListBucketReadRecord'; import { generateUrlByBucketName } from '@/utils'; import { XMLParser } from 'fast-xml-parser'; -import { getSortQuery } from '../auth'; +import { getSortQuery, getSortQueryParams } from '../auth'; +import { SPMetaInfo } from './metaInfos'; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_bucket_read_records -export const parseListBucketReadRecordResponse = async (data: string) => { - const xmlParser = new XMLParser({ - parseTagValue: false, - }); - - const res = xmlParser.parse(data) as ListBucketReadRecordResponse; - - let readRecords = res.GetBucketReadQuotaResult?.ReadRecords || []; - if (readRecords) { - if (!Array.isArray(readRecords)) { - readRecords = [readRecords]; - } - - readRecords = readRecords.map((readRecord) => formatReadRecord(readRecord)); - } - - res.GetBucketReadQuotaResult = { - ...res.GetBucketReadQuotaResult, - ReadRecords: readRecords, - }; - - return res; -}; - -export const getListBucketReadRecordMetaInfo = async ( +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/list_bucket_read_records +export const getListBucketReadRecordMetaInfo = ( endpoint: string, params: ListBucketReadRecordRequest, -) => { +): SPMetaInfo => { const { bucketName, endTimeStamp, maxRecords, startTimeStamp } = params; const path = '/'; const queryMap = { @@ -46,16 +23,16 @@ export const getListBucketReadRecordMetaInfo = async ( 'max-records': String(maxRecords), 'start-timestamp': String(startTimeStamp), }; - const query = getSortQuery(queryMap); - const url = `${generateUrlByBucketName(endpoint, bucketName)}${path}?${query}`; + let url = new URL(path, generateUrlByBucketName(endpoint, bucketName)); + url = getSortQueryParams(url, queryMap); const reqMeta: Partial = { contentSHA256: EMPTY_STRING_SHA256, method: METHOD_GET, url: { - hostname: new URL(url).hostname, - query, + hostname: url.hostname, + query: url.searchParams.toString(), path, }, }; @@ -65,8 +42,32 @@ export const getListBucketReadRecordMetaInfo = async ( }; return { - url, + url: url.href, optionsWithOutHeaders, reqMeta, }; }; + +export const parseListBucketReadRecordResponse = async (data: string) => { + const xmlParser = new XMLParser({ + parseTagValue: false, + }); + + const res = xmlParser.parse(data) as ListBucketReadRecordResponse; + + let readRecords = res.GetBucketReadQuotaResult?.ReadRecords || []; + if (readRecords) { + if (!Array.isArray(readRecords)) { + readRecords = [readRecords]; + } + + readRecords = readRecords.map((readRecord) => formatReadRecord(readRecord)); + } + + res.GetBucketReadQuotaResult = { + ...res.GetBucketReadQuotaResult, + ReadRecords: readRecords, + }; + + return res; +}; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts b/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts index 752ef44e..ea0df2a7 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts @@ -1,8 +1,28 @@ -import { ListBucketsByIDsResponse } from '@/types'; +import { ListBucketsByIDsRequest, ListBucketsByIDsResponse } from '@/types'; import { convertStrToBool, formatBucketInfo } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; +import { getSortQueryParams } from '../auth'; +import { SPMetaInfo } from './metaInfos'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/list_buckets_by_ids +export const getListBucketsByIDsMetaInfo = ( + endpoint: string, + params: ListBucketsByIDsRequest, +): Pick => { + const path = '/'; + const queryMap = { + ids: params.ids.join(','), + 'buckets-query': 'null', + }; + + let url = new URL(path, endpoint); + url = getSortQueryParams(url, queryMap); + + return { + url: url.href, + }; +}; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_buckets_by_ids export const parseListBucketsByIdsResponse = async (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts b/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts index 0679b6a3..3d3ce83b 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts @@ -1,8 +1,32 @@ -import { ListGroupsResponse } from '@/types'; +import { ListGroupsResponse, ListGroupsResquest } from '@/types'; import { formatGroupInfo, convertStrToBool } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; +import { getSortQueryParams } from '../auth'; +import { SPMetaInfo } from './metaInfos'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/get_group_list +export const getListGroupMetaInfo = ( + endpoint: string, + params: ListGroupsResquest, +): Pick => { + const { name, prefix, sourceType, limit, offset } = params; + const path = '/'; + const queryMap = { + 'group-query': 'null', + name, + prefix, + 'source-type': sourceType as string, + limit: String(limit), + offset: String(offset), + }; + let url = new URL(path, endpoint); + url = getSortQueryParams(url, queryMap); + + return { + url: url.href, + }; +}; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_group_list export const parseListGroupsResponse = async (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts b/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts index c043c496..2aa32347 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts @@ -2,7 +2,7 @@ import { ListGroupsMembersResponse } from '@/types'; import { formatGroupInfo, convertStrToBool } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_group_members +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/list_group_members export const parseListGroupsMembersResponse = async (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts index ca2f3099..a40a5e75 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts @@ -2,7 +2,7 @@ import { convertStrToBool, formatObjectInfo } from '@/types/sp/Common'; import { ListObjectsByBucketNameResponse } from '@/types/sp/ListObjectsByBucketName'; import { XMLParser } from 'fast-xml-parser'; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_objects_by_bucket +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/list_objects_by_bucket export const parseListObjectsByBucketNameResponse = async (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts index bc0ad1ba..a964fc6e 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts @@ -1,8 +1,24 @@ -import { ListObjectsByIDsResponse } from '@/types'; +import { ListObjectsByIDsRequest, ListObjectsByIDsResponse } from '@/types'; import { formatObjectInfo, convertStrToBool } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; +import { getSortQueryParams } from '../auth'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/list_objects_by_ids +export const getListObjectsByIDsMetaInfo = (endpoint: string, params: ListObjectsByIDsRequest) => { + const path = ''; + const queryMap = { + ids: params.ids.join(','), + 'objects-query': 'null', + }; + + let url = new URL(path, endpoint); + url = getSortQueryParams(url, queryMap); + + return { + url: url.href, + }; +}; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_objects_by_ids export const parseListObjectsByIdsResponse = async (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/metaInfos.ts b/packages/chain-sdk/src/clients/spclient/spApis/metaInfos.ts index 992f68ee..1fbb150f 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/metaInfos.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/metaInfos.ts @@ -1,9 +1,16 @@ +import type { ReqMeta } from '@/types'; import { getBucketApprovalMetaInfo } from './bucketApproval'; import { getGetObjectMetaInfo } from './getObject'; import { getObjectApprovalMetaInfo } from './objectApproval'; import { getPutObjectMetaInfo } from './putObject'; import { getQueryBucketReadQuotaMetaInfo } from './queryBucketReadQuota'; +export type SPMetaInfo = { + url: string; + optionsWithOutHeaders: Omit; + reqMeta: Partial; +}; + export const SpMetaInfo = { getBucketApprovalMetaInfo, getGetObjectMetaInfo, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts b/packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts deleted file mode 100644 index c3de0209..00000000 --- a/packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; -import { MigrateBucketApprovalResponse, ReqMeta } from '@/types'; -import { toHex, utf8ToBytes } from 'ethereum-cryptography/utils'; -import { getSortQuery } from '../auth'; - -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_approval -export const getMigrateMetaInfo = async (endpoint: string, msg: MigrateBucketApprovalResponse) => { - const path = '/greenfield/admin/v1/get-approval'; - const queryMap = { - action: 'MigrateBucket', - }; - const query = getSortQuery(queryMap); - const url = `${endpoint}${path}?${query}`; - const unSignedMessageInHex = toHex(utf8ToBytes(JSON.stringify(msg))); - - const reqMeta: Partial = { - contentSHA256: EMPTY_STRING_SHA256, - method: METHOD_GET, - url: { - hostname: new URL(url).hostname, - query, - path, - }, - unsignMsg: unSignedMessageInHex, - }; - - const optionsWithOutHeaders: Omit = { - method: METHOD_GET, - }; - - return { - url, - optionsWithOutHeaders, - reqMeta, - }; -}; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts b/packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts deleted file mode 100644 index 65c259f8..00000000 --- a/packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; -import { CreateObjectApprovalResponse, ReqMeta } from '@/types'; -import { toHex, utf8ToBytes } from 'ethereum-cryptography/utils'; -import { getSortQuery } from '../auth'; - -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_approval -export const getObjectApprovalMetaInfo = async ( - endpoint: string, - msg: CreateObjectApprovalResponse, -) => { - const path = '/greenfield/admin/v1/get-approval'; - const queryMap = { - action: 'CreateObject', - }; - const query = getSortQuery(queryMap); - const url = `${endpoint}${path}?${query}`; - const unSignedMessageInHex = toHex(utf8ToBytes(JSON.stringify(msg))); - - const reqMeta: Partial = { - contentSHA256: EMPTY_STRING_SHA256, - unsignMsg: unSignedMessageInHex, - method: METHOD_GET, - url: { - hostname: new URL(endpoint).hostname, - query, - path, - }, - }; - - const optionsWithOutHeaders: Omit = { - method: METHOD_GET, - }; - - return { - url, - optionsWithOutHeaders, - reqMeta, - }; -}; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/putObject.ts b/packages/chain-sdk/src/clients/spclient/spApis/putObject.ts index 9f174759..d9551207 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/putObject.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/putObject.ts @@ -3,7 +3,7 @@ import { ReqMeta } from '@/types'; import { generateUrlByBucketName } from '@/utils/s3'; import { encodePath } from '../auth'; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/put_object +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/put_object export const getPutObjectMetaInfo = async ( endpoint: string, params: { @@ -16,16 +16,15 @@ export const getPutObjectMetaInfo = async ( ) => { const { bucketName, objectName, txnHash, contentType, body } = params; const path = `/${encodePath(objectName)}`; - const query = ''; - const url = `${generateUrlByBucketName(endpoint, bucketName)}${path}`; + const url = new URL(path, generateUrlByBucketName(endpoint, bucketName)); const reqMeta: Partial = { contentSHA256: EMPTY_STRING_SHA256, txnHash: txnHash, method: METHOD_PUT, url: { - hostname: new URL(url).hostname, + hostname: url.hostname, query, path, }, @@ -38,7 +37,7 @@ export const getPutObjectMetaInfo = async ( }; return { - url, + url: url.href, optionsWithOutHeaders, reqMeta, }; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts b/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts index 5502ec6e..048ece2c 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts @@ -5,7 +5,7 @@ import { generateUrlByBucketName } from '@/utils/s3'; import { XMLParser } from 'fast-xml-parser'; import { getSortQuery } from '../auth'; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/query_bucket_read_quota +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/query_bucket_read_quota export const getQueryBucketReadQuotaMetaInfo = async ( endpoint: string, params: ReadQuotaRequest, diff --git a/packages/chain-sdk/src/clients/spclient/spClient.ts b/packages/chain-sdk/src/clients/spclient/spClient.ts index f968fb36..40bbdabd 100644 --- a/packages/chain-sdk/src/clients/spclient/spClient.ts +++ b/packages/chain-sdk/src/clients/spclient/spClient.ts @@ -7,16 +7,18 @@ import { parseError } from '@/clients/spclient/spApis/parseError'; import { ReqMeta } from '@/types/auth'; import { Headers } from 'cross-fetch'; import { singleton } from 'tsyringe'; +import { getGetObjectMetaInfo } from './spApis/getObject'; +import { getPutObjectMetaInfo } from './spApis/putObject'; /** - * V1 + * ECDSA Signature */ export type ECDSA = { type: 'ECDSA'; privateKey: string; }; /** - * OffChainAuth + * EDDSA Signature */ export type EDDSA = { type: 'EDDSA'; @@ -26,6 +28,8 @@ export type EDDSA = { }; export type AuthType = ECDSA | EDDSA; +export type ApiResult = T extends true ? U : RequestInit; + export interface ISpClient { callApi( url: string, @@ -38,6 +42,21 @@ export interface ISpClient { ): Promise; signHeaders(reqMeta: Partial, authType: AuthType): Promise; + + /** + * + * ``` + * const { PUT_OBJECT: getPutObjectMetaInfo } = client.spClient.getMetaInfo(endpoint, payload); + * const {reqMeta, url} = await getPutObjectMetaInfo(endpoint, params); + * + * axios.put(...) + * ``` + * + */ + getMetaInfo(): { + PUT_OBJECT: typeof getPutObjectMetaInfo; + GET_OBJECT: typeof getGetObjectMetaInfo; + }; } @singleton() @@ -91,4 +110,11 @@ export class SpClient implements ISpClient { return metaHeaders; } + + public getMetaInfo() { + return { + PUT_OBJECT: getPutObjectMetaInfo, + GET_OBJECT: getGetObjectMetaInfo, + }; + } } diff --git a/packages/chain-sdk/src/types/sp/GetBucketMeta.ts b/packages/chain-sdk/src/types/sp/GetBucketMeta.ts index 55272bf9..f9e63ce1 100644 --- a/packages/chain-sdk/src/types/sp/GetBucketMeta.ts +++ b/packages/chain-sdk/src/types/sp/GetBucketMeta.ts @@ -2,7 +2,7 @@ import { BucketMeta, StreamRecord } from './Common'; export interface GetBucketMetaRequest { bucketName: string; - endpoint: string; + endpoint?: string; } export interface GetBucketMetaResponse { From a2536eb17ebfcdf42d7d5fc44742d52e488fbe61 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 5 Sep 2023 18:33:20 +0800 Subject: [PATCH 207/433] chore: [ci] release (alpha) (#303) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 5 ++++- examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 12 ++++++++++++ packages/chain-sdk/package.json | 2 +- packages/zk-crypto/CHANGELOG.md | 8 ++++++++ packages/zk-crypto/package.json | 2 +- 9 files changed, 44 insertions(+), 5 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 4b87c69f..e97bec6a 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -8,5 +8,8 @@ "@bnb-chain/greenfiled-file-handle": "0.2.1", "@bnb-chain/greenfield-zk-crypto": "0.0.2" }, - "changesets": [] + "changesets": [ + "giant-bikes-grab", + "perfect-starfishes-watch" + ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 979ea941..9694ecf9 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.6-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.0 + ## 0.0.5 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 1b2da818..8eb28912 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.5", + "version": "0.0.6-alpha.0", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 72b005f5..eff134f8 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.9-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.0 + ## 0.0.8 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 9ab81a68..4a0365b9 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.8", + "version": "0.0.9-alpha.0", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 28e3eb58..b19eb2a5 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.5-alpha.0 + +### Patch Changes + +- [#302](https://github.com/bnb-chain/greenfield-js-sdk/pull/302) + [`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: Sp types + +- Updated dependencies + [[`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274)]: + - @bnb-chain/greenfield-zk-crypto@0.0.3-alpha.0 + ## 0.2.4 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 6a59239c..76220e81 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.4", + "version": "0.2.5-alpha.0", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", diff --git a/packages/zk-crypto/CHANGELOG.md b/packages/zk-crypto/CHANGELOG.md index 3a04fd09..e5b303cc 100644 --- a/packages/zk-crypto/CHANGELOG.md +++ b/packages/zk-crypto/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/zk-crypto +## 0.0.3-alpha.0 + +### Patch Changes + +- [#302](https://github.com/bnb-chain/greenfield-js-sdk/pull/302) + [`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Upgrade TinyGo version and Go version + ## 0.0.2 ### Patch Changes diff --git a/packages/zk-crypto/package.json b/packages/zk-crypto/package.json index 4d25f70e..4761950d 100644 --- a/packages/zk-crypto/package.json +++ b/packages/zk-crypto/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-zk-crypto", - "version": "0.0.2", + "version": "0.0.3-alpha.0", "description": "Zk crypto wasm module", "scripts": { "predev": "rimraf ./dist", From 57837a538951a6dc98bf3461d4a9c1b493a2498c Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 5 Sep 2023 18:42:03 +0800 Subject: [PATCH 208/433] fix: Build (#306) --- packages/chain-sdk/src/clients/spclient/spApis/metaInfos.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/chain-sdk/src/clients/spclient/spApis/metaInfos.ts b/packages/chain-sdk/src/clients/spclient/spApis/metaInfos.ts index 1fbb150f..7b504331 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/metaInfos.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/metaInfos.ts @@ -1,7 +1,5 @@ import type { ReqMeta } from '@/types'; -import { getBucketApprovalMetaInfo } from './bucketApproval'; import { getGetObjectMetaInfo } from './getObject'; -import { getObjectApprovalMetaInfo } from './objectApproval'; import { getPutObjectMetaInfo } from './putObject'; import { getQueryBucketReadQuotaMetaInfo } from './queryBucketReadQuota'; @@ -12,9 +10,7 @@ export type SPMetaInfo = { }; export const SpMetaInfo = { - getBucketApprovalMetaInfo, getGetObjectMetaInfo, - getObjectApprovalMetaInfo, getPutObjectMetaInfo, getQueryBucketReadQuotaMetaInfo, }; From 4acdb919f4c2d7764c670f97c26a5b9cca8c962e Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 5 Sep 2023 19:04:00 +0800 Subject: [PATCH 209/433] chore: Update Deps (#308) --- .changeset/itchy-ducks-chew.md | 5 + package.json | 2 +- packages/chain-sdk/package.json | 1 - packages/chain-sdk/rollup.config.js | 3 +- pnpm-lock.yaml | 2829 +++++++++------------------ 5 files changed, 886 insertions(+), 1954 deletions(-) create mode 100644 .changeset/itchy-ducks-chew.md diff --git a/.changeset/itchy-ducks-chew.md b/.changeset/itchy-ducks-chew.md new file mode 100644 index 00000000..1197fa98 --- /dev/null +++ b/.changeset/itchy-ducks-chew.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +refactor: Update Deps diff --git a/package.json b/package.json index daaab2a0..2fd95489 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "@typescript-eslint/parser": "^5.59.11", "chai": "^4.3.7", "conventional-changelog-cmyr-config": "^2.1.0", - "eslint": "^8.42.0", + "eslint": "^8.48.0", "eslint-config-react-app": "^7.0.1", "eslint-plugin-prettier": "^4.2.1", "husky": "^8.0.3", diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 76220e81..69bea1b0 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -87,7 +87,6 @@ "mime": "^3.0.0", "rollup": "^2.79.1", "rollup-plugin-auto-external": "^2.0.0", - "rollup-plugin-node-builtins": "^2.1.2", "rollup-plugin-polyfill-node": "^0.10.2", "rollup-plugin-terser": "^7.0.2", "ts-jest": "^29.1.0", diff --git a/packages/chain-sdk/rollup.config.js b/packages/chain-sdk/rollup.config.js index 3f068523..6df2b29f 100644 --- a/packages/chain-sdk/rollup.config.js +++ b/packages/chain-sdk/rollup.config.js @@ -5,7 +5,6 @@ import resolve from '@rollup/plugin-node-resolve'; import nodePolyfills from 'rollup-plugin-polyfill-node'; import typescript from '@rollup/plugin-typescript'; import path from 'path'; -import builtins from 'rollup-plugin-node-builtins'; import autoExternal from 'rollup-plugin-auto-external'; import pkg from './package.json'; @@ -30,7 +29,7 @@ export default async () => { json({ include: ['src/**'], }), - builtins(), + // builtins(), resolve({ exportConditions: ['default', 'module', 'import'], mainFields: ['module', 'main'], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f00fb55..c9c2dd0d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: devDependencies: '@babel/core': specifier: ^7.22.5 - version: 7.22.5 + version: 7.22.15 '@changesets/changelog-github': specifier: ^0.4.8 version: 0.4.8 @@ -28,7 +28,7 @@ importers: version: 4.0.4(rollup@2.79.1) '@rollup/plugin-babel': specifier: ^5.3.1 - version: 5.3.1(@babel/core@7.22.5)(rollup@2.79.1) + version: 5.3.1(@babel/core@7.22.15)(rollup@2.79.1) '@rollup/plugin-commonjs': specifier: ^22.0.2 version: 22.0.2(rollup@2.79.1) @@ -61,10 +61,10 @@ importers: version: 18.2.5 '@typescript-eslint/eslint-plugin': specifier: ^5.59.11 - version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) '@typescript-eslint/parser': specifier: ^5.59.11 - version: 5.59.11(eslint@8.42.0)(typescript@4.9.5) + version: 5.59.11(eslint@8.48.0)(typescript@4.9.5) chai: specifier: ^4.3.7 version: 4.3.7 @@ -72,14 +72,14 @@ importers: specifier: ^2.1.0 version: 2.1.0 eslint: - specifier: ^8.42.0 - version: 8.42.0 + specifier: ^8.48.0 + version: 8.48.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@4.9.5) + version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0)(typescript@4.9.5) eslint-plugin-prettier: specifier: ^4.2.1 - version: 4.2.1(eslint@8.42.0)(prettier@2.8.8) + version: 4.2.1(eslint@8.48.0)(prettier@2.8.8) husky: specifier: ^8.0.3 version: 8.0.3 @@ -127,16 +127,16 @@ importers: version: 13.1.6 '@rainbow-me/rainbowkit': specifier: ^1.0.5 - version: 1.0.5(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0) + version: 1.0.5(@types/react@18.2.12)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0) '@types/node': specifier: ^18.7.1 - version: 18.16.7 + version: 18.16.18 '@types/react': specifier: ^18.0.17 - version: 18.2.6 + version: 18.2.12 '@types/react-dom': specifier: ^18.0.6 - version: 18.2.4 + version: 18.2.5 axios: specifier: ^1.3.4 version: 1.3.4 @@ -145,10 +145,10 @@ importers: version: 2.8.5 eslint: specifier: ^8.21.0 - version: 8.40.0 + version: 8.48.0 eslint-config-next: specifier: 13.1.6 - version: 13.1.6(eslint@8.40.0)(typescript@4.9.5) + version: 13.1.6(eslint@8.48.0)(typescript@4.9.5) evmosjs: specifier: ^0.2.17 version: 0.2.17 @@ -157,7 +157,7 @@ importers: version: 5.2.1 next: specifier: 13.1.6 - version: 13.1.6(react-dom@18.2.0)(react@18.2.0) + version: 13.1.6(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 @@ -293,9 +293,6 @@ importers: rollup-plugin-auto-external: specifier: ^2.0.0 version: 2.0.0(rollup@2.79.1) - rollup-plugin-node-builtins: - specifier: ^2.1.2 - version: 2.1.2 rollup-plugin-polyfill-node: specifier: ^0.10.2 version: 0.10.2(rollup@2.79.1) @@ -304,13 +301,13 @@ importers: version: 7.0.2(rollup@2.79.1) ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.22.15)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) tslib: specifier: ^2.5.0 - version: 2.5.0 + version: 2.5.2 typescript: specifier: ^4.9.5 version: 4.9.5 @@ -328,7 +325,7 @@ importers: version: 3.0.2 typescript: specifier: ^5.1.6 - version: 5.1.6 + version: 5.2.2 webpack: specifier: ^5.88.1 version: 5.88.1(webpack-cli@5.1.4) @@ -349,7 +346,7 @@ importers: version: 3.0.2 typescript: specifier: ^5.1.6 - version: 5.1.6 + version: 5.2.2 webpack: specifier: ^5.88.1 version: 5.88.1(webpack-cli@5.1.4) @@ -359,6 +356,10 @@ importers: packages: + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + /@adraffy/ens-normalize@1.9.0: resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} dev: false @@ -368,171 +369,132 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - dev: true - - /@babel/code-frame@7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - dev: true - - /@babel/code-frame@7.21.4: - resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - dev: true + '@jridgewell/trace-mapping': 0.3.19 - /@babel/code-frame@7.22.5: - resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.22.5 - dev: true + '@babel/highlight': 7.22.13 + chalk: 2.4.2 - /@babel/compat-data@7.22.5: - resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} + /@babel/compat-data@7.22.9: + resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} - dev: true - /@babel/core@7.22.5: - resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} + /@babel/core@7.22.15: + resolution: {integrity: sha512-PtZqMmgRrvj8ruoEOIwVA3yoF91O+Hgw9o7DAUTNBA6Mo2jpu31clx9a7Nz/9JznqetTR6zwfC4L3LAjKQXUwA==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-module-transforms': 7.22.5 - '@babel/helpers': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helpers': 7.22.15 + '@babel/parser': 7.22.15 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /@babel/eslint-parser@7.21.8(@babel/core@7.22.5)(eslint@8.42.0): + /@babel/eslint-parser@7.21.8(@babel/core@7.22.15)(eslint@8.48.0): resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': '>=7.11.0' eslint: ^7.5.0 || ^8.0.0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.42.0 + eslint: 8.48.0 eslint-visitor-keys: 2.1.0 - semver: 6.3.0 - dev: true - - /@babel/generator@7.21.5: - resolution: {integrity: sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - jsesc: 2.5.2 + semver: 6.3.1 dev: true - /@babel/generator@7.22.5: - resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} + /@babel/generator@7.22.15: + resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.15 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 - dev: true - - /@babel/helper-annotate-as-pure@7.18.6: - resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - dev: true /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.15 dev: true /@babel/helper-builder-binary-assignment-operator-visitor@7.22.3: resolution: {integrity: sha512-ahEoxgqNoYXm0k22TvOke48i1PkavGu0qGCmcq9ugi6gnmvKNaMjKBSrZTnWUi1CFEeNAUiVba0Wtzm03aSkJg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.15 dev: true - /@babel/helper-compilation-targets@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.7 + '@babel/compat-data': 7.22.9 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.21.10 lru-cache: 5.1.1 - semver: 6.3.0 - dev: true + semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.22.5): + /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.22.15): resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-member-expression-to-functions': 7.22.3 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/helper-replace-supers': 7.22.1 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/helper-split-export-declaration': 7.22.5 - semver: 6.3.0 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-create-regexp-features-plugin@7.22.1(@babel/core@7.22.5): + /@babel/helper-create-regexp-features-plugin@7.22.1(@babel/core@7.22.15): resolution: {integrity: sha512-WWjdnfR3LPIe+0EY8td7WmjhytxXtjKAEpnAxun/hkNiyOaPlvGK+NZaBFIdi9ndYV3Gav7BpFvtUwnaJlwi1w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 - semver: 6.3.0 + semver: 6.3.1 dev: true - /@babel/helper-define-polyfill-provider@0.4.0(@babel/core@7.22.5): + /@babel/helper-define-polyfill-provider@0.4.0(@babel/core@7.22.15): resolution: {integrity: sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.2 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true @@ -540,70 +502,51 @@ packages: /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-function-name@7.22.5: resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.5 - dev: true + '@babel/template': 7.22.15 + '@babel/types': 7.22.15 /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 - dev: true + '@babel/types': 7.22.15 /@babel/helper-member-expression-to-functions@7.22.3: resolution: {integrity: sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 - dev: true - - /@babel/helper-module-imports@7.21.4: - resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 dev: true - /@babel/helper-module-imports@7.22.5: - resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 - dev: true + '@babel/types': 7.22.15 - /@babel/helper-module-transforms@7.22.5: - resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} + /@babel/helper-module-transforms@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: + '@babel/core': 7.22.15 '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.15 /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 - dev: true - - /@babel/helper-plugin-utils@7.21.5: - resolution: {integrity: sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==} - engines: {node: '>=6.9.0'} + '@babel/types': 7.22.15 dev: true /@babel/helper-plugin-utils@7.22.5: @@ -611,17 +554,17 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.22.5): + /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.22.5 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color dev: true @@ -633,9 +576,9 @@ packages: '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-member-expression-to-functions': 7.22.3 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color dev: true @@ -644,1248 +587,1186 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 - dev: true + '@babel/types': 7.22.15 /@babel/helper-skip-transparent-expression-wrappers@7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.15 dev: true - /@babel/helper-split-export-declaration@7.22.5: - resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 - dev: true - - /@babel/helper-string-parser@7.21.5: - resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/types': 7.22.15 /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-identifier@7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-identifier@7.22.5: - resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} + /@babel/helper-validator-identifier@7.22.15: + resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-option@7.22.5: - resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} + /@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-wrap-function@7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-function-name': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color dev: true - /@babel/helpers@7.22.5: - resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} + /@babel/helpers@7.22.15: + resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color - dev: true - /@babel/highlight@7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + /@babel/highlight@7.22.13: + resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-validator-identifier': 7.22.15 chalk: 2.4.2 js-tokens: 4.0.0 - dev: true - - /@babel/highlight@7.22.5: - resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - /@babel/parser@7.22.5: - resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} + /@babel/parser@7.22.15: + resolution: {integrity: sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.22.5 - dev: true + '@babel/types': 7.22.15 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.22.5): + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.3(@babel/core@7.22.5): + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-6r4yRwEnorYByILoDRnEqxtojYKuiIv9FojW2E8GUKo9eWBwbKcd9IiZOZpdyXc64RmyGGyPu3/uAcrz/dq2kQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.22.15) dev: true - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.5): + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-decorators@7.22.3(@babel/core@7.22.5): + /@babel/plugin-proposal-decorators@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-XjTKH3sHr6pPqG+hR1NCdVupwiosfdKM2oSMyKQVQ5Bym9l/p7BuLAqT5U32zZzRCfPq/TPRPzMiiTE9bOXU4w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.22.1 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/plugin-syntax-decorators': 7.22.3(@babel/core@7.22.5) + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/plugin-syntax-decorators': 7.22.3(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.5): + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.22.5): + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) dev: true - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.5): + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.15): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.22.5): + /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.22.5): + /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.22.15): resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.5): + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.5): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.15): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.5): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.15): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.5): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.15): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-decorators@7.22.3(@babel/core@7.22.5): + /@babel/plugin-syntax-decorators@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-R16Zuge73+8/nLcDjkIpyhi5wIbN7i7fiuLJR8yQX7vPAa/ltUKtd3iLbb4AgP5nrLi91HnNUNosELIGUGH1bg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - dev: true - - /@babel/plugin-syntax-flow@7.21.4(@babel/core@7.22.5): - resolution: {integrity: sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.5): + /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.15): resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.22.5): + /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.22.15): resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes@7.22.3(@babel/core@7.22.5): + /@babel/plugin-syntax-import-attributes@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-i35jZJv6aO7hxEbIWQ41adVfOzjm9dcYDNeWlBMd8p0ZQRtNUCBrmGwZt+H5lb+oOC9a3svp956KP0oWGA1YsA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.5): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.15): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - dev: true - - /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.22.5): - resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.5): + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.15): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.5): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.15): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.5): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.15): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.5): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.15): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.5): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.15): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.22.5): + /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.22.15): resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.5): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions@7.21.5(@babel/core@7.22.5): + /@babel/plugin-transform-arrow-functions@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-async-generator-functions@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-async-generator-functions@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-36A4Aq48t66btydbZd5Fk0/xJqbpg/v4QWI4AH4cYHBXy9Mu42UOupZpebKFiCFNT9S9rJFcsld0gsv0ayLjtA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.22.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.22.5): + /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.22.15): resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.22.5): + /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.22.15): resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-properties@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-class-properties@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-mASLsd6rhOrLZ5F3WbCxkzl67mmOnqik0zrg5W6D/X0QMW7HtvnoL1dRARLKIbMP3vXwkwziuLesPqWVGIl6Bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-class-static-block@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-class-static-block@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-5BirgNWNOx7cwbTJCOmKFJ1pZjwk5MUfMIwiBBvsirCJMZeQgs5pk6i1OlkVg+1Vef5LfBahFOrdCnAWvkVKMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-classes@7.21.0(@babel/core@7.22.5): + /@babel/plugin-transform-classes@7.21.0(@babel/core@7.22.15): resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.22.1 - '@babel/helper-split-export-declaration': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-computed-properties@7.21.5(@babel/core@7.22.5): + /@babel/plugin-transform-computed-properties@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/template': 7.22.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.15 dev: true - /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.22.5): + /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.22.15): resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.22.5): + /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dynamic-import@7.22.1(@babel/core@7.22.5): + /@babel/plugin-transform-dynamic-import@7.22.1(@babel/core@7.22.15): resolution: {integrity: sha512-rlhWtONnVBPdmt+jeewS0qSnMz/3yLFrqAP8hHC6EDcrYRSyuz9f9yQhHvVn2Ad6+yO9fHXac5piudeYrInxwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-export-namespace-from@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-export-namespace-from@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-5Ti1cHLTDnt3vX61P9KZ5IG09bFXp4cDVFJIAeCZuxu9OXXJJZp5iP0n/rzM2+iAutJY+KWEyyHcRaHlpQ/P5g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.22.5): + /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.22.15): resolution: {integrity: sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-flow': 7.21.4(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-for-of@7.21.5(@babel/core@7.22.5): + /@babel/plugin-transform-for-of@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.22.5): + /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-function-name': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-json-strings@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-json-strings@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-IuvOMdeOOY2X4hRNAT6kwbePtK21BUyrAEgLKviL8pL6AEEVUVcqtRdN/HJXBLGIbt9T3ETmXRnFedRRmQNTYw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-literals@7.18.9(@babel/core@7.22.5): + /@babel/plugin-transform-literals@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-logical-assignment-operators@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-logical-assignment-operators@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-CbayIfOw4av2v/HYZEsH+Klks3NC2/MFIR3QR8gnpGNNPEaq2fdlVCRYG/paKs7/5hvBLQ+H70pGWOHtlNEWNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.22.5): + /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.22.15): resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.21.5(@babel/core@7.22.5): + /@babel/plugin-transform-modules-commonjs@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 - transitivePeerDependencies: - - supports-color dev: true - /@babel/plugin-transform-modules-systemjs@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-modules-systemjs@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-V21W3bKLxO3ZjcBJZ8biSvo5gQ85uIXW2vJfh7JSWf/4SLUSr1tOoHX3ruN4+Oqa2m+BKfsxTR1I+PsvkIWvNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-identifier': 7.22.5 - transitivePeerDependencies: - - supports-color + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 dev: true - /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-c6HrD/LpUdNNJsISQZpds3TXvfYIAbo+efE9aWmY/PmSRD0agrJ9cPMt4BmArwUQ7ZymEWTFjTyp+yReLJZh0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-new-target@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-new-target@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-5RuJdSo89wKdkRTqtM9RVVJzHum9c2s0te9rB7vZC1zKKxcioWIy+xcu4OoIAjyFZhb/bp5KkunuLin1q7Ct+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-nullish-coalescing-operator@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-CpaoNp16nX7ROtLONNuCyenYdY/l7ZsR6aoVa7rW7nMWisoNoQNIH5Iay/4LDyRjKMuElMqXiBoOQCDLTMGZiw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-numeric-separator@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-numeric-separator@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-+AF88fPDJrnseMh5vD9+SH6wq4ZMvpiTMHh58uLs+giMEyASFVhcT3NkoyO+NebFCNnpHJEq5AXO2txV4AGPDQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-object-rest-spread@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-object-rest-spread@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-38bzTsqMMCI46/TQnJwPPpy33EjLCc1Gsm2hRTF6zTMWnKsN61vdrpuzIEGQyKEhDSYDKyZHrrd5FMj4gcUHhw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.5) + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.22.1 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-optional-catch-binding@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-optional-catch-binding@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-bnDFWXFzWY0BsOyqaoSXvMQ2F35zutQipugog/rqotL2S4ciFOKlRYUu9djt4iq09oh2/34hqfRR2k1dIvuu4g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-optional-chaining@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-optional-chaining@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-63v3/UFFxhPKT8j8u1jTTGVyITxl7/7AfOqK8C5gz1rHURPUGe3y5mvIf68eYKGoBNahtJnTxBKug4BQOnzeJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-parameters@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-parameters@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-x7QHQJHPuD9VmfpzboyGJ5aHEr9r7DsAsdxdhJiTB3J3j8dyl+NFZ+rX5Q2RWFDCs61c06qBfS4ys2QYn8UkMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-methods@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-private-methods@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-fC7jtjBPFqhqpPAE+O4LKwnLq7gGkD3ZmC2E3i4qWH34mH3gOg2Xrq5YMHUq6DM30xhqM1DNftiRaSqVjEG+ug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-private-property-in-object@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-private-property-in-object@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-C7MMl4qWLpgVCbXfj3UW8rR1xeCnisQ0cU7YJHV//8oNBS0aCIVg1vFnZXxOckHhEpQyqNNkWmvSEWnMLlc+Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-development@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-react-jsx-development@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.22.5) - dev: true - - /@babel/plugin-transform-react-jsx@7.22.3(@babel/core@7.22.5): - resolution: {integrity: sha512-JEulRWG2f04a7L8VWaOngWiK6p+JOSpB+DAtwfJgOaej1qdbNxqtK7MwTBHjUA10NeFcszlFNqCdbRcirzh2uQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.5) - '@babel/types': 7.22.5 + '@babel/core': 7.22.15 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} + /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.5 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.5) - '@babel/types': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) + '@babel/types': 7.22.15 dev: true - /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-regenerator@7.21.5(@babel/core@7.22.5): + /@babel/plugin-transform-regenerator@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.1 dev: true - /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-runtime@7.22.4(@babel/core@7.22.5): + /@babel/plugin-transform-runtime@7.22.4(@babel/core@7.22.15): resolution: {integrity: sha512-Urkiz1m4zqiRo17klj+l3nXgiRTFQng91Bc1eiLF7BMQu1e7wE5Gcq9xSv062IF068NHjcutSbIMev60gXxAvA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.5) - babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.5) - babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.5) - semver: 6.3.0 + '@babel/core': 7.22.15 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.15) + babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.15) + babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.15) + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-spread@7.20.7(@babel/core@7.22.5): + /@babel/plugin-transform-spread@7.20.7(@babel/core@7.22.15): resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 dev: true - /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.22.5): + /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.22.5): + /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typescript@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-typescript@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-pyjnCIniO5PNaEuGxT28h0HbMru3qCVrMqVgVOz/krComdIrY9W6FCLBq9NWHY8HDGaUlan+UhmZElDENIfCcw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-unicode-escapes@7.21.5(@babel/core@7.22.5): + /@babel/plugin-transform-unicode-escapes@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-property-regex@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-unicode-property-regex@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-5ScJ+OmdX+O6HRuMGW4kv7RL9vIKdtdAj9wuWUKy1wbHY3jaM/UlyIiC1G7J6UJiiyMukjjK0QwL3P0vBd0yYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-sets-regex@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-unicode-sets-regex@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-hNufLdkF8vqywRp+P55j4FHXqAX2LRUccoZHH7AFn1pq5ZOO2ISKW9w13bFZVjBoTqeve2HOgoJCcaziJVhGNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/preset-env@7.22.4(@babel/core@7.22.5): + /@babel/preset-env@7.22.4(@babel/core@7.22.15): resolution: {integrity: sha512-c3lHOjbwBv0TkhYCr+XCR6wKcSZ1QbQTVdSkZUaVpLv8CVWotBMArWUi5UAJrcrQaEnleVkkvaV8F/pmc/STZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.22.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.22.5) - '@babel/plugin-syntax-import-attributes': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-arrow-functions': 7.21.5(@babel/core@7.22.5) - '@babel/plugin-transform-async-generator-functions': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.22.5) - '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.22.5) - '@babel/plugin-transform-class-properties': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-class-static-block': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.22.5) - '@babel/plugin-transform-computed-properties': 7.21.5(@babel/core@7.22.5) - '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.22.5) - '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.22.5) - '@babel/plugin-transform-dynamic-import': 7.22.1(@babel/core@7.22.5) - '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-export-namespace-from': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-for-of': 7.21.5(@babel/core@7.22.5) - '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.22.5) - '@babel/plugin-transform-json-strings': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.22.5) - '@babel/plugin-transform-logical-assignment-operators': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-modules-amd': 7.20.11(@babel/core@7.22.5) - '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.22.5) - '@babel/plugin-transform-modules-systemjs': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-new-target': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-numeric-separator': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-object-rest-spread': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-optional-catch-binding': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-private-methods': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-private-property-in-object': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-regenerator': 7.21.5(@babel/core@7.22.5) - '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.22.5) - '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.22.5) - '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.22.5) - '@babel/plugin-transform-unicode-escapes': 7.21.5(@babel/core@7.22.5) - '@babel/plugin-transform-unicode-property-regex': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-unicode-sets-regex': 7.22.3(@babel/core@7.22.5) - '@babel/preset-modules': 0.1.5(@babel/core@7.22.5) - '@babel/types': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.5) - babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.5) - babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.5) + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.15) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.15) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.22.15) + '@babel/plugin-syntax-import-attributes': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.15) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.15) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-arrow-functions': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-async-generator-functions': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.22.15) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-transform-class-properties': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-class-static-block': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-transform-computed-properties': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.22.15) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-transform-dynamic-import': 7.22.1(@babel/core@7.22.15) + '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-export-namespace-from': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-for-of': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-transform-json-strings': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-transform-logical-assignment-operators': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-modules-amd': 7.20.11(@babel/core@7.22.15) + '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-modules-systemjs': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-new-target': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-numeric-separator': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-object-rest-spread': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-optional-catch-binding': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-private-methods': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-private-property-in-object': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-regenerator': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.22.15) + '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-escapes': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-property-regex': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-sets-regex': 7.22.3(@babel/core@7.22.15) + '@babel/preset-modules': 0.1.5(@babel/core@7.22.15) + '@babel/types': 7.22.15 + babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.15) + babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.15) + babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.15) core-js-compat: 3.30.2 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules@0.1.5(@babel/core@7.22.5): + /@babel/preset-modules@0.1.5(@babel/core@7.22.15): resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.5) - '@babel/types': 7.22.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.15) + '@babel/types': 7.22.15 esutils: 2.0.3 dev: true - /@babel/preset-react@7.22.3(@babel/core@7.22.5): + /@babel/preset-react@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-lxDz1mnZ9polqClBCVBjIVUypoB4qV3/tZUDb/IlYbW1kiiLaXaX+bInbRjl+lNQ/iUZraQ3+S8daEmoELMWug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-react-pure-annotations': 7.18.6(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-react-pure-annotations': 7.18.6(@babel/core@7.22.15) dev: true - /@babel/preset-typescript@7.21.5(@babel/core@7.22.5): + /@babel/preset-typescript@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-iqe3sETat5EOrORXiQ6rWfoOg2y68Cs75B9wNxdPW4kixJxh7aXQE1KPdWLDniC24T/6dSnguF33W9j/ZZQcmA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.5) - '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.22.5) - '@babel/plugin-transform-typescript': 7.22.3(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-typescript': 7.22.3(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true @@ -1894,90 +1775,44 @@ packages: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true - /@babel/runtime@7.21.5: - resolution: {integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - dev: false - /@babel/runtime@7.22.3: resolution: {integrity: sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - /@babel/template@7.22.5: - resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 - dev: true - - /@babel/traverse@7.21.5: - resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==} + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 - /@babel/traverse@7.22.5: - resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} + /@babel/traverse@7.22.15: + resolution: {integrity: sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true - - /@babel/types@7.21.5: - resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 - to-fast-properties: 2.0.0 - dev: true - - /@babel/types@7.22.4: - resolution: {integrity: sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.21.5 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - dev: true - /@babel/types@7.22.5: - resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} + /@babel/types@7.22.15: + resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 to-fast-properties: 2.0.0 - dev: true /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -2411,7 +2246,7 @@ packages: resolution: {integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==} dependencies: '@noble/hashes': 1.3.0 - protobufjs: 6.11.3 + protobufjs: 6.11.4 dev: false /@cosmjs/amino@0.28.13: @@ -2606,7 +2441,7 @@ packages: '@cosmjs/utils': 0.29.5 cosmjs-types: 0.5.2 long: 4.0.0 - protobufjs: 6.11.3 + protobufjs: 6.11.4 xstream: 11.14.0 transitivePeerDependencies: - bufferutil @@ -2627,7 +2462,7 @@ packages: '@cosmjs/utils': 0.30.1 cosmjs-types: 0.7.2 long: 4.0.0 - protobufjs: 6.11.3 + protobufjs: 6.11.4 xstream: 11.14.0 transitivePeerDependencies: - bufferutil @@ -2713,37 +2548,26 @@ packages: resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} dev: false - /@eslint-community/eslint-utils@4.4.0(eslint@8.40.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.40.0 - eslint-visitor-keys: 3.4.1 - dev: false - - /@eslint-community/eslint-utils@4.4.0(eslint@8.42.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.42.0 - eslint-visitor-keys: 3.4.1 - dev: true + eslint: 8.48.0 + eslint-visitor-keys: 3.4.3 - /@eslint-community/regexpp@4.5.1: - resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + /@eslint-community/regexpp@4.8.0: + resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - /@eslint/eslintrc@2.0.3: - resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 - espree: 9.5.2 + debug: 4.3.4(supports-color@8.1.1) + espree: 9.6.1 globals: 13.20.0 ignore: 5.2.4 import-fresh: 3.3.0 @@ -2753,15 +2577,9 @@ packages: transitivePeerDependencies: - supports-color - /@eslint/js@8.40.0: - resolution: {integrity: sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: false - - /@eslint/js@8.42.0: - resolution: {integrity: sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==} + /@eslint/js@8.48.0: + resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true /@ethereumjs/rlp@4.0.1: resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} @@ -3153,18 +2971,6 @@ packages: minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: true - - /@humanwhocodes/config-array@0.11.8: - resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: false /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} @@ -3308,7 +3114,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 '@types/node': 18.16.18 chalk: 4.1.2 collect-v8-coverage: 1.0.1 @@ -3342,7 +3148,7 @@ packages: resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 callsites: 3.1.0 graceful-fs: 4.2.11 dev: true @@ -3371,9 +3177,9 @@ packages: resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@jest/types': 29.5.0 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -3402,74 +3208,37 @@ packages: chalk: 4.1.2 dev: true - /@jridgewell/gen-mapping@0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 - dev: true - /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 - dev: true - - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - dev: true + '@jridgewell/trace-mapping': 0.3.19 /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/source-map@0.3.2: - resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} - dependencies: - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 - dev: true /@jridgewell/source-map@0.3.5: resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - dev: true - - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + '@jridgewell/trace-mapping': 0.3.19 dev: true /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true - - /@jridgewell/trace-mapping@0.3.17: - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - /@jridgewell/trace-mapping@0.3.18: - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + /@jridgewell/trace-mapping@0.3.19: + resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -3573,7 +3342,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@types/debug': 4.1.7 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) semver: 7.5.2 superstruct: 1.0.3 transitivePeerDependencies: @@ -3827,8 +3596,7 @@ packages: open: 8.4.2 picocolors: 1.0.0 tiny-glob: 0.2.9 - tslib: 2.5.0 - dev: false + tslib: 2.5.2 /@protobufjs/aspromise@1.1.2: resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -3873,7 +3641,7 @@ packages: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} dev: false - /@rainbow-me/rainbowkit@1.0.5(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0): + /@rainbow-me/rainbowkit@1.0.5(@types/react@18.2.12)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0): resolution: {integrity: sha512-vVXYpX9euFrellK0yiLXBC+tp0NFc0IAR/XzXlFNl3x6eaC+0/S99PGEwRQb66SQ9ioVoHdyvxz1BpeeWlc91w==} engines: {node: '>=12.4'} peerDependencies: @@ -3889,7 +3657,7 @@ packages: qrcode: 1.5.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.4(@types/react@18.2.6)(react@18.2.0) + react-remove-scroll: 2.5.4(@types/react@18.2.12)(react@18.2.0) viem: 1.0.6(typescript@4.9.5) wagmi: 1.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(viem@1.0.6) transitivePeerDependencies: @@ -3909,7 +3677,7 @@ packages: slash: 4.0.0 dev: true - /@rollup/plugin-babel@5.3.1(@babel/core@7.22.5)(rollup@2.79.1): + /@rollup/plugin-babel@5.3.1(@babel/core@7.22.15)(rollup@2.79.1): resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -3920,8 +3688,8 @@ packages: '@types/babel__core': optional: true dependencies: - '@babel/core': 7.22.5 - '@babel/helper-module-imports': 7.21.4 + '@babel/core': 7.22.15 + '@babel/helper-module-imports': 7.22.15 '@rollup/pluginutils': 3.1.0(rollup@2.79.1) rollup: 2.79.1 dev: true @@ -4036,13 +3804,8 @@ packages: rollup: 2.79.1 dev: true - /@rushstack/eslint-patch@1.2.0: - resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} - dev: false - /@rushstack/eslint-patch@1.3.0: resolution: {integrity: sha512-IthPJsJR85GhOkp3Hvp8zFOPK5ynKn6STyHa/WZpioK7E1aYDiBzpqQPrngc14DszIUkIrdd3k9Iu0XSzlP/1w==} - dev: true /@safe-global/safe-apps-provider@0.15.2: resolution: {integrity: sha512-BaoGAuY7h6jLBL7P+M6b7hd+1QfTv8uMyNF3udhiNUwA0XwfzH2ePQB13IEV3Mn7wdcIMEEUDS5kHbtAsj60qQ==} @@ -4131,6 +3894,7 @@ packages: /@sinonjs/fake-timers@10.2.0: resolution: {integrity: sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==} + deprecated: Use version 10.1.0. Version 10.2.0 has potential breaking issues dependencies: '@sinonjs/commons': 3.0.0 dev: true @@ -4286,7 +4050,7 @@ packages: /@swc/helpers@0.4.14: resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} dependencies: - tslib: 2.5.0 + tslib: 2.5.2 dev: false /@tanstack/query-core@4.29.7: @@ -4351,8 +4115,8 @@ packages: /@types/babel__core@7.20.0: resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} dependencies: - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.5 @@ -4361,20 +4125,20 @@ packages: /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.15 dev: true /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 dev: true /@types/babel__traverse@7.18.5: resolution: {integrity: sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.15 dev: true /@types/bn.js@4.11.6: @@ -4522,10 +4286,6 @@ packages: /@types/node@18.16.18: resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} - /@types/node@18.16.7: - resolution: {integrity: sha512-MFg7ua/bRtnA1hYE3pVyWxGd/r7aMqjNOdHvlSsXV3n8iaeGKkOaPzpJh6/ovf4bEXWcojkeMJpTsq3mzXW4IQ==} - dev: false - /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -4547,17 +4307,10 @@ packages: /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - /@types/react-dom@18.2.4: - resolution: {integrity: sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==} - dependencies: - '@types/react': 18.2.7 - dev: false - /@types/react-dom@18.2.5: resolution: {integrity: sha512-sRQsOS/sCLnpQhR4DSKGTtWFE3FZjpQa86KPVbhUqdYMRZ9FEFcfAytKhR/vUG2rH1oFbOOej6cuD7MFSobDRQ==} dependencies: '@types/react': 18.2.12 - dev: true /@types/react@18.2.12: resolution: {integrity: sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==} @@ -4565,23 +4318,6 @@ packages: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 csstype: 3.1.2 - dev: true - - /@types/react@18.2.6: - resolution: {integrity: sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==} - dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.3 - csstype: 3.1.2 - dev: false - - /@types/react@18.2.7: - resolution: {integrity: sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw==} - dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.3 - csstype: 3.1.2 - dev: false /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} @@ -4636,7 +4372,7 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4647,37 +4383,37 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@eslint-community/regexpp': 4.8.0 + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.42.0 + eslint: 8.48.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 - semver: 7.5.1 + semver: 7.5.2 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.59.7(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.7(eslint@8.42.0)(typescript@4.9.5) - eslint: 8.42.0 + '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) + eslint: 8.48.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser@5.59.11(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/parser@5.59.11(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4691,31 +4427,10 @@ packages: '@typescript-eslint/types': 5.59.11 '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.42.0 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@5.59.5(eslint@8.40.0)(typescript@4.9.5): - resolution: {integrity: sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.59.5 - '@typescript-eslint/types': 5.59.5 - '@typescript-eslint/typescript-estree': 5.59.5(typescript@4.9.5) - debug: 4.3.4 - eslint: 8.40.0 + eslint: 8.48.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: false /@typescript-eslint/scope-manager@5.59.11: resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} @@ -4723,15 +4438,6 @@ packages: dependencies: '@typescript-eslint/types': 5.59.11 '@typescript-eslint/visitor-keys': 5.59.11 - dev: true - - /@typescript-eslint/scope-manager@5.59.5: - resolution: {integrity: sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.59.5 - '@typescript-eslint/visitor-keys': 5.59.5 - dev: false /@typescript-eslint/scope-manager@5.59.7: resolution: {integrity: sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==} @@ -4741,7 +4447,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.7 dev: true - /@typescript-eslint/type-utils@5.59.11(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4752,9 +4458,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.42.0 + eslint: 8.48.0 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: @@ -4764,12 +4470,6 @@ packages: /@typescript-eslint/types@5.59.11: resolution: {integrity: sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@typescript-eslint/types@5.59.5: - resolution: {integrity: sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: false /@typescript-eslint/types@5.59.7: resolution: {integrity: sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==} @@ -4790,33 +4490,11 @@ packages: debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.1 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@5.59.5(typescript@4.9.5): - resolution: {integrity: sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.59.5 - '@typescript-eslint/visitor-keys': 5.59.5 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.0 + semver: 7.5.2 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: false /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} @@ -4839,39 +4517,39 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.59.11(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) - eslint: 8.42.0 + eslint: 8.48.0 eslint-scope: 5.1.1 - semver: 7.5.1 + semver: 7.5.2 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@5.59.7(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.7 '@typescript-eslint/types': 5.59.7 '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) - eslint: 8.42.0 + eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.2 transitivePeerDependencies: @@ -4884,23 +4562,14 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.59.11 - eslint-visitor-keys: 3.4.1 - dev: true - - /@typescript-eslint/visitor-keys@5.59.5: - resolution: {integrity: sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.59.5 - eslint-visitor-keys: 3.4.1 - dev: false + eslint-visitor-keys: 3.4.3 /@typescript-eslint/visitor-keys@5.59.7: resolution: {integrity: sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.59.7 - eslint-visitor-keys: 3.4.1 + eslint-visitor-keys: 3.4.3 dev: true /@vanilla-extract/css@1.9.1: @@ -5106,17 +4775,6 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/jsonrpc-http-connection@1.0.6: - resolution: {integrity: sha512-/3zSqDi7JDN06E4qm0NmVYMitngXfh21UWwy8zeJcBeJc+Jcs094EbLsIxtziIIKTCCbT88lWuTjl1ZujxN7cw==} - dependencies: - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/safe-json': 1.0.2 - cross-fetch: 3.1.6 - tslib: 1.14.1 - transitivePeerDependencies: - - encoding - dev: false - /@walletconnect/jsonrpc-http-connection@1.0.7: resolution: {integrity: sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==} dependencies: @@ -5207,7 +4865,7 @@ packages: /@walletconnect/legacy-provider@2.0.0: resolution: {integrity: sha512-A8xPebMI1A+50HbWwTpFCbwP7G+1NGKdTKyg8BUUg3h3Y9JucpC1W6w/x0v1Xw7qFEqQnz74LoIN/A3ytH9xrQ==} dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.6 + '@walletconnect/jsonrpc-http-connection': 1.0.7 '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/legacy-client': 2.0.0 '@walletconnect/legacy-modal': 2.0.0 @@ -5571,34 +5229,28 @@ packages: typescript: 4.9.5 dev: false - /abstract-leveldown@0.12.4: - resolution: {integrity: sha512-TOod9d5RDExo6STLMGa+04HGkl+TlMfbDnTyN93/ETJ9DpQ0DaYLqcMZlbXvdc4W3vVo1Qrl+WhSp8zvDsJ+jA==} - dependencies: - xtend: 3.0.0 - dev: true - - /acorn-import-assertions@1.9.0(acorn@8.8.2): + /acorn-import-assertions@1.9.0(acorn@8.10.0): resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.8.2 + acorn: 8.10.0 dev: true - /acorn-jsx@5.3.2(acorn@8.8.2): + /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.8.2 + acorn: 8.10.0 /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} dev: true - /acorn@8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true @@ -5614,7 +5266,7 @@ packages: resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==} engines: {node: '>= 8.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) depd: 2.0.0 humanize-ms: 1.2.1 transitivePeerDependencies: @@ -5820,15 +5472,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /asn1.js@5.4.1: - resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} - dependencies: - bn.js: 4.12.0 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - safer-buffer: 2.1.2 - dev: true - /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -5860,15 +5503,9 @@ packages: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} - /axe-core@4.7.1: - resolution: {integrity: sha512-sCXXUhA+cljomZ3ZAwb8i1p3oOlkABzPy08ZDAoGcYuvtBPlQ1Ytde129ArXyHWDhfeewq7rlx9F+cUx2SSlkg==} - engines: {node: '>=4'} - dev: false - /axe-core@4.7.2: resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} engines: {node: '>=4'} - dev: true /axios@0.21.4: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} @@ -5893,17 +5530,17 @@ packages: dependencies: deep-equal: 2.2.1 - /babel-jest@29.5.0(@babel/core@7.22.5): + /babel-jest@29.5.0(@babel/core@7.22.15): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@jest/transform': 29.5.0 '@types/babel__core': 7.20.0 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0(@babel/core@7.22.5) + babel-preset-jest: 29.5.0(@babel/core@7.22.15) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -5915,7 +5552,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -5928,8 +5565,8 @@ packages: resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.5 + '@babel/template': 7.22.15 + '@babel/types': 7.22.15 '@types/babel__core': 7.20.0 '@types/babel__traverse': 7.18.5 dev: true @@ -5943,38 +5580,38 @@ packages: resolve: 1.22.2 dev: true - /babel-plugin-polyfill-corejs2@0.4.3(@babel/core@7.22.5): + /babel-plugin-polyfill-corejs2@0.4.3(@babel/core@7.22.15): resolution: {integrity: sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.22.5 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.5) - semver: 6.3.0 + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.15 + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.15) + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.8.1(@babel/core@7.22.5): + /babel-plugin-polyfill-corejs3@0.8.1(@babel/core@7.22.15): resolution: {integrity: sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.15) core-js-compat: 3.30.2 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.5.0(@babel/core@7.22.5): + /babel-plugin-polyfill-regenerator@0.5.0(@babel/core@7.22.15): resolution: {integrity: sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true @@ -5983,54 +5620,54 @@ packages: resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.5): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.15): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5) - dev: true - - /babel-preset-jest@29.5.0(@babel/core@7.22.5): + '@babel/core': 7.22.15 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.15) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.15) + dev: true + + /babel-preset-jest@29.5.0(@babel/core@7.22.15): resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.15) dev: true /babel-preset-react-app@10.0.1: resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} dependencies: - '@babel/core': 7.22.5 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-proposal-decorators': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.5) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.22.5) - '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.22.5) - '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-runtime': 7.22.4(@babel/core@7.22.5) - '@babel/preset-env': 7.22.4(@babel/core@7.22.5) - '@babel/preset-react': 7.22.3(@babel/core@7.22.5) - '@babel/preset-typescript': 7.21.5(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-decorators': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-runtime': 7.22.4(@babel/core@7.22.15) + '@babel/preset-env': 7.22.4(@babel/core@7.22.15) + '@babel/preset-react': 7.22.3(@babel/core@7.22.15) + '@babel/preset-typescript': 7.21.5(@babel/core@7.22.15) '@babel/runtime': 7.22.3 babel-plugin-macros: 3.1.0 babel-plugin-transform-react-remove-prop-types: 0.4.24 @@ -6094,21 +5731,17 @@ packages: file-uri-to-path: 1.0.0 dev: false - /bl@0.8.2: - resolution: {integrity: sha512-pfqikmByp+lifZCS0p6j6KreV6kNU6Apzpm2nKOk+94cZb/jvle55+JxWiByUQ0Wo/+XnDXEy5MxxKMb6r0VIw==} - dependencies: - readable-stream: 1.0.34 - dev: true - /blakejs@1.2.1: resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} dev: false /bn.js@4.12.0: resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + dev: false /bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + dev: false /borsh@0.7.0: resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} @@ -6144,6 +5777,7 @@ packages: /brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: false /browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} @@ -6158,74 +5792,17 @@ packages: evp_bytestokey: 1.0.3 inherits: 2.0.4 safe-buffer: 5.2.1 + dev: false - /browserify-cipher@1.0.1: - resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} - dependencies: - browserify-aes: 1.2.0 - browserify-des: 1.0.2 - evp_bytestokey: 1.0.3 - dev: true - - /browserify-des@1.0.2: - resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} - dependencies: - cipher-base: 1.0.4 - des.js: 1.0.1 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /browserify-fs@1.0.0: - resolution: {integrity: sha512-8LqHRPuAEKvyTX34R6tsw4bO2ro6j9DmlYBhiYWHRM26Zv2cBw1fJOU0NeUQ0RkXkPn/PFBjhA0dm4AgaBurTg==} - dependencies: - level-filesystem: 1.2.0 - level-js: 2.2.4 - levelup: 0.18.6 - dev: true - - /browserify-rsa@4.1.0: - resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} - dependencies: - bn.js: 5.2.1 - randombytes: 2.1.0 - dev: true - - /browserify-sign@4.2.1: - resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==} - dependencies: - bn.js: 5.2.1 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - create-hmac: 1.1.7 - elliptic: 6.5.4 - inherits: 2.0.4 - parse-asn1: 5.1.6 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - dev: true - - /browserslist@4.21.7: - resolution: {integrity: sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001489 - electron-to-chromium: 1.4.411 - node-releases: 2.0.12 - update-browserslist-db: 1.0.11(browserslist@4.21.7) - dev: true - - /browserslist@4.21.9: - resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} + /browserslist@4.21.10: + resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001517 - electron-to-chromium: 1.4.473 + caniuse-lite: 1.0.30001527 + electron-to-chromium: 1.4.508 node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.9) - dev: true + update-browserslist-db: 1.0.11(browserslist@4.21.10) /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -6254,16 +5831,13 @@ packages: node-int64: 0.4.0 dev: true - /buffer-es6@4.9.3: - resolution: {integrity: sha512-Ibt+oXxhmeYJSsCkODPqNpPmyegefiD8rfutH1NYGhMZQhSp95Rz7haemgnJ6dxa6LT+JLLbtgOMORRluwKktw==} - dev: true - /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true /buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: false /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -6288,7 +5862,7 @@ packages: /builtins@2.0.1: resolution: {integrity: sha512-XkkVe5QAb6guWPXTzpSrYpSlN3nqEmrrE2TkAr/tp7idSF6+MONh9WvKrAuR3HiKLvoSgmbs8l1U9IPmMrIoLw==} dependencies: - semver: 6.3.0 + semver: 6.3.1 dev: true /call-bind@1.0.2: @@ -6319,17 +5893,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001486: - resolution: {integrity: sha512-uv7/gXuHi10Whlj0pp5q/tsK/32J2QSqVRKQhs2j8VsDCjgyruAh/eEXHF822VqO9yT6iZKw3nRwZRSPBE9OQg==} - dev: false - - /caniuse-lite@1.0.30001489: - resolution: {integrity: sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==} - dev: true - - /caniuse-lite@1.0.30001517: - resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==} - dev: true + /caniuse-lite@1.0.30001527: + resolution: {integrity: sha512-YkJi7RwPgWtXVSgK4lG9AHH57nSzvvOp9MesgXmw4Q7n0C3H04L0foHqfxcmSAm5AcWb8dW9AYj2tR7/5GnddQ==} /case@1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} @@ -6394,7 +5959,7 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /chrome-trace-event@1.0.3: @@ -6412,6 +5977,7 @@ packages: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 + dev: false /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} @@ -6492,10 +6058,6 @@ packages: shallow-clone: 3.0.1 dev: true - /clone@0.1.19: - resolution: {integrity: sha512-IO78I0y6JcSpEPHzK4obKdsL7E7oLdRVDVOLwr2Hkbjsb+Eoz0dxW6tef0WizoKu0gLC4oZSZuEF4U2K6w1WQw==} - dev: true - /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} @@ -6570,16 +6132,6 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - dev: true - /confusing-browser-globals@1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: true @@ -6621,7 +6173,6 @@ packages: /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -6651,11 +6202,7 @@ packages: /core-js-compat@3.30.2: resolution: {integrity: sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA==} dependencies: - browserslist: 4.21.7 - dev: true - - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + browserslist: 4.21.10 dev: true /cors@2.8.5: @@ -6713,7 +6260,7 @@ packages: resolution: {integrity: sha512-zxCtIJj8v3Di7s39uN4LNcN3HIE1z0B9Z0SPE8ZNQR0oSzsuSe1ACgxoFkvhkS7WBasCAFcglS11G2hyfd5tPg==} dependencies: long: 4.0.0 - protobufjs: 6.11.3 + protobufjs: 6.11.4 dev: false /cosmjs-types@0.7.2: @@ -6723,13 +6270,6 @@ packages: protobufjs: 6.11.4 dev: false - /create-ecdh@4.0.4: - resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} - dependencies: - bn.js: 4.12.0 - elliptic: 6.5.4 - dev: true - /create-hash@1.2.0: resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} dependencies: @@ -6738,6 +6278,7 @@ packages: md5.js: 1.3.5 ripemd160: 2.0.2 sha.js: 2.4.11 + dev: false /create-hmac@1.1.7: resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} @@ -6748,6 +6289,7 @@ packages: ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 + dev: false /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -6797,22 +6339,6 @@ packages: sha3: 2.1.4 dev: false - /crypto-browserify@3.12.0: - resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} - dependencies: - browserify-cipher: 1.0.1 - browserify-sign: 4.2.1 - create-ecdh: 4.0.4 - create-hash: 1.2.0 - create-hmac: 1.1.7 - diffie-hellman: 5.0.3 - inherits: 2.0.4 - pbkdf2: 3.1.2 - public-encrypt: 4.0.3 - randombytes: 2.1.0 - randomfill: 1.0.4 - dev: true - /css-what@5.1.0: resolution: {integrity: sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==} engines: {node: '>= 6'} @@ -6897,7 +6423,6 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 - dev: true /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -6971,16 +6496,9 @@ packages: clone: 1.0.4 dev: true - /deferred-leveldown@0.2.0: - resolution: {integrity: sha512-+WCbb4+ez/SZ77Sdy1iadagFiVzMB89IKOBhglgnUkVxOxRWmmFsz8UDSNWh4Rhq+3wr/vMFlYj+rdEwWUDdng==} - dependencies: - abstract-leveldown: 0.12.4 - dev: true - /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} - dev: false /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} @@ -7017,13 +6535,6 @@ packages: engines: {node: '>= 0.8'} dev: false - /des.js@1.0.1: - resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==} - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - dev: true - /detect-browser@5.3.0: resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} dev: false @@ -7057,14 +6568,6 @@ packages: engines: {node: '>=0.3.1'} dev: true - /diffie-hellman@5.0.3: - resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} - dependencies: - bn.js: 4.12.0 - miller-rabin: 4.0.1 - randombytes: 2.1.0 - dev: true - /dijkstrajs@1.0.3: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} dev: false @@ -7126,13 +6629,8 @@ packages: - utf-8-validate dev: false - /electron-to-chromium@1.4.411: - resolution: {integrity: sha512-5VXLW4Qw89vM2WTICHua/y8v7fKGDRVa2VPOtBB9IpLvW316B+xd8yD1wTmLPY2ot/00P/qt87xdolj4aG/Lzg==} - dev: true - - /electron-to-chromium@1.4.473: - resolution: {integrity: sha512-aVfC8+440vGfl06l8HKKn8/PD5jRfSnLkTTD65EFvU46igbpQRri1gxSzW9/+TeUlwYzrXk1sw867T96zlyECA==} - dev: true + /electron-to-chromium@1.4.508: + resolution: {integrity: sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==} /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -7144,6 +6642,7 @@ packages: inherits: 2.0.4 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 + dev: false /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -7166,21 +6665,12 @@ packages: once: 1.4.0 dev: false - /enhanced-resolve@5.12.0: - resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - dev: false - /enhanced-resolve@5.15.0: resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 - dev: true /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} @@ -7195,13 +6685,6 @@ packages: hasBin: true dev: true - /errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true - dependencies: - prr: 1.0.1 - dev: true - /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -7298,7 +6781,6 @@ packages: /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - dev: true /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} @@ -7313,7 +6795,7 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-config-next@13.1.6(eslint@8.40.0)(typescript@4.9.5): + /eslint-config-next@13.1.6(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-0cg7h5wztg/SoLAlxljZ0ZPUQ7i6QKqRiP4M2+MgTZtxWwNKb2JSwNc18nJ6/kXBI6xYvPraTbQSIhAuVw6czw==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -7323,22 +6805,22 @@ packages: optional: true dependencies: '@next/eslint-plugin-next': 13.1.6 - '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/parser': 5.59.5(eslint@8.40.0)(typescript@4.9.5) - eslint: 8.40.0 + '@rushstack/eslint-patch': 1.3.0 + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.40.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.5)(eslint-import-resolver-typescript@3.5.3)(eslint@8.40.0) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.40.0) - eslint-plugin-react: 7.32.2(eslint@8.40.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.40.0) + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) + eslint-plugin-react: 7.32.2(eslint@8.48.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) typescript: 4.9.5 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color dev: false - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@4.9.5): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7348,21 +6830,21 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.22.5 - '@babel/eslint-parser': 7.21.8(@babel/core@7.22.5)(eslint@8.42.0) + '@babel/core': 7.22.15 + '@babel/eslint-parser': 7.21.8(@babel/core@7.22.15)(eslint@8.48.0) '@rushstack/eslint-patch': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 - eslint: 8.42.0 - eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.42.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@4.9.5) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.42.0) - eslint-plugin-react: 7.32.2(eslint@8.42.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.42.0) - eslint-plugin-testing-library: 5.11.0(eslint@8.42.0)(typescript@4.9.5) + eslint: 8.48.0 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) + eslint-plugin-react: 7.32.2(eslint@8.48.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) + eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' @@ -7382,56 +6864,26 @@ packages: transitivePeerDependencies: - supports-color - /eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.27.5)(eslint@8.40.0): + /eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0): resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4 - enhanced-resolve: 5.12.0 - eslint: 8.40.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.5)(eslint-import-resolver-typescript@3.5.3)(eslint@8.40.0) + debug: 4.3.4(supports-color@8.1.1) + enhanced-resolve: 5.15.0 + eslint: 8.48.0 + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) get-tsconfig: 4.5.0 globby: 13.1.3 - is-core-module: 2.12.0 + is-core-module: 2.12.1 is-glob: 4.0.3 synckit: 0.8.5 transitivePeerDependencies: - supports-color - dev: false - - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.42.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) - debug: 3.2.7 - eslint: 8.42.0 - eslint-import-resolver-node: 0.3.7 - transitivePeerDependencies: - - supports-color - dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.5)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.40.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -7452,16 +6904,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.5(eslint@8.40.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 3.2.7 - eslint: 8.40.0 + eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.40.0) + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) transitivePeerDependencies: - supports-color - dev: false - /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0): + /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0): resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -7469,14 +6920,14 @@ packages: '@babel/plugin-transform-react-jsx': ^7.14.9 eslint: ^8.1.0 dependencies: - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) - eslint: 8.42.0 + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) + eslint: 8.48.0 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.42.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -7486,63 +6937,29 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.42.0 + eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.42.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 minimatch: 3.1.2 object.values: 1.1.6 resolve: 1.22.2 - semver: 6.3.0 + semver: 6.3.1 tsconfig-paths: 3.14.2 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.5)(eslint-import-resolver-typescript@3.5.3)(eslint@8.40.0): - resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - '@typescript-eslint/parser': 5.59.5(eslint@8.40.0)(typescript@4.9.5) - array-includes: 3.1.6 - array.prototype.flat: 1.3.1 - array.prototype.flatmap: 1.3.1 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.40.0 - eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.5)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.40.0) - has: 1.0.3 - is-core-module: 2.12.0 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.values: 1.1.6 - resolve: 1.22.2 - semver: 6.3.0 - tsconfig-paths: 3.14.2 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: false - - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@4.9.5): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -7555,40 +6972,15 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) - '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.42.0)(typescript@4.9.5) - eslint: 8.42.0 + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) + eslint: 8.48.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.40.0): - resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - '@babel/runtime': 7.21.5 - aria-query: 5.1.3 - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - ast-types-flow: 0.0.7 - axe-core: 4.7.1 - axobject-query: 3.1.1 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 8.40.0 - has: 1.0.3 - jsx-ast-utils: 3.3.3 - language-tags: 1.0.5 - minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - semver: 6.3.0 - dev: false - - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.42.0): + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.48.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -7603,17 +6995,16 @@ packages: axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.42.0 + eslint: 8.48.0 has: 1.0.3 jsx-ast-utils: 3.3.3 language-tags: 1.0.5 minimatch: 3.1.2 object.entries: 1.1.6 object.fromentries: 2.0.6 - semver: 6.3.0 - dev: true + semver: 6.3.1 - /eslint-plugin-prettier@4.2.1(eslint@8.42.0)(prettier@2.8.8): + /eslint-plugin-prettier@4.2.1(eslint@8.48.0)(prettier@2.8.8): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -7624,30 +7015,20 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.42.0 + eslint: 8.48.0 prettier: 2.8.8 prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.40.0): - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - dependencies: - eslint: 8.40.0 - dev: false - - /eslint-plugin-react-hooks@4.6.0(eslint@8.42.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.48.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.42.0 - dev: true + eslint: 8.48.0 - /eslint-plugin-react@7.32.2(eslint@8.40.0): + /eslint-plugin-react@7.32.2(eslint@8.48.0): resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -7657,7 +7038,7 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.40.0 + eslint: 8.48.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -7667,42 +7048,17 @@ packages: object.values: 1.1.6 prop-types: 15.8.1 resolve: 2.0.0-next.4 - semver: 6.3.0 + semver: 6.3.1 string.prototype.matchall: 4.0.8 - dev: false - /eslint-plugin-react@7.32.2(eslint@8.42.0): - resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - array.prototype.tosorted: 1.1.1 - doctrine: 2.1.0 - eslint: 8.42.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.3 - minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - object.hasown: 1.1.2 - object.values: 1.1.6 - prop-types: 15.8.1 - resolve: 2.0.0-next.4 - semver: 6.3.0 - string.prototype.matchall: 4.0.8 - dev: true - - /eslint-plugin-testing-library@5.11.0(eslint@8.42.0)(typescript@4.9.5): + /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) - eslint: 8.42.0 + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + eslint: 8.48.0 transitivePeerDependencies: - supports-color - typescript @@ -7713,83 +7069,34 @@ packages: engines: {node: '>=8.0.0'} dependencies: esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true - - /eslint-scope@7.2.0: - resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - /eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - - /eslint-visitor-keys@3.4.1: - resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - /eslint@8.40.0: - resolution: {integrity: sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.40.0) - '@eslint-community/regexpp': 4.5.1 - '@eslint/eslintrc': 2.0.3 - '@eslint/js': 8.40.0 - '@humanwhocodes/config-array': 0.11.8 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.0 - eslint-visitor-keys: 3.4.1 - espree: 9.5.2 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.20.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.4 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-sdsl: 4.4.0 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.1 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: false + estraverse: 4.3.0 + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true - /eslint@8.42.0: - resolution: {integrity: sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /eslint@8.48.0: + resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) - '@eslint-community/regexpp': 4.5.1 - '@eslint/eslintrc': 2.0.3 - '@eslint/js': 8.42.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/regexpp': 4.8.0 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.48.0 '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -7799,9 +7106,9 @@ packages: debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.0 - eslint-visitor-keys: 3.4.1 - espree: 9.5.2 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -7811,7 +7118,6 @@ packages: globals: 13.20.0 graphemer: 1.4.0 ignore: 5.2.4 - import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -7821,21 +7127,19 @@ packages: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.1 + optionator: 0.9.3 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true - /espree@9.5.2: - resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.8.2 - acorn-jsx: 5.3.2(acorn@8.8.2) - eslint-visitor-keys: 3.4.1 + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.3 /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -8041,6 +7345,7 @@ packages: dependencies: md5.js: 1.3.5 safe-buffer: 5.2.1 + dev: false /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} @@ -8237,10 +7542,6 @@ packages: dependencies: is-callable: 1.2.7 - /foreach@2.0.6: - resolution: {integrity: sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==} - dev: true - /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -8280,8 +7581,8 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true @@ -8303,16 +7604,9 @@ packages: /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - /fwd-stream@1.0.4: - resolution: {integrity: sha512-q2qaK2B38W07wfPSQDKMiKOD5Nzv2XyuvQlrmh1q0pxyHNanKHq8lwQ6n9zHucAwA5EbzRJKEgds2orn88rYTg==} - dependencies: - readable-stream: 1.0.34 - dev: true - /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - dev: true /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} @@ -8322,13 +7616,6 @@ packages: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true - /get-intrinsic@1.2.0: - resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.3 - /get-intrinsic@1.2.1: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: @@ -8361,7 +7648,6 @@ packages: /get-tsconfig@4.5.0: resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} - dev: false /git-raw-commits@2.0.11: resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} @@ -8433,7 +7719,6 @@ packages: /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - dev: true /globals@13.20.0: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} @@ -8449,7 +7734,6 @@ packages: /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - dev: false /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -8485,7 +7769,6 @@ packages: /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - dev: false /google-protobuf@3.21.2: resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} @@ -8501,10 +7784,10 @@ packages: /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} @@ -8525,7 +7808,7 @@ packages: /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} @@ -8554,12 +7837,14 @@ packages: inherits: 2.0.4 readable-stream: 3.6.2 safe-buffer: 5.2.1 + dev: false /hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 + dev: false /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} @@ -8576,6 +7861,7 @@ packages: hash.js: 1.1.7 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 + dev: false /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -8625,10 +7911,6 @@ packages: safer-buffer: 2.1.2 dev: true - /idb-wrapper@1.7.2: - resolution: {integrity: sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg==} - dev: true - /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: false @@ -8662,10 +7944,6 @@ packages: engines: {node: '>=8'} dev: true - /indexof@0.0.1: - resolution: {integrity: sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==} - dev: true - /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -8758,12 +8036,6 @@ packages: ci-info: 3.8.0 dev: true - /is-core-module@2.12.0: - resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} - dependencies: - has: 1.0.3 - dev: false - /is-core-module@2.12.1: resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} dependencies: @@ -8779,7 +8051,6 @@ packages: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true - dev: false /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} @@ -8843,10 +8114,6 @@ packages: engines: {node: '>=8'} dev: true - /is-object@0.1.2: - resolution: {integrity: sha512-GkfZZlIZtpkFrqyAXPQSRBMsaHAw+CgoKe2HXAkjd/sfoI9+hS8PT4wg2rJxdQyUKr7N2vHJbg7/jQtE5l5vBQ==} - dev: true - /is-path-cwd@2.2.0: resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} engines: {node: '>=6'} @@ -8987,27 +8254,10 @@ packages: engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - dev: false - - /is@0.2.7: - resolution: {integrity: sha512-ajQCouIvkcSnl2iRdK70Jug9mohIHVX9uKpoWnl115ov0R5mzBvRrXxrnHbsA+8AdwCwc/sfw7HXmd4I5EJBdQ==} - dev: true - - /isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - dev: true - - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: true /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - /isbuffer@0.0.0: - resolution: {integrity: sha512-xU+NoHp+YtKQkaM2HsQchYn0sltxMxew0HavMfHbjnucBoTSGbw745tL+Z7QBANleWM1eEQMenEpi174mIeS4g==} - dev: true - /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -9041,11 +8291,11 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.22.5 - '@babel/parser': 7.22.5 + '@babel/core': 7.22.15 + '@babel/parser': 7.22.15 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true @@ -9177,11 +8427,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 '@types/node': 18.16.18 - babel-jest: 29.5.0(@babel/core@7.22.5) + babel-jest: 29.5.0(@babel/core@7.22.15) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 @@ -9266,7 +8516,7 @@ packages: micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /jest-leak-detector@29.5.0: @@ -9291,7 +8541,7 @@ packages: resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.21.4 + '@babel/code-frame': 7.22.13 '@jest/types': 29.5.0 '@types/stack-utils': 2.0.1 chalk: 4.1.2 @@ -9416,18 +8666,18 @@ packages: resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.5 - '@babel/generator': 7.21.5 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.5) - '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.5) - '@babel/traverse': 7.21.5 - '@babel/types': 7.21.5 + '@babel/core': 7.22.15 + '@babel/generator': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.15) + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 '@jest/expect-utils': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@types/babel__traverse': 7.18.5 '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.15) chalk: 4.1.2 expect: 29.5.0 graceful-fs: 4.2.11 @@ -9438,7 +8688,7 @@ packages: jest-util: 29.5.0 natural-compare: 1.4.0 pretty-format: 29.5.0 - semver: 7.5.1 + semver: 7.5.2 transitivePeerDependencies: - supports-color dev: true @@ -9529,10 +8779,6 @@ packages: - ts-node dev: true - /js-sdsl@4.4.0: - resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} - dev: false - /js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} dev: false @@ -9563,7 +8809,6 @@ packages: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true - dev: true /json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} @@ -9609,7 +8854,6 @@ packages: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - dev: true /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -9673,82 +8917,6 @@ packages: dependencies: language-subtag-registry: 0.3.22 - /level-blobs@0.1.7: - resolution: {integrity: sha512-n0iYYCGozLd36m/Pzm206+brIgXP8mxPZazZ6ZvgKr+8YwOZ8/PPpYC5zMUu2qFygRN8RO6WC/HH3XWMW7RMVg==} - dependencies: - level-peek: 1.0.6 - once: 1.4.0 - readable-stream: 1.1.14 - dev: true - - /level-filesystem@1.2.0: - resolution: {integrity: sha512-PhXDuCNYpngpxp3jwMT9AYBMgOvB6zxj3DeuIywNKmZqFj2djj9XfT2XDVslfqmo0Ip79cAd3SBy3FsfOZPJ1g==} - dependencies: - concat-stream: 1.6.2 - errno: 0.1.8 - fwd-stream: 1.0.4 - level-blobs: 0.1.7 - level-peek: 1.0.6 - level-sublevel: 5.2.3 - octal: 1.0.0 - once: 1.4.0 - xtend: 2.2.0 - dev: true - - /level-fix-range@1.0.2: - resolution: {integrity: sha512-9llaVn6uqBiSlBP+wKiIEoBa01FwEISFgHSZiyec2S0KpyLUkGR4afW/FCZ/X8y+QJvzS0u4PGOlZDdh1/1avQ==} - dev: true - - /level-fix-range@2.0.0: - resolution: {integrity: sha512-WrLfGWgwWbYPrHsYzJau+5+te89dUbENBg3/lsxOs4p2tYOhCHjbgXxBAj4DFqp3k/XBwitcRXoCh8RoCogASA==} - dependencies: - clone: 0.1.19 - dev: true - - /level-hooks@4.5.0: - resolution: {integrity: sha512-fxLNny/vL/G4PnkLhWsbHnEaRi+A/k8r5EH/M77npZwYL62RHi2fV0S824z3QdpAk6VTgisJwIRywzBHLK4ZVA==} - dependencies: - string-range: 1.2.2 - dev: true - - /level-js@2.2.4: - resolution: {integrity: sha512-lZtjt4ZwHE00UMC1vAb271p9qzg8vKlnDeXfIesH3zL0KxhHRDjClQLGLWhyR0nK4XARnd4wc/9eD1ffd4PshQ==} - dependencies: - abstract-leveldown: 0.12.4 - idb-wrapper: 1.7.2 - isbuffer: 0.0.0 - ltgt: 2.2.1 - typedarray-to-buffer: 1.0.4 - xtend: 2.1.2 - dev: true - - /level-peek@1.0.6: - resolution: {integrity: sha512-TKEzH5TxROTjQxWMczt9sizVgnmJ4F3hotBI48xCTYvOKd/4gA/uY0XjKkhJFo6BMic8Tqjf6jFMLWeg3MAbqQ==} - dependencies: - level-fix-range: 1.0.2 - dev: true - - /level-sublevel@5.2.3: - resolution: {integrity: sha512-tO8jrFp+QZYrxx/Gnmjawuh1UBiifpvKNAcm4KCogesWr1Nm2+ckARitf+Oo7xg4OHqMW76eAqQ204BoIlscjA==} - dependencies: - level-fix-range: 2.0.0 - level-hooks: 4.5.0 - string-range: 1.2.2 - xtend: 2.0.6 - dev: true - - /levelup@0.18.6: - resolution: {integrity: sha512-uB0auyRqIVXx+hrpIUtol4VAPhLRcnxcOsd2i2m6rbFIDarO5dnrupLOStYYpEcu8ZT087Z9HEuYw1wjr6RL6Q==} - dependencies: - bl: 0.8.2 - deferred-leveldown: 0.2.0 - errno: 0.1.8 - prr: 0.0.0 - readable-stream: 1.0.34 - semver: 2.3.2 - xtend: 3.0.0 - dev: true - /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -10004,7 +9172,6 @@ packages: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 - dev: true /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} @@ -10012,10 +9179,6 @@ packages: dependencies: yallist: 4.0.0 - /ltgt@2.2.1: - resolution: {integrity: sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==} - dev: true - /magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: @@ -10033,7 +9196,7 @@ packages: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: - semver: 6.3.0 + semver: 6.3.1 dev: true /make-error@1.3.6: @@ -10062,6 +9225,7 @@ packages: hash-base: 3.1.0 inherits: 2.0.4 safe-buffer: 5.2.1 + dev: false /media-query-parser@2.0.2: resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} @@ -10118,14 +9282,6 @@ packages: braces: 3.0.2 picomatch: 2.3.1 - /miller-rabin@4.0.1: - resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} - hasBin: true - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - dev: true - /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -10159,9 +9315,11 @@ packages: /minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: false /minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: false /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -10264,7 +9422,7 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true - /next@13.1.6(react-dom@18.2.0)(react@18.2.0): + /next@13.1.6(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==} engines: {node: '>=14.6.0'} hasBin: true @@ -10284,11 +9442,11 @@ packages: dependencies: '@next/env': 13.1.6 '@swc/helpers': 0.4.14 - caniuse-lite: 1.0.30001486 + caniuse-lite: 1.0.30001527 postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.22.15)(react@18.2.0) optionalDependencies: '@next/swc-android-arm-eabi': 13.1.6 '@next/swc-android-arm64': 13.1.6 @@ -10332,13 +9490,8 @@ packages: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-releases@2.0.12: - resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} - dev: true - /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - dev: true /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -10392,19 +9545,6 @@ packages: call-bind: 1.0.2 define-properties: 1.2.0 - /object-keys@0.2.0: - resolution: {integrity: sha512-XODjdR2pBh/1qrjPcbSeSgEtKbYo7LqYNq64/TPuCf7j9SfDD3i21yatKoIy39yIWNvVM59iutfQQpCv1RfFzA==} - deprecated: Please update to the latest object-keys - dependencies: - foreach: 2.0.6 - indexof: 0.0.1 - is: 0.2.7 - dev: true - - /object-keys@0.4.0: - resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} - dev: true - /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -10448,10 +9588,6 @@ packages: define-properties: 1.2.0 es-abstract: 1.21.2 - /octal@1.0.0: - resolution: {integrity: sha512-nnda7W8d+A3vEIY+UrDQzzboPf1vhs4JYVhff5CDkq9QNoZY7Xrxeo/htox37j9dZf7yNHevZzqtejWgy1vCqQ==} - dev: true - /on-exit-leak-free@0.2.0: resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} dev: false @@ -10482,18 +9618,17 @@ packages: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 - dev: false - /optionator@0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - word-wrap: 1.2.3 /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} @@ -10561,16 +9696,6 @@ packages: dependencies: callsites: 3.1.0 - /parse-asn1@5.1.6: - resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} - dependencies: - asn1.js: 5.4.1 - browserify-aes: 1.2.0 - evp_bytestokey: 1.0.3 - pbkdf2: 3.1.2 - safe-buffer: 5.2.1 - dev: true - /parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} @@ -10583,7 +9708,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.21.4 + '@babel/code-frame': 7.22.13 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -10637,6 +9762,7 @@ packages: ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 + dev: false /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -10776,14 +9902,6 @@ packages: react-is: 18.2.0 dev: true - /process-es6@0.11.6: - resolution: {integrity: sha512-GYBRQtL4v3wgigq10Pv58jmTbFXlIiTbSfgnNqZLY0ldUPqy1rRxDI5fCjoCpnM6TqmHQI8ydzTBXW86OYc0gA==} - dev: true - - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: true - /process-warning@1.0.0: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} dev: false @@ -10803,26 +9921,6 @@ packages: object-assign: 4.1.1 react-is: 16.13.1 - /protobufjs@6.11.3: - resolution: {integrity: sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==} - hasBin: true - requiresBuild: true - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/long': 4.0.2 - '@types/node': 18.16.18 - long: 4.0.0 - dev: false - /protobufjs@6.11.4: resolution: {integrity: sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==} hasBin: true @@ -10851,29 +9949,10 @@ packages: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false - /prr@0.0.0: - resolution: {integrity: sha512-LmUECmrW7RVj6mDWKjTXfKug7TFGdiz9P18HMcO4RHL+RW7MCOGNvpj5j47Rnp6ne6r4fZ2VzyUWEpKbg+tsjQ==} - dev: true - - /prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - dev: true - /pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true - /public-encrypt@4.0.3: - resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} - dependencies: - bn.js: 4.12.0 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - parse-asn1: 5.1.6 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - dev: true - /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} @@ -10953,13 +10032,6 @@ packages: dependencies: safe-buffer: 5.2.1 - /randomfill@1.0.4: - resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} - dependencies: - randombytes: 2.1.0 - safe-buffer: 5.2.1 - dev: true - /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: @@ -10977,7 +10049,7 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /react-remove-scroll-bar@2.3.4(@types/react@18.2.6)(react@18.2.0): + /react-remove-scroll-bar@2.3.4(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: @@ -10987,13 +10059,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.6 + '@types/react': 18.2.12 react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.6)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.12)(react@18.2.0) tslib: 2.5.2 dev: false - /react-remove-scroll@2.5.4(@types/react@18.2.6)(react@18.2.0): + /react-remove-scroll@2.5.4(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==} engines: {node: '>=10'} peerDependencies: @@ -11003,16 +10075,16 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.6 + '@types/react': 18.2.12 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.6)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.6)(react@18.2.0) + react-remove-scroll-bar: 2.3.4(@types/react@18.2.12)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.12)(react@18.2.0) tslib: 2.5.2 - use-callback-ref: 1.3.0(@types/react@18.2.6)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.6)(react@18.2.0) + use-callback-ref: 1.3.0(@types/react@18.2.12)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.12)(react@18.2.0) dev: false - /react-style-singleton@2.2.1(@types/react@18.2.6)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -11022,7 +10094,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.6 + '@types/react': 18.2.12 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 @@ -11074,36 +10146,6 @@ packages: strip-bom: 3.0.0 dev: true - /readable-stream@1.0.34: - resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - dev: true - - /readable-stream@1.1.14: - resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - dev: true - - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: true - /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -11296,6 +10338,7 @@ packages: dependencies: hash-base: 3.1.0 inherits: 2.0.4 + dev: false /rlp@2.2.7: resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} @@ -11317,15 +10360,6 @@ packages: semver: 5.7.1 dev: true - /rollup-plugin-node-builtins@2.1.2: - resolution: {integrity: sha512-bxdnJw8jIivr2yEyt8IZSGqZkygIJOGAWypXvHXnwKAbUcN4Q/dGTx7K0oAJryC/m6aq6tKutltSeXtuogU6sw==} - dependencies: - browserify-fs: 1.0.0 - buffer-es6: 4.9.3 - crypto-browserify: 3.12.0 - process-es6: 0.11.6 - dev: true - /rollup-plugin-polyfill-node@0.10.2(rollup@2.79.1): resolution: {integrity: sha512-5GMywXiLiuQP6ZzED/LO/Q0HyDi2W6b8VN+Zd3oB0opIjyRs494Me2ZMaqKWDNbGiW4jvvzl6L2n4zRgxS9cSQ==} peerDependencies: @@ -11341,11 +10375,11 @@ packages: peerDependencies: rollup: ^2.0.0 dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.22.13 jest-worker: 26.6.2 rollup: 2.79.1 serialize-javascript: 4.0.0 - terser: 5.16.6 + terser: 5.19.2 dev: true /rollup@2.79.1: @@ -11353,7 +10387,7 @@ packages: engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /rpc-websockets@7.5.1: @@ -11386,10 +10420,6 @@ packages: tslib: 2.5.2 dev: true - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true - /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -11456,35 +10486,14 @@ packages: node-gyp-build: 4.6.0 dev: false - /semver@2.3.2: - resolution: {integrity: sha512-abLdIKCosKfpnmhS52NCTjO4RiLspDfsn37prjzGrp9im5DPJOgh82Os92vtwGh6XdQryKI/7SREZnV+aqiXrA==} - hasBin: true - dev: true - /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true dev: true - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - - /semver@7.5.0: - resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: false - - /semver@7.5.1: - resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} - engines: {node: '>=10'} + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true /semver@7.5.2: resolution: {integrity: sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==} @@ -11524,6 +10533,7 @@ packages: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 + dev: false /sha3@2.1.4: resolution: {integrity: sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==} @@ -11777,10 +10787,6 @@ packages: resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} dev: true - /string-range@1.2.2: - resolution: {integrity: sha512-tYft6IFi8SjplJpxCUxyqisD3b+R2CSkomrtJYCkvuf1KuCAWgz7YXt4O0jip7efpfCemwHEzTEAO8EuOYgh3w==} - dev: true - /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -11832,16 +10838,6 @@ packages: define-properties: 1.2.0 es-abstract: 1.21.2 - /string_decoder@0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - dev: true - - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: true - /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: @@ -11901,7 +10897,7 @@ packages: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: false - /styled-jsx@5.1.1(react@18.2.0): + /styled-jsx@5.1.1(@babel/core@7.22.15)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -11914,6 +10910,7 @@ packages: babel-plugin-macros: optional: true dependencies: + '@babel/core': 7.22.15 client-only: 0.0.1 react: 18.2.0 dev: false @@ -11944,7 +10941,6 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -11960,8 +10956,7 @@ packages: engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/utils': 2.3.1 - tslib: 2.5.0 - dev: false + tslib: 2.5.2 /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} @@ -11988,7 +10983,7 @@ packages: uglify-js: optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 @@ -11996,24 +10991,13 @@ packages: webpack: 5.88.1(webpack-cli@5.1.4) dev: true - /terser@5.16.6: - resolution: {integrity: sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@jridgewell/source-map': 0.3.2 - acorn: 8.8.2 - commander: 2.20.3 - source-map-support: 0.5.21 - dev: true - /terser@5.19.2: resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} engines: {node: '>=10'} hasBin: true dependencies: '@jridgewell/source-map': 0.3.5 - acorn: 8.8.2 + acorn: 8.10.0 commander: 2.20.3 source-map-support: 0.5.21 dev: true @@ -12059,7 +11043,6 @@ packages: dependencies: globalyzer: 0.1.0 globrex: 0.1.2 - dev: false /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} @@ -12075,7 +11058,6 @@ packages: /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - dev: true /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -12095,7 +11077,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-jest@29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@4.9.5): + /ts-jest@29.1.0(@babel/core@7.22.15)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -12116,7 +11098,7 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) @@ -12124,7 +11106,7 @@ packages: json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.5.1 + semver: 7.5.2 typescript: 4.9.5 yargs-parser: 21.1.1 dev: true @@ -12149,7 +11131,7 @@ packages: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 '@types/node': 18.16.18 - acorn: 8.8.2 + acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 @@ -12171,9 +11153,6 @@ packages: /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - /tslib@2.5.0: - resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - /tslib@2.5.2: resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==} @@ -12262,27 +11241,19 @@ packages: for-each: 0.3.3 is-typed-array: 1.1.10 - /typedarray-to-buffer@1.0.4: - resolution: {integrity: sha512-vjMKrfSoUDN8/Vnqitw2FmstOfuJ73G6CrSEKnf11A6RmasVxHqfeBcnTb6RsL4pTMuV5Zsv9IiHRphMZyckUw==} - dev: true - /typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 dev: false - /typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - dev: true - /typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true dev: true @@ -12334,34 +11305,22 @@ packages: engines: {node: '>= 10.0.0'} dev: true - /update-browserslist-db@1.0.11(browserslist@4.21.7): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.7 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - - /update-browserslist-db@1.0.11(browserslist@4.21.9): + /update-browserslist-db@1.0.11(browserslist@4.21.10): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.9 + browserslist: 4.21.10 escalade: 3.1.1 picocolors: 1.0.0 - dev: true /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 - /use-callback-ref@1.3.0(@types/react@18.2.6)(react@18.2.0): + /use-callback-ref@1.3.0(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: @@ -12371,12 +11330,12 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.6 + '@types/react': 18.2.12 react: 18.2.0 tslib: 2.5.2 dev: false - /use-sidecar@1.1.2(@types/react@18.2.6)(react@18.2.0): + /use-sidecar@1.1.2(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -12386,7 +11345,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.6 + '@types/react': 18.2.12 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.5.2 @@ -12434,7 +11393,7 @@ packages: resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.9.0 dev: true @@ -12601,9 +11560,9 @@ packages: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/wasm-edit': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.8.2 - acorn-import-assertions: 1.9.0(acorn@8.8.2) - browserslist: 4.21.9 + acorn: 8.10.0 + acorn-import-assertions: 1.9.0(acorn@8.10.0) + browserslist: 4.21.10 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 es-module-lexer: 1.3.0 @@ -12690,10 +11649,6 @@ packages: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} dev: true - /word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} - /workerpool@6.2.1: resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} dev: true @@ -12788,31 +11743,6 @@ packages: symbol-observable: 2.0.3 dev: false - /xtend@2.0.6: - resolution: {integrity: sha512-fOZg4ECOlrMl+A6Msr7EIFcON1L26mb4NY5rurSkOex/TWhazOrg6eXD/B0XkuiYcYhQDWLXzQxLMVJ7LXwokg==} - engines: {node: '>=0.4'} - dependencies: - is-object: 0.1.2 - object-keys: 0.2.0 - dev: true - - /xtend@2.1.2: - resolution: {integrity: sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==} - engines: {node: '>=0.4'} - dependencies: - object-keys: 0.4.0 - dev: true - - /xtend@2.2.0: - resolution: {integrity: sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw==} - engines: {node: '>=0.4'} - dev: true - - /xtend@3.0.0: - resolution: {integrity: sha512-sp/sT9OALMjRW1fKDlPeuSZlDQpkqReA0pyJukniWbTGoEKefHxhGJynE3PNhUMlcM8qWIjPwecwCw4LArS5Eg==} - engines: {node: '>=0.4'} - dev: true - /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -12832,7 +11762,6 @@ packages: /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -12905,7 +11834,7 @@ packages: require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 - yargs-parser: 20.2.4 + yargs-parser: 20.2.9 dev: true /yargs@17.7.2: From 4229477305911f7772c1e3377a840a4327669d19 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 5 Sep 2023 19:48:50 +0800 Subject: [PATCH 210/433] chore: [ci] release (alpha) (#307) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 4 +++- examples/nextjs/CHANGELOG.md | 9 +++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 9 +++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 12 ++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 36 insertions(+), 4 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index e97bec6a..36b2714d 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -10,6 +10,8 @@ }, "changesets": [ "giant-bikes-grab", - "perfect-starfishes-watch" + "itchy-ducks-chew", + "perfect-starfishes-watch", + "short-moons-pretend" ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 9694ecf9..4cabe7cb 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/wallet +## 0.0.6-alpha.1 + +### Patch Changes + +- Updated dependencies + [[`4acdb91`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4acdb919f4c2d7764c670f97c26a5b9cca8c962e), + [`bea0466`](https://github.com/bnb-chain/greenfield-js-sdk/commit/bea04668309bb4a769b68e9eab4f193ad2ef1d4b)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.1 + ## 0.0.6-alpha.0 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 8eb28912..67723575 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.6-alpha.0", + "version": "0.0.6-alpha.1", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index eff134f8..2b9e9ac9 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,14 @@ # @demo/nodejs +## 0.0.9-alpha.1 + +### Patch Changes + +- Updated dependencies + [[`4acdb91`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4acdb919f4c2d7764c670f97c26a5b9cca8c962e), + [`bea0466`](https://github.com/bnb-chain/greenfield-js-sdk/commit/bea04668309bb4a769b68e9eab4f193ad2ef1d4b)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.1 + ## 0.0.9-alpha.0 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 4a0365b9..d1c165a6 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.9-alpha.0", + "version": "0.0.9-alpha.1", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index b19eb2a5..ba6515ce 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.5-alpha.1 + +### Patch Changes + +- [#308](https://github.com/bnb-chain/greenfield-js-sdk/pull/308) + [`4acdb91`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4acdb919f4c2d7764c670f97c26a5b9cca8c962e) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: Update Deps + +- [#305](https://github.com/bnb-chain/greenfield-js-sdk/pull/305) + [`bea0466`](https://github.com/bnb-chain/greenfield-js-sdk/commit/bea04668309bb4a769b68e9eab4f193ad2ef1d4b) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: Sp metainfo + ## 0.2.5-alpha.0 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 69bea1b0..ce3395be 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.5-alpha.0", + "version": "0.2.5-alpha.1", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 53b8001f960941167265f4cc39f54fde38798e18 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Wed, 6 Sep 2023 14:58:33 +0800 Subject: [PATCH 211/433] docs: Update README (#309) --- packages/chain-sdk/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/chain-sdk/README.md b/packages/chain-sdk/README.md index 52ba460b..c95680bc 100644 --- a/packages/chain-sdk/README.md +++ b/packages/chain-sdk/README.md @@ -27,7 +27,7 @@ Client.create(GRPC_URL, String(GREEN_CHAIN_ID), { The SDK consists of two parts: * Chain: https://docs.bnbchain.org/greenfield-docs/docs/api/blockchain-rest -* Storage Provider: https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest +* Storage Provider: https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest ## Chain @@ -114,7 +114,7 @@ Examples: > https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest -SDK support two [authentication type](https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest#authentication-type): +SDK support two [authentication type](https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest#authentication-type): * ECDSA: It is usually used on Node.js(Because it need to use a private key) * EDDSA: It is usually used in a browser From 695379edeaa480afed7e91cb9cf1b381c7fc5f68 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Thu, 7 Sep 2023 19:02:13 +0800 Subject: [PATCH 212/433] Feat/validator (#310) * feat: EditValidator * feat: Add proposal api * refactor: TxClient * feat: Bucket listBucketsByPaymentAccount api * fix: Proposal and Validator API * feat: ListUserPaymentAccount api --- .changeset/heavy-seas-talk.md | 5 + .changeset/soft-doors-perform.md | 5 + .changeset/spicy-jokes-wave.md | 5 + .changeset/stale-beans-jog.md | 5 + .changeset/stupid-dodos-fold.md | 5 + examples/nextjs/.env.simple | 3 + .../src/components/feegrant/createObj.tsx | 2 +- .../nextjs/src/components/feegrant/delObj.tsx | 2 +- .../nextjs/src/components/multimsg/index.tsx | 2 +- .../nextjs/src/components/proposal/index.tsx | 48 +++ .../nextjs/src/components/query/index.tsx | 55 ++- .../nextjs/src/components/validator/index.tsx | 128 +++++++ examples/nextjs/src/config/env.ts | 2 + examples/nextjs/src/pages/tx.tsx | 6 + packages/chain-sdk/src/api/account.ts | 10 +- packages/chain-sdk/src/api/basic.ts | 304 +---------------- packages/chain-sdk/src/api/bucket.ts | 58 +++- packages/chain-sdk/src/api/challenge.ts | 8 +- packages/chain-sdk/src/api/crosschain.ts | 15 +- packages/chain-sdk/src/api/feegrant.ts | 10 +- packages/chain-sdk/src/api/group.ts | 14 +- packages/chain-sdk/src/api/objectt.ts | 12 +- packages/chain-sdk/src/api/payment.ts | 98 ++++-- packages/chain-sdk/src/api/proposal.ts | 32 ++ packages/chain-sdk/src/api/storage.ts | 7 +- packages/chain-sdk/src/api/validator.ts | 57 ++++ packages/chain-sdk/src/client.ts | 12 + packages/chain-sdk/src/clients/queryclient.ts | 6 + .../chain-sdk/src/clients/spclient/auth.ts | 7 +- .../spclient/spApis/listBucketsByPayment.ts | 57 ++++ .../spApis/listUserPaymentAccounts.ts | 61 ++++ .../src/clients/spclient/spClient.ts | 9 +- packages/chain-sdk/src/clients/txClient.ts | 314 ++++++++++++++++++ packages/chain-sdk/src/constants/typeUrl.ts | 3 + .../src/messages/cosmos/gov/MsgVote.ts | 24 ++ .../cosmos/staking/MsgCreateValidator.ts | 112 +++++++ .../cosmos/staking/MsgEditValidator.ts | 62 ++++ packages/chain-sdk/src/types/auth.ts | 1 + .../types/sp/ListBucketsByPaymentAccount.ts | 14 + .../src/types/sp/ListUserPaymentAccounts.ts | 18 + packages/chain-sdk/src/types/sp/index.ts | 3 +- 41 files changed, 1221 insertions(+), 380 deletions(-) create mode 100644 .changeset/heavy-seas-talk.md create mode 100644 .changeset/soft-doors-perform.md create mode 100644 .changeset/spicy-jokes-wave.md create mode 100644 .changeset/stale-beans-jog.md create mode 100644 .changeset/stupid-dodos-fold.md create mode 100644 examples/nextjs/src/components/proposal/index.tsx create mode 100644 examples/nextjs/src/components/validator/index.tsx create mode 100644 packages/chain-sdk/src/api/proposal.ts create mode 100644 packages/chain-sdk/src/api/validator.ts create mode 100644 packages/chain-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts create mode 100644 packages/chain-sdk/src/clients/spclient/spApis/listUserPaymentAccounts.ts create mode 100644 packages/chain-sdk/src/clients/txClient.ts create mode 100644 packages/chain-sdk/src/messages/cosmos/gov/MsgVote.ts create mode 100644 packages/chain-sdk/src/messages/cosmos/staking/MsgCreateValidator.ts create mode 100644 packages/chain-sdk/src/messages/cosmos/staking/MsgEditValidator.ts create mode 100644 packages/chain-sdk/src/types/sp/ListBucketsByPaymentAccount.ts create mode 100644 packages/chain-sdk/src/types/sp/ListUserPaymentAccounts.ts diff --git a/.changeset/heavy-seas-talk.md b/.changeset/heavy-seas-talk.md new file mode 100644 index 00000000..ea9f884a --- /dev/null +++ b/.changeset/heavy-seas-talk.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Validator API - editValidator diff --git a/.changeset/soft-doors-perform.md b/.changeset/soft-doors-perform.md new file mode 100644 index 00000000..cbb55288 --- /dev/null +++ b/.changeset/soft-doors-perform.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Proposal vote api diff --git a/.changeset/spicy-jokes-wave.md b/.changeset/spicy-jokes-wave.md new file mode 100644 index 00000000..bf8960c6 --- /dev/null +++ b/.changeset/spicy-jokes-wave.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: ListUserPaymentAccount api diff --git a/.changeset/stale-beans-jog.md b/.changeset/stale-beans-jog.md new file mode 100644 index 00000000..c97ef46d --- /dev/null +++ b/.changeset/stale-beans-jog.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Bucket listBucketsByPaymentAccount api diff --git a/.changeset/stupid-dodos-fold.md b/.changeset/stupid-dodos-fold.md new file mode 100644 index 00000000..074e5d69 --- /dev/null +++ b/.changeset/stupid-dodos-fold.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +refactor: basic.multi -> txClient.multi diff --git a/examples/nextjs/.env.simple b/examples/nextjs/.env.simple index 211543dc..dfec62f9 100644 --- a/examples/nextjs/.env.simple +++ b/examples/nextjs/.env.simple @@ -14,3 +14,6 @@ NEXT_PUBLIC_CROSS_CHAIN_CONTRACT_ADDRESS=0xeEBe00Ac0756308ac4AaBfD76c05c4F3088B8 # ACCOUNT NEXT_PUBLIC_ACCOUNT_ADDRESS= NEXT_PUBLIC_ACCOUNT_PRIVATEKEY= + +# VALIDATOR +NEXT_PUBLIC_VALIDATOR_PRIVATEKEY= diff --git a/examples/nextjs/src/components/feegrant/createObj.tsx b/examples/nextjs/src/components/feegrant/createObj.tsx index 1411a94c..2dc78792 100644 --- a/examples/nextjs/src/components/feegrant/createObj.tsx +++ b/examples/nextjs/src/components/feegrant/createObj.tsx @@ -91,7 +91,7 @@ export const CreateObj = () => { }); // 4. broadcast txs include 2 msg - const txs = await client.basic.multiTx([grantAllowanceTx, putPolicyTx]); + const txs = await client.txClient.multiTx([grantAllowanceTx, putPolicyTx]); const simuluateInfo = await txs.simulate({ denom: 'BNB', }); diff --git a/examples/nextjs/src/components/feegrant/delObj.tsx b/examples/nextjs/src/components/feegrant/delObj.tsx index ff7a4c7e..fdb22d36 100644 --- a/examples/nextjs/src/components/feegrant/delObj.tsx +++ b/examples/nextjs/src/components/feegrant/delObj.tsx @@ -77,7 +77,7 @@ export const DelObj = () => { }); // 4. broadcast txs include 2 msg - const txs = await client.basic.multiTx([grantAllowanceTx, putPolicyTx]); + const txs = await client.txClient.multiTx([grantAllowanceTx, putPolicyTx]); const simuluateInfo = await txs.simulate({ denom: 'BNB', }); diff --git a/examples/nextjs/src/components/multimsg/index.tsx b/examples/nextjs/src/components/multimsg/index.tsx index ea232050..58fb97e3 100644 --- a/examples/nextjs/src/components/multimsg/index.tsx +++ b/examples/nextjs/src/components/multimsg/index.tsx @@ -36,7 +36,7 @@ export const MultiMsg = () => { console.log(transferOutTx.metaTxInfo); - const txs = await client.basic.multiTx([transferTx, transferOutTx]); + const txs = await client.txClient.multiTx([transferTx, transferOutTx]); const simuluateInfo = await txs.simulate({ denom: 'BNB', diff --git a/examples/nextjs/src/components/proposal/index.tsx b/examples/nextjs/src/components/proposal/index.tsx new file mode 100644 index 00000000..b151d98f --- /dev/null +++ b/examples/nextjs/src/components/proposal/index.tsx @@ -0,0 +1,48 @@ +import { client } from '@/client'; +import { VALIDATOR_PRIVATEKEY } from '@/config/env'; +import { Long } from '@bnb-chain/greenfield-js-sdk'; +import { useAccount } from 'wagmi'; + +export const Proposal = () => { + const { address, connector } = useAccount(); + + return ( + <> +

    proposal

    +

    vote

    + + + ); +}; diff --git a/examples/nextjs/src/components/query/index.tsx b/examples/nextjs/src/components/query/index.tsx index f07536f4..45a8b3c1 100644 --- a/examples/nextjs/src/components/query/index.tsx +++ b/examples/nextjs/src/components/query/index.tsx @@ -1,9 +1,11 @@ import { client } from '@/client'; +import { ACCOUNT_PRIVATEKEY } from '@/config/env'; +import { getOffchainAuthKeys } from '@/utils/offchainAuth'; import { Long } from '@bnb-chain/greenfield-js-sdk'; import { useAccount } from 'wagmi'; export const QueryComponent = () => { - const { address } = useAccount(); + const { address, connector } = useAccount(); return ( <>

    open console panel

    @@ -117,6 +119,24 @@ export const QueryComponent = () => { onClick={async () => { if (!address) return; + const { paymentAccounts } = await client.payment.getPaymentAccountsByOwner({ + owner: address, + }); + + const res = await client.bucket.listBucketsByPaymentAccount({ + paymentAccount: paymentAccounts[0], + }); + console.log('res', res); + }} + > + list bucket by payment + + +
  • +
  • + +
  • + +
  • ); diff --git a/examples/nextjs/src/components/validator/index.tsx b/examples/nextjs/src/components/validator/index.tsx new file mode 100644 index 00000000..2528adf2 --- /dev/null +++ b/examples/nextjs/src/components/validator/index.tsx @@ -0,0 +1,128 @@ +import { client } from '@/client'; +import { VALIDATOR_PRIVATEKEY } from '@/config/env'; +import { Long } from '@bnb-chain/greenfield-js-sdk'; +import { useAccount } from 'wagmi'; + +export const Validator = () => { + const { address, connector } = useAccount(); + + return ( + <> + {/*

    create validator

    + */} + + + +

    edit validator

    + + + ); +}; diff --git a/examples/nextjs/src/config/env.ts b/examples/nextjs/src/config/env.ts index 316c7f03..21bb435e 100644 --- a/examples/nextjs/src/config/env.ts +++ b/examples/nextjs/src/config/env.ts @@ -11,6 +11,7 @@ const { NEXT_PUBLIC_CROSS_CHAIN_CONTRACT_ADDRESS, NEXT_PUBLIC_ACCOUNT_ADDRESS, NEXT_PUBLIC_ACCOUNT_PRIVATEKEY, + NEXT_PUBLIC_VALIDATOR_PRIVATEKEY, } = publicRuntimeConfig || {}; export const GRPC_URL = NEXT_PUBLIC_GRPC_URL; @@ -22,3 +23,4 @@ export const TOKEN_HUB_CONTRACT_ADDRESS = NEXT_PUBLIC_TOKEN_HUB_CONTRACT_ADDRESS export const CROSS_CHAIN_CONTRACT_ADDRESS = NEXT_PUBLIC_CROSS_CHAIN_CONTRACT_ADDRESS; export const ACCOUNT_ADDRESS = NEXT_PUBLIC_ACCOUNT_ADDRESS; export const ACCOUNT_PRIVATEKEY = NEXT_PUBLIC_ACCOUNT_PRIVATEKEY; +export const VALIDATOR_PRIVATEKEY = NEXT_PUBLIC_VALIDATOR_PRIVATEKEY; diff --git a/examples/nextjs/src/pages/tx.tsx b/examples/nextjs/src/pages/tx.tsx index c5e05b00..c6d536a2 100644 --- a/examples/nextjs/src/pages/tx.tsx +++ b/examples/nextjs/src/pages/tx.tsx @@ -12,6 +12,8 @@ import { Withdraw } from '@/components/withdraw'; import { useIsMounted } from '@/hooks/useIsMounted'; import { useAccount } from 'wagmi'; import { PaymentComponent } from '@/components/payment'; +import { Validator } from '@/components/validator'; +import { Proposal } from '@/components/proposal'; export default function Tx() { const isMounted = useIsMounted(); @@ -47,6 +49,10 @@ export default function Tx() {

    + +
    + +
    )} diff --git a/packages/chain-sdk/src/api/account.ts b/packages/chain-sdk/src/api/account.ts index 37ea7c6f..335cf5d7 100644 --- a/packages/chain-sdk/src/api/account.ts +++ b/packages/chain-sdk/src/api/account.ts @@ -1,3 +1,4 @@ +import { TxClient } from '@/clients/txClient'; import { MsgMultiSendSDKTypeEIP712 } from '@/messages/bank/MsgMultiSend'; import { MsgSendSDKTypeEIP712 } from '@/messages/bank/MsgSend'; import { MsgCreatePaymentAccountSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgCreatePaymentAccount'; @@ -24,7 +25,6 @@ import { MsgSendTypeUrl, TxResponse, } from '..'; -import { Basic } from './basic'; import { RpcQueryClient } from '../clients/queryclient'; export interface IAccount { @@ -67,12 +67,12 @@ export interface IAccount { @singleton() export class Account implements IAccount { - constructor(@inject(delay(() => Basic)) private basic: Basic) {} + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} private queryClient = container.resolve(RpcQueryClient); public async multiTransfer(address: string, msg: MsgMultiSend) { - return await this.basic.tx( + return await this.txClient.tx( MsgMultiSendTypeUrl, address, MsgMultiSendSDKTypeEIP712, @@ -82,7 +82,7 @@ export class Account implements IAccount { } public async createPaymentAccount(msg: MsgCreatePaymentAccount) { - return await this.basic.tx( + return await this.txClient.tx( MsgCreatePaymentAccountTypeUrl, msg.creator, MsgCreatePaymentAccountSDKTypeEIP712, @@ -131,7 +131,7 @@ export class Account implements IAccount { } public async transfer(msg: MsgSend) { - return await this.basic.tx( + return await this.txClient.tx( MsgSendTypeUrl, msg.fromAddress, MsgSendSDKTypeEIP712, diff --git a/packages/chain-sdk/src/api/basic.ts b/packages/chain-sdk/src/api/basic.ts index 94ad4ee4..bc2a5f27 100644 --- a/packages/chain-sdk/src/api/basic.ts +++ b/packages/chain-sdk/src/api/basic.ts @@ -1,7 +1,3 @@ -import { getPubKeyByPriKey } from '@/keymanage'; -import { defaultSignTypedData } from '@/sign/signTx'; -import { getGasFeeBySimulate } from '@/utils/units'; -import { BaseAccount } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/auth'; import { GetBlockByHeightResponse, GetLatestBlockResponse, @@ -9,45 +5,9 @@ import { GetNodeInfoResponse, ServiceClientImpl as tdServiceClientImpl, } from '@bnb-chain/greenfield-cosmos-types/cosmos/base/tendermint/v1beta1/query'; -import { Coin } from '@bnb-chain/greenfield-cosmos-types/cosmos/base/v1beta1/coin'; -import { - ServiceClientImpl, - SimulateRequest, -} from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/service'; -import { - AuthInfo, - Tx, - TxBody, - TxRaw, -} from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/tx'; -import { makeAuthInfoBytes } from '@cosmjs/proto-signing'; -import { DeliverTxResponse, StargateClient } from '@cosmjs/stargate'; -import { Tendermint37Client } from '@cosmjs/tendermint-rpc'; -import { arrayify } from '@ethersproject/bytes'; -import { signTypedData, SignTypedDataVersion } from '@metamask/eth-sig-util'; import Long from 'long'; -import { container, inject, singleton } from 'tsyringe'; -import { - BroadcastOptions, - ISimulateGasFee, - MetaTxInfo, - SignOptions, - SimulateOptions, - TxResponse, -} from '..'; +import { container, singleton } from 'tsyringe'; import { RpcQueryClient } from '../clients/queryclient'; -import { DEFAULT_DENOM, ZERO_PUBKEY } from '../constants'; -import { - createEIP712, - generateFee, - generateMessage, - generateTypes, - mergeMultiEip712, - mergeMultiMessage, -} from '../messages'; -import { generateMsg } from '../messages/utils'; -import { eip712Hash, makeCosmsPubKey, recoverPk } from '../sign'; -import { Account } from './account'; export interface IBasic { /** @@ -83,47 +43,10 @@ export interface IBasic { * The function returns the block height of the validator set */ GetLatestValidatorSet(request: GetLatestValidatorSetRequest): Promise; - - /** - * simulates a transaction containing the provided messages on the chain. - The function returns a pointer to a ISimulateGasFee - */ - simulateRawTx( - txBodyBytes: Uint8Array, - accountInfo: BaseAccount, - txOption: SimulateOptions, - ): Promise; - - /** - * broadcasts a transaction containing the provided messages to the chain. - The function returns a pointer to a BroadcastTxResponse and any error that occurred during the operation. - */ - broadcastRawTx(txRawBytes: Uint8Array): Promise; - - tx( - typeUrl: MetaTxInfo['typeUrl'], - address: MetaTxInfo['address'], - MsgSDKTypeEIP712: MetaTxInfo['MsgSDKTypeEIP712'], - MsgSDK: MetaTxInfo['MsgSDK'], - msgBytes: MetaTxInfo['msgBytes'], - ): Promise; - - /** - * - */ - multiTx(txResList: Pick[]): Promise>; } @singleton() export class Basic implements IBasic { - public rpcUrl: string; - public chainId: string; - constructor(@inject('RPC_URL') rpcUrl: string, @inject('CHAIN_ID') chainId: string) { - this.rpcUrl = rpcUrl; - this.chainId = chainId; - } - - private account: Account = container.resolve(Account); private rpcQueryClient = container.resolve(RpcQueryClient); public async getNodeInfo() { @@ -166,229 +89,4 @@ export class Basic implements IBasic { const validatorSet = await rpc.GetLatestValidatorSet(request); return validatorSet.blockHeight.toNumber(); } - - public async tx( - typeUrl: MetaTxInfo['typeUrl'], - address: MetaTxInfo['address'], - MsgSDKTypeEIP712: MetaTxInfo['MsgSDKTypeEIP712'], - MsgSDK: MetaTxInfo['MsgSDK'], - msgBytes: MetaTxInfo['msgBytes'], - ) { - const txBodyBytes = this.getBodyBytes([ - { - typeUrl, - msgBytes, - }, - ]); - - const tx = await this.multiTx([ - { - metaTxInfo: { - typeUrl, - address, - MsgSDKTypeEIP712, - MsgSDK, - msgBytes, - bodyBytes: txBodyBytes, - }, - }, - ]); - - return { - simulate: tx.simulate, - broadcast: tx.broadcast, - metaTxInfo: { - typeUrl, - address, - MsgSDKTypeEIP712, - MsgSDK, - msgBytes, - bodyBytes: txBodyBytes, - }, - }; - } - - public async simulateRawTx( - txBodyBytes: Uint8Array, - accountInfo: BaseAccount, - options: SimulateOptions, - ) { - const rpcClient = await this.rpcQueryClient.getRpcClient(); - const rpc = new ServiceClientImpl(rpcClient); - - const { denom } = options; - const authInfoBytes = this.getAuthInfoBytes({ - sequence: accountInfo.sequence + '', - denom, - gasLimit: 0, - gasPrice: '0', - pubKey: makeCosmsPubKey(ZERO_PUBKEY), - granter: '', - payer: '', - }); - const tx = Tx.fromPartial({ - authInfo: AuthInfo.decode(authInfoBytes), - body: TxBody.decode(txBodyBytes), - signatures: [Uint8Array.from([])], - }); - - const request = SimulateRequest.fromPartial({ - txBytes: Tx.encode(tx).finish(), - }); - - const res = await rpc.Simulate(request); - return getGasFeeBySimulate(res, denom); - } - - public async broadcastRawTx(txRawBytes: Uint8Array) { - const tmClient = await Tendermint37Client.connect(this.rpcUrl); - - const client = await StargateClient.create(tmClient); - return await client.broadcastTx(txRawBytes); - } - - public async multiTx(txResList: Pick[]) { - const txs = txResList.map((txRes) => txRes.metaTxInfo); - const accountInfo = await this.account.getAccount(txs[0].address); - const txBodyBytes = this.getBodyBytes(txs); - - return { - simulate: async (opts: SimulateOptions) => { - return await this.simulateRawTx(txBodyBytes, accountInfo, opts); - }, - broadcast: async (opts: BroadcastOptions) => { - const { - denom, - gasLimit, - gasPrice, - payer, - granter, - privateKey, - signTypedDataCallback = defaultSignTypedData, - } = opts; - - const types = mergeMultiEip712(txs.map((tx) => tx.MsgSDKTypeEIP712)); - const fee = generateFee( - String(BigInt(gasLimit) * BigInt(gasPrice)), - denom, - String(gasLimit), - payer, - granter, - ); - const wrapperTypes = generateTypes(types); - const multiMessages = mergeMultiMessage(txs); - const messages = generateMessage( - accountInfo.accountNumber.toString(), - accountInfo.sequence.toString(), - this.chainId, - '', - fee, - multiMessages, - '0', - ); - - const eip712 = createEIP712(wrapperTypes, this.chainId, messages); - const { pubKey, signature } = privateKey - ? this.getSignByPriKey(eip712, privateKey) - : await this.getSignByWallet(eip712, accountInfo.address, signTypedDataCallback); - - const authInfoBytes = this.getAuthInfoBytes({ - denom, - sequence: accountInfo.sequence + '', - gasLimit, - gasPrice, - pubKey, - granter, - payer, - }); - - const txRaw = TxRaw.fromPartial({ - bodyBytes: txBodyBytes, - authInfoBytes, - signatures: [arrayify(signature)], - }); - const txBytes = TxRaw.encode(txRaw).finish(); - return await this.broadcastRawTx(txBytes); - }, - }; - } - - private getAuthInfoBytes( - params: Pick & { - pubKey: BaseAccount['pubKey']; - sequence: string; - }, - ) { - const { pubKey, denom = DEFAULT_DENOM, sequence, gasLimit, gasPrice, granter, payer } = params; - if (!pubKey) throw new Error('pubKey is required'); - - const feeAmount: Coin[] = [ - { - denom, - amount: String(BigInt(gasLimit) * BigInt(gasPrice)), - }, - ]; - - const authInfoBytes = makeAuthInfoBytes( - [{ pubkey: pubKey, sequence: Number(sequence) }], - feeAmount, - gasLimit, - granter, - payer, - 712, - ); - - return authInfoBytes; - } - - private getBodyBytes(params: { typeUrl: string; msgBytes: Uint8Array }[]) { - const multiMsgBytes = params.map((tx) => { - return generateMsg(tx.typeUrl, tx.msgBytes); - }); - - const txBody = TxBody.fromPartial({ - messages: multiMsgBytes, - }); - const txBodyBytes = TxBody.encode(txBody).finish(); - return txBodyBytes; - } - - private getSignByPriKey( - eip712: ReturnType, - privateKey: SignOptions['privateKey'], - ) { - const pubKey = getPubKeyByPriKey(privateKey); - const signature = signTypedData({ - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - data: eip712, - version: SignTypedDataVersion.V4, - privateKey: Buffer.from(arrayify(privateKey)), - }); - - return { - pubKey, - signature, - }; - } - - private async getSignByWallet( - eip712: ReturnType, - address: string, - signTypedDataCallback: SignOptions['signTypedDataCallback'], - ) { - const signature = await signTypedDataCallback(address, JSON.stringify(eip712)); - const messageHash = eip712Hash(JSON.stringify(eip712)); - - const pk = recoverPk({ - signature, - messageHash, - }); - const pubKey = makeCosmsPubKey(pk); - - return { - pubKey, - signature, - }; - } } diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index ba6b90ed..883499f6 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -16,17 +16,22 @@ import { getListBucketsByIDsMetaInfo, parseListBucketsByIdsResponse, } from '@/clients/spclient/spApis/listBucketsByIds'; +import { + getListBucketByPaymentMetaInfo, + parseListBucketByPaymentResponse, +} from '@/clients/spclient/spApis/listBucketsByPayment'; import { parseError } from '@/clients/spclient/spApis/parseError'; import { getQueryBucketReadQuotaMetaInfo, parseReadQuotaResponse, } from '@/clients/spclient/spApis/queryBucketReadQuota'; +import { TxClient } from '@/clients/txClient'; import { METHOD_GET, NORMAL_ERROR_CODE } from '@/constants/http'; import { MsgCreateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCreateBucket'; import { MsgDeleteBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteBucket'; import { MsgMigrateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMigrateBucket'; import { MsgUpdateBucketInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; -import { +import type { GetBucketMetaRequest, GetBucketMetaResponse, GetUserBucketsRequest, @@ -40,11 +45,11 @@ import { MigrateBucketApprovalResponse, ReadQuotaRequest, SpResponse, -} from '@/types/sp'; -import { + ListBucketsByPaymentAccountRequest, CreateBucketApprovalRequest, CreateBucketApprovalResponse, -} from '@/types/sp/BucketApproval'; + ListBucketsByPaymentAccountResponse, +} from '../types/sp'; import { decodeObjectFromHexString } from '@/utils/encoding'; import { isValidAddress, isValidBucketName, isValidUrl } from '@/utils/s3'; import { UInt64Value } from '@bnb-chain/greenfield-cosmos-types/greenfield/common/wrapper'; @@ -86,7 +91,6 @@ import { } from '..'; import { RpcQueryClient } from '../clients/queryclient'; import { AuthType, SpClient } from '../clients/spclient/spClient'; -import { Basic } from './basic'; import { Sp } from './sp'; import { Storage } from './storage'; @@ -168,12 +172,19 @@ export interface IBucket { ): Promise>; listBucketsByIds(params: ListBucketsByIDsRequest): Promise>; + + /** + * ListBucketsByPaymentAccount list buckets by payment account + */ + listBucketsByPaymentAccount( + params: ListBucketsByPaymentAccountRequest, + ): Promise>; } @singleton() export class Bucket implements IBucket { constructor( - @inject(delay(() => Basic)) private basic: Basic, + @inject(delay(() => TxClient)) private txClient: TxClient, @inject(delay(() => Sp)) private sp: Sp, @inject(delay(() => Storage)) private storage: Storage, ) {} @@ -252,7 +263,7 @@ export class Bucket implements IBucket { } private async createBucketTx(msg: MsgCreateBucket, signedMsg: CreateBucketApprovalResponse) { - return await this.basic.tx( + return await this.txClient.tx( MsgCreateBucketTypeUrl, msg.creator, MsgCreateBucketSDKTypeEIP712, @@ -294,7 +305,7 @@ export class Bucket implements IBucket { } public async deleteBucket(msg: MsgDeleteBucket) { - return await this.basic.tx( + return await this.txClient.tx( MsgDeleteBucketTypeUrl, msg.operator, MsgDeleteBucketSDKTypeEIP712, @@ -451,7 +462,7 @@ export class Bucket implements IBucket { }), }; - return await this.basic.tx( + return await this.txClient.tx( MsgUpdateBucketInfoTypeUrl, msg.operator, MsgUpdateBucketInfoSDKTypeEIP712, @@ -569,7 +580,7 @@ export class Bucket implements IBucket { } private async migrateBucketTx(msg: MsgMigrateBucket, signedMsg: MigrateBucketApprovalResponse) { - return await this.basic.tx( + return await this.txClient.tx( MsgMigrateBucketTypeUrl, msg.operator, MsgMigrateBucketSDKTypeEIP712, @@ -705,4 +716,31 @@ export class Bucket implements IBucket { }; } } + + public async listBucketsByPaymentAccount(params: ListBucketsByPaymentAccountRequest) { + try { + const sp = await this.sp.getInServiceSP(); + const { url } = getListBucketByPaymentMetaInfo(sp.endpoint, params); + + const result = await this.spClient.callApi(url, { + headers: {}, + method: METHOD_GET, + }); + + const xmlData = await result.text(); + const res = parseListBucketByPaymentResponse(xmlData); + return { + code: 0, + message: 'Get bucket success.', + statusCode: result.status, + body: res, + }; + } catch (error: any) { + return { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; + } + } } diff --git a/packages/chain-sdk/src/api/challenge.ts b/packages/chain-sdk/src/api/challenge.ts index 72ffcfdd..9b687fca 100644 --- a/packages/chain-sdk/src/api/challenge.ts +++ b/packages/chain-sdk/src/api/challenge.ts @@ -1,3 +1,4 @@ +import { TxClient } from '@/clients/txClient'; import { MsgAttestSDKTypeEIP712 } from '@/messages/greenfield/chanenge/MsgAttest'; import { MsgSubmitSDKTypeEIP712 } from '@/messages/greenfield/chanenge/MsgSubmit'; import { @@ -8,7 +9,6 @@ import { import { MsgAttest, MsgSubmit } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/tx'; import { container, delay, inject, singleton } from 'tsyringe'; import { MsgAttestTypeUrl, MsgSubmitTypeUrl, TxResponse } from '..'; -import { Basic } from './basic'; import { RpcQueryClient } from '../clients/queryclient'; export interface IChallenge { @@ -37,10 +37,10 @@ export interface IChallenge { @singleton() export class Challenge implements IChallenge { private queryClient = container.resolve(RpcQueryClient); - constructor(@inject(delay(() => Basic)) private basic: Basic) {} + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} public async submitChallenge(address: string, msg: MsgSubmit) { - return await this.basic.tx( + return await this.txClient.tx( MsgSubmitTypeUrl, address, MsgSubmitSDKTypeEIP712, @@ -50,7 +50,7 @@ export class Challenge implements IChallenge { } public async attestChallenge(address: string, msg: MsgAttest) { - return await this.basic.tx( + return await this.txClient.tx( MsgAttestTypeUrl, address, MsgAttestSDKTypeEIP712, diff --git a/packages/chain-sdk/src/api/crosschain.ts b/packages/chain-sdk/src/api/crosschain.ts index f4929893..8178a42f 100644 --- a/packages/chain-sdk/src/api/crosschain.ts +++ b/packages/chain-sdk/src/api/crosschain.ts @@ -20,7 +20,7 @@ import { MsgMirrorGroup, MsgMirrorObject, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { container, singleton } from 'tsyringe'; +import { container, delay, inject, singleton } from 'tsyringe'; import { MsgClaimTypeUrl, MsgMirrorBucketTypeUrl, @@ -31,6 +31,7 @@ import { } from '..'; import { Basic } from './basic'; import { RpcQueryClient } from '../clients/queryclient'; +import { TxClient } from '@/clients/txClient'; export interface ICrossChain { /** @@ -84,11 +85,11 @@ export interface ICrossChain { @singleton() export class CrossChain implements ICrossChain { - private basic: Basic = container.resolve(Basic); + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); public async transferOut(msg: MsgTransferOut) { - return await this.basic.tx( + return await this.txClient.tx( MsgTransferOutTypeUrl, msg.from, MsgTransferOutSDKTypeEIP712, @@ -98,7 +99,7 @@ export class CrossChain implements ICrossChain { } public async claims(msg: MsgClaim) { - return await this.basic.tx( + return await this.txClient.tx( MsgClaimTypeUrl, msg.fromAddress, MsgClaimSDKTypeEIP712, @@ -128,7 +129,7 @@ export class CrossChain implements ICrossChain { } public async mirrorGroup(msg: MsgMirrorGroup) { - return await this.basic.tx( + return await this.txClient.tx( MsgMirrorGroupTypeUrl, msg.operator, MsgMirrorGroupSDKTypeEIP712, @@ -138,7 +139,7 @@ export class CrossChain implements ICrossChain { } public async mirrorBucket(msg: MsgMirrorBucket) { - return await this.basic.tx( + return await this.txClient.tx( MsgMirrorBucketTypeUrl, msg.operator, MsgMirrorBucketSDKTypeEIP712, @@ -148,7 +149,7 @@ export class CrossChain implements ICrossChain { } public async mirrorObject(msg: MsgMirrorObject) { - return await this.basic.tx( + return await this.txClient.tx( MsgMirrorObjectTypeUrl, msg.operator, MsgMirrorObjectSDKTypeEIP712, diff --git a/packages/chain-sdk/src/api/feegrant.ts b/packages/chain-sdk/src/api/feegrant.ts index f0833dfc..d0fafbe6 100644 --- a/packages/chain-sdk/src/api/feegrant.ts +++ b/packages/chain-sdk/src/api/feegrant.ts @@ -1,3 +1,4 @@ +import { TxClient } from '@/clients/txClient'; import { MsgGrantAllowanceSDKTypeEIP712 } from '@/messages/feegrant/MsgGrantAllowance'; import { MsgRevokeAllowanceSDKTypeEIP712 } from '@/messages/feegrant/MsgRevokeAllowance'; import { @@ -12,7 +13,7 @@ import { } from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/tx'; import { base64FromBytes } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { arrayify } from '@ethersproject/bytes'; -import { container, singleton } from 'tsyringe'; +import { container, delay, inject, singleton } from 'tsyringe'; import { encodeToHex, IGrantAllowance, @@ -24,7 +25,6 @@ import { newMsgGrantAllowance, TxResponse, } from '..'; -import { Basic } from './basic'; import { RpcQueryClient } from '../clients/queryclient'; export interface IFeeGrant { @@ -39,7 +39,7 @@ export interface IFeeGrant { @singleton() export class FeeGrant implements IFeeGrant { - private basic: Basic = container.resolve(Basic); + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); public async grantAllowance(params: IGrantAllowance) { @@ -50,7 +50,7 @@ export class FeeGrant implements IFeeGrant { const grantAllowance = newMsgGrantAllowance(grantee, granter, allowedMsgAllowance); const marshal = newMarshal(amount, denom, allowedMessages, expirationTime); - return await this.basic.tx( + return await this.txClient.tx( MsgGrantAllowanceTypeUrl, granter, MsgGrantAllowanceSDKTypeEIP712, @@ -66,7 +66,7 @@ export class FeeGrant implements IFeeGrant { } public async revokeAllowance(msg: MsgRevokeAllowance) { - return await this.basic.tx( + return await this.txClient.tx( MsgRevokeAllowanceTypeUrl, msg.granter, MsgRevokeAllowanceSDKTypeEIP712, diff --git a/packages/chain-sdk/src/api/group.ts b/packages/chain-sdk/src/api/group.ts index 8cd15168..4330ed42 100644 --- a/packages/chain-sdk/src/api/group.ts +++ b/packages/chain-sdk/src/api/group.ts @@ -1,3 +1,4 @@ +import { TxClient } from '@/clients/txClient'; import { MsgCreateGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCreateGroup'; import { MsgDeleteGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteGroup'; import { MsgLeaveGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgLeaveGroup'; @@ -32,7 +33,6 @@ import { MsgUpdateGroupMemberTypeUrl, TxResponse, } from '..'; -import { Basic } from './basic'; import { RpcQueryClient } from '../clients/queryclient'; import { Storage } from './storage'; @@ -101,14 +101,14 @@ export interface IGroup { @singleton() export class Group implements IGroup { constructor( - @inject(delay(() => Basic)) private basic: Basic, + @inject(delay(() => TxClient)) private txClient: TxClient, @inject(delay(() => Storage)) private storage: Storage, ) {} private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); public async createGroup(msg: MsgCreateGroup) { - return await this.basic.tx( + return await this.txClient.tx( MsgCreateGroupTypeUrl, msg.creator, MsgCreateGroupSDKTypeEIP712, @@ -118,7 +118,7 @@ export class Group implements IGroup { } public async deleteGroup(msg: MsgDeleteGroup) { - return await this.basic.tx( + return await this.txClient.tx( MsgDeleteGroupTypeUrl, msg.operator, MsgDeleteGroupSDKTypeEIP712, @@ -136,7 +136,7 @@ export class Group implements IGroup { throw new Error('no update member'); } - return await this.basic.tx( + return await this.txClient.tx( MsgUpdateGroupMemberTypeUrl, msg.operator, getMsgUpdateGroupMemberSDKTypeEIP712({ @@ -157,7 +157,7 @@ export class Group implements IGroup { } public async updateGroupExtra(msg: MsgUpdateGroupExtra) { - return await this.basic.tx( + return await this.txClient.tx( MsgUpdateGroupExtraTypeUrl, msg.operator, MsgUpdateGroupExtraSDKTypeEIP712, @@ -167,7 +167,7 @@ export class Group implements IGroup { } public async leaveGroup(address: string, msg: MsgLeaveGroup) { - return await this.basic.tx( + return await this.txClient.tx( MsgLeaveGroupTypeUrl, address, MsgLeaveGroupSDKTypeEIP712, diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 805fdd2e..8e6079a9 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -12,6 +12,7 @@ import { } from '@/clients/spclient/spApis/listObjectsByIds'; import { parseError } from '@/clients/spclient/spApis/parseError'; import { getPutObjectMetaInfo } from '@/clients/spclient/spApis/putObject'; +import { TxClient } from '@/clients/txClient'; import { METHOD_GET, NORMAL_ERROR_CODE } from '@/constants/http'; import { MsgCancelCreateObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCancelCreateObject'; import { MsgCreateObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCreateObject'; @@ -78,7 +79,6 @@ import { isValidObjectName, isValidUrl, } from '../utils/s3'; -import { Basic } from './basic'; import { Sp } from './sp'; import { Storage } from './storage'; @@ -168,7 +168,7 @@ export interface IObject { @singleton() export class Objectt implements IObject { constructor( - @inject(delay(() => Basic)) private basic: Basic, + @inject(delay(() => TxClient)) private txClient: TxClient, @inject(delay(() => Storage)) private storage: Storage, @inject(delay(() => Sp)) private sp: Sp, ) {} @@ -258,7 +258,7 @@ export class Objectt implements IObject { } private async createObjectTx(msg: MsgCreateObject, signedMsg: CreateObjectApprovalResponse) { - return await this.basic.tx( + return await this.txClient.tx( MsgCreateObjectTypeUrl, msg.creator, MsgCreateObjectSDKTypeEIP712, @@ -351,7 +351,7 @@ export class Objectt implements IObject { } public async cancelCreateObject(msg: MsgCancelCreateObject) { - return await this.basic.tx( + return await this.txClient.tx( MsgCancelCreateObjectTypeUrl, msg.operator, MsgCancelCreateObjectSDKTypeEIP712, @@ -361,7 +361,7 @@ export class Objectt implements IObject { } public async deleteObject(msg: MsgDeleteObject) { - return await this.basic.tx( + return await this.txClient.tx( MsgDeleteObjectTypeUrl, msg.operator, MsgDeleteObjectSDKTypeEIP712, @@ -371,7 +371,7 @@ export class Objectt implements IObject { } public async updateObjectInfo(msg: MsgUpdateObjectInfo) { - return await this.basic.tx( + return await this.txClient.tx( MsgUpdateObjectInfoTypeUrl, msg.operator, MsgUpdateObjectInfoSDKTypeEIP712, diff --git a/packages/chain-sdk/src/api/payment.ts b/packages/chain-sdk/src/api/payment.ts index 35104328..1e9c334a 100644 --- a/packages/chain-sdk/src/api/payment.ts +++ b/packages/chain-sdk/src/api/payment.ts @@ -1,39 +1,53 @@ +import { + getListUserPaymentAccountMetaInfo, + parseListUserPaymentAccountResponse, +} from '@/clients/spclient/spApis/listUserPaymentAccounts'; +import { AuthType, SpClient } from '@/clients/spclient/spClient'; +import { TxClient } from '@/clients/txClient'; import { MsgDepositSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgDeposit'; import { MsgDisableRefundSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgDisableRefund'; import { MsgWithdrawSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgWithdraw'; +import { ListUserPaymentAccountsResquest } from '../types/sp/ListUserPaymentAccounts'; import { QueryAutoSettleRecordsRequest, QueryAutoSettleRecordsResponse, - QueryPaymentAccountCountsRequest, - QueryPaymentAccountCountsResponse, - QueryPaymentAccountsRequest, - QueryPaymentAccountsResponse, - QueryStreamRecordsRequest, - QueryStreamRecordsResponse, QueryDynamicBalanceRequest, QueryDynamicBalanceResponse, + QueryGetStreamRecordResponse, + QueryOutFlowsRequest, + QueryOutFlowsResponse, + QueryParamsByTimestampRequest, + QueryParamsByTimestampResponse, + QueryParamsResponse, QueryPaymentAccountCountRequest, QueryPaymentAccountCountResponse, + QueryPaymentAccountCountsRequest, + QueryPaymentAccountCountsResponse, QueryPaymentAccountRequest, QueryPaymentAccountResponse, QueryPaymentAccountsByOwnerRequest, QueryPaymentAccountsByOwnerResponse, - QueryGetStreamRecordResponse, - QueryParamsByTimestampRequest, - QueryParamsByTimestampResponse, - QueryParamsResponse, - QueryOutFlowsRequest, - QueryOutFlowsResponse, + QueryPaymentAccountsRequest, + QueryPaymentAccountsResponse, + QueryStreamRecordsRequest, + QueryStreamRecordsResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; import { MsgDeposit, MsgDisableRefund, MsgWithdraw, } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/tx'; -import { container, singleton } from 'tsyringe'; -import { MsgDepositTypeUrl, MsgDisableRefundTypeUrl, MsgWithdrawTypeUrl, TxResponse } from '..'; -import { Basic } from './basic'; +import { container, delay, inject, singleton } from 'tsyringe'; +import { + METHOD_GET, + MsgDepositTypeUrl, + MsgDisableRefundTypeUrl, + MsgWithdrawTypeUrl, + NORMAL_ERROR_CODE, + TxResponse, +} from '..'; import { RpcQueryClient } from '../clients/queryclient'; +import { Sp } from './sp'; export interface IPayment { /** @@ -92,11 +106,20 @@ export interface IPayment { ): Promise; getOutFlows(request: QueryOutFlowsRequest): Promise; + + listUserPaymentAccounts( + params: ListUserPaymentAccountsResquest, + authType: AuthType, + ): Promise; } @singleton() export class Payment implements IPayment { - private basic: Basic = container.resolve(Basic); + constructor( + @inject(delay(() => TxClient)) private txClient: TxClient, + @inject(delay(() => Sp)) private sp: Sp, + ) {} + private spClient = container.resolve(SpClient); private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); public async getStreamRecord(account: string) { @@ -162,7 +185,7 @@ export class Payment implements IPayment { } public async deposit(msg: MsgDeposit) { - return await this.basic.tx( + return await this.txClient.tx( MsgDepositTypeUrl, msg.creator, MsgDepositSDKTypeEIP712, @@ -172,7 +195,7 @@ export class Payment implements IPayment { } public async withdraw(msg: MsgWithdraw) { - return await this.basic.tx( + return await this.txClient.tx( MsgWithdrawTypeUrl, msg.creator, MsgWithdrawSDKTypeEIP712, @@ -182,7 +205,7 @@ export class Payment implements IPayment { } public async disableRefund(msg: MsgDisableRefund) { - return await this.basic.tx( + return await this.txClient.tx( MsgDisableRefundTypeUrl, msg.owner, MsgDisableRefundSDKTypeEIP712, @@ -190,4 +213,41 @@ export class Payment implements IPayment { MsgDisableRefund.encode(msg).finish(), ); } + + public async listUserPaymentAccounts( + params: ListUserPaymentAccountsResquest, + authType: AuthType, + ) { + try { + const sp = await this.sp.getInServiceSP(); + + const { url, optionsWithOutHeaders, reqMeta } = getListUserPaymentAccountMetaInfo( + sp.endpoint, + params, + ); + + const signHeaders = await this.spClient.signHeaders(reqMeta, authType); + + const result = await this.spClient.callApi(url, { + ...optionsWithOutHeaders, + headers: signHeaders, + }); + + const xml = await result.text(); + const res = parseListUserPaymentAccountResponse(xml); + + return { + code: 0, + message: 'Get bucket success.', + statusCode: result.status, + body: res, + }; + } catch (error: any) { + return { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; + } + } } diff --git a/packages/chain-sdk/src/api/proposal.ts b/packages/chain-sdk/src/api/proposal.ts new file mode 100644 index 00000000..08a53998 --- /dev/null +++ b/packages/chain-sdk/src/api/proposal.ts @@ -0,0 +1,32 @@ +import { TxClient } from '@/clients/txClient'; +import { MsgVoteSDKTypeEIP712 } from '@/messages/cosmos/gov/MsgVote'; +import { voteOptionToJSON } from '@bnb-chain/greenfield-cosmos-types/cosmos/gov/v1/gov'; +import { MsgVote } from '@bnb-chain/greenfield-cosmos-types/cosmos/gov/v1/tx'; +import { delay, inject, singleton } from 'tsyringe'; +import { MsgVoteTypeUrl, TxResponse } from '..'; + +export interface IProposal { + /** + * NOTICE: only validator can use this api + */ + voteProposal(msg: MsgVote): Promise; +} + +@singleton() +export class Proposal implements IProposal { + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} + + public async voteProposal(msg: MsgVote) { + return await this.txClient.tx( + MsgVoteTypeUrl, + msg.voter, + MsgVoteSDKTypeEIP712, + { + ...MsgVote.toSDK(msg), + option: voteOptionToJSON(msg.option), + proposal_id: msg.proposalId.toNumber(), + }, + MsgVote.encode(msg).finish(), + ); + } +} diff --git a/packages/chain-sdk/src/api/storage.ts b/packages/chain-sdk/src/api/storage.ts index 6071c957..3b2e8b14 100644 --- a/packages/chain-sdk/src/api/storage.ts +++ b/packages/chain-sdk/src/api/storage.ts @@ -24,6 +24,7 @@ import { container, delay, inject, singleton } from 'tsyringe'; import { fromTimestamp, MsgDeletePolicyTypeUrl, MsgPutPolicyTypeUrl, TxResponse } from '..'; import { Basic } from './basic'; import { RpcQueryClient } from '../clients/queryclient'; +import { TxClient } from '@/clients/txClient'; export interface IStorage { params(): Promise; @@ -55,7 +56,7 @@ export interface IStorage { @singleton() export class Storage implements IStorage { - constructor(@inject(delay(() => Basic)) private basic: Basic) {} + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} private queryClient = container.resolve(RpcQueryClient); public async params() { @@ -65,7 +66,7 @@ export class Storage implements IStorage { public async putPolicy(msg: MsgPutPolicy) { const toSdk = MsgPutPolicy.toSDK(msg); - return await this.basic.tx( + return await this.txClient.tx( MsgPutPolicyTypeUrl, msg.operator, MsgPutPolicySDKTypeEIP712, @@ -83,7 +84,7 @@ export class Storage implements IStorage { } public async deletePolicy(msg: MsgDeletePolicy) { - return await this.basic.tx( + return await this.txClient.tx( MsgDeletePolicyTypeUrl, msg.operator, MsgDeletePolicySDKTypeEIP712, diff --git a/packages/chain-sdk/src/api/validator.ts b/packages/chain-sdk/src/api/validator.ts new file mode 100644 index 00000000..d4060268 --- /dev/null +++ b/packages/chain-sdk/src/api/validator.ts @@ -0,0 +1,57 @@ +import { RpcQueryClient } from '@/clients/queryclient'; +import { TxClient } from '@/clients/txClient'; +import { MsgEditValidatorSDKTypeEIP712 } from '@/messages/cosmos/staking/MsgEditValidator'; +import { + QueryValidatorsRequest, + QueryValidatorsResponse, +} from '@bnb-chain/greenfield-cosmos-types/cosmos/staking/v1beta1/query'; +import { MsgEditValidator } from '@bnb-chain/greenfield-cosmos-types/cosmos/staking/v1beta1/tx'; +import { container, delay, inject, singleton } from 'tsyringe'; +import { MsgEditValidatorTypeUrl, TxResponse } from '..'; + +export interface IValidator { + /** + * lists all validators (if status is empty string) or validators filtered by status. + * STATUS: + * "BOND_STATUS_UNBONDED", + * "BOND_STATUS_UNBONDING", + * "BOND_STATUS_BONDED", + */ + listValidators(request: QueryValidatorsRequest): Promise; + + /** + * NOTICE: only validator can use this api + */ + editValidator(address: string, msg: MsgEditValidator): Promise; +} + +@singleton() +export class Validator implements IValidator { + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} + private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); + + public async listValidators(request: QueryValidatorsRequest) { + const client = await this.queryClient.getStakingClient(); + return client.Validators(request); + } + + // public async createValidator(address: string, msg: MsgCreateValidator) { + // return await this.txClient.tx( + // MsgCreateValidatorTypeUrl, + // address, + // MsgCreateValidatorSDKTypeEIP712, + // MsgCreateValidator.toSDK(msg), + // MsgCreateValidator.encode(msg).finish(), + // ); + // } + + public async editValidator(address: string, msg: MsgEditValidator) { + return await this.txClient.tx( + MsgEditValidatorTypeUrl, + address, + MsgEditValidatorSDKTypeEIP712, + MsgEditValidator.toSDK(msg), + MsgEditValidator.encode(msg).finish(), + ); + } +} diff --git a/packages/chain-sdk/src/client.ts b/packages/chain-sdk/src/client.ts index 4803c1b4..cdb70cd7 100644 --- a/packages/chain-sdk/src/client.ts +++ b/packages/chain-sdk/src/client.ts @@ -17,6 +17,9 @@ import { Gashub, IGashub } from './api/gashub'; import { RpcQueryClient } from './clients/queryclient'; import { IVirtualGroup, VirtualGroup } from './api/virtualGroup'; import { ISpClient, SpClient } from './clients/spclient/spClient'; +import { Validator } from './api/validator'; +import { IProposal, Proposal } from './api/proposal'; +import { ITxClient, TxClient } from './clients/txClient'; @injectable() export class Client { @@ -51,11 +54,14 @@ export class Client { const group = container.resolve(Group); const objectt = container.resolve(Objectt); const payment = container.resolve(Payment); + const proposal = container.resolve(Proposal); const queryClient = container.resolve(RpcQueryClient); const sp = container.resolve(Sp); const spClient = container.resolve(SpClient); const storage = container.resolve(Storage); + const txClient = container.resolve(TxClient); const offchainauth = container.resolve(OffChainAuth); + const validator = container.resolve(Validator); const virtualGroup = container.resolve(VirtualGroup); return new Client( @@ -70,11 +76,14 @@ export class Client { group, objectt, payment, + proposal, queryClient, sp, spClient, storage, + txClient, offchainauth, + validator, virtualGroup, ); } @@ -91,11 +100,14 @@ export class Client { public group: IGroup, public object: IObject, public payment: IPayment, + public proposal: IProposal, public queryClient: RpcQueryClient, public sp: ISp, public spClient: ISpClient, public storage: IStorage, + public txClient: ITxClient, public offchainauth: IOffChainAuth, + public validator: Validator, public virtualGroup: IVirtualGroup, ) {} } diff --git a/packages/chain-sdk/src/clients/queryclient.ts b/packages/chain-sdk/src/clients/queryclient.ts index f8c2049b..46272e58 100644 --- a/packages/chain-sdk/src/clients/queryclient.ts +++ b/packages/chain-sdk/src/clients/queryclient.ts @@ -5,6 +5,7 @@ import { MsgClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/distrib import { QueryClientImpl as FeeGrantQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/query'; import { QueryClientImpl as GashubClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/gashub/v1beta1/query'; import { QueryClientImpl as OracleQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/oracle/v1/query'; +import { QueryClientImpl as StakingQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/staking/v1beta1/query'; import { QueryClientImpl as BridgeQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/bridge/query'; import { QueryClientImpl as ChallengeQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/query'; import { QueryClientImpl as PaymentQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; @@ -131,6 +132,11 @@ export class RpcQueryClient { const rpcClient = await this.getRpcClient(); return new VirtualGroupClientImpl(rpcClient); } + + public async getStakingClient() { + const rpcClient = await this.getRpcClient(); + return new StakingQueryClientImpl(rpcClient); + } } export const makeClientWithExtension = async ( diff --git a/packages/chain-sdk/src/clients/spclient/auth.ts b/packages/chain-sdk/src/clients/spclient/auth.ts index 28413216..9fea4cd2 100644 --- a/packages/chain-sdk/src/clients/spclient/auth.ts +++ b/packages/chain-sdk/src/clients/spclient/auth.ts @@ -49,7 +49,6 @@ export const getAuthorization = async ( ) => { const canonicalHeaders = getCanonicalHeaders(reqMeta, reqHeaders); const signedHeaders = getSignedHeaders(reqHeaders); - const canonicalRequestArr = [ reqMeta.method, reqMeta.url?.path, @@ -92,6 +91,10 @@ export const newRequestHeadersByMeta = (meta: Partial) => { headers.set(HTTPHeaderUnsignedMsg.toLocaleLowerCase(), meta.unsignMsg); } + if (meta.userAddress) { + headers.set(HTTPHeaderUserAddress, meta.userAddress); + } + const date = new Date(); if (meta.date) { headers.set(HTTPHeaderDate.toLocaleLowerCase(), formatDate(meta.date)); @@ -128,7 +131,7 @@ export const HTTPHeaderContentType = 'Content-Type'; export const HTTPHeaderContentMD5 = 'Content-MD5'; export const HTTPHeaderUnsignedMsg = 'X-Gnfd-Unsigned-Msg'; export const HTTPHeaderUserAddress = 'X-Gnfd-User-Address'; -// const HTTPHeaderAppDomain = 'X-Gnfd-App-Domain'; +export const HTTPHeaderAppDomain = 'X-Gnfd-App-Domain'; const SUPPORTED_HEADERS = [ HTTPHeaderContentSHA256.toLocaleLowerCase(), diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts b/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts new file mode 100644 index 00000000..ba971dff --- /dev/null +++ b/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts @@ -0,0 +1,57 @@ +import { convertStrToBool, formatBucketInfo } from '@/types/sp/Common'; +import { + ListBucketsByPaymentAccountRequest, + ListBucketsByPaymentAccountResponse, +} from '@/types/sp/ListBucketsByPaymentAccount'; +import { XMLParser } from 'fast-xml-parser'; +import { getSortQueryParams } from '../auth'; + +export const getListBucketByPaymentMetaInfo = ( + endpoint: string, + params: ListBucketsByPaymentAccountRequest, +) => { + const path = '/'; + const queryMap = { + 'payment-buckets': 'null', + 'payment-account': params.paymentAccount, + }; + + let url = new URL(path, endpoint); + url = getSortQueryParams(url, queryMap); + + return { + url: url.href, + }; +}; + +export const parseListBucketByPaymentResponse = (data: string) => { + const xmlParser = new XMLParser({ + parseTagValue: false, + }); + const res = xmlParser.parse(data) as ListBucketsByPaymentAccountResponse; + + let Buckets = res.GfSpListPaymentAccountStreamsResponse.Buckets || []; + if (Buckets) { + if (!Array.isArray(Buckets)) { + Buckets = [Buckets]; + } + + Buckets = Buckets.map((item) => { + return { + ...item, + BucketInfo: formatBucketInfo(item.BucketInfo), + // @ts-ignore + Removed: convertStrToBool(item.Removed), + DeleteAt: Number(item.DeleteAt), + UpdateAt: Number(item.UpdateAt), + UpdateTime: Number(item.UpdateTime), + }; + }); + } + + res.GfSpListPaymentAccountStreamsResponse = { + Buckets, + }; + + return res; +}; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listUserPaymentAccounts.ts b/packages/chain-sdk/src/clients/spclient/spApis/listUserPaymentAccounts.ts new file mode 100644 index 00000000..7bfaa840 --- /dev/null +++ b/packages/chain-sdk/src/clients/spclient/spApis/listUserPaymentAccounts.ts @@ -0,0 +1,61 @@ +import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; +import { ReqMeta } from '@/types'; +import { + ListUserPaymentAccountsResponse, + ListUserPaymentAccountsResquest, +} from '@/types/sp/ListUserPaymentAccounts'; +import { XMLParser } from 'fast-xml-parser'; +import { getSortQuery, getSortQueryParams } from '../auth'; + +export const getListUserPaymentAccountMetaInfo = ( + endpoint: string, + params: ListUserPaymentAccountsResquest, +) => { + const path = '/'; + const queryMap = { + 'user-payments': 'null', + }; + const query = getSortQuery(queryMap); + let url = new URL(path, endpoint); + url = getSortQueryParams(url, queryMap); + + const reqMeta: Partial = { + contentSHA256: EMPTY_STRING_SHA256, + method: METHOD_GET, + url: { + hostname: new URL(url).hostname, + query, + path, + }, + userAddress: params.account, + }; + + const optionsWithOutHeaders: Omit = { + method: METHOD_GET, + }; + + return { + url: url.href, + optionsWithOutHeaders, + reqMeta, + }; +}; + +export const parseListUserPaymentAccountResponse = (data: string) => { + const xmlParser = new XMLParser({ + parseTagValue: false, + }); + const res = xmlParser.parse(data) as ListUserPaymentAccountsResponse; + + let StreamRecords = res.GfSpListUserPaymentAccountsResponse.StreamRecords || []; + + if (StreamRecords) { + if (!Array.isArray(StreamRecords)) { + StreamRecords = [StreamRecords]; + } + } + + res.GfSpListUserPaymentAccountsResponse.StreamRecords = StreamRecords; + + return res; +}; diff --git a/packages/chain-sdk/src/clients/spclient/spClient.ts b/packages/chain-sdk/src/clients/spclient/spClient.ts index 40bbdabd..d376cadf 100644 --- a/packages/chain-sdk/src/clients/spclient/spClient.ts +++ b/packages/chain-sdk/src/clients/spclient/spClient.ts @@ -1,6 +1,8 @@ import { getAuthorization, + HTTPHeaderAppDomain, HTTPHeaderAuthorization, + HTTPHeaderUserAddress, newRequestHeadersByMeta, } from '@/clients/spclient/auth'; import { parseError } from '@/clients/spclient/spApis/parseError'; @@ -28,8 +30,6 @@ export type EDDSA = { }; export type AuthType = ECDSA | EDDSA; -export type ApiResult = T extends true ? U : RequestInit; - export interface ISpClient { callApi( url: string, @@ -99,10 +99,11 @@ export class SpClient implements ISpClient { public async signHeaders(reqMeta: Partial, authType: AuthType) { const metaHeaders: Headers = newRequestHeadersByMeta(reqMeta); + if (authType.type === 'EDDSA') { const { domain, address } = authType; - metaHeaders.append('X-Gnfd-User-Address', address); - metaHeaders.append('X-Gnfd-App-Domain', domain); + metaHeaders.set(HTTPHeaderUserAddress, address); + metaHeaders.set(HTTPHeaderAppDomain, domain); } const auth = await getAuthorization(reqMeta, metaHeaders, authType); diff --git a/packages/chain-sdk/src/clients/txClient.ts b/packages/chain-sdk/src/clients/txClient.ts new file mode 100644 index 00000000..b01b4a9b --- /dev/null +++ b/packages/chain-sdk/src/clients/txClient.ts @@ -0,0 +1,314 @@ +import { Account } from '@/api/account'; +import { getPubKeyByPriKey } from '@/keymanage'; +import { defaultSignTypedData } from '@/sign/signTx'; +import { getGasFeeBySimulate } from '@/utils/units'; +import { BaseAccount } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/auth'; +import { Coin } from '@bnb-chain/greenfield-cosmos-types/cosmos/base/v1beta1/coin'; +import { + ServiceClientImpl, + SimulateRequest, +} from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/service'; +import { + AuthInfo, + Tx, + TxBody, + TxRaw, +} from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/tx'; +import { makeAuthInfoBytes } from '@cosmjs/proto-signing'; +import { DeliverTxResponse, StargateClient } from '@cosmjs/stargate'; +import { Tendermint37Client } from '@cosmjs/tendermint-rpc'; +import { arrayify } from '@ethersproject/bytes'; +import { signTypedData, SignTypedDataVersion } from '@metamask/eth-sig-util'; +import { container, inject, singleton } from 'tsyringe'; +import { + BroadcastOptions, + ISimulateGasFee, + MetaTxInfo, + SignOptions, + SimulateOptions, + TxResponse, +} from '..'; +import { RpcQueryClient } from '../clients/queryclient'; +import { DEFAULT_DENOM, ZERO_PUBKEY } from '../constants'; +import { + createEIP712, + generateFee, + generateMessage, + generateTypes, + mergeMultiEip712, + mergeMultiMessage, +} from '../messages'; +import { generateMsg } from '../messages/utils'; +import { eip712Hash, makeCosmsPubKey, recoverPk } from '../sign'; + +export interface ITxClient { + /** + * simulates a transaction containing the provided messages on the chain. + The function returns a pointer to a ISimulateGasFee + */ + simulateRawTx( + txBodyBytes: Uint8Array, + accountInfo: BaseAccount, + txOption: SimulateOptions, + ): Promise; + + /** + * broadcasts a transaction containing the provided messages to the chain. + The function returns a pointer to a BroadcastTxResponse and any error that occurred during the operation. + */ + broadcastRawTx(txRawBytes: Uint8Array): Promise; + + tx( + typeUrl: MetaTxInfo['typeUrl'], + address: MetaTxInfo['address'], + MsgSDKTypeEIP712: MetaTxInfo['MsgSDKTypeEIP712'], + MsgSDK: MetaTxInfo['MsgSDK'], + msgBytes: MetaTxInfo['msgBytes'], + ): Promise; + + /** + * + */ + multiTx(txResList: Pick[]): Promise>; +} + +@singleton() +export class TxClient implements ITxClient { + public rpcUrl: string; + public chainId: string; + constructor(@inject('RPC_URL') rpcUrl: string, @inject('CHAIN_ID') chainId: string) { + this.rpcUrl = rpcUrl; + this.chainId = chainId; + } + + private account: Account = container.resolve(Account); + private rpcQueryClient = container.resolve(RpcQueryClient); + + public async tx( + typeUrl: MetaTxInfo['typeUrl'], + address: MetaTxInfo['address'], + MsgSDKTypeEIP712: MetaTxInfo['MsgSDKTypeEIP712'], + MsgSDK: MetaTxInfo['MsgSDK'], + msgBytes: MetaTxInfo['msgBytes'], + ) { + const txBodyBytes = this.getBodyBytes([ + { + typeUrl, + msgBytes, + }, + ]); + + const tx = await this.multiTx([ + { + metaTxInfo: { + typeUrl, + address, + MsgSDKTypeEIP712, + MsgSDK, + msgBytes, + bodyBytes: txBodyBytes, + }, + }, + ]); + + return { + simulate: tx.simulate, + broadcast: tx.broadcast, + metaTxInfo: { + typeUrl, + address, + MsgSDKTypeEIP712, + MsgSDK, + msgBytes, + bodyBytes: txBodyBytes, + }, + }; + } + + private getBodyBytes(params: { typeUrl: string; msgBytes: Uint8Array }[]) { + const multiMsgBytes = params.map((tx) => { + return generateMsg(tx.typeUrl, tx.msgBytes); + }); + + const txBody = TxBody.fromPartial({ + messages: multiMsgBytes, + }); + const txBodyBytes = TxBody.encode(txBody).finish(); + return txBodyBytes; + } + + private getSignByPriKey( + eip712: ReturnType, + privateKey: SignOptions['privateKey'], + ) { + const pubKey = getPubKeyByPriKey(privateKey); + const signature = signTypedData({ + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + data: eip712, + version: SignTypedDataVersion.V4, + privateKey: Buffer.from(arrayify(privateKey)), + }); + + return { + pubKey, + signature, + }; + } + + private async getSignByWallet( + eip712: ReturnType, + address: string, + signTypedDataCallback: SignOptions['signTypedDataCallback'], + ) { + const signature = await signTypedDataCallback(address, JSON.stringify(eip712)); + const messageHash = eip712Hash(JSON.stringify(eip712)); + + const pk = recoverPk({ + signature, + messageHash, + }); + const pubKey = makeCosmsPubKey(pk); + + return { + pubKey, + signature, + }; + } + + private getAuthInfoBytes( + params: Pick & { + pubKey: BaseAccount['pubKey']; + sequence: string; + }, + ) { + const { pubKey, denom = DEFAULT_DENOM, sequence, gasLimit, gasPrice, granter, payer } = params; + if (!pubKey) throw new Error('pubKey is required'); + + const feeAmount: Coin[] = [ + { + denom, + amount: String(BigInt(gasLimit) * BigInt(gasPrice)), + }, + ]; + + const authInfoBytes = makeAuthInfoBytes( + [{ pubkey: pubKey, sequence: Number(sequence) }], + feeAmount, + gasLimit, + granter, + payer, + 712, + ); + + return authInfoBytes; + } + + public async simulateRawTx( + txBodyBytes: Uint8Array, + accountInfo: BaseAccount, + options: SimulateOptions, + ) { + const rpcClient = await this.rpcQueryClient.getRpcClient(); + const rpc = new ServiceClientImpl(rpcClient); + + const { denom } = options; + const authInfoBytes = this.getAuthInfoBytes({ + sequence: accountInfo.sequence + '', + denom, + gasLimit: 0, + gasPrice: '0', + pubKey: makeCosmsPubKey(ZERO_PUBKEY), + granter: '', + payer: '', + }); + const tx = Tx.fromPartial({ + authInfo: AuthInfo.decode(authInfoBytes), + body: TxBody.decode(txBodyBytes), + signatures: [Uint8Array.from([])], + }); + + const request = SimulateRequest.fromPartial({ + txBytes: Tx.encode(tx).finish(), + }); + + const res = await rpc.Simulate(request); + return getGasFeeBySimulate(res, denom); + } + + public async broadcastRawTx(txRawBytes: Uint8Array) { + const tmClient = await Tendermint37Client.connect(this.rpcUrl); + + const client = await StargateClient.create(tmClient); + return await client.broadcastTx(txRawBytes); + } + + public async multiTx(txResList: Pick[]) { + const txs = txResList.map((txRes) => txRes.metaTxInfo); + const accountInfo = await this.account.getAccount(txs[0].address); + const txBodyBytes = this.getBodyBytes(txs); + + return { + simulate: async (opts: SimulateOptions) => { + return await this.simulateRawTx(txBodyBytes, accountInfo, opts); + }, + broadcast: async (opts: BroadcastOptions) => { + const { + denom, + gasLimit, + gasPrice, + payer, + granter, + privateKey, + signTypedDataCallback = defaultSignTypedData, + } = opts; + + const types = mergeMultiEip712(txs.map((tx) => tx.MsgSDKTypeEIP712)); + const fee = generateFee( + String(BigInt(gasLimit) * BigInt(gasPrice)), + denom, + String(gasLimit), + payer, + granter, + ); + const wrapperTypes = generateTypes(types); + const multiMessages = mergeMultiMessage(txs); + const messages = generateMessage( + accountInfo.accountNumber.toString(), + accountInfo.sequence.toString(), + this.chainId, + '', + fee, + multiMessages, + '0', + ); + + const eip712 = createEIP712(wrapperTypes, this.chainId, messages); + // console.log('eip712', eip712); + const { pubKey, signature } = privateKey + ? this.getSignByPriKey(eip712, privateKey) + : await this.getSignByWallet(eip712, accountInfo.address, signTypedDataCallback); + + const authInfoBytes = this.getAuthInfoBytes({ + denom, + sequence: accountInfo.sequence + '', + gasLimit, + gasPrice, + pubKey, + granter, + payer, + }); + + const txRaw = TxRaw.fromPartial({ + bodyBytes: txBodyBytes, + authInfoBytes, + signatures: [arrayify(signature)], + }); + const txBytes = TxRaw.encode(txRaw).finish(); + + // console.log('txBytes', hexlify(txBytes)); + return await this.broadcastRawTx(txBytes); + }, + }; + } +} diff --git a/packages/chain-sdk/src/constants/typeUrl.ts b/packages/chain-sdk/src/constants/typeUrl.ts index b7b52313..3487c018 100644 --- a/packages/chain-sdk/src/constants/typeUrl.ts +++ b/packages/chain-sdk/src/constants/typeUrl.ts @@ -30,3 +30,6 @@ export const MsgUpdateGroupMemberTypeUrl = '/greenfield.storage.MsgUpdateGroupMe export const MsgUpdateObjectInfoTypeUrl = '/greenfield.storage.MsgUpdateObjectInfo'; export const BasicAllowanceTypeUrl = '/cosmos.feegrant.v1beta1.BasicAllowance'; export const AllowedMsgAllowanceTypeUrl = '/cosmos.feegrant.v1beta1.AllowedMsgAllowance'; +export const MsgEditValidatorTypeUrl = '/cosmos.staking.v1beta1.MsgEditValidator'; +export const MsgCreateValidatorTypeUrl = '/cosmos.staking.v1beta1.MsgCreateValidator'; +export const MsgVoteTypeUrl = '/cosmos.gov.v1.MsgVote'; diff --git a/packages/chain-sdk/src/messages/cosmos/gov/MsgVote.ts b/packages/chain-sdk/src/messages/cosmos/gov/MsgVote.ts new file mode 100644 index 00000000..11d4c847 --- /dev/null +++ b/packages/chain-sdk/src/messages/cosmos/gov/MsgVote.ts @@ -0,0 +1,24 @@ +export const MsgVoteSDKTypeEIP712 = { + Msg1: [ + { + name: 'metadata', + type: 'string', + }, + { + name: 'option', + type: 'string', + }, + { + name: 'proposal_id', + type: 'uint64', + }, + { + name: 'type', + type: 'string', + }, + { + name: 'voter', + type: 'string', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/cosmos/staking/MsgCreateValidator.ts b/packages/chain-sdk/src/messages/cosmos/staking/MsgCreateValidator.ts new file mode 100644 index 00000000..15cf5994 --- /dev/null +++ b/packages/chain-sdk/src/messages/cosmos/staking/MsgCreateValidator.ts @@ -0,0 +1,112 @@ +export const MsgCreateValidatorSDKTypeEIP712 = { + Msg1: [ + { + name: 'bls_key', + type: 'string', + }, + { + name: 'bls_proof', + type: 'string', + }, + { + name: 'challenger_address', + type: 'string', + }, + { + name: 'commission', + type: 'TypeMsg1Commission', + }, + { + name: 'delegator_address', + type: 'string', + }, + { + name: 'description', + type: 'TypeMsg1Description', + }, + { + name: 'from', + type: 'string', + }, + { + name: 'min_self_delegation', + type: 'string', + }, + { + name: 'pubkey', + type: 'TypeAny', + }, + { + name: 'relayer_address', + type: 'string', + }, + { + name: 'type', + type: 'string', + }, + { + name: 'validator_address', + type: 'string', + }, + { + name: 'value', + type: 'TypeMsg1Value', + }, + ], + TypeMsg1Commission: [ + { + name: 'max_change_rate', + type: 'string', + }, + { + name: 'max_rate', + type: 'string', + }, + { + name: 'rate', + type: 'string', + }, + ], + TypeMsg1Description: [ + { + name: 'details', + type: 'string', + }, + { + name: 'identity', + type: 'string', + }, + { + name: 'moniker', + type: 'string', + }, + { + name: 'security_contact', + type: 'string', + }, + { + name: 'website', + type: 'string', + }, + ], + TypeMsg1Value: [ + { + name: 'amount', + type: 'string', + }, + { + name: 'denom', + type: 'string', + }, + ], + TypeAny: [ + { + name: 'type', + type: 'string', + }, + { + name: 'value', + type: 'bytes', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/cosmos/staking/MsgEditValidator.ts b/packages/chain-sdk/src/messages/cosmos/staking/MsgEditValidator.ts new file mode 100644 index 00000000..1a523039 --- /dev/null +++ b/packages/chain-sdk/src/messages/cosmos/staking/MsgEditValidator.ts @@ -0,0 +1,62 @@ +export const MsgEditValidatorSDKTypeEIP712 = { + Msg1: [ + { + name: 'bls_key', + type: 'string', + }, + { + name: 'bls_proof', + type: 'string', + }, + { + name: 'challenger_address', + type: 'string', + }, + { + name: 'commission_rate', + type: 'string', + }, + { + name: 'description', + type: 'TypeMsg1Description', + }, + { + name: 'min_self_delegation', + type: 'string', + }, + { + name: 'relayer_address', + type: 'string', + }, + { + name: 'type', + type: 'string', + }, + { + name: 'validator_address', + type: 'string', + }, + ], + TypeMsg1Description: [ + { + name: 'details', + type: 'string', + }, + { + name: 'identity', + type: 'string', + }, + { + name: 'moniker', + type: 'string', + }, + { + name: 'security_contact', + type: 'string', + }, + { + name: 'website', + type: 'string', + }, + ], +}; diff --git a/packages/chain-sdk/src/types/auth.ts b/packages/chain-sdk/src/types/auth.ts index 5e396e5d..a577d7c9 100644 --- a/packages/chain-sdk/src/types/auth.ts +++ b/packages/chain-sdk/src/types/auth.ts @@ -13,4 +13,5 @@ export interface ReqMeta { contentSHA256: string; unsignMsg: string; txnHash: string; + userAddress: string; } diff --git a/packages/chain-sdk/src/types/sp/ListBucketsByPaymentAccount.ts b/packages/chain-sdk/src/types/sp/ListBucketsByPaymentAccount.ts new file mode 100644 index 00000000..38379dcd --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ListBucketsByPaymentAccount.ts @@ -0,0 +1,14 @@ +import { BucketMeta } from './Common'; + +export type ListBucketsByPaymentAccountRequest = { + paymentAccount: string; + endpoint?: string; +}; + +export interface ListBucketsByPaymentAccountResponse { + GfSpListPaymentAccountStreamsResponse: GfSPListPaymentAccountStreamsResponse; +} + +export interface GfSPListPaymentAccountStreamsResponse { + Buckets: BucketMeta[]; +} diff --git a/packages/chain-sdk/src/types/sp/ListUserPaymentAccounts.ts b/packages/chain-sdk/src/types/sp/ListUserPaymentAccounts.ts new file mode 100644 index 00000000..7a82184d --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ListUserPaymentAccounts.ts @@ -0,0 +1,18 @@ +import { StreamRecord } from './Common'; + +export type ListUserPaymentAccountsResquest = { + account: string; +}; + +export type ListUserPaymentAccountsResponse = { + GfSpListUserPaymentAccountsResponse: GfSPListUserPaymentAccountsResponse; +}; + +export interface GfSPListUserPaymentAccountsResponse { + StreamRecords: StreamRecords[]; +} + +export interface StreamRecords { + StreamRecord: StreamRecord; + Refundable: string; +} diff --git a/packages/chain-sdk/src/types/sp/index.ts b/packages/chain-sdk/src/types/sp/index.ts index 2045f20c..3d94f53b 100644 --- a/packages/chain-sdk/src/types/sp/index.ts +++ b/packages/chain-sdk/src/types/sp/index.ts @@ -7,16 +7,17 @@ export * from './GetPreviewObject'; export * from './GetUserBuckets'; export * from './ListBucketReadRecord'; export * from './ListBucketsByIDs'; +export * from './ListBucketsByPaymentAccount'; export * from './ListGroups'; export * from './ListGroupsMembers'; export * from './ListObjectsByBucketName'; export * from './ListObjectsByIDs'; export * from './ListUserGroups'; export * from './ListUserOwnedGroups'; +export * from './MigrateBucket'; export * from './ObjectApproval'; export * from './PutObject'; export * from './ReadQuota'; export * from './RequestNonce'; export * from './SuccessResponse'; export * from './VerifyPermission'; -export * from './MigrateBucket'; From c502902c915288c86daaa1644368c20edc8f7f54 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 7 Sep 2023 19:03:44 +0800 Subject: [PATCH 213/433] chore: [ci] release (alpha) (#311) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 7 ++++++- examples/nextjs/CHANGELOG.md | 12 ++++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 12 ++++++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 24 ++++++++++++++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 57 insertions(+), 4 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 36b2714d..6c6f658e 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -10,8 +10,13 @@ }, "changesets": [ "giant-bikes-grab", + "heavy-seas-talk", "itchy-ducks-chew", "perfect-starfishes-watch", - "short-moons-pretend" + "short-moons-pretend", + "soft-doors-perform", + "spicy-jokes-wave", + "stale-beans-jog", + "stupid-dodos-fold" ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 4cabe7cb..feb35a75 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,17 @@ # @demo/wallet +## 0.0.6-alpha.2 + +### Patch Changes + +- Updated dependencies + [[`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.2 + ## 0.0.6-alpha.1 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 67723575..dbcfe940 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.6-alpha.1", + "version": "0.0.6-alpha.2", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 2b9e9ac9..959abbce 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,17 @@ # @demo/nodejs +## 0.0.9-alpha.2 + +### Patch Changes + +- Updated dependencies + [[`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.2 + ## 0.0.9-alpha.1 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index d1c165a6..387bb54c 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.9-alpha.1", + "version": "0.0.9-alpha.2", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index ba6515ce..39e88602 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,29 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.5-alpha.2 + +### Patch Changes + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Validator API - editValidator + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Proposal vote api + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - feat: ListUserPaymentAccount api + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Bucket listBucketsByPaymentAccount api + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: basic.multi -> txClient.multi + ## 0.2.5-alpha.1 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index ce3395be..62c089b9 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.5-alpha.1", + "version": "0.2.5-alpha.2", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From c160b3440978007aa0c314bb9bf338169e7ea763 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Fri, 8 Sep 2023 15:08:02 +0800 Subject: [PATCH 214/433] chore: Nodejs example update --- examples/nodejs/README.md | 2 +- examples/nodejs/client.js | 65 ++++++++++++++++++++++++++++++++++++++ examples/nodejs/index.js | 43 ------------------------- examples/nodejs/storage.js | 45 ++++++++++++++++++++++++++ 4 files changed, 111 insertions(+), 44 deletions(-) create mode 100644 examples/nodejs/client.js delete mode 100644 examples/nodejs/index.js create mode 100644 examples/nodejs/storage.js diff --git a/examples/nodejs/README.md b/examples/nodejs/README.md index af6b289e..6cad9c0f 100644 --- a/examples/nodejs/README.md +++ b/examples/nodejs/README.md @@ -1,3 +1,3 @@ # GreenField JS SDK Node.js -> Only supprt query up to now. +* [storage](./storage.js) diff --git a/examples/nodejs/client.js b/examples/nodejs/client.js new file mode 100644 index 00000000..af7da41d --- /dev/null +++ b/examples/nodejs/client.js @@ -0,0 +1,65 @@ +const { Client } = require('@bnb-chain/greenfield-js-sdk'); + +const client = Client.create('https://gnfd-testnet-fullnode-tendermint-ap.bnbchain.org', '5600'); + +const ACCOUNT_ADDRESS = ''; +const ACCOUNT_PRIVATEKEY = ''; + +const getSps = async () => { + const sps = await client.sp.getStorageProviders(); + const finalSps = (sps ?? []).filter((v) => v.endpoint.includes('https')); + + return finalSps; +}; + +const getAllSps = async () => { + const sps = await getSps(); + + return sps.map((sp) => { + return { + address: sp.operatorAddress, + endpoint: sp.endpoint, + name: sp.description?.moniker, + }; + }); +}; + +const selectSp = async () => { + const finalSps = await getSps(); + + const selectIndex = Math.floor(Math.random() * finalSps.length); + + const secondarySpAddresses = [ + ...finalSps.slice(0, selectIndex), + ...finalSps.slice(selectIndex + 1), + ].map((item) => item.operatorAddress); + const selectSpInfo = { + id: finalSps[selectIndex].id, + endpoint: finalSps[selectIndex].endpoint, + primarySpAddress: finalSps[selectIndex]?.operatorAddress, + sealAddress: finalSps[selectIndex].sealAddress, + secondarySpAddresses, + }; + + return selectSpInfo; +}; + +const generateString = (length) => { + const characters = 'abcdefghijklmnopqrstuvwxyz'; + + let result = ''; + const charactersLength = characters.length; + for (let i = 0; i < length; i++) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + } + + return result; +}; + +module.exports = { + client, + ACCOUNT_ADDRESS, + ACCOUNT_PRIVATEKEY, + selectSp, + generateString, +}; diff --git a/examples/nodejs/index.js b/examples/nodejs/index.js deleted file mode 100644 index 32390f6f..00000000 --- a/examples/nodejs/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { Client } = require('@bnb-chain/greenfield-js-sdk'); -// const { getCheckSums } = require('@bnb-chain/greenfiled-file-handle/files'); -// const fs = require('fs'); - -// const client = Client.create('https://gnfd-dev.qa.bnbchain.world', '8981'); - -const client = Client.create('https://gnfd.qa.bnbchain.world', '9000'); - -(async () => { - const createBucketTx = await client.bucket.createBucket({ - bucketName: 'foo', - creator: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', - visibility: 'VISIBILITY_TYPE_PUBLIC_READ', - chargedReadQuota: '0', - spInfo: { - primarySpAddress: '0x66d06FFe266B46C6F0730cC9Ec2fc5B811cdA085', - }, - signType: 'authTypeV1', - privateKey: '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032', - // signType: 'offChainAuth', - // domain: window.location.origin, - // seedString: offChainData.seedString, - }); - - const simulateInfo = await createBucketTx.simulate({ - denom: 'BNB', - }); - - console.log('simulateInfo', simulateInfo); - - const res = await createBucketTx.broadcast({ - denom: 'BNB', - gasLimit: Number(simulateInfo?.gasLimit), - gasPrice: simulateInfo?.gasPrice || '5000000000', - payer: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', - granter: '', - privateKey: '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032', - }); - - if (res.code === 0) { - console.log('success'); - } -})(); diff --git a/examples/nodejs/storage.js b/examples/nodejs/storage.js new file mode 100644 index 00000000..ec2e88e8 --- /dev/null +++ b/examples/nodejs/storage.js @@ -0,0 +1,45 @@ +const { + client, + selectSp, + ACCOUNT_ADDRESS, + ACCOUNT_PRIVATEKEY, + generateString, +} = require('./client'); + +(async () => { + const bucketName = generateString(10); + const spInfo = await selectSp(); + const createBucketTx = await client.bucket.createBucket( + { + bucketName: bucketName, + creator: ACCOUNT_ADDRESS, + visibility: 'VISIBILITY_TYPE_PUBLIC_READ', + chargedReadQuota: '0', + spInfo: { + primarySpAddress: spInfo.primarySpAddress, + }, + paymentAddress: ACCOUNT_ADDRESS, + }, + { + type: 'ECDSA', + privateKey: ACCOUNT_PRIVATEKEY, + }, + ); + + const simulateInfo = await createBucketTx.simulate({ + denom: 'BNB', + }); + + console.log('simulateInfo', simulateInfo); + + const res = await createBucketTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo?.gasLimit), + gasPrice: simulateInfo?.gasPrice || '5000000000', + payer: ACCOUNT_ADDRESS, + granter: '', + privateKey: ACCOUNT_PRIVATEKEY, + }); + + console.log('res', res); +})(); From fb97ef149dc67929bf33f424bc1ac4cb566874f0 Mon Sep 17 00:00:00 2001 From: rrr523 Date: Fri, 8 Sep 2023 15:44:36 +0800 Subject: [PATCH 215/433] test: Test case update --- .../nextjs/src/components/query/index.tsx | 19 ++++++ packages/chain-sdk/src/api/account.ts | 12 ---- .../.env.simple.ts => tests/.env.example.ts} | 0 .../chain-sdk/{src => }/tests/account.spec.ts | 10 --- .../chain-sdk/{src => }/tests/config.spec.ts | 4 +- .../{src => }/tests/parsexml.spec.ts | 4 +- .../chain-sdk/{src => }/tests/policy.spec.ts | 1 - .../chain-sdk/{src => }/tests/query.spec.ts | 0 .../chain-sdk/{src => }/tests/storage.spec.ts | 65 +++++++++++-------- .../chain-sdk/{src => }/tests/utils.spec.ts | 2 +- .../chain-sdk/{src => }/tests/wallet.spec.ts | 2 +- 11 files changed, 63 insertions(+), 56 deletions(-) rename packages/chain-sdk/{src/tests/.env.simple.ts => tests/.env.example.ts} (100%) rename packages/chain-sdk/{src => }/tests/account.spec.ts (78%) rename packages/chain-sdk/{src => }/tests/config.spec.ts (94%) rename packages/chain-sdk/{src => }/tests/parsexml.spec.ts (98%) rename packages/chain-sdk/{src => }/tests/policy.spec.ts (98%) rename packages/chain-sdk/{src => }/tests/query.spec.ts (100%) rename packages/chain-sdk/{src => }/tests/storage.spec.ts (73%) rename packages/chain-sdk/{src => }/tests/utils.spec.ts (96%) rename packages/chain-sdk/{src => }/tests/wallet.spec.ts (98%) diff --git a/examples/nextjs/src/components/query/index.tsx b/examples/nextjs/src/components/query/index.tsx index 45a8b3c1..4e63b53d 100644 --- a/examples/nextjs/src/components/query/index.tsx +++ b/examples/nextjs/src/components/query/index.tsx @@ -122,6 +122,25 @@ export const QueryComponent = () => { const { paymentAccounts } = await client.payment.getPaymentAccountsByOwner({ owner: address, }); + console.log('paymentAccounts', paymentAccounts); + const res = await client.payment.paymentAccount({ + addr: paymentAccounts[0], + }); + console.log('res', res); + }} + > + get paymentAccount + + +
  • + +
  • +
    get objects list by bucket name
    diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index 8e6079a9..f6194f12 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -5,6 +5,10 @@ import { getObjectMetaInfo, parseGetObjectMetaResponse, } from '@/clients/spclient/spApis/getObjectMeta'; +import { + getListObjectPoliciesMetaInfo, + parseGetListObjectPoliciesResponse, +} from '@/clients/spclient/spApis/listObjectPolicies'; import { parseListObjectsByBucketNameResponse } from '@/clients/spclient/spApis/listObjectsByBucket'; import { getListObjectsByIDsMetaInfo, @@ -65,6 +69,7 @@ import { AuthType, SpClient } from '../clients/spclient/spClient'; import { CreateObjectApprovalRequest, CreateObjectApprovalResponse, + GetListObjectPoliciesRequest, GetPrivewObject, ListObjectsByBucketNameRequest, ListObjectsByIDsRequest, @@ -161,6 +166,8 @@ export interface IObject { getObjectMeta(params: GetObjectMetaRequest): Promise>; listObjectsByIds(params: ListObjectsByIDsRequest): Promise>; + + listObjectPolicies(params: GetListObjectPoliciesRequest): Promise; // TODO: GetObjectUploadProgress // TODO: getObjectStatusFromSP } @@ -744,4 +751,27 @@ export class Objectt implements IObject { }; } } + + public async listObjectPolicies(params: GetListObjectPoliciesRequest) { + let endpoint = params.endpoint; + if (!endpoint) { + endpoint = await this.sp.getSPUrlByBucket(params.bucketName); + } + const { url } = getListObjectPoliciesMetaInfo(endpoint, params); + + const result = await this.spClient.callApi(url, { + headers: {}, + method: METHOD_GET, + }); + + const xml = await result.text(); + const res = parseGetListObjectPoliciesResponse(xml); + + return { + code: 0, + message: 'success', + statusCode: result.status, + body: res, + }; + } } diff --git a/packages/chain-sdk/src/api/storage.ts b/packages/chain-sdk/src/api/storage.ts index 3b2e8b14..9e58e108 100644 --- a/packages/chain-sdk/src/api/storage.ts +++ b/packages/chain-sdk/src/api/storage.ts @@ -1,5 +1,6 @@ +import { TxClient } from '@/clients/txClient'; +import { getMsgPutPolicySDKTypeEIP712 } from '@/messages/greenfield'; import { MsgDeletePolicySDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeletePolicy'; -import { MsgPutPolicySDKTypeEIP712 } from '@/messages/greenfield/storage/MsgPutPolicy'; import { QueryGroupMembersExistRequest, QueryGroupMembersExistResponse, @@ -22,9 +23,7 @@ import { } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import { container, delay, inject, singleton } from 'tsyringe'; import { fromTimestamp, MsgDeletePolicyTypeUrl, MsgPutPolicyTypeUrl, TxResponse } from '..'; -import { Basic } from './basic'; import { RpcQueryClient } from '../clients/queryclient'; -import { TxClient } from '@/clients/txClient'; export interface IStorage { params(): Promise; @@ -69,13 +68,18 @@ export class Storage implements IStorage { return await this.txClient.tx( MsgPutPolicyTypeUrl, msg.operator, - MsgPutPolicySDKTypeEIP712, + getMsgPutPolicySDKTypeEIP712(msg.statements[0].resources), { ...toSdk, expiration_time: msg.expirationTime ? fromTimestamp(msg.expirationTime) : '', statements: toSdk.statements.map((e) => { // @ts-ignore e.expiration_time = ''; + + if (e.resources.length == 0) { + // @ts-ignore + e.resources = null; + } return e; }), }, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectPolicies.ts b/packages/chain-sdk/src/clients/spclient/spApis/listObjectPolicies.ts new file mode 100644 index 00000000..b232a9c2 --- /dev/null +++ b/packages/chain-sdk/src/clients/spclient/spApis/listObjectPolicies.ts @@ -0,0 +1,62 @@ +import { convertStrToBool, formatObjectInfo } from '@/types/sp/Common'; +import { + GetListObjectPoliciesRequest, + GetListObjectPoliciesResponse, +} from '@/types/sp/ListObjectPolicies'; +import { generateUrlByBucketName } from '@/utils'; +import { actionTypeFromJSON } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; +import { XMLParser } from 'fast-xml-parser'; +import { encodePath, getSortQueryParams } from '../auth'; + +export const getListObjectPoliciesMetaInfo = ( + endpoint: string, + params: GetListObjectPoliciesRequest, +) => { + const { actionType, bucketName, objectName, limit = '10', startAfter = '' } = params; + const path = `/${encodePath(objectName)}`; + const queryMap = { + 'object-policies': 'null', + 'start-after': startAfter, + limit: String(limit), + 'action-type': String(actionTypeFromJSON(actionType)), + }; + + let url = new URL(path, generateUrlByBucketName(endpoint, bucketName)); + url = getSortQueryParams(url, queryMap); + + return { + url: url.href, + }; +}; + +export const parseGetListObjectPoliciesResponse = (data: string) => { + const xmlParser = new XMLParser({ + parseTagValue: false, + }); + const res = xmlParser.parse(data) as GetListObjectPoliciesResponse; + + let Policies = res.GfSpListObjectPoliciesResponse.Policies || []; + + if (Policies) { + if (!Array.isArray(Policies)) { + Policies = [Policies]; + } + + Policies = Policies.map((item) => { + return { + ...item, + PrincipalType: Number(item.ResourceType), + ResourceType: Number(item.ResourceType), + CreateTimestamp: Number(item.CreateTimestamp), + UpdateTimestamp: Number(item.UpdateTimestamp), + ExpirationTime: Number(item.ExpirationTime), + }; + }); + } + + res.GfSpListObjectPoliciesResponse = { + Policies, + }; + + return res; +}; diff --git a/packages/chain-sdk/src/types/sp/Common.ts b/packages/chain-sdk/src/types/sp/Common.ts index 77d3f527..a1436bb7 100644 --- a/packages/chain-sdk/src/types/sp/Common.ts +++ b/packages/chain-sdk/src/types/sp/Common.ts @@ -149,3 +149,34 @@ export function formatGroupInfo(o: GroupInfo) { Id: Number(o.Id), }; } + +export interface PolicyMeta { + /** + * principal_type defines the type of principal + */ + PrincipalType: number; + /** + * principal_value defines the value of principal + */ + PrincipalValue: string; + /** + * resource_type defines the type of resource that grants permission for + */ + ResourceType: number; + /** + * resource_id defines the bucket/object/group id of the resource that grants permission for + */ + ResourceId: string; + /** + * create_timestamp defines the create time of permission + */ + CreateTimestamp: number; + /** + * update_timestamp defines the update time of permission + */ + UpdateTimestamp: number; + /** + * expiration_time defines the expiration time of permission + */ + ExpirationTime: number; +} diff --git a/packages/chain-sdk/src/types/sp/ListObjectPolicies.ts b/packages/chain-sdk/src/types/sp/ListObjectPolicies.ts new file mode 100644 index 00000000..e2683514 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ListObjectPolicies.ts @@ -0,0 +1,19 @@ +import { ActionType } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; +import { PolicyMeta } from './Common'; + +export type GetListObjectPoliciesRequest = { + endpoint?: string; + bucketName: string; + objectName: string; + actionType: keyof typeof ActionType; + limit?: number; + startAfter?: string; +}; + +export type GetListObjectPoliciesResponse = { + GfSpListObjectPoliciesResponse: GfSpListObjectPoliciesResponse; +}; + +export interface GfSpListObjectPoliciesResponse { + Policies: PolicyMeta[]; +} diff --git a/packages/chain-sdk/src/types/sp/index.ts b/packages/chain-sdk/src/types/sp/index.ts index 3d94f53b..cea87ef0 100644 --- a/packages/chain-sdk/src/types/sp/index.ts +++ b/packages/chain-sdk/src/types/sp/index.ts @@ -10,6 +10,7 @@ export * from './ListBucketsByIDs'; export * from './ListBucketsByPaymentAccount'; export * from './ListGroups'; export * from './ListGroupsMembers'; +export * from './ListObjectPolicies'; export * from './ListObjectsByBucketName'; export * from './ListObjectsByIDs'; export * from './ListUserGroups'; From 77b01cbc68b6fd1453dbe4b0f291949065ea611e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 8 Sep 2023 10:35:03 +0000 Subject: [PATCH 222/433] chore: [ci] release (alpha) --- .changeset/pre.json | 6 +++++- examples/nextjs/CHANGELOG.md | 11 +++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 11 +++++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 22 ++++++++++++++++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 52 insertions(+), 4 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 6c6f658e..17f22aee 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -13,10 +13,14 @@ "heavy-seas-talk", "itchy-ducks-chew", "perfect-starfishes-watch", + "pink-tips-flow", + "rich-dolls-chew", "short-moons-pretend", + "shy-forks-sip", "soft-doors-perform", "spicy-jokes-wave", "stale-beans-jog", - "stupid-dodos-fold" + "stupid-dodos-fold", + "violet-pillows-exercise" ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index feb35a75..5e23d9db 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,16 @@ # @demo/wallet +## 0.0.6-alpha.3 + +### Patch Changes + +- Updated dependencies + [[`b13fba4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b13fba46d5df93bcaa643cd79aeea7dd4128feee), + [`c7f9ef3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7f9ef355e57bcc17a46b96655d8f36ba54dffa8), + [`609f4cd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/609f4cdbeccd289cd4080c0994aa2eb24bfa6eb2), + [`780e2ef`](https://github.com/bnb-chain/greenfield-js-sdk/commit/780e2efdfbc0d168c791c82e724ad96504050169)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.3 + ## 0.0.6-alpha.2 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index dbcfe940..ad3c2be7 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.6-alpha.2", + "version": "0.0.6-alpha.3", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 959abbce..4e0e4b47 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,16 @@ # @demo/nodejs +## 0.0.9-alpha.3 + +### Patch Changes + +- Updated dependencies + [[`b13fba4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b13fba46d5df93bcaa643cd79aeea7dd4128feee), + [`c7f9ef3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7f9ef355e57bcc17a46b96655d8f36ba54dffa8), + [`609f4cd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/609f4cdbeccd289cd4080c0994aa2eb24bfa6eb2), + [`780e2ef`](https://github.com/bnb-chain/greenfield-js-sdk/commit/780e2efdfbc0d168c791c82e724ad96504050169)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.3 + ## 0.0.9-alpha.2 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 387bb54c..170a0ae0 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.9-alpha.2", + "version": "0.0.9-alpha.3", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 39e88602..c8de7525 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,27 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.5-alpha.3 + +### Patch Changes + +- [#312](https://github.com/bnb-chain/greenfield-js-sdk/pull/312) + [`b13fba4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b13fba46d5df93bcaa643cd79aeea7dd4128feee) + Thanks [@rrr523](https://github.com/rrr523)! - fix: TxClient and QueryClient is not singleton + +- [#312](https://github.com/bnb-chain/greenfield-js-sdk/pull/312) + [`c7f9ef3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7f9ef355e57bcc17a46b96655d8f36ba54dffa8) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add sp `ListObjectPolicies` API + +- [#312](https://github.com/bnb-chain/greenfield-js-sdk/pull/312) + [`609f4cd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/609f4cdbeccd289cd4080c0994aa2eb24bfa6eb2) + Thanks [@rrr523](https://github.com/rrr523)! - feat: `getUserBuckets` -> `listBuckets`, and + response add vgf(includes `Id` and `PrimarySpId`) + +- [#312](https://github.com/bnb-chain/greenfield-js-sdk/pull/312) + [`780e2ef`](https://github.com/bnb-chain/greenfield-js-sdk/commit/780e2efdfbc0d168c791c82e724ad96504050169) + Thanks [@rrr523](https://github.com/rrr523)! - fix: PutPolicy if resource is empty use `[]` not + `['']` + ## 0.2.5-alpha.2 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 429afddc..9b576026 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.5-alpha.2", + "version": "0.2.5-alpha.3", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 06b933aa6a2ecb285c3511e06de0dfb93d38c40e Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 8 Sep 2023 21:13:36 +0800 Subject: [PATCH 223/433] fix: IOC (#314) fix: All class use injectable --- .changeset/selfish-bugs-teach.md | 5 +++ examples/nextjs/src/client/index.ts | 8 ++++ .../nextjs/src/components/query/index.tsx | 6 ++- packages/chain-sdk/package.json | 2 +- packages/chain-sdk/src/api/account.ts | 10 ++--- packages/chain-sdk/src/api/basic.ts | 4 +- packages/chain-sdk/src/api/bucket.ts | 42 +++++++++---------- packages/chain-sdk/src/api/challenge.ts | 4 +- packages/chain-sdk/src/api/crosschain.ts | 7 ++-- packages/chain-sdk/src/api/distribution.ts | 3 +- packages/chain-sdk/src/api/feegrant.ts | 4 +- packages/chain-sdk/src/api/gashub.ts | 4 +- packages/chain-sdk/src/api/group.ts | 4 +- packages/chain-sdk/src/api/objectt.ts | 4 +- packages/chain-sdk/src/api/offchainauth.ts | 4 +- packages/chain-sdk/src/api/payment.ts | 13 +++--- packages/chain-sdk/src/api/proposal.ts | 4 +- packages/chain-sdk/src/api/sp.ts | 10 ++--- packages/chain-sdk/src/api/storage.ts | 4 +- packages/chain-sdk/src/api/validator.ts | 4 +- packages/chain-sdk/src/api/virtualGroup.ts | 4 +- packages/chain-sdk/src/client.ts | 15 ++++--- .../src/clients/spclient/spClient.ts | 5 +-- pnpm-lock.yaml | 8 ++-- 24 files changed, 96 insertions(+), 82 deletions(-) create mode 100644 .changeset/selfish-bugs-teach.md diff --git a/.changeset/selfish-bugs-teach.md b/.changeset/selfish-bugs-teach.md new file mode 100644 index 00000000..7348bd47 --- /dev/null +++ b/.changeset/selfish-bugs-teach.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +fix: All class use injectable diff --git a/examples/nextjs/src/client/index.ts b/examples/nextjs/src/client/index.ts index 59699810..c5059d99 100644 --- a/examples/nextjs/src/client/index.ts +++ b/examples/nextjs/src/client/index.ts @@ -6,6 +6,14 @@ export const client = Client.create(GRPC_URL, String(GREEN_CHAIN_ID), { 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto@0.0.3-alpha.0/dist/node/zk-crypto.wasm', }); +export const client2 = Client.create('xx222x', String('346345'), { + zkCryptoUrl: + 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto@0.0.3-alpha.0/dist/node/zk-crypto.wasm', +}); + +console.log(client); +console.log(client2); + export const getSps = async () => { const sps = await client.sp.getStorageProviders(); const finalSps = (sps ?? []).filter((v: any) => v.endpoint.includes('nodereal')); diff --git a/examples/nextjs/src/components/query/index.tsx b/examples/nextjs/src/components/query/index.tsx index 4e63b53d..25683d9d 100644 --- a/examples/nextjs/src/components/query/index.tsx +++ b/examples/nextjs/src/components/query/index.tsx @@ -1,4 +1,4 @@ -import { client } from '@/client'; +import { client, client2 } from '@/client'; import { ACCOUNT_PRIVATEKEY } from '@/config/env'; import { getOffchainAuthKeys } from '@/utils/offchainAuth'; import { Long } from '@bnb-chain/greenfield-js-sdk'; @@ -20,6 +20,10 @@ export const QueryComponent = () => { const account = await client.account.getAccount(address); console.log('account', account); + + const account2 = await client2.account.getAccount(address); + + console.log('account2', account2); }} > get account diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 9b576026..10156d7a 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -73,7 +73,7 @@ "lodash.sortby": "^4.7.0", "long": "^5.2.1", "reflect-metadata": "^0.1.13", - "tsyringe": "^4.7.0" + "tsyringe": "^4.8.0" }, "devDependencies": { "@jest/globals": "^29.5.0", diff --git a/packages/chain-sdk/src/api/account.ts b/packages/chain-sdk/src/api/account.ts index 80a4b47e..0e098191 100644 --- a/packages/chain-sdk/src/api/account.ts +++ b/packages/chain-sdk/src/api/account.ts @@ -12,13 +12,9 @@ import { QueryBalanceResponse, } from '@bnb-chain/greenfield-cosmos-types/cosmos/bank/v1beta1/query'; import { MsgMultiSend, MsgSend } from '@bnb-chain/greenfield-cosmos-types/cosmos/bank/v1beta1/tx'; -import { - QueryPaymentAccountRequest, - QueryPaymentAccountResponse, - QueryPaymentAccountsByOwnerResponse, -} from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; +import { QueryPaymentAccountsByOwnerResponse } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; import { MsgCreatePaymentAccount } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/tx'; -import { container, delay, inject, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { MsgCreatePaymentAccountTypeUrl, MsgMultiSendTypeUrl, @@ -60,7 +56,7 @@ export interface IAccount { multiTransfer(address: string, msg: MsgMultiSend): Promise; } -@singleton() +@injectable() export class Account implements IAccount { constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} diff --git a/packages/chain-sdk/src/api/basic.ts b/packages/chain-sdk/src/api/basic.ts index bc2a5f27..7ff0a7ed 100644 --- a/packages/chain-sdk/src/api/basic.ts +++ b/packages/chain-sdk/src/api/basic.ts @@ -6,7 +6,7 @@ import { ServiceClientImpl as tdServiceClientImpl, } from '@bnb-chain/greenfield-cosmos-types/cosmos/base/tendermint/v1beta1/query'; import Long from 'long'; -import { container, singleton } from 'tsyringe'; +import { container, injectable } from 'tsyringe'; import { RpcQueryClient } from '../clients/queryclient'; export interface IBasic { @@ -45,7 +45,7 @@ export interface IBasic { GetLatestValidatorSet(request: GetLatestValidatorSetRequest): Promise; } -@singleton() +@injectable() export class Basic implements IBasic { private rpcQueryClient = container.resolve(RpcQueryClient); diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index c97fdebe..c94e5877 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -31,25 +31,6 @@ import { MsgCreateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgC import { MsgDeleteBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteBucket'; import { MsgMigrateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMigrateBucket'; import { MsgUpdateBucketInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; -import type { - GetBucketMetaRequest, - GetBucketMetaResponse, - GetUserBucketsRequest, - GetUserBucketsResponse, - IQuotaProps, - ListBucketReadRecordRequest, - ListBucketReadRecordResponse, - ListBucketsByIDsRequest, - ListBucketsByIDsResponse, - MigrateBucketApprovalRequest, - MigrateBucketApprovalResponse, - ReadQuotaRequest, - SpResponse, - ListBucketsByPaymentAccountRequest, - CreateBucketApprovalRequest, - CreateBucketApprovalResponse, - ListBucketsByPaymentAccountResponse, -} from '../types/sp'; import { decodeObjectFromHexString } from '@/utils/encoding'; import { isValidAddress, isValidBucketName, isValidUrl } from '@/utils/s3'; import { UInt64Value } from '@bnb-chain/greenfield-cosmos-types/greenfield/common/wrapper'; @@ -79,7 +60,7 @@ import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { Headers } from 'cross-fetch'; import { bytesToUtf8, hexToBytes } from 'ethereum-cryptography/utils'; import Long from 'long'; -import { container, delay, inject, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { GRNToString, MsgCreateBucketTypeUrl, @@ -91,6 +72,25 @@ import { } from '..'; import { RpcQueryClient } from '../clients/queryclient'; import { AuthType, SpClient } from '../clients/spclient/spClient'; +import type { + CreateBucketApprovalRequest, + CreateBucketApprovalResponse, + GetBucketMetaRequest, + GetBucketMetaResponse, + GetUserBucketsRequest, + GetUserBucketsResponse, + IQuotaProps, + ListBucketReadRecordRequest, + ListBucketReadRecordResponse, + ListBucketsByIDsRequest, + ListBucketsByIDsResponse, + ListBucketsByPaymentAccountRequest, + ListBucketsByPaymentAccountResponse, + MigrateBucketApprovalRequest, + MigrateBucketApprovalResponse, + ReadQuotaRequest, + SpResponse, +} from '../types/sp'; import { Sp } from './sp'; import { Storage } from './storage'; @@ -181,7 +181,7 @@ export interface IBucket { ): Promise>; } -@singleton() +@injectable() export class Bucket implements IBucket { constructor( @inject(delay(() => TxClient)) private txClient: TxClient, diff --git a/packages/chain-sdk/src/api/challenge.ts b/packages/chain-sdk/src/api/challenge.ts index 9b687fca..c7f8193a 100644 --- a/packages/chain-sdk/src/api/challenge.ts +++ b/packages/chain-sdk/src/api/challenge.ts @@ -7,7 +7,7 @@ import { QueryParamsResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/query'; import { MsgAttest, MsgSubmit } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/tx'; -import { container, delay, inject, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { MsgAttestTypeUrl, MsgSubmitTypeUrl, TxResponse } from '..'; import { RpcQueryClient } from '../clients/queryclient'; @@ -34,7 +34,7 @@ export interface IChallenge { params(): Promise; } -@singleton() +@injectable() export class Challenge implements IChallenge { private queryClient = container.resolve(RpcQueryClient); constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} diff --git a/packages/chain-sdk/src/api/crosschain.ts b/packages/chain-sdk/src/api/crosschain.ts index 8178a42f..bae79efa 100644 --- a/packages/chain-sdk/src/api/crosschain.ts +++ b/packages/chain-sdk/src/api/crosschain.ts @@ -1,3 +1,4 @@ +import { TxClient } from '@/clients/txClient'; import { MsgClaimSDKTypeEIP712 } from '@/messages/cosmos/oracle/MsgClaim'; import { MsgTransferOutSDKTypeEIP712 } from '@/messages/greenfield/bridge/MsgTransferOut'; import { MsgMirrorBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMirrorBucket'; @@ -20,7 +21,7 @@ import { MsgMirrorGroup, MsgMirrorObject, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { container, delay, inject, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { MsgClaimTypeUrl, MsgMirrorBucketTypeUrl, @@ -29,9 +30,7 @@ import { MsgTransferOutTypeUrl, TxResponse, } from '..'; -import { Basic } from './basic'; import { RpcQueryClient } from '../clients/queryclient'; -import { TxClient } from '@/clients/txClient'; export interface ICrossChain { /** @@ -83,7 +82,7 @@ export interface ICrossChain { getParams(): Promise; } -@singleton() +@injectable() export class CrossChain implements ICrossChain { constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); diff --git a/packages/chain-sdk/src/api/distribution.ts b/packages/chain-sdk/src/api/distribution.ts index c73560db..a7733332 100644 --- a/packages/chain-sdk/src/api/distribution.ts +++ b/packages/chain-sdk/src/api/distribution.ts @@ -5,7 +5,7 @@ import { MsgWithdrawValidatorCommissionResponse, } from '@bnb-chain/greenfield-cosmos-types/cosmos/distribution/v1beta1/tx'; import { Coin } from '@cosmjs/proto-signing'; -import { container } from 'tsyringe'; +import { container, injectable } from 'tsyringe'; import { Basic } from './basic'; import { RpcQueryClient } from '../clients/queryclient'; export interface IDistribution { @@ -41,6 +41,7 @@ export interface IDistribution { ): Promise; } +@injectable() export class Distribution implements IDistribution { private basic: Basic = container.resolve(Basic); private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); diff --git a/packages/chain-sdk/src/api/feegrant.ts b/packages/chain-sdk/src/api/feegrant.ts index d0fafbe6..66525e8b 100644 --- a/packages/chain-sdk/src/api/feegrant.ts +++ b/packages/chain-sdk/src/api/feegrant.ts @@ -13,7 +13,7 @@ import { } from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/tx'; import { base64FromBytes } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { arrayify } from '@ethersproject/bytes'; -import { container, delay, inject, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { encodeToHex, IGrantAllowance, @@ -37,7 +37,7 @@ export interface IFeeGrant { getAllowences(request: QueryAllowancesRequest): Promise; } -@singleton() +@injectable() export class FeeGrant implements IFeeGrant { constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); diff --git a/packages/chain-sdk/src/api/gashub.ts b/packages/chain-sdk/src/api/gashub.ts index 422cfa1b..0f064d9b 100644 --- a/packages/chain-sdk/src/api/gashub.ts +++ b/packages/chain-sdk/src/api/gashub.ts @@ -1,9 +1,9 @@ -import { container, singleton } from 'tsyringe'; import { QueryMsgGasParamsRequest, QueryMsgGasParamsResponse, QueryParamsResponse, } from '@bnb-chain/greenfield-cosmos-types/cosmos/gashub/v1beta1/query'; +import { container, injectable } from 'tsyringe'; import { RpcQueryClient } from '../clients/queryclient'; export interface IGashub { @@ -12,7 +12,7 @@ export interface IGashub { getMsgGasParams(request: QueryMsgGasParamsRequest): Promise; } -@singleton() +@injectable() export class Gashub implements IGashub { private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); diff --git a/packages/chain-sdk/src/api/group.ts b/packages/chain-sdk/src/api/group.ts index 4330ed42..6f9b398a 100644 --- a/packages/chain-sdk/src/api/group.ts +++ b/packages/chain-sdk/src/api/group.ts @@ -23,7 +23,7 @@ import { MsgUpdateGroupExtra, MsgUpdateGroupMember, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { container, delay, inject, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { fromTimestamp, MsgCreateGroupTypeUrl, @@ -98,7 +98,7 @@ export interface IGroup { ): Promise; } -@singleton() +@injectable() export class Group implements IGroup { constructor( @inject(delay(() => TxClient)) private txClient: TxClient, diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index f6194f12..d47ad1db 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -55,7 +55,7 @@ import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { hexlify } from '@ethersproject/bytes'; import { Headers } from 'cross-fetch'; import { bytesToUtf8, hexToBytes, utf8ToBytes } from 'ethereum-cryptography/utils'; -import { container, delay, inject, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { GRNToString, MsgCancelCreateObjectTypeUrl, @@ -172,7 +172,7 @@ export interface IObject { // TODO: getObjectStatusFromSP } -@singleton() +@injectable() export class Objectt implements IObject { constructor( @inject(delay(() => TxClient)) private txClient: TxClient, diff --git a/packages/chain-sdk/src/api/offchainauth.ts b/packages/chain-sdk/src/api/offchainauth.ts index 9fc55cbd..1c0bb6e9 100644 --- a/packages/chain-sdk/src/api/offchainauth.ts +++ b/packages/chain-sdk/src/api/offchainauth.ts @@ -9,7 +9,7 @@ import { updateSpsPubKey, } from '@/offchainauth'; import { hexlify } from '@ethersproject/bytes'; -import { singleton } from 'tsyringe'; +import { injectable } from 'tsyringe'; import { convertTimeStampToDate, getUtcZeroTimestamp, SpResponse } from '..'; import { IGenOffChainAuthKeyPairAndUpload, @@ -27,7 +27,7 @@ export interface IOffChainAuth { ): Promise>; } -@singleton() +@injectable() export class OffChainAuth implements IOffChainAuth { public async genOffChainAuthKeyPairAndUpload( { sps, address, domain, expirationMs, chainId }: IGenOffChainAuthKeyPairAndUpload, diff --git a/packages/chain-sdk/src/api/payment.ts b/packages/chain-sdk/src/api/payment.ts index 1e9c334a..60a35158 100644 --- a/packages/chain-sdk/src/api/payment.ts +++ b/packages/chain-sdk/src/api/payment.ts @@ -7,7 +7,6 @@ import { TxClient } from '@/clients/txClient'; import { MsgDepositSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgDeposit'; import { MsgDisableRefundSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgDisableRefund'; import { MsgWithdrawSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgWithdraw'; -import { ListUserPaymentAccountsResquest } from '../types/sp/ListUserPaymentAccounts'; import { QueryAutoSettleRecordsRequest, QueryAutoSettleRecordsResponse, @@ -37,16 +36,20 @@ import { MsgDisableRefund, MsgWithdraw, } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/tx'; -import { container, delay, inject, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { - METHOD_GET, MsgDepositTypeUrl, MsgDisableRefundTypeUrl, MsgWithdrawTypeUrl, NORMAL_ERROR_CODE, + SpResponse, TxResponse, } from '..'; import { RpcQueryClient } from '../clients/queryclient'; +import { + ListUserPaymentAccountsResponse, + ListUserPaymentAccountsResquest, +} from '../types/sp/ListUserPaymentAccounts'; import { Sp } from './sp'; export interface IPayment { @@ -110,10 +113,10 @@ export interface IPayment { listUserPaymentAccounts( params: ListUserPaymentAccountsResquest, authType: AuthType, - ): Promise; + ): Promise>; } -@singleton() +@injectable() export class Payment implements IPayment { constructor( @inject(delay(() => TxClient)) private txClient: TxClient, diff --git a/packages/chain-sdk/src/api/proposal.ts b/packages/chain-sdk/src/api/proposal.ts index 08a53998..af262469 100644 --- a/packages/chain-sdk/src/api/proposal.ts +++ b/packages/chain-sdk/src/api/proposal.ts @@ -2,7 +2,7 @@ import { TxClient } from '@/clients/txClient'; import { MsgVoteSDKTypeEIP712 } from '@/messages/cosmos/gov/MsgVote'; import { voteOptionToJSON } from '@bnb-chain/greenfield-cosmos-types/cosmos/gov/v1/gov'; import { MsgVote } from '@bnb-chain/greenfield-cosmos-types/cosmos/gov/v1/tx'; -import { delay, inject, singleton } from 'tsyringe'; +import { delay, inject, injectable } from 'tsyringe'; import { MsgVoteTypeUrl, TxResponse } from '..'; export interface IProposal { @@ -12,7 +12,7 @@ export interface IProposal { voteProposal(msg: MsgVote): Promise; } -@singleton() +@injectable() export class Proposal implements IProposal { constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index 73d9ae0c..a5a60c6e 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -24,16 +24,16 @@ import { QueryStorageProviderMaintenanceRecordsResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/query'; import { Status, StorageProvider } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/types'; -import { container, singleton } from 'tsyringe'; +import { container, injectable } from 'tsyringe'; import type { - SpResponse, + ListGroupsMembersRequest, ListGroupsMembersResponse, ListGroupsResponse, - ListUserGroupsResponse, ListGroupsResquest, - ListGroupsMembersRequest, + ListUserGroupsResponse, ListUserGroupsResquest, ListUserOwnedGroupsRequest, + SpResponse, VerifyPermissionRequest, VerifyPermissionResponse, } from '..'; @@ -102,7 +102,7 @@ export interface ISp { verifyPermission(params: VerifyPermissionRequest): Promise>; } -@singleton() +@injectable() export class Sp implements ISp { private bucket = container.resolve(Bucket); private queryClient = container.resolve(RpcQueryClient); diff --git a/packages/chain-sdk/src/api/storage.ts b/packages/chain-sdk/src/api/storage.ts index 9e58e108..a781ff3a 100644 --- a/packages/chain-sdk/src/api/storage.ts +++ b/packages/chain-sdk/src/api/storage.ts @@ -21,7 +21,7 @@ import { MsgDeletePolicy, MsgPutPolicy, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { container, delay, inject, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { fromTimestamp, MsgDeletePolicyTypeUrl, MsgPutPolicyTypeUrl, TxResponse } from '..'; import { RpcQueryClient } from '../clients/queryclient'; @@ -53,7 +53,7 @@ export interface IStorage { queryGroupsExistById(request: QueryGroupsExistByIdRequest): Promise; } -@singleton() +@injectable() export class Storage implements IStorage { constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} private queryClient = container.resolve(RpcQueryClient); diff --git a/packages/chain-sdk/src/api/validator.ts b/packages/chain-sdk/src/api/validator.ts index d4060268..a0441296 100644 --- a/packages/chain-sdk/src/api/validator.ts +++ b/packages/chain-sdk/src/api/validator.ts @@ -6,7 +6,7 @@ import { QueryValidatorsResponse, } from '@bnb-chain/greenfield-cosmos-types/cosmos/staking/v1beta1/query'; import { MsgEditValidator } from '@bnb-chain/greenfield-cosmos-types/cosmos/staking/v1beta1/tx'; -import { container, delay, inject, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { MsgEditValidatorTypeUrl, TxResponse } from '..'; export interface IValidator { @@ -25,7 +25,7 @@ export interface IValidator { editValidator(address: string, msg: MsgEditValidator): Promise; } -@singleton() +@injectable() export class Validator implements IValidator { constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); diff --git a/packages/chain-sdk/src/api/virtualGroup.ts b/packages/chain-sdk/src/api/virtualGroup.ts index a8d95ee2..7857b3f2 100644 --- a/packages/chain-sdk/src/api/virtualGroup.ts +++ b/packages/chain-sdk/src/api/virtualGroup.ts @@ -9,7 +9,7 @@ import { QueryGlobalVirtualGroupResponse, QueryParamsResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/virtualgroup/query'; -import { container, singleton } from 'tsyringe'; +import { container, injectable } from 'tsyringe'; import { RpcQueryClient } from '../clients/queryclient'; export interface IVirtualGroup { @@ -32,7 +32,7 @@ export interface IVirtualGroup { ): Promise; } -@singleton() +@injectable() export class VirtualGroup implements IVirtualGroup { private queryClient = container.resolve(RpcQueryClient); diff --git a/packages/chain-sdk/src/client.ts b/packages/chain-sdk/src/client.ts index cdb70cd7..776f1711 100644 --- a/packages/chain-sdk/src/client.ts +++ b/packages/chain-sdk/src/client.ts @@ -1,27 +1,26 @@ import 'reflect-metadata'; -import { container, injectable } from 'tsyringe'; +import { container } from 'tsyringe'; import { Account, IAccount } from './api/account'; +import { Basic, IBasic } from './api/basic'; import { Bucket, IBucket } from './api/bucket'; import { Challenge, IChallenge } from './api/challenge'; import { CrossChain, ICrossChain } from './api/crosschain'; import { Distribution, IDistribution } from './api/distribution'; import { FeeGrant, IFeeGrant } from './api/feegrant'; +import { Gashub, IGashub } from './api/gashub'; import { Group, IGroup } from './api/group'; import { IObject, Objectt } from './api/objectt'; +import { IOffChainAuth, OffChainAuth } from './api/offchainauth'; import { IPayment, Payment } from './api/payment'; +import { IProposal, Proposal } from './api/proposal'; import { ISp, Sp } from './api/sp'; -import { IOffChainAuth, OffChainAuth } from './api/offchainauth'; import { IStorage, Storage } from './api/storage'; -import { Basic, IBasic } from './api/basic'; -import { Gashub, IGashub } from './api/gashub'; -import { RpcQueryClient } from './clients/queryclient'; +import { Validator } from './api/validator'; import { IVirtualGroup, VirtualGroup } from './api/virtualGroup'; +import { RpcQueryClient } from './clients/queryclient'; import { ISpClient, SpClient } from './clients/spclient/spClient'; -import { Validator } from './api/validator'; -import { IProposal, Proposal } from './api/proposal'; import { ITxClient, TxClient } from './clients/txClient'; -@injectable() export class Client { /** * @rpcUrl string diff --git a/packages/chain-sdk/src/clients/spclient/spClient.ts b/packages/chain-sdk/src/clients/spclient/spClient.ts index d376cadf..706364c8 100644 --- a/packages/chain-sdk/src/clients/spclient/spClient.ts +++ b/packages/chain-sdk/src/clients/spclient/spClient.ts @@ -7,8 +7,7 @@ import { } from '@/clients/spclient/auth'; import { parseError } from '@/clients/spclient/spApis/parseError'; import { ReqMeta } from '@/types/auth'; -import { Headers } from 'cross-fetch'; -import { singleton } from 'tsyringe'; +import { injectable } from 'tsyringe'; import { getGetObjectMetaInfo } from './spApis/getObject'; import { getPutObjectMetaInfo } from './spApis/putObject'; @@ -59,7 +58,7 @@ export interface ISpClient { }; } -@singleton() +@injectable() export class SpClient implements ISpClient { public async callApi( url: string, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0efb87c0..34ba549f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -257,8 +257,8 @@ importers: specifier: ^0.1.13 version: 0.1.13 tsyringe: - specifier: ^4.7.0 - version: 4.7.0 + specifier: ^4.8.0 + version: 4.8.0 devDependencies: '@jest/globals': specifier: ^29.5.0 @@ -11154,8 +11154,8 @@ packages: tslib: 1.14.1 typescript: 4.9.5 - /tsyringe@4.7.0: - resolution: {integrity: sha512-ncFDM1jTLsok4ejMvSW5jN1VGPQD48y2tfAR0pdptWRKYX4bkbqPt92k7KJ5RFJ1KV36JEs/+TMh7I6OUgj74g==} + /tsyringe@4.8.0: + resolution: {integrity: sha512-YB1FG+axdxADa3ncEtRnQCFq/M0lALGLxSZeVNbTU8NqhOVc51nnv2CISTcvc1kyv6EGPtXVr0v6lWeDxiijOA==} engines: {node: '>= 6.0.0'} dependencies: tslib: 1.14.1 From a51488ff31e9b1fb0410ca483ba99aa135e92301 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 8 Sep 2023 21:17:37 +0800 Subject: [PATCH 224/433] chore: [ci] release (alpha) (#315) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 17f22aee..811d607b 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -15,6 +15,7 @@ "perfect-starfishes-watch", "pink-tips-flow", "rich-dolls-chew", + "selfish-bugs-teach", "short-moons-pretend", "shy-forks-sip", "soft-doors-perform", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 5e23d9db..06aaecb4 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.6-alpha.4 + +### Patch Changes + +- Updated dependencies + [[`06b933a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/06b933aa6a2ecb285c3511e06de0dfb93d38c40e)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.4 + ## 0.0.6-alpha.3 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index ad3c2be7..2ca3581d 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.6-alpha.3", + "version": "0.0.6-alpha.4", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 4e0e4b47..3dcbf551 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.9-alpha.4 + +### Patch Changes + +- Updated dependencies + [[`06b933a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/06b933aa6a2ecb285c3511e06de0dfb93d38c40e)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.4 + ## 0.0.9-alpha.3 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 170a0ae0..0e03cb08 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.9-alpha.3", + "version": "0.0.9-alpha.4", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index c8de7525..3ecb4da9 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.5-alpha.4 + +### Patch Changes + +- [#314](https://github.com/bnb-chain/greenfield-js-sdk/pull/314) + [`06b933a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/06b933aa6a2ecb285c3511e06de0dfb93d38c40e) + Thanks [@rrr523](https://github.com/rrr523)! - fix: All class use injectable + ## 0.2.5-alpha.3 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 10156d7a..92f6d529 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.5-alpha.3", + "version": "0.2.5-alpha.4", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 0bcca80ecf39826746f0871109e56d9a477dcbfa Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 8 Sep 2023 21:19:20 +0800 Subject: [PATCH 225/433] chore: Update exmaple (#316) --- examples/nextjs/src/client/index.ts | 8 -------- examples/nextjs/src/components/query/index.tsx | 6 +----- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/examples/nextjs/src/client/index.ts b/examples/nextjs/src/client/index.ts index c5059d99..59699810 100644 --- a/examples/nextjs/src/client/index.ts +++ b/examples/nextjs/src/client/index.ts @@ -6,14 +6,6 @@ export const client = Client.create(GRPC_URL, String(GREEN_CHAIN_ID), { 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto@0.0.3-alpha.0/dist/node/zk-crypto.wasm', }); -export const client2 = Client.create('xx222x', String('346345'), { - zkCryptoUrl: - 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto@0.0.3-alpha.0/dist/node/zk-crypto.wasm', -}); - -console.log(client); -console.log(client2); - export const getSps = async () => { const sps = await client.sp.getStorageProviders(); const finalSps = (sps ?? []).filter((v: any) => v.endpoint.includes('nodereal')); diff --git a/examples/nextjs/src/components/query/index.tsx b/examples/nextjs/src/components/query/index.tsx index 25683d9d..4e63b53d 100644 --- a/examples/nextjs/src/components/query/index.tsx +++ b/examples/nextjs/src/components/query/index.tsx @@ -1,4 +1,4 @@ -import { client, client2 } from '@/client'; +import { client } from '@/client'; import { ACCOUNT_PRIVATEKEY } from '@/config/env'; import { getOffchainAuthKeys } from '@/utils/offchainAuth'; import { Long } from '@bnb-chain/greenfield-js-sdk'; @@ -20,10 +20,6 @@ export const QueryComponent = () => { const account = await client.account.getAccount(address); console.log('account', account); - - const account2 = await client2.account.getAccount(address); - - console.log('account2', account2); }} > get account From 910c0cc7ab7267e67b9cb59b702b70b0d1364c2b Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Mon, 11 Sep 2023 14:57:22 +0800 Subject: [PATCH 226/433] feat: Distribution API (#317) --- .changeset/fuzzy-cobras-cry.md | 5 + .../src/components/distribution/index.tsx | 80 ++++++++++++++ .../nextjs/src/components/query/index.tsx | 1 - examples/nextjs/src/pages/tx.tsx | 3 + packages/chain-sdk/src/api/distribution.ts | 101 ++++++++++-------- packages/chain-sdk/src/constants/typeUrl.ts | 6 ++ .../MsgFundCommunityPoolTypeUrl.ts | 26 +++++ .../distribution/MsgSetWithdrawAddress.ts | 16 +++ .../MsgWithdrawDelegatorReward.ts | 16 +++ .../MsgWithdrawValidatorCommission.ts | 12 +++ 10 files changed, 220 insertions(+), 46 deletions(-) create mode 100644 .changeset/fuzzy-cobras-cry.md create mode 100644 examples/nextjs/src/components/distribution/index.tsx create mode 100644 packages/chain-sdk/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts create mode 100644 packages/chain-sdk/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts create mode 100644 packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts create mode 100644 packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts diff --git a/.changeset/fuzzy-cobras-cry.md b/.changeset/fuzzy-cobras-cry.md new file mode 100644 index 00000000..39429f95 --- /dev/null +++ b/.changeset/fuzzy-cobras-cry.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Distribution api diff --git a/examples/nextjs/src/components/distribution/index.tsx b/examples/nextjs/src/components/distribution/index.tsx new file mode 100644 index 00000000..c7d5e3e4 --- /dev/null +++ b/examples/nextjs/src/components/distribution/index.tsx @@ -0,0 +1,80 @@ +import { client } from '@/client'; +import { useState } from 'react'; +import { useAccount } from 'wagmi'; + +export const Distribution = () => { + const { address, connector } = useAccount(); + const [createGroupInfo, setCreateGroupInfo] = useState({ + groupName: '', + }); + + return ( +
    +

    distribution

    + + +
    + +
    + ); +}; diff --git a/examples/nextjs/src/components/query/index.tsx b/examples/nextjs/src/components/query/index.tsx index 4e63b53d..f2786ec6 100644 --- a/examples/nextjs/src/components/query/index.tsx +++ b/examples/nextjs/src/components/query/index.tsx @@ -1,5 +1,4 @@ import { client } from '@/client'; -import { ACCOUNT_PRIVATEKEY } from '@/config/env'; import { getOffchainAuthKeys } from '@/utils/offchainAuth'; import { Long } from '@bnb-chain/greenfield-js-sdk'; import { useAccount } from 'wagmi'; diff --git a/examples/nextjs/src/pages/tx.tsx b/examples/nextjs/src/pages/tx.tsx index c6d536a2..a2c79f5f 100644 --- a/examples/nextjs/src/pages/tx.tsx +++ b/examples/nextjs/src/pages/tx.tsx @@ -14,6 +14,7 @@ import { useAccount } from 'wagmi'; import { PaymentComponent } from '@/components/payment'; import { Validator } from '@/components/validator'; import { Proposal } from '@/components/proposal'; +import { Distribution } from '@/components/distribution'; export default function Tx() { const isMounted = useIsMounted(); @@ -53,6 +54,8 @@ export default function Tx() {

    + +
    )} diff --git a/packages/chain-sdk/src/api/distribution.ts b/packages/chain-sdk/src/api/distribution.ts index a7733332..920dc352 100644 --- a/packages/chain-sdk/src/api/distribution.ts +++ b/packages/chain-sdk/src/api/distribution.ts @@ -1,79 +1,90 @@ +import { TxClient } from '@/clients/txClient'; +import { MsgFundCommunityPoolTypeUrlSDKTypeEIP712 } from '@/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl'; +import { MsgSetWithdrawAddressSDKTypeEIP712 } from '@/messages/cosmos/distribution/MsgSetWithdrawAddress'; +import { MsgWithdrawDelegatorRewardSDKTypeEIP712 } from '@/messages/cosmos/distribution/MsgWithdrawDelegatorReward'; +import { MsgWithdrawValidatorCommissionSDKTypeEIP712 } from '@/messages/cosmos/distribution/MsgWithdrawValidatorCommission'; import { - MsgFundCommunityPoolResponse, - MsgSetWithdrawAddressResponse, - MsgWithdrawDelegatorRewardResponse, - MsgWithdrawValidatorCommissionResponse, + MsgFundCommunityPool, + MsgSetWithdrawAddress, + MsgWithdrawDelegatorReward, + MsgWithdrawValidatorCommission, } from '@bnb-chain/greenfield-cosmos-types/cosmos/distribution/v1beta1/tx'; -import { Coin } from '@cosmjs/proto-signing'; -import { container, injectable } from 'tsyringe'; -import { Basic } from './basic'; +import { container, delay, inject, injectable } from 'tsyringe'; +import { + MsgFundCommunityPoolTypeUrl, + MsgSetWithdrawAddressTypeUrl, + MsgWithdrawDelegatorRewardTypeUrl, + MsgWithdrawValidatorCommissionTypeUrl, + TxResponse, +} from '..'; import { RpcQueryClient } from '../clients/queryclient'; export interface IDistribution { /** * sets the withdrawal address for a delegator address */ - setWithdrawAddress( - withdrawAddress: string, - delegatorAddress: string, - ): Promise; + setWithdrawAddress(msg: MsgSetWithdrawAddress): Promise; /** * withdraw accumulated commission by validator */ withdrawValidatorCommission( - validatorAddress: string, - ): Promise; + address: string, + msg: MsgWithdrawValidatorCommission, + ): Promise; /** * withdraw rewards by a delegator */ - withdrawDelegatorReward( - validatorAddress: string, - delegatorAddress: string, - ): Promise; + withdrawDelegatorReward(msg: MsgWithdrawDelegatorReward): Promise; /** * sends coins directly from the sender to the community pool. */ - fundCommunityPoolundComm( - amount: Coin[], - depositor: string, - ): Promise; + fundCommunityPoolundComm(address: string, msg: MsgFundCommunityPool): Promise; } @injectable() export class Distribution implements IDistribution { - private basic: Basic = container.resolve(Basic); + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); - public async setWithdrawAddress(withdrawAddress: string, delegatorAddress: string) { - const rpc = await this.queryClient.getMsgClient(); - return await rpc.SetWithdrawAddress({ - withdrawAddress, - delegatorAddress, - }); + public async setWithdrawAddress(msg: MsgSetWithdrawAddress) { + return await this.txClient.tx( + MsgSetWithdrawAddressTypeUrl, + msg.delegatorAddress, + MsgSetWithdrawAddressSDKTypeEIP712, + MsgSetWithdrawAddress.toSDK(msg), + MsgSetWithdrawAddress.encode(msg).finish(), + ); } - public async withdrawValidatorCommission(validatorAddress: string) { - const rpc = await this.queryClient.getMsgClient(); - return rpc.WithdrawValidatorCommission({ - validatorAddress, - }); + public async withdrawValidatorCommission(address: string, msg: MsgWithdrawValidatorCommission) { + return await this.txClient.tx( + MsgWithdrawValidatorCommissionTypeUrl, + address, + MsgWithdrawValidatorCommissionSDKTypeEIP712, + MsgWithdrawValidatorCommission.toSDK(msg), + MsgWithdrawValidatorCommission.encode(msg).finish(), + ); } - public async withdrawDelegatorReward(validatorAddress: string, delegatorAddress: string) { - const rpc = await this.queryClient.getMsgClient(); - return rpc.WithdrawDelegatorReward({ - delegatorAddress, - validatorAddress, - }); + public async withdrawDelegatorReward(msg: MsgWithdrawDelegatorReward) { + return await this.txClient.tx( + MsgWithdrawDelegatorRewardTypeUrl, + msg.delegatorAddress, + MsgWithdrawDelegatorRewardSDKTypeEIP712, + MsgWithdrawDelegatorReward.toSDK(msg), + MsgWithdrawDelegatorReward.encode(msg).finish(), + ); } - public async fundCommunityPoolundComm(amount: Coin[], depositor: string) { - const rpc = await this.queryClient.getMsgClient(); - return rpc.FundCommunityPool({ - amount, - depositor, - }); + public async fundCommunityPoolundComm(address: string, msg: MsgFundCommunityPool) { + return await this.txClient.tx( + MsgFundCommunityPoolTypeUrl, + address, + MsgFundCommunityPoolTypeUrlSDKTypeEIP712, + MsgFundCommunityPool.toSDK(msg), + MsgFundCommunityPool.encode(msg).finish(), + ); } } diff --git a/packages/chain-sdk/src/constants/typeUrl.ts b/packages/chain-sdk/src/constants/typeUrl.ts index 3487c018..1e997aa9 100644 --- a/packages/chain-sdk/src/constants/typeUrl.ts +++ b/packages/chain-sdk/src/constants/typeUrl.ts @@ -33,3 +33,9 @@ export const AllowedMsgAllowanceTypeUrl = '/cosmos.feegrant.v1beta1.AllowedMsgAl export const MsgEditValidatorTypeUrl = '/cosmos.staking.v1beta1.MsgEditValidator'; export const MsgCreateValidatorTypeUrl = '/cosmos.staking.v1beta1.MsgCreateValidator'; export const MsgVoteTypeUrl = '/cosmos.gov.v1.MsgVote'; +export const MsgWithdrawDelegatorRewardTypeUrl = + '/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward'; +export const MsgSetWithdrawAddressTypeUrl = '/cosmos.distribution.v1beta1.MsgSetWithdrawAddress'; +export const MsgWithdrawValidatorCommissionTypeUrl = + '/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission'; +export const MsgFundCommunityPoolTypeUrl = '/cosmos.distribution.v1beta1.MsgFundCommunityPool'; diff --git a/packages/chain-sdk/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts b/packages/chain-sdk/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts new file mode 100644 index 00000000..720baae9 --- /dev/null +++ b/packages/chain-sdk/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts @@ -0,0 +1,26 @@ +export const MsgFundCommunityPoolTypeUrlSDKTypeEIP712 = { + Msg1: [ + { + name: 'amount', + type: 'TypeMsg1Amount[]', + }, + { + name: 'depositor', + type: 'string', + }, + { + name: 'type', + type: 'string', + }, + ], + TypeMsg1Amount: [ + { + name: 'amount', + type: 'string', + }, + { + name: 'denom', + type: 'string', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts b/packages/chain-sdk/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts new file mode 100644 index 00000000..130d62aa --- /dev/null +++ b/packages/chain-sdk/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts @@ -0,0 +1,16 @@ +export const MsgSetWithdrawAddressSDKTypeEIP712 = { + Msg1: [ + { + name: 'delegator_address', + type: 'string', + }, + { + name: 'type', + type: 'string', + }, + { + name: 'withdraw_address', + type: 'string', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts b/packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts new file mode 100644 index 00000000..3f1b482c --- /dev/null +++ b/packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts @@ -0,0 +1,16 @@ +export const MsgWithdrawDelegatorRewardSDKTypeEIP712 = { + Msg1: [ + { + name: 'type', + type: 'string', + }, + { + name: 'delegator_address', + type: 'string', + }, + { + name: 'validator_address', + type: 'string', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts b/packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts new file mode 100644 index 00000000..bb36077d --- /dev/null +++ b/packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts @@ -0,0 +1,12 @@ +export const MsgWithdrawValidatorCommissionSDKTypeEIP712 = { + Msg1: [ + { + name: 'type', + type: 'string', + }, + { + name: 'validator_address', + type: 'string', + }, + ], +}; From 4ef30b7ca1c6510dbfccfae612abfb6b16d170fc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 11 Sep 2023 14:59:01 +0800 Subject: [PATCH 227/433] chore: [ci] release (alpha) (#318) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 811d607b..d0fb7969 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -9,6 +9,7 @@ "@bnb-chain/greenfield-zk-crypto": "0.0.2" }, "changesets": [ + "fuzzy-cobras-cry", "giant-bikes-grab", "heavy-seas-talk", "itchy-ducks-chew", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 06aaecb4..7ae0cf94 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.6-alpha.5 + +### Patch Changes + +- Updated dependencies + [[`910c0cc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/910c0cc7ab7267e67b9cb59b702b70b0d1364c2b)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.5 + ## 0.0.6-alpha.4 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 2ca3581d..337bcd9f 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.6-alpha.4", + "version": "0.0.6-alpha.5", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 3dcbf551..f88a9e8c 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.9-alpha.5 + +### Patch Changes + +- Updated dependencies + [[`910c0cc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/910c0cc7ab7267e67b9cb59b702b70b0d1364c2b)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.5 + ## 0.0.9-alpha.4 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 0e03cb08..5b82db7f 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.9-alpha.4", + "version": "0.0.9-alpha.5", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 3ecb4da9..9995c779 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.5-alpha.5 + +### Patch Changes + +- [#317](https://github.com/bnb-chain/greenfield-js-sdk/pull/317) + [`910c0cc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/910c0cc7ab7267e67b9cb59b702b70b0d1364c2b) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Distribution api + ## 0.2.5-alpha.4 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 92f6d529..fd15a712 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.5-alpha.4", + "version": "0.2.5-alpha.5", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From ec4297da042e1b7c656d26b65d56fe52ac80365f Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Mon, 11 Sep 2023 15:41:58 +0800 Subject: [PATCH 228/433] feat: MsgSettle (#319) * feat: MsgSettle * Create fast-houses-do.md --- .changeset/fast-houses-do.md | 6 +++ examples/nextjs/src/components/vg/index.tsx | 48 +++++++++++++++++++ examples/nextjs/src/pages/tx.tsx | 3 ++ packages/chain-sdk/src/api/distribution.ts | 1 - packages/chain-sdk/src/api/virtualGroup.ts | 19 +++++++- packages/chain-sdk/src/clients/txClient.ts | 2 +- packages/chain-sdk/src/constants/typeUrl.ts | 1 + .../greenfield/virtualgroup/MsgSettle.ts | 20 ++++++++ 8 files changed, 97 insertions(+), 3 deletions(-) create mode 100644 .changeset/fast-houses-do.md create mode 100644 examples/nextjs/src/components/vg/index.tsx create mode 100644 packages/chain-sdk/src/messages/greenfield/virtualgroup/MsgSettle.ts diff --git a/.changeset/fast-houses-do.md b/.changeset/fast-houses-do.md new file mode 100644 index 00000000..2d39986d --- /dev/null +++ b/.changeset/fast-houses-do.md @@ -0,0 +1,6 @@ +--- +"@demo/wallet": patch +"@bnb-chain/greenfield-js-sdk": patch +--- + +feat: add vg settle api diff --git a/examples/nextjs/src/components/vg/index.tsx b/examples/nextjs/src/components/vg/index.tsx new file mode 100644 index 00000000..1c846356 --- /dev/null +++ b/examples/nextjs/src/components/vg/index.tsx @@ -0,0 +1,48 @@ +import { client, selectSp } from '@/client'; +import { useAccount } from 'wagmi'; + +export const VirtualGroup = () => { + const { address, connector } = useAccount(); + + return ( +
    +

    Virtual Group

    + + +
    +
    + ); +}; diff --git a/examples/nextjs/src/pages/tx.tsx b/examples/nextjs/src/pages/tx.tsx index a2c79f5f..2567e73c 100644 --- a/examples/nextjs/src/pages/tx.tsx +++ b/examples/nextjs/src/pages/tx.tsx @@ -15,6 +15,7 @@ import { PaymentComponent } from '@/components/payment'; import { Validator } from '@/components/validator'; import { Proposal } from '@/components/proposal'; import { Distribution } from '@/components/distribution'; +import { VirtualGroup } from '@/components/vg'; export default function Tx() { const isMounted = useIsMounted(); @@ -56,6 +57,8 @@ export default function Tx() {

    + +
    )} diff --git a/packages/chain-sdk/src/api/distribution.ts b/packages/chain-sdk/src/api/distribution.ts index 920dc352..3a0d5206 100644 --- a/packages/chain-sdk/src/api/distribution.ts +++ b/packages/chain-sdk/src/api/distribution.ts @@ -46,7 +46,6 @@ export interface IDistribution { @injectable() export class Distribution implements IDistribution { constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} - private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); public async setWithdrawAddress(msg: MsgSetWithdrawAddress) { return await this.txClient.tx( diff --git a/packages/chain-sdk/src/api/virtualGroup.ts b/packages/chain-sdk/src/api/virtualGroup.ts index 7857b3f2..54d05217 100644 --- a/packages/chain-sdk/src/api/virtualGroup.ts +++ b/packages/chain-sdk/src/api/virtualGroup.ts @@ -1,3 +1,5 @@ +import { TxClient } from '@/clients/txClient'; +import { MsgSettleSDKTypeEIP712 } from '@/messages/greenfield/virtualgroup/MsgSettle'; import { QueryGlobalVirtualGroupByFamilyIDRequest, QueryGlobalVirtualGroupByFamilyIDResponse, @@ -9,7 +11,9 @@ import { QueryGlobalVirtualGroupResponse, QueryParamsResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/virtualgroup/query'; -import { container, injectable } from 'tsyringe'; +import { MsgSettle } from '@bnb-chain/greenfield-cosmos-types/greenfield/virtualgroup/tx'; +import { container, delay, inject, injectable } from 'tsyringe'; +import { MsgSettleTypeUrl, TxResponse } from '..'; import { RpcQueryClient } from '../clients/queryclient'; export interface IVirtualGroup { @@ -30,10 +34,13 @@ export interface IVirtualGroup { getGlobalVirtualGroupFamily( request: QueryGlobalVirtualGroupFamilyRequest, ): Promise; + + settle(address: string, msg: MsgSettle): Promise; } @injectable() export class VirtualGroup implements IVirtualGroup { + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} private queryClient = container.resolve(RpcQueryClient); public async params() { @@ -60,4 +67,14 @@ export class VirtualGroup implements IVirtualGroup { const rpc = await this.queryClient.getVirtualGroupClient(); return await rpc.GlobalVirtualGroupFamily(request); } + + public async settle(address: string, msg: MsgSettle) { + return await this.txClient.tx( + MsgSettleTypeUrl, + address, + MsgSettleSDKTypeEIP712, + MsgSettle.toSDK(msg), + MsgSettle.encode(msg).finish(), + ); + } } diff --git a/packages/chain-sdk/src/clients/txClient.ts b/packages/chain-sdk/src/clients/txClient.ts index d5404b84..859a16ca 100644 --- a/packages/chain-sdk/src/clients/txClient.ts +++ b/packages/chain-sdk/src/clients/txClient.ts @@ -17,7 +17,7 @@ import { import { makeAuthInfoBytes } from '@cosmjs/proto-signing'; import { DeliverTxResponse, StargateClient } from '@cosmjs/stargate'; import { Tendermint37Client } from '@cosmjs/tendermint-rpc'; -import { arrayify } from '@ethersproject/bytes'; +import { arrayify, hexlify } from '@ethersproject/bytes'; import { signTypedData, SignTypedDataVersion } from '@metamask/eth-sig-util'; import { container, inject, injectable } from 'tsyringe'; import { diff --git a/packages/chain-sdk/src/constants/typeUrl.ts b/packages/chain-sdk/src/constants/typeUrl.ts index 1e997aa9..c8b085ad 100644 --- a/packages/chain-sdk/src/constants/typeUrl.ts +++ b/packages/chain-sdk/src/constants/typeUrl.ts @@ -39,3 +39,4 @@ export const MsgSetWithdrawAddressTypeUrl = '/cosmos.distribution.v1beta1.MsgSet export const MsgWithdrawValidatorCommissionTypeUrl = '/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission'; export const MsgFundCommunityPoolTypeUrl = '/cosmos.distribution.v1beta1.MsgFundCommunityPool'; +export const MsgSettleTypeUrl = '/greenfield.virtualgroup.MsgSettle'; diff --git a/packages/chain-sdk/src/messages/greenfield/virtualgroup/MsgSettle.ts b/packages/chain-sdk/src/messages/greenfield/virtualgroup/MsgSettle.ts new file mode 100644 index 00000000..2d2677e5 --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/virtualgroup/MsgSettle.ts @@ -0,0 +1,20 @@ +export const MsgSettleSDKTypeEIP712 = { + Msg1: [ + { + name: 'global_virtual_group_family_id', + type: 'uint32', + }, + { + name: 'global_virtual_group_ids', + type: 'uint32[]', + }, + { + name: 'storage_provider', + type: 'string', + }, + { + name: 'type', + type: 'string', + }, + ], +}; From f1e60a2498a9b686fa8e6644d9db9e05fc9ede0d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 11 Sep 2023 15:45:50 +0800 Subject: [PATCH 229/433] chore: [ci] release (alpha) (#320) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 12 ++++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 32 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index d0fb7969..edbafdff 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -9,6 +9,7 @@ "@bnb-chain/greenfield-zk-crypto": "0.0.2" }, "changesets": [ + "fast-houses-do", "fuzzy-cobras-cry", "giant-bikes-grab", "heavy-seas-talk", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 7ae0cf94..6afb9a5c 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,17 @@ # @demo/wallet +## 0.0.6-alpha.6 + +### Patch Changes + +- [#319](https://github.com/bnb-chain/greenfield-js-sdk/pull/319) + [`ec4297d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec4297da042e1b7c656d26b65d56fe52ac80365f) + Thanks [@rrr523](https://github.com/rrr523)! - feat: add vg settle api + +- Updated dependencies + [[`ec4297d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec4297da042e1b7c656d26b65d56fe52ac80365f)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.6 + ## 0.0.6-alpha.5 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 337bcd9f..be694db8 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.6-alpha.5", + "version": "0.0.6-alpha.6", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index f88a9e8c..f13a8d85 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.9-alpha.6 + +### Patch Changes + +- Updated dependencies + [[`ec4297d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec4297da042e1b7c656d26b65d56fe52ac80365f)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.6 + ## 0.0.9-alpha.5 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 5b82db7f..22a59675 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.9-alpha.5", + "version": "0.0.9-alpha.6", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 9995c779..1593d198 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.5-alpha.6 + +### Patch Changes + +- [#319](https://github.com/bnb-chain/greenfield-js-sdk/pull/319) + [`ec4297d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec4297da042e1b7c656d26b65d56fe52ac80365f) + Thanks [@rrr523](https://github.com/rrr523)! - feat: add vg settle api + ## 0.2.5-alpha.5 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index fd15a712..1601156c 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.5-alpha.5", + "version": "0.2.5-alpha.6", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From b38442819d2dc341859bef4404d8f118a0aa189d Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Mon, 11 Sep 2023 18:56:20 +0800 Subject: [PATCH 230/433] chore(example): Update custom tx (#321) --- .changeset/soft-onions-jog.md | 5 ++ examples/nextjs/package.json | 1 + .../nextjs/src/components/customtx/index.tsx | 90 +++++++++++++++++++ examples/nextjs/src/pages/tx.tsx | 4 + pnpm-lock.yaml | 3 + 5 files changed, 103 insertions(+) create mode 100644 .changeset/soft-onions-jog.md create mode 100644 examples/nextjs/src/components/customtx/index.tsx diff --git a/.changeset/soft-onions-jog.md b/.changeset/soft-onions-jog.md new file mode 100644 index 00000000..d951ab0f --- /dev/null +++ b/.changeset/soft-onions-jog.md @@ -0,0 +1,5 @@ +--- +'@demo/wallet': patch +--- + +chore: Update deps diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index be694db8..8912fa97 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -11,6 +11,7 @@ "lint": "next lint" }, "dependencies": { + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.23", "@bnb-chain/greenfield-js-sdk": "workspace:*", "@bnb-chain/greenfiled-file-handle": "workspace:*", "@cosmjs/encoding": "^0.29.5", diff --git a/examples/nextjs/src/components/customtx/index.tsx b/examples/nextjs/src/components/customtx/index.tsx new file mode 100644 index 00000000..6417a914 --- /dev/null +++ b/examples/nextjs/src/components/customtx/index.tsx @@ -0,0 +1,90 @@ +import { client } from '@/client'; +import { useAccount } from 'wagmi'; +import { MsgSend } from '@bnb-chain/greenfield-cosmos-types/cosmos/bank/v1beta1/tx'; +import { parseEther } from 'viem'; + +export const CustomTx = () => { + const { address } = useAccount(); + + return ( + <> +

    Custome Tx

    + +
    + + + ); +}; diff --git a/examples/nextjs/src/pages/tx.tsx b/examples/nextjs/src/pages/tx.tsx index 2567e73c..d4e8c6fa 100644 --- a/examples/nextjs/src/pages/tx.tsx +++ b/examples/nextjs/src/pages/tx.tsx @@ -16,6 +16,7 @@ import { Validator } from '@/components/validator'; import { Proposal } from '@/components/proposal'; import { Distribution } from '@/components/distribution'; import { VirtualGroup } from '@/components/vg'; +import { CustomTx } from '@/components/customtx'; export default function Tx() { const isMounted = useIsMounted(); @@ -60,6 +61,9 @@ export default function Tx() {
    +
    + +
    )}
    diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 34ba549f..ebb0a463 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -98,6 +98,9 @@ importers: examples/nextjs: dependencies: + '@bnb-chain/greenfield-cosmos-types': + specifier: 0.4.0-alpha.23 + version: 0.4.0-alpha.23 '@bnb-chain/greenfield-js-sdk': specifier: workspace:* version: link:../../packages/chain-sdk From 9cc4d1bbc6523355d11e323504c8d2b50217ec08 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 11 Sep 2023 18:57:57 +0800 Subject: [PATCH 231/433] chore: [ci] release (alpha) (#322) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index edbafdff..57906182 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -21,6 +21,7 @@ "short-moons-pretend", "shy-forks-sip", "soft-doors-perform", + "soft-onions-jog", "spicy-jokes-wave", "stale-beans-jog", "stupid-dodos-fold", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 6afb9a5c..18cdd62a 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.6-alpha.7 + +### Patch Changes + +- [#321](https://github.com/bnb-chain/greenfield-js-sdk/pull/321) + [`b384428`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b38442819d2dc341859bef4404d8f118a0aa189d) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + ## 0.0.6-alpha.6 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 8912fa97..59cbc3c3 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.6-alpha.6", + "version": "0.0.6-alpha.7", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", From 837d8f4ae83180cedddab23bd7195f7d1699af1e Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 12 Sep 2023 17:19:43 +0800 Subject: [PATCH 232/433] chore: Github Action issue close (#323) --- .github/workflows/issue-close.yaml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/workflows/issue-close.yaml diff --git a/.github/workflows/issue-close.yaml b/.github/workflows/issue-close.yaml new file mode 100644 index 00000000..e1533e98 --- /dev/null +++ b/.github/workflows/issue-close.yaml @@ -0,0 +1,25 @@ +name: Issue Close Require + +on: + schedule: + - cron: '0 0 * * *' + +jobs: + close-issues: + runs-on: ubuntu-latest + steps: + - name: need reproduce + uses: actions-cool/issues-helper@v3 + with: + actions: 'close-issues' + labels: '🤔 Need Reproduce' + inactive-day: 3 + + - name: needs more info + uses: actions-cool/issues-helper@v3 + with: + actions: 'close-issues' + labels: 'needs more info' + inactive-day: 3 + body: | + Since the issue was labeled with `needs more info`, but no response in 3 days. This issue will be closed. If you have any questions, you can comment and reply. From f3a7ce8f06d6bedf5e07bccccc4ada7676e79f2a Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 12 Sep 2023 17:37:16 +0800 Subject: [PATCH 233/433] feat: Bucket headBucketExtra api (#324) --- .changeset/big-actors-divide.md | 5 ++ packages/chain-sdk/src/api/bucket.ts | 90 +++++++++++++++------------- 2 files changed, 55 insertions(+), 40 deletions(-) create mode 100644 .changeset/big-actors-divide.md diff --git a/.changeset/big-actors-divide.md b/.changeset/big-actors-divide.md new file mode 100644 index 00000000..c292e2d5 --- /dev/null +++ b/.changeset/big-actors-divide.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: New Bucket API: `headBucketExtra` diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index c94e5877..c0a3c5d6 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -42,6 +42,7 @@ import { import { visibilityTypeFromJSON } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; import { QueryBucketNFTResponse, + QueryHeadBucketExtraResponse, QueryHeadBucketResponse, QueryNFTRequest, QueryPolicyForAccountRequest, @@ -95,30 +96,43 @@ import { Sp } from './sp'; import { Storage } from './storage'; export interface IBucket { - /** - * returns the signature info for the approval of preCreating resources - */ - getCreateBucketApproval( - configParam: CreateBucketApprovalRequest, - authType: AuthType, - ): Promise>; - /** * get approval of creating bucket and send createBucket txn to greenfield chain */ createBucket(params: CreateBucketApprovalRequest, authType: AuthType): Promise; + deleteBucket(msg: MsgDeleteBucket): Promise; + + deleteBucketPolicy( + operator: string, + bucketName: string, + principalAddr: string, + ): Promise; + + getBucketMeta(params: GetBucketMetaRequest): Promise>; + + getBucketPolicy(request: QueryPolicyForAccountRequest): Promise; + /** - * query the bucketInfo on chain, return the bucket info if exists + * return quota info of bucket of current month, include chain quota, free quota and consumed quota */ - headBucket(bucketName: string): Promise; + getBucketReadQuota( + configParam: ReadQuotaRequest, + authType: AuthType, + ): Promise>; /** - * query the bucketInfo on chain by bucketId, return the bucket info if exists + * returns the signature info for the approval of preCreating resources */ - headBucketById(bucketId: string): Promise; + getCreateBucketApproval( + configParam: CreateBucketApprovalRequest, + authType: AuthType, + ): Promise>; - headBucketNFT(request: QueryNFTRequest): Promise; + getMigrateBucketApproval( + params: MigrateBucketApprovalRequest, + authType: AuthType, + ): Promise>; /** * check if the permission of bucket is allowed to the user. @@ -130,37 +144,18 @@ export interface IBucket { ): Promise; /** - * return quota info of bucket of current month, include chain quota, free quota and consumed quota + * query the bucketInfo on chain, return the bucket info if exists */ - getBucketReadQuota( - configParam: ReadQuotaRequest, - authType: AuthType, - ): Promise>; - - deleteBucket(msg: MsgDeleteBucket): Promise; - - updateBucketInfo( - srcMsg: Omit & { chargedReadQuota?: string }, - ): Promise; - - putBucketPolicy(bucketName: string, srcMsg: Omit): Promise; - - deleteBucketPolicy( - operator: string, - bucketName: string, - principalAddr: string, - ): Promise; - - getBucketPolicy(request: QueryPolicyForAccountRequest): Promise; + headBucket(bucketName: string): Promise; - getMigrateBucketApproval( - params: MigrateBucketApprovalRequest, - authType: AuthType, - ): Promise>; + /** + * query the bucketInfo on chain by bucketId, return the bucket info if exists + */ + headBucketById(bucketId: string): Promise; - migrateBucket(params: MigrateBucketApprovalRequest, authType: AuthType): Promise; + headBucketExtra(bucketName: string): Promise; - getBucketMeta(params: GetBucketMetaRequest): Promise>; + headBucketNFT(request: QueryNFTRequest): Promise; listBucketReadRecords( params: ListBucketReadRecordRequest, @@ -179,6 +174,14 @@ export interface IBucket { listBucketsByPaymentAccount( params: ListBucketsByPaymentAccountRequest, ): Promise>; + + migrateBucket(params: MigrateBucketApprovalRequest, authType: AuthType): Promise; + + putBucketPolicy(bucketName: string, srcMsg: Omit): Promise; + + updateBucketInfo( + srcMsg: Omit & { chargedReadQuota?: string }, + ): Promise; } @injectable() @@ -328,6 +331,13 @@ export class Bucket implements IBucket { }); } + public async headBucketExtra(bucketName: string) { + const rpc = await this.queryClient.getBucketQueryClient(); + return await rpc.HeadBucketExtra({ + bucketName, + }); + } + public async headBucketNFT(request: QueryNFTRequest) { const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.HeadBucketNFT(request); From 23cd8af588643b13dba2acad0b2847fe021e5104 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 13 Sep 2023 10:15:06 +0800 Subject: [PATCH 234/433] chore: [ci] release (alpha) (#325) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 57906182..59ccc984 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -9,6 +9,7 @@ "@bnb-chain/greenfield-zk-crypto": "0.0.2" }, "changesets": [ + "big-actors-divide", "fast-houses-do", "fuzzy-cobras-cry", "giant-bikes-grab", diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 18cdd62a..22c6d945 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.6-alpha.8 + +### Patch Changes + +- Updated dependencies + [[`f3a7ce8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f3a7ce8f06d6bedf5e07bccccc4ada7676e79f2a)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.7 + ## 0.0.6-alpha.7 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 59cbc3c3..8178b3ea 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.6-alpha.7", + "version": "0.0.6-alpha.8", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index f13a8d85..34649318 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.9-alpha.7 + +### Patch Changes + +- Updated dependencies + [[`f3a7ce8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f3a7ce8f06d6bedf5e07bccccc4ada7676e79f2a)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.7 + ## 0.0.9-alpha.6 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 22a59675..27aeb514 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.9-alpha.6", + "version": "0.0.9-alpha.7", "type": "commonjs", "private": true, "scripts": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 1593d198..25f74622 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.5-alpha.7 + +### Patch Changes + +- [#324](https://github.com/bnb-chain/greenfield-js-sdk/pull/324) + [`f3a7ce8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f3a7ce8f06d6bedf5e07bccccc4ada7676e79f2a) + Thanks [@rrr523](https://github.com/rrr523)! - feat: New Bucket API: `headBucketExtra` + ## 0.2.5-alpha.6 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 1601156c..950c8a2a 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.5-alpha.6", + "version": "0.2.5-alpha.7", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 794cf3731a16b00d775a4e0e6fdc33383802c25a Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Thu, 14 Sep 2023 13:11:03 +0800 Subject: [PATCH 235/433] chore: Nodejs Example update (#326) --- examples/nodejs/README.md | 4 ++++ examples/nodejs/package.json | 9 ++------- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/examples/nodejs/README.md b/examples/nodejs/README.md index fc1882f9..b8852735 100644 --- a/examples/nodejs/README.md +++ b/examples/nodejs/README.md @@ -2,4 +2,8 @@ * [storage](./storage.js) +```bash +> node storage +``` + [More examples](../../packages/chain-sdk/tests/) diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 27aeb514..da326046 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -3,12 +3,7 @@ "version": "0.0.9-alpha.7", "type": "commonjs", "private": true, - "scripts": { - "dev": "cross-env NODE_ENV=development next dev", - "dev:qa": "cross-env NODE_ENV=test next dev", - "build": "", - "build:qa": "" - }, + "scripts": {}, "dependencies": { "@bnb-chain/greenfield-js-sdk": "workspace:*", "@bnb-chain/greenfiled-file-handle": "workspace:*" @@ -16,4 +11,4 @@ "devDependencies": { "cross-env": "^7.0.3" } -} \ No newline at end of file +} From 49c53a7540a4eb1599394fcd64ade03df4bca165 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Thu, 14 Sep 2023 14:10:12 +0800 Subject: [PATCH 236/433] chore: Example Update (#327) --- examples/nodejs/README.md | 4 ++-- examples/nodejs/env.js | 7 +++++++ examples/nodejs/storage.js | 9 ++------- 3 files changed, 11 insertions(+), 9 deletions(-) create mode 100644 examples/nodejs/env.js diff --git a/examples/nodejs/README.md b/examples/nodejs/README.md index b8852735..2b4115d9 100644 --- a/examples/nodejs/README.md +++ b/examples/nodejs/README.md @@ -1,9 +1,9 @@ # GreenField JS SDK Node.js -* [storage](./storage.js) +> NOTICE: Before running, you need to fill your account's private key and address in [env.js](./env.js). ```bash -> node storage +> node storage.js ``` [More examples](../../packages/chain-sdk/tests/) diff --git a/examples/nodejs/env.js b/examples/nodejs/env.js new file mode 100644 index 00000000..31f594d8 --- /dev/null +++ b/examples/nodejs/env.js @@ -0,0 +1,7 @@ +const ACCOUNT_ADDRESS = '0x1C893441AB6c1A75E01887087ea508bE8e07AAae'; +const ACCOUNT_PRIVATEKEY = '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032'; + +module.exports = { + ACCOUNT_ADDRESS, + ACCOUNT_PRIVATEKEY, +}; diff --git a/examples/nodejs/storage.js b/examples/nodejs/storage.js index ec2e88e8..3204f195 100644 --- a/examples/nodejs/storage.js +++ b/examples/nodejs/storage.js @@ -1,10 +1,5 @@ -const { - client, - selectSp, - ACCOUNT_ADDRESS, - ACCOUNT_PRIVATEKEY, - generateString, -} = require('./client'); +const { client, selectSp, generateString } = require('./client'); +const { ACCOUNT_ADDRESS, ACCOUNT_PRIVATEKEY } = require('./env'); (async () => { const bucketName = generateString(10); From a2d9b554bc90b3a7b9241b05eadadc04b2afb4bc Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Thu, 14 Sep 2023 14:12:29 +0800 Subject: [PATCH 237/433] Chore/example (#328) * chore: Example Update * chore: Example Update --- examples/nodejs/env.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/nodejs/env.js b/examples/nodejs/env.js index 31f594d8..d36e0c36 100644 --- a/examples/nodejs/env.js +++ b/examples/nodejs/env.js @@ -1,5 +1,5 @@ -const ACCOUNT_ADDRESS = '0x1C893441AB6c1A75E01887087ea508bE8e07AAae'; -const ACCOUNT_PRIVATEKEY = '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032'; +const ACCOUNT_ADDRESS = ''; +const ACCOUNT_PRIVATEKEY = ''; module.exports = { ACCOUNT_ADDRESS, From 4913d2debe117cf85aeb3eb98fad3f454cfeb9da Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Thu, 14 Sep 2023 14:29:07 +0800 Subject: [PATCH 238/433] chore: Update (#329) --- examples/nodejs/client.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/examples/nodejs/client.js b/examples/nodejs/client.js index af7da41d..7280c47f 100644 --- a/examples/nodejs/client.js +++ b/examples/nodejs/client.js @@ -1,10 +1,8 @@ const { Client } = require('@bnb-chain/greenfield-js-sdk'); +const { ACCOUNT_ADDRESS, ACCOUNT_PRIVATEKEY } = require('./env'); const client = Client.create('https://gnfd-testnet-fullnode-tendermint-ap.bnbchain.org', '5600'); -const ACCOUNT_ADDRESS = ''; -const ACCOUNT_PRIVATEKEY = ''; - const getSps = async () => { const sps = await client.sp.getStorageProviders(); const finalSps = (sps ?? []).filter((v) => v.endpoint.includes('https')); From 56a263ec0a39844d967ce99a7b58165cc686a16c Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Thu, 14 Sep 2023 16:36:00 +0800 Subject: [PATCH 239/433] feat: Custom Tx (#330) --- .changeset/warm-clouds-decide.md | 5 ++ .../nextjs/src/components/customtx/index.tsx | 63 +++++++-------- packages/chain-sdk/src/clients/txClient.ts | 80 +++++++++++++++++++ packages/chain-sdk/src/types/tx.ts | 19 +++++ 4 files changed, 135 insertions(+), 32 deletions(-) create mode 100644 .changeset/warm-clouds-decide.md diff --git a/.changeset/warm-clouds-decide.md b/.changeset/warm-clouds-decide.md new file mode 100644 index 00000000..028aaef4 --- /dev/null +++ b/.changeset/warm-clouds-decide.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Custom any tx by raw info diff --git a/examples/nextjs/src/components/customtx/index.tsx b/examples/nextjs/src/components/customtx/index.tsx index 6417a914..f6b0ee0f 100644 --- a/examples/nextjs/src/components/customtx/index.tsx +++ b/examples/nextjs/src/components/customtx/index.tsx @@ -1,7 +1,6 @@ import { client } from '@/client'; -import { useAccount } from 'wagmi'; import { MsgSend } from '@bnb-chain/greenfield-cosmos-types/cosmos/bank/v1beta1/tx'; -import { parseEther } from 'viem'; +import { useAccount } from 'wagmi'; export const CustomTx = () => { const { address } = useAccount(); @@ -14,61 +13,63 @@ export const CustomTx = () => { + + {/* */} ); }; diff --git a/examples/nextjs/src/components/policy/objectPolicy/index.tsx b/examples/nextjs/src/components/policy/objectPolicy/index.tsx index 45607b9d..5cc1751c 100644 --- a/examples/nextjs/src/components/policy/objectPolicy/index.tsx +++ b/examples/nextjs/src/components/policy/objectPolicy/index.tsx @@ -77,6 +77,41 @@ export const ObjectPolicy = () => { > put object policy + ); }; diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index c0a3c5d6..75288311 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -38,6 +38,7 @@ import { ActionType, Principal, PrincipalType, + principalTypeFromJSON, } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; import { visibilityTypeFromJSON } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; import { @@ -107,6 +108,7 @@ export interface IBucket { operator: string, bucketName: string, principalAddr: string, + principalType: keyof typeof PrincipalType, ): Promise; getBucketMeta(params: GetBucketMetaRequest): Promise>; @@ -496,10 +498,15 @@ export class Bucket implements IBucket { return this.storage.putPolicy(msg); } - public async deleteBucketPolicy(operator: string, bucketName: string, principalAddr: string) { + public async deleteBucketPolicy( + operator: string, + bucketName: string, + principalAddr: string, + principalType: keyof typeof PrincipalType, + ) { const resource = GRNToString(newBucketGRN(bucketName)); const principal: Principal = { - type: PrincipalType.PRINCIPAL_TYPE_GNFD_ACCOUNT, + type: principalTypeFromJSON(principalType), value: principalAddr, }; diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index d47ad1db..41c217f3 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -31,6 +31,7 @@ import { ActionType, Principal, PrincipalType, + principalTypeFromJSON, } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; import { redundancyTypeFromJSON, @@ -148,6 +149,7 @@ export interface IObject { bucketName: string, objectName: string, principalAddr: string, + principalType: keyof typeof PrincipalType, ): Promise; isObjectPermissionAllowed( @@ -669,10 +671,11 @@ export class Objectt implements IObject { bucketName: string, objectName: string, principalAddr: string, + principalType: keyof typeof PrincipalType, ) { const resource = GRNToString(newObjectGRN(bucketName, objectName)); const principal: Principal = { - type: PrincipalType.PRINCIPAL_TYPE_GNFD_ACCOUNT, + type: principalTypeFromJSON(principalType), value: principalAddr, }; diff --git a/packages/chain-sdk/src/clients/txClient.ts b/packages/chain-sdk/src/clients/txClient.ts index 1fa4ad21..a25962be 100644 --- a/packages/chain-sdk/src/clients/txClient.ts +++ b/packages/chain-sdk/src/clients/txClient.ts @@ -364,7 +364,7 @@ export class TxClient implements ITxClient { ); const eip712 = createEIP712(wrapperTypes, this.chainId, messages); - // console.log('eip712', eip712); + const { pubKey, signature } = privateKey ? this.getSignByPriKey(eip712, privateKey) : await this.getSignByWallet(eip712, accountInfo.address, signTypedDataCallback); diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts index 3b349fb0..146957f3 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts @@ -12,5 +12,19 @@ export const MsgDeletePolicySDKTypeEIP712 = { name: 'resource', type: 'string', }, + { + name: 'principal', + type: 'TypeMsg1Principal', + }, + ], + TypeMsg1Principal: [ + { + name: 'type', + type: 'string', + }, + { + name: 'value', + type: 'string', + }, ], }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ebb0a463..88341406 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -98,9 +98,6 @@ importers: examples/nextjs: dependencies: - '@bnb-chain/greenfield-cosmos-types': - specifier: 0.4.0-alpha.23 - version: 0.4.0-alpha.23 '@bnb-chain/greenfield-js-sdk': specifier: workspace:* version: link:../../packages/chain-sdk @@ -160,7 +157,7 @@ importers: version: 5.2.1 next: specifier: 13.1.6 - version: 13.1.6(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0) + version: 13.1.6(react-dom@18.2.0)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 @@ -373,6 +370,7 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 + dev: true /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} @@ -380,10 +378,12 @@ packages: dependencies: '@babel/highlight': 7.22.13 chalk: 2.4.2 + dev: true /@babel/compat-data@7.22.9: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} + dev: true /@babel/core@7.22.15: resolution: {integrity: sha512-PtZqMmgRrvj8ruoEOIwVA3yoF91O+Hgw9o7DAUTNBA6Mo2jpu31clx9a7Nz/9JznqetTR6zwfC4L3LAjKQXUwA==} @@ -406,6 +406,7 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true /@babel/eslint-parser@7.21.8(@babel/core@7.22.15)(eslint@8.48.0): resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} @@ -429,6 +430,7 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 + dev: true /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} @@ -453,6 +455,7 @@ packages: browserslist: 4.21.10 lru-cache: 5.1.1 semver: 6.3.1 + dev: true /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.22.15): resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} @@ -505,6 +508,7 @@ packages: /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-function-name@7.22.5: resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} @@ -512,12 +516,14 @@ packages: dependencies: '@babel/template': 7.22.15 '@babel/types': 7.22.15 + dev: true /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.15 + dev: true /@babel/helper-member-expression-to-functions@7.22.3: resolution: {integrity: sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA==} @@ -531,6 +537,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.15 + dev: true /@babel/helper-module-transforms@7.22.15(@babel/core@7.22.15): resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} @@ -544,6 +551,7 @@ packages: '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.15 + dev: true /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} @@ -591,6 +599,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.15 + dev: true /@babel/helper-skip-transparent-expression-wrappers@7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} @@ -604,18 +613,22 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.15 + dev: true /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-validator-identifier@7.22.15: resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-validator-option@7.22.15: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-wrap-function@7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} @@ -638,6 +651,7 @@ packages: '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color + dev: true /@babel/highlight@7.22.13: resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} @@ -646,6 +660,7 @@ packages: '@babel/helper-validator-identifier': 7.22.15 chalk: 2.4.2 js-tokens: 4.0.0 + dev: true /@babel/parser@7.22.15: resolution: {integrity: sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==} @@ -653,6 +668,7 @@ packages: hasBin: true dependencies: '@babel/types': 7.22.15 + dev: true /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} @@ -1791,6 +1807,7 @@ packages: '@babel/code-frame': 7.22.13 '@babel/parser': 7.22.15 '@babel/types': 7.22.15 + dev: true /@babel/traverse@7.22.15: resolution: {integrity: sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==} @@ -1808,6 +1825,7 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: true /@babel/types@7.22.15: resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} @@ -1816,6 +1834,7 @@ packages: '@babel/helper-string-parser': 7.22.5 '@babel/helper-validator-identifier': 7.22.15 to-fast-properties: 2.0.0 + dev: true /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -2569,7 +2588,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 espree: 9.6.1 globals: 13.20.0 ignore: 5.2.4 @@ -2970,7 +2989,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -3218,14 +3237,17 @@ packages: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.19 + dev: true /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} + dev: true /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} + dev: true /@jridgewell/source-map@0.3.5: resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} @@ -3236,12 +3258,14 @@ packages: /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true /@jridgewell/trace-mapping@0.3.19: resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 + dev: true /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -3345,7 +3369,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@types/debug': 4.1.7 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 semver: 7.5.2 superstruct: 1.0.3 transitivePeerDependencies: @@ -4429,7 +4453,7 @@ packages: '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.48.0 typescript: 4.9.5 transitivePeerDependencies: @@ -4490,7 +4514,7 @@ packages: dependencies: '@typescript-eslint/types': 5.59.11 '@typescript-eslint/visitor-keys': 5.59.11 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.2 @@ -5269,7 +5293,7 @@ packages: resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==} engines: {node: '>= 8.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 depd: 2.0.0 humanize-ms: 1.2.1 transitivePeerDependencies: @@ -5806,6 +5830,7 @@ packages: electron-to-chromium: 1.4.508 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) + dev: true /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -6176,6 +6201,7 @@ packages: /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -6404,6 +6430,17 @@ packages: dependencies: ms: 2.1.3 + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -6415,6 +6452,7 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 + dev: true /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -6623,6 +6661,7 @@ packages: /electron-to-chromium@1.4.508: resolution: {integrity: sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==} + dev: true /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -6773,6 +6812,7 @@ packages: /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} + dev: true /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} @@ -6863,7 +6903,7 @@ packages: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 enhanced-resolve: 5.15.0 eslint: 8.48.0 eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) @@ -7095,7 +7135,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -7599,6 +7639,7 @@ packages: /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + dev: true /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} @@ -7711,6 +7752,7 @@ packages: /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + dev: true /globals@13.20.0: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} @@ -8801,6 +8843,7 @@ packages: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true + dev: true /json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} @@ -8846,6 +8889,7 @@ packages: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true + dev: true /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -9164,6 +9208,7 @@ packages: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 + dev: true /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} @@ -9414,7 +9459,7 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true - /next@13.1.6(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0): + /next@13.1.6(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==} engines: {node: '>=14.6.0'} hasBin: true @@ -9438,7 +9483,7 @@ packages: postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.22.15)(react@18.2.0) + styled-jsx: 5.1.1(react@18.2.0) optionalDependencies: '@next/swc-android-arm-eabi': 13.1.6 '@next/swc-android-arm64': 13.1.6 @@ -9484,6 +9529,7 @@ packages: /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + dev: true /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -10889,7 +10935,7 @@ packages: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: false - /styled-jsx@5.1.1(@babel/core@7.22.15)(react@18.2.0): + /styled-jsx@5.1.1(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -10902,7 +10948,6 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.22.15 client-only: 0.0.1 react: 18.2.0 dev: false @@ -10933,6 +10978,7 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 + dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -11050,6 +11096,7 @@ packages: /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} + dev: true /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -11306,6 +11353,7 @@ packages: browserslist: 4.21.10 escalade: 3.1.1 picocolors: 1.0.0 + dev: true /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -11754,6 +11802,7 @@ packages: /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} From 0c138c7c0b09a358b441020f7b972ee6b6ea1ecf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 14 Sep 2023 20:14:36 +0800 Subject: [PATCH 242/433] chore: [ci] release (alpha) (#333) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + examples/nextjs/CHANGELOG.md | 8 ++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 8 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 8 ++++++++ packages/chain-sdk/package.json | 2 +- 7 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 5e5d6efa..77957a01 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -26,6 +26,7 @@ "spicy-jokes-wave", "stale-beans-jog", "stupid-dodos-fold", + "tender-bats-help", "violet-pillows-exercise", "warm-clouds-decide" ] diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 4e508ec3..0f230006 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/wallet +## 0.0.6-alpha.10 + +### Patch Changes + +- Updated dependencies + [[`88acc61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/88acc61ef8e9826a9805a56f92d6321985a07e9a)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.9 + ## 0.0.6-alpha.9 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index eff92703..a673908d 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.6-alpha.9", + "version": "0.0.6-alpha.10", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index d7b14986..ab71d1e7 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,13 @@ # @demo/nodejs +## 0.0.9-alpha.9 + +### Patch Changes + +- Updated dependencies + [[`88acc61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/88acc61ef8e9826a9805a56f92d6321985a07e9a)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.9 + ## 0.0.9-alpha.8 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 25c8cd10..86d96b6d 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.9-alpha.8", + "version": "0.0.9-alpha.9", "type": "commonjs", "private": true, "scripts": {}, diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index b98d55a5..8f2f1e20 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.5-alpha.9 + +### Patch Changes + +- [#332](https://github.com/bnb-chain/greenfield-js-sdk/pull/332) + [`88acc61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/88acc61ef8e9826a9805a56f92d6321985a07e9a) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Delete Policy + ## 0.2.5-alpha.8 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 6debc1d7..f5c603ab 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.5-alpha.8", + "version": "0.2.5-alpha.9", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From 03be21724f3c2b04145ff5925a41726edc381832 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 15 Sep 2023 18:56:54 +0800 Subject: [PATCH 243/433] Feat/create app (#334) * feat: Template Init * feat: Template Init * feat: Create App Commander --- .changeset/small-pillows-raise.md | 5 + README.md | 7 +- package.json | 6 +- packages/chain-sdk/package.json | 4 - packages/create-gnfd-app/README.md | 7 + packages/create-gnfd-app/createApp.ts | 58 + packages/create-gnfd-app/example.gif | Bin 0 -> 81717 bytes .../helpers/get-pkg-manager.ts | 15 + .../helpers/get-template-url.ts | 3 + .../helpers/install-template.ts | 58 + .../helpers/is-folder-empty.ts | 58 + .../create-gnfd-app/helpers/is-writeable.ts | 14 + packages/create-gnfd-app/helpers/spinner.ts | 20 + packages/create-gnfd-app/index.ts | 94 ++ packages/create-gnfd-app/package.json | 45 + packages/create-gnfd-app/rollup.config.js | 35 + packages/create-gnfd-app/templates.ts | 7 + packages/create-gnfd-app/tsconfig.json | 13 + packages/create-gnfd-app/types/index.d.ts | 15 + pnpm-lock.yaml | 1065 +++++++++++++++-- 20 files changed, 1400 insertions(+), 129 deletions(-) create mode 100644 .changeset/small-pillows-raise.md create mode 100644 packages/create-gnfd-app/README.md create mode 100644 packages/create-gnfd-app/createApp.ts create mode 100644 packages/create-gnfd-app/example.gif create mode 100644 packages/create-gnfd-app/helpers/get-pkg-manager.ts create mode 100644 packages/create-gnfd-app/helpers/get-template-url.ts create mode 100644 packages/create-gnfd-app/helpers/install-template.ts create mode 100644 packages/create-gnfd-app/helpers/is-folder-empty.ts create mode 100644 packages/create-gnfd-app/helpers/is-writeable.ts create mode 100644 packages/create-gnfd-app/helpers/spinner.ts create mode 100644 packages/create-gnfd-app/index.ts create mode 100644 packages/create-gnfd-app/package.json create mode 100644 packages/create-gnfd-app/rollup.config.js create mode 100644 packages/create-gnfd-app/templates.ts create mode 100644 packages/create-gnfd-app/tsconfig.json create mode 100644 packages/create-gnfd-app/types/index.d.ts diff --git a/.changeset/small-pillows-raise.md b/.changeset/small-pillows-raise.md new file mode 100644 index 00000000..6620facd --- /dev/null +++ b/.changeset/small-pillows-raise.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/create-gnfd-app': patch +--- + +feat: 🎉 Create App Commander diff --git a/README.md b/README.md index e2a7a1d9..47e339dc 100644 --- a/README.md +++ b/README.md @@ -30,18 +30,19 @@ You can try out some examples directly in your browser through Stackblitz: ### Running Examples Locally Clone the project and install dependencies: + ```bash > git clone git@github.com:bnb-chain/greenfield-js-sdk.git > cd greenfield-js-sdk > pnpm install ``` -and build package: +Build package: ```bash -> pnpm run -r build +> pnpm run -F "./packages/**" -r build ``` -and then copy env template file: +copy env template file: ```bash > cp .env.simple .env ``` diff --git a/package.json b/package.json index 2fd95489..624b0aec 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,10 @@ "@rollup/plugin-node-resolve": "^13.3.0", "@rollup/plugin-strip": "^3.0.2", "@rollup/plugin-typescript": "^8.5.0", + "rollup": "^2.79.1", + "rollup-plugin-auto-external": "^2.0.0", + "rollup-plugin-polyfill-node": "^0.10.2", + "rollup-plugin-terser": "^7.0.2", "@types/chai": "^4.3.5", "@types/mocha": "^9.1.1", "@types/node": "^18.16.18", @@ -45,4 +49,4 @@ "prettier": "^2.8.8", "rimraf": "^3.0.2" } -} \ No newline at end of file +} diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index f5c603ab..4858ac85 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -85,10 +85,6 @@ "@types/xml2js": "^0.4.11", "jest": "^29.5.0", "mime": "^3.0.0", - "rollup": "^2.79.1", - "rollup-plugin-auto-external": "^2.0.0", - "rollup-plugin-polyfill-node": "^0.10.2", - "rollup-plugin-terser": "^7.0.2", "ts-jest": "^29.1.0", "ts-node": "^10.9.1", "tslib": "^2.5.0", diff --git a/packages/create-gnfd-app/README.md b/packages/create-gnfd-app/README.md new file mode 100644 index 00000000..b4a76f19 --- /dev/null +++ b/packages/create-gnfd-app/README.md @@ -0,0 +1,7 @@ +# Create Greemfielf App + +`create-gnfd-app` allows you to create a new Greenfield app within seconds. + +```bash +> npx @bnb-chain/create-gnfd-app +``` diff --git a/packages/create-gnfd-app/createApp.ts b/packages/create-gnfd-app/createApp.ts new file mode 100644 index 00000000..dd270cd2 --- /dev/null +++ b/packages/create-gnfd-app/createApp.ts @@ -0,0 +1,58 @@ +import download from 'download-git-repo'; +import path from 'path'; +import { green } from 'picocolors'; +import { PackageManager } from './helpers/get-pkg-manager'; +import { installTemplate, TemplateType } from './helpers/install-template'; +import { isFolderEmpty } from './helpers/is-folder-empty'; +import { isWriteable, makeDir } from './helpers/is-writeable'; +import { failSpinner, startSpinner, succeedSpiner } from './helpers/spinner'; +import { TEMPLATES_MAP } from './templates'; + +export async function createApp({ + appPath, + packageManager, + template, +}: { + appPath: string; + packageManager: PackageManager; + template: TemplateType; +}) { + const root = path.resolve(appPath); + if (!(await isWriteable(path.dirname(root)))) { + /* eslint-disable-next-line no-console */ + console.error( + `The application path is not writable, please check folder permissions and try again. + It is likely you do not have write permissions for this folder. + `, + ); + process.exit(1); + } + + const appName = path.basename(root); + await makeDir(root); + if (!isFolderEmpty(root, appName)) { + process.exit(1); + } + + /* eslint-disable-next-line no-console */ + console.log(`Creating a new Greenfield app in ${green(root)}.`); + process.chdir(root); + + startSpinner('downloading template...'); + download(TEMPLATES_MAP[template], '.', { clone: false }, (err) => { + if (err) { + failSpinner(err.message); + return; + } + + succeedSpiner(`download template - ${template} success`); + + return installTemplate({ + appName, + root, + packageManager, + }); + }).then(() => { + // ... + }); +} diff --git a/packages/create-gnfd-app/example.gif b/packages/create-gnfd-app/example.gif new file mode 100644 index 0000000000000000000000000000000000000000..c81ecdee2cbaf74b38a41347b91ebe269bf12d9d GIT binary patch literal 81717 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≪hWsL1JR$7$>yJ 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
    @-cOa`RY;n9ZG-d;vea$SKtmrRsB4{>#i| z99s1huV|U0j1n{r`0Zp)&BdqsNXD04SRV1Je}j8*#IpEtV59yCBNA3mr6v7kOk{Rl z))-m@(U?jSkd8yRQQ092Rj293r{*rV;gxrHN;Y-7* z-1*CK&4i$nKDY})h&UDT8=fUiCTT7>9^kE4izh&f1dJk0#F)FNkV-Vk4|LX=pkTU* zne_0a80H4}UC(6U_=bwP7VwKa4H>z)@*}wD@p(&-)_6u1CYO;cw<+V^1V0 z_)SnFp^HmzNR;Bsg-w*%B&aG3k-~{l5dkISTkKv{F&ugeeYyg`y6)p-`7^S@6zC)Y ztn`PQ>~jr%$CR{IZMMdSv!x359LuJYQilFY7wmHv8LOPCrQXGVtKiB)f!I^!48Fb7 z(z*aHwdvX-Q6f1@KT=O#G}FJfy+B90SwKs9i$mYVQ9XA(*pbr8sZ>nmO>>LHW|!=s z<7W3A2`nB?Q^T(Q)<4qyo19sCq5JtyDqn9$k2SnsiJ78g5Rs3d?oMO{8|O;_b&(HI zCMs_~mew0GVIE~!hCDCiHG<$GYK#P}FoRSqS6}sqNHKF#2)m%-p(4(q>#SPQhwFXj zcm@$|$M|mY>1{)tx{T8t&H0{~TLruG2~T=X^#$=IMNB|mn9;UYB($pD*A?0RKDkZ3 zLIU+mOCL`T==QysftSBEPt+h;KHkM&38Q+p=6x@tdZmH$AOWNwBT-O6|^fR1b4lJlc?A#G`ygG@@BI9bI};_m-1fnV%LLX1O)_zXcGA^KH#pg zO<`Gj!k9G~474Pu%f#dG>=gjS(0=|*>Y|Rl|N1WgS>XUZRl<3iBgYL~hvhPelVVo> zM7AL>O6A8b^e1QNy&E2eXNGABZK$Lu))}Fk8&rf&A!E4XSQ2?tmXV9bU}argpVjIa zB9E2*PJoD!K4uX3!TLsMiWC%{`XL&6Y7MX| zEO!U=i0q8i%GAXICRce#*^? zRdzIU(OKX?i-v<$1G;}YE)Li&R={}UG1ZUfQB`9XGE zxf9 { + return `https://github.com:rrr523/greenfield-${template}-template#master`; +}; diff --git a/packages/create-gnfd-app/helpers/install-template.ts b/packages/create-gnfd-app/helpers/install-template.ts new file mode 100644 index 00000000..ecf680d7 --- /dev/null +++ b/packages/create-gnfd-app/helpers/install-template.ts @@ -0,0 +1,58 @@ +import spawn from 'cross-spawn'; +import fs from 'fs'; +import { removeSync } from 'fs-extra'; +import handlebars from 'handlebars'; +import { cyan } from 'picocolors'; +import { PackageManager } from './get-pkg-manager'; +import { failSpinner, startSpinner, succeedSpiner } from './spinner'; + +export const SRC_DIR_NAMES = ['app', 'pages', 'styles']; + +export type TemplateType = 'nextjs' | 'cra'; +export type TemplateMode = 'js' | 'ts'; + +export const installTemplate = async ({ appName, root, packageManager }: InstallTemplateArgs) => { + /** + * Create a package.json for the new project and write it to disk. + */ + const packageJsonPath = `${root}/package.json`; + const packageJsonContent = fs.readFileSync(packageJsonPath, 'utf-8'); + const packageJsonResult = handlebars.compile(packageJsonContent)({ + name: appName, + }); + fs.writeFileSync(packageJsonPath, packageJsonResult); + + /** + * delete package-lock.json + */ + removeSync(`${root}/package-lock.json`); + + /** + * install dependencies + */ + startSpinner(cyan(`Installing dependencies with ${packageManager}...`)); + const child = spawn(packageManager, ['install'], { + // stdio: 'inherit', + // env: { + // ...process.env, + // ADBLOCK: '1', + // NODE_ENV: 'development', + // DISABLE_OPENCOLLECTIVE: '1', + // }, + }); + + child.on('close', (code) => { + if (code !== 0) { + failSpinner('Failed to install dependencies.'); + return; + } + + succeedSpiner('Install dependencies successfully.'); + }); +}; + +export interface InstallTemplateArgs { + appName: string; + root: string; + packageManager: PackageManager; +} diff --git a/packages/create-gnfd-app/helpers/is-folder-empty.ts b/packages/create-gnfd-app/helpers/is-folder-empty.ts new file mode 100644 index 00000000..9cea216b --- /dev/null +++ b/packages/create-gnfd-app/helpers/is-folder-empty.ts @@ -0,0 +1,58 @@ +/* eslint-disable no-console */ +import { green, blue } from 'picocolors'; +import fs from 'fs'; +import path from 'path'; + +export function isFolderEmpty(root: string, name: string): boolean { + const validFiles = [ + '.DS_Store', + '.git', + '.gitattributes', + '.gitignore', + '.gitlab-ci.yml', + '.hg', + '.hgcheck', + '.hgignore', + '.idea', + '.npmignore', + '.travis.yml', + 'LICENSE', + 'Thumbs.db', + 'docs', + 'mkdocs.yml', + 'npm-debug.log', + 'yarn-debug.log', + 'yarn-error.log', + 'yarnrc.yml', + '.yarn', + ]; + + const conflicts = fs + .readdirSync(root) + .filter((file) => !validFiles.includes(file)) + // Support IntelliJ IDEA-based editors + .filter((file) => !/\.iml$/.test(file)); + + if (conflicts.length > 0) { + console.log(`The directory ${green(name)} contains files that could conflict:`); + console.log(); + for (const file of conflicts) { + try { + const stats = fs.lstatSync(path.join(root, file)); + if (stats.isDirectory()) { + console.log(` ${blue(file)}/`); + } else { + console.log(` ${file}`); + } + } catch { + console.log(` ${file}`); + } + } + console.log(); + console.log('Either try using a new directory name, or remove the files listed above.'); + console.log(); + return false; + } + + return true; +} diff --git a/packages/create-gnfd-app/helpers/is-writeable.ts b/packages/create-gnfd-app/helpers/is-writeable.ts new file mode 100644 index 00000000..32481d1a --- /dev/null +++ b/packages/create-gnfd-app/helpers/is-writeable.ts @@ -0,0 +1,14 @@ +import fs from 'fs'; + +export async function isWriteable(directory: string): Promise { + try { + await fs.promises.access(directory, (fs.constants || fs).W_OK); + return true; + } catch (err) { + return false; + } +} + +export function makeDir(root: string, options = { recursive: true }): Promise { + return fs.promises.mkdir(root, options); +} diff --git a/packages/create-gnfd-app/helpers/spinner.ts b/packages/create-gnfd-app/helpers/spinner.ts new file mode 100644 index 00000000..7e789384 --- /dev/null +++ b/packages/create-gnfd-app/helpers/spinner.ts @@ -0,0 +1,20 @@ +import ora from 'ora'; +import { red } from 'picocolors'; + +const spinner = ora(); + +export const startSpinner = (text?: string) => { + const msg = `${text}...\n`; + spinner.start(msg); +}; + +export const succeedSpiner = (text?: string) => { + spinner.stopAndPersist({ + symbol: '🎉', + text: `${text}\n`, + }); +}; + +export const failSpinner = (text?: string) => { + spinner.fail(red(text)); +}; diff --git a/packages/create-gnfd-app/index.ts b/packages/create-gnfd-app/index.ts new file mode 100644 index 00000000..4bb9b646 --- /dev/null +++ b/packages/create-gnfd-app/index.ts @@ -0,0 +1,94 @@ +import prompts from '@inquirer/prompts'; +import Commander from 'commander'; +import fs, { readFileSync } from 'fs'; +import path, { resolve } from 'path'; +import { cyan, green } from 'picocolors'; +import validateNpmName from 'validate-npm-package-name'; +import { createApp } from './createApp'; +import { getPkgManager, PackageManager } from './helpers/get-pkg-manager'; +import { TemplateType } from './helpers/install-template'; +import { isFolderEmpty } from './helpers/is-folder-empty'; + +const packageJson = JSON.parse(readFileSync(resolve(__dirname, '../package.json'), 'utf-8')); +let projectPath = ''; +// const projectName = 'xxx'; + +const program = new Commander.Command(packageJson.name); +program + .version(packageJson.version) + .argument('[project-directory]') + .usage(`${green('[project-directory]')} [options]`) + .action((str) => { + projectPath = str; + }) + .allowUnknownOption() + .parse(process.argv); + +async function runInitPrompts(): Promise { + if (!projectPath) { + projectPath = await prompts.input({ + message: 'What is your project named?', + validate: (val) => { + const { validForNewPackages } = validateNpmName(val); + if (!validForNewPackages) { + return 'Invalid NPM name'; + } + return true; + }, + }); + + projectPath = projectPath.trim(); + } + + if (!projectPath) { + /* eslint-disable-next-line no-console */ + console.log( + '\nPlease specify the project directory:\n' + + ` ${cyan(program.name())} ${green('')}\n` + + 'For example:\n' + + ` ${cyan(program.name())} ${green('my-next-app')}\n\n` + + `Run ${cyan(`${program.name()} --help`)} to see all options.`, + ); + process.exit(1); + } + + const template: TemplateType = await prompts.select({ + message: 'select a template?', + choices: [ + { name: 'nextjs', value: 'nextjs' }, + { name: 'create-react-app', value: 'cra' }, + ], + }); + + const packageManager: PackageManager = await prompts.select({ + message: 'select a package manager?', + choices: [ + { name: 'npm', value: 'npm' }, + { name: 'yarn', value: 'yarn' }, + { name: 'pnpm', value: 'pnpm' }, + ], + }); + + const resolvedProjectPath = path.resolve(projectPath); + const root = path.resolve(resolvedProjectPath); + const appName = path.basename(root); + const folderExists = fs.existsSync(root); + + if (folderExists && !isFolderEmpty(root, appName)) { + process.exit(1); + } + + try { + await createApp({ + appPath: resolvedProjectPath, + packageManager, + template, + }); + } catch (reason) { + // . + } +} + +runInitPrompts().catch(() => { + // ignore error +}); diff --git a/packages/create-gnfd-app/package.json b/packages/create-gnfd-app/package.json new file mode 100644 index 00000000..72d7351b --- /dev/null +++ b/packages/create-gnfd-app/package.json @@ -0,0 +1,45 @@ +{ + "name": "@bnb-chain/create-gnfd-app", + "version": "0.0.1", + "description": "help you create greenfield project quickly", + "main": "index.js", + "bin": { + "create-gnfd-app": "./dist/index.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/bnb-chain/greenfield-js-sdk", + "directory": "packages/create-gnfd-app" + }, + "homepage": "https://github.com/bnb-chain/greenfield-js-sdk/packages/create-gnfd-app#readme", + "scripts": { + "dev": "rollup -cw", + "build": "rollup -c" + }, + "keywords": [ + "greenfield", + "quickstart", + "create-app" + ], + "author": "", + "license": "MIT", + "dependencies": { + "@inquirer/prompts": "^3.1.1", + "commander": "^11.0.0", + "cross-spawn": "^7.0.3", + "download-git-repo": "^3.0.2", + "fs-extra": "^11.1.1", + "handlebars": "^4.7.8", + "ora": "^5.4.0", + "picocolors": "^1.0.0", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": ">=16.14.0" + }, + "devDependencies": { + "@types/cross-spawn": "^6.0.3", + "@types/fs-extra": "^11.0.1", + "@types/validate-npm-package-name": "^4.0.0" + } +} diff --git a/packages/create-gnfd-app/rollup.config.js b/packages/create-gnfd-app/rollup.config.js new file mode 100644 index 00000000..38168c72 --- /dev/null +++ b/packages/create-gnfd-app/rollup.config.js @@ -0,0 +1,35 @@ +import commonjs from '@rollup/plugin-commonjs'; +import typescript from '@rollup/plugin-typescript'; +import nodePolyfills from 'rollup-plugin-polyfill-node'; +import autoExternal from 'rollup-plugin-auto-external'; +import pkg from './package.json'; + +function resolveExternal() { + return [...Object.keys(pkg.dependencies || {}), ...Object.keys(pkg.peerDependencies || {})]; +} + +export default async () => { + return [ + { + input: './index.ts', + output: { + dir: './dist', + format: 'cjs', + banner: '#!/usr/bin/env node', + }, + external: resolveExternal(), + plugins: [ + autoExternal(), + nodePolyfills({ + include: 'node_modules/**', + }), + commonjs({ + ignoreDynamicRequires: true, + }), + typescript({ + tsconfig: './tsconfig.json', + }), + ], + }, + ]; +}; diff --git a/packages/create-gnfd-app/templates.ts b/packages/create-gnfd-app/templates.ts new file mode 100644 index 00000000..683d5163 --- /dev/null +++ b/packages/create-gnfd-app/templates.ts @@ -0,0 +1,7 @@ +import { getTemplateUrl } from './helpers/get-template-url'; +import { TemplateType } from './helpers/install-template'; + +export const TEMPLATES_MAP: Record = { + nextjs: getTemplateUrl('nextjs'), + cra: getTemplateUrl('cra'), +}; diff --git a/packages/create-gnfd-app/tsconfig.json b/packages/create-gnfd-app/tsconfig.json new file mode 100644 index 00000000..1964a64d --- /dev/null +++ b/packages/create-gnfd-app/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "es2019", + "moduleResolution": "node", + "strict": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "skipLibCheck": false + }, + "exclude": [ + "dist" + ] +} diff --git a/packages/create-gnfd-app/types/index.d.ts b/packages/create-gnfd-app/types/index.d.ts new file mode 100644 index 00000000..93e550b5 --- /dev/null +++ b/packages/create-gnfd-app/types/index.d.ts @@ -0,0 +1,15 @@ +declare module 'download-git-repo' { + interface Options { + clone?: boolean; + headers?: Record; + } + function download(repo: string, dest: string, opts: Options): Promise; + function download( + repo: string, + dest: string, + opts: Options, + cb: (err?: Error) => void, + ): Promise; + + export = download; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 88341406..1410fc42 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -95,6 +95,18 @@ importers: rimraf: specifier: ^3.0.2 version: 3.0.2 + rollup: + specifier: ^2.79.1 + version: 2.79.1 + rollup-plugin-auto-external: + specifier: ^2.0.0 + version: 2.0.0(rollup@2.79.1) + rollup-plugin-polyfill-node: + specifier: ^0.10.2 + version: 0.10.2(rollup@2.79.1) + rollup-plugin-terser: + specifier: ^7.0.2 + version: 7.0.2(rollup@2.79.1) examples/nextjs: dependencies: @@ -157,7 +169,7 @@ importers: version: 5.2.1 next: specifier: 13.1.6 - version: 13.1.6(react-dom@18.2.0)(react@18.2.0) + version: 13.1.6(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 @@ -287,18 +299,6 @@ importers: mime: specifier: ^3.0.0 version: 3.0.0 - rollup: - specifier: ^2.79.1 - version: 2.79.1 - rollup-plugin-auto-external: - specifier: ^2.0.0 - version: 2.0.0(rollup@2.79.1) - rollup-plugin-polyfill-node: - specifier: ^0.10.2 - version: 0.10.2(rollup@2.79.1) - rollup-plugin-terser: - specifier: ^7.0.2 - version: 7.0.2(rollup@2.79.1) ts-jest: specifier: ^29.1.0 version: 29.1.0(@babel/core@7.22.15)(jest@29.5.0)(typescript@4.9.5) @@ -312,6 +312,46 @@ importers: specifier: ^4.9.5 version: 4.9.5 + packages/create-gnfd-app: + dependencies: + '@inquirer/prompts': + specifier: ^3.1.1 + version: 3.1.1 + commander: + specifier: ^11.0.0 + version: 11.0.0 + cross-spawn: + specifier: ^7.0.3 + version: 7.0.3 + download-git-repo: + specifier: ^3.0.2 + version: 3.0.2 + fs-extra: + specifier: ^11.1.1 + version: 11.1.1 + handlebars: + specifier: ^4.7.8 + version: 4.7.8 + ora: + specifier: ^5.4.0 + version: 5.4.1 + picocolors: + specifier: ^1.0.0 + version: 1.0.0 + validate-npm-package-name: + specifier: ^5.0.0 + version: 5.0.0 + devDependencies: + '@types/cross-spawn': + specifier: ^6.0.3 + version: 6.0.3 + '@types/fs-extra': + specifier: ^11.0.1 + version: 11.0.1 + '@types/validate-npm-package-name': + specifier: ^4.0.0 + version: 4.0.0 + packages/file-handle: devDependencies: clean-webpack-plugin: @@ -370,7 +410,6 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 - dev: true /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} @@ -378,12 +417,10 @@ packages: dependencies: '@babel/highlight': 7.22.13 chalk: 2.4.2 - dev: true /@babel/compat-data@7.22.9: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} - dev: true /@babel/core@7.22.15: resolution: {integrity: sha512-PtZqMmgRrvj8ruoEOIwVA3yoF91O+Hgw9o7DAUTNBA6Mo2jpu31clx9a7Nz/9JznqetTR6zwfC4L3LAjKQXUwA==} @@ -406,7 +443,6 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true /@babel/eslint-parser@7.21.8(@babel/core@7.22.15)(eslint@8.48.0): resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} @@ -430,7 +466,6 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 - dev: true /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} @@ -455,7 +490,6 @@ packages: browserslist: 4.21.10 lru-cache: 5.1.1 semver: 6.3.1 - dev: true /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.22.15): resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} @@ -508,7 +542,6 @@ packages: /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-function-name@7.22.5: resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} @@ -516,14 +549,12 @@ packages: dependencies: '@babel/template': 7.22.15 '@babel/types': 7.22.15 - dev: true /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.15 - dev: true /@babel/helper-member-expression-to-functions@7.22.3: resolution: {integrity: sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA==} @@ -537,7 +568,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.15 - dev: true /@babel/helper-module-transforms@7.22.15(@babel/core@7.22.15): resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} @@ -551,7 +581,6 @@ packages: '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.15 - dev: true /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} @@ -599,7 +628,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.15 - dev: true /@babel/helper-skip-transparent-expression-wrappers@7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} @@ -613,22 +641,18 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.15 - dev: true /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-validator-identifier@7.22.15: resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-validator-option@7.22.15: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-wrap-function@7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} @@ -651,7 +675,6 @@ packages: '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color - dev: true /@babel/highlight@7.22.13: resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} @@ -660,7 +683,6 @@ packages: '@babel/helper-validator-identifier': 7.22.15 chalk: 2.4.2 js-tokens: 4.0.0 - dev: true /@babel/parser@7.22.15: resolution: {integrity: sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==} @@ -668,7 +690,6 @@ packages: hasBin: true dependencies: '@babel/types': 7.22.15 - dev: true /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} @@ -1807,7 +1828,6 @@ packages: '@babel/code-frame': 7.22.13 '@babel/parser': 7.22.15 '@babel/types': 7.22.15 - dev: true /@babel/traverse@7.22.15: resolution: {integrity: sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==} @@ -1825,7 +1845,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true /@babel/types@7.22.15: resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} @@ -1834,7 +1853,6 @@ packages: '@babel/helper-string-parser': 7.22.5 '@babel/helper-validator-identifier': 7.22.15 to-fast-properties: 2.0.0 - dev: true /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -2588,7 +2606,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) espree: 9.6.1 globals: 13.20.0 ignore: 5.2.4 @@ -2989,7 +3007,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -3001,6 +3019,125 @@ packages: /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@inquirer/checkbox@1.3.11: + resolution: {integrity: sha512-SaQBDr7niZQzoP5Mqzak5pQY7476mvf4Sj2V8VFrbFHWHsavy3nKGKEOgijNHy151bEgqDog1829g/pKa9Qcrw==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.0.0 + '@inquirer/type': 1.1.4 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + figures: 3.2.0 + dev: false + + /@inquirer/confirm@2.0.12: + resolution: {integrity: sha512-Oxz3L0ti+0nWYHPPUIrPkxA2KnQZUGBHnk56yF5RjKqPGFrwvgLZdIXNe/w4I/OtdLeOBqHCrJ+kCvNvHVdk9g==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.0.0 + '@inquirer/type': 1.1.4 + chalk: 4.1.2 + dev: false + + /@inquirer/core@5.0.0: + resolution: {integrity: sha512-q2o4BcANKFyuUI5V6ejmPs1f9SdbJxfnLmhQVb72Fj7hOudoKsJpByJZ0imv9a/rpKDogA+93vtBBMqsnS7/Fg==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/type': 1.1.4 + '@types/mute-stream': 0.0.1 + '@types/node': 20.6.0 + '@types/wrap-ansi': 3.0.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-spinners: 2.9.0 + cli-width: 4.1.0 + figures: 3.2.0 + mute-stream: 1.0.0 + run-async: 3.0.0 + signal-exit: 4.1.0 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: false + + /@inquirer/editor@1.2.10: + resolution: {integrity: sha512-aluYpazbxIdM54L+xNmVHzOjoXGwkliTCvHxhtPg6itmqDGMVmU1z+T2akHt6Xnx9RyrTpbumFB4xn1iI0UfnA==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.0.0 + '@inquirer/type': 1.1.4 + chalk: 4.1.2 + external-editor: 3.1.0 + dev: false + + /@inquirer/expand@1.1.11: + resolution: {integrity: sha512-GSZJbYKPBniyXgWeFLsqiv7TSK9QjpQqCr+i/85Yts3wwixXTrAeoqM3TVVgHO/3j+xeFcuhOm1wy/F2QY5aEg==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.0.0 + '@inquirer/type': 1.1.4 + chalk: 4.1.2 + figures: 3.2.0 + dev: false + + /@inquirer/input@1.2.11: + resolution: {integrity: sha512-sV1nO6+RxMFTHAznmxMkbMkjGQ8NGMWr0mvXjU35YQ0OFEL+YlD+DPbNd9s3ltnswODZAcnM1yFvdko3S/Kj/w==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.0.0 + '@inquirer/type': 1.1.4 + chalk: 4.1.2 + dev: false + + /@inquirer/password@1.1.11: + resolution: {integrity: sha512-r2eiLMlTuY+k+yJf6XLbnAEz7EDyWdjOrgVAWjSKoEDBc3T9/rq2I+7WiY9FUFArYY/1LxmsNWavs5NuMICx8Q==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/input': 1.2.11 + '@inquirer/type': 1.1.4 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + dev: false + + /@inquirer/prompts@3.1.1: + resolution: {integrity: sha512-7m/7Q4eupJYmn0GxM1H1dcekE4F4YlIB6bSKZs2SVeShARYUVPiAKFZ9c15UzYnBtdjCv4zXI17jbNtCNqmxGQ==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/checkbox': 1.3.11 + '@inquirer/confirm': 2.0.12 + '@inquirer/core': 5.0.0 + '@inquirer/editor': 1.2.10 + '@inquirer/expand': 1.1.11 + '@inquirer/input': 1.2.11 + '@inquirer/password': 1.1.11 + '@inquirer/rawlist': 1.2.11 + '@inquirer/select': 1.2.11 + dev: false + + /@inquirer/rawlist@1.2.11: + resolution: {integrity: sha512-4S2t2pCCR3VgyB3lbPKoiJ9020HHAi9g4M+DIyXHYwGE++7wURAwKkzb6v78fS0yKfCbyFt3BTcL2UffQRQ9Fg==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.0.0 + '@inquirer/type': 1.1.4 + chalk: 4.1.2 + dev: false + + /@inquirer/select@1.2.11: + resolution: {integrity: sha512-LH2wzAsWfu/+wcapeht07zTDefuvGTpv0+9dCAQ68QigF+4gHzpWq5+AbBLbxzuH2Wz4WlHcti85nFUPPM1t3A==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.0.0 + '@inquirer/type': 1.1.4 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + figures: 3.2.0 + dev: false + + /@inquirer/type@1.1.4: + resolution: {integrity: sha512-a6+RCiXBQEbiA73RT1pBfwiH2I+MPcoZoGKuuUYFkws+6ud7nb5kUQGHFGUSBim25IyVMT/mqbWIrkxetcIb/w==} + engines: {node: '>=14.18.0'} + dev: false + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -3237,17 +3374,14 @@ packages: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.19 - dev: true /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/source-map@0.3.5: resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} @@ -3258,14 +3392,12 @@ packages: /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true /@jridgewell/trace-mapping@0.3.19: resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - dev: true /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -3369,7 +3501,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@types/debug': 4.1.7 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) semver: 7.5.2 superstruct: 1.0.3 transitivePeerDependencies: @@ -3913,6 +4045,11 @@ packages: resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} dev: true + /@sindresorhus/is@0.7.0: + resolution: {integrity: sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==} + engines: {node: '>=4'} + dev: false + /@sinonjs/commons@3.0.0: resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} dependencies: @@ -4184,6 +4321,12 @@ packages: '@types/node': 18.16.18 dev: false + /@types/cross-spawn@6.0.3: + resolution: {integrity: sha512-BDAkU7WHHRHnvBf5z89lcvACsvkz/n7Tv+HyD/uW76O29HoH1Tk/W6iQrepaZVbisvlEek4ygwT8IW7ow9XLAA==} + dependencies: + '@types/node': 18.16.18 + dev: true + /@types/debug@4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: @@ -4212,6 +4355,13 @@ packages: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} dev: true + /@types/fs-extra@11.0.1: + resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} + dependencies: + '@types/jsonfile': 6.1.1 + '@types/node': 18.16.18 + dev: true + /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: @@ -4261,6 +4411,18 @@ packages: /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + /@types/jsonfile@6.1.1: + resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} + dependencies: + '@types/node': 18.16.18 + dev: true + + /@types/keyv@3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 18.16.18 + dev: false + /@types/lodash.clonedeep@4.5.7: resolution: {integrity: sha512-ccNqkPptFIXrpVqUECi60/DFxjNKsfoQxSQsgcBJCX/fuX1wgyQieojkcWH/KpE3xzLoWN/2k+ZeGqIN3paSvw==} dependencies: @@ -4307,12 +4469,22 @@ packages: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false + /@types/mute-stream@0.0.1: + resolution: {integrity: sha512-0yQLzYhCqGz7CQPE3iDmYjhb7KMBFOP+tBkyw+/Y2YyDI5wpS7itXXxneN1zSsUwWx3Ji6YiVYrhAnpQGS/vkw==} + dependencies: + '@types/node': 18.16.18 + dev: false + /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} /@types/node@18.16.18: resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} + /@types/node@20.6.0: + resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} + dev: false + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -4352,6 +4524,12 @@ packages: '@types/node': 18.16.18 dev: true + /@types/responselike@1.0.0: + resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} + dependencies: + '@types/node': 18.16.18 + dev: false + /@types/scheduler@0.16.3: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} @@ -4377,6 +4555,14 @@ packages: resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} dev: false + /@types/validate-npm-package-name@4.0.0: + resolution: {integrity: sha512-RpO62vB2lkjEkyLbwTheA2+uwYmtVMWTr/kWRI++UAgVdZqNqdAuIQl/SxBCGeMKfdjWaXPbyhZbiCc4PAj+KA==} + dev: true + + /@types/wrap-ansi@3.0.0: + resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} + dev: false + /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: @@ -4453,7 +4639,7 @@ packages: '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) eslint: 8.48.0 typescript: 4.9.5 transitivePeerDependencies: @@ -4514,7 +4700,7 @@ packages: dependencies: '@typescript-eslint/types': 5.59.11 '@typescript-eslint/visitor-keys': 5.59.11 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.2 @@ -5293,7 +5479,7 @@ packages: resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==} engines: {node: '>= 8.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) depd: 2.0.0 humanize-ms: 1.2.1 transitivePeerDependencies: @@ -5372,7 +5558,6 @@ packages: engines: {node: '>=8'} dependencies: type-fest: 0.21.3 - dev: true /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -5413,6 +5598,13 @@ packages: picomatch: 2.3.1 dev: true + /archive-type@4.0.0: + resolution: {integrity: sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==} + engines: {node: '>=4'} + dependencies: + file-type: 4.4.0 + dev: false + /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true @@ -5758,6 +5950,21 @@ packages: file-uri-to-path: 1.0.0 dev: false + /bl@1.2.3: + resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} + dependencies: + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + dev: false + + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + /blakejs@1.2.1: resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} dev: false @@ -5830,7 +6037,6 @@ packages: electron-to-chromium: 1.4.508 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) - dev: true /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -5859,6 +6065,25 @@ packages: node-int64: 0.4.0 dev: true + /buffer-alloc-unsafe@1.1.0: + resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} + dev: false + + /buffer-alloc@1.2.0: + resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} + dependencies: + buffer-alloc-unsafe: 1.1.0 + buffer-fill: 1.0.0 + dev: false + + /buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: false + + /buffer-fill@1.0.0: + resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} + dev: false + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true @@ -5867,6 +6092,13 @@ packages: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} dev: false + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: @@ -5893,6 +6125,24 @@ packages: semver: 6.3.1 dev: true + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.5.2 + dev: false + + /cacheable-request@2.1.4: + resolution: {integrity: sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==} + dependencies: + clone-response: 1.0.2 + get-stream: 3.0.0 + http-cache-semantics: 3.8.1 + keyv: 3.0.0 + lowercase-keys: 1.0.0 + normalize-url: 2.0.1 + responselike: 1.0.2 + dev: false + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: @@ -5929,6 +6179,16 @@ packages: engines: {node: '>= 0.8.0'} dev: false + /caw@2.0.1: + resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} + engines: {node: '>=4'} + dependencies: + get-proxy: 2.1.0 + isurl: 1.0.0 + tunnel-agent: 0.6.0 + url-to-options: 1.0.1 + dev: false + /chai@4.3.7: resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} @@ -5969,7 +6229,6 @@ packages: /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true /check-error@1.0.2: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} @@ -6031,7 +6290,11 @@ packages: engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 - dev: true + + /cli-spinners@2.9.0: + resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} + engines: {node: '>=6'} + dev: false /cli-truncate@2.1.0: resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} @@ -6049,6 +6312,11 @@ packages: string-width: 5.1.2 dev: true + /cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + dev: false + /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false @@ -6086,10 +6354,15 @@ packages: shallow-clone: 3.0.1 dev: true + /clone-response@1.0.2: + resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} + dependencies: + mimic-response: 1.0.1 + dev: false + /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - dev: true /clsx@1.1.1: resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==} @@ -6143,6 +6416,11 @@ packages: engines: {node: '>=14'} dev: true + /commander@11.0.0: + resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} + engines: {node: '>=16'} + dev: false + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -6160,10 +6438,24 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + /config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + dev: false + /confusing-browser-globals@1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: true + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.2.1 + dev: false + /conventional-changelog-angular@5.0.13: resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} engines: {node: '>=10'} @@ -6201,7 +6493,6 @@ packages: /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -6234,6 +6525,10 @@ packages: browserslist: 4.21.10 dev: true + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: false + /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} @@ -6430,17 +6725,6 @@ packages: dependencies: ms: 2.1.3 - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -6452,7 +6736,6 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 - dev: true /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -6476,26 +6759,86 @@ packages: engines: {node: '>=0.10'} dev: false - /dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - dev: true + /decompress-response@3.3.0: + resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} + engines: {node: '>=4'} + dependencies: + mimic-response: 1.0.1 + dev: false - /deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} + /decompress-tar@4.1.1: + resolution: {integrity: sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==} + engines: {node: '>=4'} dependencies: - type-detect: 4.0.8 - dev: true + file-type: 5.2.0 + is-stream: 1.1.0 + tar-stream: 1.6.2 + dev: false - /deep-equal@2.2.1: - resolution: {integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==} + /decompress-tarbz2@4.1.1: + resolution: {integrity: sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==} + engines: {node: '>=4'} dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.2 - es-get-iterator: 1.1.3 - get-intrinsic: 1.2.1 - is-arguments: 1.1.1 - is-array-buffer: 3.0.2 + decompress-tar: 4.1.1 + file-type: 6.2.0 + is-stream: 1.1.0 + seek-bzip: 1.0.6 + unbzip2-stream: 1.4.3 + dev: false + + /decompress-targz@4.1.1: + resolution: {integrity: sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==} + engines: {node: '>=4'} + dependencies: + decompress-tar: 4.1.1 + file-type: 5.2.0 + is-stream: 1.1.0 + dev: false + + /decompress-unzip@4.0.1: + resolution: {integrity: sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==} + engines: {node: '>=4'} + dependencies: + file-type: 3.9.0 + get-stream: 2.3.1 + pify: 2.3.0 + yauzl: 2.10.0 + dev: false + + /decompress@4.2.1: + resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==} + engines: {node: '>=4'} + dependencies: + decompress-tar: 4.1.1 + decompress-tarbz2: 4.1.1 + decompress-targz: 4.1.1 + decompress-unzip: 4.0.1 + graceful-fs: 4.2.11 + make-dir: 1.3.0 + pify: 2.3.0 + strip-dirs: 2.1.0 + dev: false + + /dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dev: true + + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + + /deep-equal@2.2.1: + resolution: {integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.1 + is-arguments: 1.1.1 + is-array-buffer: 3.0.2 is-date-object: 1.0.5 is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 @@ -6524,7 +6867,6 @@ packages: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 - dev: true /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} @@ -6636,6 +6978,36 @@ packages: engines: {node: '>=10'} dev: true + /download-git-repo@3.0.2: + resolution: {integrity: sha512-N8hWXD4hXqmEcNoR8TBYFntaOcYvEQ7Bz90mgm3bZRTuteGQqwT32VDMnTyD0KTEvb8BWrMc1tVmzuV9u/WrAg==} + dependencies: + download: 7.1.0 + git-clone: 0.1.0 + rimraf: 3.0.2 + dev: false + + /download@7.1.0: + resolution: {integrity: sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==} + engines: {node: '>=6'} + dependencies: + archive-type: 4.0.0 + caw: 2.0.1 + content-disposition: 0.5.4 + decompress: 4.2.1 + ext-name: 5.0.0 + file-type: 8.1.0 + filenamify: 2.1.0 + get-stream: 3.0.0 + got: 8.3.2 + make-dir: 1.3.0 + p-event: 2.3.1 + pify: 3.0.0 + dev: false + + /duplexer3@0.1.5: + resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} + dev: false + /duplexify@4.1.2: resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} dependencies: @@ -6661,7 +7033,6 @@ packages: /electron-to-chromium@1.4.508: resolution: {integrity: sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==} - dev: true /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -6812,7 +7183,6 @@ packages: /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - dev: true /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} @@ -6903,7 +7273,7 @@ packages: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.15.0 eslint: 8.48.0 eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) @@ -7135,7 +7505,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -7425,6 +7795,21 @@ packages: jest-util: 29.5.0 dev: true + /ext-list@2.2.2: + resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} + engines: {node: '>=0.10.0'} + dependencies: + mime-db: 1.52.0 + dev: false + + /ext-name@5.0.0: + resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==} + engines: {node: '>=4'} + dependencies: + ext-list: 2.2.2 + sort-keys-length: 1.0.1 + dev: false + /extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} dev: true @@ -7436,7 +7821,6 @@ packages: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 - dev: true /eyes@0.1.8: resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} @@ -7502,16 +7886,68 @@ packages: bser: 2.1.1 dev: true + /fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + dependencies: + pend: 1.2.0 + dev: false + + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: false + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 + /file-type@3.9.0: + resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} + engines: {node: '>=0.10.0'} + dev: false + + /file-type@4.4.0: + resolution: {integrity: sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==} + engines: {node: '>=4'} + dev: false + + /file-type@5.2.0: + resolution: {integrity: sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==} + engines: {node: '>=4'} + dev: false + + /file-type@6.2.0: + resolution: {integrity: sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==} + engines: {node: '>=4'} + dev: false + + /file-type@8.1.0: + resolution: {integrity: sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==} + engines: {node: '>=6'} + dev: false + /file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} dev: false + /filename-reserved-regex@2.0.0: + resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} + engines: {node: '>=4'} + dev: false + + /filenamify@2.1.0: + resolution: {integrity: sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==} + engines: {node: '>=4'} + dependencies: + filename-reserved-regex: 2.0.0 + strip-outer: 1.0.1 + trim-repeated: 1.0.0 + dev: false + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -7583,6 +8019,17 @@ packages: mime-types: 2.1.35 dev: false + /from2@2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + dev: false + + /fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + dev: false + /fs-extra@11.1.1: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} engines: {node: '>=14.14'} @@ -7590,7 +8037,6 @@ packages: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 - dev: true /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} @@ -7639,7 +8085,6 @@ packages: /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - dev: true /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} @@ -7667,6 +8112,26 @@ packages: engines: {node: '>=8.0.0'} dev: true + /get-proxy@2.1.0: + resolution: {integrity: sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==} + engines: {node: '>=4'} + dependencies: + npm-conf: 1.1.3 + dev: false + + /get-stream@2.3.1: + resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==} + engines: {node: '>=0.10.0'} + dependencies: + object-assign: 4.1.1 + pinkie-promise: 2.0.1 + dev: false + + /get-stream@3.0.0: + resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} + engines: {node: '>=4'} + dev: false + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -7682,6 +8147,10 @@ packages: /get-tsconfig@4.5.0: resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} + /git-clone@0.1.0: + resolution: {integrity: sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==} + dev: false + /git-raw-commits@2.0.11: resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} engines: {node: '>=10'} @@ -7752,7 +8221,6 @@ packages: /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - dev: true /globals@13.20.0: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} @@ -7813,6 +8281,31 @@ packages: dependencies: get-intrinsic: 1.2.1 + /got@8.3.2: + resolution: {integrity: sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==} + engines: {node: '>=4'} + dependencies: + '@sindresorhus/is': 0.7.0 + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.0 + cacheable-request: 2.1.4 + decompress-response: 3.3.0 + duplexer3: 0.1.5 + get-stream: 3.0.0 + into-stream: 3.1.0 + is-retry-allowed: 1.2.0 + isurl: 1.0.0 + lowercase-keys: 1.0.1 + mimic-response: 1.0.1 + p-cancelable: 0.4.1 + p-timeout: 2.0.1 + pify: 3.0.0 + safe-buffer: 5.2.1 + timed-out: 4.0.1 + url-parse-lax: 3.0.0 + url-to-options: 1.0.1 + dev: false + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -7823,6 +8316,19 @@ packages: /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + /handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.17.4 + dev: false + /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} @@ -7848,10 +8354,20 @@ packages: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} + /has-symbol-support-x@1.4.2: + resolution: {integrity: sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==} + dev: false + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} + /has-to-string-tag-x@1.4.1: + resolution: {integrity: sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==} + dependencies: + has-symbol-support-x: 1.4.2 + dev: false + /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} @@ -7912,6 +8428,10 @@ packages: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true + /http-cache-semantics@3.8.1: + resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==} + dev: false + /human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} dev: true @@ -7943,7 +8463,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - dev: true /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -7989,7 +8508,6 @@ packages: /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: true /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} @@ -8009,6 +8527,14 @@ packages: engines: {node: '>=10.13.0'} dev: true + /into-stream@3.1.0: + resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==} + engines: {node: '>=4'} + dependencies: + from2: 2.3.0 + p-is-promise: 1.1.0 + dev: false + /invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: @@ -8122,6 +8648,11 @@ packages: engines: {node: '>=6.5.0', npm: '>=3'} dev: false + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: false + /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} @@ -8129,6 +8660,10 @@ packages: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true + /is-natural-number@4.0.1: + resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==} + dev: false + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} @@ -8148,6 +8683,10 @@ packages: engines: {node: '>=8'} dev: true + /is-object@1.0.2: + resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} + dev: false + /is-path-cwd@2.2.0: resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} engines: {node: '>=6'} @@ -8174,7 +8713,6 @@ packages: /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} - dev: true /is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} @@ -8201,6 +8739,11 @@ packages: call-bind: 1.0.2 has-tostringtag: 1.0.0 + /is-retry-allowed@1.2.0: + resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} + engines: {node: '>=0.10.0'} + dev: false + /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} @@ -8209,6 +8752,11 @@ packages: dependencies: call-bind: 1.0.2 + /is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + dev: false + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -8262,7 +8810,6 @@ packages: /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - dev: true /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} @@ -8289,6 +8836,10 @@ packages: dependencies: is-docker: 2.2.1 + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false + /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -8362,6 +8913,14 @@ packages: istanbul-lib-report: 3.0.0 dev: true + /isurl@1.0.0: + resolution: {integrity: sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==} + engines: {node: '>= 4'} + dependencies: + has-to-string-tag-x: 1.4.1 + is-object: 1.0.2 + dev: false + /jayson@3.7.0: resolution: {integrity: sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==} engines: {node: '>=8'} @@ -8843,7 +9402,10 @@ packages: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true - dev: true + + /json-buffer@3.0.0: + resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} + dev: false /json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} @@ -8889,7 +9451,6 @@ packages: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - dev: true /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -8903,7 +9464,6 @@ packages: universalify: 2.0.0 optionalDependencies: graceful-fs: 4.2.11 - dev: true /jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} @@ -8926,6 +9486,12 @@ packages: readable-stream: 3.6.2 dev: false + /keyv@3.0.0: + resolution: {integrity: sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==} + dependencies: + json-buffer: 3.0.0 + dev: false + /keyvaluestorage-interface@1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} dev: false @@ -9165,7 +9731,6 @@ packages: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - dev: true /log-update@4.0.0: resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} @@ -9197,6 +9762,16 @@ packages: get-func-name: 2.0.0 dev: true + /lowercase-keys@1.0.0: + resolution: {integrity: sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==} + engines: {node: '>=0.10.0'} + dev: false + + /lowercase-keys@1.0.1: + resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} + engines: {node: '>=0.10.0'} + dev: false + /lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: @@ -9208,7 +9783,6 @@ packages: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 - dev: true /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} @@ -9229,6 +9803,13 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /make-dir@1.3.0: + resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} + engines: {node: '>=4'} + dependencies: + pify: 3.0.0 + dev: false + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -9338,13 +9919,17 @@ packages: /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - dev: true /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} dev: true + /mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + dev: false + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -9436,6 +10021,11 @@ packages: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} dev: false + /mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + /nanoid@3.3.3: resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -9457,9 +10047,8 @@ packages: /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: true - /next@13.1.6(react-dom@18.2.0)(react@18.2.0): + /next@13.1.6(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==} engines: {node: '>=14.6.0'} hasBin: true @@ -9483,7 +10072,7 @@ packages: postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.22.15)(react@18.2.0) optionalDependencies: '@next/swc-android-arm-eabi': 13.1.6 '@next/swc-android-arm64': 13.1.6 @@ -9529,7 +10118,6 @@ packages: /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - dev: true /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -9555,6 +10143,23 @@ packages: engines: {node: '>=0.10.0'} dev: true + /normalize-url@2.0.1: + resolution: {integrity: sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==} + engines: {node: '>=4'} + dependencies: + prepend-http: 2.0.0 + query-string: 5.1.1 + sort-keys: 2.0.0 + dev: false + + /npm-conf@1.1.3: + resolution: {integrity: sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==} + engines: {node: '>=4'} + dependencies: + config-chain: 1.1.13 + pify: 3.0.0 + dev: false + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -9640,7 +10245,6 @@ packages: engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - dev: true /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} @@ -9668,10 +10272,24 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.0 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: false + /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - dev: true /outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} @@ -9681,6 +10299,18 @@ packages: resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==} dev: false + /p-cancelable@0.4.1: + resolution: {integrity: sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==} + engines: {node: '>=4'} + dev: false + + /p-event@2.3.1: + resolution: {integrity: sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==} + engines: {node: '>=6'} + dependencies: + p-timeout: 2.0.1 + dev: false + /p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} @@ -9688,6 +10318,16 @@ packages: p-map: 2.1.0 dev: true + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: false + + /p-is-promise@1.1.0: + resolution: {integrity: sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==} + engines: {node: '>=4'} + dev: false + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -9724,6 +10364,13 @@ packages: aggregate-error: 3.1.0 dev: true + /p-timeout@2.0.1: + resolution: {integrity: sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==} + engines: {node: '>=4'} + dependencies: + p-finally: 1.0.0 + dev: false + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -9802,6 +10449,10 @@ packages: sha.js: 2.4.11 dev: false + /pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + dev: false + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -9818,7 +10469,6 @@ packages: /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - dev: true /pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} @@ -9839,12 +10489,10 @@ packages: engines: {node: '>=0.10.0'} dependencies: pinkie: 2.0.4 - dev: true /pinkie@2.0.4: resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} engines: {node: '>=0.10.0'} - dev: true /pino-abstract-transport@0.5.0: resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} @@ -9918,6 +10566,11 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + /prepend-http@2.0.0: + resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} + engines: {node: '>=4'} + dev: false + /prettier-linter-helpers@1.0.0: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} @@ -9940,6 +10593,10 @@ packages: react-is: 18.2.0 dev: true + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false + /process-warning@1.0.0: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} dev: false @@ -9959,6 +10616,10 @@ packages: object-assign: 4.1.1 react-is: 16.13.1 + /proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + dev: false + /protobufjs@6.11.4: resolution: {integrity: sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==} hasBin: true @@ -10033,6 +10694,15 @@ packages: side-channel: 1.0.4 dev: false + /query-string@5.1.1: + resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} + engines: {node: '>=0.10.0'} + dependencies: + decode-uri-component: 0.2.2 + object-assign: 4.1.1 + strict-uri-encode: 1.1.0 + dev: false + /query-string@6.14.1: resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==} engines: {node: '>=6'} @@ -10184,6 +10854,18 @@ packages: strip-bom: 3.0.0 dev: true + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -10337,13 +11019,18 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + /responselike@1.0.2: + resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} + dependencies: + lowercase-keys: 1.0.1 + dev: false + /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - dev: true /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -10440,6 +11127,11 @@ packages: utf-8-validate: 5.0.10 dev: false + /run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + dev: false + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -10458,6 +11150,10 @@ packages: tslib: 2.5.2 dev: true + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: false + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -10483,7 +11179,6 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} @@ -10524,6 +11219,13 @@ packages: node-gyp-build: 4.6.0 dev: false + /seek-bzip@1.0.6: + resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==} + hasBin: true + dependencies: + commander: 2.20.3 + dev: false + /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true @@ -10636,7 +11338,11 @@ packages: /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: false /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -10695,6 +11401,27 @@ packages: atomic-sleep: 1.0.0 dev: false + /sort-keys-length@1.0.1: + resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} + engines: {node: '>=0.10.0'} + dependencies: + sort-keys: 1.1.2 + dev: false + + /sort-keys@1.1.2: + resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-obj: 1.1.0 + dev: false + + /sort-keys@2.0.0: + resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} + engines: {node: '>=4'} + dependencies: + is-plain-obj: 1.1.0 + dev: false + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -10717,7 +11444,6 @@ packages: /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} @@ -10803,6 +11529,11 @@ packages: mixme: 0.5.9 dev: true + /strict-uri-encode@1.1.0: + resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} + engines: {node: '>=0.10.0'} + dev: false + /strict-uri-encode@2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} @@ -10876,6 +11607,12 @@ packages: define-properties: 1.2.0 es-abstract: 1.21.2 + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: false + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: @@ -10903,6 +11640,12 @@ packages: engines: {node: '>=8'} dev: true + /strip-dirs@2.1.0: + resolution: {integrity: sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==} + dependencies: + is-natural-number: 4.0.1 + dev: false + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -10931,11 +11674,18 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + /strip-outer@1.0.1: + resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} + engines: {node: '>=0.10.0'} + dependencies: + escape-string-regexp: 1.0.5 + dev: false + /strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: false - /styled-jsx@5.1.1(react@18.2.0): + /styled-jsx@5.1.1(@babel/core@7.22.15)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -10948,6 +11698,7 @@ packages: babel-plugin-macros: optional: true dependencies: + '@babel/core': 7.22.15 client-only: 0.0.1 react: 18.2.0 dev: false @@ -10978,7 +11729,6 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -11000,6 +11750,19 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + /tar-stream@1.6.2: + resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} + engines: {node: '>= 0.8.0'} + dependencies: + bl: 1.2.3 + buffer-alloc: 1.2.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + readable-stream: 2.3.8 + to-buffer: 1.1.1 + xtend: 4.0.2 + dev: false + /term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -11076,6 +11839,11 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + /timed-out@4.0.1: + resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} + engines: {node: '>=0.10.0'} + dev: false + /tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} dependencies: @@ -11087,16 +11855,18 @@ packages: engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 - dev: true /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true + /to-buffer@1.1.1: + resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==} + dev: false + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - dev: true /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -11116,6 +11886,13 @@ packages: engines: {node: '>=8'} dev: true + /trim-repeated@1.0.0: + resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} + engines: {node: '>=0.10.0'} + dependencies: + escape-string-regexp: 1.0.5 + dev: false + /ts-jest@29.1.0(@babel/core@7.22.15)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11225,6 +12002,12 @@ packages: yargs: 17.7.2 dev: true + /tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + dependencies: + safe-buffer: 5.2.1 + dev: false + /tweetnacl-util@0.15.1: resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} dev: false @@ -11261,7 +12044,6 @@ packages: /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - dev: true /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} @@ -11297,6 +12079,14 @@ packages: hasBin: true dev: true + /uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: false + optional: true + /uint8arrays@3.1.1: resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} dependencies: @@ -11311,6 +12101,13 @@ packages: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + /unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + dependencies: + buffer: 5.7.1 + through: 2.3.8 + dev: false + /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} @@ -11342,7 +12139,6 @@ packages: /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} - dev: true /update-browserslist-db@1.0.11(browserslist@4.21.10): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} @@ -11353,13 +12149,24 @@ packages: browserslist: 4.21.10 escalade: 3.1.1 picocolors: 1.0.0 - dev: true /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 + /url-parse-lax@3.0.0: + resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} + engines: {node: '>=4'} + dependencies: + prepend-http: 2.0.0 + dev: false + + /url-to-options@1.0.1: + resolution: {integrity: sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==} + engines: {node: '>= 4'} + dev: false + /use-callback-ref@1.3.0(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} @@ -11445,6 +12252,13 @@ packages: spdx-expression-parse: 3.0.1 dev: true + /validate-npm-package-name@5.0.0: + resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + builtins: 5.0.1 + dev: false + /valtio@1.10.6(react@18.2.0): resolution: {integrity: sha512-SxN1bHUmdhW6V8qsQTpCgJEwp7uHbntuH0S9cdLQtiohuevwBksbpXjwj5uDMA7bLwg1WKyq9sEpZrx3TIMrkA==} engines: {node: '>=12.20.0'} @@ -11534,7 +12348,6 @@ packages: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 - dev: true /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -11689,6 +12502,10 @@ packages: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} dev: true + /wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: false + /workerpool@6.2.1: resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} dev: true @@ -11802,7 +12619,6 @@ packages: /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -11891,6 +12707,13 @@ packages: yargs-parser: 21.1.1 dev: true + /yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + dev: false + /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} From 2eb289cf58f9af82ab8f27790185c13006b7bef8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 15 Sep 2023 19:36:00 +0800 Subject: [PATCH 244/433] chore: [ci] release (alpha) (#335) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 4 +++- packages/create-gnfd-app/CHANGELOG.md | 9 +++++++++ packages/create-gnfd-app/package.json | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 packages/create-gnfd-app/CHANGELOG.md diff --git a/.changeset/pre.json b/.changeset/pre.json index 77957a01..b6bb313c 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -6,7 +6,8 @@ "@demo/nodejs": "0.0.8", "@bnb-chain/greenfield-js-sdk": "0.2.4", "@bnb-chain/greenfiled-file-handle": "0.2.1", - "@bnb-chain/greenfield-zk-crypto": "0.0.2" + "@bnb-chain/greenfield-zk-crypto": "0.0.2", + "@bnb-chain/create-gnfd-app": "0.0.1" }, "changesets": [ "big-actors-divide", @@ -21,6 +22,7 @@ "selfish-bugs-teach", "short-moons-pretend", "shy-forks-sip", + "small-pillows-raise", "soft-doors-perform", "soft-onions-jog", "spicy-jokes-wave", diff --git a/packages/create-gnfd-app/CHANGELOG.md b/packages/create-gnfd-app/CHANGELOG.md new file mode 100644 index 00000000..ff3eaca5 --- /dev/null +++ b/packages/create-gnfd-app/CHANGELOG.md @@ -0,0 +1,9 @@ +# @bnb-chain/create-gnfd-app + +## 0.0.2-alpha.0 + +### Patch Changes + +- [#334](https://github.com/bnb-chain/greenfield-js-sdk/pull/334) + [`03be217`](https://github.com/bnb-chain/greenfield-js-sdk/commit/03be21724f3c2b04145ff5925a41726edc381832) + Thanks [@rrr523](https://github.com/rrr523)! - feat: 🎉 Create App Commander diff --git a/packages/create-gnfd-app/package.json b/packages/create-gnfd-app/package.json index 72d7351b..dfab557f 100644 --- a/packages/create-gnfd-app/package.json +++ b/packages/create-gnfd-app/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/create-gnfd-app", - "version": "0.0.1", + "version": "0.0.2-alpha.0", "description": "help you create greenfield project quickly", "main": "index.js", "bin": { From ef99831b10254a002c08930600aa65242e52a530 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 15 Sep 2023 19:41:49 +0800 Subject: [PATCH 245/433] feat: Create App Commander (#336) --- .changeset/five-files-collect.md | 5 +++++ packages/create-gnfd-app/README.md | 2 ++ packages/create-gnfd-app/package.json | 6 +++++- 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 .changeset/five-files-collect.md diff --git a/.changeset/five-files-collect.md b/.changeset/five-files-collect.md new file mode 100644 index 00000000..33ba2c40 --- /dev/null +++ b/.changeset/five-files-collect.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/create-gnfd-app': patch +--- + +release create app diff --git a/packages/create-gnfd-app/README.md b/packages/create-gnfd-app/README.md index b4a76f19..70abce8f 100644 --- a/packages/create-gnfd-app/README.md +++ b/packages/create-gnfd-app/README.md @@ -5,3 +5,5 @@ ```bash > npx @bnb-chain/create-gnfd-app ``` + +![](./example.gif) diff --git a/packages/create-gnfd-app/package.json b/packages/create-gnfd-app/package.json index dfab557f..0314b363 100644 --- a/packages/create-gnfd-app/package.json +++ b/packages/create-gnfd-app/package.json @@ -23,6 +23,10 @@ ], "author": "", "license": "MIT", + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, "dependencies": { "@inquirer/prompts": "^3.1.1", "commander": "^11.0.0", @@ -42,4 +46,4 @@ "@types/fs-extra": "^11.0.1", "@types/validate-npm-package-name": "^4.0.0" } -} +} \ No newline at end of file From 66e23fc47755a7f7aa5cd26a1dfe68a1d8c1bf38 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 15 Sep 2023 19:51:21 +0800 Subject: [PATCH 246/433] chore: [ci] release (alpha) (#337) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/create-gnfd-app/CHANGELOG.md | 8 ++++++++ packages/create-gnfd-app/package.json | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index b6bb313c..ede4f90d 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -12,6 +12,7 @@ "changesets": [ "big-actors-divide", "fast-houses-do", + "five-files-collect", "fuzzy-cobras-cry", "giant-bikes-grab", "heavy-seas-talk", diff --git a/packages/create-gnfd-app/CHANGELOG.md b/packages/create-gnfd-app/CHANGELOG.md index ff3eaca5..5bdf7630 100644 --- a/packages/create-gnfd-app/CHANGELOG.md +++ b/packages/create-gnfd-app/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/create-gnfd-app +## 0.0.2-alpha.1 + +### Patch Changes + +- [#336](https://github.com/bnb-chain/greenfield-js-sdk/pull/336) + [`ef99831`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ef99831b10254a002c08930600aa65242e52a530) + Thanks [@rrr523](https://github.com/rrr523)! - release create app + ## 0.0.2-alpha.0 ### Patch Changes diff --git a/packages/create-gnfd-app/package.json b/packages/create-gnfd-app/package.json index 0314b363..39331220 100644 --- a/packages/create-gnfd-app/package.json +++ b/packages/create-gnfd-app/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/create-gnfd-app", - "version": "0.0.2-alpha.0", + "version": "0.0.2-alpha.1", "description": "help you create greenfield project quickly", "main": "index.js", "bin": { From 5fab3308b8d53de7c639a682fc63e45624a366f2 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Fri, 15 Sep 2023 20:28:30 +0800 Subject: [PATCH 247/433] chore: Update README (#338) --- packages/create-gnfd-app/example.gif | Bin 81717 -> 207273 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/packages/create-gnfd-app/example.gif b/packages/create-gnfd-app/example.gif index c81ecdee2cbaf74b38a41347b91ebe269bf12d9d..ee5a657371a7a0affa2375dd4bb7015610b5ebf1 100644 GIT binary patch literal 207273 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 T1Xpa;)^YvKa-GLV4F~``tp?*F literal 81717 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≪hWsL1JR$7$>yJ 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
    @-cOa`RY;n9ZG-d;vea$SKtmrRsB4{>#i| z99s1huV|U0j1n{r`0Zp)&BdqsNXD04SRV1Je}j8*#IpEtV59yCBNA3mr6v7kOk{Rl z))-m@(U?jSkd8yRQQ092Rj293r{*rV;gxrHN;Y-7* z-1*CK&4i$nKDY})h&UDT8=fUiCTT7>9^kE4izh&f1dJk0#F)FNkV-Vk4|LX=pkTU* zne_0a80H4}UC(6U_=bwP7VwKa4H>z)@*}wD@p(&-)_6u1CYO;cw<+V^1V0 z_)SnFp^HmzNR;Bsg-w*%B&aG3k-~{l5dkISTkKv{F&ugeeYyg`y6)p-`7^S@6zC)Y ztn`PQ>~jr%$CR{IZMMdSv!x359LuJYQilFY7wmHv8LOPCrQXGVtKiB)f!I^!48Fb7 z(z*aHwdvX-Q6f1@KT=O#G}FJfy+B90SwKs9i$mYVQ9XA(*pbr8sZ>nmO>>LHW|!=s z<7W3A2`nB?Q^T(Q)<4qyo19sCq5JtyDqn9$k2SnsiJ78g5Rs3d?oMO{8|O;_b&(HI zCMs_~mew0GVIE~!hCDCiHG<$GYK#P}FoRSqS6}sqNHKF#2)m%-p(4(q>#SPQhwFXj zcm@$|$M|mY>1{)tx{T8t&H0{~TLruG2~T=X^#$=IMNB|mn9;UYB($pD*A?0RKDkZ3 zLIU+mOCL`T==QysftSBEPt+h;KHkM&38Q+p=6x@tdZmH$AOWNwBT-O6|^fR1b4lJlc?A#G`ygG@@BI9bI};_m-1fnV%LLX1O)_zXcGA^KH#pg zO<`Gj!k9G~474Pu%f#dG>=gjS(0=|*>Y|Rl|N1WgS>XUZRl<3iBgYL~hvhPelVVo> zM7AL>O6A8b^e1QNy&E2eXNGABZK$Lu))}Fk8&rf&A!E4XSQ2?tmXV9bU}argpVjIa zB9E2*PJoD!K4uX3!TLsMiWC%{`XL&6Y7MX| zEO!U=i0q8i%GAXICRce#*^? zRdzIU(OKX?i-v<$1G;}YE)Li&R={}UG1ZUfQB`9XGE zxf9 Date: Sat, 16 Sep 2023 00:07:14 +0800 Subject: [PATCH 248/433] feat: Add vite template (#339) --- .changeset/orange-toys-wait.md | 5 +++++ packages/create-gnfd-app/createApp.ts | 2 +- packages/create-gnfd-app/example.gif | Bin 207273 -> 539184 bytes .../helpers/install-template.ts | 2 +- packages/create-gnfd-app/index.ts | 4 ++-- packages/create-gnfd-app/templates.ts | 1 + 6 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 .changeset/orange-toys-wait.md diff --git a/.changeset/orange-toys-wait.md b/.changeset/orange-toys-wait.md new file mode 100644 index 00000000..63a8e23d --- /dev/null +++ b/.changeset/orange-toys-wait.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/create-gnfd-app': patch +--- + +feat: Add vite template diff --git a/packages/create-gnfd-app/createApp.ts b/packages/create-gnfd-app/createApp.ts index dd270cd2..f280cda3 100644 --- a/packages/create-gnfd-app/createApp.ts +++ b/packages/create-gnfd-app/createApp.ts @@ -35,7 +35,7 @@ export async function createApp({ } /* eslint-disable-next-line no-console */ - console.log(`Creating a new Greenfield app in ${green(root)}.`); + console.log(`Creating a new Greenfield app in ${green(appName)}.`); process.chdir(root); startSpinner('downloading template...'); diff --git a/packages/create-gnfd-app/example.gif b/packages/create-gnfd-app/example.gif index ee5a657371a7a0affa2375dd4bb7015610b5ebf1..217e10c3cb6147f4c30fbcbc04fdec31d9f6675e 100644 GIT binary patch literal 539184 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%0Di^I{j*0{$#<7kZ$K1PI!H>B=$*Js-5VpqD< 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
      5x~CDeXj31T*v%K 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

      C#t^RPE*C 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

      G>imvUR|I(N$gkug9s?p81;_ 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

      VNBKzOVjo`H3TS_G%a?;Xa*YYRc6f`C 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 T1Xpa;)^YvKa-GLV4F~``tp?*F diff --git a/packages/create-gnfd-app/helpers/install-template.ts b/packages/create-gnfd-app/helpers/install-template.ts index ecf680d7..a155e35e 100644 --- a/packages/create-gnfd-app/helpers/install-template.ts +++ b/packages/create-gnfd-app/helpers/install-template.ts @@ -8,7 +8,7 @@ import { failSpinner, startSpinner, succeedSpiner } from './spinner'; export const SRC_DIR_NAMES = ['app', 'pages', 'styles']; -export type TemplateType = 'nextjs' | 'cra'; +export type TemplateType = 'nextjs' | 'cra' | 'vite'; export type TemplateMode = 'js' | 'ts'; export const installTemplate = async ({ appName, root, packageManager }: InstallTemplateArgs) => { diff --git a/packages/create-gnfd-app/index.ts b/packages/create-gnfd-app/index.ts index 4bb9b646..f827d6eb 100644 --- a/packages/create-gnfd-app/index.ts +++ b/packages/create-gnfd-app/index.ts @@ -5,13 +5,12 @@ import path, { resolve } from 'path'; import { cyan, green } from 'picocolors'; import validateNpmName from 'validate-npm-package-name'; import { createApp } from './createApp'; -import { getPkgManager, PackageManager } from './helpers/get-pkg-manager'; +import { PackageManager } from './helpers/get-pkg-manager'; import { TemplateType } from './helpers/install-template'; import { isFolderEmpty } from './helpers/is-folder-empty'; const packageJson = JSON.parse(readFileSync(resolve(__dirname, '../package.json'), 'utf-8')); let projectPath = ''; -// const projectName = 'xxx'; const program = new Commander.Command(packageJson.name); program @@ -57,6 +56,7 @@ async function runInitPrompts(): Promise { choices: [ { name: 'nextjs', value: 'nextjs' }, { name: 'create-react-app', value: 'cra' }, + { name: 'vite', value: 'vite' }, ], }); diff --git a/packages/create-gnfd-app/templates.ts b/packages/create-gnfd-app/templates.ts index 683d5163..5c7f2234 100644 --- a/packages/create-gnfd-app/templates.ts +++ b/packages/create-gnfd-app/templates.ts @@ -4,4 +4,5 @@ import { TemplateType } from './helpers/install-template'; export const TEMPLATES_MAP: Record = { nextjs: getTemplateUrl('nextjs'), cra: getTemplateUrl('cra'), + vite: getTemplateUrl('vite'), }; From 5bd67efd88f17db9e9dc0f1d47a2f68990bf2b06 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 16 Sep 2023 00:08:35 +0800 Subject: [PATCH 249/433] chore: [ci] release (alpha) (#340) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 1 + packages/create-gnfd-app/CHANGELOG.md | 8 ++++++++ packages/create-gnfd-app/package.json | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index ede4f90d..44d7934e 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -17,6 +17,7 @@ "giant-bikes-grab", "heavy-seas-talk", "itchy-ducks-chew", + "orange-toys-wait", "perfect-starfishes-watch", "pink-tips-flow", "rich-dolls-chew", diff --git a/packages/create-gnfd-app/CHANGELOG.md b/packages/create-gnfd-app/CHANGELOG.md index 5bdf7630..fa347f0b 100644 --- a/packages/create-gnfd-app/CHANGELOG.md +++ b/packages/create-gnfd-app/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/create-gnfd-app +## 0.0.2-alpha.2 + +### Patch Changes + +- [#339](https://github.com/bnb-chain/greenfield-js-sdk/pull/339) + [`6aaf062`](https://github.com/bnb-chain/greenfield-js-sdk/commit/6aaf06274a6acb692f6c87d2fb4f819e98814f8b) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add vite template + ## 0.0.2-alpha.1 ### Patch Changes diff --git a/packages/create-gnfd-app/package.json b/packages/create-gnfd-app/package.json index 39331220..919d9743 100644 --- a/packages/create-gnfd-app/package.json +++ b/packages/create-gnfd-app/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/create-gnfd-app", - "version": "0.0.2-alpha.1", + "version": "0.0.2-alpha.2", "description": "help you create greenfield project quickly", "main": "index.js", "bin": { From e5c74ec7c2a8952adb95153bef3be7b6a0bd1a9a Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Sat, 16 Sep 2023 00:11:11 +0800 Subject: [PATCH 250/433] release 0.2.5 (#341) chore: Pre Exit --- .changeset/pre.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 44d7934e..f8194641 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -1,5 +1,5 @@ { - "mode": "pre", + "mode": "exit", "tag": "alpha", "initialVersions": { "@demo/wallet": "0.0.5", From 71f2dedd796f4bdc480f61fa5505e30a73b174ee Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 16 Sep 2023 00:13:40 +0800 Subject: [PATCH 251/433] chore: [ci] release (#342) Co-authored-by: github-actions[bot] --- .changeset/big-actors-divide.md | 5 -- .changeset/fast-houses-do.md | 6 -- .changeset/five-files-collect.md | 5 -- .changeset/fuzzy-cobras-cry.md | 5 -- .changeset/giant-bikes-grab.md | 5 -- .changeset/heavy-seas-talk.md | 5 -- .changeset/itchy-ducks-chew.md | 5 -- .changeset/orange-toys-wait.md | 5 -- .changeset/perfect-starfishes-watch.md | 5 -- .changeset/pink-tips-flow.md | 5 -- .changeset/pre.json | 37 ------------ .changeset/rich-dolls-chew.md | 5 -- .changeset/selfish-bugs-teach.md | 5 -- .changeset/short-moons-pretend.md | 5 -- .changeset/shy-forks-sip.md | 5 -- .changeset/small-pillows-raise.md | 5 -- .changeset/soft-doors-perform.md | 5 -- .changeset/soft-onions-jog.md | 5 -- .changeset/spicy-jokes-wave.md | 5 -- .changeset/stale-beans-jog.md | 5 -- .changeset/stupid-dodos-fold.md | 5 -- .changeset/tender-bats-help.md | 5 -- .changeset/violet-pillows-exercise.md | 5 -- .changeset/warm-clouds-decide.md | 5 -- examples/nextjs/CHANGELOG.md | 33 +++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 25 ++++++++ examples/nodejs/package.json | 2 +- packages/chain-sdk/CHANGELOG.md | 82 ++++++++++++++++++++++++++ packages/chain-sdk/package.json | 2 +- packages/create-gnfd-app/CHANGELOG.md | 16 +++++ packages/create-gnfd-app/package.json | 2 +- packages/zk-crypto/CHANGELOG.md | 8 +++ packages/zk-crypto/package.json | 2 +- 34 files changed, 169 insertions(+), 158 deletions(-) delete mode 100644 .changeset/big-actors-divide.md delete mode 100644 .changeset/fast-houses-do.md delete mode 100644 .changeset/five-files-collect.md delete mode 100644 .changeset/fuzzy-cobras-cry.md delete mode 100644 .changeset/giant-bikes-grab.md delete mode 100644 .changeset/heavy-seas-talk.md delete mode 100644 .changeset/itchy-ducks-chew.md delete mode 100644 .changeset/orange-toys-wait.md delete mode 100644 .changeset/perfect-starfishes-watch.md delete mode 100644 .changeset/pink-tips-flow.md delete mode 100644 .changeset/pre.json delete mode 100644 .changeset/rich-dolls-chew.md delete mode 100644 .changeset/selfish-bugs-teach.md delete mode 100644 .changeset/short-moons-pretend.md delete mode 100644 .changeset/shy-forks-sip.md delete mode 100644 .changeset/small-pillows-raise.md delete mode 100644 .changeset/soft-doors-perform.md delete mode 100644 .changeset/soft-onions-jog.md delete mode 100644 .changeset/spicy-jokes-wave.md delete mode 100644 .changeset/stale-beans-jog.md delete mode 100644 .changeset/stupid-dodos-fold.md delete mode 100644 .changeset/tender-bats-help.md delete mode 100644 .changeset/violet-pillows-exercise.md delete mode 100644 .changeset/warm-clouds-decide.md diff --git a/.changeset/big-actors-divide.md b/.changeset/big-actors-divide.md deleted file mode 100644 index c292e2d5..00000000 --- a/.changeset/big-actors-divide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: New Bucket API: `headBucketExtra` diff --git a/.changeset/fast-houses-do.md b/.changeset/fast-houses-do.md deleted file mode 100644 index 2d39986d..00000000 --- a/.changeset/fast-houses-do.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@demo/wallet": patch -"@bnb-chain/greenfield-js-sdk": patch ---- - -feat: add vg settle api diff --git a/.changeset/five-files-collect.md b/.changeset/five-files-collect.md deleted file mode 100644 index 33ba2c40..00000000 --- a/.changeset/five-files-collect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/create-gnfd-app': patch ---- - -release create app diff --git a/.changeset/fuzzy-cobras-cry.md b/.changeset/fuzzy-cobras-cry.md deleted file mode 100644 index 39429f95..00000000 --- a/.changeset/fuzzy-cobras-cry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Distribution api diff --git a/.changeset/giant-bikes-grab.md b/.changeset/giant-bikes-grab.md deleted file mode 100644 index 12bf0c7e..00000000 --- a/.changeset/giant-bikes-grab.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -refactor: Sp types diff --git a/.changeset/heavy-seas-talk.md b/.changeset/heavy-seas-talk.md deleted file mode 100644 index ea9f884a..00000000 --- a/.changeset/heavy-seas-talk.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Validator API - editValidator diff --git a/.changeset/itchy-ducks-chew.md b/.changeset/itchy-ducks-chew.md deleted file mode 100644 index 1197fa98..00000000 --- a/.changeset/itchy-ducks-chew.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -refactor: Update Deps diff --git a/.changeset/orange-toys-wait.md b/.changeset/orange-toys-wait.md deleted file mode 100644 index 63a8e23d..00000000 --- a/.changeset/orange-toys-wait.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/create-gnfd-app': patch ---- - -feat: Add vite template diff --git a/.changeset/perfect-starfishes-watch.md b/.changeset/perfect-starfishes-watch.md deleted file mode 100644 index 249d7e55..00000000 --- a/.changeset/perfect-starfishes-watch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-zk-crypto': patch ---- - -feat: Upgrade TinyGo version and Go version diff --git a/.changeset/pink-tips-flow.md b/.changeset/pink-tips-flow.md deleted file mode 100644 index 074419b9..00000000 --- a/.changeset/pink-tips-flow.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: TxClient and QueryClient is not singleton diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index f8194641..00000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "mode": "exit", - "tag": "alpha", - "initialVersions": { - "@demo/wallet": "0.0.5", - "@demo/nodejs": "0.0.8", - "@bnb-chain/greenfield-js-sdk": "0.2.4", - "@bnb-chain/greenfiled-file-handle": "0.2.1", - "@bnb-chain/greenfield-zk-crypto": "0.0.2", - "@bnb-chain/create-gnfd-app": "0.0.1" - }, - "changesets": [ - "big-actors-divide", - "fast-houses-do", - "five-files-collect", - "fuzzy-cobras-cry", - "giant-bikes-grab", - "heavy-seas-talk", - "itchy-ducks-chew", - "orange-toys-wait", - "perfect-starfishes-watch", - "pink-tips-flow", - "rich-dolls-chew", - "selfish-bugs-teach", - "short-moons-pretend", - "shy-forks-sip", - "small-pillows-raise", - "soft-doors-perform", - "soft-onions-jog", - "spicy-jokes-wave", - "stale-beans-jog", - "stupid-dodos-fold", - "tender-bats-help", - "violet-pillows-exercise", - "warm-clouds-decide" - ] -} diff --git a/.changeset/rich-dolls-chew.md b/.changeset/rich-dolls-chew.md deleted file mode 100644 index baa3cbdc..00000000 --- a/.changeset/rich-dolls-chew.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Add sp `ListObjectPolicies` API diff --git a/.changeset/selfish-bugs-teach.md b/.changeset/selfish-bugs-teach.md deleted file mode 100644 index 7348bd47..00000000 --- a/.changeset/selfish-bugs-teach.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: All class use injectable diff --git a/.changeset/short-moons-pretend.md b/.changeset/short-moons-pretend.md deleted file mode 100644 index d3f1f727..00000000 --- a/.changeset/short-moons-pretend.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -refactor: Sp metainfo diff --git a/.changeset/shy-forks-sip.md b/.changeset/shy-forks-sip.md deleted file mode 100644 index 7e9b9675..00000000 --- a/.changeset/shy-forks-sip.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: `getUserBuckets` -> `listBuckets`, and response add vgf(includes `Id` and `PrimarySpId`) diff --git a/.changeset/small-pillows-raise.md b/.changeset/small-pillows-raise.md deleted file mode 100644 index 6620facd..00000000 --- a/.changeset/small-pillows-raise.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/create-gnfd-app': patch ---- - -feat: 🎉 Create App Commander diff --git a/.changeset/soft-doors-perform.md b/.changeset/soft-doors-perform.md deleted file mode 100644 index cbb55288..00000000 --- a/.changeset/soft-doors-perform.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Proposal vote api diff --git a/.changeset/soft-onions-jog.md b/.changeset/soft-onions-jog.md deleted file mode 100644 index d951ab0f..00000000 --- a/.changeset/soft-onions-jog.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@demo/wallet': patch ---- - -chore: Update deps diff --git a/.changeset/spicy-jokes-wave.md b/.changeset/spicy-jokes-wave.md deleted file mode 100644 index bf8960c6..00000000 --- a/.changeset/spicy-jokes-wave.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: ListUserPaymentAccount api diff --git a/.changeset/stale-beans-jog.md b/.changeset/stale-beans-jog.md deleted file mode 100644 index c97ef46d..00000000 --- a/.changeset/stale-beans-jog.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Bucket listBucketsByPaymentAccount api diff --git a/.changeset/stupid-dodos-fold.md b/.changeset/stupid-dodos-fold.md deleted file mode 100644 index 074e5d69..00000000 --- a/.changeset/stupid-dodos-fold.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -refactor: basic.multi -> txClient.multi diff --git a/.changeset/tender-bats-help.md b/.changeset/tender-bats-help.md deleted file mode 100644 index 821dafdc..00000000 --- a/.changeset/tender-bats-help.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: Delete Policy diff --git a/.changeset/violet-pillows-exercise.md b/.changeset/violet-pillows-exercise.md deleted file mode 100644 index a2545a1f..00000000 --- a/.changeset/violet-pillows-exercise.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -fix: PutPolicy if resource is empty use `[]` not `['']` diff --git a/.changeset/warm-clouds-decide.md b/.changeset/warm-clouds-decide.md deleted file mode 100644 index 028aaef4..00000000 --- a/.changeset/warm-clouds-decide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@bnb-chain/greenfield-js-sdk': patch ---- - -feat: Custom any tx by raw info diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 0f230006..cec5c50b 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,38 @@ # @demo/wallet +## 0.0.6 + +### Patch Changes + +- [#319](https://github.com/bnb-chain/greenfield-js-sdk/pull/319) + [`ec4297d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec4297da042e1b7c656d26b65d56fe52ac80365f) + Thanks [@rrr523](https://github.com/rrr523)! - feat: add vg settle api + +- [#321](https://github.com/bnb-chain/greenfield-js-sdk/pull/321) + [`b384428`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b38442819d2dc341859bef4404d8f118a0aa189d) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + +- Updated dependencies + [[`f3a7ce8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f3a7ce8f06d6bedf5e07bccccc4ada7676e79f2a), + [`ec4297d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec4297da042e1b7c656d26b65d56fe52ac80365f), + [`910c0cc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/910c0cc7ab7267e67b9cb59b702b70b0d1364c2b), + [`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`4acdb91`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4acdb919f4c2d7764c670f97c26a5b9cca8c962e), + [`b13fba4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b13fba46d5df93bcaa643cd79aeea7dd4128feee), + [`c7f9ef3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7f9ef355e57bcc17a46b96655d8f36ba54dffa8), + [`06b933a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/06b933aa6a2ecb285c3511e06de0dfb93d38c40e), + [`bea0466`](https://github.com/bnb-chain/greenfield-js-sdk/commit/bea04668309bb4a769b68e9eab4f193ad2ef1d4b), + [`609f4cd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/609f4cdbeccd289cd4080c0994aa2eb24bfa6eb2), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`88acc61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/88acc61ef8e9826a9805a56f92d6321985a07e9a), + [`780e2ef`](https://github.com/bnb-chain/greenfield-js-sdk/commit/780e2efdfbc0d168c791c82e724ad96504050169), + [`56a263e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/56a263ec0a39844d967ce99a7b58165cc686a16c)]: + - @bnb-chain/greenfield-js-sdk@0.2.5 + ## 0.0.6-alpha.10 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index a673908d..2b8d76a8 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.6-alpha.10", + "version": "0.0.6", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index ab71d1e7..07914ab6 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,30 @@ # @demo/nodejs +## 0.0.9 + +### Patch Changes + +- Updated dependencies + [[`f3a7ce8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f3a7ce8f06d6bedf5e07bccccc4ada7676e79f2a), + [`ec4297d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec4297da042e1b7c656d26b65d56fe52ac80365f), + [`910c0cc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/910c0cc7ab7267e67b9cb59b702b70b0d1364c2b), + [`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`4acdb91`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4acdb919f4c2d7764c670f97c26a5b9cca8c962e), + [`b13fba4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b13fba46d5df93bcaa643cd79aeea7dd4128feee), + [`c7f9ef3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7f9ef355e57bcc17a46b96655d8f36ba54dffa8), + [`06b933a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/06b933aa6a2ecb285c3511e06de0dfb93d38c40e), + [`bea0466`](https://github.com/bnb-chain/greenfield-js-sdk/commit/bea04668309bb4a769b68e9eab4f193ad2ef1d4b), + [`609f4cd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/609f4cdbeccd289cd4080c0994aa2eb24bfa6eb2), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`88acc61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/88acc61ef8e9826a9805a56f92d6321985a07e9a), + [`780e2ef`](https://github.com/bnb-chain/greenfield-js-sdk/commit/780e2efdfbc0d168c791c82e724ad96504050169), + [`56a263e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/56a263ec0a39844d967ce99a7b58165cc686a16c)]: + - @bnb-chain/greenfield-js-sdk@0.2.5 + ## 0.0.9-alpha.9 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 86d96b6d..6247770f 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.9-alpha.9", + "version": "0.0.9", "type": "commonjs", "private": true, "scripts": {}, diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 8f2f1e20..ac9883e8 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,87 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.5 + +### Patch Changes + +- [#324](https://github.com/bnb-chain/greenfield-js-sdk/pull/324) + [`f3a7ce8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f3a7ce8f06d6bedf5e07bccccc4ada7676e79f2a) + Thanks [@rrr523](https://github.com/rrr523)! - feat: New Bucket API: `headBucketExtra` + +- [#319](https://github.com/bnb-chain/greenfield-js-sdk/pull/319) + [`ec4297d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec4297da042e1b7c656d26b65d56fe52ac80365f) + Thanks [@rrr523](https://github.com/rrr523)! - feat: add vg settle api + +- [#317](https://github.com/bnb-chain/greenfield-js-sdk/pull/317) + [`910c0cc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/910c0cc7ab7267e67b9cb59b702b70b0d1364c2b) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Distribution api + +- [#302](https://github.com/bnb-chain/greenfield-js-sdk/pull/302) + [`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: Sp types + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Validator API - editValidator + +- [#308](https://github.com/bnb-chain/greenfield-js-sdk/pull/308) + [`4acdb91`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4acdb919f4c2d7764c670f97c26a5b9cca8c962e) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: Update Deps + +- [#312](https://github.com/bnb-chain/greenfield-js-sdk/pull/312) + [`b13fba4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b13fba46d5df93bcaa643cd79aeea7dd4128feee) + Thanks [@rrr523](https://github.com/rrr523)! - fix: TxClient and QueryClient is not singleton + +- [#312](https://github.com/bnb-chain/greenfield-js-sdk/pull/312) + [`c7f9ef3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7f9ef355e57bcc17a46b96655d8f36ba54dffa8) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add sp `ListObjectPolicies` API + +- [#314](https://github.com/bnb-chain/greenfield-js-sdk/pull/314) + [`06b933a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/06b933aa6a2ecb285c3511e06de0dfb93d38c40e) + Thanks [@rrr523](https://github.com/rrr523)! - fix: All class use injectable + +- [#305](https://github.com/bnb-chain/greenfield-js-sdk/pull/305) + [`bea0466`](https://github.com/bnb-chain/greenfield-js-sdk/commit/bea04668309bb4a769b68e9eab4f193ad2ef1d4b) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: Sp metainfo + +- [#312](https://github.com/bnb-chain/greenfield-js-sdk/pull/312) + [`609f4cd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/609f4cdbeccd289cd4080c0994aa2eb24bfa6eb2) + Thanks [@rrr523](https://github.com/rrr523)! - feat: `getUserBuckets` -> `listBuckets`, and + response add vgf(includes `Id` and `PrimarySpId`) + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Proposal vote api + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - feat: ListUserPaymentAccount api + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Bucket listBucketsByPaymentAccount api + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: basic.multi -> txClient.multi + +- [#332](https://github.com/bnb-chain/greenfield-js-sdk/pull/332) + [`88acc61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/88acc61ef8e9826a9805a56f92d6321985a07e9a) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Delete Policy + +- [#312](https://github.com/bnb-chain/greenfield-js-sdk/pull/312) + [`780e2ef`](https://github.com/bnb-chain/greenfield-js-sdk/commit/780e2efdfbc0d168c791c82e724ad96504050169) + Thanks [@rrr523](https://github.com/rrr523)! - fix: PutPolicy if resource is empty use `[]` not + `['']` + +- [#330](https://github.com/bnb-chain/greenfield-js-sdk/pull/330) + [`56a263e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/56a263ec0a39844d967ce99a7b58165cc686a16c) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Custom any tx by raw info + +- Updated dependencies + [[`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274)]: + - @bnb-chain/greenfield-zk-crypto@0.0.3 + ## 0.2.5-alpha.9 ### Patch Changes diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 4858ac85..f888743e 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.5-alpha.9", + "version": "0.2.5", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", diff --git a/packages/create-gnfd-app/CHANGELOG.md b/packages/create-gnfd-app/CHANGELOG.md index fa347f0b..17ca5eeb 100644 --- a/packages/create-gnfd-app/CHANGELOG.md +++ b/packages/create-gnfd-app/CHANGELOG.md @@ -1,5 +1,21 @@ # @bnb-chain/create-gnfd-app +## 0.0.2 + +### Patch Changes + +- [#336](https://github.com/bnb-chain/greenfield-js-sdk/pull/336) + [`ef99831`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ef99831b10254a002c08930600aa65242e52a530) + Thanks [@rrr523](https://github.com/rrr523)! - release create app + +- [#339](https://github.com/bnb-chain/greenfield-js-sdk/pull/339) + [`6aaf062`](https://github.com/bnb-chain/greenfield-js-sdk/commit/6aaf06274a6acb692f6c87d2fb4f819e98814f8b) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add vite template + +- [#334](https://github.com/bnb-chain/greenfield-js-sdk/pull/334) + [`03be217`](https://github.com/bnb-chain/greenfield-js-sdk/commit/03be21724f3c2b04145ff5925a41726edc381832) + Thanks [@rrr523](https://github.com/rrr523)! - feat: 🎉 Create App Commander + ## 0.0.2-alpha.2 ### Patch Changes diff --git a/packages/create-gnfd-app/package.json b/packages/create-gnfd-app/package.json index 919d9743..95afec92 100644 --- a/packages/create-gnfd-app/package.json +++ b/packages/create-gnfd-app/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/create-gnfd-app", - "version": "0.0.2-alpha.2", + "version": "0.0.2", "description": "help you create greenfield project quickly", "main": "index.js", "bin": { diff --git a/packages/zk-crypto/CHANGELOG.md b/packages/zk-crypto/CHANGELOG.md index e5b303cc..5a325402 100644 --- a/packages/zk-crypto/CHANGELOG.md +++ b/packages/zk-crypto/CHANGELOG.md @@ -1,5 +1,13 @@ # @bnb-chain/zk-crypto +## 0.0.3 + +### Patch Changes + +- [#302](https://github.com/bnb-chain/greenfield-js-sdk/pull/302) + [`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Upgrade TinyGo version and Go version + ## 0.0.3-alpha.0 ### Patch Changes diff --git a/packages/zk-crypto/package.json b/packages/zk-crypto/package.json index 4761950d..38f35c2d 100644 --- a/packages/zk-crypto/package.json +++ b/packages/zk-crypto/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-zk-crypto", - "version": "0.0.3-alpha.0", + "version": "0.0.3", "description": "Zk crypto wasm module", "scripts": { "predev": "rimraf ./dist", From cb8d60de3f0e37ef091d3b56a2f5f22cfd184607 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Sat, 16 Sep 2023 00:44:45 +0800 Subject: [PATCH 252/433] chore: Enter pre (#343) --- .changeset/pre.json | 13 +++++++++++++ examples/nextjs/src/client/index.ts | 3 +-- examples/nextjs/src/pages/_document.tsx | 4 ++-- 3 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 00000000..4328d2a8 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,13 @@ +{ + "mode": "pre", + "tag": "alpha", + "initialVersions": { + "@demo/wallet": "0.0.6", + "@demo/nodejs": "0.0.9", + "@bnb-chain/greenfield-js-sdk": "0.2.5", + "@bnb-chain/create-gnfd-app": "0.0.2", + "@bnb-chain/greenfiled-file-handle": "0.2.1", + "@bnb-chain/greenfield-zk-crypto": "0.0.3" + }, + "changesets": [] +} diff --git a/examples/nextjs/src/client/index.ts b/examples/nextjs/src/client/index.ts index 59699810..760862a2 100644 --- a/examples/nextjs/src/client/index.ts +++ b/examples/nextjs/src/client/index.ts @@ -2,8 +2,7 @@ import { GREEN_CHAIN_ID, GRPC_URL } from '@/config'; import { Client } from '@bnb-chain/greenfield-js-sdk'; export const client = Client.create(GRPC_URL, String(GREEN_CHAIN_ID), { - zkCryptoUrl: - 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto@0.0.3-alpha.0/dist/node/zk-crypto.wasm', + zkCryptoUrl: 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto@0.0.3/dist/node/zk-crypto.wasm', }); export const getSps = async () => { diff --git a/examples/nextjs/src/pages/_document.tsx b/examples/nextjs/src/pages/_document.tsx index d90c792e..660f65ba 100644 --- a/examples/nextjs/src/pages/_document.tsx +++ b/examples/nextjs/src/pages/_document.tsx @@ -8,10 +8,10 @@ export default function Document() {

      - + From 5143456fd55cc46978c4b049da7f9389a26e2509 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Sat, 16 Sep 2023 01:10:58 +0800 Subject: [PATCH 253/433] chore(docs): Update README (#344) --- README.md | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 47e339dc..517ccc84 100644 --- a/README.md +++ b/README.md @@ -10,26 +10,33 @@ You can find some package documentation below: | [@bnb-chain/greenfield-js-sdk](./packages/chain-sdk/README.md) | A client library for Greenfield Chain | | [@bnb-chain/greenfiled-file-handle](./packages/file-handle/README.md) | WASM module that handle file, such as `checksums` | | [@bnb-chain/greenfield-zk-crypto](./packages/zk-crypto/README.md) | WASM module about sign crypto | +| [@bnb-chain/create-gnfd-app](./packages/create-gnfd-app/README.md) | Create Greenfield App Quickly | -## Document -[Document](./packages/chain-sdk/README.md) +## Online Examples -## Examples +* [Nextjs](https://codesandbox.io/p/github/rrr523/greenfield-nextjs-template/main) +* [Create React App](https://codesandbox.io/p/github/rrr523/greenfield-cra-template/main) +* [Vite](https://codesandbox.io/p/github/rrr523/greenfield-vite-template/main) -There are runnable examples included in the [examples](./examples/) folder +## Quick Start -* [Next.js Example(TypeScript)](./examples/nextjs/README.md) -* [Nodejs](./examples/nodejs/README.md) +You can use [`create-gnfd-app`](./packages/create-gnfd-app/README.md) to create a app quickly. + +```bash +> npx @bnb-chain/create-gnfd-app +``` -### Try in Stackblitz +![](./packages/create-gnfd-app/example.gif) -You can try out some examples directly in your browser through Stackblitz: -* [Next.js Exmaple(Typescript)](https://stackblitz.com/edit/github-kikred?file=src%2Fpages%2Ftx.tsx) + -### Running Examples Locally -Clone the project and install dependencies: + - -abd then run example: + ## Supported JS environments From 9ac96667d315435538e70ced87c3e82c523feeb7 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Mon, 18 Sep 2023 14:38:08 +0800 Subject: [PATCH 254/433] release 0.2.5 (#345) * Update WASM (#55) * feat: Update WASM * feat: Update create object tx * docs: Update doc (#56) * feat: Pre alpha (#57) * chore: [ci] release (alpha) (#58) Co-authored-by: github-actions[bot] * Update README.md * multi msg (#59) * feat: Multi Send * feat: Compatibility multi tx message * chore: [ci] release (alpha) (#62) Co-authored-by: github-actions[bot] * fix: CreateObject Msg (#65) * feat: add offchainauth method (#64) * feat: Add offchainauth method * feat: Compatiable old get approval method * Create ten-suits-crash.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> Co-authored-by: rrr523 * chore: [ci] release (alpha) (#66) Co-authored-by: github-actions[bot] * feat: Add Sp params (#67) * feat: Optimize get approval types and add throw error (#70) * feat: Optimize get approval types and add throw error * Create fluffy-snails-explain.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#68) Co-authored-by: github-actions[bot] * chore: Update example without greenfield-cosmos-types (#71) * fix: Return Promise (#72) * fix: Return Promise * Create strong-snails-count.md * chore: [ci] release (alpha) (#73) Co-authored-by: github-actions[bot] * fix: Create Group message (#74) * fix: Create Group message * Create young-bears-scream.md * feat: Add Storage Params API (#76) * chore: [ci] release (alpha) (#75) Co-authored-by: github-actions[bot] * Chore/group example (#77) * feat: Group API * chore: Group and Mirror example * chore: [ci] release (alpha) (#78) Co-authored-by: github-actions[bot] * chore: Update example (#79) * feat: Add query param to ListObjects API for display folder. (#80) * feat: Add query params to ListObjects API for folder * Create clean-dogs-joke.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/group (#82) * chore: Update Example * feat: Add some group API * Create sweet-feet-hide.md * chore: [ci] release (alpha) (#81) Co-authored-by: github-actions[bot] * Update objectt.ts (#83) * Update objectt.ts add missing resp params * Create cold-suns-accept.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/policy (#86) * feat: Policy API * fix: Object API name * Create pretty-bulldogs-notice.md * feat: Migrate out zkbas-js-sdk and upate the sign msg format (#85) * feat: Migrate out zkbas-js-sdk and upate the sign msg format * Create fluffy-pumas-yawn.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#84) Co-authored-by: github-actions[bot] * fix: Head Group (#96) * fix: Head Group * Create cyan-ties-cross.md * feat: Multi Send Txs (#97) * feat: Multi Send Txs * Create lovely-knives-smile.md * chore: [ci] release (alpha) (#98) Co-authored-by: github-actions[bot] * feat: Allow to have sp auth fail (#101) * feat: Allow to have sp auth fail * fix: Replace endpoint with address when auth failed * Create tidy-dodos-care.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: TS lib (#104) * feat: Sync cosmos types (#106) * chore: [ci] release (alpha) (#102) Co-authored-by: github-actions[bot] * chore: Use rainbowkit simply wallet of example (#107) * Feat/update group (#108) * feat: Update group extra api * chore: Test group api * Create quiet-planets-shop.md * chore: [ci] release (alpha) (#109) Co-authored-by: github-actions[bot] * Feat/sp listgroup (#110) * feat: Add sp.listGroup API * chore: Update Example * chore: [ci] release (alpha) (#111) Co-authored-by: github-actions[bot] * chore: Update Example (#112) * chore: Update Examples (#114) * chore(dep): Add cross-env * chore(dep): Npm script * chore: Pnpm engines * chore: Codesandbox Example (#115) * chore(docs): Update stackblitz url (#116) * refactor: CreateFoler API params (#119) * chore: [ci] release (alpha) (#120) Co-authored-by: github-actions[bot] * feat: TimeStamp format * chore: [ci] release (alpha) (#121) Co-authored-by: github-actions[bot] * Refactor/policy (#122) * refactor: Bucket policy * refactor: Bucket policy * chore: [ci] release (alpha) (#123) Co-authored-by: github-actions[bot] * chore(example): BucketPolicy (#127) * Chore/update policy example (#128) * chore(example): BucketPolicy * chore(example): BucketPolicy * Feat/gashub (#129) * feat: Add gas hub API * refactor: TypeUrl as constants * chore: [ci] release (alpha) (#130) Co-authored-by: github-actions[bot] * feat: Export queryClient (#131) * feat: Export queryClient * Create calm-birds-sleep.md * Update README.md * fix: Compatiable net error (#133) * fix: Compatiable net error * Create old-roses-play.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#132) Co-authored-by: github-actions[bot] * Test/test case (#134) * feat: Isomorphic fetch * test: Uint test and e2e test * feat: Sync Types (#136) * feat: Sync Types * Create weak-hounds-sell.md * chore: [ci] release (alpha) (#135) Co-authored-by: github-actions[bot] * Fix/sort types (#137) * feat: Sort EIP712 message field * feat: Extra field * Create happy-humans-thank.md * chore: [ci] release (alpha) (#138) Co-authored-by: github-actions[bot] * feat: Bump version (#139) * chore: [ci] release (alpha) (#140) Co-authored-by: github-actions[bot] * feat: Split approval and simulate (#141) * chore: [ci] release (alpha) (#142) Co-authored-by: github-actions[bot] * Revert "feat: Split approval and simulate" (#143) * Revert "feat: Split approval and simulate" This reverts commit 76defa7f31b7f2d4683f8ed04e8dc2786dd1ef6c. * Create dirty-parrots-hear.md * chore: [ci] release (alpha) (#144) Co-authored-by: github-actions[bot] * Chore/test case (#145) * chore(test): Remove private key from config * chore: Test CI * chore: Update rainkit version (#146) * feat: Query Lock Fee API (#147) * feat: Query Lock Fee API * Create green-avocados-jump.md * chore: [ci] release (alpha) (#148) Co-authored-by: github-actions[bot] * Update bucket.ts (#149) * Update bucket.ts throw error * Create hot-countries-begin.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#150) Co-authored-by: github-actions[bot] * fix: Return real statuscode when call metaservice (#164) * fix: Return real statuscode when call metaservice * Create kind-eyes-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#166) Co-authored-by: github-actions[bot] * feat: Upgrade types version (#167) * chore: [ci] release (alpha) (#168) Co-authored-by: github-actions[bot] * Feat/sp exit (#169) * feat: Add Virtual Group API * feat: Compatibility createBukcet and createObject API * feat: Add Migrate bucket API * Feat/batch upload (#171) * feat: Feegrant * feat: Feegrant * Create angry-horses-enjoy.md * Feat/batch upload (#174) * feat: Feegrant * feat: Feegrant * feat: Feegrant grantAllowance API * feat: CreateObject example * feat: CreateBucket example * feat: Transfer example * feat: AuthInfoBytes add feePayer and feeGranter * feat: Add Two Apis (#179) * feat: Add Two Apis * Create mean-wombats-remain.md * chore: [ci] release (alpha) (#170) Co-authored-by: github-actions[bot] * feat AuthV1 (#182) * chore: Update example * chore: Update Example * feat: V1Auth * feat: V1Auth generate * feat: V1Auth createObject Approval * Create shaggy-experts-approve.md * Feat/com new (#186) * feat: Remove GetUserBuckets API Auth * feat: Update BucketProps type * feat: Remove listObjects api auth and update response type * feat: Remove listGroup api auth * feat: Update Types * chore: [ci] release (alpha) (#183) Co-authored-by: github-actions[bot] * feat: Offchainauth timeout reduced to 2s (#187) * feat: Offchainauth timeout reduced to 2s * Create warm-planets-exercise.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#188) Co-authored-by: github-actions[bot] * Feat/auth v1 (#189) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * Create empty-pens-sing.md * chore: [ci] release (alpha) (#190) Co-authored-by: github-actions[bot] * Feat/auth v1 (#191) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * feat: API getStorageProviderInfo params update * chore: Upgrade types * feat: GetSpURLfrom bucket * feat: Remove Sp param when create object and bucket * chore: [ci] release (alpha) (#192) Co-authored-by: github-actions[bot] * feat: Change Allwance value type (#193) * chore: Test config update * feat: Change Allowance Type * chore: [ci] release (alpha) (#194) Co-authored-by: github-actions[bot] * feat: MultiTx support private key (#195) * fix: Throw sp error code and message (#197) * fix: Throw sp error code and message * Create good-bobcats-hang.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#196) Co-authored-by: github-actions[bot] * fix: No sp available error (#200) * fix: No sp available error * Create khaki-ducks-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Opt (#198) * chore: Update Example * refactor: Replace @ethereumjs/util with @ethersproject/bytes * feat: Upload Object V1 auth * fix: CreateObjectTx content-type msg * chore: [ci] release (alpha) (#201) Co-authored-by: github-actions[bot] * feat: Extend response time to 3s (#202) * feat: Extend response time to 3s * Create orange-spiders-add.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#203) Co-authored-by: github-actions[bot] * Chore/conflict (#209) * release 0.2.2 (#204) * feat: Update Types * chore: [ci] release (alpha) * Feat/query status (#42) * fix: Return types * feat: Feegrant * fix: Pubkey typeUrl * feat: Upgrade Cosmos SDK * refactor: Simply broadcast and simulate tx * feat: Support Tx by PrivateKey * feat: Replace local message with types npm * test: Test Framework * chore: Upgrade Example wagmi version, Replace ethersjs with viem * feat: Support EIP712 callback use external provider * feat: Support dynamic provider * test: Support jest test * test: Account Query * feat: Change Tx API * feat: Type Complete * chore: Complate Example in New API * fix: Rollup bundle Support Nodejs * feat: Resolute Module (IoC) * docs: Update README * chore: [ci] release (alpha) (#43) Co-authored-by: github-actions[bot] * Feat/multi msg (#49) * feat: Multi Send * feat: Compatibility multi tx message * Revert "Feat/multi msg (#49)" (#53) This reverts commit fc3dd986646624c81f3cc43bdffb02e70d170b4f. * Update WASM (#55) * feat: Update WASM * feat: Update create object tx * docs: Update doc (#56) * feat: Pre alpha (#57) * chore: [ci] release (alpha) (#58) Co-authored-by: github-actions[bot] * Update README.md * multi msg (#59) * feat: Multi Send * feat: Compatibility multi tx message * chore: [ci] release (alpha) (#62) Co-authored-by: github-actions[bot] * fix: CreateObject Msg (#65) * feat: add offchainauth method (#64) * feat: Add offchainauth method * feat: Compatiable old get approval method * Create ten-suits-crash.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> Co-authored-by: rrr523 * chore: [ci] release (alpha) (#66) Co-authored-by: github-actions[bot] * feat: Add Sp params (#67) * feat: Optimize get approval types and add throw error (#70) * feat: Optimize get approval types and add throw error * Create fluffy-snails-explain.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#68) Co-authored-by: github-actions[bot] * chore: Update example without greenfield-cosmos-types (#71) * fix: Return Promise (#72) * fix: Return Promise * Create strong-snails-count.md * chore: [ci] release (alpha) (#73) Co-authored-by: github-actions[bot] * fix: Create Group message (#74) * fix: Create Group message * Create young-bears-scream.md * feat: Add Storage Params API (#76) * chore: [ci] release (alpha) (#75) Co-authored-by: github-actions[bot] * Chore/group example (#77) * feat: Group API * chore: Group and Mirror example * chore: [ci] release (alpha) (#78) Co-authored-by: github-actions[bot] * chore: Update example (#79) * feat: Add query param to ListObjects API for display folder. (#80) * feat: Add query params to ListObjects API for folder * Create clean-dogs-joke.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/group (#82) * chore: Update Example * feat: Add some group API * Create sweet-feet-hide.md * chore: [ci] release (alpha) (#81) Co-authored-by: github-actions[bot] * Update objectt.ts (#83) * Update objectt.ts add missing resp params * Create cold-suns-accept.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/policy (#86) * feat: Policy API * fix: Object API name * Create pretty-bulldogs-notice.md * feat: Migrate out zkbas-js-sdk and upate the sign msg format (#85) * feat: Migrate out zkbas-js-sdk and upate the sign msg format * Create fluffy-pumas-yawn.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#84) Co-authored-by: github-actions[bot] * fix: Head Group (#96) * fix: Head Group * Create cyan-ties-cross.md * feat: Multi Send Txs (#97) * feat: Multi Send Txs * Create lovely-knives-smile.md * chore: [ci] release (alpha) (#98) Co-authored-by: github-actions[bot] * feat: Allow to have sp auth fail (#101) * feat: Allow to have sp auth fail * fix: Replace endpoint with address when auth failed * Create tidy-dodos-care.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: TS lib (#104) * feat: Sync cosmos types (#106) * chore: [ci] release (alpha) (#102) Co-authored-by: github-actions[bot] * chore: Use rainbowkit simply wallet of example (#107) * Feat/update group (#108) * feat: Update group extra api * chore: Test group api * Create quiet-planets-shop.md * chore: [ci] release (alpha) (#109) Co-authored-by: github-actions[bot] * Feat/sp listgroup (#110) * feat: Add sp.listGroup API * chore: Update Example * chore: [ci] release (alpha) (#111) Co-authored-by: github-actions[bot] * chore: Update Example (#112) * chore: Update Examples (#114) * chore(dep): Add cross-env * chore(dep): Npm script * chore: Pnpm engines * chore: Codesandbox Example (#115) * chore(docs): Update stackblitz url (#116) * refactor: CreateFoler API params (#119) * chore: [ci] release (alpha) (#120) Co-authored-by: github-actions[bot] * feat: TimeStamp format * chore: [ci] release (alpha) (#121) Co-authored-by: github-actions[bot] * Refactor/policy (#122) * refactor: Bucket policy * refactor: Bucket policy * chore: [ci] release (alpha) (#123) Co-authored-by: github-actions[bot] * chore(example): BucketPolicy (#127) * Chore/update policy example (#128) * chore(example): BucketPolicy * chore(example): BucketPolicy * Feat/gashub (#129) * feat: Add gas hub API * refactor: TypeUrl as constants * chore: [ci] release (alpha) (#130) Co-authored-by: github-actions[bot] * feat: Export queryClient (#131) * feat: Export queryClient * Create calm-birds-sleep.md * Update README.md * fix: Compatiable net error (#133) * fix: Compatiable net error * Create old-roses-play.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#132) Co-authored-by: github-actions[bot] * Test/test case (#134) * feat: Isomorphic fetch * test: Uint test and e2e test * feat: Sync Types (#136) * feat: Sync Types * Create weak-hounds-sell.md * chore: [ci] release (alpha) (#135) Co-authored-by: github-actions[bot] * Fix/sort types (#137) * feat: Sort EIP712 message field * feat: Extra field * Create happy-humans-thank.md * chore: [ci] release (alpha) (#138) Co-authored-by: github-actions[bot] * feat: Bump version (#139) * chore: [ci] release (alpha) (#140) Co-authored-by: github-actions[bot] * feat: Split approval and simulate (#141) * chore: [ci] release (alpha) (#142) Co-authored-by: github-actions[bot] * Revert "feat: Split approval and simulate" (#143) * Revert "feat: Split approval and simulate" This reverts commit 76defa7f31b7f2d4683f8ed04e8dc2786dd1ef6c. * Create dirty-parrots-hear.md * chore: [ci] release (alpha) (#144) Co-authored-by: github-actions[bot] * Chore/test case (#145) * chore(test): Remove private key from config * chore: Test CI * chore: Update rainkit version (#146) * feat: Query Lock Fee API (#147) * feat: Query Lock Fee API * Create green-avocados-jump.md * chore: [ci] release (alpha) (#148) Co-authored-by: github-actions[bot] * Update bucket.ts (#149) * Update bucket.ts throw error * Create hot-countries-begin.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#150) Co-authored-by: github-actions[bot] * fix: Return real statuscode when call metaservice (#164) * fix: Return real statuscode when call metaservice * Create kind-eyes-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#166) Co-authored-by: github-actions[bot] * feat: Upgrade types version (#167) * chore: [ci] release (alpha) (#168) Co-authored-by: github-actions[bot] * Feat/sp exit (#169) * feat: Add Virtual Group API * feat: Compatibility createBukcet and createObject API * feat: Add Migrate bucket API * Feat/batch upload (#171) * feat: Feegrant * feat: Feegrant * Create angry-horses-enjoy.md * Feat/batch upload (#174) * feat: Feegrant * feat: Feegrant * feat: Feegrant grantAllowance API * feat: CreateObject example * feat: CreateBucket example * feat: Transfer example * feat: AuthInfoBytes add feePayer and feeGranter * feat: Add Two Apis (#179) * feat: Add Two Apis * Create mean-wombats-remain.md * chore: [ci] release (alpha) (#170) Co-authored-by: github-actions[bot] * feat AuthV1 (#182) * chore: Update example * chore: Update Example * feat: V1Auth * feat: V1Auth generate * feat: V1Auth createObject Approval * Create shaggy-experts-approve.md * Feat/com new (#186) * feat: Remove GetUserBuckets API Auth * feat: Update BucketProps type * feat: Remove listObjects api auth and update response type * feat: Remove listGroup api auth * feat: Update Types * chore: [ci] release (alpha) (#183) Co-authored-by: github-actions[bot] * feat: Offchainauth timeout reduced to 2s (#187) * feat: Offchainauth timeout reduced to 2s * Create warm-planets-exercise.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#188) Co-authored-by: github-actions[bot] * Feat/auth v1 (#189) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * Create empty-pens-sing.md * chore: [ci] release (alpha) (#190) Co-authored-by: github-actions[bot] * Feat/auth v1 (#191) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * feat: API getStorageProviderInfo params update * chore: Upgrade types * feat: GetSpURLfrom bucket * feat: Remove Sp param when create object and bucket * chore: [ci] release (alpha) (#192) Co-authored-by: github-actions[bot] * feat: Change Allwance value type (#193) * chore: Test config update * feat: Change Allowance Type * chore: [ci] release (alpha) (#194) Co-authored-by: github-actions[bot] * feat: MultiTx support private key (#195) * fix: Throw sp error code and message (#197) * fix: Throw sp error code and message * Create good-bobcats-hang.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#196) Co-authored-by: github-actions[bot] * fix: No sp available error (#200) * fix: No sp available error * Create khaki-ducks-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Opt (#198) * chore: Update Example * refactor: Replace @ethereumjs/util with @ethersproject/bytes * feat: Upload Object V1 auth * fix: CreateObjectTx content-type msg * chore: [ci] release (alpha) (#201) Co-authored-by: github-actions[bot] * feat: Extend response time to 3s (#202) * feat: Extend response time to 3s * Create orange-spiders-add.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#203) Co-authored-by: github-actions[bot] --------- Co-authored-by: github-actions[bot] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> * chore: Pre exit (#205) * chore: [ci] release (#206) Co-authored-by: github-actions[bot] * chore: Rename package (#207) * chore: [ci] release (#208) Co-authored-by: github-actions[bot] --------- Co-authored-by: github-actions[bot] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> * Feat/payment (#210) * feat: Add Payment query API * fix: Create Payment Account * fix: Payment disableRefund * chore: Update Example * chore: [ci] release (alpha) (#211) Co-authored-by: github-actions[bot] * chore: Update README link (#214) * fix: Return Types (#213) * chore: Update withdraw example params (#212) * chore: Update withdraw example params * feat: Zk crypto wasm package * chore: Nodejs example update package * chore: Add comment * chore: Update UMD name * feat: Upgrade file handle package * chore: Update OffchainAuth example * feat: New Zk package * chore: Changeset (#215) * chore: [ci] release (alpha) (#216) Co-authored-by: github-actions[bot] * Feat/group api (#217) * fix: Dynamic add and delete members string array * chore: Release zk crypto * chore: [ci] release (alpha) (#218) Co-authored-by: github-actions[bot] * chore: Release zk crypto (#219) * chore: [ci] release (alpha) (#220) Co-authored-by: github-actions[bot] * fix: Zk version bump (#221) * chore: [ci] release (alpha) (#222) Co-authored-by: github-actions[bot] * fix: DeepClone EIP712 (#223) * chore: [ci] release (alpha) (#224) Co-authored-by: github-actions[bot] * fix: Error try catch (#230) * chore: [ci] release (alpha) (#231) Co-authored-by: github-actions[bot] * Feat/auth (#232) * feat: Compatibility new payment api * feat: Compatibility updateGroupMember api * chore: Update example * feat: Feegrant api add timestamp * feat: EDDSA Sign * feat: Remove log (#234) * chore: [ci] release (alpha) (#233) Co-authored-by: github-actions[bot] * fix: Feegrant add expiration time (#235) * fix: Feegrant add expiration time * chore(example): GetAllowence support pagination * refactor (#236) * refactor: Tx * fix: Type * feat: Add Group API * feat: Update Sp API * feat: Bucket add authType * feat: and add params * fix: Types * feat: Change type * chore: [ci] release (alpha) (#237) Co-authored-by: github-actions[bot] * Fix/read quota (#238) * fix: CreateBucketApproval * feat: ReadQuota * chore(example): Update Example * chore: [ci] release (alpha) (#239) Co-authored-by: github-actions[bot] * XML response (#240) * feat: Return XML type * feat: CreateBucket Add payment address * chore: [ci] release (alpha) (#241) Co-authored-by: github-actions[bot] * fix: XMLParser force array not object (#242) * Feat/export req (#243) * fix: XMLParser force array not object * fix: XMLParser force array not object * chore: [ci] release (alpha) (#244) Co-authored-by: github-actions[bot] * feat: Export types (#245) * Export types (#247) * feat: Export types * fix: Hex number convert to string not big number * chore: [ci] release (alpha) (#246) Co-authored-by: github-actions[bot] * Feat/up and down (#248) * feat: Upload Object add AuthType * feat: Download s3 object * feat: Migrate Bucket add authType * feat: SpClient expose makeHeaders method * chore: Update constant pathj * chore: [ci] release (alpha) (#249) Co-authored-by: github-actions[bot] * Feat/xml null (#250) * feat: Add default XML value * feat: Add default XML value * chore: [ci] release (alpha) (#251) Co-authored-by: github-actions[bot] * Fix/gap time (#252) * fix: Gap time * fix: Gap time * Feat/meta (#254) * feat: GetBucketMeta * feat: Object Meta * Create curly-fishes-bow.md * chore: [ci] release (alpha) (#253) Co-authored-by: github-actions[bot] * Refactor/sp client (#255) * chore: Exact parseError * feat: Remove deps * chore: Structor * feat: Refeactor Sp Client * chore: [ci] release (alpha) (#256) Co-authored-by: github-actions[bot] * feat: Custom HTTP method (#257) * feat: Custom HTTP method * chore(example): Update * chore: [ci] release (alpha) (#258) Co-authored-by: github-actions[bot] * chore(docs): Update README (#259) * chore: Add comment (#260) * fix: Sp types (#261) * Feat/upload progress (#263) * fix: GfSpGetUserBucketsResponse Bucket types * feat: Cross fetch * chore: [ci] release (alpha) (#262) Co-authored-by: github-actions[bot] * fix: EncodePath (#264) * chore: [ci] release (alpha) (#265) Co-authored-by: github-actions[bot] * fix: Download http method (#266) * fix: Download http method (#267) * chore: [ci] release (alpha) (#268) Co-authored-by: github-actions[bot] * feat: New API getObjectPreviewUrl (#270) * chore: [ci] release (alpha) (#271) Co-authored-by: github-actions[bot] * fix: XML type align to go struct (#272) * feat: Optional endpoint param (#273) * chore: [ci] release (alpha) (#274) Co-authored-by: github-actions[bot] * fix: XML parse boolean (#275) * chore: [ci] release (alpha) (#276) Co-authored-by: github-actions[bot] * fix: Common Prefix parse as array (#277) * chore: [ci] release (alpha) (#278) Co-authored-by: github-actions[bot] * test: Parse XML test case (#279) * feat: Migrate bucket (#280) * fix: Create bucket quota params (#282) * chore: [ci] release (alpha) (#281) Co-authored-by: github-actions[bot] * feat: Replace xml2js to fast-xml-parse (#283) * Feat/update bucket info (#284) * feat: Update Bucket Info API * chore(example): Update * chore: [ci] release (alpha) (#285) Co-authored-by: github-actions[bot] * fix: EncodePath function (#286) * fix: Convert enum to number (#287) * chore: [ci] release (alpha) (#288) Co-authored-by: github-actions[bot] * feat: Add listReadRecords api * feat: ListGroups API * feat: ListObjectsByIds API * feat: ListBucketsByIds api * feat: Add verifyPermission api * feat: ListGroupsMembers * feat: ListUserGroups api * feat: Add listUserOwnedGroups api * chore: [ci] release (alpha) * feat: Sort query (#292) * feat: Sort query * Create healthy-chicken-beam.md * chore: [ci] release (alpha) (#293) Co-authored-by: github-actions[bot] * chore(exmaple): Group (#294) * docs: Update API (#295) * chore: Pre Exit (#296) * Pre exit (#297) * chore: Pre Exit * chore: Pre Exit * chore: [ci] release (#298) Co-authored-by: github-actions[bot] * chore: Pre Enter (#299) * Refactor/sp (#302) * feat: Auth expiry timestamp add default value * refactor: Sp types * fix: Expire time * feat: Upgrade TinyGo version * Refactor/sp (#305) * feat: Auth expiry timestamp add default value * refactor: Sp types * fix: Expire time * feat: Upgrade TinyGo version * refactor: Sp metainfo * chore: Update Example * chore: [ci] release (alpha) (#303) Co-authored-by: github-actions[bot] * fix: Build (#306) * chore: Update Deps (#308) * chore: [ci] release (alpha) (#307) Co-authored-by: github-actions[bot] * docs: Update README (#309) * Feat/validator (#310) * feat: EditValidator * feat: Add proposal api * refactor: TxClient * feat: Bucket listBucketsByPaymentAccount api * fix: Proposal and Validator API * feat: ListUserPaymentAccount api * chore: [ci] release (alpha) (#311) Co-authored-by: github-actions[bot] * chore: Nodejs example update * test: Test case update * chore: README update * feat: ListBuckets * fix: QueryClient and TxClient is not singleton * chore: Upgrade types * fix: PutPolicy * feat: ListObjectPolicies api * chore: [ci] release (alpha) * fix: IOC (#314) fix: All class use injectable * chore: [ci] release (alpha) (#315) Co-authored-by: github-actions[bot] * chore: Update exmaple (#316) * feat: Distribution API (#317) * chore: [ci] release (alpha) (#318) Co-authored-by: github-actions[bot] * feat: MsgSettle (#319) * feat: MsgSettle * Create fast-houses-do.md * chore: [ci] release (alpha) (#320) Co-authored-by: github-actions[bot] * chore(example): Update custom tx (#321) * chore: [ci] release (alpha) (#322) Co-authored-by: github-actions[bot] * chore: Github Action issue close (#323) * feat: Bucket headBucketExtra api (#324) * chore: [ci] release (alpha) (#325) Co-authored-by: github-actions[bot] * chore: Nodejs Example update (#326) * chore: Example Update (#327) * Chore/example (#328) * chore: Example Update * chore: Example Update * chore: Update (#329) * feat: Custom Tx (#330) * chore: [ci] release (alpha) (#331) Co-authored-by: github-actions[bot] * fix: Delete Policy (#332) * chore: [ci] release (alpha) (#333) Co-authored-by: github-actions[bot] * Feat/create app (#334) * feat: Template Init * feat: Template Init * feat: Create App Commander * chore: [ci] release (alpha) (#335) Co-authored-by: github-actions[bot] * feat: Create App Commander (#336) * chore: [ci] release (alpha) (#337) Co-authored-by: github-actions[bot] * chore: Update README (#338) * feat: Add vite template (#339) * chore: [ci] release (alpha) (#340) Co-authored-by: github-actions[bot] * release 0.2.5 (#341) chore: Pre Exit * chore: [ci] release (#342) Co-authored-by: github-actions[bot] * chore: Enter pre (#343) * chore(docs): Update README (#344) --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> --- .changeset/pre.json | 9 +- .github/workflows/issue-close.yaml | 25 + README.md | 43 +- examples/nextjs/.env.simple | 3 + examples/nextjs/CHANGELOG.md | 133 + examples/nextjs/package.json | 2 +- examples/nextjs/src/client/index.ts | 4 +- .../src/components/bucket/info/index.tsx | 2 +- .../nextjs/src/components/customtx/index.tsx | 88 + .../src/components/distribution/index.tsx | 80 + .../src/components/feegrant/createObj.tsx | 2 +- .../nextjs/src/components/feegrant/delObj.tsx | 2 +- .../nextjs/src/components/multimsg/index.tsx | 2 +- .../src/components/object/info/index.tsx | 18 + .../components/policy/bucketPolicy/index.tsx | 49 + .../components/policy/groupPolicy/index.tsx | 2 +- .../components/policy/objectPolicy/index.tsx | 37 +- .../nextjs/src/components/proposal/index.tsx | 48 + .../nextjs/src/components/query/index.tsx | 73 +- .../nextjs/src/components/validator/index.tsx | 128 + examples/nextjs/src/components/vg/index.tsx | 48 + examples/nextjs/src/config/env.ts | 2 + examples/nextjs/src/pages/_document.tsx | 4 +- examples/nextjs/src/pages/tx.tsx | 16 + examples/nodejs/CHANGELOG.md | 113 + examples/nodejs/README.md | 8 +- examples/nodejs/client.js | 63 + examples/nodejs/env.js | 7 + examples/nodejs/index.js | 43 - examples/nodejs/package.json | 11 +- examples/nodejs/storage.js | 40 + package.json | 8 +- packages/chain-sdk/CHANGELOG.md | 200 + packages/chain-sdk/README.md | 16 +- packages/chain-sdk/package.json | 13 +- packages/chain-sdk/rollup.config.js | 3 +- packages/chain-sdk/src/api/account.ts | 32 +- packages/chain-sdk/src/api/basic.ts | 306 +- packages/chain-sdk/src/api/bucket.ts | 366 +- packages/chain-sdk/src/api/challenge.ts | 12 +- packages/chain-sdk/src/api/crosschain.ts | 18 +- packages/chain-sdk/src/api/distribution.ts | 103 +- packages/chain-sdk/src/api/feegrant.ts | 12 +- packages/chain-sdk/src/api/gashub.ts | 4 +- packages/chain-sdk/src/api/group.ts | 18 +- packages/chain-sdk/src/api/objectt.ts | 187 +- packages/chain-sdk/src/api/offchainauth.ts | 9 +- packages/chain-sdk/src/api/payment.ts | 103 +- packages/chain-sdk/src/api/proposal.ts | 32 + packages/chain-sdk/src/api/sp.ts | 55 +- packages/chain-sdk/src/api/storage.ts | 21 +- packages/chain-sdk/src/api/validator.ts | 57 + packages/chain-sdk/src/api/virtualGroup.ts | 21 +- packages/chain-sdk/src/client.ts | 23 +- packages/chain-sdk/src/clients/queryclient.ts | 10 +- .../chain-sdk/src/clients/spclient/auth.ts | 33 +- .../src/clients/spclient/spApis/approval.ts | 40 + .../clients/spclient/spApis/getBucketMeta.ts | 24 +- .../src/clients/spclient/spApis/getNonce.ts | 10 +- .../src/clients/spclient/spApis/getObject.ts | 7 +- .../clients/spclient/spApis/getObjectMeta.ts | 28 +- .../clients/spclient/spApis/getUserBuckets.ts | 14 +- .../spclient/spApis/listBucketReadRecords.ts | 78 +- .../spclient/spApis/listBucketsByIds.ts | 26 +- .../spclient/spApis/listBucketsByPayment.ts | 57 + .../src/clients/spclient/spApis/listGroups.ts | 30 +- .../spclient/spApis/listGroupsMembers.ts | 4 +- .../spclient/spApis/listObjectPolicies.ts | 62 + .../spclient/spApis/listObjectsByBucket.ts | 6 +- .../spclient/spApis/listObjectsByIds.ts | 22 +- .../clients/spclient/spApis/listUserGroups.ts | 2 +- .../spclient/spApis/listUserOwnedGroups.ts | 4 +- .../spApis/listUserPaymentAccounts.ts | 61 + .../src/clients/spclient/spApis/metaInfos.ts | 11 +- .../src/clients/spclient/spApis/putObject.ts | 9 +- .../spclient/spApis/queryBucketReadQuota.ts | 8 +- .../spclient/spApis/verifyPermission.ts | 2 +- .../src/clients/spclient/spClient.ts | 40 +- packages/chain-sdk/src/clients/txClient.ts | 394 ++ packages/chain-sdk/src/constants/typeUrl.ts | 10 + .../MsgFundCommunityPoolTypeUrl.ts | 26 + .../distribution/MsgSetWithdrawAddress.ts | 16 + .../MsgWithdrawDelegatorReward.ts | 16 + .../MsgWithdrawValidatorCommission.ts | 12 + .../src/messages/cosmos/gov/MsgVote.ts | 24 + .../cosmos/staking/MsgCreateValidator.ts | 112 + .../cosmos/staking/MsgEditValidator.ts | 62 + .../greenfield/storage/MsgDeletePolicy.ts | 14 + .../greenfield/storage/MsgPutPolicy.ts | 30 +- .../storage/MsgUpdateGroupMember.ts | 5 +- .../greenfield/virtualgroup/MsgSettle.ts | 20 + packages/chain-sdk/src/messages/utils.ts | 2 + packages/chain-sdk/src/types/auth.ts | 5 +- packages/chain-sdk/src/types/index.ts | 2 +- .../chain-sdk/src/types/sp/BucketApproval.ts | 27 + packages/chain-sdk/src/types/sp/Common.ts | 182 + .../chain-sdk/src/types/sp/ErrorResponse.ts | 6 + .../chain-sdk/src/types/sp/GetBucketMeta.ts | 15 + packages/chain-sdk/src/types/sp/GetObject.ts | 6 + .../chain-sdk/src/types/sp/GetObjectMeta.ts | 15 + .../src/types/sp/GetPreviewObject.ts | 7 + .../chain-sdk/src/types/sp/GetUserBuckets.ts | 15 + .../src/types/sp/ListBucketReadRecord.ts | 18 + .../src/types/sp/ListBucketsByIDs.ts | 28 + .../types/sp/ListBucketsByPaymentAccount.ts | 14 + packages/chain-sdk/src/types/sp/ListGroups.ts | 29 + .../src/types/sp/ListGroupsMembers.ts | 27 + .../src/types/sp/ListObjectPolicies.ts | 19 + .../src/types/sp/ListObjectsByBucketName.ts | 26 + .../src/types/sp/ListObjectsByIDs.ts | 29 + .../chain-sdk/src/types/sp/ListUserGroups.ts | 27 + .../src/types/sp/ListUserOwnedGroups.ts | 27 + .../src/types/sp/ListUserPaymentAccounts.ts | 18 + .../chain-sdk/src/types/sp/MigrateBucket.ts | 16 + .../chain-sdk/src/types/sp/ObjectApproval.ts | 35 + packages/chain-sdk/src/types/sp/PutObject.ts | 8 + packages/chain-sdk/src/types/sp/ReadQuota.ts | 25 + .../chain-sdk/src/types/sp/RequestNonce.ts | 16 + .../chain-sdk/src/types/sp/SuccessResponse.ts | 8 + .../src/types/sp/VerifyPermission.ts | 16 + packages/chain-sdk/src/types/sp/index.ts | 24 + packages/chain-sdk/src/types/storage.ts | 238 -- packages/chain-sdk/src/types/tx.ts | 19 + .../.env.simple.ts => tests/.env.example.ts} | 0 .../chain-sdk/{src => }/tests/account.spec.ts | 10 - .../chain-sdk/{src => }/tests/config.spec.ts | 4 +- .../{src => }/tests/parsexml.spec.ts | 4 +- .../chain-sdk/{src => }/tests/policy.spec.ts | 1 - .../chain-sdk/{src => }/tests/query.spec.ts | 0 .../chain-sdk/{src => }/tests/storage.spec.ts | 65 +- .../chain-sdk/{src => }/tests/utils.spec.ts | 2 +- .../chain-sdk/{src => }/tests/wallet.spec.ts | 2 +- packages/create-gnfd-app/CHANGELOG.md | 41 + packages/create-gnfd-app/README.md | 9 + packages/create-gnfd-app/createApp.ts | 58 + packages/create-gnfd-app/example.gif | Bin 0 -> 539184 bytes .../helpers/get-pkg-manager.ts | 15 + .../helpers/get-template-url.ts | 3 + .../helpers/install-template.ts | 58 + .../helpers/is-folder-empty.ts | 58 + .../create-gnfd-app/helpers/is-writeable.ts | 14 + packages/create-gnfd-app/helpers/spinner.ts | 20 + packages/create-gnfd-app/index.ts | 94 + packages/create-gnfd-app/package.json | 49 + packages/create-gnfd-app/rollup.config.js | 35 + packages/create-gnfd-app/templates.ts | 8 + packages/create-gnfd-app/tsconfig.json | 13 + packages/create-gnfd-app/types/index.d.ts | 15 + packages/zk-crypto/CHANGELOG.md | 16 + packages/zk-crypto/package.json | 4 +- packages/zk-crypto/src/browser/wasm_exec.js | 202 +- packages/zk-crypto/src/node/wasm_exec.js | 202 +- packages/zk-crypto/src/wasm/zk-crypto.wasm | Bin 471254 -> 478559 bytes pnpm-lock.yaml | 3715 ++++++++--------- 154 files changed, 6346 insertions(+), 3373 deletions(-) create mode 100644 .github/workflows/issue-close.yaml create mode 100644 examples/nextjs/src/components/customtx/index.tsx create mode 100644 examples/nextjs/src/components/distribution/index.tsx create mode 100644 examples/nextjs/src/components/proposal/index.tsx create mode 100644 examples/nextjs/src/components/validator/index.tsx create mode 100644 examples/nextjs/src/components/vg/index.tsx create mode 100644 examples/nodejs/client.js create mode 100644 examples/nodejs/env.js delete mode 100644 examples/nodejs/index.js create mode 100644 examples/nodejs/storage.js create mode 100644 packages/chain-sdk/src/api/proposal.ts create mode 100644 packages/chain-sdk/src/api/validator.ts create mode 100644 packages/chain-sdk/src/clients/spclient/spApis/approval.ts create mode 100644 packages/chain-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts create mode 100644 packages/chain-sdk/src/clients/spclient/spApis/listObjectPolicies.ts create mode 100644 packages/chain-sdk/src/clients/spclient/spApis/listUserPaymentAccounts.ts create mode 100644 packages/chain-sdk/src/clients/txClient.ts create mode 100644 packages/chain-sdk/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts create mode 100644 packages/chain-sdk/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts create mode 100644 packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts create mode 100644 packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts create mode 100644 packages/chain-sdk/src/messages/cosmos/gov/MsgVote.ts create mode 100644 packages/chain-sdk/src/messages/cosmos/staking/MsgCreateValidator.ts create mode 100644 packages/chain-sdk/src/messages/cosmos/staking/MsgEditValidator.ts create mode 100644 packages/chain-sdk/src/messages/greenfield/virtualgroup/MsgSettle.ts create mode 100644 packages/chain-sdk/src/types/sp/BucketApproval.ts create mode 100644 packages/chain-sdk/src/types/sp/Common.ts create mode 100644 packages/chain-sdk/src/types/sp/ErrorResponse.ts create mode 100644 packages/chain-sdk/src/types/sp/GetBucketMeta.ts create mode 100644 packages/chain-sdk/src/types/sp/GetObject.ts create mode 100644 packages/chain-sdk/src/types/sp/GetObjectMeta.ts create mode 100644 packages/chain-sdk/src/types/sp/GetPreviewObject.ts create mode 100644 packages/chain-sdk/src/types/sp/GetUserBuckets.ts create mode 100644 packages/chain-sdk/src/types/sp/ListBucketReadRecord.ts create mode 100644 packages/chain-sdk/src/types/sp/ListBucketsByIDs.ts create mode 100644 packages/chain-sdk/src/types/sp/ListBucketsByPaymentAccount.ts create mode 100644 packages/chain-sdk/src/types/sp/ListGroups.ts create mode 100644 packages/chain-sdk/src/types/sp/ListGroupsMembers.ts create mode 100644 packages/chain-sdk/src/types/sp/ListObjectPolicies.ts create mode 100644 packages/chain-sdk/src/types/sp/ListObjectsByBucketName.ts create mode 100644 packages/chain-sdk/src/types/sp/ListObjectsByIDs.ts create mode 100644 packages/chain-sdk/src/types/sp/ListUserGroups.ts create mode 100644 packages/chain-sdk/src/types/sp/ListUserOwnedGroups.ts create mode 100644 packages/chain-sdk/src/types/sp/ListUserPaymentAccounts.ts create mode 100644 packages/chain-sdk/src/types/sp/MigrateBucket.ts create mode 100644 packages/chain-sdk/src/types/sp/ObjectApproval.ts create mode 100644 packages/chain-sdk/src/types/sp/PutObject.ts create mode 100644 packages/chain-sdk/src/types/sp/ReadQuota.ts create mode 100644 packages/chain-sdk/src/types/sp/RequestNonce.ts create mode 100644 packages/chain-sdk/src/types/sp/SuccessResponse.ts create mode 100644 packages/chain-sdk/src/types/sp/VerifyPermission.ts create mode 100644 packages/chain-sdk/src/types/sp/index.ts rename packages/chain-sdk/{src/tests/.env.simple.ts => tests/.env.example.ts} (100%) rename packages/chain-sdk/{src => }/tests/account.spec.ts (78%) rename packages/chain-sdk/{src => }/tests/config.spec.ts (94%) rename packages/chain-sdk/{src => }/tests/parsexml.spec.ts (98%) rename packages/chain-sdk/{src => }/tests/policy.spec.ts (98%) rename packages/chain-sdk/{src => }/tests/query.spec.ts (100%) rename packages/chain-sdk/{src => }/tests/storage.spec.ts (73%) rename packages/chain-sdk/{src => }/tests/utils.spec.ts (96%) rename packages/chain-sdk/{src => }/tests/wallet.spec.ts (98%) create mode 100644 packages/create-gnfd-app/CHANGELOG.md create mode 100644 packages/create-gnfd-app/README.md create mode 100644 packages/create-gnfd-app/createApp.ts create mode 100644 packages/create-gnfd-app/example.gif create mode 100644 packages/create-gnfd-app/helpers/get-pkg-manager.ts create mode 100644 packages/create-gnfd-app/helpers/get-template-url.ts create mode 100644 packages/create-gnfd-app/helpers/install-template.ts create mode 100644 packages/create-gnfd-app/helpers/is-folder-empty.ts create mode 100644 packages/create-gnfd-app/helpers/is-writeable.ts create mode 100644 packages/create-gnfd-app/helpers/spinner.ts create mode 100644 packages/create-gnfd-app/index.ts create mode 100644 packages/create-gnfd-app/package.json create mode 100644 packages/create-gnfd-app/rollup.config.js create mode 100644 packages/create-gnfd-app/templates.ts create mode 100644 packages/create-gnfd-app/tsconfig.json create mode 100644 packages/create-gnfd-app/types/index.d.ts diff --git a/.changeset/pre.json b/.changeset/pre.json index 4b87c69f..4328d2a8 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -2,11 +2,12 @@ "mode": "pre", "tag": "alpha", "initialVersions": { - "@demo/wallet": "0.0.5", - "@demo/nodejs": "0.0.8", - "@bnb-chain/greenfield-js-sdk": "0.2.4", + "@demo/wallet": "0.0.6", + "@demo/nodejs": "0.0.9", + "@bnb-chain/greenfield-js-sdk": "0.2.5", + "@bnb-chain/create-gnfd-app": "0.0.2", "@bnb-chain/greenfiled-file-handle": "0.2.1", - "@bnb-chain/greenfield-zk-crypto": "0.0.2" + "@bnb-chain/greenfield-zk-crypto": "0.0.3" }, "changesets": [] } diff --git a/.github/workflows/issue-close.yaml b/.github/workflows/issue-close.yaml new file mode 100644 index 00000000..e1533e98 --- /dev/null +++ b/.github/workflows/issue-close.yaml @@ -0,0 +1,25 @@ +name: Issue Close Require + +on: + schedule: + - cron: '0 0 * * *' + +jobs: + close-issues: + runs-on: ubuntu-latest + steps: + - name: need reproduce + uses: actions-cool/issues-helper@v3 + with: + actions: 'close-issues' + labels: '🤔 Need Reproduce' + inactive-day: 3 + + - name: needs more info + uses: actions-cool/issues-helper@v3 + with: + actions: 'close-issues' + labels: 'needs more info' + inactive-day: 3 + body: | + Since the issue was labeled with `needs more info`, but no response in 3 days. This issue will be closed. If you have any questions, you can comment and reply. diff --git a/README.md b/README.md index e2a7a1d9..517ccc84 100644 --- a/README.md +++ b/README.md @@ -10,38 +10,46 @@ You can find some package documentation below: | [@bnb-chain/greenfield-js-sdk](./packages/chain-sdk/README.md) | A client library for Greenfield Chain | | [@bnb-chain/greenfiled-file-handle](./packages/file-handle/README.md) | WASM module that handle file, such as `checksums` | | [@bnb-chain/greenfield-zk-crypto](./packages/zk-crypto/README.md) | WASM module about sign crypto | +| [@bnb-chain/create-gnfd-app](./packages/create-gnfd-app/README.md) | Create Greenfield App Quickly | -## Document -[Document](./packages/chain-sdk/README.md) +## Online Examples -## Examples +* [Nextjs](https://codesandbox.io/p/github/rrr523/greenfield-nextjs-template/main) +* [Create React App](https://codesandbox.io/p/github/rrr523/greenfield-cra-template/main) +* [Vite](https://codesandbox.io/p/github/rrr523/greenfield-vite-template/main) -There are runnable examples included in the [examples](./examples/) folder +## Quick Start -* [Next.js Example(TypeScript)](./examples/nextjs/README.md) -* [Nodejs](./examples/nodejs/README.md) +You can use [`create-gnfd-app`](./packages/create-gnfd-app/README.md) to create a app quickly. -### Try in Stackblitz +```bash +> npx @bnb-chain/create-gnfd-app +``` -You can try out some examples directly in your browser through Stackblitz: +![](./packages/create-gnfd-app/example.gif) -* [Next.js Exmaple(Typescript)](https://stackblitz.com/edit/github-kikred?file=src%2Fpages%2Ftx.tsx) -### Running Examples Locally + + + + - -abd then run example: + ## Supported JS environments diff --git a/examples/nextjs/.env.simple b/examples/nextjs/.env.simple index 211543dc..dfec62f9 100644 --- a/examples/nextjs/.env.simple +++ b/examples/nextjs/.env.simple @@ -14,3 +14,6 @@ NEXT_PUBLIC_CROSS_CHAIN_CONTRACT_ADDRESS=0xeEBe00Ac0756308ac4AaBfD76c05c4F3088B8 # ACCOUNT NEXT_PUBLIC_ACCOUNT_ADDRESS= NEXT_PUBLIC_ACCOUNT_PRIVATEKEY= + +# VALIDATOR +NEXT_PUBLIC_VALIDATOR_PRIVATEKEY= diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 979ea941..cec5c50b 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,138 @@ # @demo/wallet +## 0.0.6 + +### Patch Changes + +- [#319](https://github.com/bnb-chain/greenfield-js-sdk/pull/319) + [`ec4297d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec4297da042e1b7c656d26b65d56fe52ac80365f) + Thanks [@rrr523](https://github.com/rrr523)! - feat: add vg settle api + +- [#321](https://github.com/bnb-chain/greenfield-js-sdk/pull/321) + [`b384428`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b38442819d2dc341859bef4404d8f118a0aa189d) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + +- Updated dependencies + [[`f3a7ce8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f3a7ce8f06d6bedf5e07bccccc4ada7676e79f2a), + [`ec4297d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec4297da042e1b7c656d26b65d56fe52ac80365f), + [`910c0cc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/910c0cc7ab7267e67b9cb59b702b70b0d1364c2b), + [`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`4acdb91`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4acdb919f4c2d7764c670f97c26a5b9cca8c962e), + [`b13fba4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b13fba46d5df93bcaa643cd79aeea7dd4128feee), + [`c7f9ef3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7f9ef355e57bcc17a46b96655d8f36ba54dffa8), + [`06b933a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/06b933aa6a2ecb285c3511e06de0dfb93d38c40e), + [`bea0466`](https://github.com/bnb-chain/greenfield-js-sdk/commit/bea04668309bb4a769b68e9eab4f193ad2ef1d4b), + [`609f4cd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/609f4cdbeccd289cd4080c0994aa2eb24bfa6eb2), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`88acc61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/88acc61ef8e9826a9805a56f92d6321985a07e9a), + [`780e2ef`](https://github.com/bnb-chain/greenfield-js-sdk/commit/780e2efdfbc0d168c791c82e724ad96504050169), + [`56a263e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/56a263ec0a39844d967ce99a7b58165cc686a16c)]: + - @bnb-chain/greenfield-js-sdk@0.2.5 + +## 0.0.6-alpha.10 + +### Patch Changes + +- Updated dependencies + [[`88acc61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/88acc61ef8e9826a9805a56f92d6321985a07e9a)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.9 + +## 0.0.6-alpha.9 + +### Patch Changes + +- Updated dependencies + [[`56a263e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/56a263ec0a39844d967ce99a7b58165cc686a16c)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.8 + +## 0.0.6-alpha.8 + +### Patch Changes + +- Updated dependencies + [[`f3a7ce8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f3a7ce8f06d6bedf5e07bccccc4ada7676e79f2a)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.7 + +## 0.0.6-alpha.7 + +### Patch Changes + +- [#321](https://github.com/bnb-chain/greenfield-js-sdk/pull/321) + [`b384428`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b38442819d2dc341859bef4404d8f118a0aa189d) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + +## 0.0.6-alpha.6 + +### Patch Changes + +- [#319](https://github.com/bnb-chain/greenfield-js-sdk/pull/319) + [`ec4297d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec4297da042e1b7c656d26b65d56fe52ac80365f) + Thanks [@rrr523](https://github.com/rrr523)! - feat: add vg settle api + +- Updated dependencies + [[`ec4297d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec4297da042e1b7c656d26b65d56fe52ac80365f)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.6 + +## 0.0.6-alpha.5 + +### Patch Changes + +- Updated dependencies + [[`910c0cc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/910c0cc7ab7267e67b9cb59b702b70b0d1364c2b)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.5 + +## 0.0.6-alpha.4 + +### Patch Changes + +- Updated dependencies + [[`06b933a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/06b933aa6a2ecb285c3511e06de0dfb93d38c40e)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.4 + +## 0.0.6-alpha.3 + +### Patch Changes + +- Updated dependencies + [[`b13fba4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b13fba46d5df93bcaa643cd79aeea7dd4128feee), + [`c7f9ef3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7f9ef355e57bcc17a46b96655d8f36ba54dffa8), + [`609f4cd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/609f4cdbeccd289cd4080c0994aa2eb24bfa6eb2), + [`780e2ef`](https://github.com/bnb-chain/greenfield-js-sdk/commit/780e2efdfbc0d168c791c82e724ad96504050169)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.3 + +## 0.0.6-alpha.2 + +### Patch Changes + +- Updated dependencies + [[`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.2 + +## 0.0.6-alpha.1 + +### Patch Changes + +- Updated dependencies + [[`4acdb91`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4acdb919f4c2d7764c670f97c26a5b9cca8c962e), + [`bea0466`](https://github.com/bnb-chain/greenfield-js-sdk/commit/bea04668309bb4a769b68e9eab4f193ad2ef1d4b)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.1 + +## 0.0.6-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.0 + ## 0.0.5 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 1b2da818..2b8d76a8 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.5", + "version": "0.0.6", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nextjs/src/client/index.ts b/examples/nextjs/src/client/index.ts index ef65e391..760862a2 100644 --- a/examples/nextjs/src/client/index.ts +++ b/examples/nextjs/src/client/index.ts @@ -2,9 +2,7 @@ import { GREEN_CHAIN_ID, GRPC_URL } from '@/config'; import { Client } from '@bnb-chain/greenfield-js-sdk'; export const client = Client.create(GRPC_URL, String(GREEN_CHAIN_ID), { - // zkCryptoUrl: 'https://dcellar.io/static/dcellar-web-ui/wasm/zk.wasm', - zkCryptoUrl: - 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto@0.0.2-alpha.4/dist/node/zk-crypto.wasm', + zkCryptoUrl: 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto@0.0.3/dist/node/zk-crypto.wasm', }); export const getSps = async () => { diff --git a/examples/nextjs/src/components/bucket/info/index.tsx b/examples/nextjs/src/components/bucket/info/index.tsx index 5aefc5ab..d6ca8572 100644 --- a/examples/nextjs/src/components/bucket/info/index.tsx +++ b/examples/nextjs/src/components/bucket/info/index.tsx @@ -97,7 +97,7 @@ export const BucketInfo = () => { const spInfo = await selectSp(); - const res = await client.bucket.getUserBuckets({ + const res = await client.bucket.listBuckets({ address, endpoint: spInfo.endpoint, }); diff --git a/examples/nextjs/src/components/customtx/index.tsx b/examples/nextjs/src/components/customtx/index.tsx new file mode 100644 index 00000000..3eef067a --- /dev/null +++ b/examples/nextjs/src/components/customtx/index.tsx @@ -0,0 +1,88 @@ +import { client } from '@/client'; +import { useAccount } from 'wagmi'; + +export const CustomTx = () => { + const { address } = useAccount(); + + return ( + <> +

      Custome Tx

      + +
      + + + ); +}; diff --git a/examples/nextjs/src/components/distribution/index.tsx b/examples/nextjs/src/components/distribution/index.tsx new file mode 100644 index 00000000..c7d5e3e4 --- /dev/null +++ b/examples/nextjs/src/components/distribution/index.tsx @@ -0,0 +1,80 @@ +import { client } from '@/client'; +import { useState } from 'react'; +import { useAccount } from 'wagmi'; + +export const Distribution = () => { + const { address, connector } = useAccount(); + const [createGroupInfo, setCreateGroupInfo] = useState({ + groupName: '', + }); + + return ( +
      +

      distribution

      + + +
      + +
      + ); +}; diff --git a/examples/nextjs/src/components/feegrant/createObj.tsx b/examples/nextjs/src/components/feegrant/createObj.tsx index 1411a94c..2dc78792 100644 --- a/examples/nextjs/src/components/feegrant/createObj.tsx +++ b/examples/nextjs/src/components/feegrant/createObj.tsx @@ -91,7 +91,7 @@ export const CreateObj = () => { }); // 4. broadcast txs include 2 msg - const txs = await client.basic.multiTx([grantAllowanceTx, putPolicyTx]); + const txs = await client.txClient.multiTx([grantAllowanceTx, putPolicyTx]); const simuluateInfo = await txs.simulate({ denom: 'BNB', }); diff --git a/examples/nextjs/src/components/feegrant/delObj.tsx b/examples/nextjs/src/components/feegrant/delObj.tsx index ff7a4c7e..fdb22d36 100644 --- a/examples/nextjs/src/components/feegrant/delObj.tsx +++ b/examples/nextjs/src/components/feegrant/delObj.tsx @@ -77,7 +77,7 @@ export const DelObj = () => { }); // 4. broadcast txs include 2 msg - const txs = await client.basic.multiTx([grantAllowanceTx, putPolicyTx]); + const txs = await client.txClient.multiTx([grantAllowanceTx, putPolicyTx]); const simuluateInfo = await txs.simulate({ denom: 'BNB', }); diff --git a/examples/nextjs/src/components/multimsg/index.tsx b/examples/nextjs/src/components/multimsg/index.tsx index ea232050..58fb97e3 100644 --- a/examples/nextjs/src/components/multimsg/index.tsx +++ b/examples/nextjs/src/components/multimsg/index.tsx @@ -36,7 +36,7 @@ export const MultiMsg = () => { console.log(transferOutTx.metaTxInfo); - const txs = await client.basic.multiTx([transferTx, transferOutTx]); + const txs = await client.txClient.multiTx([transferTx, transferOutTx]); const simuluateInfo = await txs.simulate({ denom: 'BNB', diff --git a/examples/nextjs/src/components/object/info/index.tsx b/examples/nextjs/src/components/object/info/index.tsx index ed68c0f9..1205bedc 100644 --- a/examples/nextjs/src/components/object/info/index.tsx +++ b/examples/nextjs/src/components/object/info/index.tsx @@ -115,6 +115,24 @@ export const ObjectInfo = () => {
      +
      + listObjectPolicies by bucket name and object name +
      + +
      +
      get objects list by bucket name
      diff --git a/examples/nextjs/src/components/policy/bucketPolicy/index.tsx b/examples/nextjs/src/components/policy/bucketPolicy/index.tsx index e5af74c4..876aa026 100644 --- a/examples/nextjs/src/components/policy/bucketPolicy/index.tsx +++ b/examples/nextjs/src/components/policy/bucketPolicy/index.tsx @@ -63,6 +63,55 @@ export const BucketPolicy = () => { > put bucket policy + + {/* */} ); }; diff --git a/examples/nextjs/src/components/policy/groupPolicy/index.tsx b/examples/nextjs/src/components/policy/groupPolicy/index.tsx index 4dd0a3ed..a6f2bec8 100644 --- a/examples/nextjs/src/components/policy/groupPolicy/index.tsx +++ b/examples/nextjs/src/components/policy/groupPolicy/index.tsx @@ -28,7 +28,7 @@ export const GroupPolicy = () => { const statement: PermissionTypes.Statement = { effect: PermissionTypes.Effect.EFFECT_ALLOW, actions: [PermissionTypes.ActionType.ACTION_UPDATE_GROUP_MEMBER], - resources: [''], + resources: [], }; const tx = await client.group.putGroupPolicy(address, policyGroupInfo.groupName, { diff --git a/examples/nextjs/src/components/policy/objectPolicy/index.tsx b/examples/nextjs/src/components/policy/objectPolicy/index.tsx index ec82a9d1..5cc1751c 100644 --- a/examples/nextjs/src/components/policy/objectPolicy/index.tsx +++ b/examples/nextjs/src/components/policy/objectPolicy/index.tsx @@ -38,7 +38,7 @@ export const ObjectPolicy = () => { const statement: PermissionTypes.Statement = { effect: PermissionTypes.Effect.EFFECT_ALLOW, actions: [PermissionTypes.ActionType.ACTION_GET_OBJECT], - resources: [''], + resources: [], }; const tx = await client.object.putObjectPolicy( @@ -77,6 +77,41 @@ export const ObjectPolicy = () => { > put object policy + ); }; diff --git a/examples/nextjs/src/components/proposal/index.tsx b/examples/nextjs/src/components/proposal/index.tsx new file mode 100644 index 00000000..b151d98f --- /dev/null +++ b/examples/nextjs/src/components/proposal/index.tsx @@ -0,0 +1,48 @@ +import { client } from '@/client'; +import { VALIDATOR_PRIVATEKEY } from '@/config/env'; +import { Long } from '@bnb-chain/greenfield-js-sdk'; +import { useAccount } from 'wagmi'; + +export const Proposal = () => { + const { address, connector } = useAccount(); + + return ( + <> +

      proposal

      +

      vote

      + + + ); +}; diff --git a/examples/nextjs/src/components/query/index.tsx b/examples/nextjs/src/components/query/index.tsx index f07536f4..f2786ec6 100644 --- a/examples/nextjs/src/components/query/index.tsx +++ b/examples/nextjs/src/components/query/index.tsx @@ -1,9 +1,10 @@ import { client } from '@/client'; +import { getOffchainAuthKeys } from '@/utils/offchainAuth'; import { Long } from '@bnb-chain/greenfield-js-sdk'; import { useAccount } from 'wagmi'; export const QueryComponent = () => { - const { address } = useAccount(); + const { address, connector } = useAccount(); return ( <>

      open console panel

      @@ -117,6 +118,43 @@ export const QueryComponent = () => { onClick={async () => { if (!address) return; + const { paymentAccounts } = await client.payment.getPaymentAccountsByOwner({ + owner: address, + }); + console.log('paymentAccounts', paymentAccounts); + const res = await client.payment.paymentAccount({ + addr: paymentAccounts[0], + }); + console.log('res', res); + }} + > + get paymentAccount + + +
    1. + +
    2. +
    3. +
    4. + +
    5. + +
    6. ); diff --git a/examples/nextjs/src/components/validator/index.tsx b/examples/nextjs/src/components/validator/index.tsx new file mode 100644 index 00000000..2528adf2 --- /dev/null +++ b/examples/nextjs/src/components/validator/index.tsx @@ -0,0 +1,128 @@ +import { client } from '@/client'; +import { VALIDATOR_PRIVATEKEY } from '@/config/env'; +import { Long } from '@bnb-chain/greenfield-js-sdk'; +import { useAccount } from 'wagmi'; + +export const Validator = () => { + const { address, connector } = useAccount(); + + return ( + <> + {/*

      create validator

      + */} + + + +

      edit validator

      + + + ); +}; diff --git a/examples/nextjs/src/components/vg/index.tsx b/examples/nextjs/src/components/vg/index.tsx new file mode 100644 index 00000000..1c846356 --- /dev/null +++ b/examples/nextjs/src/components/vg/index.tsx @@ -0,0 +1,48 @@ +import { client, selectSp } from '@/client'; +import { useAccount } from 'wagmi'; + +export const VirtualGroup = () => { + const { address, connector } = useAccount(); + + return ( +
      +

      Virtual Group

      + + +
      +
      + ); +}; diff --git a/examples/nextjs/src/config/env.ts b/examples/nextjs/src/config/env.ts index 316c7f03..21bb435e 100644 --- a/examples/nextjs/src/config/env.ts +++ b/examples/nextjs/src/config/env.ts @@ -11,6 +11,7 @@ const { NEXT_PUBLIC_CROSS_CHAIN_CONTRACT_ADDRESS, NEXT_PUBLIC_ACCOUNT_ADDRESS, NEXT_PUBLIC_ACCOUNT_PRIVATEKEY, + NEXT_PUBLIC_VALIDATOR_PRIVATEKEY, } = publicRuntimeConfig || {}; export const GRPC_URL = NEXT_PUBLIC_GRPC_URL; @@ -22,3 +23,4 @@ export const TOKEN_HUB_CONTRACT_ADDRESS = NEXT_PUBLIC_TOKEN_HUB_CONTRACT_ADDRESS export const CROSS_CHAIN_CONTRACT_ADDRESS = NEXT_PUBLIC_CROSS_CHAIN_CONTRACT_ADDRESS; export const ACCOUNT_ADDRESS = NEXT_PUBLIC_ACCOUNT_ADDRESS; export const ACCOUNT_PRIVATEKEY = NEXT_PUBLIC_ACCOUNT_PRIVATEKEY; +export const VALIDATOR_PRIVATEKEY = NEXT_PUBLIC_VALIDATOR_PRIVATEKEY; diff --git a/examples/nextjs/src/pages/_document.tsx b/examples/nextjs/src/pages/_document.tsx index d90c792e..660f65ba 100644 --- a/examples/nextjs/src/pages/_document.tsx +++ b/examples/nextjs/src/pages/_document.tsx @@ -8,10 +8,10 @@ export default function Document() {
      - + diff --git a/examples/nextjs/src/pages/tx.tsx b/examples/nextjs/src/pages/tx.tsx index c5e05b00..d4e8c6fa 100644 --- a/examples/nextjs/src/pages/tx.tsx +++ b/examples/nextjs/src/pages/tx.tsx @@ -12,6 +12,11 @@ import { Withdraw } from '@/components/withdraw'; import { useIsMounted } from '@/hooks/useIsMounted'; import { useAccount } from 'wagmi'; import { PaymentComponent } from '@/components/payment'; +import { Validator } from '@/components/validator'; +import { Proposal } from '@/components/proposal'; +import { Distribution } from '@/components/distribution'; +import { VirtualGroup } from '@/components/vg'; +import { CustomTx } from '@/components/customtx'; export default function Tx() { const isMounted = useIsMounted(); @@ -47,7 +52,18 @@ export default function Tx() {

      + +
      + +
      + +
      + +
      +
      + +
      )}
      diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 72b005f5..07914ab6 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,118 @@ # @demo/nodejs +## 0.0.9 + +### Patch Changes + +- Updated dependencies + [[`f3a7ce8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f3a7ce8f06d6bedf5e07bccccc4ada7676e79f2a), + [`ec4297d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec4297da042e1b7c656d26b65d56fe52ac80365f), + [`910c0cc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/910c0cc7ab7267e67b9cb59b702b70b0d1364c2b), + [`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`4acdb91`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4acdb919f4c2d7764c670f97c26a5b9cca8c962e), + [`b13fba4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b13fba46d5df93bcaa643cd79aeea7dd4128feee), + [`c7f9ef3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7f9ef355e57bcc17a46b96655d8f36ba54dffa8), + [`06b933a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/06b933aa6a2ecb285c3511e06de0dfb93d38c40e), + [`bea0466`](https://github.com/bnb-chain/greenfield-js-sdk/commit/bea04668309bb4a769b68e9eab4f193ad2ef1d4b), + [`609f4cd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/609f4cdbeccd289cd4080c0994aa2eb24bfa6eb2), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`88acc61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/88acc61ef8e9826a9805a56f92d6321985a07e9a), + [`780e2ef`](https://github.com/bnb-chain/greenfield-js-sdk/commit/780e2efdfbc0d168c791c82e724ad96504050169), + [`56a263e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/56a263ec0a39844d967ce99a7b58165cc686a16c)]: + - @bnb-chain/greenfield-js-sdk@0.2.5 + +## 0.0.9-alpha.9 + +### Patch Changes + +- Updated dependencies + [[`88acc61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/88acc61ef8e9826a9805a56f92d6321985a07e9a)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.9 + +## 0.0.9-alpha.8 + +### Patch Changes + +- Updated dependencies + [[`56a263e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/56a263ec0a39844d967ce99a7b58165cc686a16c)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.8 + +## 0.0.9-alpha.7 + +### Patch Changes + +- Updated dependencies + [[`f3a7ce8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f3a7ce8f06d6bedf5e07bccccc4ada7676e79f2a)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.7 + +## 0.0.9-alpha.6 + +### Patch Changes + +- Updated dependencies + [[`ec4297d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec4297da042e1b7c656d26b65d56fe52ac80365f)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.6 + +## 0.0.9-alpha.5 + +### Patch Changes + +- Updated dependencies + [[`910c0cc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/910c0cc7ab7267e67b9cb59b702b70b0d1364c2b)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.5 + +## 0.0.9-alpha.4 + +### Patch Changes + +- Updated dependencies + [[`06b933a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/06b933aa6a2ecb285c3511e06de0dfb93d38c40e)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.4 + +## 0.0.9-alpha.3 + +### Patch Changes + +- Updated dependencies + [[`b13fba4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b13fba46d5df93bcaa643cd79aeea7dd4128feee), + [`c7f9ef3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7f9ef355e57bcc17a46b96655d8f36ba54dffa8), + [`609f4cd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/609f4cdbeccd289cd4080c0994aa2eb24bfa6eb2), + [`780e2ef`](https://github.com/bnb-chain/greenfield-js-sdk/commit/780e2efdfbc0d168c791c82e724ad96504050169)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.3 + +## 0.0.9-alpha.2 + +### Patch Changes + +- Updated dependencies + [[`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68), + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.2 + +## 0.0.9-alpha.1 + +### Patch Changes + +- Updated dependencies + [[`4acdb91`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4acdb919f4c2d7764c670f97c26a5b9cca8c962e), + [`bea0466`](https://github.com/bnb-chain/greenfield-js-sdk/commit/bea04668309bb4a769b68e9eab4f193ad2ef1d4b)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.1 + +## 0.0.9-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274)]: + - @bnb-chain/greenfield-js-sdk@0.2.5-alpha.0 + ## 0.0.8 ### Patch Changes diff --git a/examples/nodejs/README.md b/examples/nodejs/README.md index af6b289e..2b4115d9 100644 --- a/examples/nodejs/README.md +++ b/examples/nodejs/README.md @@ -1,3 +1,9 @@ # GreenField JS SDK Node.js -> Only supprt query up to now. +> NOTICE: Before running, you need to fill your account's private key and address in [env.js](./env.js). + +```bash +> node storage.js +``` + +[More examples](../../packages/chain-sdk/tests/) diff --git a/examples/nodejs/client.js b/examples/nodejs/client.js new file mode 100644 index 00000000..7280c47f --- /dev/null +++ b/examples/nodejs/client.js @@ -0,0 +1,63 @@ +const { Client } = require('@bnb-chain/greenfield-js-sdk'); +const { ACCOUNT_ADDRESS, ACCOUNT_PRIVATEKEY } = require('./env'); + +const client = Client.create('https://gnfd-testnet-fullnode-tendermint-ap.bnbchain.org', '5600'); + +const getSps = async () => { + const sps = await client.sp.getStorageProviders(); + const finalSps = (sps ?? []).filter((v) => v.endpoint.includes('https')); + + return finalSps; +}; + +const getAllSps = async () => { + const sps = await getSps(); + + return sps.map((sp) => { + return { + address: sp.operatorAddress, + endpoint: sp.endpoint, + name: sp.description?.moniker, + }; + }); +}; + +const selectSp = async () => { + const finalSps = await getSps(); + + const selectIndex = Math.floor(Math.random() * finalSps.length); + + const secondarySpAddresses = [ + ...finalSps.slice(0, selectIndex), + ...finalSps.slice(selectIndex + 1), + ].map((item) => item.operatorAddress); + const selectSpInfo = { + id: finalSps[selectIndex].id, + endpoint: finalSps[selectIndex].endpoint, + primarySpAddress: finalSps[selectIndex]?.operatorAddress, + sealAddress: finalSps[selectIndex].sealAddress, + secondarySpAddresses, + }; + + return selectSpInfo; +}; + +const generateString = (length) => { + const characters = 'abcdefghijklmnopqrstuvwxyz'; + + let result = ''; + const charactersLength = characters.length; + for (let i = 0; i < length; i++) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + } + + return result; +}; + +module.exports = { + client, + ACCOUNT_ADDRESS, + ACCOUNT_PRIVATEKEY, + selectSp, + generateString, +}; diff --git a/examples/nodejs/env.js b/examples/nodejs/env.js new file mode 100644 index 00000000..d36e0c36 --- /dev/null +++ b/examples/nodejs/env.js @@ -0,0 +1,7 @@ +const ACCOUNT_ADDRESS = ''; +const ACCOUNT_PRIVATEKEY = ''; + +module.exports = { + ACCOUNT_ADDRESS, + ACCOUNT_PRIVATEKEY, +}; diff --git a/examples/nodejs/index.js b/examples/nodejs/index.js deleted file mode 100644 index 32390f6f..00000000 --- a/examples/nodejs/index.js +++ /dev/null @@ -1,43 +0,0 @@ -const { Client } = require('@bnb-chain/greenfield-js-sdk'); -// const { getCheckSums } = require('@bnb-chain/greenfiled-file-handle/files'); -// const fs = require('fs'); - -// const client = Client.create('https://gnfd-dev.qa.bnbchain.world', '8981'); - -const client = Client.create('https://gnfd.qa.bnbchain.world', '9000'); - -(async () => { - const createBucketTx = await client.bucket.createBucket({ - bucketName: 'foo', - creator: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', - visibility: 'VISIBILITY_TYPE_PUBLIC_READ', - chargedReadQuota: '0', - spInfo: { - primarySpAddress: '0x66d06FFe266B46C6F0730cC9Ec2fc5B811cdA085', - }, - signType: 'authTypeV1', - privateKey: '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032', - // signType: 'offChainAuth', - // domain: window.location.origin, - // seedString: offChainData.seedString, - }); - - const simulateInfo = await createBucketTx.simulate({ - denom: 'BNB', - }); - - console.log('simulateInfo', simulateInfo); - - const res = await createBucketTx.broadcast({ - denom: 'BNB', - gasLimit: Number(simulateInfo?.gasLimit), - gasPrice: simulateInfo?.gasPrice || '5000000000', - payer: '0x1C893441AB6c1A75E01887087ea508bE8e07AAae', - granter: '', - privateKey: '0x6547492644d0136f76ef65e3bd04a77d079ed38028f747700c6c6063564d7032', - }); - - if (res.code === 0) { - console.log('success'); - } -})(); diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 9ab81a68..6247770f 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,14 +1,9 @@ { "name": "@demo/nodejs", - "version": "0.0.8", + "version": "0.0.9", "type": "commonjs", "private": true, - "scripts": { - "dev": "cross-env NODE_ENV=development next dev", - "dev:qa": "cross-env NODE_ENV=test next dev", - "build": "", - "build:qa": "" - }, + "scripts": {}, "dependencies": { "@bnb-chain/greenfield-js-sdk": "workspace:*", "@bnb-chain/greenfiled-file-handle": "workspace:*" @@ -16,4 +11,4 @@ "devDependencies": { "cross-env": "^7.0.3" } -} \ No newline at end of file +} diff --git a/examples/nodejs/storage.js b/examples/nodejs/storage.js new file mode 100644 index 00000000..3204f195 --- /dev/null +++ b/examples/nodejs/storage.js @@ -0,0 +1,40 @@ +const { client, selectSp, generateString } = require('./client'); +const { ACCOUNT_ADDRESS, ACCOUNT_PRIVATEKEY } = require('./env'); + +(async () => { + const bucketName = generateString(10); + const spInfo = await selectSp(); + const createBucketTx = await client.bucket.createBucket( + { + bucketName: bucketName, + creator: ACCOUNT_ADDRESS, + visibility: 'VISIBILITY_TYPE_PUBLIC_READ', + chargedReadQuota: '0', + spInfo: { + primarySpAddress: spInfo.primarySpAddress, + }, + paymentAddress: ACCOUNT_ADDRESS, + }, + { + type: 'ECDSA', + privateKey: ACCOUNT_PRIVATEKEY, + }, + ); + + const simulateInfo = await createBucketTx.simulate({ + denom: 'BNB', + }); + + console.log('simulateInfo', simulateInfo); + + const res = await createBucketTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo?.gasLimit), + gasPrice: simulateInfo?.gasPrice || '5000000000', + payer: ACCOUNT_ADDRESS, + granter: '', + privateKey: ACCOUNT_PRIVATEKEY, + }); + + console.log('res', res); +})(); diff --git a/package.json b/package.json index daaab2a0..624b0aec 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,10 @@ "@rollup/plugin-node-resolve": "^13.3.0", "@rollup/plugin-strip": "^3.0.2", "@rollup/plugin-typescript": "^8.5.0", + "rollup": "^2.79.1", + "rollup-plugin-auto-external": "^2.0.0", + "rollup-plugin-polyfill-node": "^0.10.2", + "rollup-plugin-terser": "^7.0.2", "@types/chai": "^4.3.5", "@types/mocha": "^9.1.1", "@types/node": "^18.16.18", @@ -36,7 +40,7 @@ "@typescript-eslint/parser": "^5.59.11", "chai": "^4.3.7", "conventional-changelog-cmyr-config": "^2.1.0", - "eslint": "^8.42.0", + "eslint": "^8.48.0", "eslint-config-react-app": "^7.0.1", "eslint-plugin-prettier": "^4.2.1", "husky": "^8.0.3", @@ -45,4 +49,4 @@ "prettier": "^2.8.8", "rimraf": "^3.0.2" } -} \ No newline at end of file +} diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/chain-sdk/CHANGELOG.md index 28e3eb58..ac9883e8 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/chain-sdk/CHANGELOG.md @@ -1,5 +1,205 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.5 + +### Patch Changes + +- [#324](https://github.com/bnb-chain/greenfield-js-sdk/pull/324) + [`f3a7ce8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f3a7ce8f06d6bedf5e07bccccc4ada7676e79f2a) + Thanks [@rrr523](https://github.com/rrr523)! - feat: New Bucket API: `headBucketExtra` + +- [#319](https://github.com/bnb-chain/greenfield-js-sdk/pull/319) + [`ec4297d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec4297da042e1b7c656d26b65d56fe52ac80365f) + Thanks [@rrr523](https://github.com/rrr523)! - feat: add vg settle api + +- [#317](https://github.com/bnb-chain/greenfield-js-sdk/pull/317) + [`910c0cc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/910c0cc7ab7267e67b9cb59b702b70b0d1364c2b) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Distribution api + +- [#302](https://github.com/bnb-chain/greenfield-js-sdk/pull/302) + [`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: Sp types + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Validator API - editValidator + +- [#308](https://github.com/bnb-chain/greenfield-js-sdk/pull/308) + [`4acdb91`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4acdb919f4c2d7764c670f97c26a5b9cca8c962e) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: Update Deps + +- [#312](https://github.com/bnb-chain/greenfield-js-sdk/pull/312) + [`b13fba4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b13fba46d5df93bcaa643cd79aeea7dd4128feee) + Thanks [@rrr523](https://github.com/rrr523)! - fix: TxClient and QueryClient is not singleton + +- [#312](https://github.com/bnb-chain/greenfield-js-sdk/pull/312) + [`c7f9ef3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7f9ef355e57bcc17a46b96655d8f36ba54dffa8) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add sp `ListObjectPolicies` API + +- [#314](https://github.com/bnb-chain/greenfield-js-sdk/pull/314) + [`06b933a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/06b933aa6a2ecb285c3511e06de0dfb93d38c40e) + Thanks [@rrr523](https://github.com/rrr523)! - fix: All class use injectable + +- [#305](https://github.com/bnb-chain/greenfield-js-sdk/pull/305) + [`bea0466`](https://github.com/bnb-chain/greenfield-js-sdk/commit/bea04668309bb4a769b68e9eab4f193ad2ef1d4b) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: Sp metainfo + +- [#312](https://github.com/bnb-chain/greenfield-js-sdk/pull/312) + [`609f4cd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/609f4cdbeccd289cd4080c0994aa2eb24bfa6eb2) + Thanks [@rrr523](https://github.com/rrr523)! - feat: `getUserBuckets` -> `listBuckets`, and + response add vgf(includes `Id` and `PrimarySpId`) + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Proposal vote api + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - feat: ListUserPaymentAccount api + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Bucket listBucketsByPaymentAccount api + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: basic.multi -> txClient.multi + +- [#332](https://github.com/bnb-chain/greenfield-js-sdk/pull/332) + [`88acc61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/88acc61ef8e9826a9805a56f92d6321985a07e9a) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Delete Policy + +- [#312](https://github.com/bnb-chain/greenfield-js-sdk/pull/312) + [`780e2ef`](https://github.com/bnb-chain/greenfield-js-sdk/commit/780e2efdfbc0d168c791c82e724ad96504050169) + Thanks [@rrr523](https://github.com/rrr523)! - fix: PutPolicy if resource is empty use `[]` not + `['']` + +- [#330](https://github.com/bnb-chain/greenfield-js-sdk/pull/330) + [`56a263e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/56a263ec0a39844d967ce99a7b58165cc686a16c) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Custom any tx by raw info + +- Updated dependencies + [[`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274)]: + - @bnb-chain/greenfield-zk-crypto@0.0.3 + +## 0.2.5-alpha.9 + +### Patch Changes + +- [#332](https://github.com/bnb-chain/greenfield-js-sdk/pull/332) + [`88acc61`](https://github.com/bnb-chain/greenfield-js-sdk/commit/88acc61ef8e9826a9805a56f92d6321985a07e9a) + Thanks [@rrr523](https://github.com/rrr523)! - fix: Delete Policy + +## 0.2.5-alpha.8 + +### Patch Changes + +- [#330](https://github.com/bnb-chain/greenfield-js-sdk/pull/330) + [`56a263e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/56a263ec0a39844d967ce99a7b58165cc686a16c) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Custom any tx by raw info + +## 0.2.5-alpha.7 + +### Patch Changes + +- [#324](https://github.com/bnb-chain/greenfield-js-sdk/pull/324) + [`f3a7ce8`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f3a7ce8f06d6bedf5e07bccccc4ada7676e79f2a) + Thanks [@rrr523](https://github.com/rrr523)! - feat: New Bucket API: `headBucketExtra` + +## 0.2.5-alpha.6 + +### Patch Changes + +- [#319](https://github.com/bnb-chain/greenfield-js-sdk/pull/319) + [`ec4297d`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ec4297da042e1b7c656d26b65d56fe52ac80365f) + Thanks [@rrr523](https://github.com/rrr523)! - feat: add vg settle api + +## 0.2.5-alpha.5 + +### Patch Changes + +- [#317](https://github.com/bnb-chain/greenfield-js-sdk/pull/317) + [`910c0cc`](https://github.com/bnb-chain/greenfield-js-sdk/commit/910c0cc7ab7267e67b9cb59b702b70b0d1364c2b) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Distribution api + +## 0.2.5-alpha.4 + +### Patch Changes + +- [#314](https://github.com/bnb-chain/greenfield-js-sdk/pull/314) + [`06b933a`](https://github.com/bnb-chain/greenfield-js-sdk/commit/06b933aa6a2ecb285c3511e06de0dfb93d38c40e) + Thanks [@rrr523](https://github.com/rrr523)! - fix: All class use injectable + +## 0.2.5-alpha.3 + +### Patch Changes + +- [#312](https://github.com/bnb-chain/greenfield-js-sdk/pull/312) + [`b13fba4`](https://github.com/bnb-chain/greenfield-js-sdk/commit/b13fba46d5df93bcaa643cd79aeea7dd4128feee) + Thanks [@rrr523](https://github.com/rrr523)! - fix: TxClient and QueryClient is not singleton + +- [#312](https://github.com/bnb-chain/greenfield-js-sdk/pull/312) + [`c7f9ef3`](https://github.com/bnb-chain/greenfield-js-sdk/commit/c7f9ef355e57bcc17a46b96655d8f36ba54dffa8) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add sp `ListObjectPolicies` API + +- [#312](https://github.com/bnb-chain/greenfield-js-sdk/pull/312) + [`609f4cd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/609f4cdbeccd289cd4080c0994aa2eb24bfa6eb2) + Thanks [@rrr523](https://github.com/rrr523)! - feat: `getUserBuckets` -> `listBuckets`, and + response add vgf(includes `Id` and `PrimarySpId`) + +- [#312](https://github.com/bnb-chain/greenfield-js-sdk/pull/312) + [`780e2ef`](https://github.com/bnb-chain/greenfield-js-sdk/commit/780e2efdfbc0d168c791c82e724ad96504050169) + Thanks [@rrr523](https://github.com/rrr523)! - fix: PutPolicy if resource is empty use `[]` not + `['']` + +## 0.2.5-alpha.2 + +### Patch Changes + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Validator API - editValidator + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Proposal vote api + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - feat: ListUserPaymentAccount api + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Bucket listBucketsByPaymentAccount api + +- [#310](https://github.com/bnb-chain/greenfield-js-sdk/pull/310) + [`695379e`](https://github.com/bnb-chain/greenfield-js-sdk/commit/695379edeaa480afed7e91cb9cf1b381c7fc5f68) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: basic.multi -> txClient.multi + +## 0.2.5-alpha.1 + +### Patch Changes + +- [#308](https://github.com/bnb-chain/greenfield-js-sdk/pull/308) + [`4acdb91`](https://github.com/bnb-chain/greenfield-js-sdk/commit/4acdb919f4c2d7764c670f97c26a5b9cca8c962e) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: Update Deps + +- [#305](https://github.com/bnb-chain/greenfield-js-sdk/pull/305) + [`bea0466`](https://github.com/bnb-chain/greenfield-js-sdk/commit/bea04668309bb4a769b68e9eab4f193ad2ef1d4b) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: Sp metainfo + +## 0.2.5-alpha.0 + +### Patch Changes + +- [#302](https://github.com/bnb-chain/greenfield-js-sdk/pull/302) + [`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274) + Thanks [@rrr523](https://github.com/rrr523)! - refactor: Sp types + +- Updated dependencies + [[`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274)]: + - @bnb-chain/greenfield-zk-crypto@0.0.3-alpha.0 + ## 0.2.4 ### Patch Changes diff --git a/packages/chain-sdk/README.md b/packages/chain-sdk/README.md index ff716194..c95680bc 100644 --- a/packages/chain-sdk/README.md +++ b/packages/chain-sdk/README.md @@ -27,7 +27,7 @@ Client.create(GRPC_URL, String(GREEN_CHAIN_ID), { The SDK consists of two parts: * Chain: https://docs.bnbchain.org/greenfield-docs/docs/api/blockchain-rest -* Storage Provider: https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest +* Storage Provider: https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest ## Chain @@ -114,7 +114,7 @@ Examples: > https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest -SDK support two [authentication type](https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest#authentication-type): +SDK support two [authentication type](https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest#authentication-type): * ECDSA: It is usually used on Node.js(Because it need to use a private key) * EDDSA: It is usually used in a browser @@ -164,3 +164,15 @@ const bucketQuota = await client.bucket.getBucketReadQuota( }, ); ``` + +#### Support Custom Http Request + +It's actually an HTTP request, we use `fetch` by default, and if you want to use another http library like `axios`, we'll construct it for you as well. + +```js +// custom upload object +const { PUT_OBJECT: getPutObjectMetaInfo } = client.spClient.getMetaInfo(endpoint, payload); +const {reqMeta, url} = await getPutObjectMetaInfo(endpoint, params); + +axios.put(...) +``` diff --git a/packages/chain-sdk/package.json b/packages/chain-sdk/package.json index 6a59239c..f888743e 100644 --- a/packages/chain-sdk/package.json +++ b/packages/chain-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.4", + "version": "0.2.5", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", @@ -53,7 +53,7 @@ ] }, "dependencies": { - "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.22", + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.23", "@bnb-chain/greenfield-zk-crypto": "workspace:*", "@cosmjs/proto-signing": "^0.30.1", "@cosmjs/stargate": "^0.30.1", @@ -73,7 +73,7 @@ "lodash.sortby": "^4.7.0", "long": "^5.2.1", "reflect-metadata": "^0.1.13", - "tsyringe": "^4.7.0" + "tsyringe": "^4.8.0" }, "devDependencies": { "@jest/globals": "^29.5.0", @@ -85,14 +85,9 @@ "@types/xml2js": "^0.4.11", "jest": "^29.5.0", "mime": "^3.0.0", - "rollup": "^2.79.1", - "rollup-plugin-auto-external": "^2.0.0", - "rollup-plugin-node-builtins": "^2.1.2", - "rollup-plugin-polyfill-node": "^0.10.2", - "rollup-plugin-terser": "^7.0.2", "ts-jest": "^29.1.0", "ts-node": "^10.9.1", "tslib": "^2.5.0", "typescript": "^4.9.5" } -} \ No newline at end of file +} diff --git a/packages/chain-sdk/rollup.config.js b/packages/chain-sdk/rollup.config.js index 3f068523..6df2b29f 100644 --- a/packages/chain-sdk/rollup.config.js +++ b/packages/chain-sdk/rollup.config.js @@ -5,7 +5,6 @@ import resolve from '@rollup/plugin-node-resolve'; import nodePolyfills from 'rollup-plugin-polyfill-node'; import typescript from '@rollup/plugin-typescript'; import path from 'path'; -import builtins from 'rollup-plugin-node-builtins'; import autoExternal from 'rollup-plugin-auto-external'; import pkg from './package.json'; @@ -30,7 +29,7 @@ export default async () => { json({ include: ['src/**'], }), - builtins(), + // builtins(), resolve({ exportConditions: ['default', 'module', 'import'], mainFields: ['module', 'main'], diff --git a/packages/chain-sdk/src/api/account.ts b/packages/chain-sdk/src/api/account.ts index 37ea7c6f..0e098191 100644 --- a/packages/chain-sdk/src/api/account.ts +++ b/packages/chain-sdk/src/api/account.ts @@ -1,3 +1,4 @@ +import { TxClient } from '@/clients/txClient'; import { MsgMultiSendSDKTypeEIP712 } from '@/messages/bank/MsgMultiSend'; import { MsgSendSDKTypeEIP712 } from '@/messages/bank/MsgSend'; import { MsgCreatePaymentAccountSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgCreatePaymentAccount'; @@ -11,20 +12,15 @@ import { QueryBalanceResponse, } from '@bnb-chain/greenfield-cosmos-types/cosmos/bank/v1beta1/query'; import { MsgMultiSend, MsgSend } from '@bnb-chain/greenfield-cosmos-types/cosmos/bank/v1beta1/tx'; -import { - QueryPaymentAccountRequest, - QueryPaymentAccountResponse, - QueryPaymentAccountsByOwnerResponse, -} from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; +import { QueryPaymentAccountsByOwnerResponse } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; import { MsgCreatePaymentAccount } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/tx'; -import { container, delay, inject, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { MsgCreatePaymentAccountTypeUrl, MsgMultiSendTypeUrl, MsgSendTypeUrl, TxResponse, } from '..'; -import { Basic } from './basic'; import { RpcQueryClient } from '../clients/queryclient'; export interface IAccount { @@ -38,11 +34,6 @@ export interface IAccount { */ getAccountBalance(request: QueryBalanceRequest): Promise; - /** - * takes an address string as parameters and returns a pointer to a paymentTypes. - */ - getPaymentAccount(request: QueryPaymentAccountRequest): Promise; - getModuleAccounts(): Promise; getModuleAccountByName(name: string): Promise; @@ -65,14 +56,14 @@ export interface IAccount { multiTransfer(address: string, msg: MsgMultiSend): Promise; } -@singleton() +@injectable() export class Account implements IAccount { - constructor(@inject(delay(() => Basic)) private basic: Basic) {} + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} private queryClient = container.resolve(RpcQueryClient); public async multiTransfer(address: string, msg: MsgMultiSend) { - return await this.basic.tx( + return await this.txClient.tx( MsgMultiSendTypeUrl, address, MsgMultiSendSDKTypeEIP712, @@ -82,7 +73,7 @@ export class Account implements IAccount { } public async createPaymentAccount(msg: MsgCreatePaymentAccount) { - return await this.basic.tx( + return await this.txClient.tx( MsgCreatePaymentAccountTypeUrl, msg.creator, MsgCreatePaymentAccountSDKTypeEIP712, @@ -110,13 +101,6 @@ export class Account implements IAccount { return await rpc.ModuleAccounts(); } - public async getPaymentAccount( - request: QueryPaymentAccountRequest, - ): Promise { - const rpc = await this.queryClient.getPaymentQueryClient(); - return await rpc.PaymentAccount(request); - } - public async getAccountBalance(request: QueryBalanceRequest): Promise { const rpc = await this.queryClient.getBankQueryClient(); return await rpc.Balance(request); @@ -131,7 +115,7 @@ export class Account implements IAccount { } public async transfer(msg: MsgSend) { - return await this.basic.tx( + return await this.txClient.tx( MsgSendTypeUrl, msg.fromAddress, MsgSendSDKTypeEIP712, diff --git a/packages/chain-sdk/src/api/basic.ts b/packages/chain-sdk/src/api/basic.ts index 94ad4ee4..7ff0a7ed 100644 --- a/packages/chain-sdk/src/api/basic.ts +++ b/packages/chain-sdk/src/api/basic.ts @@ -1,7 +1,3 @@ -import { getPubKeyByPriKey } from '@/keymanage'; -import { defaultSignTypedData } from '@/sign/signTx'; -import { getGasFeeBySimulate } from '@/utils/units'; -import { BaseAccount } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/auth'; import { GetBlockByHeightResponse, GetLatestBlockResponse, @@ -9,45 +5,9 @@ import { GetNodeInfoResponse, ServiceClientImpl as tdServiceClientImpl, } from '@bnb-chain/greenfield-cosmos-types/cosmos/base/tendermint/v1beta1/query'; -import { Coin } from '@bnb-chain/greenfield-cosmos-types/cosmos/base/v1beta1/coin'; -import { - ServiceClientImpl, - SimulateRequest, -} from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/service'; -import { - AuthInfo, - Tx, - TxBody, - TxRaw, -} from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/tx'; -import { makeAuthInfoBytes } from '@cosmjs/proto-signing'; -import { DeliverTxResponse, StargateClient } from '@cosmjs/stargate'; -import { Tendermint37Client } from '@cosmjs/tendermint-rpc'; -import { arrayify } from '@ethersproject/bytes'; -import { signTypedData, SignTypedDataVersion } from '@metamask/eth-sig-util'; import Long from 'long'; -import { container, inject, singleton } from 'tsyringe'; -import { - BroadcastOptions, - ISimulateGasFee, - MetaTxInfo, - SignOptions, - SimulateOptions, - TxResponse, -} from '..'; +import { container, injectable } from 'tsyringe'; import { RpcQueryClient } from '../clients/queryclient'; -import { DEFAULT_DENOM, ZERO_PUBKEY } from '../constants'; -import { - createEIP712, - generateFee, - generateMessage, - generateTypes, - mergeMultiEip712, - mergeMultiMessage, -} from '../messages'; -import { generateMsg } from '../messages/utils'; -import { eip712Hash, makeCosmsPubKey, recoverPk } from '../sign'; -import { Account } from './account'; export interface IBasic { /** @@ -83,47 +43,10 @@ export interface IBasic { * The function returns the block height of the validator set */ GetLatestValidatorSet(request: GetLatestValidatorSetRequest): Promise; - - /** - * simulates a transaction containing the provided messages on the chain. - The function returns a pointer to a ISimulateGasFee - */ - simulateRawTx( - txBodyBytes: Uint8Array, - accountInfo: BaseAccount, - txOption: SimulateOptions, - ): Promise; - - /** - * broadcasts a transaction containing the provided messages to the chain. - The function returns a pointer to a BroadcastTxResponse and any error that occurred during the operation. - */ - broadcastRawTx(txRawBytes: Uint8Array): Promise; - - tx( - typeUrl: MetaTxInfo['typeUrl'], - address: MetaTxInfo['address'], - MsgSDKTypeEIP712: MetaTxInfo['MsgSDKTypeEIP712'], - MsgSDK: MetaTxInfo['MsgSDK'], - msgBytes: MetaTxInfo['msgBytes'], - ): Promise; - - /** - * - */ - multiTx(txResList: Pick[]): Promise>; } -@singleton() +@injectable() export class Basic implements IBasic { - public rpcUrl: string; - public chainId: string; - constructor(@inject('RPC_URL') rpcUrl: string, @inject('CHAIN_ID') chainId: string) { - this.rpcUrl = rpcUrl; - this.chainId = chainId; - } - - private account: Account = container.resolve(Account); private rpcQueryClient = container.resolve(RpcQueryClient); public async getNodeInfo() { @@ -166,229 +89,4 @@ export class Basic implements IBasic { const validatorSet = await rpc.GetLatestValidatorSet(request); return validatorSet.blockHeight.toNumber(); } - - public async tx( - typeUrl: MetaTxInfo['typeUrl'], - address: MetaTxInfo['address'], - MsgSDKTypeEIP712: MetaTxInfo['MsgSDKTypeEIP712'], - MsgSDK: MetaTxInfo['MsgSDK'], - msgBytes: MetaTxInfo['msgBytes'], - ) { - const txBodyBytes = this.getBodyBytes([ - { - typeUrl, - msgBytes, - }, - ]); - - const tx = await this.multiTx([ - { - metaTxInfo: { - typeUrl, - address, - MsgSDKTypeEIP712, - MsgSDK, - msgBytes, - bodyBytes: txBodyBytes, - }, - }, - ]); - - return { - simulate: tx.simulate, - broadcast: tx.broadcast, - metaTxInfo: { - typeUrl, - address, - MsgSDKTypeEIP712, - MsgSDK, - msgBytes, - bodyBytes: txBodyBytes, - }, - }; - } - - public async simulateRawTx( - txBodyBytes: Uint8Array, - accountInfo: BaseAccount, - options: SimulateOptions, - ) { - const rpcClient = await this.rpcQueryClient.getRpcClient(); - const rpc = new ServiceClientImpl(rpcClient); - - const { denom } = options; - const authInfoBytes = this.getAuthInfoBytes({ - sequence: accountInfo.sequence + '', - denom, - gasLimit: 0, - gasPrice: '0', - pubKey: makeCosmsPubKey(ZERO_PUBKEY), - granter: '', - payer: '', - }); - const tx = Tx.fromPartial({ - authInfo: AuthInfo.decode(authInfoBytes), - body: TxBody.decode(txBodyBytes), - signatures: [Uint8Array.from([])], - }); - - const request = SimulateRequest.fromPartial({ - txBytes: Tx.encode(tx).finish(), - }); - - const res = await rpc.Simulate(request); - return getGasFeeBySimulate(res, denom); - } - - public async broadcastRawTx(txRawBytes: Uint8Array) { - const tmClient = await Tendermint37Client.connect(this.rpcUrl); - - const client = await StargateClient.create(tmClient); - return await client.broadcastTx(txRawBytes); - } - - public async multiTx(txResList: Pick[]) { - const txs = txResList.map((txRes) => txRes.metaTxInfo); - const accountInfo = await this.account.getAccount(txs[0].address); - const txBodyBytes = this.getBodyBytes(txs); - - return { - simulate: async (opts: SimulateOptions) => { - return await this.simulateRawTx(txBodyBytes, accountInfo, opts); - }, - broadcast: async (opts: BroadcastOptions) => { - const { - denom, - gasLimit, - gasPrice, - payer, - granter, - privateKey, - signTypedDataCallback = defaultSignTypedData, - } = opts; - - const types = mergeMultiEip712(txs.map((tx) => tx.MsgSDKTypeEIP712)); - const fee = generateFee( - String(BigInt(gasLimit) * BigInt(gasPrice)), - denom, - String(gasLimit), - payer, - granter, - ); - const wrapperTypes = generateTypes(types); - const multiMessages = mergeMultiMessage(txs); - const messages = generateMessage( - accountInfo.accountNumber.toString(), - accountInfo.sequence.toString(), - this.chainId, - '', - fee, - multiMessages, - '0', - ); - - const eip712 = createEIP712(wrapperTypes, this.chainId, messages); - const { pubKey, signature } = privateKey - ? this.getSignByPriKey(eip712, privateKey) - : await this.getSignByWallet(eip712, accountInfo.address, signTypedDataCallback); - - const authInfoBytes = this.getAuthInfoBytes({ - denom, - sequence: accountInfo.sequence + '', - gasLimit, - gasPrice, - pubKey, - granter, - payer, - }); - - const txRaw = TxRaw.fromPartial({ - bodyBytes: txBodyBytes, - authInfoBytes, - signatures: [arrayify(signature)], - }); - const txBytes = TxRaw.encode(txRaw).finish(); - return await this.broadcastRawTx(txBytes); - }, - }; - } - - private getAuthInfoBytes( - params: Pick & { - pubKey: BaseAccount['pubKey']; - sequence: string; - }, - ) { - const { pubKey, denom = DEFAULT_DENOM, sequence, gasLimit, gasPrice, granter, payer } = params; - if (!pubKey) throw new Error('pubKey is required'); - - const feeAmount: Coin[] = [ - { - denom, - amount: String(BigInt(gasLimit) * BigInt(gasPrice)), - }, - ]; - - const authInfoBytes = makeAuthInfoBytes( - [{ pubkey: pubKey, sequence: Number(sequence) }], - feeAmount, - gasLimit, - granter, - payer, - 712, - ); - - return authInfoBytes; - } - - private getBodyBytes(params: { typeUrl: string; msgBytes: Uint8Array }[]) { - const multiMsgBytes = params.map((tx) => { - return generateMsg(tx.typeUrl, tx.msgBytes); - }); - - const txBody = TxBody.fromPartial({ - messages: multiMsgBytes, - }); - const txBodyBytes = TxBody.encode(txBody).finish(); - return txBodyBytes; - } - - private getSignByPriKey( - eip712: ReturnType, - privateKey: SignOptions['privateKey'], - ) { - const pubKey = getPubKeyByPriKey(privateKey); - const signature = signTypedData({ - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - data: eip712, - version: SignTypedDataVersion.V4, - privateKey: Buffer.from(arrayify(privateKey)), - }); - - return { - pubKey, - signature, - }; - } - - private async getSignByWallet( - eip712: ReturnType, - address: string, - signTypedDataCallback: SignOptions['signTypedDataCallback'], - ) { - const signature = await signTypedDataCallback(address, JSON.stringify(eip712)); - const messageHash = eip712Hash(JSON.stringify(eip712)); - - const pk = recoverPk({ - signature, - messageHash, - }); - const pubKey = makeCosmsPubKey(pk); - - return { - pubKey, - signature, - }; - } } diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/chain-sdk/src/api/bucket.ts index ae8ce4e8..75288311 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/chain-sdk/src/api/bucket.ts @@ -1,30 +1,36 @@ -import { getSortQuery, HTTPHeaderUserAddress } from '@/clients/spclient/auth'; -import { getBucketApprovalMetaInfo } from '@/clients/spclient/spApis/bucketApproval'; -import { parseGetBucketMetaResponse } from '@/clients/spclient/spApis/getBucketMeta'; -import { parseGetUserBucketsResponse } from '@/clients/spclient/spApis/getUserBuckets'; +import { HTTPHeaderUserAddress } from '@/clients/spclient/auth'; +import { getApprovalMetaInfo } from '@/clients/spclient/spApis/approval'; +import { + getBucketMetaInfo, + parseGetBucketMetaResponse, +} from '@/clients/spclient/spApis/getBucketMeta'; +import { + getUserBucketMetaInfo, + parseGetUserBucketsResponse, +} from '@/clients/spclient/spApis/getUserBuckets'; import { getListBucketReadRecordMetaInfo, parseListBucketReadRecordResponse, } from '@/clients/spclient/spApis/listBucketReadRecords'; -import { parseListBucketsByIdsResponse } from '@/clients/spclient/spApis/listBucketsByIds'; -import { getMigrateMetaInfo } from '@/clients/spclient/spApis/migrateApproval'; +import { + getListBucketsByIDsMetaInfo, + parseListBucketsByIdsResponse, +} from '@/clients/spclient/spApis/listBucketsByIds'; +import { + getListBucketByPaymentMetaInfo, + parseListBucketByPaymentResponse, +} from '@/clients/spclient/spApis/listBucketsByPayment'; import { parseError } from '@/clients/spclient/spApis/parseError'; import { getQueryBucketReadQuotaMetaInfo, parseReadQuotaResponse, } from '@/clients/spclient/spApis/queryBucketReadQuota'; +import { TxClient } from '@/clients/txClient'; import { METHOD_GET, NORMAL_ERROR_CODE } from '@/constants/http'; import { MsgCreateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCreateBucket'; import { MsgDeleteBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteBucket'; import { MsgMigrateBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMigrateBucket'; import { MsgUpdateBucketInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateBucketInfo'; -import { - GetBucketMetaRequest, - GetBucketMetaResponse, - GetUserBucketsResponse, - ListBucketsByIDsResponse, -} from '@/types/sp-xml'; -import { ListBucketReadRecordResponse } from '@/types/sp-xml/ListBucketReadRecordResponse'; import { decodeObjectFromHexString } from '@/utils/encoding'; import { isValidAddress, isValidBucketName, isValidUrl } from '@/utils/s3'; import { UInt64Value } from '@bnb-chain/greenfield-cosmos-types/greenfield/common/wrapper'; @@ -32,10 +38,12 @@ import { ActionType, Principal, PrincipalType, + principalTypeFromJSON, } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; import { visibilityTypeFromJSON } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; import { QueryBucketNFTResponse, + QueryHeadBucketExtraResponse, QueryHeadBucketResponse, QueryNFTRequest, QueryPolicyForAccountRequest, @@ -54,7 +62,7 @@ import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { Headers } from 'cross-fetch'; import { bytesToUtf8, hexToBytes } from 'ethereum-cryptography/utils'; import Long from 'long'; -import { container, delay, inject, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { GRNToString, MsgCreateBucketTypeUrl, @@ -66,46 +74,67 @@ import { } from '..'; import { RpcQueryClient } from '../clients/queryclient'; import { AuthType, SpClient } from '../clients/spclient/spClient'; -import { - IBaseGetCreateBucket, - ICreateBucketMsgType, - IMigrateBucketMsgType, - IObjectResultType, +import type { + CreateBucketApprovalRequest, + CreateBucketApprovalResponse, + GetBucketMetaRequest, + GetBucketMetaResponse, + GetUserBucketsRequest, + GetUserBucketsResponse, IQuotaProps, - TBaseGetBucketReadQuota, - TGetUserBuckets, - TListBucketReadRecord, - TListBucketsByIDsRequest, -} from '../types/storage'; -import { Basic } from './basic'; + ListBucketReadRecordRequest, + ListBucketReadRecordResponse, + ListBucketsByIDsRequest, + ListBucketsByIDsResponse, + ListBucketsByPaymentAccountRequest, + ListBucketsByPaymentAccountResponse, + MigrateBucketApprovalRequest, + MigrateBucketApprovalResponse, + ReadQuotaRequest, + SpResponse, +} from '../types/sp'; import { Sp } from './sp'; import { Storage } from './storage'; export interface IBucket { - /** - * returns the signature info for the approval of preCreating resources - */ - getCreateBucketApproval( - configParam: IBaseGetCreateBucket, - authType: AuthType, - ): Promise>; - /** * get approval of creating bucket and send createBucket txn to greenfield chain */ - createBucket(params: IBaseGetCreateBucket, authType: AuthType): Promise; + createBucket(params: CreateBucketApprovalRequest, authType: AuthType): Promise; + + deleteBucket(msg: MsgDeleteBucket): Promise; + + deleteBucketPolicy( + operator: string, + bucketName: string, + principalAddr: string, + principalType: keyof typeof PrincipalType, + ): Promise; + + getBucketMeta(params: GetBucketMetaRequest): Promise>; + + getBucketPolicy(request: QueryPolicyForAccountRequest): Promise; /** - * query the bucketInfo on chain, return the bucket info if exists + * return quota info of bucket of current month, include chain quota, free quota and consumed quota */ - headBucket(bucketName: string): Promise; + getBucketReadQuota( + configParam: ReadQuotaRequest, + authType: AuthType, + ): Promise>; /** - * query the bucketInfo on chain by bucketId, return the bucket info if exists + * returns the signature info for the approval of preCreating resources */ - headBucketById(bucketId: string): Promise; + getCreateBucketApproval( + configParam: CreateBucketApprovalRequest, + authType: AuthType, + ): Promise>; - headBucketNFT(request: QueryNFTRequest): Promise; + getMigrateBucketApproval( + params: MigrateBucketApprovalRequest, + authType: AuthType, + ): Promise>; /** * check if the permission of bucket is allowed to the user. @@ -116,60 +145,51 @@ export interface IBucket { actionType: ActionType, ): Promise; - getUserBuckets( - configParam: TGetUserBuckets, - ): Promise>; - /** - * return quota info of bucket of current month, include chain quota, free quota and consumed quota + * query the bucketInfo on chain, return the bucket info if exists */ - getBucketReadQuota( - configParam: TBaseGetBucketReadQuota, - authType: AuthType, - ): Promise>; + headBucket(bucketName: string): Promise; - deleteBucket(msg: MsgDeleteBucket): Promise; + /** + * query the bucketInfo on chain by bucketId, return the bucket info if exists + */ + headBucketById(bucketId: string): Promise; - updateBucketInfo( - srcMsg: Omit & { chargedReadQuota?: string }, - ): Promise; + headBucketExtra(bucketName: string): Promise; - putBucketPolicy(bucketName: string, srcMsg: Omit): Promise; + headBucketNFT(request: QueryNFTRequest): Promise; - deleteBucketPolicy( - operator: string, - bucketName: string, - principalAddr: string, - ): Promise; + listBucketReadRecords( + params: ListBucketReadRecordRequest, + authType: AuthType, + ): Promise>; - getBucketPolicy(request: QueryPolicyForAccountRequest): Promise; + listBuckets( + configParam: GetUserBucketsRequest, + ): Promise>; - getMigrateBucketApproval( - params: Omit, - authType: AuthType, - ): Promise>; + listBucketsByIds(params: ListBucketsByIDsRequest): Promise>; - migrateBucket( - configParams: Omit, - authType: AuthType, - ): Promise; + /** + * ListBucketsByPaymentAccount list buckets by payment account + */ + listBucketsByPaymentAccount( + params: ListBucketsByPaymentAccountRequest, + ): Promise>; - getBucketMeta(params: GetBucketMetaRequest): Promise>; + migrateBucket(params: MigrateBucketApprovalRequest, authType: AuthType): Promise; - listBucketReadRecords( - params: TListBucketReadRecord, - authType: AuthType, - ): Promise>; + putBucketPolicy(bucketName: string, srcMsg: Omit): Promise; - listBucketsByIds( - params: TListBucketsByIDsRequest, - ): Promise>; + updateBucketInfo( + srcMsg: Omit & { chargedReadQuota?: string }, + ): Promise; } -@singleton() +@injectable() export class Bucket implements IBucket { constructor( - @inject(delay(() => Basic)) private basic: Basic, + @inject(delay(() => TxClient)) private txClient: TxClient, @inject(delay(() => Sp)) private sp: Sp, @inject(delay(() => Storage)) private storage: Storage, ) {} @@ -177,7 +197,10 @@ export class Bucket implements IBucket { private queryClient = container.resolve(RpcQueryClient); private spClient = container.resolve(SpClient); - public async getCreateBucketApproval(params: IBaseGetCreateBucket, authType: AuthType) { + public async getCreateBucketApproval( + params: CreateBucketApprovalRequest, + authType: AuthType, + ): Promise> { const { bucketName, creator, @@ -201,47 +224,40 @@ export class Bucket implements IBucket { const endpoint = await this.sp.getSPUrlByPrimaryAddr(spInfo.primarySpAddress); - const { reqMeta, optionsWithOutHeaders, url } = await getBucketApprovalMetaInfo(endpoint, { - bucket_name: bucketName, - creator, - visibility, - primary_sp_address: spInfo.primarySpAddress, - primary_sp_approval: { - expired_height: '0', - sig: '', - global_virtual_group_family_id: 0, - }, - charged_read_quota: chargedReadQuota, - payment_address: paymentAddress, - }); + const { reqMeta, optionsWithOutHeaders, url } = + getApprovalMetaInfo(endpoint, 'CreateBucket', { + bucket_name: bucketName, + creator, + visibility, + primary_sp_address: spInfo.primarySpAddress, + primary_sp_approval: { + expired_height: '0', + sig: '', + global_virtual_group_family_id: 0, + }, + charged_read_quota: chargedReadQuota, + payment_address: paymentAddress, + }); const signHeaders = await this.spClient.signHeaders(reqMeta, authType); + const requestOptions: RequestInit = { + ...optionsWithOutHeaders, + headers: signHeaders, + }; - const result = await this.spClient.callApi( - url, - { - ...optionsWithOutHeaders, - headers: signHeaders, - }, - duration, - { - code: -1, - message: 'Get create bucket approval error.', - }, - ); + const result = await this.spClient.callApi(url, requestOptions, duration, { + code: -1, + message: 'Get create bucket approval error.', + }); const signedMsgString = result.headers.get('X-Gnfd-Signed-Msg') || ''; - const signedMsg = JSON.parse( - bytesToUtf8(hexToBytes(signedMsgString)), - ) as ICreateBucketMsgType; return { code: 0, message: 'Get create bucket approval success.', body: signedMsgString, statusCode: result.status, - signedMsg: signedMsg, - }; + } as SpResponse; } catch (error: any) { throw { code: -1, @@ -251,8 +267,8 @@ export class Bucket implements IBucket { } } - private async createBucketTx(msg: MsgCreateBucket, signedMsg: ICreateBucketMsgType) { - return await this.basic.tx( + private async createBucketTx(msg: MsgCreateBucket, signedMsg: CreateBucketApprovalResponse) { + return await this.txClient.tx( MsgCreateBucketTypeUrl, msg.creator, MsgCreateBucketSDKTypeEIP712, @@ -267,13 +283,15 @@ export class Bucket implements IBucket { ); } - public async createBucket(params: IBaseGetCreateBucket, authType: AuthType) { - const { signedMsg } = await this.getCreateBucketApproval(params, authType); + public async createBucket(params: CreateBucketApprovalRequest, authType: AuthType) { + const { body } = await this.getCreateBucketApproval(params, authType); - if (!signedMsg) { + if (!body) { throw new Error('Get create bucket approval error'); } + const signedMsg = JSON.parse(bytesToUtf8(hexToBytes(body))) as CreateBucketApprovalResponse; + const msg: MsgCreateBucket = { bucketName: signedMsg.bucket_name, creator: signedMsg.creator, @@ -292,7 +310,7 @@ export class Bucket implements IBucket { } public async deleteBucket(msg: MsgDeleteBucket) { - return await this.basic.tx( + return await this.txClient.tx( MsgDeleteBucketTypeUrl, msg.operator, MsgDeleteBucketSDKTypeEIP712, @@ -315,6 +333,13 @@ export class Bucket implements IBucket { }); } + public async headBucketExtra(bucketName: string) { + const rpc = await this.queryClient.getBucketQueryClient(); + return await rpc.HeadBucketExtra({ + bucketName, + }); + } + public async headBucketNFT(request: QueryNFTRequest) { const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.HeadBucketNFT(request); @@ -330,7 +355,7 @@ export class Bucket implements IBucket { }); } - public async getUserBuckets(configParam: TGetUserBuckets) { + public async listBuckets(configParam: GetUserBucketsRequest) { try { const { address, duration = 30000, endpoint } = configParam; if (!isValidAddress(address)) { @@ -339,7 +364,7 @@ export class Bucket implements IBucket { if (!isValidUrl(endpoint)) { throw new Error('Invalid endpoint'); } - const url = endpoint; + const { url } = getUserBucketMetaInfo(endpoint); const headers = new Headers({ [HTTPHeaderUserAddress]: address, @@ -383,9 +408,9 @@ export class Bucket implements IBucket { } public async getBucketReadQuota( - params: TBaseGetBucketReadQuota, + params: ReadQuotaRequest, authType: AuthType, - ): Promise> { + ): Promise> { try { const { bucketName, duration = 30000 } = params; if (!isValidBucketName(bucketName)) { @@ -449,7 +474,7 @@ export class Bucket implements IBucket { }), }; - return await this.basic.tx( + return await this.txClient.tx( MsgUpdateBucketInfoTypeUrl, msg.operator, MsgUpdateBucketInfoSDKTypeEIP712, @@ -473,10 +498,15 @@ export class Bucket implements IBucket { return this.storage.putPolicy(msg); } - public async deleteBucketPolicy(operator: string, bucketName: string, principalAddr: string) { + public async deleteBucketPolicy( + operator: string, + bucketName: string, + principalAddr: string, + principalType: keyof typeof PrincipalType, + ) { const resource = GRNToString(newBucketGRN(bucketName)); const principal: Principal = { - type: PrincipalType.PRINCIPAL_TYPE_GNFD_ACCOUNT, + type: principalTypeFromJSON(principalType), value: principalAddr, }; @@ -493,10 +523,7 @@ export class Bucket implements IBucket { return rpc.QueryPolicyForAccount(request); } - public async getMigrateBucketApproval( - params: Omit & { endpoint?: string }, - authType: AuthType, - ) { + public async getMigrateBucketApproval(params: MigrateBucketApprovalRequest, authType: AuthType) { const { bucketName, operator, dstPrimarySpId } = params; try { @@ -505,16 +532,17 @@ export class Bucket implements IBucket { endpoint = await this.sp.getSPUrlById(params.dstPrimarySpId); } - const { reqMeta, optionsWithOutHeaders, url } = await getMigrateMetaInfo(endpoint, { - operator: operator, - bucket_name: bucketName, - dst_primary_sp_id: dstPrimarySpId, - dst_primary_sp_approval: { - expired_height: '0', - sig: '', - global_virtual_group_family_id: 0, - }, - }); + const { reqMeta, optionsWithOutHeaders, url } = + getApprovalMetaInfo(endpoint, 'MigrateBucket', { + operator: operator, + bucket_name: bucketName, + dst_primary_sp_id: dstPrimarySpId, + dst_primary_sp_approval: { + expired_height: '0', + sig: '', + global_virtual_group_family_id: 0, + }, + }); const signHeaders = await this.spClient.signHeaders(reqMeta, authType); @@ -528,7 +556,7 @@ export class Bucket implements IBucket { ); const signedMsgString = result.headers.get('X-Gnfd-Signed-Msg') || ''; - const signedMsg = decodeObjectFromHexString(signedMsgString) as IMigrateBucketMsgType; + const signedMsg = decodeObjectFromHexString(signedMsgString) as MigrateBucketApprovalResponse; return { code: 0, @@ -546,11 +574,8 @@ export class Bucket implements IBucket { } } - public async migrateBucket( - configParams: Omit & { endpoint?: string }, - authType: AuthType, - ) { - const { signedMsg } = await this.getMigrateBucketApproval(configParams, authType); + public async migrateBucket(params: MigrateBucketApprovalRequest, authType: AuthType) { + const { signedMsg } = await this.getMigrateBucketApproval(params, authType); if (!signedMsg) { throw new Error('Get migrate bucket approval error'); @@ -571,8 +596,8 @@ export class Bucket implements IBucket { return await this.migrateBucketTx(msg, signedMsg); } - private async migrateBucketTx(msg: MsgMigrateBucket, signedMsg: IMigrateBucketMsgType) { - return await this.basic.tx( + private async migrateBucketTx(msg: MsgMigrateBucket, signedMsg: MigrateBucketApprovalResponse) { + return await this.txClient.tx( MsgMigrateBucketTypeUrl, msg.operator, MsgMigrateBucketSDKTypeEIP712, @@ -591,16 +616,18 @@ export class Bucket implements IBucket { } public async getBucketMeta(params: GetBucketMetaRequest) { - const { bucketName, endpoint } = params; + const { bucketName } = params; if (!isValidBucketName(bucketName)) { throw new Error('Error bucket name'); } - const queryMap = { - 'bucket-meta': '', - }; - const query = getSortQuery(queryMap); - const path = bucketName; - const url = `${endpoint}/${path}?${query}`; + + let endpoint = params.endpoint; + if (!endpoint) { + endpoint = await this.sp.getSPUrlByBucket(bucketName); + } + + const { url } = getBucketMetaInfo(endpoint, params); + const result = await this.spClient.callApi(url, { method: METHOD_GET, }); @@ -616,12 +643,9 @@ export class Bucket implements IBucket { }; } - public async listBucketReadRecords(params: TListBucketReadRecord, authType: AuthType) { + public async listBucketReadRecords(params: ListBucketReadRecordRequest, authType: AuthType) { try { const { bucketName } = params; - // if (!isValidAddress(address)) { - // throw new Error('Error address'); - // } let endpoint = params.endpoint; if (!endpoint) { endpoint = await this.sp.getSPUrlByBucket(bucketName); @@ -630,7 +654,7 @@ export class Bucket implements IBucket { throw new Error('Invalid endpoint'); } - const { url, optionsWithOutHeaders, reqMeta } = await getListBucketReadRecordMetaInfo( + const { url, optionsWithOutHeaders, reqMeta } = getListBucketReadRecordMetaInfo( endpoint, params, ); @@ -667,12 +691,11 @@ export class Bucket implements IBucket { } } - public async listBucketsByIds(params: TListBucketsByIDsRequest) { + public async listBucketsByIds(params: ListBucketsByIDsRequest) { try { const { ids } = params; - const sp = await this.sp.getInServiceSP(); - const url = `${sp.endpoint}?ids=${ids.join(',')}&buckets-query=null`; + const { url } = getListBucketsByIDsMetaInfo(sp.endpoint, { ids }); const result = await this.spClient.callApi( url, @@ -710,4 +733,31 @@ export class Bucket implements IBucket { }; } } + + public async listBucketsByPaymentAccount(params: ListBucketsByPaymentAccountRequest) { + try { + const sp = await this.sp.getInServiceSP(); + const { url } = getListBucketByPaymentMetaInfo(sp.endpoint, params); + + const result = await this.spClient.callApi(url, { + headers: {}, + method: METHOD_GET, + }); + + const xmlData = await result.text(); + const res = parseListBucketByPaymentResponse(xmlData); + return { + code: 0, + message: 'Get bucket success.', + statusCode: result.status, + body: res, + }; + } catch (error: any) { + return { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; + } + } } diff --git a/packages/chain-sdk/src/api/challenge.ts b/packages/chain-sdk/src/api/challenge.ts index 72ffcfdd..c7f8193a 100644 --- a/packages/chain-sdk/src/api/challenge.ts +++ b/packages/chain-sdk/src/api/challenge.ts @@ -1,3 +1,4 @@ +import { TxClient } from '@/clients/txClient'; import { MsgAttestSDKTypeEIP712 } from '@/messages/greenfield/chanenge/MsgAttest'; import { MsgSubmitSDKTypeEIP712 } from '@/messages/greenfield/chanenge/MsgSubmit'; import { @@ -6,9 +7,8 @@ import { QueryParamsResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/query'; import { MsgAttest, MsgSubmit } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/tx'; -import { container, delay, inject, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { MsgAttestTypeUrl, MsgSubmitTypeUrl, TxResponse } from '..'; -import { Basic } from './basic'; import { RpcQueryClient } from '../clients/queryclient'; export interface IChallenge { @@ -34,13 +34,13 @@ export interface IChallenge { params(): Promise; } -@singleton() +@injectable() export class Challenge implements IChallenge { private queryClient = container.resolve(RpcQueryClient); - constructor(@inject(delay(() => Basic)) private basic: Basic) {} + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} public async submitChallenge(address: string, msg: MsgSubmit) { - return await this.basic.tx( + return await this.txClient.tx( MsgSubmitTypeUrl, address, MsgSubmitSDKTypeEIP712, @@ -50,7 +50,7 @@ export class Challenge implements IChallenge { } public async attestChallenge(address: string, msg: MsgAttest) { - return await this.basic.tx( + return await this.txClient.tx( MsgAttestTypeUrl, address, MsgAttestSDKTypeEIP712, diff --git a/packages/chain-sdk/src/api/crosschain.ts b/packages/chain-sdk/src/api/crosschain.ts index f4929893..bae79efa 100644 --- a/packages/chain-sdk/src/api/crosschain.ts +++ b/packages/chain-sdk/src/api/crosschain.ts @@ -1,3 +1,4 @@ +import { TxClient } from '@/clients/txClient'; import { MsgClaimSDKTypeEIP712 } from '@/messages/cosmos/oracle/MsgClaim'; import { MsgTransferOutSDKTypeEIP712 } from '@/messages/greenfield/bridge/MsgTransferOut'; import { MsgMirrorBucketSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgMirrorBucket'; @@ -20,7 +21,7 @@ import { MsgMirrorGroup, MsgMirrorObject, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { container, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { MsgClaimTypeUrl, MsgMirrorBucketTypeUrl, @@ -29,7 +30,6 @@ import { MsgTransferOutTypeUrl, TxResponse, } from '..'; -import { Basic } from './basic'; import { RpcQueryClient } from '../clients/queryclient'; export interface ICrossChain { @@ -82,13 +82,13 @@ export interface ICrossChain { getParams(): Promise; } -@singleton() +@injectable() export class CrossChain implements ICrossChain { - private basic: Basic = container.resolve(Basic); + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); public async transferOut(msg: MsgTransferOut) { - return await this.basic.tx( + return await this.txClient.tx( MsgTransferOutTypeUrl, msg.from, MsgTransferOutSDKTypeEIP712, @@ -98,7 +98,7 @@ export class CrossChain implements ICrossChain { } public async claims(msg: MsgClaim) { - return await this.basic.tx( + return await this.txClient.tx( MsgClaimTypeUrl, msg.fromAddress, MsgClaimSDKTypeEIP712, @@ -128,7 +128,7 @@ export class CrossChain implements ICrossChain { } public async mirrorGroup(msg: MsgMirrorGroup) { - return await this.basic.tx( + return await this.txClient.tx( MsgMirrorGroupTypeUrl, msg.operator, MsgMirrorGroupSDKTypeEIP712, @@ -138,7 +138,7 @@ export class CrossChain implements ICrossChain { } public async mirrorBucket(msg: MsgMirrorBucket) { - return await this.basic.tx( + return await this.txClient.tx( MsgMirrorBucketTypeUrl, msg.operator, MsgMirrorBucketSDKTypeEIP712, @@ -148,7 +148,7 @@ export class CrossChain implements ICrossChain { } public async mirrorObject(msg: MsgMirrorObject) { - return await this.basic.tx( + return await this.txClient.tx( MsgMirrorObjectTypeUrl, msg.operator, MsgMirrorObjectSDKTypeEIP712, diff --git a/packages/chain-sdk/src/api/distribution.ts b/packages/chain-sdk/src/api/distribution.ts index c73560db..3a0d5206 100644 --- a/packages/chain-sdk/src/api/distribution.ts +++ b/packages/chain-sdk/src/api/distribution.ts @@ -1,78 +1,89 @@ +import { TxClient } from '@/clients/txClient'; +import { MsgFundCommunityPoolTypeUrlSDKTypeEIP712 } from '@/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl'; +import { MsgSetWithdrawAddressSDKTypeEIP712 } from '@/messages/cosmos/distribution/MsgSetWithdrawAddress'; +import { MsgWithdrawDelegatorRewardSDKTypeEIP712 } from '@/messages/cosmos/distribution/MsgWithdrawDelegatorReward'; +import { MsgWithdrawValidatorCommissionSDKTypeEIP712 } from '@/messages/cosmos/distribution/MsgWithdrawValidatorCommission'; import { - MsgFundCommunityPoolResponse, - MsgSetWithdrawAddressResponse, - MsgWithdrawDelegatorRewardResponse, - MsgWithdrawValidatorCommissionResponse, + MsgFundCommunityPool, + MsgSetWithdrawAddress, + MsgWithdrawDelegatorReward, + MsgWithdrawValidatorCommission, } from '@bnb-chain/greenfield-cosmos-types/cosmos/distribution/v1beta1/tx'; -import { Coin } from '@cosmjs/proto-signing'; -import { container } from 'tsyringe'; -import { Basic } from './basic'; +import { container, delay, inject, injectable } from 'tsyringe'; +import { + MsgFundCommunityPoolTypeUrl, + MsgSetWithdrawAddressTypeUrl, + MsgWithdrawDelegatorRewardTypeUrl, + MsgWithdrawValidatorCommissionTypeUrl, + TxResponse, +} from '..'; import { RpcQueryClient } from '../clients/queryclient'; export interface IDistribution { /** * sets the withdrawal address for a delegator address */ - setWithdrawAddress( - withdrawAddress: string, - delegatorAddress: string, - ): Promise; + setWithdrawAddress(msg: MsgSetWithdrawAddress): Promise; /** * withdraw accumulated commission by validator */ withdrawValidatorCommission( - validatorAddress: string, - ): Promise; + address: string, + msg: MsgWithdrawValidatorCommission, + ): Promise; /** * withdraw rewards by a delegator */ - withdrawDelegatorReward( - validatorAddress: string, - delegatorAddress: string, - ): Promise; + withdrawDelegatorReward(msg: MsgWithdrawDelegatorReward): Promise; /** * sends coins directly from the sender to the community pool. */ - fundCommunityPoolundComm( - amount: Coin[], - depositor: string, - ): Promise; + fundCommunityPoolundComm(address: string, msg: MsgFundCommunityPool): Promise; } +@injectable() export class Distribution implements IDistribution { - private basic: Basic = container.resolve(Basic); - private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} - public async setWithdrawAddress(withdrawAddress: string, delegatorAddress: string) { - const rpc = await this.queryClient.getMsgClient(); - return await rpc.SetWithdrawAddress({ - withdrawAddress, - delegatorAddress, - }); + public async setWithdrawAddress(msg: MsgSetWithdrawAddress) { + return await this.txClient.tx( + MsgSetWithdrawAddressTypeUrl, + msg.delegatorAddress, + MsgSetWithdrawAddressSDKTypeEIP712, + MsgSetWithdrawAddress.toSDK(msg), + MsgSetWithdrawAddress.encode(msg).finish(), + ); } - public async withdrawValidatorCommission(validatorAddress: string) { - const rpc = await this.queryClient.getMsgClient(); - return rpc.WithdrawValidatorCommission({ - validatorAddress, - }); + public async withdrawValidatorCommission(address: string, msg: MsgWithdrawValidatorCommission) { + return await this.txClient.tx( + MsgWithdrawValidatorCommissionTypeUrl, + address, + MsgWithdrawValidatorCommissionSDKTypeEIP712, + MsgWithdrawValidatorCommission.toSDK(msg), + MsgWithdrawValidatorCommission.encode(msg).finish(), + ); } - public async withdrawDelegatorReward(validatorAddress: string, delegatorAddress: string) { - const rpc = await this.queryClient.getMsgClient(); - return rpc.WithdrawDelegatorReward({ - delegatorAddress, - validatorAddress, - }); + public async withdrawDelegatorReward(msg: MsgWithdrawDelegatorReward) { + return await this.txClient.tx( + MsgWithdrawDelegatorRewardTypeUrl, + msg.delegatorAddress, + MsgWithdrawDelegatorRewardSDKTypeEIP712, + MsgWithdrawDelegatorReward.toSDK(msg), + MsgWithdrawDelegatorReward.encode(msg).finish(), + ); } - public async fundCommunityPoolundComm(amount: Coin[], depositor: string) { - const rpc = await this.queryClient.getMsgClient(); - return rpc.FundCommunityPool({ - amount, - depositor, - }); + public async fundCommunityPoolundComm(address: string, msg: MsgFundCommunityPool) { + return await this.txClient.tx( + MsgFundCommunityPoolTypeUrl, + address, + MsgFundCommunityPoolTypeUrlSDKTypeEIP712, + MsgFundCommunityPool.toSDK(msg), + MsgFundCommunityPool.encode(msg).finish(), + ); } } diff --git a/packages/chain-sdk/src/api/feegrant.ts b/packages/chain-sdk/src/api/feegrant.ts index f0833dfc..66525e8b 100644 --- a/packages/chain-sdk/src/api/feegrant.ts +++ b/packages/chain-sdk/src/api/feegrant.ts @@ -1,3 +1,4 @@ +import { TxClient } from '@/clients/txClient'; import { MsgGrantAllowanceSDKTypeEIP712 } from '@/messages/feegrant/MsgGrantAllowance'; import { MsgRevokeAllowanceSDKTypeEIP712 } from '@/messages/feegrant/MsgRevokeAllowance'; import { @@ -12,7 +13,7 @@ import { } from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/tx'; import { base64FromBytes } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { arrayify } from '@ethersproject/bytes'; -import { container, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { encodeToHex, IGrantAllowance, @@ -24,7 +25,6 @@ import { newMsgGrantAllowance, TxResponse, } from '..'; -import { Basic } from './basic'; import { RpcQueryClient } from '../clients/queryclient'; export interface IFeeGrant { @@ -37,9 +37,9 @@ export interface IFeeGrant { getAllowences(request: QueryAllowancesRequest): Promise; } -@singleton() +@injectable() export class FeeGrant implements IFeeGrant { - private basic: Basic = container.resolve(Basic); + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); public async grantAllowance(params: IGrantAllowance) { @@ -50,7 +50,7 @@ export class FeeGrant implements IFeeGrant { const grantAllowance = newMsgGrantAllowance(grantee, granter, allowedMsgAllowance); const marshal = newMarshal(amount, denom, allowedMessages, expirationTime); - return await this.basic.tx( + return await this.txClient.tx( MsgGrantAllowanceTypeUrl, granter, MsgGrantAllowanceSDKTypeEIP712, @@ -66,7 +66,7 @@ export class FeeGrant implements IFeeGrant { } public async revokeAllowance(msg: MsgRevokeAllowance) { - return await this.basic.tx( + return await this.txClient.tx( MsgRevokeAllowanceTypeUrl, msg.granter, MsgRevokeAllowanceSDKTypeEIP712, diff --git a/packages/chain-sdk/src/api/gashub.ts b/packages/chain-sdk/src/api/gashub.ts index 422cfa1b..0f064d9b 100644 --- a/packages/chain-sdk/src/api/gashub.ts +++ b/packages/chain-sdk/src/api/gashub.ts @@ -1,9 +1,9 @@ -import { container, singleton } from 'tsyringe'; import { QueryMsgGasParamsRequest, QueryMsgGasParamsResponse, QueryParamsResponse, } from '@bnb-chain/greenfield-cosmos-types/cosmos/gashub/v1beta1/query'; +import { container, injectable } from 'tsyringe'; import { RpcQueryClient } from '../clients/queryclient'; export interface IGashub { @@ -12,7 +12,7 @@ export interface IGashub { getMsgGasParams(request: QueryMsgGasParamsRequest): Promise; } -@singleton() +@injectable() export class Gashub implements IGashub { private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); diff --git a/packages/chain-sdk/src/api/group.ts b/packages/chain-sdk/src/api/group.ts index 8cd15168..6f9b398a 100644 --- a/packages/chain-sdk/src/api/group.ts +++ b/packages/chain-sdk/src/api/group.ts @@ -1,3 +1,4 @@ +import { TxClient } from '@/clients/txClient'; import { MsgCreateGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCreateGroup'; import { MsgDeleteGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteGroup'; import { MsgLeaveGroupSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgLeaveGroup'; @@ -22,7 +23,7 @@ import { MsgUpdateGroupExtra, MsgUpdateGroupMember, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { container, delay, inject, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { fromTimestamp, MsgCreateGroupTypeUrl, @@ -32,7 +33,6 @@ import { MsgUpdateGroupMemberTypeUrl, TxResponse, } from '..'; -import { Basic } from './basic'; import { RpcQueryClient } from '../clients/queryclient'; import { Storage } from './storage'; @@ -98,17 +98,17 @@ export interface IGroup { ): Promise; } -@singleton() +@injectable() export class Group implements IGroup { constructor( - @inject(delay(() => Basic)) private basic: Basic, + @inject(delay(() => TxClient)) private txClient: TxClient, @inject(delay(() => Storage)) private storage: Storage, ) {} private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); public async createGroup(msg: MsgCreateGroup) { - return await this.basic.tx( + return await this.txClient.tx( MsgCreateGroupTypeUrl, msg.creator, MsgCreateGroupSDKTypeEIP712, @@ -118,7 +118,7 @@ export class Group implements IGroup { } public async deleteGroup(msg: MsgDeleteGroup) { - return await this.basic.tx( + return await this.txClient.tx( MsgDeleteGroupTypeUrl, msg.operator, MsgDeleteGroupSDKTypeEIP712, @@ -136,7 +136,7 @@ export class Group implements IGroup { throw new Error('no update member'); } - return await this.basic.tx( + return await this.txClient.tx( MsgUpdateGroupMemberTypeUrl, msg.operator, getMsgUpdateGroupMemberSDKTypeEIP712({ @@ -157,7 +157,7 @@ export class Group implements IGroup { } public async updateGroupExtra(msg: MsgUpdateGroupExtra) { - return await this.basic.tx( + return await this.txClient.tx( MsgUpdateGroupExtraTypeUrl, msg.operator, MsgUpdateGroupExtraSDKTypeEIP712, @@ -167,7 +167,7 @@ export class Group implements IGroup { } public async leaveGroup(address: string, msg: MsgLeaveGroup) { - return await this.basic.tx( + return await this.txClient.tx( MsgLeaveGroupTypeUrl, address, MsgLeaveGroupSDKTypeEIP712, diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/chain-sdk/src/api/objectt.ts index f25f3dc3..41c217f3 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/chain-sdk/src/api/objectt.ts @@ -1,23 +1,37 @@ import { encodePath, getMsgToSign, getSortQuery, secpSign } from '@/clients/spclient/auth'; +import { getApprovalMetaInfo } from '@/clients/spclient/spApis/approval'; import { getGetObjectMetaInfo } from '@/clients/spclient/spApis/getObject'; -import { parseGetObjectMetaResponse } from '@/clients/spclient/spApis/getObjectMeta'; +import { + getObjectMetaInfo, + parseGetObjectMetaResponse, +} from '@/clients/spclient/spApis/getObjectMeta'; +import { + getListObjectPoliciesMetaInfo, + parseGetListObjectPoliciesResponse, +} from '@/clients/spclient/spApis/listObjectPolicies'; import { parseListObjectsByBucketNameResponse } from '@/clients/spclient/spApis/listObjectsByBucket'; -import { parseListObjectsByIdsResponse } from '@/clients/spclient/spApis/listObjectsByIds'; -import { getObjectApprovalMetaInfo } from '@/clients/spclient/spApis/objectApproval'; +import { + getListObjectsByIDsMetaInfo, + parseListObjectsByIdsResponse, +} from '@/clients/spclient/spApis/listObjectsByIds'; import { parseError } from '@/clients/spclient/spApis/parseError'; import { getPutObjectMetaInfo } from '@/clients/spclient/spApis/putObject'; +import { TxClient } from '@/clients/txClient'; import { METHOD_GET, NORMAL_ERROR_CODE } from '@/constants/http'; import { MsgCancelCreateObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCancelCreateObject'; import { MsgCreateObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgCreateObject'; import { MsgDeleteObjectSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeleteObject'; import { MsgUpdateObjectInfoSDKTypeEIP712 } from '@/messages/greenfield/storage/MsgUpdateObjectInfo'; import { signSignatureByEddsa } from '@/offchainauth'; -import { GetObjectMetaRequest, GetObjectMetaResponse } from '@/types/sp-xml/GetObjectMetaResponse'; -import { ListObjectsByBucketNameResponse } from '@/types/sp-xml/ListObjectsByBucketNameResponse'; +import { GetObjectRequest } from '@/types/sp/GetObject'; +import { GetObjectMetaRequest, GetObjectMetaResponse } from '@/types/sp/GetObjectMeta'; +import { ListObjectsByBucketNameResponse } from '@/types/sp/ListObjectsByBucketName'; +import { PutObjectRequest } from '@/types/sp/PutObject'; import { ActionType, Principal, PrincipalType, + principalTypeFromJSON, } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; import { redundancyTypeFromJSON, @@ -42,7 +56,7 @@ import { bytesFromBase64 } from '@bnb-chain/greenfield-cosmos-types/helpers'; import { hexlify } from '@ethersproject/bytes'; import { Headers } from 'cross-fetch'; import { bytesToUtf8, hexToBytes, utf8ToBytes } from 'ethereum-cryptography/utils'; -import { container, delay, inject, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { GRNToString, MsgCancelCreateObjectTypeUrl, @@ -54,16 +68,15 @@ import { import { RpcQueryClient } from '../clients/queryclient'; import { AuthType, SpClient } from '../clients/spclient/spClient'; import { - ICreateObjectMsgType, - IObjectResultType, + CreateObjectApprovalRequest, + CreateObjectApprovalResponse, + GetListObjectPoliciesRequest, + GetPrivewObject, + ListObjectsByBucketNameRequest, + ListObjectsByIDsRequest, ListObjectsByIDsResponse, Long, - TBaseGetCreateObject, - TBaseGetObject, - TBaseGetPrivewObject, - TBasePutObject, - TListObjects, - TListObjectsByIDsRequest, + SpResponse, TxResponse, } from '../types'; import { @@ -72,19 +85,21 @@ import { isValidObjectName, isValidUrl, } from '../utils/s3'; -import { Basic } from './basic'; import { Sp } from './sp'; import { Storage } from './storage'; export interface IObject { getCreateObjectApproval( - configParam: TBaseGetCreateObject, + configParam: CreateObjectApprovalRequest, authType: AuthType, - ): Promise>; + ): Promise>; - createObject(getApprovalParams: TBaseGetCreateObject, authType: AuthType): Promise; + createObject( + getApprovalParams: CreateObjectApprovalRequest, + authType: AuthType, + ): Promise; - uploadObject(configParam: TBasePutObject, authType: AuthType): Promise>; + uploadObject(configParam: PutObjectRequest, authType: AuthType): Promise>; cancelCreateObject(msg: MsgCancelCreateObject): Promise; @@ -101,21 +116,24 @@ export interface IObject { /** * get s3 object's blob */ - getObject(configParam: TBaseGetObject, authType: AuthType): Promise>; + getObject(configParam: GetObjectRequest, authType: AuthType): Promise>; - getObjectPreviewUrl(configParam: TBaseGetPrivewObject, authType: AuthType): Promise; + getObjectPreviewUrl(configParam: GetPrivewObject, authType: AuthType): Promise; /** * download s3 object */ - downloadFile(configParam: TBaseGetObject, authType: AuthType): Promise; + downloadFile(configParam: GetObjectRequest, authType: AuthType): Promise; listObjects( - configParam: TListObjects, - ): Promise>; + configParam: ListObjectsByBucketNameRequest, + ): Promise>; createFolder( - getApprovalParams: Omit, + getApprovalParams: Omit< + CreateObjectApprovalRequest, + 'contentLength' | 'fileType' | 'expectCheckSums' + >, authType: AuthType, ): Promise; @@ -131,6 +149,7 @@ export interface IObject { bucketName: string, objectName: string, principalAddr: string, + principalType: keyof typeof PrincipalType, ): Promise; isObjectPermissionAllowed( @@ -146,19 +165,19 @@ export interface IObject { principalAddr: string, ): Promise; - getObjectMeta(params: GetObjectMetaRequest): Promise>; + getObjectMeta(params: GetObjectMetaRequest): Promise>; + + listObjectsByIds(params: ListObjectsByIDsRequest): Promise>; - listObjectsByIds( - params: TListObjectsByIDsRequest, - ): Promise>; + listObjectPolicies(params: GetListObjectPoliciesRequest): Promise; // TODO: GetObjectUploadProgress // TODO: getObjectStatusFromSP } -@singleton() +@injectable() export class Objectt implements IObject { constructor( - @inject(delay(() => Basic)) private basic: Basic, + @inject(delay(() => TxClient)) private txClient: TxClient, @inject(delay(() => Storage)) private storage: Storage, @inject(delay(() => Sp)) private sp: Sp, ) {} @@ -166,7 +185,7 @@ export class Objectt implements IObject { private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); private spClient = container.resolve(SpClient); - public async getCreateObjectApproval(params: TBaseGetCreateObject, authType: AuthType) { + public async getCreateObjectApproval(params: CreateObjectApprovalRequest, authType: AuthType) { const { bucketName, creator, @@ -194,21 +213,22 @@ export class Objectt implements IObject { if (!endpoint) { endpoint = await this.sp.getSPUrlByBucket(bucketName); } - const { reqMeta, optionsWithOutHeaders, url } = await getObjectApprovalMetaInfo(endpoint, { - bucket_name: bucketName, - content_type: fileType, - creator: creator, - expect_checksums: expectCheckSums, - object_name: objectName, - payload_size: contentLength.toString(), - primary_sp_approval: { - expired_height: '0', - global_virtual_group_family_id: 0, - sig: null, - }, - redundancy_type: redundancyType, - visibility, - }); + const { reqMeta, optionsWithOutHeaders, url } = + getApprovalMetaInfo(endpoint, 'CreateObject', { + bucket_name: bucketName, + content_type: fileType, + creator: creator, + expect_checksums: expectCheckSums, + object_name: objectName, + payload_size: contentLength.toString(), + primary_sp_approval: { + expired_height: '0', + global_virtual_group_family_id: 0, + sig: null, + }, + redundancy_type: redundancyType, + visibility, + }); const signHeaders = await this.spClient.signHeaders(reqMeta, authType); @@ -228,7 +248,7 @@ export class Objectt implements IObject { const signedMsgString = result.headers.get('X-Gnfd-Signed-Msg') || ''; const signedMsg = JSON.parse( bytesToUtf8(hexToBytes(signedMsgString)), - ) as ICreateObjectMsgType; + ) as CreateObjectApprovalResponse; return { code: 0, @@ -246,8 +266,8 @@ export class Objectt implements IObject { } } - private async createObjectTx(msg: MsgCreateObject, signedMsg: ICreateObjectMsgType) { - return await this.basic.tx( + private async createObjectTx(msg: MsgCreateObject, signedMsg: CreateObjectApprovalResponse) { + return await this.txClient.tx( MsgCreateObjectTypeUrl, msg.creator, MsgCreateObjectSDKTypeEIP712, @@ -265,7 +285,7 @@ export class Objectt implements IObject { ); } - public async createObject(getApprovalParams: TBaseGetCreateObject, authType: AuthType) { + public async createObject(getApprovalParams: CreateObjectApprovalRequest, authType: AuthType) { const { signedMsg } = await this.getCreateObjectApproval(getApprovalParams, authType); if (!signedMsg) { throw new Error('Get create object approval error'); @@ -291,9 +311,9 @@ export class Objectt implements IObject { } public async uploadObject( - params: TBasePutObject, + params: PutObjectRequest, authType: AuthType, - ): Promise> { + ): Promise> { const { bucketName, objectName, txnHash, body, duration = 30000 } = params; if (!isValidBucketName(bucketName)) { throw new Error('Error bucket name'); @@ -340,7 +360,7 @@ export class Objectt implements IObject { } public async cancelCreateObject(msg: MsgCancelCreateObject) { - return await this.basic.tx( + return await this.txClient.tx( MsgCancelCreateObjectTypeUrl, msg.operator, MsgCancelCreateObjectSDKTypeEIP712, @@ -350,7 +370,7 @@ export class Objectt implements IObject { } public async deleteObject(msg: MsgDeleteObject) { - return await this.basic.tx( + return await this.txClient.tx( MsgDeleteObjectTypeUrl, msg.operator, MsgDeleteObjectSDKTypeEIP712, @@ -360,7 +380,7 @@ export class Objectt implements IObject { } public async updateObjectInfo(msg: MsgUpdateObjectInfo) { - return await this.basic.tx( + return await this.txClient.tx( MsgUpdateObjectInfoTypeUrl, msg.operator, MsgUpdateObjectInfoSDKTypeEIP712, @@ -391,7 +411,7 @@ export class Objectt implements IObject { return await rpc.HeadObjectNFT(request); } - public async getObject(params: TBaseGetObject, authType: AuthType) { + public async getObject(params: GetObjectRequest, authType: AuthType) { try { const { bucketName, objectName, duration = 30000 } = params; if (!isValidBucketName(bucketName)) { @@ -448,7 +468,7 @@ export class Objectt implements IObject { } } - public async getObjectPreviewUrl(params: TBaseGetPrivewObject, authType: AuthType) { + public async getObjectPreviewUrl(params: GetPrivewObject, authType: AuthType) { const { bucketName, objectName, queryMap } = params; if (!isValidBucketName(bucketName)) { throw new Error('Error bucket name'); @@ -487,7 +507,7 @@ export class Objectt implements IObject { return `${url}?Authorization=${encodeURIComponent(authorization)}&${queryRaw}`; } - public async downloadFile(configParam: TBaseGetObject, authType: AuthType): Promise { + public async downloadFile(configParam: GetObjectRequest, authType: AuthType): Promise { try { const { objectName } = configParam; const getObjectResult = await this.getObject(configParam, authType); @@ -514,7 +534,7 @@ export class Objectt implements IObject { } } - public async listObjects(configParam: TListObjects) { + public async listObjects(configParam: ListObjectsByBucketNameRequest) { try { const { bucketName, endpoint, duration = 30000, query = new URLSearchParams() } = configParam; if (!isValidBucketName(bucketName)) { @@ -564,7 +584,10 @@ export class Objectt implements IObject { } public async createFolder( - getApprovalParams: Omit, + getApprovalParams: Omit< + CreateObjectApprovalRequest, + 'contentLength' | 'fileType' | 'expectCheckSums' + >, authType: AuthType, ) { if (!getApprovalParams.objectName.endsWith('/')) { @@ -582,7 +605,7 @@ export class Objectt implements IObject { const { contentLength, expectCheckSums } = hashResult; */ - const params: TBaseGetCreateObject = { + const params: CreateObjectApprovalRequest = { bucketName: getApprovalParams.bucketName, objectName: getApprovalParams.objectName, contentLength: 0, @@ -648,10 +671,11 @@ export class Objectt implements IObject { bucketName: string, objectName: string, principalAddr: string, + principalType: keyof typeof PrincipalType, ) { const resource = GRNToString(newObjectGRN(bucketName, objectName)); const principal: Principal = { - type: PrincipalType.PRINCIPAL_TYPE_GNFD_ACCOUNT, + type: principalTypeFromJSON(principalType), value: principalAddr, }; @@ -672,12 +696,8 @@ export class Objectt implements IObject { throw new Error('Error object name'); } - const queryMap = { - 'object-meta': '', - }; - const query = getSortQuery(queryMap); - const path = encodePath(objectName); - const url = `${generateUrlByBucketName(endpoint, bucketName)}/${path}?${query}`; + const { url } = getObjectMetaInfo(endpoint, params); + const result = await this.spClient.callApi(url, { method: METHOD_GET, }); @@ -693,12 +713,10 @@ export class Objectt implements IObject { }; } - public async listObjectsByIds(params: TListObjectsByIDsRequest) { + public async listObjectsByIds(params: ListObjectsByIDsRequest) { try { - const { ids } = params; - const sp = await this.sp.getInServiceSP(); - const url = `${sp.endpoint}?objects-query=null&ids=${ids.join(',')}`; + const { url } = getListObjectsByIDsMetaInfo(sp.endpoint, params); const result = await this.spClient.callApi( url, @@ -736,4 +754,27 @@ export class Objectt implements IObject { }; } } + + public async listObjectPolicies(params: GetListObjectPoliciesRequest) { + let endpoint = params.endpoint; + if (!endpoint) { + endpoint = await this.sp.getSPUrlByBucket(params.bucketName); + } + const { url } = getListObjectPoliciesMetaInfo(endpoint, params); + + const result = await this.spClient.callApi(url, { + headers: {}, + method: METHOD_GET, + }); + + const xml = await result.text(); + const res = parseGetListObjectPoliciesResponse(xml); + + return { + code: 0, + message: 'success', + statusCode: result.status, + body: res, + }; + } } diff --git a/packages/chain-sdk/src/api/offchainauth.ts b/packages/chain-sdk/src/api/offchainauth.ts index 869c3693..1c0bb6e9 100644 --- a/packages/chain-sdk/src/api/offchainauth.ts +++ b/packages/chain-sdk/src/api/offchainauth.ts @@ -9,11 +9,10 @@ import { updateSpsPubKey, } from '@/offchainauth'; import { hexlify } from '@ethersproject/bytes'; -import { singleton } from 'tsyringe'; -import { convertTimeStampToDate, getUtcZeroTimestamp } from '..'; +import { injectable } from 'tsyringe'; +import { convertTimeStampToDate, getUtcZeroTimestamp, SpResponse } from '..'; import { IGenOffChainAuthKeyPairAndUpload, - IObjectResultType, IReturnOffChainAuthKeyPairAndUpload, ISp, } from '../types/storage'; @@ -25,10 +24,10 @@ export interface IOffChainAuth { genOffChainAuthKeyPairAndUpload( params: IGenOffChainAuthKeyPairAndUpload, provider: any, - ): Promise>; + ): Promise>; } -@singleton() +@injectable() export class OffChainAuth implements IOffChainAuth { public async genOffChainAuthKeyPairAndUpload( { sps, address, domain, expirationMs, chainId }: IGenOffChainAuthKeyPairAndUpload, diff --git a/packages/chain-sdk/src/api/payment.ts b/packages/chain-sdk/src/api/payment.ts index 35104328..60a35158 100644 --- a/packages/chain-sdk/src/api/payment.ts +++ b/packages/chain-sdk/src/api/payment.ts @@ -1,39 +1,56 @@ +import { + getListUserPaymentAccountMetaInfo, + parseListUserPaymentAccountResponse, +} from '@/clients/spclient/spApis/listUserPaymentAccounts'; +import { AuthType, SpClient } from '@/clients/spclient/spClient'; +import { TxClient } from '@/clients/txClient'; import { MsgDepositSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgDeposit'; import { MsgDisableRefundSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgDisableRefund'; import { MsgWithdrawSDKTypeEIP712 } from '@/messages/greenfield/payment/MsgWithdraw'; import { QueryAutoSettleRecordsRequest, QueryAutoSettleRecordsResponse, - QueryPaymentAccountCountsRequest, - QueryPaymentAccountCountsResponse, - QueryPaymentAccountsRequest, - QueryPaymentAccountsResponse, - QueryStreamRecordsRequest, - QueryStreamRecordsResponse, QueryDynamicBalanceRequest, QueryDynamicBalanceResponse, + QueryGetStreamRecordResponse, + QueryOutFlowsRequest, + QueryOutFlowsResponse, + QueryParamsByTimestampRequest, + QueryParamsByTimestampResponse, + QueryParamsResponse, QueryPaymentAccountCountRequest, QueryPaymentAccountCountResponse, + QueryPaymentAccountCountsRequest, + QueryPaymentAccountCountsResponse, QueryPaymentAccountRequest, QueryPaymentAccountResponse, QueryPaymentAccountsByOwnerRequest, QueryPaymentAccountsByOwnerResponse, - QueryGetStreamRecordResponse, - QueryParamsByTimestampRequest, - QueryParamsByTimestampResponse, - QueryParamsResponse, - QueryOutFlowsRequest, - QueryOutFlowsResponse, + QueryPaymentAccountsRequest, + QueryPaymentAccountsResponse, + QueryStreamRecordsRequest, + QueryStreamRecordsResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; import { MsgDeposit, MsgDisableRefund, MsgWithdraw, } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/tx'; -import { container, singleton } from 'tsyringe'; -import { MsgDepositTypeUrl, MsgDisableRefundTypeUrl, MsgWithdrawTypeUrl, TxResponse } from '..'; -import { Basic } from './basic'; +import { container, delay, inject, injectable } from 'tsyringe'; +import { + MsgDepositTypeUrl, + MsgDisableRefundTypeUrl, + MsgWithdrawTypeUrl, + NORMAL_ERROR_CODE, + SpResponse, + TxResponse, +} from '..'; import { RpcQueryClient } from '../clients/queryclient'; +import { + ListUserPaymentAccountsResponse, + ListUserPaymentAccountsResquest, +} from '../types/sp/ListUserPaymentAccounts'; +import { Sp } from './sp'; export interface IPayment { /** @@ -92,11 +109,20 @@ export interface IPayment { ): Promise; getOutFlows(request: QueryOutFlowsRequest): Promise; + + listUserPaymentAccounts( + params: ListUserPaymentAccountsResquest, + authType: AuthType, + ): Promise>; } -@singleton() +@injectable() export class Payment implements IPayment { - private basic: Basic = container.resolve(Basic); + constructor( + @inject(delay(() => TxClient)) private txClient: TxClient, + @inject(delay(() => Sp)) private sp: Sp, + ) {} + private spClient = container.resolve(SpClient); private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); public async getStreamRecord(account: string) { @@ -162,7 +188,7 @@ export class Payment implements IPayment { } public async deposit(msg: MsgDeposit) { - return await this.basic.tx( + return await this.txClient.tx( MsgDepositTypeUrl, msg.creator, MsgDepositSDKTypeEIP712, @@ -172,7 +198,7 @@ export class Payment implements IPayment { } public async withdraw(msg: MsgWithdraw) { - return await this.basic.tx( + return await this.txClient.tx( MsgWithdrawTypeUrl, msg.creator, MsgWithdrawSDKTypeEIP712, @@ -182,7 +208,7 @@ export class Payment implements IPayment { } public async disableRefund(msg: MsgDisableRefund) { - return await this.basic.tx( + return await this.txClient.tx( MsgDisableRefundTypeUrl, msg.owner, MsgDisableRefundSDKTypeEIP712, @@ -190,4 +216,41 @@ export class Payment implements IPayment { MsgDisableRefund.encode(msg).finish(), ); } + + public async listUserPaymentAccounts( + params: ListUserPaymentAccountsResquest, + authType: AuthType, + ) { + try { + const sp = await this.sp.getInServiceSP(); + + const { url, optionsWithOutHeaders, reqMeta } = getListUserPaymentAccountMetaInfo( + sp.endpoint, + params, + ); + + const signHeaders = await this.spClient.signHeaders(reqMeta, authType); + + const result = await this.spClient.callApi(url, { + ...optionsWithOutHeaders, + headers: signHeaders, + }); + + const xml = await result.text(); + const res = parseListUserPaymentAccountResponse(xml); + + return { + code: 0, + message: 'Get bucket success.', + statusCode: result.status, + body: res, + }; + } catch (error: any) { + return { + code: -1, + message: error.message, + statusCode: error?.statusCode || NORMAL_ERROR_CODE, + }; + } + } } diff --git a/packages/chain-sdk/src/api/proposal.ts b/packages/chain-sdk/src/api/proposal.ts new file mode 100644 index 00000000..af262469 --- /dev/null +++ b/packages/chain-sdk/src/api/proposal.ts @@ -0,0 +1,32 @@ +import { TxClient } from '@/clients/txClient'; +import { MsgVoteSDKTypeEIP712 } from '@/messages/cosmos/gov/MsgVote'; +import { voteOptionToJSON } from '@bnb-chain/greenfield-cosmos-types/cosmos/gov/v1/gov'; +import { MsgVote } from '@bnb-chain/greenfield-cosmos-types/cosmos/gov/v1/tx'; +import { delay, inject, injectable } from 'tsyringe'; +import { MsgVoteTypeUrl, TxResponse } from '..'; + +export interface IProposal { + /** + * NOTICE: only validator can use this api + */ + voteProposal(msg: MsgVote): Promise; +} + +@injectable() +export class Proposal implements IProposal { + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} + + public async voteProposal(msg: MsgVote) { + return await this.txClient.tx( + MsgVoteTypeUrl, + msg.voter, + MsgVoteSDKTypeEIP712, + { + ...MsgVote.toSDK(msg), + option: voteOptionToJSON(msg.option), + proposal_id: msg.proposalId.toNumber(), + }, + MsgVote.encode(msg).finish(), + ); + } +} diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/chain-sdk/src/api/sp.ts index daa4732b..a5a60c6e 100644 --- a/packages/chain-sdk/src/api/sp.ts +++ b/packages/chain-sdk/src/api/sp.ts @@ -1,5 +1,8 @@ import { encodePath, HTTPHeaderUserAddress } from '@/clients/spclient/auth'; -import { parseListGroupsResponse } from '@/clients/spclient/spApis/listGroups'; +import { + getListGroupMetaInfo, + parseListGroupsResponse, +} from '@/clients/spclient/spApis/listGroups'; import { parseListGroupsMembersResponse } from '@/clients/spclient/spApis/listGroupsMembers'; import { parseListUserGroupsResponse } from '@/clients/spclient/spApis/listUserGroups'; import { parseListUserOwnedGroupsResponse } from '@/clients/spclient/spApis/listUserOwnedGroups'; @@ -7,7 +10,7 @@ import { parseError } from '@/clients/spclient/spApis/parseError'; import { parseVerifyPermissionResponse } from '@/clients/spclient/spApis/verifyPermission'; import { SpClient } from '@/clients/spclient/spClient'; import { METHOD_GET, NORMAL_ERROR_CODE } from '@/constants/http'; -import { ListUserOwnedGroupsResponse } from '@/types/sp-xml/ListUserOwnedGroupsResponse'; +import { ListUserOwnedGroupsResponse } from '@/types/sp/ListUserOwnedGroups'; import { actionTypeFromJSON } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; import { QueryGlobalSpStorePriceByTimeRequest, @@ -21,17 +24,17 @@ import { QueryStorageProviderMaintenanceRecordsResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/query'; import { Status, StorageProvider } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/types'; -import { container, singleton } from 'tsyringe'; -import { - IObjectResultType, +import { container, injectable } from 'tsyringe'; +import type { + ListGroupsMembersRequest, ListGroupsMembersResponse, ListGroupsResponse, + ListGroupsResquest, ListUserGroupsResponse, - TListGroups, - TListGroupsMembersRequest, - TListUserGroupRequest, - TListUserOwnedGroupRequest, - TVerifyPermissionRequest, + ListUserGroupsResquest, + ListUserOwnedGroupsRequest, + SpResponse, + VerifyPermissionRequest, VerifyPermissionResponse, } from '..'; import { RpcQueryClient } from '../clients/queryclient'; @@ -78,17 +81,17 @@ export interface ISp { params(): Promise; - listGroups(params: TListGroups): Promise>; + listGroups(params: ListGroupsResquest): Promise>; listGroupsMembers( - params: TListGroupsMembersRequest, - ): Promise>; + params: ListGroupsMembersRequest, + ): Promise>; - listUserGroups(params: TListUserGroupRequest): Promise>; + listUserGroups(params: ListUserGroupsResquest): Promise>; listUserOwnedGroups( - params: TListUserOwnedGroupRequest, - ): Promise>; + params: ListUserOwnedGroupsRequest, + ): Promise>; getSPUrlByBucket(bucketName: string): Promise; @@ -96,12 +99,10 @@ export interface ISp { getSPUrlById(primaryId: number): Promise; - verifyPermission( - params: TVerifyPermissionRequest, - ): Promise>; + verifyPermission(params: VerifyPermissionRequest): Promise>; } -@singleton() +@injectable() export class Sp implements ISp { private bucket = container.resolve(Bucket); private queryClient = container.resolve(RpcQueryClient); @@ -183,9 +184,9 @@ export class Sp implements ISp { return spList[0]; } - public async listGroups(params: TListGroups) { + public async listGroups(params: ListGroupsResquest) { try { - const { name, prefix, sourceType, limit, offset } = params; + const { name, prefix } = params; let res: ListGroupsResponse = { GfSpGetGroupListResponse: { @@ -203,7 +204,7 @@ export class Sp implements ISp { } const sp = await this.getInServiceSP(); - const url = `${sp.endpoint}?group-query=null&name=${name}&prefix=${prefix}&source-type=${sourceType}&limit=${limit}&offset=${offset}`; + const { url } = getListGroupMetaInfo(sp.endpoint, params); const result = await this.spClient.callApi( url, @@ -242,7 +243,7 @@ export class Sp implements ISp { } } - public async verifyPermission(params: TVerifyPermissionRequest) { + public async verifyPermission(params: VerifyPermissionRequest) { try { const { action, bucketName, objectName, operator } = params; @@ -290,7 +291,7 @@ export class Sp implements ISp { } } - public async listGroupsMembers(params: TListGroupsMembersRequest) { + public async listGroupsMembers(params: ListGroupsMembersRequest) { try { const { groupId, limit, startAfter } = params; const sp = await this.getInServiceSP(); @@ -340,7 +341,7 @@ export class Sp implements ISp { } } - public async listUserGroups(params: TListUserGroupRequest) { + public async listUserGroups(params: ListUserGroupsResquest) { try { const { address, limit, startAfter } = params; const sp = await this.getInServiceSP(); @@ -393,7 +394,7 @@ export class Sp implements ISp { } } - public async listUserOwnedGroups(params: TListUserOwnedGroupRequest) { + public async listUserOwnedGroups(params: ListUserOwnedGroupsRequest) { try { const { address, limit, startAfter } = params; const sp = await this.getInServiceSP(); diff --git a/packages/chain-sdk/src/api/storage.ts b/packages/chain-sdk/src/api/storage.ts index 6071c957..a781ff3a 100644 --- a/packages/chain-sdk/src/api/storage.ts +++ b/packages/chain-sdk/src/api/storage.ts @@ -1,5 +1,6 @@ +import { TxClient } from '@/clients/txClient'; +import { getMsgPutPolicySDKTypeEIP712 } from '@/messages/greenfield'; import { MsgDeletePolicySDKTypeEIP712 } from '@/messages/greenfield/storage/MsgDeletePolicy'; -import { MsgPutPolicySDKTypeEIP712 } from '@/messages/greenfield/storage/MsgPutPolicy'; import { QueryGroupMembersExistRequest, QueryGroupMembersExistResponse, @@ -20,9 +21,8 @@ import { MsgDeletePolicy, MsgPutPolicy, } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; -import { container, delay, inject, singleton } from 'tsyringe'; +import { container, delay, inject, injectable } from 'tsyringe'; import { fromTimestamp, MsgDeletePolicyTypeUrl, MsgPutPolicyTypeUrl, TxResponse } from '..'; -import { Basic } from './basic'; import { RpcQueryClient } from '../clients/queryclient'; export interface IStorage { @@ -53,9 +53,9 @@ export interface IStorage { queryGroupsExistById(request: QueryGroupsExistByIdRequest): Promise; } -@singleton() +@injectable() export class Storage implements IStorage { - constructor(@inject(delay(() => Basic)) private basic: Basic) {} + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} private queryClient = container.resolve(RpcQueryClient); public async params() { @@ -65,16 +65,21 @@ export class Storage implements IStorage { public async putPolicy(msg: MsgPutPolicy) { const toSdk = MsgPutPolicy.toSDK(msg); - return await this.basic.tx( + return await this.txClient.tx( MsgPutPolicyTypeUrl, msg.operator, - MsgPutPolicySDKTypeEIP712, + getMsgPutPolicySDKTypeEIP712(msg.statements[0].resources), { ...toSdk, expiration_time: msg.expirationTime ? fromTimestamp(msg.expirationTime) : '', statements: toSdk.statements.map((e) => { // @ts-ignore e.expiration_time = ''; + + if (e.resources.length == 0) { + // @ts-ignore + e.resources = null; + } return e; }), }, @@ -83,7 +88,7 @@ export class Storage implements IStorage { } public async deletePolicy(msg: MsgDeletePolicy) { - return await this.basic.tx( + return await this.txClient.tx( MsgDeletePolicyTypeUrl, msg.operator, MsgDeletePolicySDKTypeEIP712, diff --git a/packages/chain-sdk/src/api/validator.ts b/packages/chain-sdk/src/api/validator.ts new file mode 100644 index 00000000..a0441296 --- /dev/null +++ b/packages/chain-sdk/src/api/validator.ts @@ -0,0 +1,57 @@ +import { RpcQueryClient } from '@/clients/queryclient'; +import { TxClient } from '@/clients/txClient'; +import { MsgEditValidatorSDKTypeEIP712 } from '@/messages/cosmos/staking/MsgEditValidator'; +import { + QueryValidatorsRequest, + QueryValidatorsResponse, +} from '@bnb-chain/greenfield-cosmos-types/cosmos/staking/v1beta1/query'; +import { MsgEditValidator } from '@bnb-chain/greenfield-cosmos-types/cosmos/staking/v1beta1/tx'; +import { container, delay, inject, injectable } from 'tsyringe'; +import { MsgEditValidatorTypeUrl, TxResponse } from '..'; + +export interface IValidator { + /** + * lists all validators (if status is empty string) or validators filtered by status. + * STATUS: + * "BOND_STATUS_UNBONDED", + * "BOND_STATUS_UNBONDING", + * "BOND_STATUS_BONDED", + */ + listValidators(request: QueryValidatorsRequest): Promise; + + /** + * NOTICE: only validator can use this api + */ + editValidator(address: string, msg: MsgEditValidator): Promise; +} + +@injectable() +export class Validator implements IValidator { + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} + private queryClient: RpcQueryClient = container.resolve(RpcQueryClient); + + public async listValidators(request: QueryValidatorsRequest) { + const client = await this.queryClient.getStakingClient(); + return client.Validators(request); + } + + // public async createValidator(address: string, msg: MsgCreateValidator) { + // return await this.txClient.tx( + // MsgCreateValidatorTypeUrl, + // address, + // MsgCreateValidatorSDKTypeEIP712, + // MsgCreateValidator.toSDK(msg), + // MsgCreateValidator.encode(msg).finish(), + // ); + // } + + public async editValidator(address: string, msg: MsgEditValidator) { + return await this.txClient.tx( + MsgEditValidatorTypeUrl, + address, + MsgEditValidatorSDKTypeEIP712, + MsgEditValidator.toSDK(msg), + MsgEditValidator.encode(msg).finish(), + ); + } +} diff --git a/packages/chain-sdk/src/api/virtualGroup.ts b/packages/chain-sdk/src/api/virtualGroup.ts index a8d95ee2..54d05217 100644 --- a/packages/chain-sdk/src/api/virtualGroup.ts +++ b/packages/chain-sdk/src/api/virtualGroup.ts @@ -1,3 +1,5 @@ +import { TxClient } from '@/clients/txClient'; +import { MsgSettleSDKTypeEIP712 } from '@/messages/greenfield/virtualgroup/MsgSettle'; import { QueryGlobalVirtualGroupByFamilyIDRequest, QueryGlobalVirtualGroupByFamilyIDResponse, @@ -9,7 +11,9 @@ import { QueryGlobalVirtualGroupResponse, QueryParamsResponse, } from '@bnb-chain/greenfield-cosmos-types/greenfield/virtualgroup/query'; -import { container, singleton } from 'tsyringe'; +import { MsgSettle } from '@bnb-chain/greenfield-cosmos-types/greenfield/virtualgroup/tx'; +import { container, delay, inject, injectable } from 'tsyringe'; +import { MsgSettleTypeUrl, TxResponse } from '..'; import { RpcQueryClient } from '../clients/queryclient'; export interface IVirtualGroup { @@ -30,10 +34,13 @@ export interface IVirtualGroup { getGlobalVirtualGroupFamily( request: QueryGlobalVirtualGroupFamilyRequest, ): Promise; + + settle(address: string, msg: MsgSettle): Promise; } -@singleton() +@injectable() export class VirtualGroup implements IVirtualGroup { + constructor(@inject(delay(() => TxClient)) private txClient: TxClient) {} private queryClient = container.resolve(RpcQueryClient); public async params() { @@ -60,4 +67,14 @@ export class VirtualGroup implements IVirtualGroup { const rpc = await this.queryClient.getVirtualGroupClient(); return await rpc.GlobalVirtualGroupFamily(request); } + + public async settle(address: string, msg: MsgSettle) { + return await this.txClient.tx( + MsgSettleTypeUrl, + address, + MsgSettleSDKTypeEIP712, + MsgSettle.toSDK(msg), + MsgSettle.encode(msg).finish(), + ); + } } diff --git a/packages/chain-sdk/src/client.ts b/packages/chain-sdk/src/client.ts index 4803c1b4..776f1711 100644 --- a/packages/chain-sdk/src/client.ts +++ b/packages/chain-sdk/src/client.ts @@ -1,24 +1,26 @@ import 'reflect-metadata'; -import { container, injectable } from 'tsyringe'; +import { container } from 'tsyringe'; import { Account, IAccount } from './api/account'; +import { Basic, IBasic } from './api/basic'; import { Bucket, IBucket } from './api/bucket'; import { Challenge, IChallenge } from './api/challenge'; import { CrossChain, ICrossChain } from './api/crosschain'; import { Distribution, IDistribution } from './api/distribution'; import { FeeGrant, IFeeGrant } from './api/feegrant'; +import { Gashub, IGashub } from './api/gashub'; import { Group, IGroup } from './api/group'; import { IObject, Objectt } from './api/objectt'; +import { IOffChainAuth, OffChainAuth } from './api/offchainauth'; import { IPayment, Payment } from './api/payment'; +import { IProposal, Proposal } from './api/proposal'; import { ISp, Sp } from './api/sp'; -import { IOffChainAuth, OffChainAuth } from './api/offchainauth'; import { IStorage, Storage } from './api/storage'; -import { Basic, IBasic } from './api/basic'; -import { Gashub, IGashub } from './api/gashub'; -import { RpcQueryClient } from './clients/queryclient'; +import { Validator } from './api/validator'; import { IVirtualGroup, VirtualGroup } from './api/virtualGroup'; +import { RpcQueryClient } from './clients/queryclient'; import { ISpClient, SpClient } from './clients/spclient/spClient'; +import { ITxClient, TxClient } from './clients/txClient'; -@injectable() export class Client { /** * @rpcUrl string @@ -51,11 +53,14 @@ export class Client { const group = container.resolve(Group); const objectt = container.resolve(Objectt); const payment = container.resolve(Payment); + const proposal = container.resolve(Proposal); const queryClient = container.resolve(RpcQueryClient); const sp = container.resolve(Sp); const spClient = container.resolve(SpClient); const storage = container.resolve(Storage); + const txClient = container.resolve(TxClient); const offchainauth = container.resolve(OffChainAuth); + const validator = container.resolve(Validator); const virtualGroup = container.resolve(VirtualGroup); return new Client( @@ -70,11 +75,14 @@ export class Client { group, objectt, payment, + proposal, queryClient, sp, spClient, storage, + txClient, offchainauth, + validator, virtualGroup, ); } @@ -91,11 +99,14 @@ export class Client { public group: IGroup, public object: IObject, public payment: IPayment, + public proposal: IProposal, public queryClient: RpcQueryClient, public sp: ISp, public spClient: ISpClient, public storage: IStorage, + public txClient: ITxClient, public offchainauth: IOffChainAuth, + public validator: Validator, public virtualGroup: IVirtualGroup, ) {} } diff --git a/packages/chain-sdk/src/clients/queryclient.ts b/packages/chain-sdk/src/clients/queryclient.ts index f8c2049b..8326aeb2 100644 --- a/packages/chain-sdk/src/clients/queryclient.ts +++ b/packages/chain-sdk/src/clients/queryclient.ts @@ -5,6 +5,7 @@ import { MsgClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/distrib import { QueryClientImpl as FeeGrantQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/feegrant/v1beta1/query'; import { QueryClientImpl as GashubClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/gashub/v1beta1/query'; import { QueryClientImpl as OracleQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/oracle/v1/query'; +import { QueryClientImpl as StakingQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/cosmos/staking/v1beta1/query'; import { QueryClientImpl as BridgeQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/bridge/query'; import { QueryClientImpl as ChallengeQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/query'; import { QueryClientImpl as PaymentQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; @@ -35,9 +36,9 @@ import { } from '@cosmjs/stargate'; import { AuthzExtension } from '@cosmjs/stargate/build/modules/authz/queries'; import { Tendermint37Client } from '@cosmjs/tendermint-rpc'; -import { inject, singleton } from 'tsyringe'; +import { inject, injectable } from 'tsyringe'; -@singleton() +@injectable() export class RpcQueryClient { constructor(@inject('RPC_URL') private rpcUrl: string) { this.rpcUrl = rpcUrl; @@ -131,6 +132,11 @@ export class RpcQueryClient { const rpcClient = await this.getRpcClient(); return new VirtualGroupClientImpl(rpcClient); } + + public async getStakingClient() { + const rpcClient = await this.getRpcClient(); + return new StakingQueryClientImpl(rpcClient); + } } export const makeClientWithExtension = async ( diff --git a/packages/chain-sdk/src/clients/spclient/auth.ts b/packages/chain-sdk/src/clients/spclient/auth.ts index bb38700e..9fea4cd2 100644 --- a/packages/chain-sdk/src/clients/spclient/auth.ts +++ b/packages/chain-sdk/src/clients/spclient/auth.ts @@ -49,7 +49,6 @@ export const getAuthorization = async ( ) => { const canonicalHeaders = getCanonicalHeaders(reqMeta, reqHeaders); const signedHeaders = getSignedHeaders(reqHeaders); - const canonicalRequestArr = [ reqMeta.method, reqMeta.url?.path, @@ -92,13 +91,23 @@ export const newRequestHeadersByMeta = (meta: Partial) => { headers.set(HTTPHeaderUnsignedMsg.toLocaleLowerCase(), meta.unsignMsg); } + if (meta.userAddress) { + headers.set(HTTPHeaderUserAddress, meta.userAddress); + } + const date = new Date(); - // NOTICE: Smoothing local and server time gap - date.setSeconds(date.getSeconds() + 200); - headers.set(HTTPHeaderDate.toLocaleLowerCase(), formatDate(date)); + if (meta.date) { + headers.set(HTTPHeaderDate.toLocaleLowerCase(), formatDate(meta.date)); + } else { + headers.set(HTTPHeaderDate.toLocaleLowerCase(), formatDate(date)); + } - date.setDate(date.getDate() + 6); - headers.set(HTTPHeaderExpiryTimestamp.toLocaleLowerCase(), formatDate(date)); + if (meta.expiryTimestamp) { + headers.set(HTTPHeaderExpiryTimestamp.toLocaleLowerCase(), formatDate(meta.expiryTimestamp)); + } else { + date.setHours(date.getHours() + 2); + headers.set(HTTPHeaderExpiryTimestamp.toLocaleLowerCase(), formatDate(date)); + } return headers; }; @@ -122,7 +131,7 @@ export const HTTPHeaderContentType = 'Content-Type'; export const HTTPHeaderContentMD5 = 'Content-MD5'; export const HTTPHeaderUnsignedMsg = 'X-Gnfd-Unsigned-Msg'; export const HTTPHeaderUserAddress = 'X-Gnfd-User-Address'; -// const HTTPHeaderAppDomain = 'X-Gnfd-App-Domain'; +export const HTTPHeaderAppDomain = 'X-Gnfd-App-Domain'; const SUPPORTED_HEADERS = [ HTTPHeaderContentSHA256.toLocaleLowerCase(), @@ -210,3 +219,13 @@ export const getSortQuery = (queryMap: Record) => { return queryParams.toString(); }; + +export const getSortQueryParams = (url: URL, queryMap: Record) => { + // const queryParams = new URLSearchParams(); + for (const k in queryMap) { + url.searchParams.append(k, queryMap[k]); + } + url.searchParams.sort(); + + return url; +}; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/approval.ts b/packages/chain-sdk/src/clients/spclient/spApis/approval.ts new file mode 100644 index 00000000..d74aa682 --- /dev/null +++ b/packages/chain-sdk/src/clients/spclient/spApis/approval.ts @@ -0,0 +1,40 @@ +import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; +import { ReqMeta } from '@/types'; +import { toHex, utf8ToBytes } from 'ethereum-cryptography/utils'; +import { getSortQueryParams } from '../auth'; + +export type APPROVAL_ACTION = 'CreateBucket' | 'CreateObject' | 'MigrateBucket'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/get_approval +export const getApprovalMetaInfo = (endpoint: string, action: APPROVAL_ACTION, msg: T) => { + const path = '/greenfield/admin/v1/get-approval'; + const queryMap = { + action, + }; + + let url = new URL(path, endpoint); + url = getSortQueryParams(url, queryMap); + + const unSignedMessageInHex = toHex(utf8ToBytes(JSON.stringify(msg))); + + const reqMeta: Partial = { + contentSHA256: EMPTY_STRING_SHA256, + unsignMsg: unSignedMessageInHex, + method: METHOD_GET, + url: { + hostname: url.hostname, + query: url.searchParams.toString(), + path, + }, + }; + + const optionsWithOutHeaders: Omit = { + method: METHOD_GET, + }; + + return { + url: url.href, + optionsWithOutHeaders, + reqMeta, + }; +}; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts b/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts index 129eb7ea..c24a2677 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts @@ -1,8 +1,26 @@ -import { GetBucketMetaResponse } from '@/types'; -import { formatBucketInfo } from '@/types/sp-xml/Common'; +import { GetBucketMetaRequest, GetBucketMetaResponse } from '@/types'; +import { formatBucketInfo } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; +import { getSortQueryParams } from '../auth'; +import { SPMetaInfo } from './metaInfos'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/get_bucket_meta +export const getBucketMetaInfo = ( + endpoint: string, + params: GetBucketMetaRequest, +): Pick => { + const path = `/${params.bucketName}`; + const queryMap = { + 'bucket-meta': '', + }; + let url = new URL(path, endpoint); + url = getSortQueryParams(url, queryMap); + + return { + url: url.href, + }; +}; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_bucket_meta export const parseGetBucketMetaResponse = async (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getNonce.ts b/packages/chain-sdk/src/clients/spclient/spApis/getNonce.ts index 886f4552..ad294fe6 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getNonce.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getNonce.ts @@ -1,10 +1,16 @@ -import { IFetchNonce, RequestNonceResponse } from '@/types'; +import type { RequestNonceRequest, RequestNonceResponse } from '@/types'; import { fetchWithTimeout } from '@/utils/http'; import { XMLParser } from 'fast-xml-parser'; import { Headers } from 'cross-fetch'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_nonce -export const getNonce = async ({ spEndpoint, spName, spAddress, address, domain }: IFetchNonce) => { +export const getNonce = async ({ + spEndpoint, + spName, + spAddress, + address, + domain, +}: RequestNonceRequest) => { let result; let res; const url = `${spEndpoint}/auth/request_nonce`; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getObject.ts b/packages/chain-sdk/src/clients/spclient/spApis/getObject.ts index e789bda6..5c3a4785 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getObject.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getObject.ts @@ -3,7 +3,7 @@ import { ReqMeta } from '@/types'; import { generateUrlByBucketName } from '@/utils/s3'; import { encodePath } from '../auth'; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_object +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/get_object export const getGetObjectMetaInfo = async ( endpoint: string, params: { @@ -14,7 +14,8 @@ export const getGetObjectMetaInfo = async ( const { bucketName, objectName } = params; const path = `/${encodePath(objectName)}`; const query = ''; - const url = generateUrlByBucketName(endpoint, bucketName) + path; + + const url = new URL(path, generateUrlByBucketName(endpoint, bucketName)); const reqMeta: Partial = { contentSHA256: EMPTY_STRING_SHA256, @@ -32,7 +33,7 @@ export const getGetObjectMetaInfo = async ( }; return { - url, + url: url.href, optionsWithOutHeaders, reqMeta, }; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts b/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts index 3d625753..ec8dfca6 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts @@ -1,8 +1,30 @@ -import { convertStrToBool, formatObjectInfo } from '@/types/sp-xml/Common'; -import { GetObjectMetaResponse } from '@/types/sp-xml/GetObjectMetaResponse'; +import { convertStrToBool, formatObjectInfo } from '@/types/sp/Common'; +import { GetObjectMetaRequest, GetObjectMetaResponse } from '@/types/sp/GetObjectMeta'; +import { generateUrlByBucketName } from '@/utils/s3'; import { XMLParser } from 'fast-xml-parser'; +import { encodePath, getSortQueryParams } from '../auth'; +import type { SPMetaInfo } from './metaInfos'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/get_object_meta +export const getObjectMetaInfo = ( + endpoint: string, + params: GetObjectMetaRequest, +): Pick => { + const { objectName, bucketName } = params; + + const path = `${encodePath(objectName)}`; + const queryMap = { + 'object-meta': '', + }; + + let url = new URL(path, generateUrlByBucketName(endpoint, bucketName)); + url = getSortQueryParams(url, queryMap); + + return { + url: url.href, + }; +}; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_object_meta export const parseGetObjectMetaResponse = async (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts b/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts index 21f62149..d12a836a 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts @@ -1,8 +1,15 @@ -import { GetUserBucketsResponse } from '@/types'; -import { convertStrToBool, formatBucketInfo } from '@/types/sp-xml/Common'; +import type { GetUserBucketsResponse } from '@/types'; +import { convertStrToBool, formatBucketInfo, formatVGF } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; +import { SPMetaInfo } from './metaInfos'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/get_user_buckets +export const getUserBucketMetaInfo = (endpoint: string): Pick => { + return { + url: endpoint, + }; +}; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_user_buckets export const parseGetUserBucketsResponse = async (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, @@ -24,6 +31,7 @@ export const parseGetUserBucketsResponse = async (data: string) => { DeleteAt: Number(item.DeleteAt), UpdateAt: Number(item.UpdateAt), UpdateTime: Number(item.UpdateTime), + Vgf: formatVGF(item.Vgf), }; }); } diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts b/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts index ce80b6f3..51b93e71 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts @@ -1,40 +1,20 @@ import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; -import { ReqMeta, TListBucketReadRecord } from '@/types'; -import { formatReadRecord } from '@/types/sp-xml/Common'; -import { ListBucketReadRecordResponse } from '@/types/sp-xml/ListBucketReadRecordResponse'; +import { ReqMeta } from '@/types'; +import { formatReadRecord } from '@/types/sp/Common'; +import { + ListBucketReadRecordRequest, + ListBucketReadRecordResponse, +} from '@/types/sp/ListBucketReadRecord'; import { generateUrlByBucketName } from '@/utils'; import { XMLParser } from 'fast-xml-parser'; -import { getSortQuery } from '../auth'; +import { getSortQuery, getSortQueryParams } from '../auth'; +import { SPMetaInfo } from './metaInfos'; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_bucket_read_records -export const parseListBucketReadRecordResponse = async (data: string) => { - const xmlParser = new XMLParser({ - parseTagValue: false, - }); - - const res = xmlParser.parse(data) as ListBucketReadRecordResponse; - - let readRecords = res.GetBucketReadQuotaResult?.ReadRecords || []; - if (readRecords) { - if (!Array.isArray(readRecords)) { - readRecords = [readRecords]; - } - - readRecords = readRecords.map((readRecord) => formatReadRecord(readRecord)); - } - - res.GetBucketReadQuotaResult = { - ...res.GetBucketReadQuotaResult, - ReadRecords: readRecords, - }; - - return res; -}; - -export const getListBucketReadRecordMetaInfo = async ( +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/list_bucket_read_records +export const getListBucketReadRecordMetaInfo = ( endpoint: string, - params: TListBucketReadRecord, -) => { + params: ListBucketReadRecordRequest, +): SPMetaInfo => { const { bucketName, endTimeStamp, maxRecords, startTimeStamp } = params; const path = '/'; const queryMap = { @@ -43,16 +23,16 @@ export const getListBucketReadRecordMetaInfo = async ( 'max-records': String(maxRecords), 'start-timestamp': String(startTimeStamp), }; - const query = getSortQuery(queryMap); - const url = `${generateUrlByBucketName(endpoint, bucketName)}${path}?${query}`; + let url = new URL(path, generateUrlByBucketName(endpoint, bucketName)); + url = getSortQueryParams(url, queryMap); const reqMeta: Partial = { contentSHA256: EMPTY_STRING_SHA256, method: METHOD_GET, url: { - hostname: new URL(url).hostname, - query, + hostname: url.hostname, + query: url.searchParams.toString(), path, }, }; @@ -62,8 +42,32 @@ export const getListBucketReadRecordMetaInfo = async ( }; return { - url, + url: url.href, optionsWithOutHeaders, reqMeta, }; }; + +export const parseListBucketReadRecordResponse = async (data: string) => { + const xmlParser = new XMLParser({ + parseTagValue: false, + }); + + const res = xmlParser.parse(data) as ListBucketReadRecordResponse; + + let readRecords = res.GetBucketReadQuotaResult?.ReadRecords || []; + if (readRecords) { + if (!Array.isArray(readRecords)) { + readRecords = [readRecords]; + } + + readRecords = readRecords.map((readRecord) => formatReadRecord(readRecord)); + } + + res.GetBucketReadQuotaResult = { + ...res.GetBucketReadQuotaResult, + ReadRecords: readRecords, + }; + + return res; +}; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts b/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts index 72041ac8..ea0df2a7 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts @@ -1,8 +1,28 @@ -import { ListBucketsByIDsResponse } from '@/types'; -import { convertStrToBool, formatBucketInfo } from '@/types/sp-xml/Common'; +import { ListBucketsByIDsRequest, ListBucketsByIDsResponse } from '@/types'; +import { convertStrToBool, formatBucketInfo } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; +import { getSortQueryParams } from '../auth'; +import { SPMetaInfo } from './metaInfos'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/list_buckets_by_ids +export const getListBucketsByIDsMetaInfo = ( + endpoint: string, + params: ListBucketsByIDsRequest, +): Pick => { + const path = '/'; + const queryMap = { + ids: params.ids.join(','), + 'buckets-query': 'null', + }; + + let url = new URL(path, endpoint); + url = getSortQueryParams(url, queryMap); + + return { + url: url.href, + }; +}; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_buckets_by_ids export const parseListBucketsByIdsResponse = async (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts b/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts new file mode 100644 index 00000000..ba971dff --- /dev/null +++ b/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts @@ -0,0 +1,57 @@ +import { convertStrToBool, formatBucketInfo } from '@/types/sp/Common'; +import { + ListBucketsByPaymentAccountRequest, + ListBucketsByPaymentAccountResponse, +} from '@/types/sp/ListBucketsByPaymentAccount'; +import { XMLParser } from 'fast-xml-parser'; +import { getSortQueryParams } from '../auth'; + +export const getListBucketByPaymentMetaInfo = ( + endpoint: string, + params: ListBucketsByPaymentAccountRequest, +) => { + const path = '/'; + const queryMap = { + 'payment-buckets': 'null', + 'payment-account': params.paymentAccount, + }; + + let url = new URL(path, endpoint); + url = getSortQueryParams(url, queryMap); + + return { + url: url.href, + }; +}; + +export const parseListBucketByPaymentResponse = (data: string) => { + const xmlParser = new XMLParser({ + parseTagValue: false, + }); + const res = xmlParser.parse(data) as ListBucketsByPaymentAccountResponse; + + let Buckets = res.GfSpListPaymentAccountStreamsResponse.Buckets || []; + if (Buckets) { + if (!Array.isArray(Buckets)) { + Buckets = [Buckets]; + } + + Buckets = Buckets.map((item) => { + return { + ...item, + BucketInfo: formatBucketInfo(item.BucketInfo), + // @ts-ignore + Removed: convertStrToBool(item.Removed), + DeleteAt: Number(item.DeleteAt), + UpdateAt: Number(item.UpdateAt), + UpdateTime: Number(item.UpdateTime), + }; + }); + } + + res.GfSpListPaymentAccountStreamsResponse = { + Buckets, + }; + + return res; +}; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts b/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts index 5a4f2170..3d3ce83b 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts @@ -1,8 +1,32 @@ -import { ListGroupsResponse } from '@/types'; -import { formatGroupInfo, convertStrToBool } from '@/types/sp-xml/Common'; +import { ListGroupsResponse, ListGroupsResquest } from '@/types'; +import { formatGroupInfo, convertStrToBool } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; +import { getSortQueryParams } from '../auth'; +import { SPMetaInfo } from './metaInfos'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/get_group_list +export const getListGroupMetaInfo = ( + endpoint: string, + params: ListGroupsResquest, +): Pick => { + const { name, prefix, sourceType, limit, offset } = params; + const path = '/'; + const queryMap = { + 'group-query': 'null', + name, + prefix, + 'source-type': sourceType as string, + limit: String(limit), + offset: String(offset), + }; + let url = new URL(path, endpoint); + url = getSortQueryParams(url, queryMap); + + return { + url: url.href, + }; +}; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_group_list export const parseListGroupsResponse = async (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts b/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts index bc3e76cf..2aa32347 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts @@ -1,8 +1,8 @@ import { ListGroupsMembersResponse } from '@/types'; -import { formatGroupInfo, convertStrToBool } from '@/types/sp-xml/Common'; +import { formatGroupInfo, convertStrToBool } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_group_members +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/list_group_members export const parseListGroupsMembersResponse = async (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectPolicies.ts b/packages/chain-sdk/src/clients/spclient/spApis/listObjectPolicies.ts new file mode 100644 index 00000000..b232a9c2 --- /dev/null +++ b/packages/chain-sdk/src/clients/spclient/spApis/listObjectPolicies.ts @@ -0,0 +1,62 @@ +import { convertStrToBool, formatObjectInfo } from '@/types/sp/Common'; +import { + GetListObjectPoliciesRequest, + GetListObjectPoliciesResponse, +} from '@/types/sp/ListObjectPolicies'; +import { generateUrlByBucketName } from '@/utils'; +import { actionTypeFromJSON } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; +import { XMLParser } from 'fast-xml-parser'; +import { encodePath, getSortQueryParams } from '../auth'; + +export const getListObjectPoliciesMetaInfo = ( + endpoint: string, + params: GetListObjectPoliciesRequest, +) => { + const { actionType, bucketName, objectName, limit = '10', startAfter = '' } = params; + const path = `/${encodePath(objectName)}`; + const queryMap = { + 'object-policies': 'null', + 'start-after': startAfter, + limit: String(limit), + 'action-type': String(actionTypeFromJSON(actionType)), + }; + + let url = new URL(path, generateUrlByBucketName(endpoint, bucketName)); + url = getSortQueryParams(url, queryMap); + + return { + url: url.href, + }; +}; + +export const parseGetListObjectPoliciesResponse = (data: string) => { + const xmlParser = new XMLParser({ + parseTagValue: false, + }); + const res = xmlParser.parse(data) as GetListObjectPoliciesResponse; + + let Policies = res.GfSpListObjectPoliciesResponse.Policies || []; + + if (Policies) { + if (!Array.isArray(Policies)) { + Policies = [Policies]; + } + + Policies = Policies.map((item) => { + return { + ...item, + PrincipalType: Number(item.ResourceType), + ResourceType: Number(item.ResourceType), + CreateTimestamp: Number(item.CreateTimestamp), + UpdateTimestamp: Number(item.UpdateTimestamp), + ExpirationTime: Number(item.ExpirationTime), + }; + }); + } + + res.GfSpListObjectPoliciesResponse = { + Policies, + }; + + return res; +}; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts index 0a381fce..a40a5e75 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts @@ -1,8 +1,8 @@ -import { convertStrToBool, formatObjectInfo } from '@/types/sp-xml/Common'; -import { ListObjectsByBucketNameResponse } from '@/types/sp-xml/ListObjectsByBucketNameResponse'; +import { convertStrToBool, formatObjectInfo } from '@/types/sp/Common'; +import { ListObjectsByBucketNameResponse } from '@/types/sp/ListObjectsByBucketName'; import { XMLParser } from 'fast-xml-parser'; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_objects_by_bucket +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/list_objects_by_bucket export const parseListObjectsByBucketNameResponse = async (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts index 22540413..a964fc6e 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts @@ -1,8 +1,24 @@ -import { ListObjectsByIDsResponse } from '@/types'; -import { formatObjectInfo, convertStrToBool } from '@/types/sp-xml/Common'; +import { ListObjectsByIDsRequest, ListObjectsByIDsResponse } from '@/types'; +import { formatObjectInfo, convertStrToBool } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; +import { getSortQueryParams } from '../auth'; + +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/list_objects_by_ids +export const getListObjectsByIDsMetaInfo = (endpoint: string, params: ListObjectsByIDsRequest) => { + const path = ''; + const queryMap = { + ids: params.ids.join(','), + 'objects-query': 'null', + }; + + let url = new URL(path, endpoint); + url = getSortQueryParams(url, queryMap); + + return { + url: url.href, + }; +}; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_objects_by_ids export const parseListObjectsByIdsResponse = async (data: string) => { const xmlParser = new XMLParser({ parseTagValue: false, diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts b/packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts index d9173219..08d987dc 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts @@ -1,5 +1,5 @@ import { ListUserGroupsResponse } from '@/types'; -import { formatGroupInfo, convertStrToBool } from '@/types/sp-xml/Common'; +import { formatGroupInfo, convertStrToBool } from '@/types/sp/Common'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_user_groups diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts b/packages/chain-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts index d1ef8bcb..7676a0ae 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts @@ -1,5 +1,5 @@ -import { formatGroupInfo, convertStrToBool } from '@/types/sp-xml/Common'; -import { ListUserOwnedGroupsResponse } from '@/types/sp-xml/ListUserOwnedGroupsResponse'; +import { formatGroupInfo, convertStrToBool } from '@/types/sp/Common'; +import { ListUserOwnedGroupsResponse } from '@/types/sp/ListUserOwnedGroups'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/list_user_owned_groups diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listUserPaymentAccounts.ts b/packages/chain-sdk/src/clients/spclient/spApis/listUserPaymentAccounts.ts new file mode 100644 index 00000000..7bfaa840 --- /dev/null +++ b/packages/chain-sdk/src/clients/spclient/spApis/listUserPaymentAccounts.ts @@ -0,0 +1,61 @@ +import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; +import { ReqMeta } from '@/types'; +import { + ListUserPaymentAccountsResponse, + ListUserPaymentAccountsResquest, +} from '@/types/sp/ListUserPaymentAccounts'; +import { XMLParser } from 'fast-xml-parser'; +import { getSortQuery, getSortQueryParams } from '../auth'; + +export const getListUserPaymentAccountMetaInfo = ( + endpoint: string, + params: ListUserPaymentAccountsResquest, +) => { + const path = '/'; + const queryMap = { + 'user-payments': 'null', + }; + const query = getSortQuery(queryMap); + let url = new URL(path, endpoint); + url = getSortQueryParams(url, queryMap); + + const reqMeta: Partial = { + contentSHA256: EMPTY_STRING_SHA256, + method: METHOD_GET, + url: { + hostname: new URL(url).hostname, + query, + path, + }, + userAddress: params.account, + }; + + const optionsWithOutHeaders: Omit = { + method: METHOD_GET, + }; + + return { + url: url.href, + optionsWithOutHeaders, + reqMeta, + }; +}; + +export const parseListUserPaymentAccountResponse = (data: string) => { + const xmlParser = new XMLParser({ + parseTagValue: false, + }); + const res = xmlParser.parse(data) as ListUserPaymentAccountsResponse; + + let StreamRecords = res.GfSpListUserPaymentAccountsResponse.StreamRecords || []; + + if (StreamRecords) { + if (!Array.isArray(StreamRecords)) { + StreamRecords = [StreamRecords]; + } + } + + res.GfSpListUserPaymentAccountsResponse.StreamRecords = StreamRecords; + + return res; +}; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/metaInfos.ts b/packages/chain-sdk/src/clients/spclient/spApis/metaInfos.ts index 992f68ee..7b504331 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/metaInfos.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/metaInfos.ts @@ -1,13 +1,16 @@ -import { getBucketApprovalMetaInfo } from './bucketApproval'; +import type { ReqMeta } from '@/types'; import { getGetObjectMetaInfo } from './getObject'; -import { getObjectApprovalMetaInfo } from './objectApproval'; import { getPutObjectMetaInfo } from './putObject'; import { getQueryBucketReadQuotaMetaInfo } from './queryBucketReadQuota'; +export type SPMetaInfo = { + url: string; + optionsWithOutHeaders: Omit; + reqMeta: Partial; +}; + export const SpMetaInfo = { - getBucketApprovalMetaInfo, getGetObjectMetaInfo, - getObjectApprovalMetaInfo, getPutObjectMetaInfo, getQueryBucketReadQuotaMetaInfo, }; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/putObject.ts b/packages/chain-sdk/src/clients/spclient/spApis/putObject.ts index 9f174759..d9551207 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/putObject.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/putObject.ts @@ -3,7 +3,7 @@ import { ReqMeta } from '@/types'; import { generateUrlByBucketName } from '@/utils/s3'; import { encodePath } from '../auth'; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/put_object +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/put_object export const getPutObjectMetaInfo = async ( endpoint: string, params: { @@ -16,16 +16,15 @@ export const getPutObjectMetaInfo = async ( ) => { const { bucketName, objectName, txnHash, contentType, body } = params; const path = `/${encodePath(objectName)}`; - const query = ''; - const url = `${generateUrlByBucketName(endpoint, bucketName)}${path}`; + const url = new URL(path, generateUrlByBucketName(endpoint, bucketName)); const reqMeta: Partial = { contentSHA256: EMPTY_STRING_SHA256, txnHash: txnHash, method: METHOD_PUT, url: { - hostname: new URL(url).hostname, + hostname: url.hostname, query, path, }, @@ -38,7 +37,7 @@ export const getPutObjectMetaInfo = async ( }; return { - url, + url: url.href, optionsWithOutHeaders, reqMeta, }; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts b/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts index 98dedde6..048ece2c 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts @@ -1,14 +1,14 @@ import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; -import { ReqMeta, TBaseGetBucketReadQuota } from '@/types'; -import { ReadQuotaResponse } from '@/types/sp-xml'; +import { ReqMeta, ReadQuotaRequest } from '@/types'; +import { ReadQuotaResponse } from '@/types/sp'; import { generateUrlByBucketName } from '@/utils/s3'; import { XMLParser } from 'fast-xml-parser'; import { getSortQuery } from '../auth'; -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/query_bucket_read_quota +// https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/query_bucket_read_quota export const getQueryBucketReadQuotaMetaInfo = async ( endpoint: string, - params: TBaseGetBucketReadQuota, + params: ReadQuotaRequest, ) => { const { year, month, bucketName } = params; const currentDate = new Date(); diff --git a/packages/chain-sdk/src/clients/spclient/spApis/verifyPermission.ts b/packages/chain-sdk/src/clients/spclient/spApis/verifyPermission.ts index 76b4c7ca..62c57894 100644 --- a/packages/chain-sdk/src/clients/spclient/spApis/verifyPermission.ts +++ b/packages/chain-sdk/src/clients/spclient/spApis/verifyPermission.ts @@ -1,4 +1,4 @@ -import { VerifyPermissionResponse } from '@/types/sp-xml/VerifyPermissionResponse'; +import { VerifyPermissionResponse } from '@/types/sp/VerifyPermission'; import { XMLParser } from 'fast-xml-parser'; // https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/verify_permission diff --git a/packages/chain-sdk/src/clients/spclient/spClient.ts b/packages/chain-sdk/src/clients/spclient/spClient.ts index f968fb36..706364c8 100644 --- a/packages/chain-sdk/src/clients/spclient/spClient.ts +++ b/packages/chain-sdk/src/clients/spclient/spClient.ts @@ -1,22 +1,25 @@ import { getAuthorization, + HTTPHeaderAppDomain, HTTPHeaderAuthorization, + HTTPHeaderUserAddress, newRequestHeadersByMeta, } from '@/clients/spclient/auth'; import { parseError } from '@/clients/spclient/spApis/parseError'; import { ReqMeta } from '@/types/auth'; -import { Headers } from 'cross-fetch'; -import { singleton } from 'tsyringe'; +import { injectable } from 'tsyringe'; +import { getGetObjectMetaInfo } from './spApis/getObject'; +import { getPutObjectMetaInfo } from './spApis/putObject'; /** - * V1 + * ECDSA Signature */ export type ECDSA = { type: 'ECDSA'; privateKey: string; }; /** - * OffChainAuth + * EDDSA Signature */ export type EDDSA = { type: 'EDDSA'; @@ -38,9 +41,24 @@ export interface ISpClient { ): Promise; signHeaders(reqMeta: Partial, authType: AuthType): Promise; + + /** + * + * ``` + * const { PUT_OBJECT: getPutObjectMetaInfo } = client.spClient.getMetaInfo(endpoint, payload); + * const {reqMeta, url} = await getPutObjectMetaInfo(endpoint, params); + * + * axios.put(...) + * ``` + * + */ + getMetaInfo(): { + PUT_OBJECT: typeof getPutObjectMetaInfo; + GET_OBJECT: typeof getGetObjectMetaInfo; + }; } -@singleton() +@injectable() export class SpClient implements ISpClient { public async callApi( url: string, @@ -80,10 +98,11 @@ export class SpClient implements ISpClient { public async signHeaders(reqMeta: Partial, authType: AuthType) { const metaHeaders: Headers = newRequestHeadersByMeta(reqMeta); + if (authType.type === 'EDDSA') { const { domain, address } = authType; - metaHeaders.append('X-Gnfd-User-Address', address); - metaHeaders.append('X-Gnfd-App-Domain', domain); + metaHeaders.set(HTTPHeaderUserAddress, address); + metaHeaders.set(HTTPHeaderAppDomain, domain); } const auth = await getAuthorization(reqMeta, metaHeaders, authType); @@ -91,4 +110,11 @@ export class SpClient implements ISpClient { return metaHeaders; } + + public getMetaInfo() { + return { + PUT_OBJECT: getPutObjectMetaInfo, + GET_OBJECT: getGetObjectMetaInfo, + }; + } } diff --git a/packages/chain-sdk/src/clients/txClient.ts b/packages/chain-sdk/src/clients/txClient.ts new file mode 100644 index 00000000..a25962be --- /dev/null +++ b/packages/chain-sdk/src/clients/txClient.ts @@ -0,0 +1,394 @@ +import { Account } from '@/api/account'; +import { getPubKeyByPriKey } from '@/keymanage'; +import { defaultSignTypedData } from '@/sign/signTx'; +import { getGasFeeBySimulate } from '@/utils/units'; +import { BaseAccount } from '@bnb-chain/greenfield-cosmos-types/cosmos/auth/v1beta1/auth'; +import { Coin } from '@bnb-chain/greenfield-cosmos-types/cosmos/base/v1beta1/coin'; +import { + ServiceClientImpl, + SimulateRequest, +} from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/service'; +import { + AuthInfo, + Tx, + TxBody, + TxRaw, +} from '@bnb-chain/greenfield-cosmos-types/cosmos/tx/v1beta1/tx'; +import { makeAuthInfoBytes } from '@cosmjs/proto-signing'; +import { DeliverTxResponse, StargateClient } from '@cosmjs/stargate'; +import { Tendermint37Client } from '@cosmjs/tendermint-rpc'; +import { arrayify, hexlify } from '@ethersproject/bytes'; +import { signTypedData, SignTypedDataVersion } from '@metamask/eth-sig-util'; +import { container, inject, injectable } from 'tsyringe'; +import { + BroadcastOptions, + CustomTx, + ISimulateGasFee, + MetaTxInfo, + SignOptions, + SimulateOptions, + TxResponse, +} from '..'; +import { RpcQueryClient } from '../clients/queryclient'; +import { DEFAULT_DENOM, ZERO_PUBKEY } from '../constants'; +import { + createEIP712, + generateFee, + generateMessage, + generateTypes, + mergeMultiEip712, + mergeMultiMessage, +} from '../messages'; +import { generateMsg } from '../messages/utils'; +import { eip712Hash, makeCosmsPubKey, recoverPk } from '../sign'; + +export interface ITxClient { + /** + * simulates a transaction containing the provided messages on the chain. + The function returns a pointer to a ISimulateGasFee + */ + simulateRawTx( + txBodyBytes: Uint8Array, + accountInfo: BaseAccount, + txOption: SimulateOptions, + ): Promise; + + /** + * broadcasts a transaction containing the provided messages to the chain. + The function returns a pointer to a BroadcastTxResponse and any error that occurred during the operation. + */ + broadcastRawTx(txRawBytes: Uint8Array): Promise; + + tx( + typeUrl: MetaTxInfo['typeUrl'], + address: MetaTxInfo['address'], + MsgSDKTypeEIP712: MetaTxInfo['MsgSDKTypeEIP712'], + MsgSDK: MetaTxInfo['MsgSDK'], + msgBytes: MetaTxInfo['msgBytes'], + ): Promise; + + txRaw({ + address, + txRawHex, + eip712MsgType, + msgData, + }: CustomTx): Promise>; + + /** + * + */ + multiTx(txResList: Pick[]): Promise>; +} + +@injectable() +export class TxClient implements ITxClient { + public rpcUrl: string; + public chainId: string; + constructor(@inject('RPC_URL') rpcUrl: string, @inject('CHAIN_ID') chainId: string) { + this.rpcUrl = rpcUrl; + this.chainId = chainId; + } + + private account: Account = container.resolve(Account); + private rpcQueryClient = container.resolve(RpcQueryClient); + + public async tx( + typeUrl: MetaTxInfo['typeUrl'], + address: MetaTxInfo['address'], + MsgSDKTypeEIP712: MetaTxInfo['MsgSDKTypeEIP712'], + MsgSDK: MetaTxInfo['MsgSDK'], + msgBytes: MetaTxInfo['msgBytes'], + ) { + const txBodyBytes = this.getBodyBytes([ + { + typeUrl, + msgBytes, + }, + ]); + + const tx = await this.multiTx([ + { + metaTxInfo: { + typeUrl, + address, + MsgSDKTypeEIP712, + MsgSDK, + msgBytes, + bodyBytes: txBodyBytes, + }, + }, + ]); + + return { + simulate: tx.simulate, + broadcast: tx.broadcast, + metaTxInfo: { + typeUrl, + address, + MsgSDKTypeEIP712, + MsgSDK, + msgBytes, + bodyBytes: txBodyBytes, + }, + }; + } + + public async txRaw({ + address, + txRawHex, + eip712MsgType, + msgData, + }: CustomTx): Promise> { + const accountInfo = await this.account.getAccount(address); + const txRawBytes = arrayify(txRawHex); + const txRawP = TxRaw.decode(txRawBytes); + + return { + simulate: async (opts: SimulateOptions) => { + return await this.simulateRawTx(txRawP.bodyBytes, accountInfo, opts); + }, + broadcast: async (opts: BroadcastOptions) => { + const { + denom, + gasLimit, + gasPrice, + payer, + granter, + privateKey, + signTypedDataCallback = defaultSignTypedData, + } = opts; + + const fee = generateFee( + String(BigInt(gasLimit) * BigInt(gasPrice)), + denom, + String(gasLimit), + payer, + granter, + ); + const wrapperTypes = generateTypes(eip712MsgType); + const messages = generateMessage( + accountInfo.accountNumber.toString(), + accountInfo.sequence.toString(), + this.chainId, + '', + fee, + msgData, + '0', + ); + + const eip712 = createEIP712(wrapperTypes, this.chainId, messages); + // console.log('eip712', eip712); + const { pubKey, signature } = privateKey + ? this.getSignByPriKey(eip712, privateKey) + : await this.getSignByWallet(eip712, accountInfo.address, signTypedDataCallback); + + const authInfoBytes = this.getAuthInfoBytes({ + denom, + sequence: accountInfo.sequence + '', + gasLimit, + gasPrice, + pubKey, + granter, + payer, + }); + + const txRaw = TxRaw.fromPartial({ + bodyBytes: txRawP.bodyBytes, + authInfoBytes, + signatures: [arrayify(signature)], + }); + const txBytes = TxRaw.encode(txRaw).finish(); + + // console.log('txBytes', hexlify(txBytes)); + return await this.broadcastRawTx(txBytes); + }, + }; + } + + private getBodyBytes(params: { typeUrl: string; msgBytes: Uint8Array }[]) { + const multiMsgBytes = params.map((tx) => { + return generateMsg(tx.typeUrl, tx.msgBytes); + }); + + const txBody = TxBody.fromPartial({ + messages: multiMsgBytes, + }); + const txBodyBytes = TxBody.encode(txBody).finish(); + return txBodyBytes; + } + + private getSignByPriKey( + eip712: ReturnType, + privateKey: SignOptions['privateKey'], + ) { + const pubKey = getPubKeyByPriKey(privateKey); + const signature = signTypedData({ + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + data: eip712, + version: SignTypedDataVersion.V4, + privateKey: Buffer.from(arrayify(privateKey)), + }); + + return { + pubKey, + signature, + }; + } + + private async getSignByWallet( + eip712: ReturnType, + address: string, + signTypedDataCallback: SignOptions['signTypedDataCallback'], + ) { + const signature = await signTypedDataCallback(address, JSON.stringify(eip712)); + const messageHash = eip712Hash(JSON.stringify(eip712)); + + const pk = recoverPk({ + signature, + messageHash, + }); + const pubKey = makeCosmsPubKey(pk); + + return { + pubKey, + signature, + }; + } + + private getAuthInfoBytes( + params: Pick & { + pubKey: BaseAccount['pubKey']; + sequence: string; + }, + ) { + const { pubKey, denom = DEFAULT_DENOM, sequence, gasLimit, gasPrice, granter, payer } = params; + if (!pubKey) throw new Error('pubKey is required'); + + const feeAmount: Coin[] = [ + { + denom, + amount: String(BigInt(gasLimit) * BigInt(gasPrice)), + }, + ]; + + const authInfoBytes = makeAuthInfoBytes( + [{ pubkey: pubKey, sequence: Number(sequence) }], + feeAmount, + gasLimit, + granter, + payer, + 712, + ); + + return authInfoBytes; + } + + public async simulateRawTx( + txBodyBytes: Uint8Array, + accountInfo: BaseAccount, + options: SimulateOptions, + ) { + const rpcClient = await this.rpcQueryClient.getRpcClient(); + const rpc = new ServiceClientImpl(rpcClient); + + const { denom } = options; + const authInfoBytes = this.getAuthInfoBytes({ + sequence: accountInfo.sequence + '', + denom, + gasLimit: 0, + gasPrice: '0', + pubKey: makeCosmsPubKey(ZERO_PUBKEY), + granter: '', + payer: '', + }); + const tx = Tx.fromPartial({ + authInfo: AuthInfo.decode(authInfoBytes), + body: TxBody.decode(txBodyBytes), + signatures: [Uint8Array.from([])], + }); + + const request = SimulateRequest.fromPartial({ + txBytes: Tx.encode(tx).finish(), + }); + + const res = await rpc.Simulate(request); + return getGasFeeBySimulate(res, denom); + } + + public async broadcastRawTx(txRawBytes: Uint8Array) { + const tmClient = await Tendermint37Client.connect(this.rpcUrl); + + const client = await StargateClient.create(tmClient); + return await client.broadcastTx(txRawBytes); + } + + public async multiTx(txResList: Pick[]) { + const txs = txResList.map((txRes) => txRes.metaTxInfo); + const accountInfo = await this.account.getAccount(txs[0].address); + const txBodyBytes = this.getBodyBytes(txs); + + return { + simulate: async (opts: SimulateOptions) => { + return await this.simulateRawTx(txBodyBytes, accountInfo, opts); + }, + broadcast: async (opts: BroadcastOptions) => { + const { + denom, + gasLimit, + gasPrice, + payer, + granter, + privateKey, + signTypedDataCallback = defaultSignTypedData, + } = opts; + + const types = mergeMultiEip712(txs.map((tx) => tx.MsgSDKTypeEIP712)); + const fee = generateFee( + String(BigInt(gasLimit) * BigInt(gasPrice)), + denom, + String(gasLimit), + payer, + granter, + ); + const wrapperTypes = generateTypes(types); + const multiMessages = mergeMultiMessage(txs); + const messages = generateMessage( + accountInfo.accountNumber.toString(), + accountInfo.sequence.toString(), + this.chainId, + '', + fee, + multiMessages, + '0', + ); + + const eip712 = createEIP712(wrapperTypes, this.chainId, messages); + + const { pubKey, signature } = privateKey + ? this.getSignByPriKey(eip712, privateKey) + : await this.getSignByWallet(eip712, accountInfo.address, signTypedDataCallback); + + const authInfoBytes = this.getAuthInfoBytes({ + denom, + sequence: accountInfo.sequence + '', + gasLimit, + gasPrice, + pubKey, + granter, + payer, + }); + + const txRaw = TxRaw.fromPartial({ + bodyBytes: txBodyBytes, + authInfoBytes, + signatures: [arrayify(signature)], + }); + const txBytes = TxRaw.encode(txRaw).finish(); + + // console.log('txBytes', hexlify(txBytes)); + return await this.broadcastRawTx(txBytes); + }, + }; + } +} diff --git a/packages/chain-sdk/src/constants/typeUrl.ts b/packages/chain-sdk/src/constants/typeUrl.ts index b7b52313..c8b085ad 100644 --- a/packages/chain-sdk/src/constants/typeUrl.ts +++ b/packages/chain-sdk/src/constants/typeUrl.ts @@ -30,3 +30,13 @@ export const MsgUpdateGroupMemberTypeUrl = '/greenfield.storage.MsgUpdateGroupMe export const MsgUpdateObjectInfoTypeUrl = '/greenfield.storage.MsgUpdateObjectInfo'; export const BasicAllowanceTypeUrl = '/cosmos.feegrant.v1beta1.BasicAllowance'; export const AllowedMsgAllowanceTypeUrl = '/cosmos.feegrant.v1beta1.AllowedMsgAllowance'; +export const MsgEditValidatorTypeUrl = '/cosmos.staking.v1beta1.MsgEditValidator'; +export const MsgCreateValidatorTypeUrl = '/cosmos.staking.v1beta1.MsgCreateValidator'; +export const MsgVoteTypeUrl = '/cosmos.gov.v1.MsgVote'; +export const MsgWithdrawDelegatorRewardTypeUrl = + '/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward'; +export const MsgSetWithdrawAddressTypeUrl = '/cosmos.distribution.v1beta1.MsgSetWithdrawAddress'; +export const MsgWithdrawValidatorCommissionTypeUrl = + '/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission'; +export const MsgFundCommunityPoolTypeUrl = '/cosmos.distribution.v1beta1.MsgFundCommunityPool'; +export const MsgSettleTypeUrl = '/greenfield.virtualgroup.MsgSettle'; diff --git a/packages/chain-sdk/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts b/packages/chain-sdk/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts new file mode 100644 index 00000000..720baae9 --- /dev/null +++ b/packages/chain-sdk/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts @@ -0,0 +1,26 @@ +export const MsgFundCommunityPoolTypeUrlSDKTypeEIP712 = { + Msg1: [ + { + name: 'amount', + type: 'TypeMsg1Amount[]', + }, + { + name: 'depositor', + type: 'string', + }, + { + name: 'type', + type: 'string', + }, + ], + TypeMsg1Amount: [ + { + name: 'amount', + type: 'string', + }, + { + name: 'denom', + type: 'string', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts b/packages/chain-sdk/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts new file mode 100644 index 00000000..130d62aa --- /dev/null +++ b/packages/chain-sdk/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts @@ -0,0 +1,16 @@ +export const MsgSetWithdrawAddressSDKTypeEIP712 = { + Msg1: [ + { + name: 'delegator_address', + type: 'string', + }, + { + name: 'type', + type: 'string', + }, + { + name: 'withdraw_address', + type: 'string', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts b/packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts new file mode 100644 index 00000000..3f1b482c --- /dev/null +++ b/packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts @@ -0,0 +1,16 @@ +export const MsgWithdrawDelegatorRewardSDKTypeEIP712 = { + Msg1: [ + { + name: 'type', + type: 'string', + }, + { + name: 'delegator_address', + type: 'string', + }, + { + name: 'validator_address', + type: 'string', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts b/packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts new file mode 100644 index 00000000..bb36077d --- /dev/null +++ b/packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts @@ -0,0 +1,12 @@ +export const MsgWithdrawValidatorCommissionSDKTypeEIP712 = { + Msg1: [ + { + name: 'type', + type: 'string', + }, + { + name: 'validator_address', + type: 'string', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/cosmos/gov/MsgVote.ts b/packages/chain-sdk/src/messages/cosmos/gov/MsgVote.ts new file mode 100644 index 00000000..11d4c847 --- /dev/null +++ b/packages/chain-sdk/src/messages/cosmos/gov/MsgVote.ts @@ -0,0 +1,24 @@ +export const MsgVoteSDKTypeEIP712 = { + Msg1: [ + { + name: 'metadata', + type: 'string', + }, + { + name: 'option', + type: 'string', + }, + { + name: 'proposal_id', + type: 'uint64', + }, + { + name: 'type', + type: 'string', + }, + { + name: 'voter', + type: 'string', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/cosmos/staking/MsgCreateValidator.ts b/packages/chain-sdk/src/messages/cosmos/staking/MsgCreateValidator.ts new file mode 100644 index 00000000..15cf5994 --- /dev/null +++ b/packages/chain-sdk/src/messages/cosmos/staking/MsgCreateValidator.ts @@ -0,0 +1,112 @@ +export const MsgCreateValidatorSDKTypeEIP712 = { + Msg1: [ + { + name: 'bls_key', + type: 'string', + }, + { + name: 'bls_proof', + type: 'string', + }, + { + name: 'challenger_address', + type: 'string', + }, + { + name: 'commission', + type: 'TypeMsg1Commission', + }, + { + name: 'delegator_address', + type: 'string', + }, + { + name: 'description', + type: 'TypeMsg1Description', + }, + { + name: 'from', + type: 'string', + }, + { + name: 'min_self_delegation', + type: 'string', + }, + { + name: 'pubkey', + type: 'TypeAny', + }, + { + name: 'relayer_address', + type: 'string', + }, + { + name: 'type', + type: 'string', + }, + { + name: 'validator_address', + type: 'string', + }, + { + name: 'value', + type: 'TypeMsg1Value', + }, + ], + TypeMsg1Commission: [ + { + name: 'max_change_rate', + type: 'string', + }, + { + name: 'max_rate', + type: 'string', + }, + { + name: 'rate', + type: 'string', + }, + ], + TypeMsg1Description: [ + { + name: 'details', + type: 'string', + }, + { + name: 'identity', + type: 'string', + }, + { + name: 'moniker', + type: 'string', + }, + { + name: 'security_contact', + type: 'string', + }, + { + name: 'website', + type: 'string', + }, + ], + TypeMsg1Value: [ + { + name: 'amount', + type: 'string', + }, + { + name: 'denom', + type: 'string', + }, + ], + TypeAny: [ + { + name: 'type', + type: 'string', + }, + { + name: 'value', + type: 'bytes', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/cosmos/staking/MsgEditValidator.ts b/packages/chain-sdk/src/messages/cosmos/staking/MsgEditValidator.ts new file mode 100644 index 00000000..1a523039 --- /dev/null +++ b/packages/chain-sdk/src/messages/cosmos/staking/MsgEditValidator.ts @@ -0,0 +1,62 @@ +export const MsgEditValidatorSDKTypeEIP712 = { + Msg1: [ + { + name: 'bls_key', + type: 'string', + }, + { + name: 'bls_proof', + type: 'string', + }, + { + name: 'challenger_address', + type: 'string', + }, + { + name: 'commission_rate', + type: 'string', + }, + { + name: 'description', + type: 'TypeMsg1Description', + }, + { + name: 'min_self_delegation', + type: 'string', + }, + { + name: 'relayer_address', + type: 'string', + }, + { + name: 'type', + type: 'string', + }, + { + name: 'validator_address', + type: 'string', + }, + ], + TypeMsg1Description: [ + { + name: 'details', + type: 'string', + }, + { + name: 'identity', + type: 'string', + }, + { + name: 'moniker', + type: 'string', + }, + { + name: 'security_contact', + type: 'string', + }, + { + name: 'website', + type: 'string', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts index 3b349fb0..146957f3 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts @@ -12,5 +12,19 @@ export const MsgDeletePolicySDKTypeEIP712 = { name: 'resource', type: 'string', }, + { + name: 'principal', + type: 'TypeMsg1Principal', + }, + ], + TypeMsg1Principal: [ + { + name: 'type', + type: 'string', + }, + { + name: 'value', + type: 'string', + }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts index e9b1a181..b08e31ff 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts @@ -1,4 +1,20 @@ -export const MsgPutPolicySDKTypeEIP712 = { +import type { EIP712Msg } from '@/messages/utils'; +import cloneDeep from 'lodash.clonedeep'; + +export const getMsgPutPolicySDKTypeEIP712 = (resource: string[]) => { + const res: EIP712Msg = cloneDeep(MsgPutPolicySDKTypeEIP712); + + if (resource.length !== 0) { + res.TypeMsg1Statements.push({ + name: 'resources', + type: 'string[]', + }); + } + + return res; +}; + +const MsgPutPolicySDKTypeEIP712 = { Msg1: [ { name: 'type', @@ -36,21 +52,21 @@ export const MsgPutPolicySDKTypeEIP712 = { }, ], TypeMsg1Statements: [ - { - name: 'effect', - type: 'string', - }, { name: 'actions', type: 'string[]', }, { - name: 'resources', - type: 'string[]', + name: 'effect', + type: 'string', }, { name: 'expiration_time', type: 'string', }, + // { + // name: 'resources', + // type: 'string[]', + // }, ], }; diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts index 50bcea61..054a1c8f 100644 --- a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts +++ b/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts @@ -1,3 +1,4 @@ +import type { EIP712Msg } from '@/messages/utils'; import { MsgGroupMember } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; import cloneDeep from 'lodash.clonedeep'; @@ -8,9 +9,7 @@ export const getMsgUpdateGroupMemberSDKTypeEIP712 = ({ membersToAdd: MsgGroupMember[]; membersToDelete: string[]; }) => { - const res: Record> = cloneDeep( - MsgUpdateGroupMemberSDKTypeEIP712, - ); + const res: EIP712Msg = cloneDeep(MsgUpdateGroupMemberSDKTypeEIP712); if (membersToAdd.length > 0) { res.Msg1.push({ diff --git a/packages/chain-sdk/src/messages/greenfield/virtualgroup/MsgSettle.ts b/packages/chain-sdk/src/messages/greenfield/virtualgroup/MsgSettle.ts new file mode 100644 index 00000000..2d2677e5 --- /dev/null +++ b/packages/chain-sdk/src/messages/greenfield/virtualgroup/MsgSettle.ts @@ -0,0 +1,20 @@ +export const MsgSettleSDKTypeEIP712 = { + Msg1: [ + { + name: 'global_virtual_group_family_id', + type: 'uint32', + }, + { + name: 'global_virtual_group_ids', + type: 'uint32[]', + }, + { + name: 'storage_provider', + type: 'string', + }, + { + name: 'type', + type: 'string', + }, + ], +}; diff --git a/packages/chain-sdk/src/messages/utils.ts b/packages/chain-sdk/src/messages/utils.ts index c6aa1d81..c55fe282 100644 --- a/packages/chain-sdk/src/messages/utils.ts +++ b/packages/chain-sdk/src/messages/utils.ts @@ -3,6 +3,8 @@ import mapValues from 'lodash.mapvalues'; import sortBy from 'lodash.sortby'; import { MetaTxInfo } from '..'; +export type EIP712Msg = Record>; + export const typeWrapper = (type: string, msg: object) => { return { ...msg, diff --git a/packages/chain-sdk/src/types/auth.ts b/packages/chain-sdk/src/types/auth.ts index 9fd7e016..a577d7c9 100644 --- a/packages/chain-sdk/src/types/auth.ts +++ b/packages/chain-sdk/src/types/auth.ts @@ -8,9 +8,10 @@ export interface ReqMeta { path: string; query: string; }; - date: string; - expiryTimestamp: string; + date: Date; + expiryTimestamp: Date; contentSHA256: string; unsignMsg: string; txnHash: string; + userAddress: string; } diff --git a/packages/chain-sdk/src/types/index.ts b/packages/chain-sdk/src/types/index.ts index a48ca381..c4a6e537 100644 --- a/packages/chain-sdk/src/types/index.ts +++ b/packages/chain-sdk/src/types/index.ts @@ -2,4 +2,4 @@ export * from './auth'; export * from './common'; export * from './storage'; export * from './tx'; -export * from './sp-xml'; +export * from './sp'; diff --git a/packages/chain-sdk/src/types/sp/BucketApproval.ts b/packages/chain-sdk/src/types/sp/BucketApproval.ts new file mode 100644 index 00000000..1ca043ba --- /dev/null +++ b/packages/chain-sdk/src/types/sp/BucketApproval.ts @@ -0,0 +1,27 @@ +import { VisibilityType } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; + +export type CreateBucketApprovalRequest = { + bucketName: string; + creator: string; + visibility: keyof typeof VisibilityType; + chargedReadQuota: string; + spInfo: { + primarySpAddress: string; + }; + duration?: number; + paymentAddress: string; +}; + +export interface CreateBucketApprovalResponse { + creator: string; + bucket_name: string; + visibility: keyof typeof VisibilityType; + payment_address: string; + primary_sp_address: string; + primary_sp_approval: { + expired_height: string; + sig: string; + global_virtual_group_family_id: number; + }; + charged_read_quota: string; +} diff --git a/packages/chain-sdk/src/types/sp/Common.ts b/packages/chain-sdk/src/types/sp/Common.ts new file mode 100644 index 00000000..a1436bb7 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/Common.ts @@ -0,0 +1,182 @@ +export type BucketMeta = { + BucketInfo: BucketInfo; + CreateTxHash: string; + DeleteAt: number; + DeleteReason: string; + Operator: string; + Removed: boolean; + UpdateAt: number; + UpdateTime: number; + UpdateTxHash: string; +}; + +export type GlobalVirtualGroupFamily = { + Id: number; + PrimarySpId: number; + GlobalVirtualGroupIds: number[]; + VirtualPaymentAddress: string; +}; + +export interface BucketMetaWithVGF extends BucketMeta { + Vgf: GlobalVirtualGroupFamily; +} + +export function formatVGF(vgf: GlobalVirtualGroupFamily): GlobalVirtualGroupFamily { + return { + ...vgf, + Id: Number(vgf.Id), + PrimarySpId: Number(vgf.PrimarySpId), + // GlobalVirtualGroupIds: vgf.GlobalVirtualGroupIds.map((id) => Number(id)), + }; +} + +export interface BucketInfo { + // PrimarySpId: number; + BucketName: string; + BucketStatus: number; + ChargedReadQuota: number; + CreateAt: number; + GlobalVirtualGroupFamilyId: number; + Id: string; + Owner: string; + PaymentAddress: string; + SourceType: number; + Visibility: number; +} + +export interface StreamRecord { + Account: string; + CrudTimestamp: string; + NetflowRate: string; + StaticBalance: string; + BufferBalance: string; + LockBalance: string; + Status: string; + SettleTimestamp: string; + OutFlowCount: string; + FrozenNetflowRate: string; +} + +export interface ObjectMeta { + ObjectInfo: ObjectInfo; + LockedBalance: string; + Removed: boolean; + UpdateAt: number; + DeleteAt: number; + DeleteReason: string; + Operator: string; + CreateTxHash: string; + UpdateTxHash: string; + SealTxHash: string; +} + +export interface ObjectInfo { + BucketName: string; + Checksums: string[]; + ContentType: string; + CreateAt: number; + Creator: string; + Id: number; + LocalVirtualGroupId: number; + ObjectName: string; + ObjectStatus: number; + Owner: string; + PayloadSize: number; + RedundancyType: number; + SourceType: number; + Visibility: number; +} + +export function formatBucketInfo(o: BucketInfo) { + return { + ...o, + // PrimarySpId: Number(item.BucketInfo.PrimarySpId), + BucketStatus: Number(o.BucketStatus), + ChargedReadQuota: Number(o.ChargedReadQuota), + CreateAt: Number(o.CreateAt), + GlobalVirtualGroupFamilyId: Number(o.GlobalVirtualGroupFamilyId), + SourceType: Number(o.SourceType), + Visibility: Number(o.Visibility), + }; +} + +export function formatObjectInfo(o: ObjectInfo) { + return { + ...o, + CreateAt: Number(o.CreateAt), + Id: Number(o.Id), + LocalVirtualGroupId: Number(o.LocalVirtualGroupId), + ObjectStatus: Number(o.ObjectStatus), + PayloadSize: Number(o.PayloadSize), + RedundancyType: Number(o.RedundancyType), + SourceType: Number(o.SourceType), + Visibility: Number(o.Visibility), + }; +} + +export function convertStrToBool(str: string) { + return String(str).toLowerCase() === 'true'; +} + +export interface ReadRecord { + ObjectName: string; + ObjectID: string; + ReadAccountAddress: string; + ReadTimestampUs: number; + ReadSize: number; +} + +export function formatReadRecord(o: ReadRecord) { + return { + ...o, + ReadTimestampUs: Number(o.ReadTimestampUs), + ReadSize: Number(o.ReadSize), + }; +} + +export interface GroupInfo { + Owner: string; + GroupName: string; + SourceType: number; + Id: number; + Extra: string; +} + +export function formatGroupInfo(o: GroupInfo) { + return { + ...o, + SourceType: Number(o.SourceType), + Id: Number(o.Id), + }; +} + +export interface PolicyMeta { + /** + * principal_type defines the type of principal + */ + PrincipalType: number; + /** + * principal_value defines the value of principal + */ + PrincipalValue: string; + /** + * resource_type defines the type of resource that grants permission for + */ + ResourceType: number; + /** + * resource_id defines the bucket/object/group id of the resource that grants permission for + */ + ResourceId: string; + /** + * create_timestamp defines the create time of permission + */ + CreateTimestamp: number; + /** + * update_timestamp defines the update time of permission + */ + UpdateTimestamp: number; + /** + * expiration_time defines the expiration time of permission + */ + ExpirationTime: number; +} diff --git a/packages/chain-sdk/src/types/sp/ErrorResponse.ts b/packages/chain-sdk/src/types/sp/ErrorResponse.ts new file mode 100644 index 00000000..c9ebf94c --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ErrorResponse.ts @@ -0,0 +1,6 @@ +export interface RequestErrorResponse { + Error: { + Code: string; + Message: string; + }; +} diff --git a/packages/chain-sdk/src/types/sp/GetBucketMeta.ts b/packages/chain-sdk/src/types/sp/GetBucketMeta.ts new file mode 100644 index 00000000..f9e63ce1 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/GetBucketMeta.ts @@ -0,0 +1,15 @@ +import { BucketMeta, StreamRecord } from './Common'; + +export interface GetBucketMetaRequest { + bucketName: string; + endpoint?: string; +} + +export interface GetBucketMetaResponse { + GfSpGetBucketMetaResponse: GfSPGetBucketMetaResponse; +} + +export interface GfSPGetBucketMetaResponse { + Bucket: BucketMeta; + StreamRecord: StreamRecord; +} diff --git a/packages/chain-sdk/src/types/sp/GetObject.ts b/packages/chain-sdk/src/types/sp/GetObject.ts new file mode 100644 index 00000000..5aab4805 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/GetObject.ts @@ -0,0 +1,6 @@ +export type GetObjectRequest = { + bucketName: string; + objectName: string; + duration?: number; + endpoint?: string; +}; diff --git a/packages/chain-sdk/src/types/sp/GetObjectMeta.ts b/packages/chain-sdk/src/types/sp/GetObjectMeta.ts new file mode 100644 index 00000000..5c6d215d --- /dev/null +++ b/packages/chain-sdk/src/types/sp/GetObjectMeta.ts @@ -0,0 +1,15 @@ +import { ObjectMeta } from './Common'; + +export interface GetObjectMetaRequest { + bucketName: string; + objectName: string; + endpoint: string; +} + +export interface GetObjectMetaResponse { + GfSpGetObjectMetaResponse: GfSPGetObjectMetaResponse; +} + +export interface GfSPGetObjectMetaResponse { + Object: ObjectMeta; +} diff --git a/packages/chain-sdk/src/types/sp/GetPreviewObject.ts b/packages/chain-sdk/src/types/sp/GetPreviewObject.ts new file mode 100644 index 00000000..58d1f862 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/GetPreviewObject.ts @@ -0,0 +1,7 @@ +export type GetPrivewObject = { + bucketName: string; + objectName: string; + duration?: number; + queryMap: Record; + endpoint?: string; +}; diff --git a/packages/chain-sdk/src/types/sp/GetUserBuckets.ts b/packages/chain-sdk/src/types/sp/GetUserBuckets.ts new file mode 100644 index 00000000..548c4000 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/GetUserBuckets.ts @@ -0,0 +1,15 @@ +import { BucketMetaWithVGF } from './Common'; + +export type GetUserBucketsRequest = { + address: string; + duration?: number; + endpoint: string; +}; + +export interface GetUserBucketsResponse { + GfSpGetUserBucketsResponse: GfSPGetUserBucketsResponse; +} + +export interface GfSPGetUserBucketsResponse { + Buckets: BucketMetaWithVGF[]; +} diff --git a/packages/chain-sdk/src/types/sp/ListBucketReadRecord.ts b/packages/chain-sdk/src/types/sp/ListBucketReadRecord.ts new file mode 100644 index 00000000..4d49a22d --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ListBucketReadRecord.ts @@ -0,0 +1,18 @@ +import { ReadRecord } from './Common'; + +export type ListBucketReadRecordRequest = { + bucketName: string; + endpoint?: string; + maxRecords: number; + startTimeStamp: number; + endTimeStamp: number; +}; + +export interface ListBucketReadRecordResponse { + GetBucketReadQuotaResult: GetBucketReadQuotaResult; +} + +export interface GetBucketReadQuotaResult { + NextStartTimestampUs: string; + ReadRecords: ReadRecord[]; +} diff --git a/packages/chain-sdk/src/types/sp/ListBucketsByIDs.ts b/packages/chain-sdk/src/types/sp/ListBucketsByIDs.ts new file mode 100644 index 00000000..d8df1d85 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ListBucketsByIDs.ts @@ -0,0 +1,28 @@ +import { BucketInfo } from './Common'; + +export type ListBucketsByIDsRequest = { + ids: string[]; +}; + +export interface ListBucketsByIDsResponse { + GfSpListBucketsByIDsResponse: GfSpListBucketsByIDsResponse; +} + +export interface GfSpListBucketsByIDsResponse { + BucketEntry: BucketEntry[]; +} + +export interface BucketEntry { + Id: number; + Value: { + BucketInfo: BucketInfo; + Removed: boolean; + DeleteAt: number; + DeleteReason: string; + Operator: string; + CreateTxHash: string; + UpdateTxHash: string; + UpdateAt: number; + UpdateTime: number; + }; +} diff --git a/packages/chain-sdk/src/types/sp/ListBucketsByPaymentAccount.ts b/packages/chain-sdk/src/types/sp/ListBucketsByPaymentAccount.ts new file mode 100644 index 00000000..38379dcd --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ListBucketsByPaymentAccount.ts @@ -0,0 +1,14 @@ +import { BucketMeta } from './Common'; + +export type ListBucketsByPaymentAccountRequest = { + paymentAccount: string; + endpoint?: string; +}; + +export interface ListBucketsByPaymentAccountResponse { + GfSpListPaymentAccountStreamsResponse: GfSPListPaymentAccountStreamsResponse; +} + +export interface GfSPListPaymentAccountStreamsResponse { + Buckets: BucketMeta[]; +} diff --git a/packages/chain-sdk/src/types/sp/ListGroups.ts b/packages/chain-sdk/src/types/sp/ListGroups.ts new file mode 100644 index 00000000..58810500 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ListGroups.ts @@ -0,0 +1,29 @@ +import { SourceType } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; +import { GroupInfo } from './Common'; + +export type ListGroupsResquest = { + name: string; + prefix: string; + sourceType?: keyof typeof SourceType; + limit?: number; + offset?: number; +}; + +export interface ListGroupsResponse { + GfSpGetGroupListResponse: GfSpGetGroupListResponse; +} + +interface Group { + Group: GroupInfo; + Operator: string; + CreateAt: number; + CreateTime: number; + UpdateAt: number; + UpdateTime: number; + Removed: boolean; +} + +export interface GfSpGetGroupListResponse { + Groups: Group[]; + Count: number; +} diff --git a/packages/chain-sdk/src/types/sp/ListGroupsMembers.ts b/packages/chain-sdk/src/types/sp/ListGroupsMembers.ts new file mode 100644 index 00000000..2445df08 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ListGroupsMembers.ts @@ -0,0 +1,27 @@ +import { GroupInfo } from './Common'; + +export type ListGroupsMembersRequest = { + groupId: number; + limit?: number; + startAfter?: string; +}; + +export interface ListGroupsMembersResponse { + GfSpGetGroupMembersResponse: GfSpGetGroupMembersResponse; +} + +export interface GfSpGetGroupMembersResponse { + Groups: Group[]; +} + +interface Group { + Group: GroupInfo; + AccountId: string; + Operator: string; + CreateAt: number; + CreateTime: number; + UpdateAt: number; + UpdateTime: number; + Removed: boolean; + ExpirationTime: string; +} diff --git a/packages/chain-sdk/src/types/sp/ListObjectPolicies.ts b/packages/chain-sdk/src/types/sp/ListObjectPolicies.ts new file mode 100644 index 00000000..e2683514 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ListObjectPolicies.ts @@ -0,0 +1,19 @@ +import { ActionType } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; +import { PolicyMeta } from './Common'; + +export type GetListObjectPoliciesRequest = { + endpoint?: string; + bucketName: string; + objectName: string; + actionType: keyof typeof ActionType; + limit?: number; + startAfter?: string; +}; + +export type GetListObjectPoliciesResponse = { + GfSpListObjectPoliciesResponse: GfSpListObjectPoliciesResponse; +}; + +export interface GfSpListObjectPoliciesResponse { + Policies: PolicyMeta[]; +} diff --git a/packages/chain-sdk/src/types/sp/ListObjectsByBucketName.ts b/packages/chain-sdk/src/types/sp/ListObjectsByBucketName.ts new file mode 100644 index 00000000..b704a4a2 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ListObjectsByBucketName.ts @@ -0,0 +1,26 @@ +import { ObjectMeta } from './Common'; + +export type ListObjectsByBucketNameRequest = { + bucketName: string; + duration?: number; + endpoint: string; + protocol?: string; + query?: URLSearchParams; +}; + +export interface ListObjectsByBucketNameResponse { + GfSpListObjectsByBucketNameResponse: GfSPListObjectsByBucketNameResponse; +} + +export interface GfSPListObjectsByBucketNameResponse { + Objects: ObjectMeta[]; + KeyCount: string; + MaxKeys: string; + IsTruncated: boolean; + NextContinuationToken: string; + Name: string; + Prefix: string; + Delimiter: string; + CommonPrefixes: string[]; + ContinuationToken: string; +} diff --git a/packages/chain-sdk/src/types/sp/ListObjectsByIDs.ts b/packages/chain-sdk/src/types/sp/ListObjectsByIDs.ts new file mode 100644 index 00000000..4d36b063 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ListObjectsByIDs.ts @@ -0,0 +1,29 @@ +import { ObjectInfo } from './Common'; + +export type ListObjectsByIDsRequest = { + ids: string[]; +}; + +export interface ListObjectsByIDsResponse { + GfSpListObjectsByIDsResponse: GfSpListObjectsByIDsResponse; +} + +export interface GfSpListObjectsByIDsResponse { + ObjectEntry: ObjectEntry[]; +} + +export interface ObjectEntry { + Id: number; + Value: { + ObjectInfo: ObjectInfo; + LockedBalance: string; + Removed: boolean; + UpdateAt: number; + DeleteAt: number; + DeleteReason: string; + Operator: string; + CreateTxHash: string; + UpdateTxHash: string; + SealTxHash: string; + }; +} diff --git a/packages/chain-sdk/src/types/sp/ListUserGroups.ts b/packages/chain-sdk/src/types/sp/ListUserGroups.ts new file mode 100644 index 00000000..450b3ebd --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ListUserGroups.ts @@ -0,0 +1,27 @@ +import { GroupInfo } from './Common'; + +export type ListUserGroupsResquest = { + address: string; + limit?: number; + startAfter?: string; +}; + +export interface ListUserGroupsResponse { + GfSpGetUserGroupsResponse: GfSpGetUserGroupsResponse; +} + +export interface GfSpGetUserGroupsResponse { + Groups: Group[]; +} + +interface Group { + Group: GroupInfo; + AccountId: string; + Operator: string; + CreateAt: number; + CreateTime: number; + UpdateAt: number; + UpdateTime: number; + Removed: boolean; + ExpirationTime: string; +} diff --git a/packages/chain-sdk/src/types/sp/ListUserOwnedGroups.ts b/packages/chain-sdk/src/types/sp/ListUserOwnedGroups.ts new file mode 100644 index 00000000..b1c3eedd --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ListUserOwnedGroups.ts @@ -0,0 +1,27 @@ +import { GroupInfo } from './Common'; + +export type ListUserOwnedGroupsRequest = { + address: string; + limit?: number; + startAfter?: string; +}; + +export interface ListUserOwnedGroupsResponse { + GfSpGetUserOwnedGroupsResponse: GfSpGetUserOwnedGroupsResponse; +} + +export interface GfSpGetUserOwnedGroupsResponse { + Groups: Group[]; +} + +interface Group { + Group: GroupInfo; + AccountId: string; + Operator: string; + CreateAt: number; + CreateTime: number; + UpdateAt: number; + UpdateTime: number; + Removed: boolean; + ExpirationTime: string; +} diff --git a/packages/chain-sdk/src/types/sp/ListUserPaymentAccounts.ts b/packages/chain-sdk/src/types/sp/ListUserPaymentAccounts.ts new file mode 100644 index 00000000..7a82184d --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ListUserPaymentAccounts.ts @@ -0,0 +1,18 @@ +import { StreamRecord } from './Common'; + +export type ListUserPaymentAccountsResquest = { + account: string; +}; + +export type ListUserPaymentAccountsResponse = { + GfSpListUserPaymentAccountsResponse: GfSPListUserPaymentAccountsResponse; +}; + +export interface GfSPListUserPaymentAccountsResponse { + StreamRecords: StreamRecords[]; +} + +export interface StreamRecords { + StreamRecord: StreamRecord; + Refundable: string; +} diff --git a/packages/chain-sdk/src/types/sp/MigrateBucket.ts b/packages/chain-sdk/src/types/sp/MigrateBucket.ts new file mode 100644 index 00000000..1f6507b6 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/MigrateBucket.ts @@ -0,0 +1,16 @@ +import { MsgMigrateBucket } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/tx'; + +export type MigrateBucketApprovalRequest = Omit & { + endpoint?: string; +}; + +export type MigrateBucketApprovalResponse = { + operator: string; + bucket_name: string; + dst_primary_sp_id: number; + dst_primary_sp_approval: { + expired_height: string; + sig: string; + global_virtual_group_family_id: number; + }; +}; diff --git a/packages/chain-sdk/src/types/sp/ObjectApproval.ts b/packages/chain-sdk/src/types/sp/ObjectApproval.ts new file mode 100644 index 00000000..da504c2c --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ObjectApproval.ts @@ -0,0 +1,35 @@ +import { + RedundancyType, + VisibilityType, +} from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; + +export type CreateObjectApprovalRequest = { + bucketName: string; + objectName: string; + creator: string; + visibility?: keyof typeof VisibilityType; + fileType: string; + redundancyType?: keyof typeof RedundancyType; + duration?: number; + contentLength: number; + expectCheckSums: string[]; + endpoint?: string; +}; + +export type CreateObjectApprovalResponse = { + creator: string; + bucket_name: string; + object_name: string; + payload_size: string; + visibility: keyof typeof VisibilityType; + content_type: string; + primary_sp_approval: { + expired_height: string; + sig: string | null; + global_virtual_group_family_id: number; + }; + expect_checksums: string[]; + // expect_secondary_sp_addresses: string[]; + redundancy_type: keyof typeof RedundancyType; + // charged_read_quota: string; +}; diff --git a/packages/chain-sdk/src/types/sp/PutObject.ts b/packages/chain-sdk/src/types/sp/PutObject.ts new file mode 100644 index 00000000..c1fa9cb0 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/PutObject.ts @@ -0,0 +1,8 @@ +export type PutObjectRequest = { + bucketName: string; + objectName: string; + txnHash: string; + body: File; + duration?: number; + endpoint?: string; +}; diff --git a/packages/chain-sdk/src/types/sp/ReadQuota.ts b/packages/chain-sdk/src/types/sp/ReadQuota.ts new file mode 100644 index 00000000..4ec4e50e --- /dev/null +++ b/packages/chain-sdk/src/types/sp/ReadQuota.ts @@ -0,0 +1,25 @@ +export type ReadQuotaRequest = { + bucketName: string; + endpoint?: string; + duration?: number; + year?: number; + month?: number; +}; + +export interface ReadQuotaResponse { + GetReadQuotaResult: { + BucketName: string; + BucketID: string; + ReadQuotaSize: number; + SPFreeReadQuotaSize: number; + ReadConsumedSize: number; + FreeConsumedSize: number; + }; +} + +export interface IQuotaProps { + readQuota: number; + freeQuota: number; + consumedQuota: number; + freeConsumedSize: number; +} diff --git a/packages/chain-sdk/src/types/sp/RequestNonce.ts b/packages/chain-sdk/src/types/sp/RequestNonce.ts new file mode 100644 index 00000000..11ae9e79 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/RequestNonce.ts @@ -0,0 +1,16 @@ +export interface RequestNonceRequest { + spEndpoint: string; + spAddress: string; + address: string; + domain: string; + spName?: string; +} + +export interface RequestNonceResponse { + RequestNonceResp: { + CurrentNonce: number; + CurrentPublicKey: string; + ExpiryDate: string; + NextNonce: number; + }; +} diff --git a/packages/chain-sdk/src/types/sp/SuccessResponse.ts b/packages/chain-sdk/src/types/sp/SuccessResponse.ts new file mode 100644 index 00000000..993fad9f --- /dev/null +++ b/packages/chain-sdk/src/types/sp/SuccessResponse.ts @@ -0,0 +1,8 @@ +export type SpResponse = { + code: number | string; + xml?: Document; + message?: string; + statusCode?: number; + body?: T; + signedMsg?: object; +}; diff --git a/packages/chain-sdk/src/types/sp/VerifyPermission.ts b/packages/chain-sdk/src/types/sp/VerifyPermission.ts new file mode 100644 index 00000000..1249598f --- /dev/null +++ b/packages/chain-sdk/src/types/sp/VerifyPermission.ts @@ -0,0 +1,16 @@ +import { ActionType } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; + +export type VerifyPermissionRequest = { + operator: string; + bucketName: string; + objectName?: string; + action: keyof typeof ActionType; +}; + +export interface VerifyPermissionResponse { + QueryVerifyPermissionResponse: QueryVerifyPermissionResponse; +} + +export interface QueryVerifyPermissionResponse { + Effect: number; +} diff --git a/packages/chain-sdk/src/types/sp/index.ts b/packages/chain-sdk/src/types/sp/index.ts new file mode 100644 index 00000000..cea87ef0 --- /dev/null +++ b/packages/chain-sdk/src/types/sp/index.ts @@ -0,0 +1,24 @@ +export * from './BucketApproval'; +export * from './ErrorResponse'; +export * from './GetBucketMeta'; +export * from './GetObject'; +export * from './GetObjectMeta'; +export * from './GetPreviewObject'; +export * from './GetUserBuckets'; +export * from './ListBucketReadRecord'; +export * from './ListBucketsByIDs'; +export * from './ListBucketsByPaymentAccount'; +export * from './ListGroups'; +export * from './ListGroupsMembers'; +export * from './ListObjectPolicies'; +export * from './ListObjectsByBucketName'; +export * from './ListObjectsByIDs'; +export * from './ListUserGroups'; +export * from './ListUserOwnedGroups'; +export * from './MigrateBucket'; +export * from './ObjectApproval'; +export * from './PutObject'; +export * from './ReadQuota'; +export * from './RequestNonce'; +export * from './SuccessResponse'; +export * from './VerifyPermission'; diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/chain-sdk/src/types/storage.ts index ce8b83d1..dd4285ab 100644 --- a/packages/chain-sdk/src/types/storage.ts +++ b/packages/chain-sdk/src/types/storage.ts @@ -1,175 +1,3 @@ -import { ActionType } from '@bnb-chain/greenfield-cosmos-types/greenfield/permission/common'; -import { - RedundancyType, - SourceType, - VisibilityType, -} from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/common'; - -export interface IBaseGetCreateBucket { - bucketName: string; - creator: string; - visibility: keyof typeof VisibilityType; - chargedReadQuota: string; - spInfo: { - primarySpAddress: string; - }; - duration?: number; - paymentAddress: string; -} - -export interface ISpInfo { - id: number; - endpoint: string; - primarySpAddress?: string; - sealAddress: string; - secondarySpAddresses: string[]; -} - -export interface IObjectResultType { - code: number | string; - xml?: Document; - message?: string; - statusCode?: number; - body?: T; - signedMsg?: object; -} - -export interface ICreateBucketMsgType { - creator: string; - bucket_name: string; - visibility: keyof typeof VisibilityType; - payment_address: string; - primary_sp_address: string; - primary_sp_approval: { - expired_height: string; - sig: string; - global_virtual_group_family_id: number; - }; - charged_read_quota: string; -} - -export type TGetUserBuckets = { - address: string; - duration?: number; - endpoint: string; -}; - -export type BucketProps = { - bucket_info: { - bucket_name: string; - bucket_status: number; - charged_read_quota: string; - create_at: string; - global_virtual_group_family_id: number; - id: string; - owner: string; - payment_address: string; - primary_sp_id: number; - source_type: string; - visibility: number; - }; - create_tx_hash: string; - delete_at: string; - delete_reason: string; - operator: string; - removed: boolean; - update_at: string; - update_time: string; - update_tx_hash: string; -}; - -export type TBaseGetBucketReadQuota = { - bucketName: string; - endpoint?: string; - duration?: number; - year?: number; - month?: number; -}; - -export interface IQuotaProps { - readQuota: number; - freeQuota: number; - consumedQuota: number; - freeConsumedSize: number; -} - -export type TBaseGetCreateObject = { - bucketName: string; - objectName: string; - creator: string; - visibility?: keyof typeof VisibilityType; - fileType: string; - redundancyType?: keyof typeof RedundancyType; - duration?: number; - contentLength: number; - expectCheckSums: string[]; - endpoint?: string; -}; - -export interface ICreateObjectMsgType { - creator: string; - bucket_name: string; - object_name: string; - payload_size: string; - visibility: keyof typeof VisibilityType; - content_type: string; - primary_sp_approval: { - expired_height: string; - sig: string | null; - global_virtual_group_family_id: number; - }; - expect_checksums: string[]; - // expect_secondary_sp_addresses: string[]; - redundancy_type: keyof typeof RedundancyType; - // charged_read_quota: string; -} - -export type TBasePutObject = { - bucketName: string; - objectName: string; - txnHash: string; - body: File; - duration?: number; - endpoint?: string; -}; - -export type TBaseGetObject = { - bucketName: string; - objectName: string; - duration?: number; - endpoint?: string; -}; - -export type TBaseGetPrivewObject = { - bucketName: string; - objectName: string; - duration?: number; - queryMap: Record; - endpoint?: string; -}; - -export type TListObjects = { - bucketName: string; - duration?: number; - endpoint: string; - protocol?: string; - query?: URLSearchParams; -}; - -export type TDownloadFile = { - bucketName: string; - endpoint: string; - duration?: number; - year?: number; - month?: number; -}; - -export interface IGetObjectStaus { - bucketName: string; - objectName: string; - endpoint: string; -} - export interface IBaseUser { address: string; domain: string; @@ -181,12 +9,6 @@ export interface ISp { nonce?: number; } -export interface IFetchNonce extends IBaseUser { - spEndpoint: string; - spAddress: string; - spName?: string; -} - export interface IFetchNonces extends IBaseUser { sps: ISp[]; } @@ -248,63 +70,3 @@ export interface TGetCurrentSeedStringParams { chainId: number; provider: any; } - -export interface IMigrateBucketMsgType { - operator: string; - bucket_name: string; - dst_primary_sp_id: number; - dst_primary_sp_approval: { - expired_height: string; - sig: string; - global_virtual_group_family_id: number; - }; -} - -export type TListBucketReadRecord = { - bucketName: string; - endpoint?: string; - maxRecords: number; - startTimeStamp: number; - endTimeStamp: number; -}; - -export type TListGroups = { - name: string; - prefix: string; - sourceType?: keyof typeof SourceType; - limit?: number; - offset?: number; -}; - -export type TListObjectsByIDsRequest = { - ids: string[]; -}; - -export type TListBucketsByIDsRequest = { - ids: string[]; -}; - -export type TVerifyPermissionRequest = { - operator: string; - bucketName: string; - objectName?: string; - action: keyof typeof ActionType; -}; - -export type TListGroupsMembersRequest = { - groupId: number; - limit?: number; - startAfter?: string; -}; - -export type TListUserGroupRequest = { - address: string; - limit?: number; - startAfter?: string; -}; - -export type TListUserOwnedGroupRequest = { - address: string; - limit?: number; - startAfter?: string; -}; diff --git a/packages/chain-sdk/src/types/tx.ts b/packages/chain-sdk/src/types/tx.ts index a056c6b6..17336079 100644 --- a/packages/chain-sdk/src/types/tx.ts +++ b/packages/chain-sdk/src/types/tx.ts @@ -44,3 +44,22 @@ export type TxResponse = { broadcast: (opts: Readonly) => Promise; metaTxInfo: MetaTxInfo; }; + +export type CustomTx = { + /** + * account + */ + address: string; + /** + * txRaw infomation (hex string) + */ + txRawHex: string; + /** + * EIP712 structure + */ + eip712MsgType: object; + /** + * tx message + */ + msgData: object; +}; diff --git a/packages/chain-sdk/src/tests/.env.simple.ts b/packages/chain-sdk/tests/.env.example.ts similarity index 100% rename from packages/chain-sdk/src/tests/.env.simple.ts rename to packages/chain-sdk/tests/.env.example.ts diff --git a/packages/chain-sdk/src/tests/account.spec.ts b/packages/chain-sdk/tests/account.spec.ts similarity index 78% rename from packages/chain-sdk/src/tests/account.spec.ts rename to packages/chain-sdk/tests/account.spec.ts index 6f3112c5..5f0d670a 100644 --- a/packages/chain-sdk/src/tests/account.spec.ts +++ b/packages/chain-sdk/tests/account.spec.ts @@ -25,16 +25,6 @@ describe('accountQuery', () => { }); }); - describe('getPaymentAccount', () => { - test('it works', async () => { - const res = await client.account.getPaymentAccount({ - addr: ACCOUNT.address, - }); - - expect(res).not.toBeNull(); - }); - }); - describe('getModuleAccounts', () => { test('it works', async () => { const res = await client.account.getModuleAccounts(); diff --git a/packages/chain-sdk/src/tests/config.spec.ts b/packages/chain-sdk/tests/config.spec.ts similarity index 94% rename from packages/chain-sdk/src/tests/config.spec.ts rename to packages/chain-sdk/tests/config.spec.ts index fca62505..4646ce51 100644 --- a/packages/chain-sdk/src/tests/config.spec.ts +++ b/packages/chain-sdk/tests/config.spec.ts @@ -1,5 +1,5 @@ -import { Client } from '..'; -import { ISimulateGasFee } from '../types'; +import { Client } from '../src'; +import { ISimulateGasFee } from '../src/types'; import { ACCOUNT_ADDRESS, ACCOUNT_PRIVATEKEY, GREENFIELD_CHAIN_ID, GRPC_URL } from './.env'; export const client = Client.create(GRPC_URL, GREENFIELD_CHAIN_ID); diff --git a/packages/chain-sdk/src/tests/parsexml.spec.ts b/packages/chain-sdk/tests/parsexml.spec.ts similarity index 98% rename from packages/chain-sdk/src/tests/parsexml.spec.ts rename to packages/chain-sdk/tests/parsexml.spec.ts index f0e3fb07..1d8d1775 100644 --- a/packages/chain-sdk/src/tests/parsexml.spec.ts +++ b/packages/chain-sdk/tests/parsexml.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { parseListObjectsByBucketNameResponse } from '../clients/spclient/spApis/listObjectsByBucket'; -import { parseGetUserBucketsResponse } from '../clients/spclient/spApis/getUserBuckets'; +import { parseListObjectsByBucketNameResponse } from '../src/clients/spclient/spApis/listObjectsByBucket'; +import { parseGetUserBucketsResponse } from '../src/clients/spclient/spApis/getUserBuckets'; describe('parseListObjectsByBucketNameResponse', () => { test('parse CommonPrefixes contains 2 element at least', async () => { diff --git a/packages/chain-sdk/src/tests/policy.spec.ts b/packages/chain-sdk/tests/policy.spec.ts similarity index 98% rename from packages/chain-sdk/src/tests/policy.spec.ts rename to packages/chain-sdk/tests/policy.spec.ts index e21f1097..63b71444 100644 --- a/packages/chain-sdk/src/tests/policy.spec.ts +++ b/packages/chain-sdk/tests/policy.spec.ts @@ -16,7 +16,6 @@ describe('groupTx', () => { creator: ACCOUNT.address, extra: EXTRA, groupName: GROUP_NAME, - members: [ACCOUNT.address], }); const simulateInfo = await createGroupTx.simulate({ diff --git a/packages/chain-sdk/src/tests/query.spec.ts b/packages/chain-sdk/tests/query.spec.ts similarity index 100% rename from packages/chain-sdk/src/tests/query.spec.ts rename to packages/chain-sdk/tests/query.spec.ts diff --git a/packages/chain-sdk/src/tests/storage.spec.ts b/packages/chain-sdk/tests/storage.spec.ts similarity index 73% rename from packages/chain-sdk/src/tests/storage.spec.ts rename to packages/chain-sdk/tests/storage.spec.ts index a2988df0..8842e275 100644 --- a/packages/chain-sdk/src/tests/storage.spec.ts +++ b/packages/chain-sdk/tests/storage.spec.ts @@ -15,14 +15,22 @@ describe('storageTx', () => { test('create bucket', async () => { const spInfo = await selectSp(); - const createBucketTx = await client.bucket.createBucket({ - bucketName: BUCKET_NAME, - creator: ACCOUNT.address, - visibility: 'VISIBILITY_TYPE_PUBLIC_READ', - chargedReadQuota: '0', - spInfo, - signType: 'authTypeV2', - }); + const createBucketTx = await client.bucket.createBucket( + { + bucketName: BUCKET_NAME, + creator: ACCOUNT.address, + visibility: 'VISIBILITY_TYPE_PUBLIC_READ', + chargedReadQuota: '0', + spInfo: { + primarySpAddress: spInfo.primarySpAddress, + }, + paymentAddress: ACCOUNT.address, + }, + { + type: 'ECDSA', + privateKey: ACCOUNT.privateKey, + }, + ); const simulateInfo = await createBucketTx.simulate({ denom: 'BNB', @@ -56,25 +64,28 @@ describe('storageTx', () => { console.log('object name', OBJECT_NAME); test('create Object', async () => { - const spInfo = await selectSp(); - const createObjectTx = await client.object.createObject({ - bucketName: BUCKET_NAME, - objectName: OBJECT_NAME, - spInfo, - contentLength: 0, - fileType: 'text/plain', - expectCheckSums: [ - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', - ], - creator: ACCOUNT.address, - signType: 'authTypeV2', - }); + const createObjectTx = await client.object.createObject( + { + bucketName: BUCKET_NAME, + objectName: OBJECT_NAME, + contentLength: 0, + fileType: 'text/plain', + expectCheckSums: [ + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=', + ], + creator: ACCOUNT.address, + }, + { + type: 'ECDSA', + privateKey: ACCOUNT.privateKey, + }, + ); const simulateInfo = await createObjectTx.simulate({ denom: 'BNB', diff --git a/packages/chain-sdk/src/tests/utils.spec.ts b/packages/chain-sdk/tests/utils.spec.ts similarity index 96% rename from packages/chain-sdk/src/tests/utils.spec.ts rename to packages/chain-sdk/tests/utils.spec.ts index 336db589..501ce822 100644 --- a/packages/chain-sdk/src/tests/utils.spec.ts +++ b/packages/chain-sdk/tests/utils.spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { encodePath } from '../clients/spclient/auth'; +import { encodePath } from '../src/clients/spclient/auth'; describe('encodePaths', () => { it('encode english chars', () => { diff --git a/packages/chain-sdk/src/tests/wallet.spec.ts b/packages/chain-sdk/tests/wallet.spec.ts similarity index 98% rename from packages/chain-sdk/src/tests/wallet.spec.ts rename to packages/chain-sdk/tests/wallet.spec.ts index e4f2aac3..42e3c488 100644 --- a/packages/chain-sdk/src/tests/wallet.spec.ts +++ b/packages/chain-sdk/tests/wallet.spec.ts @@ -119,7 +119,7 @@ async function makeTransferTx() { return await client.account.transfer({ amount: [ { - amount: '10', + amount: '1000000000000000', denom: 'BNB', }, ], diff --git a/packages/create-gnfd-app/CHANGELOG.md b/packages/create-gnfd-app/CHANGELOG.md new file mode 100644 index 00000000..17ca5eeb --- /dev/null +++ b/packages/create-gnfd-app/CHANGELOG.md @@ -0,0 +1,41 @@ +# @bnb-chain/create-gnfd-app + +## 0.0.2 + +### Patch Changes + +- [#336](https://github.com/bnb-chain/greenfield-js-sdk/pull/336) + [`ef99831`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ef99831b10254a002c08930600aa65242e52a530) + Thanks [@rrr523](https://github.com/rrr523)! - release create app + +- [#339](https://github.com/bnb-chain/greenfield-js-sdk/pull/339) + [`6aaf062`](https://github.com/bnb-chain/greenfield-js-sdk/commit/6aaf06274a6acb692f6c87d2fb4f819e98814f8b) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add vite template + +- [#334](https://github.com/bnb-chain/greenfield-js-sdk/pull/334) + [`03be217`](https://github.com/bnb-chain/greenfield-js-sdk/commit/03be21724f3c2b04145ff5925a41726edc381832) + Thanks [@rrr523](https://github.com/rrr523)! - feat: 🎉 Create App Commander + +## 0.0.2-alpha.2 + +### Patch Changes + +- [#339](https://github.com/bnb-chain/greenfield-js-sdk/pull/339) + [`6aaf062`](https://github.com/bnb-chain/greenfield-js-sdk/commit/6aaf06274a6acb692f6c87d2fb4f819e98814f8b) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Add vite template + +## 0.0.2-alpha.1 + +### Patch Changes + +- [#336](https://github.com/bnb-chain/greenfield-js-sdk/pull/336) + [`ef99831`](https://github.com/bnb-chain/greenfield-js-sdk/commit/ef99831b10254a002c08930600aa65242e52a530) + Thanks [@rrr523](https://github.com/rrr523)! - release create app + +## 0.0.2-alpha.0 + +### Patch Changes + +- [#334](https://github.com/bnb-chain/greenfield-js-sdk/pull/334) + [`03be217`](https://github.com/bnb-chain/greenfield-js-sdk/commit/03be21724f3c2b04145ff5925a41726edc381832) + Thanks [@rrr523](https://github.com/rrr523)! - feat: 🎉 Create App Commander diff --git a/packages/create-gnfd-app/README.md b/packages/create-gnfd-app/README.md new file mode 100644 index 00000000..70abce8f --- /dev/null +++ b/packages/create-gnfd-app/README.md @@ -0,0 +1,9 @@ +# Create Greemfielf App + +`create-gnfd-app` allows you to create a new Greenfield app within seconds. + +```bash +> npx @bnb-chain/create-gnfd-app +``` + +![](./example.gif) diff --git a/packages/create-gnfd-app/createApp.ts b/packages/create-gnfd-app/createApp.ts new file mode 100644 index 00000000..f280cda3 --- /dev/null +++ b/packages/create-gnfd-app/createApp.ts @@ -0,0 +1,58 @@ +import download from 'download-git-repo'; +import path from 'path'; +import { green } from 'picocolors'; +import { PackageManager } from './helpers/get-pkg-manager'; +import { installTemplate, TemplateType } from './helpers/install-template'; +import { isFolderEmpty } from './helpers/is-folder-empty'; +import { isWriteable, makeDir } from './helpers/is-writeable'; +import { failSpinner, startSpinner, succeedSpiner } from './helpers/spinner'; +import { TEMPLATES_MAP } from './templates'; + +export async function createApp({ + appPath, + packageManager, + template, +}: { + appPath: string; + packageManager: PackageManager; + template: TemplateType; +}) { + const root = path.resolve(appPath); + if (!(await isWriteable(path.dirname(root)))) { + /* eslint-disable-next-line no-console */ + console.error( + `The application path is not writable, please check folder permissions and try again. + It is likely you do not have write permissions for this folder. + `, + ); + process.exit(1); + } + + const appName = path.basename(root); + await makeDir(root); + if (!isFolderEmpty(root, appName)) { + process.exit(1); + } + + /* eslint-disable-next-line no-console */ + console.log(`Creating a new Greenfield app in ${green(appName)}.`); + process.chdir(root); + + startSpinner('downloading template...'); + download(TEMPLATES_MAP[template], '.', { clone: false }, (err) => { + if (err) { + failSpinner(err.message); + return; + } + + succeedSpiner(`download template - ${template} success`); + + return installTemplate({ + appName, + root, + packageManager, + }); + }).then(() => { + // ... + }); +} diff --git a/packages/create-gnfd-app/example.gif b/packages/create-gnfd-app/example.gif new file mode 100644 index 0000000000000000000000000000000000000000..217e10c3cb6147f4c30fbcbc04fdec31d9f6675e GIT binary patch literal 539184 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%0Di^I{j*0{$#<7kZ$K1PI!H>B=$*Js-5VpqD< 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
        5x~CDeXj31T*v%K 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

        C#t^RPE*C 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

        G>imvUR|I(N$gkug9s?p81;_ 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

        VNBKzOVjo`H3TS_G%a?;Xa*YYRc6f`C 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 { + return `https://github.com:rrr523/greenfield-${template}-template#master`; +}; diff --git a/packages/create-gnfd-app/helpers/install-template.ts b/packages/create-gnfd-app/helpers/install-template.ts new file mode 100644 index 00000000..a155e35e --- /dev/null +++ b/packages/create-gnfd-app/helpers/install-template.ts @@ -0,0 +1,58 @@ +import spawn from 'cross-spawn'; +import fs from 'fs'; +import { removeSync } from 'fs-extra'; +import handlebars from 'handlebars'; +import { cyan } from 'picocolors'; +import { PackageManager } from './get-pkg-manager'; +import { failSpinner, startSpinner, succeedSpiner } from './spinner'; + +export const SRC_DIR_NAMES = ['app', 'pages', 'styles']; + +export type TemplateType = 'nextjs' | 'cra' | 'vite'; +export type TemplateMode = 'js' | 'ts'; + +export const installTemplate = async ({ appName, root, packageManager }: InstallTemplateArgs) => { + /** + * Create a package.json for the new project and write it to disk. + */ + const packageJsonPath = `${root}/package.json`; + const packageJsonContent = fs.readFileSync(packageJsonPath, 'utf-8'); + const packageJsonResult = handlebars.compile(packageJsonContent)({ + name: appName, + }); + fs.writeFileSync(packageJsonPath, packageJsonResult); + + /** + * delete package-lock.json + */ + removeSync(`${root}/package-lock.json`); + + /** + * install dependencies + */ + startSpinner(cyan(`Installing dependencies with ${packageManager}...`)); + const child = spawn(packageManager, ['install'], { + // stdio: 'inherit', + // env: { + // ...process.env, + // ADBLOCK: '1', + // NODE_ENV: 'development', + // DISABLE_OPENCOLLECTIVE: '1', + // }, + }); + + child.on('close', (code) => { + if (code !== 0) { + failSpinner('Failed to install dependencies.'); + return; + } + + succeedSpiner('Install dependencies successfully.'); + }); +}; + +export interface InstallTemplateArgs { + appName: string; + root: string; + packageManager: PackageManager; +} diff --git a/packages/create-gnfd-app/helpers/is-folder-empty.ts b/packages/create-gnfd-app/helpers/is-folder-empty.ts new file mode 100644 index 00000000..9cea216b --- /dev/null +++ b/packages/create-gnfd-app/helpers/is-folder-empty.ts @@ -0,0 +1,58 @@ +/* eslint-disable no-console */ +import { green, blue } from 'picocolors'; +import fs from 'fs'; +import path from 'path'; + +export function isFolderEmpty(root: string, name: string): boolean { + const validFiles = [ + '.DS_Store', + '.git', + '.gitattributes', + '.gitignore', + '.gitlab-ci.yml', + '.hg', + '.hgcheck', + '.hgignore', + '.idea', + '.npmignore', + '.travis.yml', + 'LICENSE', + 'Thumbs.db', + 'docs', + 'mkdocs.yml', + 'npm-debug.log', + 'yarn-debug.log', + 'yarn-error.log', + 'yarnrc.yml', + '.yarn', + ]; + + const conflicts = fs + .readdirSync(root) + .filter((file) => !validFiles.includes(file)) + // Support IntelliJ IDEA-based editors + .filter((file) => !/\.iml$/.test(file)); + + if (conflicts.length > 0) { + console.log(`The directory ${green(name)} contains files that could conflict:`); + console.log(); + for (const file of conflicts) { + try { + const stats = fs.lstatSync(path.join(root, file)); + if (stats.isDirectory()) { + console.log(` ${blue(file)}/`); + } else { + console.log(` ${file}`); + } + } catch { + console.log(` ${file}`); + } + } + console.log(); + console.log('Either try using a new directory name, or remove the files listed above.'); + console.log(); + return false; + } + + return true; +} diff --git a/packages/create-gnfd-app/helpers/is-writeable.ts b/packages/create-gnfd-app/helpers/is-writeable.ts new file mode 100644 index 00000000..32481d1a --- /dev/null +++ b/packages/create-gnfd-app/helpers/is-writeable.ts @@ -0,0 +1,14 @@ +import fs from 'fs'; + +export async function isWriteable(directory: string): Promise { + try { + await fs.promises.access(directory, (fs.constants || fs).W_OK); + return true; + } catch (err) { + return false; + } +} + +export function makeDir(root: string, options = { recursive: true }): Promise { + return fs.promises.mkdir(root, options); +} diff --git a/packages/create-gnfd-app/helpers/spinner.ts b/packages/create-gnfd-app/helpers/spinner.ts new file mode 100644 index 00000000..7e789384 --- /dev/null +++ b/packages/create-gnfd-app/helpers/spinner.ts @@ -0,0 +1,20 @@ +import ora from 'ora'; +import { red } from 'picocolors'; + +const spinner = ora(); + +export const startSpinner = (text?: string) => { + const msg = `${text}...\n`; + spinner.start(msg); +}; + +export const succeedSpiner = (text?: string) => { + spinner.stopAndPersist({ + symbol: '🎉', + text: `${text}\n`, + }); +}; + +export const failSpinner = (text?: string) => { + spinner.fail(red(text)); +}; diff --git a/packages/create-gnfd-app/index.ts b/packages/create-gnfd-app/index.ts new file mode 100644 index 00000000..f827d6eb --- /dev/null +++ b/packages/create-gnfd-app/index.ts @@ -0,0 +1,94 @@ +import prompts from '@inquirer/prompts'; +import Commander from 'commander'; +import fs, { readFileSync } from 'fs'; +import path, { resolve } from 'path'; +import { cyan, green } from 'picocolors'; +import validateNpmName from 'validate-npm-package-name'; +import { createApp } from './createApp'; +import { PackageManager } from './helpers/get-pkg-manager'; +import { TemplateType } from './helpers/install-template'; +import { isFolderEmpty } from './helpers/is-folder-empty'; + +const packageJson = JSON.parse(readFileSync(resolve(__dirname, '../package.json'), 'utf-8')); +let projectPath = ''; + +const program = new Commander.Command(packageJson.name); +program + .version(packageJson.version) + .argument('[project-directory]') + .usage(`${green('[project-directory]')} [options]`) + .action((str) => { + projectPath = str; + }) + .allowUnknownOption() + .parse(process.argv); + +async function runInitPrompts(): Promise { + if (!projectPath) { + projectPath = await prompts.input({ + message: 'What is your project named?', + validate: (val) => { + const { validForNewPackages } = validateNpmName(val); + if (!validForNewPackages) { + return 'Invalid NPM name'; + } + return true; + }, + }); + + projectPath = projectPath.trim(); + } + + if (!projectPath) { + /* eslint-disable-next-line no-console */ + console.log( + '\nPlease specify the project directory:\n' + + ` ${cyan(program.name())} ${green('')}\n` + + 'For example:\n' + + ` ${cyan(program.name())} ${green('my-next-app')}\n\n` + + `Run ${cyan(`${program.name()} --help`)} to see all options.`, + ); + process.exit(1); + } + + const template: TemplateType = await prompts.select({ + message: 'select a template?', + choices: [ + { name: 'nextjs', value: 'nextjs' }, + { name: 'create-react-app', value: 'cra' }, + { name: 'vite', value: 'vite' }, + ], + }); + + const packageManager: PackageManager = await prompts.select({ + message: 'select a package manager?', + choices: [ + { name: 'npm', value: 'npm' }, + { name: 'yarn', value: 'yarn' }, + { name: 'pnpm', value: 'pnpm' }, + ], + }); + + const resolvedProjectPath = path.resolve(projectPath); + const root = path.resolve(resolvedProjectPath); + const appName = path.basename(root); + const folderExists = fs.existsSync(root); + + if (folderExists && !isFolderEmpty(root, appName)) { + process.exit(1); + } + + try { + await createApp({ + appPath: resolvedProjectPath, + packageManager, + template, + }); + } catch (reason) { + // . + } +} + +runInitPrompts().catch(() => { + // ignore error +}); diff --git a/packages/create-gnfd-app/package.json b/packages/create-gnfd-app/package.json new file mode 100644 index 00000000..95afec92 --- /dev/null +++ b/packages/create-gnfd-app/package.json @@ -0,0 +1,49 @@ +{ + "name": "@bnb-chain/create-gnfd-app", + "version": "0.0.2", + "description": "help you create greenfield project quickly", + "main": "index.js", + "bin": { + "create-gnfd-app": "./dist/index.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/bnb-chain/greenfield-js-sdk", + "directory": "packages/create-gnfd-app" + }, + "homepage": "https://github.com/bnb-chain/greenfield-js-sdk/packages/create-gnfd-app#readme", + "scripts": { + "dev": "rollup -cw", + "build": "rollup -c" + }, + "keywords": [ + "greenfield", + "quickstart", + "create-app" + ], + "author": "", + "license": "MIT", + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, + "dependencies": { + "@inquirer/prompts": "^3.1.1", + "commander": "^11.0.0", + "cross-spawn": "^7.0.3", + "download-git-repo": "^3.0.2", + "fs-extra": "^11.1.1", + "handlebars": "^4.7.8", + "ora": "^5.4.0", + "picocolors": "^1.0.0", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": ">=16.14.0" + }, + "devDependencies": { + "@types/cross-spawn": "^6.0.3", + "@types/fs-extra": "^11.0.1", + "@types/validate-npm-package-name": "^4.0.0" + } +} \ No newline at end of file diff --git a/packages/create-gnfd-app/rollup.config.js b/packages/create-gnfd-app/rollup.config.js new file mode 100644 index 00000000..38168c72 --- /dev/null +++ b/packages/create-gnfd-app/rollup.config.js @@ -0,0 +1,35 @@ +import commonjs from '@rollup/plugin-commonjs'; +import typescript from '@rollup/plugin-typescript'; +import nodePolyfills from 'rollup-plugin-polyfill-node'; +import autoExternal from 'rollup-plugin-auto-external'; +import pkg from './package.json'; + +function resolveExternal() { + return [...Object.keys(pkg.dependencies || {}), ...Object.keys(pkg.peerDependencies || {})]; +} + +export default async () => { + return [ + { + input: './index.ts', + output: { + dir: './dist', + format: 'cjs', + banner: '#!/usr/bin/env node', + }, + external: resolveExternal(), + plugins: [ + autoExternal(), + nodePolyfills({ + include: 'node_modules/**', + }), + commonjs({ + ignoreDynamicRequires: true, + }), + typescript({ + tsconfig: './tsconfig.json', + }), + ], + }, + ]; +}; diff --git a/packages/create-gnfd-app/templates.ts b/packages/create-gnfd-app/templates.ts new file mode 100644 index 00000000..5c7f2234 --- /dev/null +++ b/packages/create-gnfd-app/templates.ts @@ -0,0 +1,8 @@ +import { getTemplateUrl } from './helpers/get-template-url'; +import { TemplateType } from './helpers/install-template'; + +export const TEMPLATES_MAP: Record = { + nextjs: getTemplateUrl('nextjs'), + cra: getTemplateUrl('cra'), + vite: getTemplateUrl('vite'), +}; diff --git a/packages/create-gnfd-app/tsconfig.json b/packages/create-gnfd-app/tsconfig.json new file mode 100644 index 00000000..1964a64d --- /dev/null +++ b/packages/create-gnfd-app/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "es2019", + "moduleResolution": "node", + "strict": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "skipLibCheck": false + }, + "exclude": [ + "dist" + ] +} diff --git a/packages/create-gnfd-app/types/index.d.ts b/packages/create-gnfd-app/types/index.d.ts new file mode 100644 index 00000000..93e550b5 --- /dev/null +++ b/packages/create-gnfd-app/types/index.d.ts @@ -0,0 +1,15 @@ +declare module 'download-git-repo' { + interface Options { + clone?: boolean; + headers?: Record; + } + function download(repo: string, dest: string, opts: Options): Promise; + function download( + repo: string, + dest: string, + opts: Options, + cb: (err?: Error) => void, + ): Promise; + + export = download; +} diff --git a/packages/zk-crypto/CHANGELOG.md b/packages/zk-crypto/CHANGELOG.md index 3a04fd09..5a325402 100644 --- a/packages/zk-crypto/CHANGELOG.md +++ b/packages/zk-crypto/CHANGELOG.md @@ -1,5 +1,21 @@ # @bnb-chain/zk-crypto +## 0.0.3 + +### Patch Changes + +- [#302](https://github.com/bnb-chain/greenfield-js-sdk/pull/302) + [`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Upgrade TinyGo version and Go version + +## 0.0.3-alpha.0 + +### Patch Changes + +- [#302](https://github.com/bnb-chain/greenfield-js-sdk/pull/302) + [`f0d69c9`](https://github.com/bnb-chain/greenfield-js-sdk/commit/f0d69c9f6614bfbf799d199c4a530b5f0d4d1274) + Thanks [@rrr523](https://github.com/rrr523)! - feat: Upgrade TinyGo version and Go version + ## 0.0.2 ### Patch Changes diff --git a/packages/zk-crypto/package.json b/packages/zk-crypto/package.json index 4d25f70e..2b6987f8 100644 --- a/packages/zk-crypto/package.json +++ b/packages/zk-crypto/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-zk-crypto", - "version": "0.0.2", + "version": "0.0.3", "description": "Zk crypto wasm module", "scripts": { "predev": "rimraf ./dist", @@ -40,4 +40,4 @@ "webpack": "^5.88.1", "webpack-cli": "^5.1.4" } -} \ No newline at end of file +} diff --git a/packages/zk-crypto/src/browser/wasm_exec.js b/packages/zk-crypto/src/browser/wasm_exec.js index 56d7352b..7dac3356 100644 --- a/packages/zk-crypto/src/browser/wasm_exec.js +++ b/packages/zk-crypto/src/browser/wasm_exec.js @@ -193,10 +193,10 @@ if (!global.TextDecoder) { const encoder = new TextEncoder('utf-8'); const decoder = new TextDecoder('utf-8'); +let reinterpretBuf = new DataView(new ArrayBuffer(8)); var logLine = []; export default class Go { - importObject; constructor() { this._callbackTimeouts = new Map(); this._nextCallbackTimeoutID = 1; @@ -206,19 +206,9 @@ export default class Go { return new DataView(this._inst.exports.memory.buffer); }; - const setInt64 = (addr, v) => { - mem().setUint32(addr + 0, v, true); - mem().setUint32(addr + 4, Math.floor(v / 4294967296), true); - }; - - const getInt64 = (addr) => { - const low = mem().getUint32(addr + 0, true); - const high = mem().getInt32(addr + 4, true); - return low + high * 4294967296; - }; - - const loadValue = (addr) => { - const f = mem().getFloat64(addr, true); + const unboxValue = (v_ref) => { + reinterpretBuf.setBigInt64(0, v_ref, true); + const f = reinterpretBuf.getFloat64(0, true); if (f === 0) { return undefined; } @@ -226,71 +216,69 @@ export default class Go { return f; } - const id = mem().getUint32(addr, true); + const id = v_ref & 0xffffffffn; return this._values[id]; }; - const storeValue = (addr, v) => { - const nanHead = 0x7ff80000; + const loadValue = (addr) => { + let v_ref = mem().getBigUint64(addr, true); + return unboxValue(v_ref); + }; + + const boxValue = (v) => { + const nanHead = 0x7ff80000n; if (typeof v === 'number') { if (isNaN(v)) { - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 0, true); - return; + return nanHead << 32n; } if (v === 0) { - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 1, true); - return; + return (nanHead << 32n) | 1n; } - mem().setFloat64(addr, v, true); - return; + reinterpretBuf.setFloat64(0, v, true); + return reinterpretBuf.getBigInt64(0, true); } switch (v) { case undefined: - mem().setFloat64(addr, 0, true); - return; + return 0n; case null: - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 2, true); - return; + return (nanHead << 32n) | 2n; case true: - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 3, true); - return; + return (nanHead << 32n) | 3n; case false: - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 4, true); - return; + return (nanHead << 32n) | 4n; } let id = this._ids.get(v); if (id === undefined) { id = this._idPool.pop(); if (id === undefined) { - id = this._values.length; + id = BigInt(this._values.length); } this._values[id] = v; this._goRefCounts[id] = 0; this._ids.set(v, id); } this._goRefCounts[id]++; - let typeFlag = 1; + let typeFlag = 1n; switch (typeof v) { case 'string': - typeFlag = 2; + typeFlag = 2n; break; case 'symbol': - typeFlag = 3; + typeFlag = 3n; break; case 'function': - typeFlag = 4; + typeFlag = 4n; break; } - mem().setUint32(addr + 4, nanHead | typeFlag, true); - mem().setUint32(addr, id, true); + return id | ((nanHead | typeFlag) << 32n); + }; + + const storeValue = (addr, v) => { + let v_ref = boxValue(v); + mem().setBigUint64(addr, v_ref, true); }; const loadSlice = (array, len, cap) => { @@ -360,7 +348,7 @@ export default class Go { return 0; }, }, - env: { + gojs: { // func ticks() float64 'runtime.ticks': () => { return timeOrigin + performance.now(); @@ -373,10 +361,8 @@ export default class Go { }, // func finalizeRef(v ref) - 'syscall/js.finalizeRef': (v_addr) => { - // Note: TinyGo does not support finalizers so this is only called - // for one specific case, by js.go:jsString. - const id = mem().getUint32(v_addr, true); + 'syscall/js.finalizeRef': (v_ref) => { + const id = mem().getUint32(unboxValue(v_ref), true); this._goRefCounts[id]--; if (this._goRefCounts[id] === 0) { const v = this._values[id]; @@ -387,47 +373,47 @@ export default class Go { }, // func stringVal(value string) ref - 'syscall/js.stringVal': (ret_ptr, value_ptr, value_len) => { + 'syscall/js.stringVal': (value_ptr, value_len) => { const s = loadString(value_ptr, value_len); - storeValue(ret_ptr, s); + return boxValue(s); }, // func valueGet(v ref, p string) ref - 'syscall/js.valueGet': (retval, v_addr, p_ptr, p_len) => { + 'syscall/js.valueGet': (v_ref, p_ptr, p_len) => { let prop = loadString(p_ptr, p_len); - let value = loadValue(v_addr); - let result = Reflect.get(value, prop); - storeValue(retval, result); + let v = unboxValue(v_ref); + let result = Reflect.get(v, prop); + return boxValue(result); }, // func valueSet(v ref, p string, x ref) - 'syscall/js.valueSet': (v_addr, p_ptr, p_len, x_addr) => { - const v = loadValue(v_addr); + 'syscall/js.valueSet': (v_ref, p_ptr, p_len, x_ref) => { + const v = unboxValue(v_ref); const p = loadString(p_ptr, p_len); - const x = loadValue(x_addr); + const x = unboxValue(x_ref); Reflect.set(v, p, x); }, // func valueDelete(v ref, p string) - 'syscall/js.valueDelete': (v_addr, p_ptr, p_len) => { - const v = loadValue(v_addr); + 'syscall/js.valueDelete': (v_ref, p_ptr, p_len) => { + const v = unboxValue(v_ref); const p = loadString(p_ptr, p_len); Reflect.deleteProperty(v, p); }, // func valueIndex(v ref, i int) ref - 'syscall/js.valueIndex': (ret_addr, v_addr, i) => { - storeValue(ret_addr, Reflect.get(loadValue(v_addr), i)); + 'syscall/js.valueIndex': (v_ref, i) => { + return boxValue(Reflect.get(unboxValue(v_ref), i)); }, // valueSetIndex(v ref, i int, x ref) - 'syscall/js.valueSetIndex': (v_addr, i, x_addr) => { - Reflect.set(loadValue(v_addr), i, loadValue(x_addr)); + 'syscall/js.valueSetIndex': (v_ref, i, x_ref) => { + Reflect.set(unboxValue(v_ref), i, unboxValue(x_ref)); }, // func valueCall(v ref, m string, args []ref) (ref, bool) - 'syscall/js.valueCall': (ret_addr, v_addr, m_ptr, m_len, args_ptr, args_len, args_cap) => { - const v = loadValue(v_addr); + 'syscall/js.valueCall': (ret_addr, v_ref, m_ptr, m_len, args_ptr, args_len, args_cap) => { + const v = unboxValue(v_ref); const name = loadString(m_ptr, m_len); const args = loadSliceOfValues(args_ptr, args_len, args_cap); try { @@ -441,9 +427,9 @@ export default class Go { }, // func valueInvoke(v ref, args []ref) (ref, bool) - 'syscall/js.valueInvoke': (ret_addr, v_addr, args_ptr, args_len, args_cap) => { + 'syscall/js.valueInvoke': (ret_addr, v_ref, args_ptr, args_len, args_cap) => { try { - const v = loadValue(v_addr); + const v = unboxValue(v_ref); const args = loadSliceOfValues(args_ptr, args_len, args_cap); storeValue(ret_addr, Reflect.apply(v, undefined, args)); mem().setUint8(ret_addr + 8, 1); @@ -454,8 +440,8 @@ export default class Go { }, // func valueNew(v ref, args []ref) (ref, bool) - 'syscall/js.valueNew': (ret_addr, v_addr, args_ptr, args_len, args_cap) => { - const v = loadValue(v_addr); + 'syscall/js.valueNew': (ret_addr, v_ref, args_ptr, args_len, args_cap) => { + const v = unboxValue(v_ref); const args = loadSliceOfValues(args_ptr, args_len, args_cap); try { storeValue(ret_addr, Reflect.construct(v, args)); @@ -467,66 +453,70 @@ export default class Go { }, // func valueLength(v ref) int - 'syscall/js.valueLength': (v_addr) => { - return loadValue(v_addr).length; + 'syscall/js.valueLength': (v_ref) => { + return unboxValue(v_ref).length; }, // valuePrepareString(v ref) (ref, int) - 'syscall/js.valuePrepareString': (ret_addr, v_addr) => { - const s = String(loadValue(v_addr)); + 'syscall/js.valuePrepareString': (ret_addr, v_ref) => { + const s = String(unboxValue(v_ref)); const str = encoder.encode(s); storeValue(ret_addr, str); - setInt64(ret_addr + 8, str.length); + mem().setInt32(ret_addr + 8, str.length, true); }, // valueLoadString(v ref, b []byte) - 'syscall/js.valueLoadString': (v_addr, slice_ptr, slice_len, slice_cap) => { - const str = loadValue(v_addr); + 'syscall/js.valueLoadString': (v_ref, slice_ptr, slice_len, slice_cap) => { + const str = unboxValue(v_ref); loadSlice(slice_ptr, slice_len, slice_cap).set(str); }, // func valueInstanceOf(v ref, t ref) bool - 'syscall/js.valueInstanceOf': (v_addr, t_addr) => { - return loadValue(v_addr) instanceof loadValue(t_addr); + 'syscall/js.valueInstanceOf': (v_ref, t_ref) => { + return unboxValue(v_ref) instanceof unboxValue(t_ref); }, // func copyBytesToGo(dst []byte, src ref) (int, bool) - 'syscall/js.copyBytesToGo': (ret_addr, dest_addr, dest_len, dest_cap, source_addr) => { + 'syscall/js.copyBytesToGo': (ret_addr, dest_addr, dest_len, dest_cap, src_ref) => { let num_bytes_copied_addr = ret_addr; let returned_status_addr = ret_addr + 4; // Address of returned boolean status variable const dst = loadSlice(dest_addr, dest_len); - const src = loadValue(source_addr); + const src = unboxValue(src_ref); if (!(src instanceof Uint8Array || src instanceof Uint8ClampedArray)) { mem().setUint8(returned_status_addr, 0); // Return "not ok" status return; } const toCopy = src.subarray(0, dst.length); dst.set(toCopy); - setInt64(num_bytes_copied_addr, toCopy.length); + mem().setUint32(num_bytes_copied_addr, toCopy.length, true); mem().setUint8(returned_status_addr, 1); // Return "ok" status }, // copyBytesToJS(dst ref, src []byte) (int, bool) // Originally copied from upstream Go project, then modified: // https://github.com/golang/go/blob/3f995c3f3b43033013013e6c7ccc93a9b1411ca9/misc/wasm/wasm_exec.js#L404-L416 - 'syscall/js.copyBytesToJS': (ret_addr, dest_addr, source_addr, source_len, source_cap) => { + 'syscall/js.copyBytesToJS': (ret_addr, dst_ref, src_addr, src_len, src_cap) => { let num_bytes_copied_addr = ret_addr; let returned_status_addr = ret_addr + 4; // Address of returned boolean status variable - const dst = loadValue(dest_addr); - const src = loadSlice(source_addr, source_len); + const dst = unboxValue(dst_ref); + const src = loadSlice(src_addr, src_len); if (!(dst instanceof Uint8Array || dst instanceof Uint8ClampedArray)) { mem().setUint8(returned_status_addr, 0); // Return "not ok" status return; } const toCopy = src.subarray(0, dst.length); dst.set(toCopy); - setInt64(num_bytes_copied_addr, toCopy.length); + mem().setUint32(num_bytes_copied_addr, toCopy.length, true); mem().setUint8(returned_status_addr, 1); // Return "ok" status }, }, }; + + // Go 1.20 uses 'env'. Go 1.21 uses 'gojs'. + // For compatibility, we use both as long as Go 1.20 is supported. + this.importObject.env = this.importObject.gojs; } async run(instance) { @@ -586,23 +576,25 @@ export default class Go { } } -// if ( -// global.require && -// global.require.main === module && -// global.process && -// global.process.versions && -// !global.process.versions.electron -// ) { -// if (process.argv.length != 3) { -// console.error("usage: go_js_wasm_exec [wasm binary] [arguments]"); -// process.exit(1); -// } - -// const go = new Go(); -// WebAssembly.instantiate(fs.readFileSync(process.argv[2]), go.importObject).then((result) => { -// return go.run(result.instance); -// }).catch((err) => { -// console.error(err); -// process.exit(1); -// }); -// } +if ( + global.require && + global.require.main === module && + global.process && + global.process.versions && + !global.process.versions.electron +) { + if (process.argv.length != 3) { + console.error('usage: go_js_wasm_exec [wasm binary] [arguments]'); + process.exit(1); + } + + const go = new Go(); + WebAssembly.instantiate(fs.readFileSync(process.argv[2]), go.importObject) + .then((result) => { + return go.run(result.instance); + }) + .catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/packages/zk-crypto/src/node/wasm_exec.js b/packages/zk-crypto/src/node/wasm_exec.js index d53f3291..e3d32784 100644 --- a/packages/zk-crypto/src/node/wasm_exec.js +++ b/packages/zk-crypto/src/node/wasm_exec.js @@ -193,10 +193,10 @@ if (!global.TextDecoder) { const encoder = new TextEncoder('utf-8'); const decoder = new TextDecoder('utf-8'); +let reinterpretBuf = new DataView(new ArrayBuffer(8)); var logLine = []; module.exports = class Go { - importObject; constructor() { this._callbackTimeouts = new Map(); this._nextCallbackTimeoutID = 1; @@ -206,19 +206,9 @@ module.exports = class Go { return new DataView(this._inst.exports.memory.buffer); }; - const setInt64 = (addr, v) => { - mem().setUint32(addr + 0, v, true); - mem().setUint32(addr + 4, Math.floor(v / 4294967296), true); - }; - - const getInt64 = (addr) => { - const low = mem().getUint32(addr + 0, true); - const high = mem().getInt32(addr + 4, true); - return low + high * 4294967296; - }; - - const loadValue = (addr) => { - const f = mem().getFloat64(addr, true); + const unboxValue = (v_ref) => { + reinterpretBuf.setBigInt64(0, v_ref, true); + const f = reinterpretBuf.getFloat64(0, true); if (f === 0) { return undefined; } @@ -226,71 +216,69 @@ module.exports = class Go { return f; } - const id = mem().getUint32(addr, true); + const id = v_ref & 0xffffffffn; return this._values[id]; }; - const storeValue = (addr, v) => { - const nanHead = 0x7ff80000; + const loadValue = (addr) => { + let v_ref = mem().getBigUint64(addr, true); + return unboxValue(v_ref); + }; + + const boxValue = (v) => { + const nanHead = 0x7ff80000n; if (typeof v === 'number') { if (isNaN(v)) { - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 0, true); - return; + return nanHead << 32n; } if (v === 0) { - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 1, true); - return; + return (nanHead << 32n) | 1n; } - mem().setFloat64(addr, v, true); - return; + reinterpretBuf.setFloat64(0, v, true); + return reinterpretBuf.getBigInt64(0, true); } switch (v) { case undefined: - mem().setFloat64(addr, 0, true); - return; + return 0n; case null: - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 2, true); - return; + return (nanHead << 32n) | 2n; case true: - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 3, true); - return; + return (nanHead << 32n) | 3n; case false: - mem().setUint32(addr + 4, nanHead, true); - mem().setUint32(addr, 4, true); - return; + return (nanHead << 32n) | 4n; } let id = this._ids.get(v); if (id === undefined) { id = this._idPool.pop(); if (id === undefined) { - id = this._values.length; + id = BigInt(this._values.length); } this._values[id] = v; this._goRefCounts[id] = 0; this._ids.set(v, id); } this._goRefCounts[id]++; - let typeFlag = 1; + let typeFlag = 1n; switch (typeof v) { case 'string': - typeFlag = 2; + typeFlag = 2n; break; case 'symbol': - typeFlag = 3; + typeFlag = 3n; break; case 'function': - typeFlag = 4; + typeFlag = 4n; break; } - mem().setUint32(addr + 4, nanHead | typeFlag, true); - mem().setUint32(addr, id, true); + return id | ((nanHead | typeFlag) << 32n); + }; + + const storeValue = (addr, v) => { + let v_ref = boxValue(v); + mem().setBigUint64(addr, v_ref, true); }; const loadSlice = (array, len, cap) => { @@ -360,7 +348,7 @@ module.exports = class Go { return 0; }, }, - env: { + gojs: { // func ticks() float64 'runtime.ticks': () => { return timeOrigin + performance.now(); @@ -373,10 +361,8 @@ module.exports = class Go { }, // func finalizeRef(v ref) - 'syscall/js.finalizeRef': (v_addr) => { - // Note: TinyGo does not support finalizers so this is only called - // for one specific case, by js.go:jsString. - const id = mem().getUint32(v_addr, true); + 'syscall/js.finalizeRef': (v_ref) => { + const id = mem().getUint32(unboxValue(v_ref), true); this._goRefCounts[id]--; if (this._goRefCounts[id] === 0) { const v = this._values[id]; @@ -387,47 +373,47 @@ module.exports = class Go { }, // func stringVal(value string) ref - 'syscall/js.stringVal': (ret_ptr, value_ptr, value_len) => { + 'syscall/js.stringVal': (value_ptr, value_len) => { const s = loadString(value_ptr, value_len); - storeValue(ret_ptr, s); + return boxValue(s); }, // func valueGet(v ref, p string) ref - 'syscall/js.valueGet': (retval, v_addr, p_ptr, p_len) => { + 'syscall/js.valueGet': (v_ref, p_ptr, p_len) => { let prop = loadString(p_ptr, p_len); - let value = loadValue(v_addr); - let result = Reflect.get(value, prop); - storeValue(retval, result); + let v = unboxValue(v_ref); + let result = Reflect.get(v, prop); + return boxValue(result); }, // func valueSet(v ref, p string, x ref) - 'syscall/js.valueSet': (v_addr, p_ptr, p_len, x_addr) => { - const v = loadValue(v_addr); + 'syscall/js.valueSet': (v_ref, p_ptr, p_len, x_ref) => { + const v = unboxValue(v_ref); const p = loadString(p_ptr, p_len); - const x = loadValue(x_addr); + const x = unboxValue(x_ref); Reflect.set(v, p, x); }, // func valueDelete(v ref, p string) - 'syscall/js.valueDelete': (v_addr, p_ptr, p_len) => { - const v = loadValue(v_addr); + 'syscall/js.valueDelete': (v_ref, p_ptr, p_len) => { + const v = unboxValue(v_ref); const p = loadString(p_ptr, p_len); Reflect.deleteProperty(v, p); }, // func valueIndex(v ref, i int) ref - 'syscall/js.valueIndex': (ret_addr, v_addr, i) => { - storeValue(ret_addr, Reflect.get(loadValue(v_addr), i)); + 'syscall/js.valueIndex': (v_ref, i) => { + return boxValue(Reflect.get(unboxValue(v_ref), i)); }, // valueSetIndex(v ref, i int, x ref) - 'syscall/js.valueSetIndex': (v_addr, i, x_addr) => { - Reflect.set(loadValue(v_addr), i, loadValue(x_addr)); + 'syscall/js.valueSetIndex': (v_ref, i, x_ref) => { + Reflect.set(unboxValue(v_ref), i, unboxValue(x_ref)); }, // func valueCall(v ref, m string, args []ref) (ref, bool) - 'syscall/js.valueCall': (ret_addr, v_addr, m_ptr, m_len, args_ptr, args_len, args_cap) => { - const v = loadValue(v_addr); + 'syscall/js.valueCall': (ret_addr, v_ref, m_ptr, m_len, args_ptr, args_len, args_cap) => { + const v = unboxValue(v_ref); const name = loadString(m_ptr, m_len); const args = loadSliceOfValues(args_ptr, args_len, args_cap); try { @@ -441,9 +427,9 @@ module.exports = class Go { }, // func valueInvoke(v ref, args []ref) (ref, bool) - 'syscall/js.valueInvoke': (ret_addr, v_addr, args_ptr, args_len, args_cap) => { + 'syscall/js.valueInvoke': (ret_addr, v_ref, args_ptr, args_len, args_cap) => { try { - const v = loadValue(v_addr); + const v = unboxValue(v_ref); const args = loadSliceOfValues(args_ptr, args_len, args_cap); storeValue(ret_addr, Reflect.apply(v, undefined, args)); mem().setUint8(ret_addr + 8, 1); @@ -454,8 +440,8 @@ module.exports = class Go { }, // func valueNew(v ref, args []ref) (ref, bool) - 'syscall/js.valueNew': (ret_addr, v_addr, args_ptr, args_len, args_cap) => { - const v = loadValue(v_addr); + 'syscall/js.valueNew': (ret_addr, v_ref, args_ptr, args_len, args_cap) => { + const v = unboxValue(v_ref); const args = loadSliceOfValues(args_ptr, args_len, args_cap); try { storeValue(ret_addr, Reflect.construct(v, args)); @@ -467,66 +453,70 @@ module.exports = class Go { }, // func valueLength(v ref) int - 'syscall/js.valueLength': (v_addr) => { - return loadValue(v_addr).length; + 'syscall/js.valueLength': (v_ref) => { + return unboxValue(v_ref).length; }, // valuePrepareString(v ref) (ref, int) - 'syscall/js.valuePrepareString': (ret_addr, v_addr) => { - const s = String(loadValue(v_addr)); + 'syscall/js.valuePrepareString': (ret_addr, v_ref) => { + const s = String(unboxValue(v_ref)); const str = encoder.encode(s); storeValue(ret_addr, str); - setInt64(ret_addr + 8, str.length); + mem().setInt32(ret_addr + 8, str.length, true); }, // valueLoadString(v ref, b []byte) - 'syscall/js.valueLoadString': (v_addr, slice_ptr, slice_len, slice_cap) => { - const str = loadValue(v_addr); + 'syscall/js.valueLoadString': (v_ref, slice_ptr, slice_len, slice_cap) => { + const str = unboxValue(v_ref); loadSlice(slice_ptr, slice_len, slice_cap).set(str); }, // func valueInstanceOf(v ref, t ref) bool - 'syscall/js.valueInstanceOf': (v_addr, t_addr) => { - return loadValue(v_addr) instanceof loadValue(t_addr); + 'syscall/js.valueInstanceOf': (v_ref, t_ref) => { + return unboxValue(v_ref) instanceof unboxValue(t_ref); }, // func copyBytesToGo(dst []byte, src ref) (int, bool) - 'syscall/js.copyBytesToGo': (ret_addr, dest_addr, dest_len, dest_cap, source_addr) => { + 'syscall/js.copyBytesToGo': (ret_addr, dest_addr, dest_len, dest_cap, src_ref) => { let num_bytes_copied_addr = ret_addr; let returned_status_addr = ret_addr + 4; // Address of returned boolean status variable const dst = loadSlice(dest_addr, dest_len); - const src = loadValue(source_addr); + const src = unboxValue(src_ref); if (!(src instanceof Uint8Array || src instanceof Uint8ClampedArray)) { mem().setUint8(returned_status_addr, 0); // Return "not ok" status return; } const toCopy = src.subarray(0, dst.length); dst.set(toCopy); - setInt64(num_bytes_copied_addr, toCopy.length); + mem().setUint32(num_bytes_copied_addr, toCopy.length, true); mem().setUint8(returned_status_addr, 1); // Return "ok" status }, // copyBytesToJS(dst ref, src []byte) (int, bool) // Originally copied from upstream Go project, then modified: // https://github.com/golang/go/blob/3f995c3f3b43033013013e6c7ccc93a9b1411ca9/misc/wasm/wasm_exec.js#L404-L416 - 'syscall/js.copyBytesToJS': (ret_addr, dest_addr, source_addr, source_len, source_cap) => { + 'syscall/js.copyBytesToJS': (ret_addr, dst_ref, src_addr, src_len, src_cap) => { let num_bytes_copied_addr = ret_addr; let returned_status_addr = ret_addr + 4; // Address of returned boolean status variable - const dst = loadValue(dest_addr); - const src = loadSlice(source_addr, source_len); + const dst = unboxValue(dst_ref); + const src = loadSlice(src_addr, src_len); if (!(dst instanceof Uint8Array || dst instanceof Uint8ClampedArray)) { mem().setUint8(returned_status_addr, 0); // Return "not ok" status return; } const toCopy = src.subarray(0, dst.length); dst.set(toCopy); - setInt64(num_bytes_copied_addr, toCopy.length); + mem().setUint32(num_bytes_copied_addr, toCopy.length, true); mem().setUint8(returned_status_addr, 1); // Return "ok" status }, }, }; + + // Go 1.20 uses 'env'. Go 1.21 uses 'gojs'. + // For compatibility, we use both as long as Go 1.20 is supported. + this.importObject.env = this.importObject.gojs; } async run(instance) { @@ -586,23 +576,25 @@ module.exports = class Go { } }; -// if ( -// global.require && -// global.require.main === module && -// global.process && -// global.process.versions && -// !global.process.versions.electron -// ) { -// if (process.argv.length != 3) { -// console.error("usage: go_js_wasm_exec [wasm binary] [arguments]"); -// process.exit(1); -// } - -// const go = new Go(); -// WebAssembly.instantiate(fs.readFileSync(process.argv[2]), go.importObject).then((result) => { -// return go.run(result.instance); -// }).catch((err) => { -// console.error(err); -// process.exit(1); -// }); -// } +if ( + global.require && + global.require.main === module && + global.process && + global.process.versions && + !global.process.versions.electron +) { + if (process.argv.length != 3) { + console.error('usage: go_js_wasm_exec [wasm binary] [arguments]'); + process.exit(1); + } + + const go = new Go(); + WebAssembly.instantiate(fs.readFileSync(process.argv[2]), go.importObject) + .then((result) => { + return go.run(result.instance); + }) + .catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/packages/zk-crypto/src/wasm/zk-crypto.wasm b/packages/zk-crypto/src/wasm/zk-crypto.wasm index f45033bd01d90100ff2371eb155a24d8ad713e46..4ead527586083f9a6d283d29c6a688694324dfe5 100755 GIT binary patch delta 97390 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

        d1TRu?awUW`nBcZ)=Av=b|jlT-c}v%W0Clo3PI2 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 I6U4ax1MfU;o&W#< diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f00fb55..1410fc42 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: devDependencies: '@babel/core': specifier: ^7.22.5 - version: 7.22.5 + version: 7.22.15 '@changesets/changelog-github': specifier: ^0.4.8 version: 0.4.8 @@ -28,7 +28,7 @@ importers: version: 4.0.4(rollup@2.79.1) '@rollup/plugin-babel': specifier: ^5.3.1 - version: 5.3.1(@babel/core@7.22.5)(rollup@2.79.1) + version: 5.3.1(@babel/core@7.22.15)(rollup@2.79.1) '@rollup/plugin-commonjs': specifier: ^22.0.2 version: 22.0.2(rollup@2.79.1) @@ -61,10 +61,10 @@ importers: version: 18.2.5 '@typescript-eslint/eslint-plugin': specifier: ^5.59.11 - version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) '@typescript-eslint/parser': specifier: ^5.59.11 - version: 5.59.11(eslint@8.42.0)(typescript@4.9.5) + version: 5.59.11(eslint@8.48.0)(typescript@4.9.5) chai: specifier: ^4.3.7 version: 4.3.7 @@ -72,14 +72,14 @@ importers: specifier: ^2.1.0 version: 2.1.0 eslint: - specifier: ^8.42.0 - version: 8.42.0 + specifier: ^8.48.0 + version: 8.48.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@4.9.5) + version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0)(typescript@4.9.5) eslint-plugin-prettier: specifier: ^4.2.1 - version: 4.2.1(eslint@8.42.0)(prettier@2.8.8) + version: 4.2.1(eslint@8.48.0)(prettier@2.8.8) husky: specifier: ^8.0.3 version: 8.0.3 @@ -95,6 +95,18 @@ importers: rimraf: specifier: ^3.0.2 version: 3.0.2 + rollup: + specifier: ^2.79.1 + version: 2.79.1 + rollup-plugin-auto-external: + specifier: ^2.0.0 + version: 2.0.0(rollup@2.79.1) + rollup-plugin-polyfill-node: + specifier: ^0.10.2 + version: 0.10.2(rollup@2.79.1) + rollup-plugin-terser: + specifier: ^7.0.2 + version: 7.0.2(rollup@2.79.1) examples/nextjs: dependencies: @@ -127,16 +139,16 @@ importers: version: 13.1.6 '@rainbow-me/rainbowkit': specifier: ^1.0.5 - version: 1.0.5(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0) + version: 1.0.5(@types/react@18.2.12)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0) '@types/node': specifier: ^18.7.1 - version: 18.16.7 + version: 18.16.18 '@types/react': specifier: ^18.0.17 - version: 18.2.6 + version: 18.2.12 '@types/react-dom': specifier: ^18.0.6 - version: 18.2.4 + version: 18.2.5 axios: specifier: ^1.3.4 version: 1.3.4 @@ -145,10 +157,10 @@ importers: version: 2.8.5 eslint: specifier: ^8.21.0 - version: 8.40.0 + version: 8.48.0 eslint-config-next: specifier: 13.1.6 - version: 13.1.6(eslint@8.40.0)(typescript@4.9.5) + version: 13.1.6(eslint@8.48.0)(typescript@4.9.5) evmosjs: specifier: ^0.2.17 version: 0.2.17 @@ -157,7 +169,7 @@ importers: version: 5.2.1 next: specifier: 13.1.6 - version: 13.1.6(react-dom@18.2.0)(react@18.2.0) + version: 13.1.6(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 @@ -197,8 +209,8 @@ importers: packages/chain-sdk: dependencies: '@bnb-chain/greenfield-cosmos-types': - specifier: 0.4.0-alpha.22 - version: 0.4.0-alpha.22 + specifier: 0.4.0-alpha.23 + version: 0.4.0-alpha.23 '@bnb-chain/greenfield-zk-crypto': specifier: workspace:* version: link:../zk-crypto @@ -257,8 +269,8 @@ importers: specifier: ^0.1.13 version: 0.1.13 tsyringe: - specifier: ^4.7.0 - version: 4.7.0 + specifier: ^4.8.0 + version: 4.8.0 devDependencies: '@jest/globals': specifier: ^29.5.0 @@ -287,34 +299,59 @@ importers: mime: specifier: ^3.0.0 version: 3.0.0 - rollup: - specifier: ^2.79.1 - version: 2.79.1 - rollup-plugin-auto-external: - specifier: ^2.0.0 - version: 2.0.0(rollup@2.79.1) - rollup-plugin-node-builtins: - specifier: ^2.1.2 - version: 2.1.2 - rollup-plugin-polyfill-node: - specifier: ^0.10.2 - version: 0.10.2(rollup@2.79.1) - rollup-plugin-terser: - specifier: ^7.0.2 - version: 7.0.2(rollup@2.79.1) ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.22.15)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) tslib: specifier: ^2.5.0 - version: 2.5.0 + version: 2.5.2 typescript: specifier: ^4.9.5 version: 4.9.5 + packages/create-gnfd-app: + dependencies: + '@inquirer/prompts': + specifier: ^3.1.1 + version: 3.1.1 + commander: + specifier: ^11.0.0 + version: 11.0.0 + cross-spawn: + specifier: ^7.0.3 + version: 7.0.3 + download-git-repo: + specifier: ^3.0.2 + version: 3.0.2 + fs-extra: + specifier: ^11.1.1 + version: 11.1.1 + handlebars: + specifier: ^4.7.8 + version: 4.7.8 + ora: + specifier: ^5.4.0 + version: 5.4.1 + picocolors: + specifier: ^1.0.0 + version: 1.0.0 + validate-npm-package-name: + specifier: ^5.0.0 + version: 5.0.0 + devDependencies: + '@types/cross-spawn': + specifier: ^6.0.3 + version: 6.0.3 + '@types/fs-extra': + specifier: ^11.0.1 + version: 11.0.1 + '@types/validate-npm-package-name': + specifier: ^4.0.0 + version: 4.0.0 + packages/file-handle: devDependencies: clean-webpack-plugin: @@ -328,7 +365,7 @@ importers: version: 3.0.2 typescript: specifier: ^5.1.6 - version: 5.1.6 + version: 5.2.2 webpack: specifier: ^5.88.1 version: 5.88.1(webpack-cli@5.1.4) @@ -349,7 +386,7 @@ importers: version: 3.0.2 typescript: specifier: ^5.1.6 - version: 5.1.6 + version: 5.2.2 webpack: specifier: ^5.88.1 version: 5.88.1(webpack-cli@5.1.4) @@ -359,6 +396,10 @@ importers: packages: + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + /@adraffy/ens-normalize@1.9.0: resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} dev: false @@ -368,171 +409,132 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - dev: true - - /@babel/code-frame@7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - dev: true - - /@babel/code-frame@7.21.4: - resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - dev: true + '@jridgewell/trace-mapping': 0.3.19 - /@babel/code-frame@7.22.5: - resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.22.5 - dev: true + '@babel/highlight': 7.22.13 + chalk: 2.4.2 - /@babel/compat-data@7.22.5: - resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} + /@babel/compat-data@7.22.9: + resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} - dev: true - /@babel/core@7.22.5: - resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} + /@babel/core@7.22.15: + resolution: {integrity: sha512-PtZqMmgRrvj8ruoEOIwVA3yoF91O+Hgw9o7DAUTNBA6Mo2jpu31clx9a7Nz/9JznqetTR6zwfC4L3LAjKQXUwA==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-module-transforms': 7.22.5 - '@babel/helpers': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helpers': 7.22.15 + '@babel/parser': 7.22.15 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /@babel/eslint-parser@7.21.8(@babel/core@7.22.5)(eslint@8.42.0): + /@babel/eslint-parser@7.21.8(@babel/core@7.22.15)(eslint@8.48.0): resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': '>=7.11.0' eslint: ^7.5.0 || ^8.0.0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.42.0 + eslint: 8.48.0 eslint-visitor-keys: 2.1.0 - semver: 6.3.0 - dev: true - - /@babel/generator@7.21.5: - resolution: {integrity: sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - jsesc: 2.5.2 + semver: 6.3.1 dev: true - /@babel/generator@7.22.5: - resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} + /@babel/generator@7.22.15: + resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.15 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 - dev: true - - /@babel/helper-annotate-as-pure@7.18.6: - resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - dev: true /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.15 dev: true /@babel/helper-builder-binary-assignment-operator-visitor@7.22.3: resolution: {integrity: sha512-ahEoxgqNoYXm0k22TvOke48i1PkavGu0qGCmcq9ugi6gnmvKNaMjKBSrZTnWUi1CFEeNAUiVba0Wtzm03aSkJg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.15 dev: true - /@babel/helper-compilation-targets@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.7 + '@babel/compat-data': 7.22.9 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.21.10 lru-cache: 5.1.1 - semver: 6.3.0 - dev: true + semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.22.5): + /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.22.15): resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-member-expression-to-functions': 7.22.3 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/helper-replace-supers': 7.22.1 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/helper-split-export-declaration': 7.22.5 - semver: 6.3.0 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-create-regexp-features-plugin@7.22.1(@babel/core@7.22.5): + /@babel/helper-create-regexp-features-plugin@7.22.1(@babel/core@7.22.15): resolution: {integrity: sha512-WWjdnfR3LPIe+0EY8td7WmjhytxXtjKAEpnAxun/hkNiyOaPlvGK+NZaBFIdi9ndYV3Gav7BpFvtUwnaJlwi1w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 - semver: 6.3.0 + semver: 6.3.1 dev: true - /@babel/helper-define-polyfill-provider@0.4.0(@babel/core@7.22.5): + /@babel/helper-define-polyfill-provider@0.4.0(@babel/core@7.22.15): resolution: {integrity: sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.2 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true @@ -540,70 +542,51 @@ packages: /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-function-name@7.22.5: resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.5 - dev: true + '@babel/template': 7.22.15 + '@babel/types': 7.22.15 /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 - dev: true + '@babel/types': 7.22.15 /@babel/helper-member-expression-to-functions@7.22.3: resolution: {integrity: sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 - dev: true - - /@babel/helper-module-imports@7.21.4: - resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.4 + '@babel/types': 7.22.15 dev: true - /@babel/helper-module-imports@7.22.5: - resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 - dev: true + '@babel/types': 7.22.15 - /@babel/helper-module-transforms@7.22.5: - resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} + /@babel/helper-module-transforms@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: + '@babel/core': 7.22.15 '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.15 /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 - dev: true - - /@babel/helper-plugin-utils@7.21.5: - resolution: {integrity: sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==} - engines: {node: '>=6.9.0'} + '@babel/types': 7.22.15 dev: true /@babel/helper-plugin-utils@7.22.5: @@ -611,17 +594,17 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.22.5): + /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.22.5 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color dev: true @@ -633,9 +616,9 @@ packages: '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-member-expression-to-functions': 7.22.3 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color dev: true @@ -644,1248 +627,1186 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 - dev: true + '@babel/types': 7.22.15 /@babel/helper-skip-transparent-expression-wrappers@7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.15 dev: true - /@babel/helper-split-export-declaration@7.22.5: - resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 - dev: true - - /@babel/helper-string-parser@7.21.5: - resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/types': 7.22.15 /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-identifier@7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-identifier@7.22.5: - resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} + /@babel/helper-validator-identifier@7.22.15: + resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-option@7.22.5: - resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} + /@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-wrap-function@7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-function-name': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color dev: true - /@babel/helpers@7.22.5: - resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} + /@babel/helpers@7.22.15: + resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color - dev: true - - /@babel/highlight@7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.19.1 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - /@babel/highlight@7.22.5: - resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} + /@babel/highlight@7.22.13: + resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 chalk: 2.4.2 js-tokens: 4.0.0 - dev: true - /@babel/parser@7.22.5: - resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} + /@babel/parser@7.22.15: + resolution: {integrity: sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.22.5 - dev: true + '@babel/types': 7.22.15 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.22.5): + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.3(@babel/core@7.22.5): + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-6r4yRwEnorYByILoDRnEqxtojYKuiIv9FojW2E8GUKo9eWBwbKcd9IiZOZpdyXc64RmyGGyPu3/uAcrz/dq2kQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.22.5) + '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.22.15) dev: true - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.5): + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-decorators@7.22.3(@babel/core@7.22.5): + /@babel/plugin-proposal-decorators@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-XjTKH3sHr6pPqG+hR1NCdVupwiosfdKM2oSMyKQVQ5Bym9l/p7BuLAqT5U32zZzRCfPq/TPRPzMiiTE9bOXU4w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.22.1 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/plugin-syntax-decorators': 7.22.3(@babel/core@7.22.5) + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/plugin-syntax-decorators': 7.22.3(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.5): + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.22.5): + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) dev: true - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.5): + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.15): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.22.5): + /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.22.5): + /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.22.15): resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.5): + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.5): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.15): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.5): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.15): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.5): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.15): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-decorators@7.22.3(@babel/core@7.22.5): + /@babel/plugin-syntax-decorators@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-R16Zuge73+8/nLcDjkIpyhi5wIbN7i7fiuLJR8yQX7vPAa/ltUKtd3iLbb4AgP5nrLi91HnNUNosELIGUGH1bg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - dev: true - - /@babel/plugin-syntax-flow@7.21.4(@babel/core@7.22.5): - resolution: {integrity: sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.5): + /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.15): resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.22.5): + /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.22.15): resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes@7.22.3(@babel/core@7.22.5): + /@babel/plugin-syntax-import-attributes@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-i35jZJv6aO7hxEbIWQ41adVfOzjm9dcYDNeWlBMd8p0ZQRtNUCBrmGwZt+H5lb+oOC9a3svp956KP0oWGA1YsA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.5): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.15): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - dev: true - - /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.22.5): - resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.5): + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.15): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.5): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.15): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.5): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.15): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.5): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.15): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.5): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.15): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.22.5): + /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.22.15): resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.5): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions@7.21.5(@babel/core@7.22.5): + /@babel/plugin-transform-arrow-functions@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-async-generator-functions@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-async-generator-functions@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-36A4Aq48t66btydbZd5Fk0/xJqbpg/v4QWI4AH4cYHBXy9Mu42UOupZpebKFiCFNT9S9rJFcsld0gsv0ayLjtA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.22.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.22.5): + /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.22.15): resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.22.5): + /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.22.15): resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-properties@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-class-properties@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-mASLsd6rhOrLZ5F3WbCxkzl67mmOnqik0zrg5W6D/X0QMW7HtvnoL1dRARLKIbMP3vXwkwziuLesPqWVGIl6Bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-class-static-block@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-class-static-block@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-5BirgNWNOx7cwbTJCOmKFJ1pZjwk5MUfMIwiBBvsirCJMZeQgs5pk6i1OlkVg+1Vef5LfBahFOrdCnAWvkVKMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-classes@7.21.0(@babel/core@7.22.5): + /@babel/plugin-transform-classes@7.21.0(@babel/core@7.22.15): resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.22.1 - '@babel/helper-split-export-declaration': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-computed-properties@7.21.5(@babel/core@7.22.5): + /@babel/plugin-transform-computed-properties@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/template': 7.22.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.15 dev: true - /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.22.5): + /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.22.15): resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.22.5): + /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dynamic-import@7.22.1(@babel/core@7.22.5): + /@babel/plugin-transform-dynamic-import@7.22.1(@babel/core@7.22.15): resolution: {integrity: sha512-rlhWtONnVBPdmt+jeewS0qSnMz/3yLFrqAP8hHC6EDcrYRSyuz9f9yQhHvVn2Ad6+yO9fHXac5piudeYrInxwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.3 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-export-namespace-from@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-export-namespace-from@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-5Ti1cHLTDnt3vX61P9KZ5IG09bFXp4cDVFJIAeCZuxu9OXXJJZp5iP0n/rzM2+iAutJY+KWEyyHcRaHlpQ/P5g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.22.5): + /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.22.15): resolution: {integrity: sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-flow': 7.21.4(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-for-of@7.21.5(@babel/core@7.22.5): + /@babel/plugin-transform-for-of@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.22.5): + /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-function-name': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-json-strings@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-json-strings@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-IuvOMdeOOY2X4hRNAT6kwbePtK21BUyrAEgLKviL8pL6AEEVUVcqtRdN/HJXBLGIbt9T3ETmXRnFedRRmQNTYw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-literals@7.18.9(@babel/core@7.22.5): + /@babel/plugin-transform-literals@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-logical-assignment-operators@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-logical-assignment-operators@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-CbayIfOw4av2v/HYZEsH+Klks3NC2/MFIR3QR8gnpGNNPEaq2fdlVCRYG/paKs7/5hvBLQ+H70pGWOHtlNEWNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.22.5): + /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.22.15): resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.21.5(@babel/core@7.22.5): + /@babel/plugin-transform-modules-commonjs@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 - transitivePeerDependencies: - - supports-color dev: true - /@babel/plugin-transform-modules-systemjs@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-modules-systemjs@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-V21W3bKLxO3ZjcBJZ8biSvo5gQ85uIXW2vJfh7JSWf/4SLUSr1tOoHX3ruN4+Oqa2m+BKfsxTR1I+PsvkIWvNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-identifier': 7.22.5 - transitivePeerDependencies: - - supports-color + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 dev: true - /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-module-transforms': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-c6HrD/LpUdNNJsISQZpds3TXvfYIAbo+efE9aWmY/PmSRD0agrJ9cPMt4BmArwUQ7ZymEWTFjTyp+yReLJZh0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-new-target@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-new-target@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-5RuJdSo89wKdkRTqtM9RVVJzHum9c2s0te9rB7vZC1zKKxcioWIy+xcu4OoIAjyFZhb/bp5KkunuLin1q7Ct+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-nullish-coalescing-operator@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-CpaoNp16nX7ROtLONNuCyenYdY/l7ZsR6aoVa7rW7nMWisoNoQNIH5Iay/4LDyRjKMuElMqXiBoOQCDLTMGZiw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-numeric-separator@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-numeric-separator@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-+AF88fPDJrnseMh5vD9+SH6wq4ZMvpiTMHh58uLs+giMEyASFVhcT3NkoyO+NebFCNnpHJEq5AXO2txV4AGPDQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-object-rest-spread@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-object-rest-spread@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-38bzTsqMMCI46/TQnJwPPpy33EjLCc1Gsm2hRTF6zTMWnKsN61vdrpuzIEGQyKEhDSYDKyZHrrd5FMj4gcUHhw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.5) + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.22.1 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-optional-catch-binding@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-optional-catch-binding@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-bnDFWXFzWY0BsOyqaoSXvMQ2F35zutQipugog/rqotL2S4ciFOKlRYUu9djt4iq09oh2/34hqfRR2k1dIvuu4g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-optional-chaining@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-optional-chaining@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-63v3/UFFxhPKT8j8u1jTTGVyITxl7/7AfOqK8C5gz1rHURPUGe3y5mvIf68eYKGoBNahtJnTxBKug4BQOnzeJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-parameters@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-parameters@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-x7QHQJHPuD9VmfpzboyGJ5aHEr9r7DsAsdxdhJiTB3J3j8dyl+NFZ+rX5Q2RWFDCs61c06qBfS4ys2QYn8UkMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-methods@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-private-methods@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-fC7jtjBPFqhqpPAE+O4LKwnLq7gGkD3ZmC2E3i4qWH34mH3gOg2Xrq5YMHUq6DM30xhqM1DNftiRaSqVjEG+ug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-private-property-in-object@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-private-property-in-object@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-C7MMl4qWLpgVCbXfj3UW8rR1xeCnisQ0cU7YJHV//8oNBS0aCIVg1vFnZXxOckHhEpQyqNNkWmvSEWnMLlc+Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-development@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-react-jsx-development@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.22.5) - dev: true - - /@babel/plugin-transform-react-jsx@7.22.3(@babel/core@7.22.5): - resolution: {integrity: sha512-JEulRWG2f04a7L8VWaOngWiK6p+JOSpB+DAtwfJgOaej1qdbNxqtK7MwTBHjUA10NeFcszlFNqCdbRcirzh2uQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.5) - '@babel/types': 7.22.5 + '@babel/core': 7.22.15 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} + /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.5 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.5) - '@babel/types': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) + '@babel/types': 7.22.15 dev: true - /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-regenerator@7.21.5(@babel/core@7.22.5): + /@babel/plugin-transform-regenerator@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.1 dev: true - /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-runtime@7.22.4(@babel/core@7.22.5): + /@babel/plugin-transform-runtime@7.22.4(@babel/core@7.22.15): resolution: {integrity: sha512-Urkiz1m4zqiRo17klj+l3nXgiRTFQng91Bc1eiLF7BMQu1e7wE5Gcq9xSv062IF068NHjcutSbIMev60gXxAvA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.5) - babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.5) - babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.5) - semver: 6.3.0 + '@babel/core': 7.22.15 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.15) + babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.15) + babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.15) + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-spread@7.20.7(@babel/core@7.22.5): + /@babel/plugin-transform-spread@7.20.7(@babel/core@7.22.15): resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 dev: true - /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.22.5): + /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.22.5): + /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typescript@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-typescript@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-pyjnCIniO5PNaEuGxT28h0HbMru3qCVrMqVgVOz/krComdIrY9W6FCLBq9NWHY8HDGaUlan+UhmZElDENIfCcw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-unicode-escapes@7.21.5(@babel/core@7.22.5): + /@babel/plugin-transform-unicode-escapes@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-property-regex@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-unicode-property-regex@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-5ScJ+OmdX+O6HRuMGW4kv7RL9vIKdtdAj9wuWUKy1wbHY3jaM/UlyIiC1G7J6UJiiyMukjjK0QwL3P0vBd0yYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.22.5): + /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-sets-regex@7.22.3(@babel/core@7.22.5): + /@babel/plugin-transform-unicode-sets-regex@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-hNufLdkF8vqywRp+P55j4FHXqAX2LRUccoZHH7AFn1pq5ZOO2ISKW9w13bFZVjBoTqeve2HOgoJCcaziJVhGNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/preset-env@7.22.4(@babel/core@7.22.5): + /@babel/preset-env@7.22.4(@babel/core@7.22.15): resolution: {integrity: sha512-c3lHOjbwBv0TkhYCr+XCR6wKcSZ1QbQTVdSkZUaVpLv8CVWotBMArWUi5UAJrcrQaEnleVkkvaV8F/pmc/STZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.22.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.22.5) - '@babel/plugin-syntax-import-attributes': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-arrow-functions': 7.21.5(@babel/core@7.22.5) - '@babel/plugin-transform-async-generator-functions': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.22.5) - '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.22.5) - '@babel/plugin-transform-class-properties': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-class-static-block': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.22.5) - '@babel/plugin-transform-computed-properties': 7.21.5(@babel/core@7.22.5) - '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.22.5) - '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.22.5) - '@babel/plugin-transform-dynamic-import': 7.22.1(@babel/core@7.22.5) - '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-export-namespace-from': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-for-of': 7.21.5(@babel/core@7.22.5) - '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.22.5) - '@babel/plugin-transform-json-strings': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.22.5) - '@babel/plugin-transform-logical-assignment-operators': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-modules-amd': 7.20.11(@babel/core@7.22.5) - '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.22.5) - '@babel/plugin-transform-modules-systemjs': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-new-target': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-numeric-separator': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-object-rest-spread': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-optional-catch-binding': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-private-methods': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-private-property-in-object': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-regenerator': 7.21.5(@babel/core@7.22.5) - '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.22.5) - '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.22.5) - '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.22.5) - '@babel/plugin-transform-unicode-escapes': 7.21.5(@babel/core@7.22.5) - '@babel/plugin-transform-unicode-property-regex': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-unicode-sets-regex': 7.22.3(@babel/core@7.22.5) - '@babel/preset-modules': 0.1.5(@babel/core@7.22.5) - '@babel/types': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.5) - babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.5) - babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.5) + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.15) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.15) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.22.15) + '@babel/plugin-syntax-import-attributes': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.15) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.15) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-arrow-functions': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-async-generator-functions': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.22.15) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-transform-class-properties': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-class-static-block': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-transform-computed-properties': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.22.15) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-transform-dynamic-import': 7.22.1(@babel/core@7.22.15) + '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-export-namespace-from': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-for-of': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-transform-json-strings': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-transform-logical-assignment-operators': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-modules-amd': 7.20.11(@babel/core@7.22.15) + '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-modules-systemjs': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-new-target': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-numeric-separator': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-object-rest-spread': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-optional-catch-binding': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-private-methods': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-private-property-in-object': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-regenerator': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.22.15) + '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-escapes': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-property-regex': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-sets-regex': 7.22.3(@babel/core@7.22.15) + '@babel/preset-modules': 0.1.5(@babel/core@7.22.15) + '@babel/types': 7.22.15 + babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.15) + babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.15) + babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.15) core-js-compat: 3.30.2 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules@0.1.5(@babel/core@7.22.5): + /@babel/preset-modules@0.1.5(@babel/core@7.22.15): resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.5) - '@babel/types': 7.22.5 + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.15) + '@babel/types': 7.22.15 esutils: 2.0.3 dev: true - /@babel/preset-react@7.22.3(@babel/core@7.22.5): + /@babel/preset-react@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-lxDz1mnZ9polqClBCVBjIVUypoB4qV3/tZUDb/IlYbW1kiiLaXaX+bInbRjl+lNQ/iUZraQ3+S8daEmoELMWug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-react-pure-annotations': 7.18.6(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-react-pure-annotations': 7.18.6(@babel/core@7.22.15) dev: true - /@babel/preset-typescript@7.21.5(@babel/core@7.22.5): + /@babel/preset-typescript@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-iqe3sETat5EOrORXiQ6rWfoOg2y68Cs75B9wNxdPW4kixJxh7aXQE1KPdWLDniC24T/6dSnguF33W9j/ZZQcmA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.21.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.5) - '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.22.5) - '@babel/plugin-transform-typescript': 7.22.3(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-typescript': 7.22.3(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true @@ -1894,97 +1815,51 @@ packages: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true - /@babel/runtime@7.21.5: - resolution: {integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - dev: false - /@babel/runtime@7.22.3: resolution: {integrity: sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - /@babel/template@7.22.5: - resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 - dev: true - - /@babel/traverse@7.21.5: - resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 - /@babel/traverse@7.22.5: - resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} + /@babel/traverse@7.22.15: + resolution: {integrity: sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 - debug: 4.3.4 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true - /@babel/types@7.21.5: - resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} + /@babel/types@7.22.15: + resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 to-fast-properties: 2.0.0 - dev: true - /@babel/types@7.22.4: - resolution: {integrity: sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.21.5 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@babel/types@7.22.5: - resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 - to-fast-properties: 2.0.0 - dev: true - - /@bcoe/v8-coverage@0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true - - /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.22: - resolution: {integrity: sha512-j1UQRaw1sHzq+6x+l2dH1zP0bYAYySfJBgGtxgByl5tCWoNxRxuEOZ0JWrmO9w0dZwgzCKaIsGRqFyjmMliP+A==} + /@bnb-chain/greenfield-cosmos-types@0.4.0-alpha.23: + resolution: {integrity: sha512-VAuk5CxTSbiOa8HvlEY/uf8zoTvgyRvQMwQs0S/7wjoloE0I7hSZXWPUEeFmypB1xZuggDtyCfizS2faL/NKeg==} dependencies: long: 4.0.0 protobufjs: 6.11.4 @@ -2411,7 +2286,7 @@ packages: resolution: {integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==} dependencies: '@noble/hashes': 1.3.0 - protobufjs: 6.11.3 + protobufjs: 6.11.4 dev: false /@cosmjs/amino@0.28.13: @@ -2606,7 +2481,7 @@ packages: '@cosmjs/utils': 0.29.5 cosmjs-types: 0.5.2 long: 4.0.0 - protobufjs: 6.11.3 + protobufjs: 6.11.4 xstream: 11.14.0 transitivePeerDependencies: - bufferutil @@ -2627,7 +2502,7 @@ packages: '@cosmjs/utils': 0.30.1 cosmjs-types: 0.7.2 long: 4.0.0 - protobufjs: 6.11.3 + protobufjs: 6.11.4 xstream: 11.14.0 transitivePeerDependencies: - bufferutil @@ -2713,37 +2588,26 @@ packages: resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} dev: false - /@eslint-community/eslint-utils@4.4.0(eslint@8.40.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.40.0 - eslint-visitor-keys: 3.4.1 - dev: false - - /@eslint-community/eslint-utils@4.4.0(eslint@8.42.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.42.0 - eslint-visitor-keys: 3.4.1 - dev: true + eslint: 8.48.0 + eslint-visitor-keys: 3.4.3 - /@eslint-community/regexpp@4.5.1: - resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + /@eslint-community/regexpp@4.8.0: + resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - /@eslint/eslintrc@2.0.3: - resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 - espree: 9.5.2 + debug: 4.3.4(supports-color@8.1.1) + espree: 9.6.1 globals: 13.20.0 ignore: 5.2.4 import-fresh: 3.3.0 @@ -2753,15 +2617,9 @@ packages: transitivePeerDependencies: - supports-color - /@eslint/js@8.40.0: - resolution: {integrity: sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: false - - /@eslint/js@8.42.0: - resolution: {integrity: sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==} + /@eslint/js@8.48.0: + resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true /@ethereumjs/rlp@4.0.1: resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} @@ -3153,18 +3011,6 @@ packages: minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: true - - /@humanwhocodes/config-array@0.11.8: - resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: false /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} @@ -3173,6 +3019,125 @@ packages: /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@inquirer/checkbox@1.3.11: + resolution: {integrity: sha512-SaQBDr7niZQzoP5Mqzak5pQY7476mvf4Sj2V8VFrbFHWHsavy3nKGKEOgijNHy151bEgqDog1829g/pKa9Qcrw==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.0.0 + '@inquirer/type': 1.1.4 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + figures: 3.2.0 + dev: false + + /@inquirer/confirm@2.0.12: + resolution: {integrity: sha512-Oxz3L0ti+0nWYHPPUIrPkxA2KnQZUGBHnk56yF5RjKqPGFrwvgLZdIXNe/w4I/OtdLeOBqHCrJ+kCvNvHVdk9g==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.0.0 + '@inquirer/type': 1.1.4 + chalk: 4.1.2 + dev: false + + /@inquirer/core@5.0.0: + resolution: {integrity: sha512-q2o4BcANKFyuUI5V6ejmPs1f9SdbJxfnLmhQVb72Fj7hOudoKsJpByJZ0imv9a/rpKDogA+93vtBBMqsnS7/Fg==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/type': 1.1.4 + '@types/mute-stream': 0.0.1 + '@types/node': 20.6.0 + '@types/wrap-ansi': 3.0.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-spinners: 2.9.0 + cli-width: 4.1.0 + figures: 3.2.0 + mute-stream: 1.0.0 + run-async: 3.0.0 + signal-exit: 4.1.0 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: false + + /@inquirer/editor@1.2.10: + resolution: {integrity: sha512-aluYpazbxIdM54L+xNmVHzOjoXGwkliTCvHxhtPg6itmqDGMVmU1z+T2akHt6Xnx9RyrTpbumFB4xn1iI0UfnA==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.0.0 + '@inquirer/type': 1.1.4 + chalk: 4.1.2 + external-editor: 3.1.0 + dev: false + + /@inquirer/expand@1.1.11: + resolution: {integrity: sha512-GSZJbYKPBniyXgWeFLsqiv7TSK9QjpQqCr+i/85Yts3wwixXTrAeoqM3TVVgHO/3j+xeFcuhOm1wy/F2QY5aEg==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.0.0 + '@inquirer/type': 1.1.4 + chalk: 4.1.2 + figures: 3.2.0 + dev: false + + /@inquirer/input@1.2.11: + resolution: {integrity: sha512-sV1nO6+RxMFTHAznmxMkbMkjGQ8NGMWr0mvXjU35YQ0OFEL+YlD+DPbNd9s3ltnswODZAcnM1yFvdko3S/Kj/w==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.0.0 + '@inquirer/type': 1.1.4 + chalk: 4.1.2 + dev: false + + /@inquirer/password@1.1.11: + resolution: {integrity: sha512-r2eiLMlTuY+k+yJf6XLbnAEz7EDyWdjOrgVAWjSKoEDBc3T9/rq2I+7WiY9FUFArYY/1LxmsNWavs5NuMICx8Q==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/input': 1.2.11 + '@inquirer/type': 1.1.4 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + dev: false + + /@inquirer/prompts@3.1.1: + resolution: {integrity: sha512-7m/7Q4eupJYmn0GxM1H1dcekE4F4YlIB6bSKZs2SVeShARYUVPiAKFZ9c15UzYnBtdjCv4zXI17jbNtCNqmxGQ==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/checkbox': 1.3.11 + '@inquirer/confirm': 2.0.12 + '@inquirer/core': 5.0.0 + '@inquirer/editor': 1.2.10 + '@inquirer/expand': 1.1.11 + '@inquirer/input': 1.2.11 + '@inquirer/password': 1.1.11 + '@inquirer/rawlist': 1.2.11 + '@inquirer/select': 1.2.11 + dev: false + + /@inquirer/rawlist@1.2.11: + resolution: {integrity: sha512-4S2t2pCCR3VgyB3lbPKoiJ9020HHAi9g4M+DIyXHYwGE++7wURAwKkzb6v78fS0yKfCbyFt3BTcL2UffQRQ9Fg==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.0.0 + '@inquirer/type': 1.1.4 + chalk: 4.1.2 + dev: false + + /@inquirer/select@1.2.11: + resolution: {integrity: sha512-LH2wzAsWfu/+wcapeht07zTDefuvGTpv0+9dCAQ68QigF+4gHzpWq5+AbBLbxzuH2Wz4WlHcti85nFUPPM1t3A==} + engines: {node: '>=14.18.0'} + dependencies: + '@inquirer/core': 5.0.0 + '@inquirer/type': 1.1.4 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + figures: 3.2.0 + dev: false + + /@inquirer/type@1.1.4: + resolution: {integrity: sha512-a6+RCiXBQEbiA73RT1pBfwiH2I+MPcoZoGKuuUYFkws+6ud7nb5kUQGHFGUSBim25IyVMT/mqbWIrkxetcIb/w==} + engines: {node: '>=14.18.0'} + dev: false + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -3308,7 +3273,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 '@types/node': 18.16.18 chalk: 4.1.2 collect-v8-coverage: 1.0.1 @@ -3342,7 +3307,7 @@ packages: resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 callsites: 3.1.0 graceful-fs: 4.2.11 dev: true @@ -3371,9 +3336,9 @@ packages: resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@jest/types': 29.5.0 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -3402,74 +3367,37 @@ packages: chalk: 4.1.2 dev: true - /@jridgewell/gen-mapping@0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 - dev: true - /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 - dev: true - - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - dev: true + '@jridgewell/trace-mapping': 0.3.19 /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/source-map@0.3.2: - resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} - dependencies: - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 - dev: true /@jridgewell/source-map@0.3.5: resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - dev: true - - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + '@jridgewell/trace-mapping': 0.3.19 dev: true /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true - - /@jridgewell/trace-mapping@0.3.17: - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - /@jridgewell/trace-mapping@0.3.18: - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + /@jridgewell/trace-mapping@0.3.19: + resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -3573,7 +3501,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@types/debug': 4.1.7 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) semver: 7.5.2 superstruct: 1.0.3 transitivePeerDependencies: @@ -3827,8 +3755,7 @@ packages: open: 8.4.2 picocolors: 1.0.0 tiny-glob: 0.2.9 - tslib: 2.5.0 - dev: false + tslib: 2.5.2 /@protobufjs/aspromise@1.1.2: resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -3873,7 +3800,7 @@ packages: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} dev: false - /@rainbow-me/rainbowkit@1.0.5(@types/react@18.2.6)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0): + /@rainbow-me/rainbowkit@1.0.5(@types/react@18.2.12)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0): resolution: {integrity: sha512-vVXYpX9euFrellK0yiLXBC+tp0NFc0IAR/XzXlFNl3x6eaC+0/S99PGEwRQb66SQ9ioVoHdyvxz1BpeeWlc91w==} engines: {node: '>=12.4'} peerDependencies: @@ -3889,7 +3816,7 @@ packages: qrcode: 1.5.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.4(@types/react@18.2.6)(react@18.2.0) + react-remove-scroll: 2.5.4(@types/react@18.2.12)(react@18.2.0) viem: 1.0.6(typescript@4.9.5) wagmi: 1.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(viem@1.0.6) transitivePeerDependencies: @@ -3909,7 +3836,7 @@ packages: slash: 4.0.0 dev: true - /@rollup/plugin-babel@5.3.1(@babel/core@7.22.5)(rollup@2.79.1): + /@rollup/plugin-babel@5.3.1(@babel/core@7.22.15)(rollup@2.79.1): resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -3920,8 +3847,8 @@ packages: '@types/babel__core': optional: true dependencies: - '@babel/core': 7.22.5 - '@babel/helper-module-imports': 7.21.4 + '@babel/core': 7.22.15 + '@babel/helper-module-imports': 7.22.15 '@rollup/pluginutils': 3.1.0(rollup@2.79.1) rollup: 2.79.1 dev: true @@ -4036,13 +3963,8 @@ packages: rollup: 2.79.1 dev: true - /@rushstack/eslint-patch@1.2.0: - resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} - dev: false - /@rushstack/eslint-patch@1.3.0: resolution: {integrity: sha512-IthPJsJR85GhOkp3Hvp8zFOPK5ynKn6STyHa/WZpioK7E1aYDiBzpqQPrngc14DszIUkIrdd3k9Iu0XSzlP/1w==} - dev: true /@safe-global/safe-apps-provider@0.15.2: resolution: {integrity: sha512-BaoGAuY7h6jLBL7P+M6b7hd+1QfTv8uMyNF3udhiNUwA0XwfzH2ePQB13IEV3Mn7wdcIMEEUDS5kHbtAsj60qQ==} @@ -4123,6 +4045,11 @@ packages: resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} dev: true + /@sindresorhus/is@0.7.0: + resolution: {integrity: sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==} + engines: {node: '>=4'} + dev: false + /@sinonjs/commons@3.0.0: resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} dependencies: @@ -4131,6 +4058,7 @@ packages: /@sinonjs/fake-timers@10.2.0: resolution: {integrity: sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==} + deprecated: Use version 10.1.0. Version 10.2.0 has potential breaking issues dependencies: '@sinonjs/commons': 3.0.0 dev: true @@ -4286,7 +4214,7 @@ packages: /@swc/helpers@0.4.14: resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} dependencies: - tslib: 2.5.0 + tslib: 2.5.2 dev: false /@tanstack/query-core@4.29.7: @@ -4351,8 +4279,8 @@ packages: /@types/babel__core@7.20.0: resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} dependencies: - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.5 @@ -4361,20 +4289,20 @@ packages: /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.15 dev: true /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 dev: true /@types/babel__traverse@7.18.5: resolution: {integrity: sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.15 dev: true /@types/bn.js@4.11.6: @@ -4393,6 +4321,12 @@ packages: '@types/node': 18.16.18 dev: false + /@types/cross-spawn@6.0.3: + resolution: {integrity: sha512-BDAkU7WHHRHnvBf5z89lcvACsvkz/n7Tv+HyD/uW76O29HoH1Tk/W6iQrepaZVbisvlEek4ygwT8IW7ow9XLAA==} + dependencies: + '@types/node': 18.16.18 + dev: true + /@types/debug@4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: @@ -4421,6 +4355,13 @@ packages: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} dev: true + /@types/fs-extra@11.0.1: + resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} + dependencies: + '@types/jsonfile': 6.1.1 + '@types/node': 18.16.18 + dev: true + /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: @@ -4470,6 +4411,18 @@ packages: /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + /@types/jsonfile@6.1.1: + resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} + dependencies: + '@types/node': 18.16.18 + dev: true + + /@types/keyv@3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 18.16.18 + dev: false + /@types/lodash.clonedeep@4.5.7: resolution: {integrity: sha512-ccNqkPptFIXrpVqUECi60/DFxjNKsfoQxSQsgcBJCX/fuX1wgyQieojkcWH/KpE3xzLoWN/2k+ZeGqIN3paSvw==} dependencies: @@ -4516,14 +4469,20 @@ packages: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false + /@types/mute-stream@0.0.1: + resolution: {integrity: sha512-0yQLzYhCqGz7CQPE3iDmYjhb7KMBFOP+tBkyw+/Y2YyDI5wpS7itXXxneN1zSsUwWx3Ji6YiVYrhAnpQGS/vkw==} + dependencies: + '@types/node': 18.16.18 + dev: false + /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} /@types/node@18.16.18: resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} - /@types/node@18.16.7: - resolution: {integrity: sha512-MFg7ua/bRtnA1hYE3pVyWxGd/r7aMqjNOdHvlSsXV3n8iaeGKkOaPzpJh6/ovf4bEXWcojkeMJpTsq3mzXW4IQ==} + /@types/node@20.6.0: + resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} dev: false /@types/normalize-package-data@2.4.1: @@ -4547,17 +4506,10 @@ packages: /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - /@types/react-dom@18.2.4: - resolution: {integrity: sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==} - dependencies: - '@types/react': 18.2.7 - dev: false - /@types/react-dom@18.2.5: resolution: {integrity: sha512-sRQsOS/sCLnpQhR4DSKGTtWFE3FZjpQa86KPVbhUqdYMRZ9FEFcfAytKhR/vUG2rH1oFbOOej6cuD7MFSobDRQ==} dependencies: '@types/react': 18.2.12 - dev: true /@types/react@18.2.12: resolution: {integrity: sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==} @@ -4565,23 +4517,6 @@ packages: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 csstype: 3.1.2 - dev: true - - /@types/react@18.2.6: - resolution: {integrity: sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==} - dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.3 - csstype: 3.1.2 - dev: false - - /@types/react@18.2.7: - resolution: {integrity: sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw==} - dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.3 - csstype: 3.1.2 - dev: false /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} @@ -4589,6 +4524,12 @@ packages: '@types/node': 18.16.18 dev: true + /@types/responselike@1.0.0: + resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} + dependencies: + '@types/node': 18.16.18 + dev: false + /@types/scheduler@0.16.3: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} @@ -4614,6 +4555,14 @@ packages: resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} dev: false + /@types/validate-npm-package-name@4.0.0: + resolution: {integrity: sha512-RpO62vB2lkjEkyLbwTheA2+uwYmtVMWTr/kWRI++UAgVdZqNqdAuIQl/SxBCGeMKfdjWaXPbyhZbiCc4PAj+KA==} + dev: true + + /@types/wrap-ansi@3.0.0: + resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} + dev: false + /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: @@ -4636,7 +4585,7 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4647,37 +4596,37 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@eslint-community/regexpp': 4.8.0 + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.42.0 + eslint: 8.48.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 - semver: 7.5.1 + semver: 7.5.2 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.59.7(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.7(eslint@8.42.0)(typescript@4.9.5) - eslint: 8.42.0 + '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) + eslint: 8.48.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser@5.59.11(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/parser@5.59.11(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4691,31 +4640,10 @@ packages: '@typescript-eslint/types': 5.59.11 '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.42.0 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@5.59.5(eslint@8.40.0)(typescript@4.9.5): - resolution: {integrity: sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.59.5 - '@typescript-eslint/types': 5.59.5 - '@typescript-eslint/typescript-estree': 5.59.5(typescript@4.9.5) - debug: 4.3.4 - eslint: 8.40.0 + eslint: 8.48.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: false /@typescript-eslint/scope-manager@5.59.11: resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} @@ -4723,15 +4651,6 @@ packages: dependencies: '@typescript-eslint/types': 5.59.11 '@typescript-eslint/visitor-keys': 5.59.11 - dev: true - - /@typescript-eslint/scope-manager@5.59.5: - resolution: {integrity: sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.59.5 - '@typescript-eslint/visitor-keys': 5.59.5 - dev: false /@typescript-eslint/scope-manager@5.59.7: resolution: {integrity: sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==} @@ -4741,7 +4660,7 @@ packages: '@typescript-eslint/visitor-keys': 5.59.7 dev: true - /@typescript-eslint/type-utils@5.59.11(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4752,9 +4671,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.42.0 + eslint: 8.48.0 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: @@ -4764,12 +4683,6 @@ packages: /@typescript-eslint/types@5.59.11: resolution: {integrity: sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@typescript-eslint/types@5.59.5: - resolution: {integrity: sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: false /@typescript-eslint/types@5.59.7: resolution: {integrity: sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==} @@ -4790,33 +4703,11 @@ packages: debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.1 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@5.59.5(typescript@4.9.5): - resolution: {integrity: sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.59.5 - '@typescript-eslint/visitor-keys': 5.59.5 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.0 + semver: 7.5.2 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: false /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} @@ -4839,39 +4730,39 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.59.11(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.11 '@typescript-eslint/types': 5.59.11 '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) - eslint: 8.42.0 + eslint: 8.48.0 eslint-scope: 5.1.1 - semver: 7.5.1 + semver: 7.5.2 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@5.59.7(eslint@8.42.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 5.59.7 '@typescript-eslint/types': 5.59.7 '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) - eslint: 8.42.0 + eslint: 8.48.0 eslint-scope: 5.1.1 semver: 7.5.2 transitivePeerDependencies: @@ -4884,23 +4775,14 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.59.11 - eslint-visitor-keys: 3.4.1 - dev: true - - /@typescript-eslint/visitor-keys@5.59.5: - resolution: {integrity: sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.59.5 - eslint-visitor-keys: 3.4.1 - dev: false + eslint-visitor-keys: 3.4.3 /@typescript-eslint/visitor-keys@5.59.7: resolution: {integrity: sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.59.7 - eslint-visitor-keys: 3.4.1 + eslint-visitor-keys: 3.4.3 dev: true /@vanilla-extract/css@1.9.1: @@ -5106,17 +4988,6 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/jsonrpc-http-connection@1.0.6: - resolution: {integrity: sha512-/3zSqDi7JDN06E4qm0NmVYMitngXfh21UWwy8zeJcBeJc+Jcs094EbLsIxtziIIKTCCbT88lWuTjl1ZujxN7cw==} - dependencies: - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/safe-json': 1.0.2 - cross-fetch: 3.1.6 - tslib: 1.14.1 - transitivePeerDependencies: - - encoding - dev: false - /@walletconnect/jsonrpc-http-connection@1.0.7: resolution: {integrity: sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==} dependencies: @@ -5207,7 +5078,7 @@ packages: /@walletconnect/legacy-provider@2.0.0: resolution: {integrity: sha512-A8xPebMI1A+50HbWwTpFCbwP7G+1NGKdTKyg8BUUg3h3Y9JucpC1W6w/x0v1Xw7qFEqQnz74LoIN/A3ytH9xrQ==} dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.6 + '@walletconnect/jsonrpc-http-connection': 1.0.7 '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/legacy-client': 2.0.0 '@walletconnect/legacy-modal': 2.0.0 @@ -5571,34 +5442,28 @@ packages: typescript: 4.9.5 dev: false - /abstract-leveldown@0.12.4: - resolution: {integrity: sha512-TOod9d5RDExo6STLMGa+04HGkl+TlMfbDnTyN93/ETJ9DpQ0DaYLqcMZlbXvdc4W3vVo1Qrl+WhSp8zvDsJ+jA==} - dependencies: - xtend: 3.0.0 - dev: true - - /acorn-import-assertions@1.9.0(acorn@8.8.2): + /acorn-import-assertions@1.9.0(acorn@8.10.0): resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.8.2 + acorn: 8.10.0 dev: true - /acorn-jsx@5.3.2(acorn@8.8.2): + /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.8.2 + acorn: 8.10.0 /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} dev: true - /acorn@8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true @@ -5614,7 +5479,7 @@ packages: resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==} engines: {node: '>= 8.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) depd: 2.0.0 humanize-ms: 1.2.1 transitivePeerDependencies: @@ -5693,7 +5558,6 @@ packages: engines: {node: '>=8'} dependencies: type-fest: 0.21.3 - dev: true /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -5734,6 +5598,13 @@ packages: picomatch: 2.3.1 dev: true + /archive-type@4.0.0: + resolution: {integrity: sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==} + engines: {node: '>=4'} + dependencies: + file-type: 4.4.0 + dev: false + /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true @@ -5820,15 +5691,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /asn1.js@5.4.1: - resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} - dependencies: - bn.js: 4.12.0 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - safer-buffer: 2.1.2 - dev: true - /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -5860,15 +5722,9 @@ packages: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} - /axe-core@4.7.1: - resolution: {integrity: sha512-sCXXUhA+cljomZ3ZAwb8i1p3oOlkABzPy08ZDAoGcYuvtBPlQ1Ytde129ArXyHWDhfeewq7rlx9F+cUx2SSlkg==} - engines: {node: '>=4'} - dev: false - /axe-core@4.7.2: resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} engines: {node: '>=4'} - dev: true /axios@0.21.4: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} @@ -5893,17 +5749,17 @@ packages: dependencies: deep-equal: 2.2.1 - /babel-jest@29.5.0(@babel/core@7.22.5): + /babel-jest@29.5.0(@babel/core@7.22.15): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@jest/transform': 29.5.0 '@types/babel__core': 7.20.0 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0(@babel/core@7.22.5) + babel-preset-jest: 29.5.0(@babel/core@7.22.15) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -5915,7 +5771,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-plugin-utils': 7.22.5 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -5928,8 +5784,8 @@ packages: resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.5 + '@babel/template': 7.22.15 + '@babel/types': 7.22.15 '@types/babel__core': 7.20.0 '@types/babel__traverse': 7.18.5 dev: true @@ -5943,38 +5799,38 @@ packages: resolve: 1.22.2 dev: true - /babel-plugin-polyfill-corejs2@0.4.3(@babel/core@7.22.5): + /babel-plugin-polyfill-corejs2@0.4.3(@babel/core@7.22.15): resolution: {integrity: sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.22.5 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.5) - semver: 6.3.0 + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.15 + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.15) + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.8.1(@babel/core@7.22.5): + /babel-plugin-polyfill-corejs3@0.8.1(@babel/core@7.22.15): resolution: {integrity: sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.15) core-js-compat: 3.30.2 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.5.0(@babel/core@7.22.5): + /babel-plugin-polyfill-regenerator@0.5.0(@babel/core@7.22.15): resolution: {integrity: sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.15) transitivePeerDependencies: - supports-color dev: true @@ -5983,54 +5839,54 @@ packages: resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.5): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.15): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5) - dev: true - - /babel-preset-jest@29.5.0(@babel/core@7.22.5): + '@babel/core': 7.22.15 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.15) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.15) + dev: true + + /babel-preset-jest@29.5.0(@babel/core@7.22.15): resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.15) dev: true /babel-preset-react-app@10.0.1: resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} dependencies: - '@babel/core': 7.22.5 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-proposal-decorators': 7.22.3(@babel/core@7.22.5) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.5) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.22.5) - '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.22.5) - '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.22.5) - '@babel/plugin-transform-runtime': 7.22.4(@babel/core@7.22.5) - '@babel/preset-env': 7.22.4(@babel/core@7.22.5) - '@babel/preset-react': 7.22.3(@babel/core@7.22.5) - '@babel/preset-typescript': 7.21.5(@babel/core@7.22.5) + '@babel/core': 7.22.15 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-decorators': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-runtime': 7.22.4(@babel/core@7.22.15) + '@babel/preset-env': 7.22.4(@babel/core@7.22.15) + '@babel/preset-react': 7.22.3(@babel/core@7.22.15) + '@babel/preset-typescript': 7.21.5(@babel/core@7.22.15) '@babel/runtime': 7.22.3 babel-plugin-macros: 3.1.0 babel-plugin-transform-react-remove-prop-types: 0.4.24 @@ -6094,11 +5950,20 @@ packages: file-uri-to-path: 1.0.0 dev: false - /bl@0.8.2: - resolution: {integrity: sha512-pfqikmByp+lifZCS0p6j6KreV6kNU6Apzpm2nKOk+94cZb/jvle55+JxWiByUQ0Wo/+XnDXEy5MxxKMb6r0VIw==} + /bl@1.2.3: + resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} dependencies: - readable-stream: 1.0.34 - dev: true + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + dev: false + + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false /blakejs@1.2.1: resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} @@ -6106,9 +5971,11 @@ packages: /bn.js@4.12.0: resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + dev: false /bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + dev: false /borsh@0.7.0: resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} @@ -6144,6 +6011,7 @@ packages: /brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: false /browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} @@ -6158,74 +6026,17 @@ packages: evp_bytestokey: 1.0.3 inherits: 2.0.4 safe-buffer: 5.2.1 + dev: false - /browserify-cipher@1.0.1: - resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} - dependencies: - browserify-aes: 1.2.0 - browserify-des: 1.0.2 - evp_bytestokey: 1.0.3 - dev: true - - /browserify-des@1.0.2: - resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} - dependencies: - cipher-base: 1.0.4 - des.js: 1.0.1 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /browserify-fs@1.0.0: - resolution: {integrity: sha512-8LqHRPuAEKvyTX34R6tsw4bO2ro6j9DmlYBhiYWHRM26Zv2cBw1fJOU0NeUQ0RkXkPn/PFBjhA0dm4AgaBurTg==} - dependencies: - level-filesystem: 1.2.0 - level-js: 2.2.4 - levelup: 0.18.6 - dev: true - - /browserify-rsa@4.1.0: - resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} - dependencies: - bn.js: 5.2.1 - randombytes: 2.1.0 - dev: true - - /browserify-sign@4.2.1: - resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==} - dependencies: - bn.js: 5.2.1 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - create-hmac: 1.1.7 - elliptic: 6.5.4 - inherits: 2.0.4 - parse-asn1: 5.1.6 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - dev: true - - /browserslist@4.21.7: - resolution: {integrity: sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001489 - electron-to-chromium: 1.4.411 - node-releases: 2.0.12 - update-browserslist-db: 1.0.11(browserslist@4.21.7) - dev: true - - /browserslist@4.21.9: - resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} + /browserslist@4.21.10: + resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001517 - electron-to-chromium: 1.4.473 + caniuse-lite: 1.0.30001527 + electron-to-chromium: 1.4.508 node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.9) - dev: true + update-browserslist-db: 1.0.11(browserslist@4.21.10) /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -6254,9 +6065,24 @@ packages: node-int64: 0.4.0 dev: true - /buffer-es6@4.9.3: - resolution: {integrity: sha512-Ibt+oXxhmeYJSsCkODPqNpPmyegefiD8rfutH1NYGhMZQhSp95Rz7haemgnJ6dxa6LT+JLLbtgOMORRluwKktw==} - dev: true + /buffer-alloc-unsafe@1.1.0: + resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} + dev: false + + /buffer-alloc@1.2.0: + resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} + dependencies: + buffer-alloc-unsafe: 1.1.0 + buffer-fill: 1.0.0 + dev: false + + /buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: false + + /buffer-fill@1.0.0: + resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} + dev: false /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -6264,6 +6090,14 @@ packages: /buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: false + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -6288,9 +6122,27 @@ packages: /builtins@2.0.1: resolution: {integrity: sha512-XkkVe5QAb6guWPXTzpSrYpSlN3nqEmrrE2TkAr/tp7idSF6+MONh9WvKrAuR3HiKLvoSgmbs8l1U9IPmMrIoLw==} dependencies: - semver: 6.3.0 + semver: 6.3.1 dev: true + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.5.2 + dev: false + + /cacheable-request@2.1.4: + resolution: {integrity: sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==} + dependencies: + clone-response: 1.0.2 + get-stream: 3.0.0 + http-cache-semantics: 3.8.1 + keyv: 3.0.0 + lowercase-keys: 1.0.0 + normalize-url: 2.0.1 + responselike: 1.0.2 + dev: false + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: @@ -6319,23 +6171,24 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001486: - resolution: {integrity: sha512-uv7/gXuHi10Whlj0pp5q/tsK/32J2QSqVRKQhs2j8VsDCjgyruAh/eEXHF822VqO9yT6iZKw3nRwZRSPBE9OQg==} - dev: false - - /caniuse-lite@1.0.30001489: - resolution: {integrity: sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==} - dev: true - - /caniuse-lite@1.0.30001517: - resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==} - dev: true + /caniuse-lite@1.0.30001527: + resolution: {integrity: sha512-YkJi7RwPgWtXVSgK4lG9AHH57nSzvvOp9MesgXmw4Q7n0C3H04L0foHqfxcmSAm5AcWb8dW9AYj2tR7/5GnddQ==} /case@1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} engines: {node: '>= 0.8.0'} dev: false + /caw@2.0.1: + resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} + engines: {node: '>=4'} + dependencies: + get-proxy: 2.1.0 + isurl: 1.0.0 + tunnel-agent: 0.6.0 + url-to-options: 1.0.1 + dev: false + /chai@4.3.7: resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} @@ -6376,7 +6229,6 @@ packages: /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true /check-error@1.0.2: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} @@ -6394,7 +6246,7 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /chrome-trace-event@1.0.3: @@ -6412,6 +6264,7 @@ packages: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 + dev: false /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} @@ -6437,7 +6290,11 @@ packages: engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 - dev: true + + /cli-spinners@2.9.0: + resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} + engines: {node: '>=6'} + dev: false /cli-truncate@2.1.0: resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} @@ -6455,6 +6312,11 @@ packages: string-width: 5.1.2 dev: true + /cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + dev: false + /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false @@ -6492,14 +6354,15 @@ packages: shallow-clone: 3.0.1 dev: true - /clone@0.1.19: - resolution: {integrity: sha512-IO78I0y6JcSpEPHzK4obKdsL7E7oLdRVDVOLwr2Hkbjsb+Eoz0dxW6tef0WizoKu0gLC4oZSZuEF4U2K6w1WQw==} - dev: true + /clone-response@1.0.2: + resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} + dependencies: + mimic-response: 1.0.1 + dev: false /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - dev: true /clsx@1.1.1: resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==} @@ -6553,6 +6416,11 @@ packages: engines: {node: '>=14'} dev: true + /commander@11.0.0: + resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} + engines: {node: '>=16'} + dev: false + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -6570,20 +6438,24 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} + /config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - dev: true + ini: 1.3.8 + proto-list: 1.2.4 + dev: false /confusing-browser-globals@1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: true + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.2.1 + dev: false + /conventional-changelog-angular@5.0.13: resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} engines: {node: '>=10'} @@ -6621,7 +6493,6 @@ packages: /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -6651,12 +6522,12 @@ packages: /core-js-compat@3.30.2: resolution: {integrity: sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA==} dependencies: - browserslist: 4.21.7 + browserslist: 4.21.10 dev: true /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: true + dev: false /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} @@ -6713,7 +6584,7 @@ packages: resolution: {integrity: sha512-zxCtIJj8v3Di7s39uN4LNcN3HIE1z0B9Z0SPE8ZNQR0oSzsuSe1ACgxoFkvhkS7WBasCAFcglS11G2hyfd5tPg==} dependencies: long: 4.0.0 - protobufjs: 6.11.3 + protobufjs: 6.11.4 dev: false /cosmjs-types@0.7.2: @@ -6723,13 +6594,6 @@ packages: protobufjs: 6.11.4 dev: false - /create-ecdh@4.0.4: - resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} - dependencies: - bn.js: 4.12.0 - elliptic: 6.5.4 - dev: true - /create-hash@1.2.0: resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} dependencies: @@ -6738,6 +6602,7 @@ packages: md5.js: 1.3.5 ripemd160: 2.0.2 sha.js: 2.4.11 + dev: false /create-hmac@1.1.7: resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} @@ -6748,6 +6613,7 @@ packages: ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 + dev: false /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -6797,22 +6663,6 @@ packages: sha3: 2.1.4 dev: false - /crypto-browserify@3.12.0: - resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} - dependencies: - browserify-cipher: 1.0.1 - browserify-sign: 4.2.1 - create-ecdh: 4.0.4 - create-hash: 1.2.0 - create-hmac: 1.1.7 - diffie-hellman: 5.0.3 - inherits: 2.0.4 - pbkdf2: 3.1.2 - public-encrypt: 4.0.3 - randombytes: 2.1.0 - randomfill: 1.0.4 - dev: true - /css-what@5.1.0: resolution: {integrity: sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==} engines: {node: '>= 6'} @@ -6875,17 +6725,6 @@ packages: dependencies: ms: 2.1.3 - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -6897,7 +6736,6 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 - dev: true /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -6921,6 +6759,66 @@ packages: engines: {node: '>=0.10'} dev: false + /decompress-response@3.3.0: + resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} + engines: {node: '>=4'} + dependencies: + mimic-response: 1.0.1 + dev: false + + /decompress-tar@4.1.1: + resolution: {integrity: sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==} + engines: {node: '>=4'} + dependencies: + file-type: 5.2.0 + is-stream: 1.1.0 + tar-stream: 1.6.2 + dev: false + + /decompress-tarbz2@4.1.1: + resolution: {integrity: sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==} + engines: {node: '>=4'} + dependencies: + decompress-tar: 4.1.1 + file-type: 6.2.0 + is-stream: 1.1.0 + seek-bzip: 1.0.6 + unbzip2-stream: 1.4.3 + dev: false + + /decompress-targz@4.1.1: + resolution: {integrity: sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==} + engines: {node: '>=4'} + dependencies: + decompress-tar: 4.1.1 + file-type: 5.2.0 + is-stream: 1.1.0 + dev: false + + /decompress-unzip@4.0.1: + resolution: {integrity: sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==} + engines: {node: '>=4'} + dependencies: + file-type: 3.9.0 + get-stream: 2.3.1 + pify: 2.3.0 + yauzl: 2.10.0 + dev: false + + /decompress@4.2.1: + resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==} + engines: {node: '>=4'} + dependencies: + decompress-tar: 4.1.1 + decompress-tarbz2: 4.1.1 + decompress-targz: 4.1.1 + decompress-unzip: 4.0.1 + graceful-fs: 4.2.11 + make-dir: 1.3.0 + pify: 2.3.0 + strip-dirs: 2.1.0 + dev: false + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true @@ -6969,18 +6867,10 @@ packages: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 - dev: true - - /deferred-leveldown@0.2.0: - resolution: {integrity: sha512-+WCbb4+ez/SZ77Sdy1iadagFiVzMB89IKOBhglgnUkVxOxRWmmFsz8UDSNWh4Rhq+3wr/vMFlYj+rdEwWUDdng==} - dependencies: - abstract-leveldown: 0.12.4 - dev: true /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} - dev: false /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} @@ -7017,13 +6907,6 @@ packages: engines: {node: '>= 0.8'} dev: false - /des.js@1.0.1: - resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==} - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - dev: true - /detect-browser@5.3.0: resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} dev: false @@ -7057,14 +6940,6 @@ packages: engines: {node: '>=0.3.1'} dev: true - /diffie-hellman@5.0.3: - resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} - dependencies: - bn.js: 4.12.0 - miller-rabin: 4.0.1 - randombytes: 2.1.0 - dev: true - /dijkstrajs@1.0.3: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} dev: false @@ -7103,6 +6978,36 @@ packages: engines: {node: '>=10'} dev: true + /download-git-repo@3.0.2: + resolution: {integrity: sha512-N8hWXD4hXqmEcNoR8TBYFntaOcYvEQ7Bz90mgm3bZRTuteGQqwT32VDMnTyD0KTEvb8BWrMc1tVmzuV9u/WrAg==} + dependencies: + download: 7.1.0 + git-clone: 0.1.0 + rimraf: 3.0.2 + dev: false + + /download@7.1.0: + resolution: {integrity: sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==} + engines: {node: '>=6'} + dependencies: + archive-type: 4.0.0 + caw: 2.0.1 + content-disposition: 0.5.4 + decompress: 4.2.1 + ext-name: 5.0.0 + file-type: 8.1.0 + filenamify: 2.1.0 + get-stream: 3.0.0 + got: 8.3.2 + make-dir: 1.3.0 + p-event: 2.3.1 + pify: 3.0.0 + dev: false + + /duplexer3@0.1.5: + resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} + dev: false + /duplexify@4.1.2: resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} dependencies: @@ -7126,13 +7031,8 @@ packages: - utf-8-validate dev: false - /electron-to-chromium@1.4.411: - resolution: {integrity: sha512-5VXLW4Qw89vM2WTICHua/y8v7fKGDRVa2VPOtBB9IpLvW316B+xd8yD1wTmLPY2ot/00P/qt87xdolj4aG/Lzg==} - dev: true - - /electron-to-chromium@1.4.473: - resolution: {integrity: sha512-aVfC8+440vGfl06l8HKKn8/PD5jRfSnLkTTD65EFvU46igbpQRri1gxSzW9/+TeUlwYzrXk1sw867T96zlyECA==} - dev: true + /electron-to-chromium@1.4.508: + resolution: {integrity: sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==} /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -7144,6 +7044,7 @@ packages: inherits: 2.0.4 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 + dev: false /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -7166,21 +7067,12 @@ packages: once: 1.4.0 dev: false - /enhanced-resolve@5.12.0: - resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - dev: false - /enhanced-resolve@5.15.0: resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 - dev: true /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} @@ -7195,13 +7087,6 @@ packages: hasBin: true dev: true - /errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true - dependencies: - prr: 1.0.1 - dev: true - /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -7298,7 +7183,6 @@ packages: /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - dev: true /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} @@ -7313,7 +7197,7 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-config-next@13.1.6(eslint@8.40.0)(typescript@4.9.5): + /eslint-config-next@13.1.6(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-0cg7h5wztg/SoLAlxljZ0ZPUQ7i6QKqRiP4M2+MgTZtxWwNKb2JSwNc18nJ6/kXBI6xYvPraTbQSIhAuVw6czw==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -7323,22 +7207,22 @@ packages: optional: true dependencies: '@next/eslint-plugin-next': 13.1.6 - '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/parser': 5.59.5(eslint@8.40.0)(typescript@4.9.5) - eslint: 8.40.0 + '@rushstack/eslint-patch': 1.3.0 + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.40.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.5)(eslint-import-resolver-typescript@3.5.3)(eslint@8.40.0) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.40.0) - eslint-plugin-react: 7.32.2(eslint@8.40.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.40.0) + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) + eslint-plugin-react: 7.32.2(eslint@8.48.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) typescript: 4.9.5 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color dev: false - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0)(typescript@4.9.5): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7348,21 +7232,21 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.22.5 - '@babel/eslint-parser': 7.21.8(@babel/core@7.22.5)(eslint@8.42.0) + '@babel/core': 7.22.15 + '@babel/eslint-parser': 7.21.8(@babel/core@7.22.15)(eslint@8.48.0) '@rushstack/eslint-patch': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 - eslint: 8.42.0 - eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.42.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@4.9.5) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.42.0) - eslint-plugin-react: 7.32.2(eslint@8.42.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.42.0) - eslint-plugin-testing-library: 5.11.0(eslint@8.42.0)(typescript@4.9.5) + eslint: 8.48.0 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) + eslint-plugin-react: 7.32.2(eslint@8.48.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) + eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' @@ -7382,56 +7266,26 @@ packages: transitivePeerDependencies: - supports-color - /eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.27.5)(eslint@8.40.0): + /eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0): resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4 - enhanced-resolve: 5.12.0 - eslint: 8.40.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.5)(eslint-import-resolver-typescript@3.5.3)(eslint@8.40.0) + debug: 4.3.4(supports-color@8.1.1) + enhanced-resolve: 5.15.0 + eslint: 8.48.0 + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) get-tsconfig: 4.5.0 globby: 13.1.3 - is-core-module: 2.12.0 + is-core-module: 2.12.1 is-glob: 4.0.3 synckit: 0.8.5 transitivePeerDependencies: - supports-color - dev: false - - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.42.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) - debug: 3.2.7 - eslint: 8.42.0 - eslint-import-resolver-node: 0.3.7 - transitivePeerDependencies: - - supports-color - dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.5)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.40.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -7452,16 +7306,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.5(eslint@8.40.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 3.2.7 - eslint: 8.40.0 + eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.40.0) + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) transitivePeerDependencies: - supports-color - dev: false - /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.5)(eslint@8.42.0): + /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0): resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -7469,14 +7322,14 @@ packages: '@babel/plugin-transform-react-jsx': ^7.14.9 eslint: ^8.1.0 dependencies: - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) - eslint: 8.42.0 + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) + eslint: 8.48.0 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint@8.42.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -7486,63 +7339,29 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.42.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.42.0 + eslint: 8.48.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint@8.42.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) has: 1.0.3 is-core-module: 2.12.1 is-glob: 4.0.3 minimatch: 3.1.2 object.values: 1.1.6 resolve: 1.22.2 - semver: 6.3.0 + semver: 6.3.1 tsconfig-paths: 3.14.2 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.5)(eslint-import-resolver-typescript@3.5.3)(eslint@8.40.0): - resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - '@typescript-eslint/parser': 5.59.5(eslint@8.40.0)(typescript@4.9.5) - array-includes: 3.1.6 - array.prototype.flat: 1.3.1 - array.prototype.flatmap: 1.3.1 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.40.0 - eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.5)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.40.0) - has: 1.0.3 - is-core-module: 2.12.0 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.values: 1.1.6 - resolve: 1.22.2 - semver: 6.3.0 - tsconfig-paths: 3.14.2 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: false - - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.42.0)(typescript@4.9.5): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -7555,40 +7374,15 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.42.0)(typescript@4.9.5) - '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.42.0)(typescript@4.9.5) - eslint: 8.42.0 + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) + eslint: 8.48.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.40.0): - resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - '@babel/runtime': 7.21.5 - aria-query: 5.1.3 - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - ast-types-flow: 0.0.7 - axe-core: 4.7.1 - axobject-query: 3.1.1 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 8.40.0 - has: 1.0.3 - jsx-ast-utils: 3.3.3 - language-tags: 1.0.5 - minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - semver: 6.3.0 - dev: false - - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.42.0): + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.48.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: @@ -7603,17 +7397,16 @@ packages: axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.42.0 + eslint: 8.48.0 has: 1.0.3 jsx-ast-utils: 3.3.3 language-tags: 1.0.5 minimatch: 3.1.2 object.entries: 1.1.6 object.fromentries: 2.0.6 - semver: 6.3.0 - dev: true + semver: 6.3.1 - /eslint-plugin-prettier@4.2.1(eslint@8.42.0)(prettier@2.8.8): + /eslint-plugin-prettier@4.2.1(eslint@8.48.0)(prettier@2.8.8): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -7624,54 +7417,20 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.42.0 + eslint: 8.48.0 prettier: 2.8.8 prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.40.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.48.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.40.0 - dev: false - - /eslint-plugin-react-hooks@4.6.0(eslint@8.42.0): - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - dependencies: - eslint: 8.42.0 - dev: true - - /eslint-plugin-react@7.32.2(eslint@8.40.0): - resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - array.prototype.tosorted: 1.1.1 - doctrine: 2.1.0 - eslint: 8.40.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.3 - minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - object.hasown: 1.1.2 - object.values: 1.1.6 - prop-types: 15.8.1 - resolve: 2.0.0-next.4 - semver: 6.3.0 - string.prototype.matchall: 4.0.8 - dev: false + eslint: 8.48.0 - /eslint-plugin-react@7.32.2(eslint@8.42.0): + /eslint-plugin-react@7.32.2(eslint@8.48.0): resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -7681,7 +7440,7 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.42.0 + eslint: 8.48.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -7691,18 +7450,17 @@ packages: object.values: 1.1.6 prop-types: 15.8.1 resolve: 2.0.0-next.4 - semver: 6.3.0 + semver: 6.3.1 string.prototype.matchall: 4.0.8 - dev: true - /eslint-plugin-testing-library@5.11.0(eslint@8.42.0)(typescript@4.9.5): + /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.42.0)(typescript@4.9.5) - eslint: 8.42.0 + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + eslint: 8.48.0 transitivePeerDependencies: - supports-color - typescript @@ -7716,8 +7474,8 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope@7.2.0: - resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 @@ -7725,71 +7483,22 @@ packages: /eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - - /eslint-visitor-keys@3.4.1: - resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - /eslint@8.40.0: - resolution: {integrity: sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.40.0) - '@eslint-community/regexpp': 4.5.1 - '@eslint/eslintrc': 2.0.3 - '@eslint/js': 8.40.0 - '@humanwhocodes/config-array': 0.11.8 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.0 - eslint-visitor-keys: 3.4.1 - espree: 9.5.2 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.20.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.4 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-sdsl: 4.4.0 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.1 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: false + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /eslint@8.42.0: - resolution: {integrity: sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==} + /eslint@8.48.0: + resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) - '@eslint-community/regexpp': 4.5.1 - '@eslint/eslintrc': 2.0.3 - '@eslint/js': 8.42.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/regexpp': 4.8.0 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.48.0 '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -7799,9 +7508,9 @@ packages: debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.0 - eslint-visitor-keys: 3.4.1 - espree: 9.5.2 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -7811,7 +7520,6 @@ packages: globals: 13.20.0 graphemer: 1.4.0 ignore: 5.2.4 - import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -7821,21 +7529,19 @@ packages: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.1 + optionator: 0.9.3 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true - /espree@9.5.2: - resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.8.2 - acorn-jsx: 5.3.2(acorn@8.8.2) - eslint-visitor-keys: 3.4.1 + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.3 /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -8041,6 +7747,7 @@ packages: dependencies: md5.js: 1.3.5 safe-buffer: 5.2.1 + dev: false /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} @@ -8088,6 +7795,21 @@ packages: jest-util: 29.5.0 dev: true + /ext-list@2.2.2: + resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} + engines: {node: '>=0.10.0'} + dependencies: + mime-db: 1.52.0 + dev: false + + /ext-name@5.0.0: + resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==} + engines: {node: '>=4'} + dependencies: + ext-list: 2.2.2 + sort-keys-length: 1.0.1 + dev: false + /extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} dev: true @@ -8099,7 +7821,6 @@ packages: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 - dev: true /eyes@0.1.8: resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} @@ -8165,16 +7886,68 @@ packages: bser: 2.1.1 dev: true + /fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + dependencies: + pend: 1.2.0 + dev: false + + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: false + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 + /file-type@3.9.0: + resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} + engines: {node: '>=0.10.0'} + dev: false + + /file-type@4.4.0: + resolution: {integrity: sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==} + engines: {node: '>=4'} + dev: false + + /file-type@5.2.0: + resolution: {integrity: sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==} + engines: {node: '>=4'} + dev: false + + /file-type@6.2.0: + resolution: {integrity: sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==} + engines: {node: '>=4'} + dev: false + + /file-type@8.1.0: + resolution: {integrity: sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==} + engines: {node: '>=6'} + dev: false + /file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} dev: false + /filename-reserved-regex@2.0.0: + resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} + engines: {node: '>=4'} + dev: false + + /filenamify@2.1.0: + resolution: {integrity: sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==} + engines: {node: '>=4'} + dependencies: + filename-reserved-regex: 2.0.0 + strip-outer: 1.0.1 + trim-repeated: 1.0.0 + dev: false + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -8237,10 +8010,6 @@ packages: dependencies: is-callable: 1.2.7 - /foreach@2.0.6: - resolution: {integrity: sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==} - dev: true - /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -8250,6 +8019,17 @@ packages: mime-types: 2.1.35 dev: false + /from2@2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + dev: false + + /fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + dev: false + /fs-extra@11.1.1: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} engines: {node: '>=14.14'} @@ -8257,7 +8037,6 @@ packages: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 - dev: true /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} @@ -8280,8 +8059,8 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true @@ -8303,16 +8082,9 @@ packages: /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - /fwd-stream@1.0.4: - resolution: {integrity: sha512-q2qaK2B38W07wfPSQDKMiKOD5Nzv2XyuvQlrmh1q0pxyHNanKHq8lwQ6n9zHucAwA5EbzRJKEgds2orn88rYTg==} - dependencies: - readable-stream: 1.0.34 - dev: true - /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - dev: true /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} @@ -8322,13 +8094,6 @@ packages: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true - /get-intrinsic@1.2.0: - resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.3 - /get-intrinsic@1.2.1: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: @@ -8347,6 +8112,26 @@ packages: engines: {node: '>=8.0.0'} dev: true + /get-proxy@2.1.0: + resolution: {integrity: sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==} + engines: {node: '>=4'} + dependencies: + npm-conf: 1.1.3 + dev: false + + /get-stream@2.3.1: + resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==} + engines: {node: '>=0.10.0'} + dependencies: + object-assign: 4.1.1 + pinkie-promise: 2.0.1 + dev: false + + /get-stream@3.0.0: + resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} + engines: {node: '>=4'} + dev: false + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -8361,6 +8146,9 @@ packages: /get-tsconfig@4.5.0: resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} + + /git-clone@0.1.0: + resolution: {integrity: sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==} dev: false /git-raw-commits@2.0.11: @@ -8433,7 +8221,6 @@ packages: /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - dev: true /globals@13.20.0: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} @@ -8449,7 +8236,6 @@ packages: /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - dev: false /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -8485,7 +8271,6 @@ packages: /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - dev: false /google-protobuf@3.21.2: resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} @@ -8496,15 +8281,53 @@ packages: dependencies: get-intrinsic: 1.2.1 + /got@8.3.2: + resolution: {integrity: sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==} + engines: {node: '>=4'} + dependencies: + '@sindresorhus/is': 0.7.0 + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.0 + cacheable-request: 2.1.4 + decompress-response: 3.3.0 + duplexer3: 0.1.5 + get-stream: 3.0.0 + into-stream: 3.1.0 + is-retry-allowed: 1.2.0 + isurl: 1.0.0 + lowercase-keys: 1.0.1 + mimic-response: 1.0.1 + p-cancelable: 0.4.1 + p-timeout: 2.0.1 + pify: 3.0.0 + safe-buffer: 5.2.1 + timed-out: 4.0.1 + url-parse-lax: 3.0.0 + url-to-options: 1.0.1 + dev: false + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true + + /handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.17.4 + dev: false /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} @@ -8525,16 +8348,26 @@ packages: /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} + /has-symbol-support-x@1.4.2: + resolution: {integrity: sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==} + dev: false + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} + /has-to-string-tag-x@1.4.1: + resolution: {integrity: sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==} + dependencies: + has-symbol-support-x: 1.4.2 + dev: false + /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} @@ -8554,12 +8387,14 @@ packages: inherits: 2.0.4 readable-stream: 3.6.2 safe-buffer: 5.2.1 + dev: false /hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 + dev: false /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} @@ -8576,6 +8411,7 @@ packages: hash.js: 1.1.7 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 + dev: false /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -8592,6 +8428,10 @@ packages: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true + /http-cache-semantics@3.8.1: + resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==} + dev: false + /human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} dev: true @@ -8623,11 +8463,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - dev: true - - /idb-wrapper@1.7.2: - resolution: {integrity: sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg==} - dev: true /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -8662,10 +8497,6 @@ packages: engines: {node: '>=8'} dev: true - /indexof@0.0.1: - resolution: {integrity: sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==} - dev: true - /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -8677,7 +8508,6 @@ packages: /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: true /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} @@ -8697,6 +8527,14 @@ packages: engines: {node: '>=10.13.0'} dev: true + /into-stream@3.1.0: + resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==} + engines: {node: '>=4'} + dependencies: + from2: 2.3.0 + p-is-promise: 1.1.0 + dev: false + /invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: @@ -8758,12 +8596,6 @@ packages: ci-info: 3.8.0 dev: true - /is-core-module@2.12.0: - resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} - dependencies: - has: 1.0.3 - dev: false - /is-core-module@2.12.1: resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} dependencies: @@ -8779,7 +8611,6 @@ packages: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true - dev: false /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} @@ -8817,6 +8648,11 @@ packages: engines: {node: '>=6.5.0', npm: '>=3'} dev: false + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: false + /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} @@ -8824,6 +8660,10 @@ packages: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true + /is-natural-number@4.0.1: + resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==} + dev: false + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} @@ -8843,9 +8683,9 @@ packages: engines: {node: '>=8'} dev: true - /is-object@0.1.2: - resolution: {integrity: sha512-GkfZZlIZtpkFrqyAXPQSRBMsaHAw+CgoKe2HXAkjd/sfoI9+hS8PT4wg2rJxdQyUKr7N2vHJbg7/jQtE5l5vBQ==} - dev: true + /is-object@1.0.2: + resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} + dev: false /is-path-cwd@2.2.0: resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} @@ -8873,7 +8713,6 @@ packages: /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} - dev: true /is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} @@ -8900,6 +8739,11 @@ packages: call-bind: 1.0.2 has-tostringtag: 1.0.0 + /is-retry-allowed@1.2.0: + resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} + engines: {node: '>=0.10.0'} + dev: false + /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} @@ -8908,6 +8752,11 @@ packages: dependencies: call-bind: 1.0.2 + /is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + dev: false + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -8961,7 +8810,6 @@ packages: /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - dev: true /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} @@ -8987,27 +8835,14 @@ packages: engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - dev: false - - /is@0.2.7: - resolution: {integrity: sha512-ajQCouIvkcSnl2iRdK70Jug9mohIHVX9uKpoWnl115ov0R5mzBvRrXxrnHbsA+8AdwCwc/sfw7HXmd4I5EJBdQ==} - dev: true - - /isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - dev: true /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: true + dev: false /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - /isbuffer@0.0.0: - resolution: {integrity: sha512-xU+NoHp+YtKQkaM2HsQchYn0sltxMxew0HavMfHbjnucBoTSGbw745tL+Z7QBANleWM1eEQMenEpi174mIeS4g==} - dev: true - /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -9041,11 +8876,11 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.22.5 - '@babel/parser': 7.22.5 + '@babel/core': 7.22.15 + '@babel/parser': 7.22.15 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true @@ -9063,7 +8898,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -9078,6 +8913,14 @@ packages: istanbul-lib-report: 3.0.0 dev: true + /isurl@1.0.0: + resolution: {integrity: sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==} + engines: {node: '>= 4'} + dependencies: + has-to-string-tag-x: 1.4.1 + is-object: 1.0.2 + dev: false + /jayson@3.7.0: resolution: {integrity: sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==} engines: {node: '>=8'} @@ -9177,11 +9020,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 '@types/node': 18.16.18 - babel-jest: 29.5.0(@babel/core@7.22.5) + babel-jest: 29.5.0(@babel/core@7.22.15) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 @@ -9266,7 +9109,7 @@ packages: micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /jest-leak-detector@29.5.0: @@ -9291,7 +9134,7 @@ packages: resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.21.4 + '@babel/code-frame': 7.22.13 '@jest/types': 29.5.0 '@types/stack-utils': 2.0.1 chalk: 4.1.2 @@ -9416,18 +9259,18 @@ packages: resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.5 - '@babel/generator': 7.21.5 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.5) - '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.5) - '@babel/traverse': 7.21.5 - '@babel/types': 7.21.5 + '@babel/core': 7.22.15 + '@babel/generator': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.15) + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 '@jest/expect-utils': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@types/babel__traverse': 7.18.5 '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.15) chalk: 4.1.2 expect: 29.5.0 graceful-fs: 4.2.11 @@ -9438,7 +9281,7 @@ packages: jest-util: 29.5.0 natural-compare: 1.4.0 pretty-format: 29.5.0 - semver: 7.5.1 + semver: 7.5.2 transitivePeerDependencies: - supports-color dev: true @@ -9529,10 +9372,6 @@ packages: - ts-node dev: true - /js-sdsl@4.4.0: - resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} - dev: false - /js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} dev: false @@ -9563,7 +9402,10 @@ packages: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true - dev: true + + /json-buffer@3.0.0: + resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} + dev: false /json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} @@ -9609,7 +9451,6 @@ packages: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - dev: true /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -9623,7 +9464,6 @@ packages: universalify: 2.0.0 optionalDependencies: graceful-fs: 4.2.11 - dev: true /jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} @@ -9646,6 +9486,12 @@ packages: readable-stream: 3.6.2 dev: false + /keyv@3.0.0: + resolution: {integrity: sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==} + dependencies: + json-buffer: 3.0.0 + dev: false + /keyvaluestorage-interface@1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} dev: false @@ -9673,82 +9519,6 @@ packages: dependencies: language-subtag-registry: 0.3.22 - /level-blobs@0.1.7: - resolution: {integrity: sha512-n0iYYCGozLd36m/Pzm206+brIgXP8mxPZazZ6ZvgKr+8YwOZ8/PPpYC5zMUu2qFygRN8RO6WC/HH3XWMW7RMVg==} - dependencies: - level-peek: 1.0.6 - once: 1.4.0 - readable-stream: 1.1.14 - dev: true - - /level-filesystem@1.2.0: - resolution: {integrity: sha512-PhXDuCNYpngpxp3jwMT9AYBMgOvB6zxj3DeuIywNKmZqFj2djj9XfT2XDVslfqmo0Ip79cAd3SBy3FsfOZPJ1g==} - dependencies: - concat-stream: 1.6.2 - errno: 0.1.8 - fwd-stream: 1.0.4 - level-blobs: 0.1.7 - level-peek: 1.0.6 - level-sublevel: 5.2.3 - octal: 1.0.0 - once: 1.4.0 - xtend: 2.2.0 - dev: true - - /level-fix-range@1.0.2: - resolution: {integrity: sha512-9llaVn6uqBiSlBP+wKiIEoBa01FwEISFgHSZiyec2S0KpyLUkGR4afW/FCZ/X8y+QJvzS0u4PGOlZDdh1/1avQ==} - dev: true - - /level-fix-range@2.0.0: - resolution: {integrity: sha512-WrLfGWgwWbYPrHsYzJau+5+te89dUbENBg3/lsxOs4p2tYOhCHjbgXxBAj4DFqp3k/XBwitcRXoCh8RoCogASA==} - dependencies: - clone: 0.1.19 - dev: true - - /level-hooks@4.5.0: - resolution: {integrity: sha512-fxLNny/vL/G4PnkLhWsbHnEaRi+A/k8r5EH/M77npZwYL62RHi2fV0S824z3QdpAk6VTgisJwIRywzBHLK4ZVA==} - dependencies: - string-range: 1.2.2 - dev: true - - /level-js@2.2.4: - resolution: {integrity: sha512-lZtjt4ZwHE00UMC1vAb271p9qzg8vKlnDeXfIesH3zL0KxhHRDjClQLGLWhyR0nK4XARnd4wc/9eD1ffd4PshQ==} - dependencies: - abstract-leveldown: 0.12.4 - idb-wrapper: 1.7.2 - isbuffer: 0.0.0 - ltgt: 2.2.1 - typedarray-to-buffer: 1.0.4 - xtend: 2.1.2 - dev: true - - /level-peek@1.0.6: - resolution: {integrity: sha512-TKEzH5TxROTjQxWMczt9sizVgnmJ4F3hotBI48xCTYvOKd/4gA/uY0XjKkhJFo6BMic8Tqjf6jFMLWeg3MAbqQ==} - dependencies: - level-fix-range: 1.0.2 - dev: true - - /level-sublevel@5.2.3: - resolution: {integrity: sha512-tO8jrFp+QZYrxx/Gnmjawuh1UBiifpvKNAcm4KCogesWr1Nm2+ckARitf+Oo7xg4OHqMW76eAqQ204BoIlscjA==} - dependencies: - level-fix-range: 2.0.0 - level-hooks: 4.5.0 - string-range: 1.2.2 - xtend: 2.0.6 - dev: true - - /levelup@0.18.6: - resolution: {integrity: sha512-uB0auyRqIVXx+hrpIUtol4VAPhLRcnxcOsd2i2m6rbFIDarO5dnrupLOStYYpEcu8ZT087Z9HEuYw1wjr6RL6Q==} - dependencies: - bl: 0.8.2 - deferred-leveldown: 0.2.0 - errno: 0.1.8 - prr: 0.0.0 - readable-stream: 1.0.34 - semver: 2.3.2 - xtend: 3.0.0 - dev: true - /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -9961,7 +9731,6 @@ packages: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - dev: true /log-update@4.0.0: resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} @@ -9993,6 +9762,16 @@ packages: get-func-name: 2.0.0 dev: true + /lowercase-keys@1.0.0: + resolution: {integrity: sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==} + engines: {node: '>=0.10.0'} + dev: false + + /lowercase-keys@1.0.1: + resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} + engines: {node: '>=0.10.0'} + dev: false + /lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: @@ -10004,7 +9783,6 @@ packages: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 - dev: true /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} @@ -10012,10 +9790,6 @@ packages: dependencies: yallist: 4.0.0 - /ltgt@2.2.1: - resolution: {integrity: sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==} - dev: true - /magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: @@ -10029,11 +9803,18 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /make-dir@1.3.0: + resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} + engines: {node: '>=4'} + dependencies: + pify: 3.0.0 + dev: false + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: - semver: 6.3.0 + semver: 6.3.1 dev: true /make-error@1.3.6: @@ -10062,6 +9843,7 @@ packages: hash-base: 3.1.0 inherits: 2.0.4 safe-buffer: 5.2.1 + dev: false /media-query-parser@2.0.2: resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} @@ -10118,14 +9900,6 @@ packages: braces: 3.0.2 picomatch: 2.3.1 - /miller-rabin@4.0.1: - resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} - hasBin: true - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - dev: true - /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -10145,13 +9919,17 @@ packages: /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - dev: true /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} dev: true + /mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + dev: false + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -10159,9 +9937,11 @@ packages: /minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: false /minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: false /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -10241,6 +10021,11 @@ packages: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} dev: false + /mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + /nanoid@3.3.3: resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -10262,9 +10047,8 @@ packages: /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: true - /next@13.1.6(react-dom@18.2.0)(react@18.2.0): + /next@13.1.6(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==} engines: {node: '>=14.6.0'} hasBin: true @@ -10284,11 +10068,11 @@ packages: dependencies: '@next/env': 13.1.6 '@swc/helpers': 0.4.14 - caniuse-lite: 1.0.30001486 + caniuse-lite: 1.0.30001527 postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.22.15)(react@18.2.0) optionalDependencies: '@next/swc-android-arm-eabi': 13.1.6 '@next/swc-android-arm64': 13.1.6 @@ -10332,13 +10116,8 @@ packages: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-releases@2.0.12: - resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} - dev: true - /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - dev: true /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -10364,6 +10143,23 @@ packages: engines: {node: '>=0.10.0'} dev: true + /normalize-url@2.0.1: + resolution: {integrity: sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==} + engines: {node: '>=4'} + dependencies: + prepend-http: 2.0.0 + query-string: 5.1.1 + sort-keys: 2.0.0 + dev: false + + /npm-conf@1.1.3: + resolution: {integrity: sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==} + engines: {node: '>=4'} + dependencies: + config-chain: 1.1.13 + pify: 3.0.0 + dev: false + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -10392,19 +10188,6 @@ packages: call-bind: 1.0.2 define-properties: 1.2.0 - /object-keys@0.2.0: - resolution: {integrity: sha512-XODjdR2pBh/1qrjPcbSeSgEtKbYo7LqYNq64/TPuCf7j9SfDD3i21yatKoIy39yIWNvVM59iutfQQpCv1RfFzA==} - deprecated: Please update to the latest object-keys - dependencies: - foreach: 2.0.6 - indexof: 0.0.1 - is: 0.2.7 - dev: true - - /object-keys@0.4.0: - resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} - dev: true - /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -10448,10 +10231,6 @@ packages: define-properties: 1.2.0 es-abstract: 1.21.2 - /octal@1.0.0: - resolution: {integrity: sha512-nnda7W8d+A3vEIY+UrDQzzboPf1vhs4JYVhff5CDkq9QNoZY7Xrxeo/htox37j9dZf7yNHevZzqtejWgy1vCqQ==} - dev: true - /on-exit-leak-free@0.2.0: resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} dev: false @@ -10466,7 +10245,6 @@ packages: engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - dev: true /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} @@ -10482,23 +10260,36 @@ packages: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 - dev: false - /optionator@0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - word-wrap: 1.2.3 + + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.0 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: false /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - dev: true /outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} @@ -10508,6 +10299,18 @@ packages: resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==} dev: false + /p-cancelable@0.4.1: + resolution: {integrity: sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==} + engines: {node: '>=4'} + dev: false + + /p-event@2.3.1: + resolution: {integrity: sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==} + engines: {node: '>=6'} + dependencies: + p-timeout: 2.0.1 + dev: false + /p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} @@ -10515,6 +10318,16 @@ packages: p-map: 2.1.0 dev: true + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: false + + /p-is-promise@1.1.0: + resolution: {integrity: sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==} + engines: {node: '>=4'} + dev: false + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -10551,6 +10364,13 @@ packages: aggregate-error: 3.1.0 dev: true + /p-timeout@2.0.1: + resolution: {integrity: sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==} + engines: {node: '>=4'} + dependencies: + p-finally: 1.0.0 + dev: false + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -10561,16 +10381,6 @@ packages: dependencies: callsites: 3.1.0 - /parse-asn1@5.1.6: - resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} - dependencies: - asn1.js: 5.4.1 - browserify-aes: 1.2.0 - evp_bytestokey: 1.0.3 - pbkdf2: 3.1.2 - safe-buffer: 5.2.1 - dev: true - /parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} @@ -10583,7 +10393,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.21.4 + '@babel/code-frame': 7.22.13 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -10637,6 +10447,11 @@ packages: ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 + dev: false + + /pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + dev: false /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -10654,7 +10469,6 @@ packages: /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - dev: true /pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} @@ -10675,12 +10489,10 @@ packages: engines: {node: '>=0.10.0'} dependencies: pinkie: 2.0.4 - dev: true /pinkie@2.0.4: resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} engines: {node: '>=0.10.0'} - dev: true /pino-abstract-transport@0.5.0: resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} @@ -10754,6 +10566,11 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + /prepend-http@2.0.0: + resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} + engines: {node: '>=4'} + dev: false + /prettier-linter-helpers@1.0.0: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} @@ -10776,13 +10593,9 @@ packages: react-is: 18.2.0 dev: true - /process-es6@0.11.6: - resolution: {integrity: sha512-GYBRQtL4v3wgigq10Pv58jmTbFXlIiTbSfgnNqZLY0ldUPqy1rRxDI5fCjoCpnM6TqmHQI8ydzTBXW86OYc0gA==} - dev: true - /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: true + dev: false /process-warning@1.0.0: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} @@ -10803,24 +10616,8 @@ packages: object-assign: 4.1.1 react-is: 16.13.1 - /protobufjs@6.11.3: - resolution: {integrity: sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==} - hasBin: true - requiresBuild: true - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/long': 4.0.2 - '@types/node': 18.16.18 - long: 4.0.0 + /proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: false /protobufjs@6.11.4: @@ -10851,29 +10648,10 @@ packages: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false - /prr@0.0.0: - resolution: {integrity: sha512-LmUECmrW7RVj6mDWKjTXfKug7TFGdiz9P18HMcO4RHL+RW7MCOGNvpj5j47Rnp6ne6r4fZ2VzyUWEpKbg+tsjQ==} - dev: true - - /prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - dev: true - /pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true - /public-encrypt@4.0.3: - resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} - dependencies: - bn.js: 4.12.0 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - parse-asn1: 5.1.6 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - dev: true - /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} @@ -10916,6 +10694,15 @@ packages: side-channel: 1.0.4 dev: false + /query-string@5.1.1: + resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} + engines: {node: '>=0.10.0'} + dependencies: + decode-uri-component: 0.2.2 + object-assign: 4.1.1 + strict-uri-encode: 1.1.0 + dev: false + /query-string@6.14.1: resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==} engines: {node: '>=6'} @@ -10953,13 +10740,6 @@ packages: dependencies: safe-buffer: 5.2.1 - /randomfill@1.0.4: - resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} - dependencies: - randombytes: 2.1.0 - safe-buffer: 5.2.1 - dev: true - /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: @@ -10977,7 +10757,7 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /react-remove-scroll-bar@2.3.4(@types/react@18.2.6)(react@18.2.0): + /react-remove-scroll-bar@2.3.4(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: @@ -10987,13 +10767,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.6 + '@types/react': 18.2.12 react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.6)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.12)(react@18.2.0) tslib: 2.5.2 dev: false - /react-remove-scroll@2.5.4(@types/react@18.2.6)(react@18.2.0): + /react-remove-scroll@2.5.4(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==} engines: {node: '>=10'} peerDependencies: @@ -11003,16 +10783,16 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.6 + '@types/react': 18.2.12 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.6)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.6)(react@18.2.0) + react-remove-scroll-bar: 2.3.4(@types/react@18.2.12)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.12)(react@18.2.0) tslib: 2.5.2 - use-callback-ref: 1.3.0(@types/react@18.2.6)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.6)(react@18.2.0) + use-callback-ref: 1.3.0(@types/react@18.2.12)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.12)(react@18.2.0) dev: false - /react-style-singleton@2.2.1(@types/react@18.2.6)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -11022,7 +10802,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.6 + '@types/react': 18.2.12 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 @@ -11074,24 +10854,6 @@ packages: strip-bom: 3.0.0 dev: true - /readable-stream@1.0.34: - resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - dev: true - - /readable-stream@1.1.14: - resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - dev: true - /readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: @@ -11102,7 +10864,7 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 - dev: true + dev: false /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} @@ -11257,13 +11019,18 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + /responselike@1.0.2: + resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} + dependencies: + lowercase-keys: 1.0.1 + dev: false + /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - dev: true /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -11296,6 +11063,7 @@ packages: dependencies: hash-base: 3.1.0 inherits: 2.0.4 + dev: false /rlp@2.2.7: resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} @@ -11317,15 +11085,6 @@ packages: semver: 5.7.1 dev: true - /rollup-plugin-node-builtins@2.1.2: - resolution: {integrity: sha512-bxdnJw8jIivr2yEyt8IZSGqZkygIJOGAWypXvHXnwKAbUcN4Q/dGTx7K0oAJryC/m6aq6tKutltSeXtuogU6sw==} - dependencies: - browserify-fs: 1.0.0 - buffer-es6: 4.9.3 - crypto-browserify: 3.12.0 - process-es6: 0.11.6 - dev: true - /rollup-plugin-polyfill-node@0.10.2(rollup@2.79.1): resolution: {integrity: sha512-5GMywXiLiuQP6ZzED/LO/Q0HyDi2W6b8VN+Zd3oB0opIjyRs494Me2ZMaqKWDNbGiW4jvvzl6L2n4zRgxS9cSQ==} peerDependencies: @@ -11341,11 +11100,11 @@ packages: peerDependencies: rollup: ^2.0.0 dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.22.13 jest-worker: 26.6.2 rollup: 2.79.1 serialize-javascript: 4.0.0 - terser: 5.16.6 + terser: 5.19.2 dev: true /rollup@2.79.1: @@ -11353,7 +11112,7 @@ packages: engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /rpc-websockets@7.5.1: @@ -11368,6 +11127,11 @@ packages: utf-8-validate: 5.0.10 dev: false + /run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + dev: false + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -11388,7 +11152,7 @@ packages: /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true + dev: false /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -11415,7 +11179,6 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} @@ -11456,35 +11219,21 @@ packages: node-gyp-build: 4.6.0 dev: false - /semver@2.3.2: - resolution: {integrity: sha512-abLdIKCosKfpnmhS52NCTjO4RiLspDfsn37prjzGrp9im5DPJOgh82Os92vtwGh6XdQryKI/7SREZnV+aqiXrA==} + /seek-bzip@1.0.6: + resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==} hasBin: true - dev: true + dependencies: + commander: 2.20.3 + dev: false /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true dev: true - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - - /semver@7.5.0: - resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: false - - /semver@7.5.1: - resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} - engines: {node: '>=10'} + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true /semver@7.5.2: resolution: {integrity: sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==} @@ -11524,6 +11273,7 @@ packages: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 + dev: false /sha3@2.1.4: resolution: {integrity: sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==} @@ -11588,7 +11338,11 @@ packages: /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: false /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -11647,6 +11401,27 @@ packages: atomic-sleep: 1.0.0 dev: false + /sort-keys-length@1.0.1: + resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} + engines: {node: '>=0.10.0'} + dependencies: + sort-keys: 1.1.2 + dev: false + + /sort-keys@1.1.2: + resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-obj: 1.1.0 + dev: false + + /sort-keys@2.0.0: + resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} + engines: {node: '>=4'} + dependencies: + is-plain-obj: 1.1.0 + dev: false + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -11669,7 +11444,6 @@ packages: /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} @@ -11755,6 +11529,11 @@ packages: mixme: 0.5.9 dev: true + /strict-uri-encode@1.1.0: + resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} + engines: {node: '>=0.10.0'} + dev: false + /strict-uri-encode@2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} @@ -11777,10 +11556,6 @@ packages: resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} dev: true - /string-range@1.2.2: - resolution: {integrity: sha512-tYft6IFi8SjplJpxCUxyqisD3b+R2CSkomrtJYCkvuf1KuCAWgz7YXt4O0jip7efpfCemwHEzTEAO8EuOYgh3w==} - dev: true - /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -11832,15 +11607,11 @@ packages: define-properties: 1.2.0 es-abstract: 1.21.2 - /string_decoder@0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - dev: true - /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 - dev: true + dev: false /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -11869,6 +11640,12 @@ packages: engines: {node: '>=8'} dev: true + /strip-dirs@2.1.0: + resolution: {integrity: sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==} + dependencies: + is-natural-number: 4.0.1 + dev: false + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -11897,11 +11674,18 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + /strip-outer@1.0.1: + resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} + engines: {node: '>=0.10.0'} + dependencies: + escape-string-regexp: 1.0.5 + dev: false + /strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: false - /styled-jsx@5.1.1(react@18.2.0): + /styled-jsx@5.1.1(@babel/core@7.22.15)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -11914,6 +11698,7 @@ packages: babel-plugin-macros: optional: true dependencies: + '@babel/core': 7.22.15 client-only: 0.0.1 react: 18.2.0 dev: false @@ -11944,7 +11729,6 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -11960,13 +11744,25 @@ packages: engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/utils': 2.3.1 - tslib: 2.5.0 - dev: false + tslib: 2.5.2 /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + /tar-stream@1.6.2: + resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} + engines: {node: '>= 0.8.0'} + dependencies: + bl: 1.2.3 + buffer-alloc: 1.2.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + readable-stream: 2.3.8 + to-buffer: 1.1.1 + xtend: 4.0.2 + dev: false + /term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -11988,7 +11784,7 @@ packages: uglify-js: optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 @@ -11996,24 +11792,13 @@ packages: webpack: 5.88.1(webpack-cli@5.1.4) dev: true - /terser@5.16.6: - resolution: {integrity: sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@jridgewell/source-map': 0.3.2 - acorn: 8.8.2 - commander: 2.20.3 - source-map-support: 0.5.21 - dev: true - /terser@5.19.2: resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} engines: {node: '>=10'} hasBin: true dependencies: '@jridgewell/source-map': 0.3.5 - acorn: 8.8.2 + acorn: 8.10.0 commander: 2.20.3 source-map-support: 0.5.21 dev: true @@ -12054,28 +11839,34 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + /timed-out@4.0.1: + resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} + engines: {node: '>=0.10.0'} + dev: false + /tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} dependencies: globalyzer: 0.1.0 globrex: 0.1.2 - dev: false /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 - dev: true /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true + /to-buffer@1.1.1: + resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==} + dev: false + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - dev: true /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -12095,7 +11886,14 @@ packages: engines: {node: '>=8'} dev: true - /ts-jest@29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@4.9.5): + /trim-repeated@1.0.0: + resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} + engines: {node: '>=0.10.0'} + dependencies: + escape-string-regexp: 1.0.5 + dev: false + + /ts-jest@29.1.0(@babel/core@7.22.15)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -12116,7 +11914,7 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.15 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) @@ -12124,7 +11922,7 @@ packages: json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.5.1 + semver: 7.5.2 typescript: 4.9.5 yargs-parser: 21.1.1 dev: true @@ -12149,7 +11947,7 @@ packages: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 '@types/node': 18.16.18 - acorn: 8.8.2 + acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 @@ -12171,9 +11969,6 @@ packages: /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - /tslib@2.5.0: - resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - /tslib@2.5.2: resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==} @@ -12186,8 +11981,8 @@ packages: tslib: 1.14.1 typescript: 4.9.5 - /tsyringe@4.7.0: - resolution: {integrity: sha512-ncFDM1jTLsok4ejMvSW5jN1VGPQD48y2tfAR0pdptWRKYX4bkbqPt92k7KJ5RFJ1KV36JEs/+TMh7I6OUgj74g==} + /tsyringe@4.8.0: + resolution: {integrity: sha512-YB1FG+axdxADa3ncEtRnQCFq/M0lALGLxSZeVNbTU8NqhOVc51nnv2CISTcvc1kyv6EGPtXVr0v6lWeDxiijOA==} engines: {node: '>= 6.0.0'} dependencies: tslib: 1.14.1 @@ -12207,6 +12002,12 @@ packages: yargs: 17.7.2 dev: true + /tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + dependencies: + safe-buffer: 5.2.1 + dev: false + /tweetnacl-util@0.15.1: resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} dev: false @@ -12243,7 +12044,6 @@ packages: /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - dev: true /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} @@ -12262,31 +12062,31 @@ packages: for-each: 0.3.3 is-typed-array: 1.1.10 - /typedarray-to-buffer@1.0.4: - resolution: {integrity: sha512-vjMKrfSoUDN8/Vnqitw2FmstOfuJ73G6CrSEKnf11A6RmasVxHqfeBcnTb6RsL4pTMuV5Zsv9IiHRphMZyckUw==} - dev: true - /typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 dev: false - /typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - dev: true - /typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true dev: true + /uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: false + optional: true + /uint8arrays@3.1.1: resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} dependencies: @@ -12301,6 +12101,13 @@ packages: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + /unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + dependencies: + buffer: 5.7.1 + through: 2.3.8 + dev: false + /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} @@ -12332,36 +12139,35 @@ packages: /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} - dev: true - - /update-browserslist-db@1.0.11(browserslist@4.21.7): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.7 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - /update-browserslist-db@1.0.11(browserslist@4.21.9): + /update-browserslist-db@1.0.11(browserslist@4.21.10): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.9 + browserslist: 4.21.10 escalade: 3.1.1 picocolors: 1.0.0 - dev: true /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 - /use-callback-ref@1.3.0(@types/react@18.2.6)(react@18.2.0): + /url-parse-lax@3.0.0: + resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} + engines: {node: '>=4'} + dependencies: + prepend-http: 2.0.0 + dev: false + + /url-to-options@1.0.1: + resolution: {integrity: sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==} + engines: {node: '>= 4'} + dev: false + + /use-callback-ref@1.3.0(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: @@ -12371,12 +12177,12 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.6 + '@types/react': 18.2.12 react: 18.2.0 tslib: 2.5.2 dev: false - /use-sidecar@1.1.2(@types/react@18.2.6)(react@18.2.0): + /use-sidecar@1.1.2(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -12386,7 +12192,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.6 + '@types/react': 18.2.12 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.5.2 @@ -12434,7 +12240,7 @@ packages: resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.9.0 dev: true @@ -12446,6 +12252,13 @@ packages: spdx-expression-parse: 3.0.1 dev: true + /validate-npm-package-name@5.0.0: + resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + builtins: 5.0.1 + dev: false + /valtio@1.10.6(react@18.2.0): resolution: {integrity: sha512-SxN1bHUmdhW6V8qsQTpCgJEwp7uHbntuH0S9cdLQtiohuevwBksbpXjwj5uDMA7bLwg1WKyq9sEpZrx3TIMrkA==} engines: {node: '>=12.20.0'} @@ -12535,7 +12348,6 @@ packages: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 - dev: true /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -12601,9 +12413,9 @@ packages: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/wasm-edit': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.8.2 - acorn-import-assertions: 1.9.0(acorn@8.8.2) - browserslist: 4.21.9 + acorn: 8.10.0 + acorn-import-assertions: 1.9.0(acorn@8.10.0) + browserslist: 4.21.10 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 es-module-lexer: 1.3.0 @@ -12690,9 +12502,9 @@ packages: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} dev: true - /word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} + /wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: false /workerpool@6.2.1: resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} @@ -12788,31 +12600,6 @@ packages: symbol-observable: 2.0.3 dev: false - /xtend@2.0.6: - resolution: {integrity: sha512-fOZg4ECOlrMl+A6Msr7EIFcON1L26mb4NY5rurSkOex/TWhazOrg6eXD/B0XkuiYcYhQDWLXzQxLMVJ7LXwokg==} - engines: {node: '>=0.4'} - dependencies: - is-object: 0.1.2 - object-keys: 0.2.0 - dev: true - - /xtend@2.1.2: - resolution: {integrity: sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==} - engines: {node: '>=0.4'} - dependencies: - object-keys: 0.4.0 - dev: true - - /xtend@2.2.0: - resolution: {integrity: sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw==} - engines: {node: '>=0.4'} - dev: true - - /xtend@3.0.0: - resolution: {integrity: sha512-sp/sT9OALMjRW1fKDlPeuSZlDQpkqReA0pyJukniWbTGoEKefHxhGJynE3PNhUMlcM8qWIjPwecwCw4LArS5Eg==} - engines: {node: '>=0.4'} - dev: true - /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -12832,7 +12619,6 @@ packages: /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -12905,7 +12691,7 @@ packages: require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 - yargs-parser: 20.2.4 + yargs-parser: 20.2.9 dev: true /yargs@17.7.2: @@ -12921,6 +12707,13 @@ packages: yargs-parser: 21.1.1 dev: true + /yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + dev: false + /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} From 00a2cddf98623c59780b6f8a8892674124d910c9 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Mon, 18 Sep 2023 14:52:33 +0800 Subject: [PATCH 255/433] Chore/package (#346) * chore: Update package.json * chore: Update package.json --- .changeset/great-teachers-thank.md | 8 ++++++++ .codesandbox/ci.json | 11 ----------- packages/create-gnfd-app/package.json | 3 ++- packages/file-handle/package.json | 12 +++++++++++- packages/{chain-sdk => js-sdk}/CHANGELOG.md | 0 packages/{chain-sdk => js-sdk}/README.md | 0 .../config/tsconfig-cjs.json | 0 .../config/tsconfig-esm.json | 0 .../config/tsconfig-test.json | 0 .../{chain-sdk => js-sdk}/config/tsconfig.json | 0 packages/{chain-sdk => js-sdk}/jest.config.mjs | 0 packages/{chain-sdk => js-sdk}/package.json | 14 ++++++++++++-- packages/{chain-sdk => js-sdk}/rollup.config.js | 0 packages/{chain-sdk => js-sdk}/src/api/account.ts | 0 packages/{chain-sdk => js-sdk}/src/api/basic.ts | 0 packages/{chain-sdk => js-sdk}/src/api/bucket.ts | 0 .../{chain-sdk => js-sdk}/src/api/challenge.ts | 0 .../{chain-sdk => js-sdk}/src/api/crosschain.ts | 0 .../{chain-sdk => js-sdk}/src/api/distribution.ts | 0 .../{chain-sdk => js-sdk}/src/api/feegrant.ts | 0 packages/{chain-sdk => js-sdk}/src/api/gashub.ts | 0 packages/{chain-sdk => js-sdk}/src/api/group.ts | 0 packages/{chain-sdk => js-sdk}/src/api/objectt.ts | 0 .../{chain-sdk => js-sdk}/src/api/offchainauth.ts | 0 packages/{chain-sdk => js-sdk}/src/api/payment.ts | 0 .../{chain-sdk => js-sdk}/src/api/proposal.ts | 0 packages/{chain-sdk => js-sdk}/src/api/sp.ts | 0 packages/{chain-sdk => js-sdk}/src/api/storage.ts | 0 .../{chain-sdk => js-sdk}/src/api/validator.ts | 0 .../{chain-sdk => js-sdk}/src/api/virtualGroup.ts | 0 packages/{chain-sdk => js-sdk}/src/client.ts | 0 .../src/clients/queryclient.ts | 0 .../src/clients/spclient/auth.ts | 0 .../src/clients/spclient/sign.ts | 0 .../src/clients/spclient/spApis/approval.ts | 0 .../src/clients/spclient/spApis/getBucketMeta.ts | 0 .../src/clients/spclient/spApis/getNonce.ts | 0 .../src/clients/spclient/spApis/getObject.ts | 0 .../src/clients/spclient/spApis/getObjectMeta.ts | 0 .../src/clients/spclient/spApis/getUserBuckets.ts | 0 .../spclient/spApis/listBucketReadRecords.ts | 0 .../clients/spclient/spApis/listBucketsByIds.ts | 0 .../spclient/spApis/listBucketsByPayment.ts | 0 .../src/clients/spclient/spApis/listGroups.ts | 0 .../clients/spclient/spApis/listGroupsMembers.ts | 0 .../clients/spclient/spApis/listObjectPolicies.ts | 0 .../spclient/spApis/listObjectsByBucket.ts | 0 .../clients/spclient/spApis/listObjectsByIds.ts | 0 .../src/clients/spclient/spApis/listUserGroups.ts | 0 .../spclient/spApis/listUserOwnedGroups.ts | 0 .../spclient/spApis/listUserPaymentAccounts.ts | 0 .../src/clients/spclient/spApis/metaInfos.ts | 0 .../src/clients/spclient/spApis/parseError.ts | 0 .../src/clients/spclient/spApis/putObject.ts | 0 .../spclient/spApis/queryBucketReadQuota.ts | 0 .../spclient/spApis/updateUserAccountKey.ts | 0 .../clients/spclient/spApis/verifyPermission.ts | 0 .../src/clients/spclient/spClient.ts | 0 .../{chain-sdk => js-sdk}/src/clients/txClient.ts | 2 +- .../{chain-sdk => js-sdk}/src/constants/http.ts | 0 .../{chain-sdk => js-sdk}/src/constants/index.ts | 0 .../src/constants/typeUrl.ts | 0 packages/{chain-sdk => js-sdk}/src/index.ts | 0 .../{chain-sdk => js-sdk}/src/keymanage/index.ts | 0 .../{chain-sdk => js-sdk}/src/messages/README.md | 0 .../src/messages/bank/MsgMultiSend.ts | 0 .../src/messages/bank/MsgSend.ts | 0 .../distribution/MsgFundCommunityPoolTypeUrl.ts | 0 .../cosmos/distribution/MsgSetWithdrawAddress.ts | 0 .../distribution/MsgWithdrawDelegatorReward.ts | 0 .../MsgWithdrawValidatorCommission.ts | 0 .../src/messages/cosmos/gov/MsgVote.ts | 0 .../src/messages/cosmos/oracle/MsgClaim.ts | 0 .../messages/cosmos/staking/MsgCreateValidator.ts | 0 .../messages/cosmos/staking/MsgEditValidator.ts | 0 .../src/messages/feegrant/MsgGrantAllowance.ts | 0 .../src/messages/feegrant/MsgRevokeAllowance.ts | 0 .../messages/greenfield/bridge/MsgTransferOut.ts | 0 .../src/messages/greenfield/chanenge/MsgAttest.ts | 0 .../src/messages/greenfield/chanenge/MsgSubmit.ts | 0 .../src/messages/greenfield/index.ts | 0 .../greenfield/payment/MsgCreatePaymentAccount.ts | 0 .../src/messages/greenfield/payment/MsgDeposit.ts | 0 .../greenfield/payment/MsgDisableRefund.ts | 0 .../messages/greenfield/payment/MsgWithdraw.ts | 0 .../greenfield/storage/MsgCancelCreateObject.ts | 0 .../greenfield/storage/MsgCreateBucket.ts | 0 .../messages/greenfield/storage/MsgCreateGroup.ts | 0 .../greenfield/storage/MsgCreateObject.ts | 0 .../greenfield/storage/MsgDeleteBucket.ts | 0 .../messages/greenfield/storage/MsgDeleteGroup.ts | 0 .../greenfield/storage/MsgDeleteObject.ts | 0 .../greenfield/storage/MsgDeletePolicy.ts | 0 .../messages/greenfield/storage/MsgLeaveGroup.ts | 0 .../greenfield/storage/MsgMigrateBucket.ts | 0 .../greenfield/storage/MsgMirrorBucket.ts | 0 .../messages/greenfield/storage/MsgMirrorGroup.ts | 0 .../greenfield/storage/MsgMirrorObject.ts | 0 .../messages/greenfield/storage/MsgPutPolicy.ts | 0 .../greenfield/storage/MsgUpdateBucketInfo.ts | 0 .../greenfield/storage/MsgUpdateGroupExtra.ts | 0 .../greenfield/storage/MsgUpdateGroupMember.ts | 0 .../greenfield/storage/MsgUpdateObjectInfo.ts | 0 .../messages/greenfield/virtualgroup/MsgSettle.ts | 0 .../{chain-sdk => js-sdk}/src/messages/index.ts | 0 .../{chain-sdk => js-sdk}/src/messages/utils.ts | 0 .../src/offchainauth/index.ts | 0 .../src/offchainauth/utils.ts | 0 packages/{chain-sdk => js-sdk}/src/sign/index.ts | 0 packages/{chain-sdk => js-sdk}/src/sign/pubKey.ts | 0 packages/{chain-sdk => js-sdk}/src/sign/signTx.ts | 0 packages/{chain-sdk => js-sdk}/src/types/auth.ts | 0 .../{chain-sdk => js-sdk}/src/types/common.ts | 0 packages/{chain-sdk => js-sdk}/src/types/index.ts | 0 .../src/types/sp/BucketApproval.ts | 0 .../{chain-sdk => js-sdk}/src/types/sp/Common.ts | 0 .../src/types/sp/ErrorResponse.ts | 0 .../src/types/sp/GetBucketMeta.ts | 0 .../src/types/sp/GetObject.ts | 0 .../src/types/sp/GetObjectMeta.ts | 0 .../src/types/sp/GetPreviewObject.ts | 0 .../src/types/sp/GetUserBuckets.ts | 0 .../src/types/sp/ListBucketReadRecord.ts | 0 .../src/types/sp/ListBucketsByIDs.ts | 0 .../src/types/sp/ListBucketsByPaymentAccount.ts | 0 .../src/types/sp/ListGroups.ts | 0 .../src/types/sp/ListGroupsMembers.ts | 0 .../src/types/sp/ListObjectPolicies.ts | 0 .../src/types/sp/ListObjectsByBucketName.ts | 0 .../src/types/sp/ListObjectsByIDs.ts | 0 .../src/types/sp/ListUserGroups.ts | 0 .../src/types/sp/ListUserOwnedGroups.ts | 0 .../src/types/sp/ListUserPaymentAccounts.ts | 0 .../src/types/sp/MigrateBucket.ts | 0 .../src/types/sp/ObjectApproval.ts | 0 .../src/types/sp/PutObject.ts | 0 .../src/types/sp/ReadQuota.ts | 0 .../src/types/sp/RequestNonce.ts | 0 .../src/types/sp/SuccessResponse.ts | 0 .../src/types/sp/VerifyPermission.ts | 0 .../{chain-sdk => js-sdk}/src/types/sp/index.ts | 0 .../{chain-sdk => js-sdk}/src/types/storage.ts | 0 packages/{chain-sdk => js-sdk}/src/types/tx.ts | 0 .../{chain-sdk => js-sdk}/src/utils/allowance.ts | 0 .../{chain-sdk => js-sdk}/src/utils/encoding.ts | 0 packages/{chain-sdk => js-sdk}/src/utils/grn.ts | 0 .../{chain-sdk => js-sdk}/src/utils/helpers.ts | 0 packages/{chain-sdk => js-sdk}/src/utils/http.ts | 0 packages/{chain-sdk => js-sdk}/src/utils/index.ts | 0 packages/{chain-sdk => js-sdk}/src/utils/s3.ts | 0 packages/{chain-sdk => js-sdk}/src/utils/time.ts | 0 packages/{chain-sdk => js-sdk}/src/utils/units.ts | 0 .../{chain-sdk => js-sdk}/tests/.env.example.ts | 0 .../{chain-sdk => js-sdk}/tests/account.spec.ts | 0 .../{chain-sdk => js-sdk}/tests/config.spec.ts | 0 .../{chain-sdk => js-sdk}/tests/parsexml.spec.ts | 0 .../{chain-sdk => js-sdk}/tests/policy.spec.ts | 0 .../{chain-sdk => js-sdk}/tests/query.spec.ts | 0 .../{chain-sdk => js-sdk}/tests/storage.spec.ts | 0 .../{chain-sdk => js-sdk}/tests/utils.spec.ts | 0 .../{chain-sdk => js-sdk}/tests/wallet.spec.ts | 0 packages/{chain-sdk => js-sdk}/tsconfig.json | 0 packages/zk-crypto/package.json | 15 ++++++++++++++- 163 files changed, 48 insertions(+), 17 deletions(-) create mode 100644 .changeset/great-teachers-thank.md delete mode 100644 .codesandbox/ci.json rename packages/{chain-sdk => js-sdk}/CHANGELOG.md (100%) rename packages/{chain-sdk => js-sdk}/README.md (100%) rename packages/{chain-sdk => js-sdk}/config/tsconfig-cjs.json (100%) rename packages/{chain-sdk => js-sdk}/config/tsconfig-esm.json (100%) rename packages/{chain-sdk => js-sdk}/config/tsconfig-test.json (100%) rename packages/{chain-sdk => js-sdk}/config/tsconfig.json (100%) rename packages/{chain-sdk => js-sdk}/jest.config.mjs (100%) rename packages/{chain-sdk => js-sdk}/package.json (87%) rename packages/{chain-sdk => js-sdk}/rollup.config.js (100%) rename packages/{chain-sdk => js-sdk}/src/api/account.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/basic.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/bucket.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/challenge.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/crosschain.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/distribution.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/feegrant.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/gashub.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/group.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/objectt.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/offchainauth.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/payment.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/proposal.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/sp.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/storage.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/validator.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/virtualGroup.ts (100%) rename packages/{chain-sdk => js-sdk}/src/client.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/queryclient.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/auth.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/sign.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/approval.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/getBucketMeta.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/getNonce.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/getObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/getObjectMeta.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/getUserBuckets.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listBucketReadRecords.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listBucketsByIds.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listBucketsByPayment.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listGroups.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listGroupsMembers.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listObjectPolicies.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listObjectsByBucket.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listObjectsByIds.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listUserGroups.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listUserOwnedGroups.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listUserPaymentAccounts.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/metaInfos.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/parseError.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/putObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/queryBucketReadQuota.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/updateUserAccountKey.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/verifyPermission.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spClient.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/txClient.ts (99%) rename packages/{chain-sdk => js-sdk}/src/constants/http.ts (100%) rename packages/{chain-sdk => js-sdk}/src/constants/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/constants/typeUrl.ts (100%) rename packages/{chain-sdk => js-sdk}/src/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/keymanage/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/README.md (100%) rename packages/{chain-sdk => js-sdk}/src/messages/bank/MsgMultiSend.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/bank/MsgSend.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/cosmos/gov/MsgVote.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/cosmos/oracle/MsgClaim.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/cosmos/staking/MsgCreateValidator.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/cosmos/staking/MsgEditValidator.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/feegrant/MsgGrantAllowance.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/feegrant/MsgRevokeAllowance.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/bridge/MsgTransferOut.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/chanenge/MsgAttest.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/chanenge/MsgSubmit.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/payment/MsgDeposit.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/payment/MsgDisableRefund.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/payment/MsgWithdraw.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgCancelCreateObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgCreateBucket.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgCreateGroup.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgCreateObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgDeleteBucket.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgDeleteGroup.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgDeleteObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgDeletePolicy.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgLeaveGroup.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgMigrateBucket.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgMirrorBucket.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgMirrorGroup.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgMirrorObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgPutPolicy.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgUpdateGroupMember.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/virtualgroup/MsgSettle.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/utils.ts (100%) rename packages/{chain-sdk => js-sdk}/src/offchainauth/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/offchainauth/utils.ts (100%) rename packages/{chain-sdk => js-sdk}/src/sign/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/sign/pubKey.ts (100%) rename packages/{chain-sdk => js-sdk}/src/sign/signTx.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/auth.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/common.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/BucketApproval.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/Common.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ErrorResponse.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/GetBucketMeta.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/GetObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/GetObjectMeta.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/GetPreviewObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/GetUserBuckets.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListBucketReadRecord.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListBucketsByIDs.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListBucketsByPaymentAccount.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListGroups.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListGroupsMembers.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListObjectPolicies.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListObjectsByBucketName.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListObjectsByIDs.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListUserGroups.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListUserOwnedGroups.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListUserPaymentAccounts.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/MigrateBucket.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ObjectApproval.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/PutObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ReadQuota.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/RequestNonce.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/SuccessResponse.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/VerifyPermission.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/storage.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/tx.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/allowance.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/encoding.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/grn.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/helpers.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/http.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/s3.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/time.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/units.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/.env.example.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/account.spec.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/config.spec.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/parsexml.spec.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/policy.spec.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/query.spec.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/storage.spec.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/utils.spec.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/wallet.spec.ts (100%) rename packages/{chain-sdk => js-sdk}/tsconfig.json (100%) diff --git a/.changeset/great-teachers-thank.md b/.changeset/great-teachers-thank.md new file mode 100644 index 00000000..10b5078f --- /dev/null +++ b/.changeset/great-teachers-thank.md @@ -0,0 +1,8 @@ +--- +'@bnb-chain/create-gnfd-app': patch +'@bnb-chain/greenfiled-file-handle': patch +'@bnb-chain/greenfield-zk-crypto': patch +'@bnb-chain/greenfield-js-sdk': patch +--- + +chore: Update package.json diff --git a/.codesandbox/ci.json b/.codesandbox/ci.json deleted file mode 100644 index 686fb6d5..00000000 --- a/.codesandbox/ci.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "node": 16, - "packages": [ - "./", - "packages/chain-sdk", - "packages/file-handle" - ], - "sandboxes": [ - "examples/nextjs" - ] -} diff --git a/packages/create-gnfd-app/package.json b/packages/create-gnfd-app/package.json index 95afec92..7ec596ac 100644 --- a/packages/create-gnfd-app/package.json +++ b/packages/create-gnfd-app/package.json @@ -11,7 +11,8 @@ "url": "https://github.com/bnb-chain/greenfield-js-sdk", "directory": "packages/create-gnfd-app" }, - "homepage": "https://github.com/bnb-chain/greenfield-js-sdk/packages/create-gnfd-app#readme", + "homepage": "https://github.com/bnb-chain/greenfield-js-sdk/tree/alpha/packages/create-gnfd-app#readme", + "bugs": "https://github.com/bnb-chain/greenfield-js-sdk/issues", "scripts": { "dev": "rollup -cw", "build": "rollup -c" diff --git a/packages/file-handle/package.json b/packages/file-handle/package.json index 1d3ecef6..dbf02ad7 100644 --- a/packages/file-handle/package.json +++ b/packages/file-handle/package.json @@ -21,7 +21,17 @@ "build": "webpack", "test": "" }, - "keywords": [], + "repository": { + "type": "git", + "url": "https://github.com/bnb-chain/greenfield-js-sdk", + "directory": "packages/file-handle" + }, + "homepage": "https://github.com/bnb-chain/greenfield-js-sdk/tree/alpha/packages/file-handle#readme", + "bugs": "https://github.com/bnb-chain/greenfield-js-sdk/issues", + "keywords": [ + "greenfiled", + "checksums" + ], "author": "", "license": "GPLv3", "engines": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md similarity index 100% rename from packages/chain-sdk/CHANGELOG.md rename to packages/js-sdk/CHANGELOG.md diff --git a/packages/chain-sdk/README.md b/packages/js-sdk/README.md similarity index 100% rename from packages/chain-sdk/README.md rename to packages/js-sdk/README.md diff --git a/packages/chain-sdk/config/tsconfig-cjs.json b/packages/js-sdk/config/tsconfig-cjs.json similarity index 100% rename from packages/chain-sdk/config/tsconfig-cjs.json rename to packages/js-sdk/config/tsconfig-cjs.json diff --git a/packages/chain-sdk/config/tsconfig-esm.json b/packages/js-sdk/config/tsconfig-esm.json similarity index 100% rename from packages/chain-sdk/config/tsconfig-esm.json rename to packages/js-sdk/config/tsconfig-esm.json diff --git a/packages/chain-sdk/config/tsconfig-test.json b/packages/js-sdk/config/tsconfig-test.json similarity index 100% rename from packages/chain-sdk/config/tsconfig-test.json rename to packages/js-sdk/config/tsconfig-test.json diff --git a/packages/chain-sdk/config/tsconfig.json b/packages/js-sdk/config/tsconfig.json similarity index 100% rename from packages/chain-sdk/config/tsconfig.json rename to packages/js-sdk/config/tsconfig.json diff --git a/packages/chain-sdk/jest.config.mjs b/packages/js-sdk/jest.config.mjs similarity index 100% rename from packages/chain-sdk/jest.config.mjs rename to packages/js-sdk/jest.config.mjs diff --git a/packages/chain-sdk/package.json b/packages/js-sdk/package.json similarity index 87% rename from packages/chain-sdk/package.json rename to packages/js-sdk/package.json index f888743e..901b5af2 100644 --- a/packages/chain-sdk/package.json +++ b/packages/js-sdk/package.json @@ -29,7 +29,17 @@ "test": "jest --runInBand", "lint": "prettier --write './src/*.{ts,tsx,js,jsx}' && eslint ./src/ --ext .js,.jsx,.ts,.tsx --fix" }, - "keywords": [], + "repository": { + "type": "git", + "url": "https://github.com/bnb-chain/greenfield-js-sdk", + "directory": "packages/js-sdk" + }, + "homepage": "https://github.com/bnb-chain/greenfield-js-sdk/tree/alpha/packages/js-sdk#readme", + "bugs": "https://github.com/bnb-chain/greenfield-js-sdk/issues", + "keywords": [ + "greenfiled", + "js-sdk" + ], "author": "", "license": "GPLv3", "engines": { @@ -90,4 +100,4 @@ "tslib": "^2.5.0", "typescript": "^4.9.5" } -} +} \ No newline at end of file diff --git a/packages/chain-sdk/rollup.config.js b/packages/js-sdk/rollup.config.js similarity index 100% rename from packages/chain-sdk/rollup.config.js rename to packages/js-sdk/rollup.config.js diff --git a/packages/chain-sdk/src/api/account.ts b/packages/js-sdk/src/api/account.ts similarity index 100% rename from packages/chain-sdk/src/api/account.ts rename to packages/js-sdk/src/api/account.ts diff --git a/packages/chain-sdk/src/api/basic.ts b/packages/js-sdk/src/api/basic.ts similarity index 100% rename from packages/chain-sdk/src/api/basic.ts rename to packages/js-sdk/src/api/basic.ts diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/js-sdk/src/api/bucket.ts similarity index 100% rename from packages/chain-sdk/src/api/bucket.ts rename to packages/js-sdk/src/api/bucket.ts diff --git a/packages/chain-sdk/src/api/challenge.ts b/packages/js-sdk/src/api/challenge.ts similarity index 100% rename from packages/chain-sdk/src/api/challenge.ts rename to packages/js-sdk/src/api/challenge.ts diff --git a/packages/chain-sdk/src/api/crosschain.ts b/packages/js-sdk/src/api/crosschain.ts similarity index 100% rename from packages/chain-sdk/src/api/crosschain.ts rename to packages/js-sdk/src/api/crosschain.ts diff --git a/packages/chain-sdk/src/api/distribution.ts b/packages/js-sdk/src/api/distribution.ts similarity index 100% rename from packages/chain-sdk/src/api/distribution.ts rename to packages/js-sdk/src/api/distribution.ts diff --git a/packages/chain-sdk/src/api/feegrant.ts b/packages/js-sdk/src/api/feegrant.ts similarity index 100% rename from packages/chain-sdk/src/api/feegrant.ts rename to packages/js-sdk/src/api/feegrant.ts diff --git a/packages/chain-sdk/src/api/gashub.ts b/packages/js-sdk/src/api/gashub.ts similarity index 100% rename from packages/chain-sdk/src/api/gashub.ts rename to packages/js-sdk/src/api/gashub.ts diff --git a/packages/chain-sdk/src/api/group.ts b/packages/js-sdk/src/api/group.ts similarity index 100% rename from packages/chain-sdk/src/api/group.ts rename to packages/js-sdk/src/api/group.ts diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/js-sdk/src/api/objectt.ts similarity index 100% rename from packages/chain-sdk/src/api/objectt.ts rename to packages/js-sdk/src/api/objectt.ts diff --git a/packages/chain-sdk/src/api/offchainauth.ts b/packages/js-sdk/src/api/offchainauth.ts similarity index 100% rename from packages/chain-sdk/src/api/offchainauth.ts rename to packages/js-sdk/src/api/offchainauth.ts diff --git a/packages/chain-sdk/src/api/payment.ts b/packages/js-sdk/src/api/payment.ts similarity index 100% rename from packages/chain-sdk/src/api/payment.ts rename to packages/js-sdk/src/api/payment.ts diff --git a/packages/chain-sdk/src/api/proposal.ts b/packages/js-sdk/src/api/proposal.ts similarity index 100% rename from packages/chain-sdk/src/api/proposal.ts rename to packages/js-sdk/src/api/proposal.ts diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/js-sdk/src/api/sp.ts similarity index 100% rename from packages/chain-sdk/src/api/sp.ts rename to packages/js-sdk/src/api/sp.ts diff --git a/packages/chain-sdk/src/api/storage.ts b/packages/js-sdk/src/api/storage.ts similarity index 100% rename from packages/chain-sdk/src/api/storage.ts rename to packages/js-sdk/src/api/storage.ts diff --git a/packages/chain-sdk/src/api/validator.ts b/packages/js-sdk/src/api/validator.ts similarity index 100% rename from packages/chain-sdk/src/api/validator.ts rename to packages/js-sdk/src/api/validator.ts diff --git a/packages/chain-sdk/src/api/virtualGroup.ts b/packages/js-sdk/src/api/virtualGroup.ts similarity index 100% rename from packages/chain-sdk/src/api/virtualGroup.ts rename to packages/js-sdk/src/api/virtualGroup.ts diff --git a/packages/chain-sdk/src/client.ts b/packages/js-sdk/src/client.ts similarity index 100% rename from packages/chain-sdk/src/client.ts rename to packages/js-sdk/src/client.ts diff --git a/packages/chain-sdk/src/clients/queryclient.ts b/packages/js-sdk/src/clients/queryclient.ts similarity index 100% rename from packages/chain-sdk/src/clients/queryclient.ts rename to packages/js-sdk/src/clients/queryclient.ts diff --git a/packages/chain-sdk/src/clients/spclient/auth.ts b/packages/js-sdk/src/clients/spclient/auth.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/auth.ts rename to packages/js-sdk/src/clients/spclient/auth.ts diff --git a/packages/chain-sdk/src/clients/spclient/sign.ts b/packages/js-sdk/src/clients/spclient/sign.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/sign.ts rename to packages/js-sdk/src/clients/spclient/sign.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/approval.ts b/packages/js-sdk/src/clients/spclient/spApis/approval.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/approval.ts rename to packages/js-sdk/src/clients/spclient/spApis/approval.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts b/packages/js-sdk/src/clients/spclient/spApis/getBucketMeta.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts rename to packages/js-sdk/src/clients/spclient/spApis/getBucketMeta.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getNonce.ts b/packages/js-sdk/src/clients/spclient/spApis/getNonce.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/getNonce.ts rename to packages/js-sdk/src/clients/spclient/spApis/getNonce.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getObject.ts b/packages/js-sdk/src/clients/spclient/spApis/getObject.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/getObject.ts rename to packages/js-sdk/src/clients/spclient/spApis/getObject.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts b/packages/js-sdk/src/clients/spclient/spApis/getObjectMeta.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts rename to packages/js-sdk/src/clients/spclient/spApis/getObjectMeta.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts b/packages/js-sdk/src/clients/spclient/spApis/getUserBuckets.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts rename to packages/js-sdk/src/clients/spclient/spApis/getUserBuckets.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts b/packages/js-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts rename to packages/js-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts b/packages/js-sdk/src/clients/spclient/spApis/listBucketsByIds.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts rename to packages/js-sdk/src/clients/spclient/spApis/listBucketsByIds.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts b/packages/js-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts rename to packages/js-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts b/packages/js-sdk/src/clients/spclient/spApis/listGroups.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts rename to packages/js-sdk/src/clients/spclient/spApis/listGroups.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts b/packages/js-sdk/src/clients/spclient/spApis/listGroupsMembers.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts rename to packages/js-sdk/src/clients/spclient/spApis/listGroupsMembers.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectPolicies.ts b/packages/js-sdk/src/clients/spclient/spApis/listObjectPolicies.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listObjectPolicies.ts rename to packages/js-sdk/src/clients/spclient/spApis/listObjectPolicies.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts b/packages/js-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts rename to packages/js-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts b/packages/js-sdk/src/clients/spclient/spApis/listObjectsByIds.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts rename to packages/js-sdk/src/clients/spclient/spApis/listObjectsByIds.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts b/packages/js-sdk/src/clients/spclient/spApis/listUserGroups.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts rename to packages/js-sdk/src/clients/spclient/spApis/listUserGroups.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts b/packages/js-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts rename to packages/js-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listUserPaymentAccounts.ts b/packages/js-sdk/src/clients/spclient/spApis/listUserPaymentAccounts.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listUserPaymentAccounts.ts rename to packages/js-sdk/src/clients/spclient/spApis/listUserPaymentAccounts.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/metaInfos.ts b/packages/js-sdk/src/clients/spclient/spApis/metaInfos.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/metaInfos.ts rename to packages/js-sdk/src/clients/spclient/spApis/metaInfos.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/parseError.ts b/packages/js-sdk/src/clients/spclient/spApis/parseError.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/parseError.ts rename to packages/js-sdk/src/clients/spclient/spApis/parseError.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/putObject.ts b/packages/js-sdk/src/clients/spclient/spApis/putObject.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/putObject.ts rename to packages/js-sdk/src/clients/spclient/spApis/putObject.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts b/packages/js-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts rename to packages/js-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/updateUserAccountKey.ts b/packages/js-sdk/src/clients/spclient/spApis/updateUserAccountKey.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/updateUserAccountKey.ts rename to packages/js-sdk/src/clients/spclient/spApis/updateUserAccountKey.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/verifyPermission.ts b/packages/js-sdk/src/clients/spclient/spApis/verifyPermission.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/verifyPermission.ts rename to packages/js-sdk/src/clients/spclient/spApis/verifyPermission.ts diff --git a/packages/chain-sdk/src/clients/spclient/spClient.ts b/packages/js-sdk/src/clients/spclient/spClient.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spClient.ts rename to packages/js-sdk/src/clients/spclient/spClient.ts diff --git a/packages/chain-sdk/src/clients/txClient.ts b/packages/js-sdk/src/clients/txClient.ts similarity index 99% rename from packages/chain-sdk/src/clients/txClient.ts rename to packages/js-sdk/src/clients/txClient.ts index a25962be..7f675670 100644 --- a/packages/chain-sdk/src/clients/txClient.ts +++ b/packages/js-sdk/src/clients/txClient.ts @@ -29,7 +29,7 @@ import { SimulateOptions, TxResponse, } from '..'; -import { RpcQueryClient } from '../clients/queryclient'; +import { RpcQueryClient } from './queryclient'; import { DEFAULT_DENOM, ZERO_PUBKEY } from '../constants'; import { createEIP712, diff --git a/packages/chain-sdk/src/constants/http.ts b/packages/js-sdk/src/constants/http.ts similarity index 100% rename from packages/chain-sdk/src/constants/http.ts rename to packages/js-sdk/src/constants/http.ts diff --git a/packages/chain-sdk/src/constants/index.ts b/packages/js-sdk/src/constants/index.ts similarity index 100% rename from packages/chain-sdk/src/constants/index.ts rename to packages/js-sdk/src/constants/index.ts diff --git a/packages/chain-sdk/src/constants/typeUrl.ts b/packages/js-sdk/src/constants/typeUrl.ts similarity index 100% rename from packages/chain-sdk/src/constants/typeUrl.ts rename to packages/js-sdk/src/constants/typeUrl.ts diff --git a/packages/chain-sdk/src/index.ts b/packages/js-sdk/src/index.ts similarity index 100% rename from packages/chain-sdk/src/index.ts rename to packages/js-sdk/src/index.ts diff --git a/packages/chain-sdk/src/keymanage/index.ts b/packages/js-sdk/src/keymanage/index.ts similarity index 100% rename from packages/chain-sdk/src/keymanage/index.ts rename to packages/js-sdk/src/keymanage/index.ts diff --git a/packages/chain-sdk/src/messages/README.md b/packages/js-sdk/src/messages/README.md similarity index 100% rename from packages/chain-sdk/src/messages/README.md rename to packages/js-sdk/src/messages/README.md diff --git a/packages/chain-sdk/src/messages/bank/MsgMultiSend.ts b/packages/js-sdk/src/messages/bank/MsgMultiSend.ts similarity index 100% rename from packages/chain-sdk/src/messages/bank/MsgMultiSend.ts rename to packages/js-sdk/src/messages/bank/MsgMultiSend.ts diff --git a/packages/chain-sdk/src/messages/bank/MsgSend.ts b/packages/js-sdk/src/messages/bank/MsgSend.ts similarity index 100% rename from packages/chain-sdk/src/messages/bank/MsgSend.ts rename to packages/js-sdk/src/messages/bank/MsgSend.ts diff --git a/packages/chain-sdk/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts b/packages/js-sdk/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts similarity index 100% rename from packages/chain-sdk/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts rename to packages/js-sdk/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts diff --git a/packages/chain-sdk/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts b/packages/js-sdk/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts similarity index 100% rename from packages/chain-sdk/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts rename to packages/js-sdk/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts diff --git a/packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts b/packages/js-sdk/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts similarity index 100% rename from packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts rename to packages/js-sdk/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts diff --git a/packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts b/packages/js-sdk/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts similarity index 100% rename from packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts rename to packages/js-sdk/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts diff --git a/packages/chain-sdk/src/messages/cosmos/gov/MsgVote.ts b/packages/js-sdk/src/messages/cosmos/gov/MsgVote.ts similarity index 100% rename from packages/chain-sdk/src/messages/cosmos/gov/MsgVote.ts rename to packages/js-sdk/src/messages/cosmos/gov/MsgVote.ts diff --git a/packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts b/packages/js-sdk/src/messages/cosmos/oracle/MsgClaim.ts similarity index 100% rename from packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts rename to packages/js-sdk/src/messages/cosmos/oracle/MsgClaim.ts diff --git a/packages/chain-sdk/src/messages/cosmos/staking/MsgCreateValidator.ts b/packages/js-sdk/src/messages/cosmos/staking/MsgCreateValidator.ts similarity index 100% rename from packages/chain-sdk/src/messages/cosmos/staking/MsgCreateValidator.ts rename to packages/js-sdk/src/messages/cosmos/staking/MsgCreateValidator.ts diff --git a/packages/chain-sdk/src/messages/cosmos/staking/MsgEditValidator.ts b/packages/js-sdk/src/messages/cosmos/staking/MsgEditValidator.ts similarity index 100% rename from packages/chain-sdk/src/messages/cosmos/staking/MsgEditValidator.ts rename to packages/js-sdk/src/messages/cosmos/staking/MsgEditValidator.ts diff --git a/packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts b/packages/js-sdk/src/messages/feegrant/MsgGrantAllowance.ts similarity index 100% rename from packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts rename to packages/js-sdk/src/messages/feegrant/MsgGrantAllowance.ts diff --git a/packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts b/packages/js-sdk/src/messages/feegrant/MsgRevokeAllowance.ts similarity index 100% rename from packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts rename to packages/js-sdk/src/messages/feegrant/MsgRevokeAllowance.ts diff --git a/packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts b/packages/js-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts rename to packages/js-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts diff --git a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts b/packages/js-sdk/src/messages/greenfield/chanenge/MsgAttest.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts rename to packages/js-sdk/src/messages/greenfield/chanenge/MsgAttest.ts diff --git a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts b/packages/js-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts rename to packages/js-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts diff --git a/packages/chain-sdk/src/messages/greenfield/index.ts b/packages/js-sdk/src/messages/greenfield/index.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/index.ts rename to packages/js-sdk/src/messages/greenfield/index.ts diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts b/packages/js-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts rename to packages/js-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts b/packages/js-sdk/src/messages/greenfield/payment/MsgDeposit.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts rename to packages/js-sdk/src/messages/greenfield/payment/MsgDeposit.ts diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts b/packages/js-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts rename to packages/js-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts b/packages/js-sdk/src/messages/greenfield/payment/MsgWithdraw.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts rename to packages/js-sdk/src/messages/greenfield/payment/MsgWithdraw.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMigrateBucket.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgMigrateBucket.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgMigrateBucket.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgMigrateBucket.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts diff --git a/packages/chain-sdk/src/messages/greenfield/virtualgroup/MsgSettle.ts b/packages/js-sdk/src/messages/greenfield/virtualgroup/MsgSettle.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/virtualgroup/MsgSettle.ts rename to packages/js-sdk/src/messages/greenfield/virtualgroup/MsgSettle.ts diff --git a/packages/chain-sdk/src/messages/index.ts b/packages/js-sdk/src/messages/index.ts similarity index 100% rename from packages/chain-sdk/src/messages/index.ts rename to packages/js-sdk/src/messages/index.ts diff --git a/packages/chain-sdk/src/messages/utils.ts b/packages/js-sdk/src/messages/utils.ts similarity index 100% rename from packages/chain-sdk/src/messages/utils.ts rename to packages/js-sdk/src/messages/utils.ts diff --git a/packages/chain-sdk/src/offchainauth/index.ts b/packages/js-sdk/src/offchainauth/index.ts similarity index 100% rename from packages/chain-sdk/src/offchainauth/index.ts rename to packages/js-sdk/src/offchainauth/index.ts diff --git a/packages/chain-sdk/src/offchainauth/utils.ts b/packages/js-sdk/src/offchainauth/utils.ts similarity index 100% rename from packages/chain-sdk/src/offchainauth/utils.ts rename to packages/js-sdk/src/offchainauth/utils.ts diff --git a/packages/chain-sdk/src/sign/index.ts b/packages/js-sdk/src/sign/index.ts similarity index 100% rename from packages/chain-sdk/src/sign/index.ts rename to packages/js-sdk/src/sign/index.ts diff --git a/packages/chain-sdk/src/sign/pubKey.ts b/packages/js-sdk/src/sign/pubKey.ts similarity index 100% rename from packages/chain-sdk/src/sign/pubKey.ts rename to packages/js-sdk/src/sign/pubKey.ts diff --git a/packages/chain-sdk/src/sign/signTx.ts b/packages/js-sdk/src/sign/signTx.ts similarity index 100% rename from packages/chain-sdk/src/sign/signTx.ts rename to packages/js-sdk/src/sign/signTx.ts diff --git a/packages/chain-sdk/src/types/auth.ts b/packages/js-sdk/src/types/auth.ts similarity index 100% rename from packages/chain-sdk/src/types/auth.ts rename to packages/js-sdk/src/types/auth.ts diff --git a/packages/chain-sdk/src/types/common.ts b/packages/js-sdk/src/types/common.ts similarity index 100% rename from packages/chain-sdk/src/types/common.ts rename to packages/js-sdk/src/types/common.ts diff --git a/packages/chain-sdk/src/types/index.ts b/packages/js-sdk/src/types/index.ts similarity index 100% rename from packages/chain-sdk/src/types/index.ts rename to packages/js-sdk/src/types/index.ts diff --git a/packages/chain-sdk/src/types/sp/BucketApproval.ts b/packages/js-sdk/src/types/sp/BucketApproval.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/BucketApproval.ts rename to packages/js-sdk/src/types/sp/BucketApproval.ts diff --git a/packages/chain-sdk/src/types/sp/Common.ts b/packages/js-sdk/src/types/sp/Common.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/Common.ts rename to packages/js-sdk/src/types/sp/Common.ts diff --git a/packages/chain-sdk/src/types/sp/ErrorResponse.ts b/packages/js-sdk/src/types/sp/ErrorResponse.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ErrorResponse.ts rename to packages/js-sdk/src/types/sp/ErrorResponse.ts diff --git a/packages/chain-sdk/src/types/sp/GetBucketMeta.ts b/packages/js-sdk/src/types/sp/GetBucketMeta.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/GetBucketMeta.ts rename to packages/js-sdk/src/types/sp/GetBucketMeta.ts diff --git a/packages/chain-sdk/src/types/sp/GetObject.ts b/packages/js-sdk/src/types/sp/GetObject.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/GetObject.ts rename to packages/js-sdk/src/types/sp/GetObject.ts diff --git a/packages/chain-sdk/src/types/sp/GetObjectMeta.ts b/packages/js-sdk/src/types/sp/GetObjectMeta.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/GetObjectMeta.ts rename to packages/js-sdk/src/types/sp/GetObjectMeta.ts diff --git a/packages/chain-sdk/src/types/sp/GetPreviewObject.ts b/packages/js-sdk/src/types/sp/GetPreviewObject.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/GetPreviewObject.ts rename to packages/js-sdk/src/types/sp/GetPreviewObject.ts diff --git a/packages/chain-sdk/src/types/sp/GetUserBuckets.ts b/packages/js-sdk/src/types/sp/GetUserBuckets.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/GetUserBuckets.ts rename to packages/js-sdk/src/types/sp/GetUserBuckets.ts diff --git a/packages/chain-sdk/src/types/sp/ListBucketReadRecord.ts b/packages/js-sdk/src/types/sp/ListBucketReadRecord.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListBucketReadRecord.ts rename to packages/js-sdk/src/types/sp/ListBucketReadRecord.ts diff --git a/packages/chain-sdk/src/types/sp/ListBucketsByIDs.ts b/packages/js-sdk/src/types/sp/ListBucketsByIDs.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListBucketsByIDs.ts rename to packages/js-sdk/src/types/sp/ListBucketsByIDs.ts diff --git a/packages/chain-sdk/src/types/sp/ListBucketsByPaymentAccount.ts b/packages/js-sdk/src/types/sp/ListBucketsByPaymentAccount.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListBucketsByPaymentAccount.ts rename to packages/js-sdk/src/types/sp/ListBucketsByPaymentAccount.ts diff --git a/packages/chain-sdk/src/types/sp/ListGroups.ts b/packages/js-sdk/src/types/sp/ListGroups.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListGroups.ts rename to packages/js-sdk/src/types/sp/ListGroups.ts diff --git a/packages/chain-sdk/src/types/sp/ListGroupsMembers.ts b/packages/js-sdk/src/types/sp/ListGroupsMembers.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListGroupsMembers.ts rename to packages/js-sdk/src/types/sp/ListGroupsMembers.ts diff --git a/packages/chain-sdk/src/types/sp/ListObjectPolicies.ts b/packages/js-sdk/src/types/sp/ListObjectPolicies.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListObjectPolicies.ts rename to packages/js-sdk/src/types/sp/ListObjectPolicies.ts diff --git a/packages/chain-sdk/src/types/sp/ListObjectsByBucketName.ts b/packages/js-sdk/src/types/sp/ListObjectsByBucketName.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListObjectsByBucketName.ts rename to packages/js-sdk/src/types/sp/ListObjectsByBucketName.ts diff --git a/packages/chain-sdk/src/types/sp/ListObjectsByIDs.ts b/packages/js-sdk/src/types/sp/ListObjectsByIDs.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListObjectsByIDs.ts rename to packages/js-sdk/src/types/sp/ListObjectsByIDs.ts diff --git a/packages/chain-sdk/src/types/sp/ListUserGroups.ts b/packages/js-sdk/src/types/sp/ListUserGroups.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListUserGroups.ts rename to packages/js-sdk/src/types/sp/ListUserGroups.ts diff --git a/packages/chain-sdk/src/types/sp/ListUserOwnedGroups.ts b/packages/js-sdk/src/types/sp/ListUserOwnedGroups.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListUserOwnedGroups.ts rename to packages/js-sdk/src/types/sp/ListUserOwnedGroups.ts diff --git a/packages/chain-sdk/src/types/sp/ListUserPaymentAccounts.ts b/packages/js-sdk/src/types/sp/ListUserPaymentAccounts.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListUserPaymentAccounts.ts rename to packages/js-sdk/src/types/sp/ListUserPaymentAccounts.ts diff --git a/packages/chain-sdk/src/types/sp/MigrateBucket.ts b/packages/js-sdk/src/types/sp/MigrateBucket.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/MigrateBucket.ts rename to packages/js-sdk/src/types/sp/MigrateBucket.ts diff --git a/packages/chain-sdk/src/types/sp/ObjectApproval.ts b/packages/js-sdk/src/types/sp/ObjectApproval.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ObjectApproval.ts rename to packages/js-sdk/src/types/sp/ObjectApproval.ts diff --git a/packages/chain-sdk/src/types/sp/PutObject.ts b/packages/js-sdk/src/types/sp/PutObject.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/PutObject.ts rename to packages/js-sdk/src/types/sp/PutObject.ts diff --git a/packages/chain-sdk/src/types/sp/ReadQuota.ts b/packages/js-sdk/src/types/sp/ReadQuota.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ReadQuota.ts rename to packages/js-sdk/src/types/sp/ReadQuota.ts diff --git a/packages/chain-sdk/src/types/sp/RequestNonce.ts b/packages/js-sdk/src/types/sp/RequestNonce.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/RequestNonce.ts rename to packages/js-sdk/src/types/sp/RequestNonce.ts diff --git a/packages/chain-sdk/src/types/sp/SuccessResponse.ts b/packages/js-sdk/src/types/sp/SuccessResponse.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/SuccessResponse.ts rename to packages/js-sdk/src/types/sp/SuccessResponse.ts diff --git a/packages/chain-sdk/src/types/sp/VerifyPermission.ts b/packages/js-sdk/src/types/sp/VerifyPermission.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/VerifyPermission.ts rename to packages/js-sdk/src/types/sp/VerifyPermission.ts diff --git a/packages/chain-sdk/src/types/sp/index.ts b/packages/js-sdk/src/types/sp/index.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/index.ts rename to packages/js-sdk/src/types/sp/index.ts diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/js-sdk/src/types/storage.ts similarity index 100% rename from packages/chain-sdk/src/types/storage.ts rename to packages/js-sdk/src/types/storage.ts diff --git a/packages/chain-sdk/src/types/tx.ts b/packages/js-sdk/src/types/tx.ts similarity index 100% rename from packages/chain-sdk/src/types/tx.ts rename to packages/js-sdk/src/types/tx.ts diff --git a/packages/chain-sdk/src/utils/allowance.ts b/packages/js-sdk/src/utils/allowance.ts similarity index 100% rename from packages/chain-sdk/src/utils/allowance.ts rename to packages/js-sdk/src/utils/allowance.ts diff --git a/packages/chain-sdk/src/utils/encoding.ts b/packages/js-sdk/src/utils/encoding.ts similarity index 100% rename from packages/chain-sdk/src/utils/encoding.ts rename to packages/js-sdk/src/utils/encoding.ts diff --git a/packages/chain-sdk/src/utils/grn.ts b/packages/js-sdk/src/utils/grn.ts similarity index 100% rename from packages/chain-sdk/src/utils/grn.ts rename to packages/js-sdk/src/utils/grn.ts diff --git a/packages/chain-sdk/src/utils/helpers.ts b/packages/js-sdk/src/utils/helpers.ts similarity index 100% rename from packages/chain-sdk/src/utils/helpers.ts rename to packages/js-sdk/src/utils/helpers.ts diff --git a/packages/chain-sdk/src/utils/http.ts b/packages/js-sdk/src/utils/http.ts similarity index 100% rename from packages/chain-sdk/src/utils/http.ts rename to packages/js-sdk/src/utils/http.ts diff --git a/packages/chain-sdk/src/utils/index.ts b/packages/js-sdk/src/utils/index.ts similarity index 100% rename from packages/chain-sdk/src/utils/index.ts rename to packages/js-sdk/src/utils/index.ts diff --git a/packages/chain-sdk/src/utils/s3.ts b/packages/js-sdk/src/utils/s3.ts similarity index 100% rename from packages/chain-sdk/src/utils/s3.ts rename to packages/js-sdk/src/utils/s3.ts diff --git a/packages/chain-sdk/src/utils/time.ts b/packages/js-sdk/src/utils/time.ts similarity index 100% rename from packages/chain-sdk/src/utils/time.ts rename to packages/js-sdk/src/utils/time.ts diff --git a/packages/chain-sdk/src/utils/units.ts b/packages/js-sdk/src/utils/units.ts similarity index 100% rename from packages/chain-sdk/src/utils/units.ts rename to packages/js-sdk/src/utils/units.ts diff --git a/packages/chain-sdk/tests/.env.example.ts b/packages/js-sdk/tests/.env.example.ts similarity index 100% rename from packages/chain-sdk/tests/.env.example.ts rename to packages/js-sdk/tests/.env.example.ts diff --git a/packages/chain-sdk/tests/account.spec.ts b/packages/js-sdk/tests/account.spec.ts similarity index 100% rename from packages/chain-sdk/tests/account.spec.ts rename to packages/js-sdk/tests/account.spec.ts diff --git a/packages/chain-sdk/tests/config.spec.ts b/packages/js-sdk/tests/config.spec.ts similarity index 100% rename from packages/chain-sdk/tests/config.spec.ts rename to packages/js-sdk/tests/config.spec.ts diff --git a/packages/chain-sdk/tests/parsexml.spec.ts b/packages/js-sdk/tests/parsexml.spec.ts similarity index 100% rename from packages/chain-sdk/tests/parsexml.spec.ts rename to packages/js-sdk/tests/parsexml.spec.ts diff --git a/packages/chain-sdk/tests/policy.spec.ts b/packages/js-sdk/tests/policy.spec.ts similarity index 100% rename from packages/chain-sdk/tests/policy.spec.ts rename to packages/js-sdk/tests/policy.spec.ts diff --git a/packages/chain-sdk/tests/query.spec.ts b/packages/js-sdk/tests/query.spec.ts similarity index 100% rename from packages/chain-sdk/tests/query.spec.ts rename to packages/js-sdk/tests/query.spec.ts diff --git a/packages/chain-sdk/tests/storage.spec.ts b/packages/js-sdk/tests/storage.spec.ts similarity index 100% rename from packages/chain-sdk/tests/storage.spec.ts rename to packages/js-sdk/tests/storage.spec.ts diff --git a/packages/chain-sdk/tests/utils.spec.ts b/packages/js-sdk/tests/utils.spec.ts similarity index 100% rename from packages/chain-sdk/tests/utils.spec.ts rename to packages/js-sdk/tests/utils.spec.ts diff --git a/packages/chain-sdk/tests/wallet.spec.ts b/packages/js-sdk/tests/wallet.spec.ts similarity index 100% rename from packages/chain-sdk/tests/wallet.spec.ts rename to packages/js-sdk/tests/wallet.spec.ts diff --git a/packages/chain-sdk/tsconfig.json b/packages/js-sdk/tsconfig.json similarity index 100% rename from packages/chain-sdk/tsconfig.json rename to packages/js-sdk/tsconfig.json diff --git a/packages/zk-crypto/package.json b/packages/zk-crypto/package.json index 2b6987f8..aa74aaaa 100644 --- a/packages/zk-crypto/package.json +++ b/packages/zk-crypto/package.json @@ -29,7 +29,20 @@ "dist", "types" ], - "keywords": [], + "repository": { + "type": "git", + "url": "https://github.com/bnb-chain/greenfield-js-sdk", + "directory": "packages/zk-crypto" + }, + "homepage": "https://github.com/bnb-chain/greenfield-js-sdk/tree/alpha/packages/zk-crypto#readme", + "bugs": "https://github.com/bnb-chain/greenfield-js-sdk/issues", + "keywords": [ + "greenfiled", + "crypto", + "signature", + "EDDSA", + "ECDSA" + ], "author": "", "license": "MIT", "devDependencies": { From 10c572370abfa76c30c5f2f4b288cbc76efed6b1 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Mon, 18 Sep 2023 15:08:09 +0800 Subject: [PATCH 256/433] Chore/package js sdk (#347) * chore: Update deps * chore: Update deps --- .changeset/tame-pandas-deny.md | 8 ++ .../clients/spclient/spApis/bucketApproval.ts | 36 ----- .../spclient/spApis/migrateApproval.ts | 36 ----- .../clients/spclient/spApis/objectApproval.ts | 36 ----- packages/chain-sdk/src/types/sp-xml/Common.ts | 131 ------------------ .../src/types/sp-xml/GetBucketMetaResponse.ts | 15 -- .../src/types/sp-xml/GetObjectMetaResponse.ts | 15 -- .../types/sp-xml/GetUserBucketsResponse.ts | 9 -- .../sp-xml/ListBucketReadRecordResponse.ts | 10 -- .../types/sp-xml/ListBucketsByIDsResponse.ts | 24 ---- .../types/sp-xml/ListGroupsMembersResponse.ts | 21 --- .../src/types/sp-xml/ListGroupsResponse.ts | 20 --- .../sp-xml/ListObjectsByBucketNameResponse.ts | 18 --- .../types/sp-xml/ListObjectsByIDsResponse.ts | 25 ---- .../types/sp-xml/ListUserGroupsResponse.ts | 21 --- .../sp-xml/ListUserOwnedGroupsResponse.ts | 21 --- .../src/types/sp-xml/ReadQuotaResponse.ts | 10 -- .../src/types/sp-xml/RequestErrorResponse.ts | 6 - .../src/types/sp-xml/RequestNonceResponse.ts | 8 -- .../types/sp-xml/VerifyPermissionResponse.ts | 7 - packages/chain-sdk/src/types/sp-xml/index.ts | 14 -- pnpm-lock.yaml | 128 ++++++++--------- 22 files changed, 72 insertions(+), 547 deletions(-) create mode 100644 .changeset/tame-pandas-deny.md delete mode 100644 packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts delete mode 100644 packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts delete mode 100644 packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/Common.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/GetBucketMetaResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/GetObjectMetaResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/GetUserBucketsResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ListBucketReadRecordResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ListBucketsByIDsResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ListGroupsResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ListObjectsByIDsResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ListUserGroupsResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ListUserOwnedGroupsResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ReadQuotaResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/RequestErrorResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/RequestNonceResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/VerifyPermissionResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/index.ts diff --git a/.changeset/tame-pandas-deny.md b/.changeset/tame-pandas-deny.md new file mode 100644 index 00000000..c15b86be --- /dev/null +++ b/.changeset/tame-pandas-deny.md @@ -0,0 +1,8 @@ +--- +'@bnb-chain/create-gnfd-app': patch +'@bnb-chain/greenfiled-file-handle': patch +'@bnb-chain/greenfield-zk-crypto': patch +'@bnb-chain/greenfield-js-sdk': patch +--- + +chore: Update deps diff --git a/packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts b/packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts deleted file mode 100644 index 9d6ca5fd..00000000 --- a/packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; -import { ICreateBucketMsgType, ReqMeta } from '@/types'; -import { toHex, utf8ToBytes } from 'ethereum-cryptography/utils'; -import { getSortQuery } from '../auth'; - -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_approval -export const getBucketApprovalMetaInfo = async (endpoint: string, msg: ICreateBucketMsgType) => { - const path = '/greenfield/admin/v1/get-approval'; - const queryMap = { - action: 'CreateBucket', - }; - const query = getSortQuery(queryMap); - const url = `${endpoint}${path}?${query}`; - const unSignedMessageInHex = toHex(utf8ToBytes(JSON.stringify(msg))); - - const reqMeta: Partial = { - contentSHA256: EMPTY_STRING_SHA256, - unsignMsg: unSignedMessageInHex, - method: METHOD_GET, - url: { - hostname: new URL(endpoint).hostname, - query, - path, - }, - }; - - const optionsWithOutHeaders: Omit = { - method: METHOD_GET, - }; - - return { - url, - optionsWithOutHeaders, - reqMeta, - }; -}; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts b/packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts deleted file mode 100644 index 903039be..00000000 --- a/packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; -import { IMigrateBucketMsgType, ReqMeta } from '@/types'; -import { toHex, utf8ToBytes } from 'ethereum-cryptography/utils'; -import { getSortQuery } from '../auth'; - -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_approval -export const getMigrateMetaInfo = async (endpoint: string, msg: IMigrateBucketMsgType) => { - const path = '/greenfield/admin/v1/get-approval'; - const queryMap = { - action: 'MigrateBucket', - }; - const query = getSortQuery(queryMap); - const url = `${endpoint}${path}?${query}`; - const unSignedMessageInHex = toHex(utf8ToBytes(JSON.stringify(msg))); - - const reqMeta: Partial = { - contentSHA256: EMPTY_STRING_SHA256, - method: METHOD_GET, - url: { - hostname: new URL(url).hostname, - query, - path, - }, - unsignMsg: unSignedMessageInHex, - }; - - const optionsWithOutHeaders: Omit = { - method: METHOD_GET, - }; - - return { - url, - optionsWithOutHeaders, - reqMeta, - }; -}; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts b/packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts deleted file mode 100644 index a30339de..00000000 --- a/packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; -import { ICreateObjectMsgType, ReqMeta } from '@/types'; -import { toHex, utf8ToBytes } from 'ethereum-cryptography/utils'; -import { getSortQuery } from '../auth'; - -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_approval -export const getObjectApprovalMetaInfo = async (endpoint: string, msg: ICreateObjectMsgType) => { - const path = '/greenfield/admin/v1/get-approval'; - const queryMap = { - action: 'CreateObject', - }; - const query = getSortQuery(queryMap); - const url = `${endpoint}${path}?${query}`; - const unSignedMessageInHex = toHex(utf8ToBytes(JSON.stringify(msg))); - - const reqMeta: Partial = { - contentSHA256: EMPTY_STRING_SHA256, - unsignMsg: unSignedMessageInHex, - method: METHOD_GET, - url: { - hostname: new URL(endpoint).hostname, - query, - path, - }, - }; - - const optionsWithOutHeaders: Omit = { - method: METHOD_GET, - }; - - return { - url, - optionsWithOutHeaders, - reqMeta, - }; -}; diff --git a/packages/chain-sdk/src/types/sp-xml/Common.ts b/packages/chain-sdk/src/types/sp-xml/Common.ts deleted file mode 100644 index 931c1e67..00000000 --- a/packages/chain-sdk/src/types/sp-xml/Common.ts +++ /dev/null @@ -1,131 +0,0 @@ -export interface BucketMeta { - BucketInfo: BucketInfo; - Removed: boolean; - DeleteAt: number; - DeleteReason: string; - Operator: string; - CreateTxHash: string; - UpdateTxHash: string; - UpdateAt: number; - UpdateTime: number; -} - -export interface BucketInfo { - // PrimarySpId: number; - BucketName: string; - BucketStatus: number; - ChargedReadQuota: number; - CreateAt: number; - GlobalVirtualGroupFamilyId: number; - Id: string; - Owner: string; - PaymentAddress: string; - SourceType: number; - Visibility: number; -} - -export interface StreamRecord { - Account: string; - CrudTimestamp: string; - NetflowRate: string; - StaticBalance: string; - BufferBalance: string; - LockBalance: string; - Status: string; - SettleTimestamp: string; - OutFlowCount: string; - FrozenNetflowRate: string; -} - -export interface ObjectMeta { - ObjectInfo: ObjectInfo; - LockedBalance: string; - Removed: boolean; - UpdateAt: number; - DeleteAt: number; - DeleteReason: string; - Operator: string; - CreateTxHash: string; - UpdateTxHash: string; - SealTxHash: string; -} - -export interface ObjectInfo { - BucketName: string; - Checksums: string[]; - ContentType: string; - CreateAt: number; - Creator: string; - Id: number; - LocalVirtualGroupId: number; - ObjectName: string; - ObjectStatus: number; - Owner: string; - PayloadSize: number; - RedundancyType: number; - SourceType: number; - Visibility: number; -} - -export function formatBucketInfo(o: BucketInfo) { - return { - ...o, - // PrimarySpId: Number(item.BucketInfo.PrimarySpId), - BucketStatus: Number(o.BucketStatus), - ChargedReadQuota: Number(o.ChargedReadQuota), - CreateAt: Number(o.CreateAt), - GlobalVirtualGroupFamilyId: Number(o.GlobalVirtualGroupFamilyId), - SourceType: Number(o.SourceType), - Visibility: Number(o.Visibility), - }; -} - -export function formatObjectInfo(o: ObjectInfo) { - return { - ...o, - CreateAt: Number(o.CreateAt), - Id: Number(o.Id), - LocalVirtualGroupId: Number(o.LocalVirtualGroupId), - ObjectStatus: Number(o.ObjectStatus), - PayloadSize: Number(o.PayloadSize), - RedundancyType: Number(o.RedundancyType), - SourceType: Number(o.SourceType), - Visibility: Number(o.Visibility), - }; -} - -export function convertStrToBool(str: string) { - return String(str).toLowerCase() === 'true'; -} - -export interface ReadRecord { - ObjectName: string; - ObjectID: string; - ReadAccountAddress: string; - ReadTimestampUs: number; - ReadSize: number; -} - -export function formatReadRecord(o: ReadRecord) { - return { - ...o, - ReadTimestampUs: Number(o.ReadTimestampUs), - ReadSize: Number(o.ReadSize), - }; -} - -export interface GroupInfo { - Owner: string; - GroupName: string; - SourceType: number; - Id: number; - Extra: string; -} - -export function formatGroupInfo(o: GroupInfo) { - return { - ...o, - SourceType: Number(o.SourceType), - Id: Number(o.Id), - }; -} diff --git a/packages/chain-sdk/src/types/sp-xml/GetBucketMetaResponse.ts b/packages/chain-sdk/src/types/sp-xml/GetBucketMetaResponse.ts deleted file mode 100644 index 55272bf9..00000000 --- a/packages/chain-sdk/src/types/sp-xml/GetBucketMetaResponse.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { BucketMeta, StreamRecord } from './Common'; - -export interface GetBucketMetaRequest { - bucketName: string; - endpoint: string; -} - -export interface GetBucketMetaResponse { - GfSpGetBucketMetaResponse: GfSPGetBucketMetaResponse; -} - -export interface GfSPGetBucketMetaResponse { - Bucket: BucketMeta; - StreamRecord: StreamRecord; -} diff --git a/packages/chain-sdk/src/types/sp-xml/GetObjectMetaResponse.ts b/packages/chain-sdk/src/types/sp-xml/GetObjectMetaResponse.ts deleted file mode 100644 index 5c6d215d..00000000 --- a/packages/chain-sdk/src/types/sp-xml/GetObjectMetaResponse.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { ObjectMeta } from './Common'; - -export interface GetObjectMetaRequest { - bucketName: string; - objectName: string; - endpoint: string; -} - -export interface GetObjectMetaResponse { - GfSpGetObjectMetaResponse: GfSPGetObjectMetaResponse; -} - -export interface GfSPGetObjectMetaResponse { - Object: ObjectMeta; -} diff --git a/packages/chain-sdk/src/types/sp-xml/GetUserBucketsResponse.ts b/packages/chain-sdk/src/types/sp-xml/GetUserBucketsResponse.ts deleted file mode 100644 index 45c09a1e..00000000 --- a/packages/chain-sdk/src/types/sp-xml/GetUserBucketsResponse.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { BucketMeta } from './Common'; - -export interface GetUserBucketsResponse { - GfSpGetUserBucketsResponse: GfSPGetUserBucketsResponse; -} - -export interface GfSPGetUserBucketsResponse { - Buckets: BucketMeta[]; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ListBucketReadRecordResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListBucketReadRecordResponse.ts deleted file mode 100644 index ed7906aa..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ListBucketReadRecordResponse.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { ReadRecord } from './Common'; - -export interface ListBucketReadRecordResponse { - GetBucketReadQuotaResult: GetBucketReadQuotaResult; -} - -export interface GetBucketReadQuotaResult { - NextStartTimestampUs: string; - ReadRecords: ReadRecord[]; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ListBucketsByIDsResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListBucketsByIDsResponse.ts deleted file mode 100644 index 84c2c223..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ListBucketsByIDsResponse.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { BucketInfo } from './Common'; - -export interface ListBucketsByIDsResponse { - GfSpListBucketsByIDsResponse: GfSpListBucketsByIDsResponse; -} - -export interface GfSpListBucketsByIDsResponse { - BucketEntry: BucketEntry[]; -} - -export interface BucketEntry { - Id: number; - Value: { - BucketInfo: BucketInfo; - Removed: boolean; - DeleteAt: number; - DeleteReason: string; - Operator: string; - CreateTxHash: string; - UpdateTxHash: string; - UpdateAt: number; - UpdateTime: number; - }; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts deleted file mode 100644 index 7c4b9441..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { GroupInfo } from './Common'; - -export interface ListGroupsMembersResponse { - GfSpGetGroupMembersResponse: GfSpGetGroupMembersResponse; -} - -export interface GfSpGetGroupMembersResponse { - Groups: Group[]; -} - -interface Group { - Group: GroupInfo; - AccountId: string; - Operator: string; - CreateAt: number; - CreateTime: number; - UpdateAt: number; - UpdateTime: number; - Removed: boolean; - ExpirationTime: string; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ListGroupsResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListGroupsResponse.ts deleted file mode 100644 index d2755afd..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ListGroupsResponse.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { GroupInfo } from './Common'; - -export interface ListGroupsResponse { - GfSpGetGroupListResponse: GfSpGetGroupListResponse; -} - -interface Group { - Group: GroupInfo; - Operator: string; - CreateAt: number; - CreateTime: number; - UpdateAt: number; - UpdateTime: number; - Removed: boolean; -} - -export interface GfSpGetGroupListResponse { - Groups: Group[]; - Count: number; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts deleted file mode 100644 index 8579f978..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ObjectMeta } from './Common'; - -export interface ListObjectsByBucketNameResponse { - GfSpListObjectsByBucketNameResponse: GfSPListObjectsByBucketNameResponse; -} - -export interface GfSPListObjectsByBucketNameResponse { - Objects: ObjectMeta[]; - KeyCount: string; - MaxKeys: string; - IsTruncated: boolean; - NextContinuationToken: string; - Name: string; - Prefix: string; - Delimiter: string; - CommonPrefixes: string[]; - ContinuationToken: string; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ListObjectsByIDsResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListObjectsByIDsResponse.ts deleted file mode 100644 index 967b742e..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ListObjectsByIDsResponse.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ObjectInfo } from './Common'; - -export interface ListObjectsByIDsResponse { - GfSpListObjectsByIDsResponse: GfSpListObjectsByIDsResponse; -} - -export interface GfSpListObjectsByIDsResponse { - ObjectEntry: ObjectEntry[]; -} - -export interface ObjectEntry { - Id: number; - Value: { - ObjectInfo: ObjectInfo; - LockedBalance: string; - Removed: boolean; - UpdateAt: number; - DeleteAt: number; - DeleteReason: string; - Operator: string; - CreateTxHash: string; - UpdateTxHash: string; - SealTxHash: string; - }; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ListUserGroupsResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListUserGroupsResponse.ts deleted file mode 100644 index b89398af..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ListUserGroupsResponse.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { GroupInfo } from './Common'; - -export interface ListUserGroupsResponse { - GfSpGetUserGroupsResponse: GfSpGetUserGroupsResponse; -} - -export interface GfSpGetUserGroupsResponse { - Groups: Group[]; -} - -interface Group { - Group: GroupInfo; - AccountId: string; - Operator: string; - CreateAt: number; - CreateTime: number; - UpdateAt: number; - UpdateTime: number; - Removed: boolean; - ExpirationTime: string; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ListUserOwnedGroupsResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListUserOwnedGroupsResponse.ts deleted file mode 100644 index c3e1a058..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ListUserOwnedGroupsResponse.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { GroupInfo } from './Common'; - -export interface ListUserOwnedGroupsResponse { - GfSpGetUserOwnedGroupsResponse: GfSpGetUserOwnedGroupsResponse; -} - -export interface GfSpGetUserOwnedGroupsResponse { - Groups: Group[]; -} - -interface Group { - Group: GroupInfo; - AccountId: string; - Operator: string; - CreateAt: number; - CreateTime: number; - UpdateAt: number; - UpdateTime: number; - Removed: boolean; - ExpirationTime: string; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ReadQuotaResponse.ts b/packages/chain-sdk/src/types/sp-xml/ReadQuotaResponse.ts deleted file mode 100644 index 5498c434..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ReadQuotaResponse.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface ReadQuotaResponse { - GetReadQuotaResult: { - BucketName: string; - BucketID: string; - ReadQuotaSize: number; - SPFreeReadQuotaSize: number; - ReadConsumedSize: number; - FreeConsumedSize: number; - }; -} diff --git a/packages/chain-sdk/src/types/sp-xml/RequestErrorResponse.ts b/packages/chain-sdk/src/types/sp-xml/RequestErrorResponse.ts deleted file mode 100644 index c9ebf94c..00000000 --- a/packages/chain-sdk/src/types/sp-xml/RequestErrorResponse.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface RequestErrorResponse { - Error: { - Code: string; - Message: string; - }; -} diff --git a/packages/chain-sdk/src/types/sp-xml/RequestNonceResponse.ts b/packages/chain-sdk/src/types/sp-xml/RequestNonceResponse.ts deleted file mode 100644 index aa129d46..00000000 --- a/packages/chain-sdk/src/types/sp-xml/RequestNonceResponse.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface RequestNonceResponse { - RequestNonceResp: { - CurrentNonce: number; - CurrentPublicKey: string; - ExpiryDate: string; - NextNonce: number; - }; -} diff --git a/packages/chain-sdk/src/types/sp-xml/VerifyPermissionResponse.ts b/packages/chain-sdk/src/types/sp-xml/VerifyPermissionResponse.ts deleted file mode 100644 index f0aed8ae..00000000 --- a/packages/chain-sdk/src/types/sp-xml/VerifyPermissionResponse.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface VerifyPermissionResponse { - QueryVerifyPermissionResponse: QueryVerifyPermissionResponse; -} - -export interface QueryVerifyPermissionResponse { - Effect: number; -} diff --git a/packages/chain-sdk/src/types/sp-xml/index.ts b/packages/chain-sdk/src/types/sp-xml/index.ts deleted file mode 100644 index 3bf8b1a8..00000000 --- a/packages/chain-sdk/src/types/sp-xml/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -export * from './GetBucketMetaResponse'; -export * from './GetObjectMetaResponse'; -export * from './GetUserBucketsResponse'; -export * from './ListBucketReadRecordResponse'; -export * from './ListBucketsByIDsResponse'; -export * from './ListGroupsMembersResponse'; -export * from './ListGroupsResponse'; -export * from './ListObjectsByBucketNameResponse'; -export * from './ListObjectsByIDsResponse'; -export * from './ListUserGroupsResponse'; -export * from './ReadQuotaResponse'; -export * from './RequestErrorResponse'; -export * from './RequestNonceResponse'; -export * from './VerifyPermissionResponse'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1410fc42..066f1fb8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -112,7 +112,7 @@ importers: dependencies: '@bnb-chain/greenfield-js-sdk': specifier: workspace:* - version: link:../../packages/chain-sdk + version: link:../../packages/js-sdk '@bnb-chain/greenfiled-file-handle': specifier: workspace:* version: link:../../packages/file-handle @@ -197,7 +197,7 @@ importers: dependencies: '@bnb-chain/greenfield-js-sdk': specifier: workspace:* - version: link:../../packages/chain-sdk + version: link:../../packages/js-sdk '@bnb-chain/greenfiled-file-handle': specifier: workspace:* version: link:../../packages/file-handle @@ -206,7 +206,68 @@ importers: specifier: ^7.0.3 version: 7.0.3 - packages/chain-sdk: + packages/create-gnfd-app: + dependencies: + '@inquirer/prompts': + specifier: ^3.1.1 + version: 3.1.1 + commander: + specifier: ^11.0.0 + version: 11.0.0 + cross-spawn: + specifier: ^7.0.3 + version: 7.0.3 + download-git-repo: + specifier: ^3.0.2 + version: 3.0.2 + fs-extra: + specifier: ^11.1.1 + version: 11.1.1 + handlebars: + specifier: ^4.7.8 + version: 4.7.8 + ora: + specifier: ^5.4.0 + version: 5.4.1 + picocolors: + specifier: ^1.0.0 + version: 1.0.0 + validate-npm-package-name: + specifier: ^5.0.0 + version: 5.0.0 + devDependencies: + '@types/cross-spawn': + specifier: ^6.0.3 + version: 6.0.3 + '@types/fs-extra': + specifier: ^11.0.1 + version: 11.0.1 + '@types/validate-npm-package-name': + specifier: ^4.0.0 + version: 4.0.0 + + packages/file-handle: + devDependencies: + clean-webpack-plugin: + specifier: ^4.0.0 + version: 4.0.0(webpack@5.88.1) + copy-webpack-plugin: + specifier: ^11.0.0 + version: 11.0.0(webpack@5.88.1) + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + typescript: + specifier: ^5.1.6 + version: 5.2.2 + webpack: + specifier: ^5.88.1 + version: 5.88.1(webpack-cli@5.1.4) + webpack-cli: + specifier: ^5.1.4 + version: 5.1.4(webpack@5.88.1) + + packages/js-sdk: dependencies: '@bnb-chain/greenfield-cosmos-types': specifier: 0.4.0-alpha.23 @@ -312,67 +373,6 @@ importers: specifier: ^4.9.5 version: 4.9.5 - packages/create-gnfd-app: - dependencies: - '@inquirer/prompts': - specifier: ^3.1.1 - version: 3.1.1 - commander: - specifier: ^11.0.0 - version: 11.0.0 - cross-spawn: - specifier: ^7.0.3 - version: 7.0.3 - download-git-repo: - specifier: ^3.0.2 - version: 3.0.2 - fs-extra: - specifier: ^11.1.1 - version: 11.1.1 - handlebars: - specifier: ^4.7.8 - version: 4.7.8 - ora: - specifier: ^5.4.0 - version: 5.4.1 - picocolors: - specifier: ^1.0.0 - version: 1.0.0 - validate-npm-package-name: - specifier: ^5.0.0 - version: 5.0.0 - devDependencies: - '@types/cross-spawn': - specifier: ^6.0.3 - version: 6.0.3 - '@types/fs-extra': - specifier: ^11.0.1 - version: 11.0.1 - '@types/validate-npm-package-name': - specifier: ^4.0.0 - version: 4.0.0 - - packages/file-handle: - devDependencies: - clean-webpack-plugin: - specifier: ^4.0.0 - version: 4.0.0(webpack@5.88.1) - copy-webpack-plugin: - specifier: ^11.0.0 - version: 11.0.0(webpack@5.88.1) - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - typescript: - specifier: ^5.1.6 - version: 5.2.2 - webpack: - specifier: ^5.88.1 - version: 5.88.1(webpack-cli@5.1.4) - webpack-cli: - specifier: ^5.1.4 - version: 5.1.4(webpack@5.88.1) - packages/zk-crypto: devDependencies: clean-webpack-plugin: From f9fbcf330ce69e4b7144b03da58785e2c1d7ef2a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 15:11:56 +0800 Subject: [PATCH 257/433] chore: [ci] release (alpha) (#348) Co-authored-by: github-actions[bot] --- .changeset/pre.json | 5 ++++- examples/nextjs/CHANGELOG.md | 10 ++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 10 ++++++++++ examples/nodejs/package.json | 2 +- packages/create-gnfd-app/CHANGELOG.md | 12 ++++++++++++ packages/create-gnfd-app/package.json | 2 +- packages/file-handle/CHANGELOG.md | 12 ++++++++++++ packages/file-handle/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 17 +++++++++++++++++ packages/js-sdk/package.json | 2 +- packages/zk-crypto/CHANGELOG.md | 12 ++++++++++++ packages/zk-crypto/package.json | 2 +- 13 files changed, 83 insertions(+), 7 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 4328d2a8..0463e279 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -9,5 +9,8 @@ "@bnb-chain/greenfiled-file-handle": "0.2.1", "@bnb-chain/greenfield-zk-crypto": "0.0.3" }, - "changesets": [] + "changesets": [ + "great-teachers-thank", + "tame-pandas-deny" + ] } diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index cec5c50b..2cedbb81 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,15 @@ # @demo/wallet +## 0.0.7-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9), + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1)]: + - @bnb-chain/greenfiled-file-handle@0.2.2-alpha.0 + - @bnb-chain/greenfield-js-sdk@0.2.6-alpha.0 + ## 0.0.6 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 2b8d76a8..a361d711 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.6", + "version": "0.0.7-alpha.0", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 07914ab6..dd21585c 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,15 @@ # @demo/nodejs +## 0.0.10-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9), + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1)]: + - @bnb-chain/greenfiled-file-handle@0.2.2-alpha.0 + - @bnb-chain/greenfield-js-sdk@0.2.6-alpha.0 + ## 0.0.9 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 6247770f..7335576b 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.9", + "version": "0.0.10-alpha.0", "type": "commonjs", "private": true, "scripts": {}, diff --git a/packages/create-gnfd-app/CHANGELOG.md b/packages/create-gnfd-app/CHANGELOG.md index 17ca5eeb..5411eae4 100644 --- a/packages/create-gnfd-app/CHANGELOG.md +++ b/packages/create-gnfd-app/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/create-gnfd-app +## 0.0.3-alpha.0 + +### Patch Changes + +- [#346](https://github.com/bnb-chain/greenfield-js-sdk/pull/346) + [`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update package.json + +- [#347](https://github.com/bnb-chain/greenfield-js-sdk/pull/347) + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + ## 0.0.2 ### Patch Changes diff --git a/packages/create-gnfd-app/package.json b/packages/create-gnfd-app/package.json index 7ec596ac..15cb1451 100644 --- a/packages/create-gnfd-app/package.json +++ b/packages/create-gnfd-app/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/create-gnfd-app", - "version": "0.0.2", + "version": "0.0.3-alpha.0", "description": "help you create greenfield project quickly", "main": "index.js", "bin": { diff --git a/packages/file-handle/CHANGELOG.md b/packages/file-handle/CHANGELOG.md index 78c51c6c..d0f3230f 100644 --- a/packages/file-handle/CHANGELOG.md +++ b/packages/file-handle/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/greenfiled-file-handle +## 0.2.2-alpha.0 + +### Patch Changes + +- [#346](https://github.com/bnb-chain/greenfield-js-sdk/pull/346) + [`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update package.json + +- [#347](https://github.com/bnb-chain/greenfield-js-sdk/pull/347) + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + ## 0.2.1 ### Patch Changes diff --git a/packages/file-handle/package.json b/packages/file-handle/package.json index dbf02ad7..7fa08201 100644 --- a/packages/file-handle/package.json +++ b/packages/file-handle/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfiled-file-handle", - "version": "0.2.1", + "version": "0.2.2-alpha.0", "description": "checksums wasm package", "module": "./dist/browser/esm/index.js", "main": "./dist/node/index.js", diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index ac9883e8..ac4d161f 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,22 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.6-alpha.0 + +### Patch Changes + +- [#346](https://github.com/bnb-chain/greenfield-js-sdk/pull/346) + [`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update package.json + +- [#347](https://github.com/bnb-chain/greenfield-js-sdk/pull/347) + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + +- Updated dependencies + [[`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9), + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1)]: + - @bnb-chain/greenfield-zk-crypto@0.0.4-alpha.0 + ## 0.2.5 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 901b5af2..0d51e28c 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.5", + "version": "0.2.6-alpha.0", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", diff --git a/packages/zk-crypto/CHANGELOG.md b/packages/zk-crypto/CHANGELOG.md index 5a325402..b242551b 100644 --- a/packages/zk-crypto/CHANGELOG.md +++ b/packages/zk-crypto/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/zk-crypto +## 0.0.4-alpha.0 + +### Patch Changes + +- [#346](https://github.com/bnb-chain/greenfield-js-sdk/pull/346) + [`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update package.json + +- [#347](https://github.com/bnb-chain/greenfield-js-sdk/pull/347) + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + ## 0.0.3 ### Patch Changes diff --git a/packages/zk-crypto/package.json b/packages/zk-crypto/package.json index aa74aaaa..0878cc99 100644 --- a/packages/zk-crypto/package.json +++ b/packages/zk-crypto/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-zk-crypto", - "version": "0.0.3", + "version": "0.0.4-alpha.0", "description": "Zk crypto wasm module", "scripts": { "predev": "rimraf ./dist", From 69f9bd7c4838ddfea9764147d48af6f44014b4b8 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 19 Sep 2023 17:34:06 +0800 Subject: [PATCH 258/433] Chore/update deps (#349) * chore: Update deps * chore: Update deps --- README.md | 65 +- package.json | 15 +- packages/js-sdk/package.json | 5 +- pnpm-lock.yaml | 4483 ++++++++++++++++------------------ 4 files changed, 2186 insertions(+), 2382 deletions(-) diff --git a/README.md b/README.md index 517ccc84..7ca91481 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,17 @@ -# GreenField JS SDK +# GreenField JS SDK ![License](https://img.shields.io/npm/l/%40bnb-chain%2Fgreenfield-js-sdk) ![version](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-js-sdk?color=blue) + A Greenfield JS SDK is an easy-to-use tool designed to help developers build decentralized applications (DApps) on the Greenfield blockchain using JavaScript. It provides a simple and straightforward starting point for developers to create DApps with the latest technology and best practices, making Dapp development more efficient. This SDK includes features and tools to make interacting with the Greenfield blockchain easy, such as libraries for common functionality, testing tools, and documentation. With a Greenfield JS SDK, developers can create scalable, maintainable, and efficient DApps for a variety of use cases. ## Documentation You can find some package documentation below: -| Package | Description | -| --- | --- | -| [@bnb-chain/greenfield-js-sdk](./packages/chain-sdk/README.md) | A client library for Greenfield Chain | -| [@bnb-chain/greenfiled-file-handle](./packages/file-handle/README.md) | WASM module that handle file, such as `checksums` | -| [@bnb-chain/greenfield-zk-crypto](./packages/zk-crypto/README.md) | WASM module about sign crypto | -| [@bnb-chain/create-gnfd-app](./packages/create-gnfd-app/README.md) | Create Greenfield App Quickly | +| Package | Description | Version | +| --- | --- | --- | +| [@bnb-chain/greenfield-js-sdk](./packages/chain-sdk/README.md) | A client library for Greenfield Chain | ![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-js-sdk?color=blue) | +| [@bnb-chain/greenfiled-file-handle](./packages/file-handle/README.md) | WASM module that handle file, such as `checksums` | ![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfiled-file-handle?color=blue) | +| [@bnb-chain/greenfield-zk-crypto](./packages/zk-crypto/README.md) | WASM module about sign crypto | ![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-zk-crypto?color=blue) | +| [@bnb-chain/create-gnfd-app](./packages/create-gnfd-app/README.md) | Create Greenfield App Quickly | ![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fcreate-gnfd-app?color=blue) | ## Online Examples @@ -28,63 +29,27 @@ You can use [`create-gnfd-app`](./packages/create-gnfd-app/README.md) to create ![](./packages/create-gnfd-app/example.gif) +## Supported JS environments - +1. Modern browsers (Chromium, Firefox, Safari) +2. Browser extensions (Chromium, Firefox) +3. Nodejs +## Contribution - - - - -## Supported JS environments - -1. Modern browsers (Chromium, Firefox, Safari) -2. Browser extensions (Chromium, Firefox) -3. Nodejs - -## Contribution - Look over [CONTRIBUTING](./CONTRIBUTING.md) - ## Disclaimer Look over [DISCLAIMER](./DISCLAIMER.md) diff --git a/package.json b/package.json index 624b0aec..72ee45cb 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "scripts": { "prepare": "husky install", "version": "pnpm install && changeset version", - "clean": "rimraf node_modules **/*/node_modules" + "clean": "rimraf node_modules **/*/node_modules", + "build": "pnpm run -F \"./packages/**\" -r build" }, "keywords": [ "greenfield" @@ -26,11 +27,7 @@ "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.3.0", "@rollup/plugin-strip": "^3.0.2", - "@rollup/plugin-typescript": "^8.5.0", - "rollup": "^2.79.1", - "rollup-plugin-auto-external": "^2.0.0", - "rollup-plugin-polyfill-node": "^0.10.2", - "rollup-plugin-terser": "^7.0.2", + "@rollup/plugin-typescript": "^11.1.3", "@types/chai": "^4.3.5", "@types/mocha": "^9.1.1", "@types/node": "^18.16.18", @@ -47,6 +44,10 @@ "lint-staged": "^13.2.2", "mocha": "^10.2.0", "prettier": "^2.8.8", - "rimraf": "^3.0.2" + "rimraf": "^3.0.2", + "rollup": "^2.79.1", + "rollup-plugin-auto-external": "^2.0.0", + "rollup-plugin-polyfill-node": "^0.10.2", + "rollup-plugin-terser": "^7.0.2" } } diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 0d51e28c..29617676 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -98,6 +98,7 @@ "ts-jest": "^29.1.0", "ts-node": "^10.9.1", "tslib": "^2.5.0", - "typescript": "^4.9.5" + "typescript": "^4.9.5", + "@rollup/plugin-typescript": "^11.1.3" } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 066f1fb8..2759ef34 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,25 +10,25 @@ importers: devDependencies: '@babel/core': specifier: ^7.22.5 - version: 7.22.15 + version: 7.22.20 '@changesets/changelog-github': specifier: ^0.4.8 version: 0.4.8 '@changesets/cli': specifier: ^2.26.1 - version: 2.26.1 + version: 2.26.2 '@commitlint/cli': specifier: ^17.6.5 - version: 17.6.5 + version: 17.7.1 '@commitlint/config-conventional': specifier: ^17.6.5 - version: 17.6.5 + version: 17.7.0 '@rollup/plugin-alias': specifier: ^4.0.4 version: 4.0.4(rollup@2.79.1) '@rollup/plugin-babel': specifier: ^5.3.1 - version: 5.3.1(@babel/core@7.22.15)(rollup@2.79.1) + version: 5.3.1(@babel/core@7.22.20)(rollup@2.79.1) '@rollup/plugin-commonjs': specifier: ^22.0.2 version: 22.0.2(rollup@2.79.1) @@ -42,50 +42,50 @@ importers: specifier: ^3.0.2 version: 3.0.2(rollup@2.79.1) '@rollup/plugin-typescript': - specifier: ^8.5.0 - version: 8.5.0(rollup@2.79.1)(typescript@4.9.5) + specifier: ^11.1.3 + version: 11.1.3(rollup@2.79.1)(tslib@2.6.2)(typescript@4.9.5) '@types/chai': specifier: ^4.3.5 - version: 4.3.5 + version: 4.3.6 '@types/mocha': specifier: ^9.1.1 version: 9.1.1 '@types/node': specifier: ^18.16.18 - version: 18.16.18 + version: 18.17.17 '@types/react': specifier: ^18.2.12 - version: 18.2.12 + version: 18.2.22 '@types/react-dom': specifier: ^18.2.5 - version: 18.2.5 + version: 18.2.7 '@typescript-eslint/eslint-plugin': specifier: ^5.59.11 - version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@4.9.5) '@typescript-eslint/parser': specifier: ^5.59.11 - version: 5.59.11(eslint@8.48.0)(typescript@4.9.5) + version: 5.62.0(eslint@8.49.0)(typescript@4.9.5) chai: specifier: ^4.3.7 - version: 4.3.7 + version: 4.3.8 conventional-changelog-cmyr-config: specifier: ^2.1.0 - version: 2.1.0 + version: 2.1.1 eslint: specifier: ^8.48.0 - version: 8.48.0 + version: 8.49.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0)(typescript@4.9.5) + version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.49.0)(typescript@4.9.5) eslint-plugin-prettier: specifier: ^4.2.1 - version: 4.2.1(eslint@8.48.0)(prettier@2.8.8) + version: 4.2.1(eslint@8.49.0)(prettier@2.8.8) husky: specifier: ^8.0.3 version: 8.0.3 lint-staged: specifier: ^13.2.2 - version: 13.2.2 + version: 13.3.0 mocha: specifier: ^10.2.0 version: 10.2.0 @@ -133,43 +133,43 @@ importers: version: 5.7.0 '@metamask/eth-sig-util': specifier: ^5.0.2 - version: 5.0.2 + version: 5.1.0 '@next/font': specifier: 13.1.6 version: 13.1.6 '@rainbow-me/rainbowkit': specifier: ^1.0.5 - version: 1.0.5(@types/react@18.2.12)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0) + version: 1.0.11(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0)(viem@1.10.14)(wagmi@1.4.2) '@types/node': specifier: ^18.7.1 - version: 18.16.18 + version: 18.17.17 '@types/react': specifier: ^18.0.17 - version: 18.2.12 + version: 18.2.22 '@types/react-dom': specifier: ^18.0.6 - version: 18.2.5 + version: 18.2.7 axios: specifier: ^1.3.4 - version: 1.3.4 + version: 1.5.0 cors: specifier: ^2.8.5 version: 2.8.5 eslint: specifier: ^8.21.0 - version: 8.48.0 + version: 8.49.0 eslint-config-next: specifier: 13.1.6 - version: 13.1.6(eslint@8.48.0)(typescript@4.9.5) + version: 13.1.6(eslint@8.49.0)(typescript@4.9.5) evmosjs: specifier: ^0.2.17 version: 0.2.17 long: specifier: ^5.2.1 - version: 5.2.1 + version: 5.2.3 next: specifier: 13.1.6 - version: 13.1.6(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0) + version: 13.1.6(@babel/core@7.22.20)(react-dom@18.2.0)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 @@ -181,17 +181,17 @@ importers: version: 4.9.5 viem: specifier: ^1.0.6 - version: 1.0.6(typescript@4.9.5) + version: 1.10.14(typescript@4.9.5) wagmi: specifier: ^1.2.0 - version: 1.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(viem@1.0.6) + version: 1.4.2(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(viem@1.10.14) devDependencies: cross-env: specifier: ^7.0.3 version: 7.0.3 dotenv: specifier: ^16.0.3 - version: 16.0.3 + version: 16.3.1 examples/nodejs: dependencies: @@ -241,7 +241,7 @@ importers: version: 6.0.3 '@types/fs-extra': specifier: ^11.0.1 - version: 11.0.1 + version: 11.0.2 '@types/validate-npm-package-name': specifier: ^4.0.0 version: 4.0.0 @@ -250,10 +250,10 @@ importers: devDependencies: clean-webpack-plugin: specifier: ^4.0.0 - version: 4.0.0(webpack@5.88.1) + version: 4.0.0(webpack@5.88.2) copy-webpack-plugin: specifier: ^11.0.0 - version: 11.0.0(webpack@5.88.1) + version: 11.0.0(webpack@5.88.2) rimraf: specifier: ^3.0.2 version: 3.0.2 @@ -262,10 +262,10 @@ importers: version: 5.2.2 webpack: specifier: ^5.88.1 - version: 5.88.1(webpack-cli@5.1.4) + version: 5.88.2(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 - version: 5.1.4(webpack@5.88.1) + version: 5.1.4(webpack@5.88.2) packages/js-sdk: dependencies: @@ -298,19 +298,19 @@ importers: version: 5.7.0 '@metamask/eth-sig-util': specifier: ^5.0.2 - version: 5.0.2 + version: 5.1.0 cross-fetch: specifier: ^3.1.6 - version: 3.1.6 + version: 3.1.8 dayjs: specifier: ^1.11.7 - version: 1.11.7 + version: 1.11.9 dotenv: specifier: ^16.0.3 - version: 16.0.3 + version: 16.3.1 ethereum-cryptography: specifier: ^2.0.0 - version: 2.0.0 + version: 2.1.2 fast-xml-parser: specifier: ^4.2.7 version: 4.2.7 @@ -325,7 +325,7 @@ importers: version: 4.7.0 long: specifier: ^5.2.1 - version: 5.2.1 + version: 5.2.3 reflect-metadata: specifier: ^0.1.13 version: 0.1.13 @@ -335,10 +335,13 @@ importers: devDependencies: '@jest/globals': specifier: ^29.5.0 - version: 29.5.0 + version: 29.7.0 + '@rollup/plugin-typescript': + specifier: ^11.1.3 + version: 11.1.3(rollup@2.79.1)(tslib@2.6.2)(typescript@4.9.5) '@types/jest': specifier: ^29.5.1 - version: 29.5.1 + version: 29.5.5 '@types/lodash.clonedeep': specifier: ^4.5.7 version: 4.5.7 @@ -353,22 +356,22 @@ importers: version: 3.0.1 '@types/xml2js': specifier: ^0.4.11 - version: 0.4.11 + version: 0.4.12 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + version: 29.7.0(@types/node@18.17.17)(ts-node@10.9.1) mime: specifier: ^3.0.0 version: 3.0.0 ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.22.15)(jest@29.5.0)(typescript@4.9.5) + version: 29.1.1(@babel/core@7.22.20)(jest@29.7.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + version: 10.9.1(@types/node@18.17.17)(typescript@4.9.5) tslib: specifier: ^2.5.0 - version: 2.5.2 + version: 2.6.2 typescript: specifier: ^4.9.5 version: 4.9.5 @@ -377,10 +380,10 @@ importers: devDependencies: clean-webpack-plugin: specifier: ^4.0.0 - version: 4.0.0(webpack@5.88.1) + version: 4.0.0(webpack@5.88.2) copy-webpack-plugin: specifier: ^11.0.0 - version: 11.0.0(webpack@5.88.1) + version: 11.0.0(webpack@5.88.2) rimraf: specifier: ^3.0.2 version: 3.0.2 @@ -389,10 +392,10 @@ importers: version: 5.2.2 webpack: specifier: ^5.88.1 - version: 5.88.1(webpack-cli@5.1.4) + version: 5.88.2(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 - version: 5.1.4(webpack@5.88.1) + version: 5.1.4(webpack@5.88.2) packages: @@ -400,8 +403,8 @@ packages: resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} - /@adraffy/ens-normalize@1.9.0: - resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} + /@adraffy/ens-normalize@1.9.4: + resolution: {integrity: sha512-UK0bHA7hh9cR39V+4gl2/NnBBjoXIxkuWAPCaY4X7fbH4L/azIi7ilWOCjMUYfpJgraLUAqkRi2BqrjME8Rynw==} dev: false /@ampproject/remapping@2.2.1: @@ -415,27 +418,27 @@ packages: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.22.13 + '@babel/highlight': 7.22.20 chalk: 2.4.2 - /@babel/compat-data@7.22.9: - resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} + /@babel/compat-data@7.22.20: + resolution: {integrity: sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==} engines: {node: '>=6.9.0'} - /@babel/core@7.22.15: - resolution: {integrity: sha512-PtZqMmgRrvj8ruoEOIwVA3yoF91O+Hgw9o7DAUTNBA6Mo2jpu31clx9a7Nz/9JznqetTR6zwfC4L3LAjKQXUwA==} + /@babel/core@7.22.20: + resolution: {integrity: sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.22.13 '@babel/generator': 7.22.15 '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helper-module-transforms': 7.22.20(@babel/core@7.22.20) '@babel/helpers': 7.22.15 - '@babel/parser': 7.22.15 + '@babel/parser': 7.22.16 '@babel/template': 7.22.15 - '@babel/traverse': 7.22.15 - '@babel/types': 7.22.15 + '@babel/traverse': 7.22.20 + '@babel/types': 7.22.19 convert-source-map: 1.9.0 debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 @@ -444,16 +447,16 @@ packages: transitivePeerDependencies: - supports-color - /@babel/eslint-parser@7.21.8(@babel/core@7.22.15)(eslint@8.48.0): - resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} + /@babel/eslint-parser@7.22.15(@babel/core@7.22.20)(eslint@8.49.0): + resolution: {integrity: sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: - '@babel/core': '>=7.11.0' + '@babel/core': ^7.11.0 eslint: ^7.5.0 || ^8.0.0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.48.0 + eslint: 8.49.0 eslint-visitor-keys: 2.1.0 semver: 6.3.1 dev: true @@ -462,7 +465,7 @@ packages: resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.19 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 @@ -471,76 +474,73 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.19 dev: true - /@babel/helper-builder-binary-assignment-operator-visitor@7.22.3: - resolution: {integrity: sha512-ahEoxgqNoYXm0k22TvOke48i1PkavGu0qGCmcq9ugi6gnmvKNaMjKBSrZTnWUi1CFEeNAUiVba0Wtzm03aSkJg==} + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.19 dev: true /@babel/helper-compilation-targets@7.22.15: resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.22.9 + '@babel/compat-data': 7.22.20 '@babel/helper-validator-option': 7.22.15 browserslist: 4.21.10 lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.22.15): - resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.3 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.22.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-member-expression-to-functions': 7.22.15 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.22.20) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 - transitivePeerDependencies: - - supports-color dev: true - /@babel/helper-create-regexp-features-plugin@7.22.1(@babel/core@7.22.15): - resolution: {integrity: sha512-WWjdnfR3LPIe+0EY8td7WmjhytxXtjKAEpnAxun/hkNiyOaPlvGK+NZaBFIdi9ndYV3Gav7BpFvtUwnaJlwi1w==} + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 dev: true - /@babel/helper-define-polyfill-provider@0.4.0(@babel/core@7.22.15): - resolution: {integrity: sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==} + /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.22.20): + resolution: {integrity: sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==} peerDependencies: - '@babel/core': ^7.4.0-0 + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 - resolve: 1.22.2 - semver: 6.3.1 + resolve: 1.22.6 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-environment-visitor@7.22.5: - resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} /@babel/helper-function-name@7.22.5: @@ -548,45 +548,45 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.22.15 + '@babel/types': 7.22.19 /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.19 - /@babel/helper-member-expression-to-functions@7.22.3: - resolution: {integrity: sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA==} + /@babel/helper-member-expression-to-functions@7.22.15: + resolution: {integrity: sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.19 dev: true /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.19 - /@babel/helper-module-transforms@7.22.15(@babel/core@7.22.15): - resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} + /@babel/helper-module-transforms@7.22.20(@babel/core@7.22.20): + resolution: {integrity: sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-environment-visitor': 7.22.5 + '@babel/core': 7.22.20 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.15 + '@babel/helper-validator-identifier': 7.22.20 - /@babel/helper-optimise-call-expression@7.18.6: - resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.19 dev: true /@babel/helper-plugin-utils@7.22.5: @@ -594,76 +594,68 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.22.15): - resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.22.20): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.22.15 - transitivePeerDependencies: - - supports-color + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 dev: true - /@babel/helper-replace-supers@7.22.1: - resolution: {integrity: sha512-ut4qrkE4AuSfrwHSps51ekR1ZY/ygrP1tp0WFm8oVq6nzc/hvfV/22JylndIbsf2U2M9LOMwiSddr6y+78j+OQ==} + /@babel/helper-replace-supers@7.22.20(@babel/core@7.22.20): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.3 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/template': 7.22.15 - '@babel/traverse': 7.22.15 - '@babel/types': 7.22.15 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.22.20 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.22.15 + '@babel/helper-optimise-call-expression': 7.22.5 dev: true /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.19 - /@babel/helper-skip-transparent-expression-wrappers@7.20.0: - resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.19 dev: true /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.19 /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.22.15: - resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} /@babel/helper-validator-option@7.22.15: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - /@babel/helper-wrap-function@7.20.5: - resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} + /@babel/helper-wrap-function@7.22.20: + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-function-name': 7.22.5 '@babel/template': 7.22.15 - '@babel/traverse': 7.22.15 - '@babel/types': 7.22.15 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.22.19 dev: true /@babel/helpers@7.22.15: @@ -671,1187 +663,1154 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/traverse': 7.22.15 - '@babel/types': 7.22.15 + '@babel/traverse': 7.22.20 + '@babel/types': 7.22.19 transitivePeerDependencies: - supports-color - /@babel/highlight@7.22.13: - resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} + /@babel/highlight@7.22.20: + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.22.15 + '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.22.15: - resolution: {integrity: sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==} + /@babel/parser@7.22.16: + resolution: {integrity: sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.19 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.22.15): - resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-6r4yRwEnorYByILoDRnEqxtojYKuiIv9FojW2E8GUKo9eWBwbKcd9IiZOZpdyXc64RmyGGyPu3/uAcrz/dq2kQ==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.22.15) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.22.15(@babel/core@7.22.20) dev: true - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.15): + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.20): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color dev: true - /@babel/plugin-proposal-decorators@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-XjTKH3sHr6pPqG+hR1NCdVupwiosfdKM2oSMyKQVQ5Bym9l/p7BuLAqT5U32zZzRCfPq/TPRPzMiiTE9bOXU4w==} + /@babel/plugin-proposal-decorators@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-kc0VvbbUyKelvzcKOSyQUSVVXS5pT3UhRB0e3c9An86MvLqs+gx0dN4asllrDluqSa3m9YyooXKGOFVomnyFkg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.1 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.22.20) '@babel/helper-split-export-declaration': 7.22.6 - '@babel/plugin-syntax-decorators': 7.22.3(@babel/core@7.22.15) - transitivePeerDependencies: - - supports-color + '@babel/plugin-syntax-decorators': 7.22.10(@babel/core@7.22.20) dev: true - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.15): + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.20): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.20) dev: true - /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.22.15): + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.22.20): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.20) dev: true - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.15): + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.20): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.20) dev: true - /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.22.15): + /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.22.20): resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.22.15): - resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.20): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.15) - transitivePeerDependencies: - - supports-color + '@babel/core': 7.22.20 dev: true - /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.15): - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead. + /@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.22.20): + resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.20) dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.15): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.20): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.15): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.15): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.20): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.15): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.20): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-decorators@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-R16Zuge73+8/nLcDjkIpyhi5wIbN7i7fiuLJR8yQX7vPAa/ltUKtd3iLbb4AgP5nrLi91HnNUNosELIGUGH1bg==} + /@babel/plugin-syntax-decorators@7.22.10(@babel/core@7.22.20): + resolution: {integrity: sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.15): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.15): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.15): + /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.22.15): - resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} + /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-i35jZJv6aO7hxEbIWQ41adVfOzjm9dcYDNeWlBMd8p0ZQRtNUCBrmGwZt+H5lb+oOC9a3svp956KP0oWGA1YsA==} + /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.15): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.20): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.15): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.15): + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.15): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.20): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.15): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.15): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.20): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.15): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.15): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.15): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.15): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.20): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.15): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.20): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.22.15): - resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.15): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.20): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions@7.21.5(@babel/core@7.22.15): - resolution: {integrity: sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==} + /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-async-generator-functions@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-36A4Aq48t66btydbZd5Fk0/xJqbpg/v4QWI4AH4cYHBXy9Mu42UOupZpebKFiCFNT9S9rJFcsld0gsv0ayLjtA==} + /@babel/plugin-transform-async-generator-functions@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-environment-visitor': 7.22.5 + '@babel/core': 7.22.20 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.22.15) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) - transitivePeerDependencies: - - supports-color + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.22.20) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.22.15): - resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} + /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.22.15) - transitivePeerDependencies: - - supports-color + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.22.15): - resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.22.15): - resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} + /@babel/plugin-transform-block-scoping@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-properties@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-mASLsd6rhOrLZ5F3WbCxkzl67mmOnqik0zrg5W6D/X0QMW7HtvnoL1dRARLKIbMP3vXwkwziuLesPqWVGIl6Bw==} + /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color dev: true - /@babel/plugin-transform-class-static-block@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-5BirgNWNOx7cwbTJCOmKFJ1pZjwk5MUfMIwiBBvsirCJMZeQgs5pk6i1OlkVg+1Vef5LfBahFOrdCnAWvkVKMw==} + /@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.22.20): + resolution: {integrity: sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.15) - transitivePeerDependencies: - - supports-color + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-classes@7.21.0(@babel/core@7.22.15): - resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} + /@babel/plugin-transform-classes@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.22.5 - '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.1 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.22.20) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 - transitivePeerDependencies: - - supports-color dev: true - /@babel/plugin-transform-computed-properties@7.21.5(@babel/core@7.22.15): - resolution: {integrity: sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q==} + /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 dev: true - /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.22.15): - resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} + /@babel/plugin-transform-destructuring@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.22.15): - resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} + /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.22.15): - resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} + /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dynamic-import@7.22.1(@babel/core@7.22.15): - resolution: {integrity: sha512-rlhWtONnVBPdmt+jeewS0qSnMz/3yLFrqAP8hHC6EDcrYRSyuz9f9yQhHvVn2Ad6+yO9fHXac5piudeYrInxwQ==} + /@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.22.20): + resolution: {integrity: sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.22.15): - resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} + /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.3 + '@babel/core': 7.22.20 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-export-namespace-from@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-5Ti1cHLTDnt3vX61P9KZ5IG09bFXp4cDVFJIAeCZuxu9OXXJJZp5iP0n/rzM2+iAutJY+KWEyyHcRaHlpQ/P5g==} + /@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.22.20): + resolution: {integrity: sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.22.15): - resolution: {integrity: sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==} + /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-for-of@7.21.5(@babel/core@7.22.15): - resolution: {integrity: sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ==} + /@babel/plugin-transform-for-of@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.22.15): - resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} + /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-function-name': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-json-strings@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-IuvOMdeOOY2X4hRNAT6kwbePtK21BUyrAEgLKviL8pL6AEEVUVcqtRdN/HJXBLGIbt9T3ETmXRnFedRRmQNTYw==} + /@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.22.20): + resolution: {integrity: sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-literals@7.18.9(@babel/core@7.22.15): - resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-logical-assignment-operators@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-CbayIfOw4av2v/HYZEsH+Klks3NC2/MFIR3QR8gnpGNNPEaq2fdlVCRYG/paKs7/5hvBLQ+H70pGWOHtlNEWNA==} + /@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.22.20): + resolution: {integrity: sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.22.15): - resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.22.15): - resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} + /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/helper-module-transforms': 7.22.20(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.21.5(@babel/core@7.22.15): - resolution: {integrity: sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==} + /@babel/plugin-transform-modules-commonjs@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/helper-module-transforms': 7.22.20(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-modules-systemjs@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-V21W3bKLxO3ZjcBJZ8biSvo5gQ85uIXW2vJfh7JSWf/4SLUSr1tOoHX3ruN4+Oqa2m+BKfsxTR1I+PsvkIWvNw==} + /@babel/plugin-transform-modules-systemjs@7.22.11(@babel/core@7.22.20): + resolution: {integrity: sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helper-module-transforms': 7.22.20(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.15 + '@babel/helper-validator-identifier': 7.22.20 dev: true - /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.22.15): - resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} + /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/helper-module-transforms': 7.22.20(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-c6HrD/LpUdNNJsISQZpds3TXvfYIAbo+efE9aWmY/PmSRD0agrJ9cPMt4BmArwUQ7ZymEWTFjTyp+yReLJZh0Q==} + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-new-target@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-5RuJdSo89wKdkRTqtM9RVVJzHum9c2s0te9rB7vZC1zKKxcioWIy+xcu4OoIAjyFZhb/bp5KkunuLin1q7Ct+w==} + /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-CpaoNp16nX7ROtLONNuCyenYdY/l7ZsR6aoVa7rW7nMWisoNoQNIH5Iay/4LDyRjKMuElMqXiBoOQCDLTMGZiw==} + /@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.22.20): + resolution: {integrity: sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-numeric-separator@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-+AF88fPDJrnseMh5vD9+SH6wq4ZMvpiTMHh58uLs+giMEyASFVhcT3NkoyO+NebFCNnpHJEq5AXO2txV4AGPDQ==} + /@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.22.20): + resolution: {integrity: sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-object-rest-spread@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-38bzTsqMMCI46/TQnJwPPpy33EjLCc1Gsm2hRTF6zTMWnKsN61vdrpuzIEGQyKEhDSYDKyZHrrd5FMj4gcUHhw==} + /@babel/plugin-transform-object-rest-spread@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.15 + '@babel/compat-data': 7.22.20 + '@babel/core': 7.22.20 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.22.15): - resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.1 - transitivePeerDependencies: - - supports-color + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-optional-catch-binding@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-bnDFWXFzWY0BsOyqaoSXvMQ2F35zutQipugog/rqotL2S4ciFOKlRYUu9djt4iq09oh2/34hqfRR2k1dIvuu4g==} + /@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.22.20): + resolution: {integrity: sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-optional-chaining@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-63v3/UFFxhPKT8j8u1jTTGVyITxl7/7AfOqK8C5gz1rHURPUGe3y5mvIf68eYKGoBNahtJnTxBKug4BQOnzeJg==} + /@babel/plugin-transform-optional-chaining@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-parameters@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-x7QHQJHPuD9VmfpzboyGJ5aHEr9r7DsAsdxdhJiTB3J3j8dyl+NFZ+rX5Q2RWFDCs61c06qBfS4ys2QYn8UkMw==} + /@babel/plugin-transform-parameters@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-methods@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-fC7jtjBPFqhqpPAE+O4LKwnLq7gGkD3ZmC2E3i4qWH34mH3gOg2Xrq5YMHUq6DM30xhqM1DNftiRaSqVjEG+ug==} + /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color dev: true - /@babel/plugin-transform-private-property-in-object@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-C7MMl4qWLpgVCbXfj3UW8rR1xeCnisQ0cU7YJHV//8oNBS0aCIVg1vFnZXxOckHhEpQyqNNkWmvSEWnMLlc+Vw==} + /@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.22.20): + resolution: {integrity: sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.15) - transitivePeerDependencies: - - supports-color + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.22.15): - resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.22.15): - resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} + /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-development@7.18.6(@babel/core@7.22.15): - resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 - '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.22.15): + /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) - '@babel/types': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.20) + '@babel/types': 7.22.19 dev: true - /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.22.15): - resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} + /@babel/plugin-transform-react-pure-annotations@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-regenerator@7.21.5(@babel/core@7.22.15): - resolution: {integrity: sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w==} + /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.22.20): + resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - regenerator-transform: 0.15.1 + regenerator-transform: 0.15.2 dev: true - /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.22.15): - resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} + /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-runtime@7.22.4(@babel/core@7.22.15): - resolution: {integrity: sha512-Urkiz1m4zqiRo17klj+l3nXgiRTFQng91Bc1eiLF7BMQu1e7wE5Gcq9xSv062IF068NHjcutSbIMev60gXxAvA==} + /@babel/plugin-transform-runtime@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.15) - babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.15) - babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.15) + babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.20) + babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.20) + babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.20) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.22.15): - resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-spread@7.20.7(@babel/core@7.22.15): - resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} + /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.22.15): - resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} + /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.22.15): - resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.22.15): - resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} + /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typescript@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-pyjnCIniO5PNaEuGxT28h0HbMru3qCVrMqVgVOz/krComdIrY9W6FCLBq9NWHY8HDGaUlan+UhmZElDENIfCcw==} + /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.15) - transitivePeerDependencies: - - supports-color + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.20) dev: true - /@babel/plugin-transform-unicode-escapes@7.21.5(@babel/core@7.22.15): - resolution: {integrity: sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg==} + /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.22.20): + resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-property-regex@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-5ScJ+OmdX+O6HRuMGW4kv7RL9vIKdtdAj9wuWUKy1wbHY3jaM/UlyIiC1G7J6UJiiyMukjjK0QwL3P0vBd0yYg==} + /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.22.15): - resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} + /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-sets-regex@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-hNufLdkF8vqywRp+P55j4FHXqAX2LRUccoZHH7AFn1pq5ZOO2ISKW9w13bFZVjBoTqeve2HOgoJCcaziJVhGNw==} + /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.20): + resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/preset-env@7.22.4(@babel/core@7.22.15): - resolution: {integrity: sha512-c3lHOjbwBv0TkhYCr+XCR6wKcSZ1QbQTVdSkZUaVpLv8CVWotBMArWUi5UAJrcrQaEnleVkkvaV8F/pmc/STZQ==} + /@babel/preset-env@7.22.20(@babel/core@7.22.20): + resolution: {integrity: sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.15 + '@babel/compat-data': 7.22.20 + '@babel/core': 7.22.20 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.22.15) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.15) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.15) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.22.15) - '@babel/plugin-syntax-import-attributes': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.15) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.15) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.15) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.15) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-transform-arrow-functions': 7.21.5(@babel/core@7.22.15) - '@babel/plugin-transform-async-generator-functions': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.22.15) - '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.22.15) - '@babel/plugin-transform-class-properties': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-class-static-block': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.22.15) - '@babel/plugin-transform-computed-properties': 7.21.5(@babel/core@7.22.15) - '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.22.15) - '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.22.15) - '@babel/plugin-transform-dynamic-import': 7.22.1(@babel/core@7.22.15) - '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-transform-export-namespace-from': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-for-of': 7.21.5(@babel/core@7.22.15) - '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.22.15) - '@babel/plugin-transform-json-strings': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.22.15) - '@babel/plugin-transform-logical-assignment-operators': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-transform-modules-amd': 7.20.11(@babel/core@7.22.15) - '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.22.15) - '@babel/plugin-transform-modules-systemjs': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-new-target': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-nullish-coalescing-operator': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-numeric-separator': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-object-rest-spread': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-transform-optional-catch-binding': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-private-methods': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-private-property-in-object': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-transform-regenerator': 7.21.5(@babel/core@7.22.15) - '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.22.15) - '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.22.15) - '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.22.15) - '@babel/plugin-transform-unicode-escapes': 7.21.5(@babel/core@7.22.15) - '@babel/plugin-transform-unicode-property-regex': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-transform-unicode-sets-regex': 7.22.3(@babel/core@7.22.15) - '@babel/preset-modules': 0.1.5(@babel/core@7.22.15) - '@babel/types': 7.22.15 - babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.15) - babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.15) - babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.15) - core-js-compat: 3.30.2 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.20) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.20) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.20) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.20) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.20) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.20) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.20) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.20) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.20) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.20) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-async-generator-functions': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-block-scoping': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-class-static-block': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-destructuring': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-dynamic-import': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-export-namespace-from': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-json-strings': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-logical-assignment-operators': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-modules-systemjs': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-numeric-separator': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-object-rest-spread': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-optional-catch-binding': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-optional-chaining': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-private-property-in-object': 7.22.11(@babel/core@7.22.20) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.22.20) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.22.20) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.20) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.22.20) + '@babel/types': 7.22.19 + babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.20) + babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.20) + babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.20) + core-js-compat: 3.32.2 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules@0.1.5(@babel/core@7.22.15): - resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.22.20): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.15) - '@babel/types': 7.22.15 + '@babel/types': 7.22.19 esutils: 2.0.3 dev: true - /@babel/preset-react@7.22.3(@babel/core@7.22.15): - resolution: {integrity: sha512-lxDz1mnZ9polqClBCVBjIVUypoB4qV3/tZUDb/IlYbW1kiiLaXaX+bInbRjl+lNQ/iUZraQ3+S8daEmoELMWug==} + /@babel/preset-react@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) - '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-transform-react-pure-annotations': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-react-pure-annotations': 7.22.5(@babel/core@7.22.20) dev: true - /@babel/preset-typescript@7.21.5(@babel/core@7.22.15): - resolution: {integrity: sha512-iqe3sETat5EOrORXiQ6rWfoOg2y68Cs75B9wNxdPW4kixJxh7aXQE1KPdWLDniC24T/6dSnguF33W9j/ZZQcmA==} + /@babel/preset-typescript@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) - '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.22.15) - '@babel/plugin-transform-typescript': 7.22.3(@babel/core@7.22.15) - transitivePeerDependencies: - - supports-color + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.22.20) dev: true /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true - /@babel/runtime@7.22.3: - resolution: {integrity: sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==} + /@babel/runtime@7.22.15: + resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.13.11 + regenerator-runtime: 0.14.0 /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.13 - '@babel/parser': 7.22.15 - '@babel/types': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.19 - /@babel/traverse@7.22.15: - resolution: {integrity: sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==} + /@babel/traverse@7.22.20: + resolution: {integrity: sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.13 '@babel/generator': 7.22.15 - '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.22.5 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.15 - '@babel/types': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.19 debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types@7.22.15: - resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} + /@babel/types@7.22.19: + resolution: {integrity: sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.15 + '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 /@bcoe/v8-coverage@0.2.3: @@ -1865,29 +1824,11 @@ packages: protobufjs: 6.11.4 dev: false - /@chainsafe/as-sha256@0.3.1: - resolution: {integrity: sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==} - dev: false - - /@chainsafe/persistent-merkle-tree@0.4.2: - resolution: {integrity: sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==} - dependencies: - '@chainsafe/as-sha256': 0.3.1 - dev: false - - /@chainsafe/ssz@0.9.4: - resolution: {integrity: sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==} + /@changesets/apply-release-plan@6.1.4: + resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} dependencies: - '@chainsafe/as-sha256': 0.3.1 - '@chainsafe/persistent-merkle-tree': 0.4.2 - case: 1.6.3 - dev: false - - /@changesets/apply-release-plan@6.1.3: - resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} - dependencies: - '@babel/runtime': 7.22.3 - '@changesets/config': 2.3.0 + '@babel/runtime': 7.22.15 + '@changesets/config': 2.3.1 '@changesets/get-version-range-type': 0.3.2 '@changesets/git': 2.0.0 '@changesets/types': 5.2.1 @@ -1898,18 +1839,18 @@ packages: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 5.7.1 + semver: 7.5.4 dev: true - /@changesets/assemble-release-plan@5.2.3: - resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} + /@changesets/assemble-release-plan@5.2.4: + resolution: {integrity: sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.15 '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.5 + '@changesets/get-dependents-graph': 1.3.6 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 - semver: 5.7.1 + semver: 7.5.4 dev: true /@changesets/changelog-git@0.1.14: @@ -1928,18 +1869,18 @@ packages: - encoding dev: true - /@changesets/cli@2.26.1: - resolution: {integrity: sha512-XnTa+b51vt057fyAudvDKGB0Sh72xutQZNAdXkCqPBKO2zvs2yYZx5hFZj1u9cbtpwM6Sxtcr02/FQJfZOzemQ==} + /@changesets/cli@2.26.2: + resolution: {integrity: sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==} hasBin: true dependencies: - '@babel/runtime': 7.22.3 - '@changesets/apply-release-plan': 6.1.3 - '@changesets/assemble-release-plan': 5.2.3 + '@babel/runtime': 7.22.15 + '@changesets/apply-release-plan': 6.1.4 + '@changesets/assemble-release-plan': 5.2.4 '@changesets/changelog-git': 0.1.14 - '@changesets/config': 2.3.0 + '@changesets/config': 2.3.1 '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.5 - '@changesets/get-release-plan': 3.0.16 + '@changesets/get-dependents-graph': 1.3.6 + '@changesets/get-release-plan': 3.0.17 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/pre': 1.0.14 @@ -1948,10 +1889,10 @@ packages: '@changesets/write': 0.2.3 '@manypkg/get-packages': 1.1.3 '@types/is-ci': 3.0.0 - '@types/semver': 6.2.3 + '@types/semver': 7.5.2 ansi-colors: 4.1.3 chalk: 2.4.2 - enquirer: 2.3.6 + enquirer: 2.4.1 external-editor: 3.1.0 fs-extra: 7.0.1 human-id: 1.0.2 @@ -1959,19 +1900,19 @@ packages: meow: 6.1.1 outdent: 0.5.0 p-limit: 2.3.0 - preferred-pm: 3.0.3 + preferred-pm: 3.1.2 resolve-from: 5.0.0 - semver: 5.7.1 + semver: 7.5.4 spawndamnit: 2.0.0 term-size: 2.2.1 tty-table: 4.2.1 dev: true - /@changesets/config@2.3.0: - resolution: {integrity: sha512-EgP/px6mhCx8QeaMAvWtRrgyxW08k/Bx2tpGT+M84jEdX37v3VKfh4Cz1BkwrYKuMV2HZKeHOh8sHvja/HcXfQ==} + /@changesets/config@2.3.1: + resolution: {integrity: sha512-PQXaJl82CfIXddUOppj4zWu+987GCw2M+eQcOepxN5s+kvnsZOwjEJO3DH9eVy+OP6Pg/KFEWdsECFEYTtbg6w==} dependencies: '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.5 + '@changesets/get-dependents-graph': 1.3.6 '@changesets/logger': 0.0.5 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -1985,31 +1926,31 @@ packages: extendable-error: 0.1.7 dev: true - /@changesets/get-dependents-graph@1.3.5: - resolution: {integrity: sha512-w1eEvnWlbVDIY8mWXqWuYE9oKhvIaBhzqzo4ITSJY9hgoqQ3RoBqwlcAzg11qHxv/b8ReDWnMrpjpKrW6m1ZTA==} + /@changesets/get-dependents-graph@1.3.6: + resolution: {integrity: sha512-Q/sLgBANmkvUm09GgRsAvEtY3p1/5OCzgBE5vX3vgb5CvW0j7CEljocx5oPXeQSNph6FXulJlXV3Re/v3K3P3Q==} dependencies: '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 - semver: 5.7.1 + semver: 7.5.4 dev: true /@changesets/get-github-info@0.5.2: resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==} dependencies: dataloader: 1.4.0 - node-fetch: 2.6.11 + node-fetch: 2.7.0 transitivePeerDependencies: - encoding dev: true - /@changesets/get-release-plan@3.0.16: - resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} + /@changesets/get-release-plan@3.0.17: + resolution: {integrity: sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==} dependencies: - '@babel/runtime': 7.22.3 - '@changesets/assemble-release-plan': 5.2.3 - '@changesets/config': 2.3.0 + '@babel/runtime': 7.22.15 + '@changesets/assemble-release-plan': 5.2.4 + '@changesets/config': 2.3.1 '@changesets/pre': 1.0.14 '@changesets/read': 0.5.9 '@changesets/types': 5.2.1 @@ -2023,7 +1964,7 @@ packages: /@changesets/git@2.0.0: resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.15 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -2048,7 +1989,7 @@ packages: /@changesets/pre@1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.15 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -2058,7 +1999,7 @@ packages: /@changesets/read@0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.15 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/parse': 0.3.16 @@ -2079,19 +2020,19 @@ packages: /@changesets/write@0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.15 '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 prettier: 2.8.8 dev: true - /@coinbase/wallet-sdk@3.6.6: - resolution: {integrity: sha512-vX+epj/Ttjo7XRwlr3TFUUfW5GTRMvORpERPwiu7z2jl3DSVL4rXLmHt5y6LDPlUVreas2gumdcFbu0fLRG9Jg==} + /@coinbase/wallet-sdk@3.7.2: + resolution: {integrity: sha512-lIGvXMsgpsQWci/XOMQIJ2nIZ8JUy/L+bvC0wkRaYarr0YylwpXrJ2gRM3hCXPS477pkyO7N/kSiAoRgEXUdJQ==} engines: {node: '>= 10.0.0'} dependencies: '@metamask/safe-event-emitter': 2.0.0 - '@solana/web3.js': 1.76.0 + '@solana/web3.js': 1.78.5 bind-decorator: 1.0.11 bn.js: 5.2.1 buffer: 6.0.3 @@ -2101,7 +2042,7 @@ packages: eth-rpc-errors: 4.0.2 json-rpc-engine: 6.1.0 keccak: 3.0.3 - preact: 10.14.1 + preact: 10.17.1 qs: 6.11.2 rxjs: 6.6.7 sha.js: 2.4.11 @@ -2114,14 +2055,14 @@ packages: - utf-8-validate dev: false - /@commitlint/cli@17.6.5: - resolution: {integrity: sha512-3PQrWr/uo6lzF5k7n5QuosCYnzaxP9qGBp3jhWP0Vmsa7XA6wrl9ccPqfQyXpSbQE3zBROVO3TDqgPKe4tfmLQ==} + /@commitlint/cli@17.7.1: + resolution: {integrity: sha512-BCm/AT06SNCQtvFv921iNhudOHuY16LswT0R3OeolVGLk8oP+Rk9TfQfgjH7QPMjhvp76bNqGFEcpKojxUNW1g==} engines: {node: '>=v14'} hasBin: true dependencies: '@commitlint/format': 17.4.4 - '@commitlint/lint': 17.6.6 - '@commitlint/load': 17.5.0 + '@commitlint/lint': 17.7.0 + '@commitlint/load': 17.7.1 '@commitlint/read': 17.5.1 '@commitlint/types': 17.4.4 execa: 5.1.1 @@ -2134,23 +2075,23 @@ packages: - '@swc/wasm' dev: true - /@commitlint/config-conventional@17.6.5: - resolution: {integrity: sha512-Xl9H9KLl86NZm5CYNTNF9dcz1xelE/EbvhWIWcYxG/rn3UWYWdWmmnX2q6ZduNdLFSGbOxzUpIx61j5zxbeXxg==} + /@commitlint/config-conventional@17.7.0: + resolution: {integrity: sha512-iicqh2o6et+9kWaqsQiEYZzfLbtoWv9uZl8kbI8EGfnc0HeGafQBF7AJ0ylN9D/2kj6txltsdyQs8+2fTMwWEw==} engines: {node: '>=v14'} dependencies: - conventional-changelog-conventionalcommits: 5.0.0 + conventional-changelog-conventionalcommits: 6.1.0 dev: true - /@commitlint/config-validator@17.4.4: - resolution: {integrity: sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg==} + /@commitlint/config-validator@17.6.7: + resolution: {integrity: sha512-vJSncmnzwMvpr3lIcm0I8YVVDJTzyjy7NZAeXbTXy+MPUdAr9pKyyg7Tx/ebOQ9kqzE6O9WT6jg2164br5UdsQ==} engines: {node: '>=v14'} dependencies: '@commitlint/types': 17.4.4 ajv: 8.12.0 dev: true - /@commitlint/ensure@17.4.4: - resolution: {integrity: sha512-AHsFCNh8hbhJiuZ2qHv/m59W/GRE9UeOXbkOqxYMNNg9pJ7qELnFcwj5oYpa6vzTSHtPGKf3C2yUFNy1GGHq6g==} + /@commitlint/ensure@17.6.7: + resolution: {integrity: sha512-mfDJOd1/O/eIb/h4qwXzUxkmskXDL9vNPnZ4AKYKiZALz4vHzwMxBSYtyL2mUIDeU9DRSpEUins8SeKtFkYHSw==} engines: {node: '>=v14'} dependencies: '@commitlint/types': 17.4.4 @@ -2174,41 +2115,41 @@ packages: chalk: 4.1.2 dev: true - /@commitlint/is-ignored@17.6.6: - resolution: {integrity: sha512-4Fw875faAKO+2nILC04yW/2Vy/wlV3BOYCSQ4CEFzriPEprc1Td2LILmqmft6PDEK5Sr14dT9tEzeaZj0V56Gg==} + /@commitlint/is-ignored@17.7.0: + resolution: {integrity: sha512-043rA7m45tyEfW7Zv2vZHF++176MLHH9h70fnPoYlB1slKBeKl8BwNIlnPg4xBdRBVNPaCqvXxWswx2GR4c9Hw==} engines: {node: '>=v14'} dependencies: '@commitlint/types': 17.4.4 - semver: 7.5.2 + semver: 7.5.4 dev: true - /@commitlint/lint@17.6.6: - resolution: {integrity: sha512-5bN+dnHcRLkTvwCHYMS7Xpbr+9uNi0Kq5NR3v4+oPNx6pYXt8ACuw9luhM/yMgHYwW0ajIR20wkPAFkZLEMGmg==} + /@commitlint/lint@17.7.0: + resolution: {integrity: sha512-TCQihm7/uszA5z1Ux1vw+Nf3yHTgicus/+9HiUQk+kRSQawByxZNESeQoX9ujfVd3r4Sa+3fn0JQAguG4xvvbA==} engines: {node: '>=v14'} dependencies: - '@commitlint/is-ignored': 17.6.6 - '@commitlint/parse': 17.6.5 - '@commitlint/rules': 17.6.5 + '@commitlint/is-ignored': 17.7.0 + '@commitlint/parse': 17.7.0 + '@commitlint/rules': 17.7.0 '@commitlint/types': 17.4.4 dev: true - /@commitlint/load@17.5.0: - resolution: {integrity: sha512-l+4W8Sx4CD5rYFsrhHH8HP01/8jEP7kKf33Xlx2Uk2out/UKoKPYMOIRcDH5ppT8UXLMV+x6Wm5osdRKKgaD1Q==} + /@commitlint/load@17.7.1: + resolution: {integrity: sha512-S/QSOjE1ztdogYj61p6n3UbkUvweR17FQ0zDbNtoTLc+Hz7vvfS7ehoTMQ27hPSjVBpp7SzEcOQu081RLjKHJQ==} engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 17.4.4 + '@commitlint/config-validator': 17.6.7 '@commitlint/execute-rule': 17.4.0 - '@commitlint/resolve-extends': 17.4.4 + '@commitlint/resolve-extends': 17.6.7 '@commitlint/types': 17.4.4 - '@types/node': 18.16.18 + '@types/node': 20.4.7 chalk: 4.1.2 - cosmiconfig: 8.1.3 - cosmiconfig-typescript-loader: 4.3.0(@types/node@18.16.18)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@4.9.5) + cosmiconfig: 8.3.6(typescript@4.9.5) + cosmiconfig-typescript-loader: 4.4.0(@types/node@20.4.7)(cosmiconfig@8.3.6)(ts-node@10.9.1)(typescript@4.9.5) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.17.17)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -2220,13 +2161,13 @@ packages: engines: {node: '>=v14'} dev: true - /@commitlint/parse@17.6.5: - resolution: {integrity: sha512-0zle3bcn1Hevw5Jqpz/FzEWNo2KIzUbc1XyGg6WrWEoa6GH3A1pbqNF6MvE6rjuy6OY23c8stWnb4ETRZyN+Yw==} + /@commitlint/parse@17.7.0: + resolution: {integrity: sha512-dIvFNUMCUHqq5Abv80mIEjLVfw8QNuA4DS7OWip4pcK/3h5wggmjVnlwGCDvDChkw2TjK1K6O+tAEV78oxjxag==} engines: {node: '>=v14'} dependencies: '@commitlint/types': 17.4.4 - conventional-changelog-angular: 5.0.13 - conventional-commits-parser: 3.2.4 + conventional-changelog-angular: 6.0.0 + conventional-commits-parser: 4.0.0 dev: true /@commitlint/read@17.5.1: @@ -2240,11 +2181,11 @@ packages: minimist: 1.2.8 dev: true - /@commitlint/resolve-extends@17.4.4: - resolution: {integrity: sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A==} + /@commitlint/resolve-extends@17.6.7: + resolution: {integrity: sha512-PfeoAwLHtbOaC9bGn/FADN156CqkFz6ZKiVDMjuC2N5N0740Ke56rKU7Wxdwya8R8xzLK9vZzHgNbuGhaOVKIg==} engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 17.4.4 + '@commitlint/config-validator': 17.6.7 '@commitlint/types': 17.4.4 import-fresh: 3.3.0 lodash.mergewith: 4.6.2 @@ -2252,11 +2193,11 @@ packages: resolve-global: 1.0.0 dev: true - /@commitlint/rules@17.6.5: - resolution: {integrity: sha512-uTB3zSmnPyW2qQQH+Dbq2rekjlWRtyrjDo4aLFe63uteandgkI+cc0NhhbBAzcXShzVk0qqp8SlkQMu0mgHg/A==} + /@commitlint/rules@17.7.0: + resolution: {integrity: sha512-J3qTh0+ilUE5folSaoK91ByOb8XeQjiGcdIdiB/8UT1/Rd1itKo0ju/eQVGyFzgTMYt8HrDJnGTmNWwcMR1rmA==} engines: {node: '>=v14'} dependencies: - '@commitlint/ensure': 17.4.4 + '@commitlint/ensure': 17.6.7 '@commitlint/message': 17.4.2 '@commitlint/to-lines': 17.4.0 '@commitlint/types': 17.4.4 @@ -2285,7 +2226,7 @@ packages: /@confio/ics23@0.6.8: resolution: {integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==} dependencies: - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.2 protobufjs: 6.11.4 dev: false @@ -2322,10 +2263,10 @@ packages: '@cosmjs/encoding': 0.28.13 '@cosmjs/math': 0.28.13 '@cosmjs/utils': 0.28.13 - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.2 bn.js: 5.2.1 elliptic: 6.5.4 - libsodium-wrappers: 0.7.11 + libsodium-wrappers: 0.7.13 dev: false /@cosmjs/crypto@0.29.5: @@ -2334,10 +2275,10 @@ packages: '@cosmjs/encoding': 0.29.5 '@cosmjs/math': 0.29.5 '@cosmjs/utils': 0.29.5 - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.2 bn.js: 5.2.1 elliptic: 6.5.4 - libsodium-wrappers: 0.7.11 + libsodium-wrappers: 0.7.13 dev: false /@cosmjs/crypto@0.30.1: @@ -2346,10 +2287,10 @@ packages: '@cosmjs/encoding': 0.30.1 '@cosmjs/math': 0.30.1 '@cosmjs/utils': 0.30.1 - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.2 bn.js: 5.2.1 elliptic: 6.5.4 - libsodium-wrappers: 0.7.11 + libsodium-wrappers: 0.7.13 dev: false /@cosmjs/encoding@0.28.13: @@ -2588,17 +2529,17 @@ packages: resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} dev: false - /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.49.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.48.0 + eslint: 8.49.0 eslint-visitor-keys: 3.4.3 - /@eslint-community/regexpp@4.8.0: - resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} + /@eslint-community/regexpp@4.8.1: + resolution: {integrity: sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} /@eslint/eslintrc@2.1.2: @@ -2608,7 +2549,7 @@ packages: ajv: 6.12.6 debug: 4.3.4(supports-color@8.1.1) espree: 9.6.1 - globals: 13.20.0 + globals: 13.21.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -2617,8 +2558,8 @@ packages: transitivePeerDependencies: - supports-color - /@eslint/js@8.48.0: - resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} + /@eslint/js@8.49.0: + resolution: {integrity: sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} /@ethereumjs/rlp@4.0.1: @@ -2627,27 +2568,13 @@ packages: hasBin: true dev: false - /@ethereumjs/util@8.0.5: - resolution: {integrity: sha512-259rXKK3b3D8HRVdRmlOEi6QFvwxdt304hhrEAmpZhsj7ufXEOTIc9JRZPMnXatKjECokdLNBcDOFBeBSzAIaw==} + /@ethereumjs/util@8.1.0: + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} engines: {node: '>=14'} dependencies: - '@chainsafe/ssz': 0.9.4 '@ethereumjs/rlp': 4.0.1 - ethereum-cryptography: 1.2.0 - dev: false - - /@ethersproject/abi@5.7.0: - resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} - dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 + ethereum-cryptography: 2.1.2 + micro-ftch: 0.3.1 dev: false /@ethersproject/abstract-provider@5.7.0: @@ -2715,21 +2642,6 @@ packages: '@ethersproject/bignumber': 5.7.0 dev: false - /@ethersproject/contracts@5.7.0: - resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 - dev: false - /@ethersproject/hash@5.7.0: resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} dependencies: @@ -2809,34 +2721,6 @@ packages: '@ethersproject/logger': 5.7.0 dev: false - /@ethersproject/providers@5.7.2: - resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 - bech32: 1.1.4 - ws: 7.4.6 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - /@ethersproject/random@5.7.0: resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} dependencies: @@ -2870,17 +2754,6 @@ packages: hash.js: 1.1.7 dev: false - /@ethersproject/solidity@5.7.0: - resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/strings': 5.7.0 - dev: false - /@ethersproject/strings@5.7.0: resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} dependencies: @@ -2956,7 +2829,7 @@ packages: requiresBuild: true dependencies: bech32: 2.0.0 - crypto-addr-codec: 0.1.7 + crypto-addr-codec: 0.1.8 link-module-alias: 1.2.0 shx: 0.3.4 dev: false @@ -2970,7 +2843,7 @@ packages: '@metamask/eth-sig-util': 4.0.1 cosmjs-types: 0.5.2 link-module-alias: 1.2.0 - long: 5.2.1 + long: 5.2.3 shx: 0.3.4 dev: false @@ -3002,8 +2875,8 @@ packages: shx: 0.3.4 dev: false - /@humanwhocodes/config-array@0.11.10: - resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + /@humanwhocodes/config-array@0.11.11: + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -3045,11 +2918,11 @@ packages: dependencies: '@inquirer/type': 1.1.4 '@types/mute-stream': 0.0.1 - '@types/node': 20.6.0 + '@types/node': 20.6.2 '@types/wrap-ansi': 3.0.0 ansi-escapes: 4.3.2 chalk: 4.1.2 - cli-spinners: 2.9.0 + cli-spinners: 2.9.1 cli-width: 4.1.0 figures: 3.2.0 mute-stream: 1.0.0 @@ -3154,20 +3027,20 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console@29.5.0: - resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.5.0 - '@types/node': 18.16.18 + '@jest/types': 29.6.3 + '@types/node': 18.17.17 chalk: 4.1.2 - jest-message-util: 29.5.0 - jest-util: 29.5.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 slash: 3.0.0 dev: true - /@jest/core@29.5.0(ts-node@10.9.1): - resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} + /@jest/core@29.7.0(ts-node@10.9.1): + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -3175,92 +3048,93 @@ packages: node-notifier: optional: true dependencies: - '@jest/console': 29.5.0 - '@jest/reporters': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.18 + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.17.17 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 - jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-resolve-dependencies: 29.5.0 - jest-runner: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - jest-watcher: 29.5.0 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@18.17.17)(ts-node@10.9.1) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 micromatch: 4.0.5 - pretty-format: 29.5.0 + pretty-format: 29.7.0 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: + - babel-plugin-macros - supports-color - ts-node dev: true - /@jest/environment@29.5.0: - resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/fake-timers': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.18 - jest-mock: 29.5.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.17.17 + jest-mock: 29.7.0 dev: true - /@jest/expect-utils@29.5.0: - resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.4.3 + jest-get-type: 29.6.3 dev: true - /@jest/expect@29.5.0: - resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - expect: 29.5.0 - jest-snapshot: 29.5.0 + expect: 29.7.0 + jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color dev: true - /@jest/fake-timers@29.5.0: - resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.5.0 - '@sinonjs/fake-timers': 10.2.0 - '@types/node': 18.16.18 - jest-message-util: 29.5.0 - jest-mock: 29.5.0 - jest-util: 29.5.0 + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 18.17.17 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 dev: true - /@jest/globals@29.5.0: - resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.5.0 - '@jest/expect': 29.5.0 - '@jest/types': 29.5.0 - jest-mock: 29.5.0 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 transitivePeerDependencies: - supports-color dev: true - /@jest/reporters@29.5.0: - resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -3269,25 +3143,25 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.19 - '@types/node': 18.16.18 + '@types/node': 18.17.17 chalk: 4.1.2 - collect-v8-coverage: 1.0.1 + collect-v8-coverage: 1.0.2 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.0 + istanbul-lib-instrument: 6.0.0 + istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - jest-worker: 29.5.0 + istanbul-reports: 3.1.6 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 @@ -3296,15 +3170,15 @@ packages: - supports-color dev: true - /@jest/schemas@29.4.3: - resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@sinclair/typebox': 0.25.24 + '@sinclair/typebox': 0.27.8 dev: true - /@jest/source-map@29.4.3: - resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jridgewell/trace-mapping': 0.3.19 @@ -3312,57 +3186,57 @@ packages: graceful-fs: 4.2.11 dev: true - /@jest/test-result@29.5.0: - resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.5.0 - '@jest/types': 29.5.0 + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 + collect-v8-coverage: 1.0.2 dev: true - /@jest/test-sequencer@29.5.0: - resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.5.0 + '@jest/test-result': 29.7.0 graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 + jest-haste-map: 29.7.0 slash: 3.0.0 dev: true - /@jest/transform@29.5.0: - resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.15 - '@jest/types': 29.5.0 + '@babel/core': 7.22.20 + '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.19 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 micromatch: 4.0.5 - pirates: 4.0.5 + pirates: 4.0.6 slash: 3.0.0 write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color dev: true - /@jest/types@29.5.0: - resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.4.3 + '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.16.18 + '@types/node': 18.17.17 '@types/yargs': 17.0.24 chalk: 4.1.2 dev: true @@ -3406,45 +3280,16 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@json-rpc-tools/provider@1.7.6: - resolution: {integrity: sha512-z7D3xvJ33UfCGv77n40lbzOYjZKVM3k2+5cV7xS8G6SCvKTzMkhkUYuD/qzQUNT4cG/lv0e9mRToweEEVLVVmA==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - dependencies: - '@json-rpc-tools/utils': 1.7.6 - axios: 0.21.4 - safe-json-utils: 1.1.1 - ws: 7.5.9 - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - dev: false - - /@json-rpc-tools/types@1.7.6: - resolution: {integrity: sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - dependencies: - keyvaluestorage-interface: 1.0.0 - dev: false - - /@json-rpc-tools/utils@1.7.6: - resolution: {integrity: sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - dependencies: - '@json-rpc-tools/types': 1.7.6 - '@pedrouid/environment': 1.0.1 - dev: false - - /@ledgerhq/connect-kit-loader@1.0.2: - resolution: {integrity: sha512-TQ21IjcZOw/scqypaVFY3jHVqI7X7Hta3qN/us6FvTol3AY06UmrhhXGww0E9xHmAbdX241ddwXEiMBSQZFr9g==} + /@ledgerhq/connect-kit-loader@1.1.2: + resolution: {integrity: sha512-mscwGroSJQrCTjtNGBu+18FQbZYA4+q6Tyx6K7CXHl6AwgZKbWfZYdgP2F+fyZcRUdGRsMX8QtvU61VcGGtO1A==} dev: false /@lit-labs/ssr-dom-shim@1.1.1: resolution: {integrity: sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==} dev: false - /@lit/reactive-element@1.6.1: - resolution: {integrity: sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA==} + /@lit/reactive-element@1.6.3: + resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} dependencies: '@lit-labs/ssr-dom-shim': 1.1.1 dev: false @@ -3452,7 +3297,7 @@ packages: /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.15 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -3461,7 +3306,7 @@ packages: /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.15 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -3480,13 +3325,13 @@ packages: tweetnacl-util: 0.15.1 dev: false - /@metamask/eth-sig-util@5.0.2: - resolution: {integrity: sha512-RU6fG/H6/UlBol221uBkq5C7w3TwLK611nEZliO2u+kO0vHKGBXnIPlhI0tzKUigjhUeOd9mhCNbNvhh0LKt9Q==} + /@metamask/eth-sig-util@5.1.0: + resolution: {integrity: sha512-mlgziIHYlA9pi/XZerChqg4NocdOgBPB9NmxgXWQO2U2hH8RGOJQrz6j/AIKkYxgCMIE2PY000+joOwXfzeTDQ==} engines: {node: '>=14.0.0'} dependencies: - '@ethereumjs/util': 8.0.5 + '@ethereumjs/util': 8.1.0 bn.js: 4.12.0 - ethereum-cryptography: 1.2.0 + ethereum-cryptography: 2.1.2 ethjs-util: 0.1.6 tweetnacl: 1.0.3 tweetnacl-util: 0.15.1 @@ -3500,9 +3345,9 @@ packages: resolution: {integrity: sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==} engines: {node: '>=14.0.0'} dependencies: - '@types/debug': 4.1.7 + '@types/debug': 4.1.8 debug: 4.3.4(supports-color@8.1.1) - semver: 7.5.2 + semver: 7.5.4 superstruct: 1.0.3 transitivePeerDependencies: - supports-color @@ -3514,7 +3359,7 @@ packages: '@motionone/easing': 10.15.1 '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 - tslib: 2.5.2 + tslib: 2.6.2 dev: false /@motionone/dom@10.16.2: @@ -3525,14 +3370,14 @@ packages: '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 hey-listen: 1.0.8 - tslib: 2.5.2 + tslib: 2.6.2 dev: false /@motionone/easing@10.15.1: resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==} dependencies: '@motionone/utils': 10.15.1 - tslib: 2.5.2 + tslib: 2.6.2 dev: false /@motionone/generators@10.15.1: @@ -3540,14 +3385,14 @@ packages: dependencies: '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 - tslib: 2.5.2 + tslib: 2.6.2 dev: false /@motionone/svelte@10.16.2: resolution: {integrity: sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==} dependencies: '@motionone/dom': 10.16.2 - tslib: 2.5.2 + tslib: 2.6.2 dev: false /@motionone/types@10.15.1: @@ -3559,14 +3404,14 @@ packages: dependencies: '@motionone/types': 10.15.1 hey-listen: 1.0.8 - tslib: 2.5.2 + tslib: 2.6.2 dev: false /@motionone/vue@10.16.2: resolution: {integrity: sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==} dependencies: '@motionone/dom': 10.16.2 - tslib: 2.5.2 + tslib: 2.6.2 dev: false /@next/env@13.1.6: @@ -3706,22 +3551,26 @@ packages: eslint-scope: 5.1.1 dev: true - /@noble/curves@1.0.0: - resolution: {integrity: sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==} + /@noble/curves@1.1.0: + resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} dependencies: - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.1 dev: false - /@noble/hashes@1.2.0: - resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} + /@noble/curves@1.2.0: + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + dependencies: + '@noble/hashes': 1.3.2 dev: false - /@noble/hashes@1.3.0: - resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} + /@noble/hashes@1.3.1: + resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} + engines: {node: '>= 16'} dev: false - /@noble/secp256k1@1.7.1: - resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} + /@noble/hashes@1.3.2: + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} dev: false /@nodelib/fs.scandir@2.1.5: @@ -3742,21 +3591,6 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - /@pedrouid/environment@1.0.1: - resolution: {integrity: sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug==} - dev: false - - /@pkgr/utils@2.3.1: - resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dependencies: - cross-spawn: 7.0.3 - is-glob: 4.0.3 - open: 8.4.2 - picocolors: 1.0.0 - tiny-glob: 0.2.9 - tslib: 2.5.2 - /@protobufjs/aspromise@1.1.2: resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} dev: false @@ -3800,14 +3634,14 @@ packages: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} dev: false - /@rainbow-me/rainbowkit@1.0.5(@types/react@18.2.12)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0): - resolution: {integrity: sha512-vVXYpX9euFrellK0yiLXBC+tp0NFc0IAR/XzXlFNl3x6eaC+0/S99PGEwRQb66SQ9ioVoHdyvxz1BpeeWlc91w==} + /@rainbow-me/rainbowkit@1.0.11(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0)(viem@1.10.14)(wagmi@1.4.2): + resolution: {integrity: sha512-+cm6+WUPG9iPgkfJKbvlowcrSHu266Zk20LVRsYLcmb6v29gVMHcWQvyI4T6EVC9TxNjnyq/jIlen++uiUBmmQ==} engines: {node: '>=12.4'} peerDependencies: react: '>=17' react-dom: '>=17' viem: ~0.3.19 || ^1.0.0 - wagmi: ~1.0.1 || ~1.1.0 || ~1.2.0 || ~1.3.0 + wagmi: ~1.0.1 || ~1.1.0 || ~1.2.0 || ~1.3.0 || ~1.4.0 dependencies: '@vanilla-extract/css': 1.9.1 '@vanilla-extract/dynamic': 2.0.2 @@ -3816,9 +3650,9 @@ packages: qrcode: 1.5.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.4(@types/react@18.2.12)(react@18.2.0) - viem: 1.0.6(typescript@4.9.5) - wagmi: 1.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(viem@1.0.6) + react-remove-scroll: 2.5.4(@types/react@18.2.22)(react@18.2.0) + viem: 1.10.14(typescript@4.9.5) + wagmi: 1.4.2(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(viem@1.10.14) transitivePeerDependencies: - '@types/react' dev: false @@ -3836,7 +3670,7 @@ packages: slash: 4.0.0 dev: true - /@rollup/plugin-babel@5.3.1(@babel/core@7.22.15)(rollup@2.79.1): + /@rollup/plugin-babel@5.3.1(@babel/core@7.22.20)(rollup@2.79.1): resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -3847,7 +3681,7 @@ packages: '@types/babel__core': optional: true dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@rollup/pluginutils': 3.1.0(rollup@2.79.1) rollup: 2.79.1 @@ -3865,7 +3699,7 @@ packages: glob: 7.2.3 is-reference: 1.2.1 magic-string: 0.25.9 - resolve: 1.22.2 + resolve: 1.22.6 rollup: 2.79.1 dev: true @@ -3900,7 +3734,7 @@ packages: deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 - resolve: 1.22.2 + resolve: 1.22.6 rollup: 2.79.1 dev: true @@ -3913,26 +3747,29 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@2.79.1) + '@rollup/pluginutils': 5.0.4(rollup@2.79.1) estree-walker: 2.0.2 magic-string: 0.27.0 rollup: 2.79.1 dev: true - /@rollup/plugin-typescript@8.5.0(rollup@2.79.1)(typescript@4.9.5): - resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} - engines: {node: '>=8.0.0'} + /@rollup/plugin-typescript@11.1.3(rollup@2.79.1)(tslib@2.6.2)(typescript@4.9.5): + resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} + engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^2.14.0 + rollup: ^2.14.0||^3.0.0 tslib: '*' typescript: '>=3.7.0' peerDependenciesMeta: + rollup: + optional: true tslib: optional: true dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) - resolve: 1.22.2 + '@rollup/pluginutils': 5.0.4(rollup@2.79.1) + resolve: 1.22.6 rollup: 2.79.1 + tslib: 2.6.2 typescript: 4.9.5 dev: true @@ -3948,8 +3785,8 @@ packages: rollup: 2.79.1 dev: true - /@rollup/pluginutils@5.0.2(rollup@2.79.1): - resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + /@rollup/pluginutils@5.0.4(rollup@2.79.1): + resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0 @@ -3963,86 +3800,79 @@ packages: rollup: 2.79.1 dev: true - /@rushstack/eslint-patch@1.3.0: - resolution: {integrity: sha512-IthPJsJR85GhOkp3Hvp8zFOPK5ynKn6STyHa/WZpioK7E1aYDiBzpqQPrngc14DszIUkIrdd3k9Iu0XSzlP/1w==} + /@rushstack/eslint-patch@1.4.0: + resolution: {integrity: sha512-cEjvTPU32OM9lUFegJagO0mRnIn+rbqrG89vV8/xLnLFX0DoR0r1oy5IlTga71Q7uT3Qus7qm7wgeiMT/+Irlg==} - /@safe-global/safe-apps-provider@0.15.2: - resolution: {integrity: sha512-BaoGAuY7h6jLBL7P+M6b7hd+1QfTv8uMyNF3udhiNUwA0XwfzH2ePQB13IEV3Mn7wdcIMEEUDS5kHbtAsj60qQ==} + /@safe-global/safe-apps-provider@0.17.1(typescript@4.9.5): + resolution: {integrity: sha512-lYfRqrbbK1aKU1/UGkYWc/X7PgySYcumXKc5FB2uuwAs2Ghj8uETuW5BrwPqyjBknRxutFbTv+gth/JzjxAhdQ==} dependencies: - '@safe-global/safe-apps-sdk': 7.9.0 + '@safe-global/safe-apps-sdk': 8.0.0(typescript@4.9.5) events: 3.3.0 transitivePeerDependencies: - bufferutil - - encoding + - typescript - utf-8-validate + - zod dev: false - /@safe-global/safe-apps-sdk@7.11.0: - resolution: {integrity: sha512-RDamzPM1Lhhiiz0O+Dn6FkFqIh47jmZX+HCV/BBnBBOSKfBJE//IGD3+02zMgojXHTikQAburdPes9qmH1SA1A==} + /@safe-global/safe-apps-sdk@8.0.0(typescript@4.9.5): + resolution: {integrity: sha512-gYw0ki/EAuV1oSyMxpqandHjnthZjYYy+YWpTAzf8BqfXM3ItcZLpjxfg+3+mXW8HIO+3jw6T9iiqEXsqHaMMw==} dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.7.3 - ethers: 5.7.2 + '@safe-global/safe-gateway-typescript-sdk': 3.12.0 + viem: 1.10.14(typescript@4.9.5) transitivePeerDependencies: - bufferutil - - encoding + - typescript - utf-8-validate + - zod dev: false - /@safe-global/safe-apps-sdk@7.9.0: - resolution: {integrity: sha512-S2EI+JL8ocSgE3uGNaDZCzKmwfhtxXZFDUP76vN0FeaY35itFMyi8F0Vhxu0XnZm3yLzJE3tp5px6GhuQFLU6w==} + /@safe-global/safe-apps-sdk@8.1.0(typescript@4.9.5): + resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.7.3 - ethers: 5.7.2 + '@safe-global/safe-gateway-typescript-sdk': 3.12.0 + viem: 1.10.14(typescript@4.9.5) transitivePeerDependencies: - bufferutil - - encoding + - typescript - utf-8-validate + - zod dev: false - /@safe-global/safe-gateway-typescript-sdk@3.7.3: - resolution: {integrity: sha512-O6JCgXNZWG0Vv8FnOEjKfcbsP0WxGvoPJk5ufqUrsyBlHup16It6oaLnn+25nXFLBZOHI1bz8429JlqAc2t2hg==} - dependencies: - cross-fetch: 3.1.6 - transitivePeerDependencies: - - encoding - dev: false - - /@scure/base@1.1.1: - resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==} + /@safe-global/safe-gateway-typescript-sdk@3.12.0: + resolution: {integrity: sha512-hExCo62lScVC9/ztVqYEYL2pFxcqLTvB8fj0WtdP5FWrvbtEgD0pbVolchzD5bf85pbzvEwdAxSVS7EdCZxTNw==} + engines: {node: '>=16'} dev: false - /@scure/bip32@1.1.5: - resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} - dependencies: - '@noble/hashes': 1.2.0 - '@noble/secp256k1': 1.7.1 - '@scure/base': 1.1.1 + /@scure/base@1.1.3: + resolution: {integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==} dev: false - /@scure/bip32@1.3.0: - resolution: {integrity: sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==} + /@scure/bip32@1.3.1: + resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} dependencies: - '@noble/curves': 1.0.0 - '@noble/hashes': 1.3.0 - '@scure/base': 1.1.1 + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 + '@scure/base': 1.1.3 dev: false - /@scure/bip39@1.1.1: - resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} + /@scure/bip32@1.3.2: + resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} dependencies: - '@noble/hashes': 1.2.0 - '@scure/base': 1.1.1 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.3 dev: false - /@scure/bip39@1.2.0: - resolution: {integrity: sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==} + /@scure/bip39@1.2.1: + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} dependencies: - '@noble/hashes': 1.3.0 - '@scure/base': 1.1.1 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.3 dev: false - /@sinclair/typebox@0.25.24: - resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true /@sindresorhus/is@0.7.0: @@ -4056,9 +3886,8 @@ packages: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers@10.2.0: - resolution: {integrity: sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==} - deprecated: Use version 10.1.0. Version 10.2.0 has potential breaking issues + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} dependencies: '@sinonjs/commons': 3.0.0 dev: true @@ -4070,28 +3899,27 @@ packages: buffer: 6.0.3 dev: false - /@solana/web3.js@1.76.0: - resolution: {integrity: sha512-aJtF/nTs+9St+KtTK/wgVJ+SinfjYzn+3w1ygYIPw8ST6LH+qHBn8XkodgDTwlv/xzNkaVz1kkUDOZ8BPXyZWA==} + /@solana/web3.js@1.78.5: + resolution: {integrity: sha512-2ZHsDNqkKdglJQrIvJ3p2DmgS3cGnary3VJyqt9C1SPrpAtLYzcElr3xyXJOznyQTU/8AMw+GoF11lFoKbicKg==} dependencies: - '@babel/runtime': 7.22.3 - '@noble/curves': 1.0.0 - '@noble/hashes': 1.3.0 + '@babel/runtime': 7.22.15 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.3.0 + agentkeepalive: 4.5.0 bigint-buffer: 1.1.5 bn.js: 5.2.1 borsh: 0.7.0 bs58: 4.0.1 buffer: 6.0.3 fast-stable-stringify: 1.0.0 - jayson: 3.7.0 - node-fetch: 2.6.11 - rpc-websockets: 7.5.1 + jayson: 4.1.0 + node-fetch: 2.7.0 + rpc-websockets: 7.6.0 superstruct: 0.14.2 transitivePeerDependencies: - bufferutil - encoding - - supports-color - utf-8-validate dev: false @@ -4214,36 +4042,36 @@ packages: /@swc/helpers@0.4.14: resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} dependencies: - tslib: 2.5.2 + tslib: 2.6.2 dev: false - /@tanstack/query-core@4.29.7: - resolution: {integrity: sha512-GXG4b5hV2Loir+h2G+RXhJdoZhJLnrBWsuLB2r0qBRyhWuXq9w/dWxzvpP89H0UARlH6Mr9DiVj4SMtpkF/aUA==} + /@tanstack/query-core@4.35.3: + resolution: {integrity: sha512-PS+WEjd9wzKTyNjjQymvcOe1yg8f3wYc6mD+vb6CKyZAKvu4sIJwryfqfBULITKCla7P9C4l5e9RXePHvZOZeQ==} dev: false - /@tanstack/query-persist-client-core@4.29.7: - resolution: {integrity: sha512-/QahvSq9/f8hetCsCd9MaOy6fAoPn0YDGDcl6TTobqdr9kHMgrM9laP9yKJFg2hm5/jIsrCMDO/iCnxBiUhrqw==} + /@tanstack/query-persist-client-core@4.35.3: + resolution: {integrity: sha512-UlUMsvmy12qgPzphIq8iyFtwxuv/vaEyFQEFDVVCvyrqj2G020qMZiCA1vj3+gasmCXh59EraiC2eY4Iqo0/PA==} dependencies: - '@tanstack/query-core': 4.29.7 + '@tanstack/query-core': 4.35.3 dev: false - /@tanstack/query-sync-storage-persister@4.29.7: - resolution: {integrity: sha512-XWys8hez8eFIb9+oYNs0Jumfjz8afEwN52VSrHJEWg7gZO/Y/8ziI80cNlaDNB+60t7s3TaspKXT5z8DNFsCkQ==} + /@tanstack/query-sync-storage-persister@4.35.3: + resolution: {integrity: sha512-q9axt4iJkRnhR9R9qou+Q2+T2S21jwgf/7carYs9DQGLoE9r9YnwxgbmDE72yQd1glcsGF26UqqO6WO8ziNCrQ==} dependencies: - '@tanstack/query-persist-client-core': 4.29.7 + '@tanstack/query-persist-client-core': 4.35.3 dev: false - /@tanstack/react-query-persist-client@4.29.7(@tanstack/react-query@4.29.7): - resolution: {integrity: sha512-KYUeESnthjjcfakpAei9Cz5gsIm1uDAVHrKcIAoARQwksk4j0KAo9ieExoIhL9v4mpTOlE9GsuZ/y06ANmaVaQ==} + /@tanstack/react-query-persist-client@4.35.5(@tanstack/react-query@4.35.3): + resolution: {integrity: sha512-d8pFzvMD6AD2guGXLP2A4r0mfCRuZ8C4VMBl5+EZvka/e4o9/DRfizZB4S9w0Za+sOQJ4/SdD3OOk2BwYEykkQ==} peerDependencies: - '@tanstack/react-query': 4.29.7 + '@tanstack/react-query': ^4.35.3 dependencies: - '@tanstack/query-persist-client-core': 4.29.7 - '@tanstack/react-query': 4.29.7(react-dom@18.2.0)(react@18.2.0) + '@tanstack/query-persist-client-core': 4.35.3 + '@tanstack/react-query': 4.35.3(react-dom@18.2.0)(react@18.2.0) dev: false - /@tanstack/react-query@4.29.7(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ijBWEzAIo09fB1yd22slRZzprrZ5zMdWYzBnCg5qiXuFbH78uGN1qtGz8+Ed4MuhaPaYSD+hykn+QEKtQviEtg==} + /@tanstack/react-query@4.35.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-UgTPioip/rGG3EQilXfA2j4BJkhEQsR+KAbF+KIuvQ7j4MkgnTCJF01SfRpIRNtQTlEfz/+IL7+jP8WA8bFbsw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4254,7 +4082,7 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.29.7 + '@tanstack/query-core': 4.35.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) use-sync-external-store: 1.2.0(react@18.2.0) @@ -4272,63 +4100,63 @@ packages: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} dev: true - /@tsconfig/node16@1.0.3: - resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} dev: true - /@types/babel__core@7.20.0: - resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} + /@types/babel__core@7.20.2: + resolution: {integrity: sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==} dependencies: - '@babel/parser': 7.22.15 - '@babel/types': 7.22.15 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.18.5 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.19 + '@types/babel__generator': 7.6.5 + '@types/babel__template': 7.4.2 + '@types/babel__traverse': 7.20.2 dev: true - /@types/babel__generator@7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + /@types/babel__generator@7.6.5: + resolution: {integrity: sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.19 dev: true - /@types/babel__template@7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + /@types/babel__template@7.4.2: + resolution: {integrity: sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==} dependencies: - '@babel/parser': 7.22.15 - '@babel/types': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.19 dev: true - /@types/babel__traverse@7.18.5: - resolution: {integrity: sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==} + /@types/babel__traverse@7.20.2: + resolution: {integrity: sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.22.19 dev: true /@types/bn.js@4.11.6: resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} dependencies: - '@types/node': 18.16.18 + '@types/node': 18.17.17 dev: false - /@types/chai@4.3.5: - resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} + /@types/chai@4.3.6: + resolution: {integrity: sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==} dev: true - /@types/connect@3.4.35: - resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} + /@types/connect@3.4.36: + resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} dependencies: - '@types/node': 18.16.18 + '@types/node': 18.17.17 dev: false /@types/cross-spawn@6.0.3: resolution: {integrity: sha512-BDAkU7WHHRHnvBf5z89lcvACsvkz/n7Tv+HyD/uW76O29HoH1Tk/W6iQrepaZVbisvlEek4ygwT8IW7ow9XLAA==} dependencies: - '@types/node': 18.16.18 + '@types/node': 18.17.17 dev: true - /@types/debug@4.1.7: - resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + /@types/debug@4.1.8: + resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} dependencies: '@types/ms': 0.7.31 dev: false @@ -4344,7 +4172,7 @@ packages: resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} dependencies: '@types/estree': 1.0.1 - '@types/json-schema': 7.0.12 + '@types/json-schema': 7.0.13 dev: true /@types/estree@0.0.39: @@ -4355,24 +4183,24 @@ packages: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} dev: true - /@types/fs-extra@11.0.1: - resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} + /@types/fs-extra@11.0.2: + resolution: {integrity: sha512-c0hrgAOVYr21EX8J0jBMXGLMgJqVf/v6yxi0dLaJboW9aQPh16Id+z6w2Tx1hm+piJOLv8xPfVKZCLfjPw/IMQ==} dependencies: - '@types/jsonfile': 6.1.1 - '@types/node': 18.16.18 + '@types/jsonfile': 6.1.2 + '@types/node': 18.17.17 dev: true /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.16.18 + '@types/node': 18.17.17 dev: true /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 18.16.18 + '@types/node': 18.17.17 dev: true /@types/is-ci@3.0.0: @@ -4397,52 +4225,52 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest@29.5.1: - resolution: {integrity: sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==} + /@types/jest@29.5.5: + resolution: {integrity: sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==} dependencies: - expect: 29.5.0 - pretty-format: 29.5.0 + expect: 29.7.0 + pretty-format: 29.7.0 dev: true - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + /@types/json-schema@7.0.13: + resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} dev: true /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - /@types/jsonfile@6.1.1: - resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} + /@types/jsonfile@6.1.2: + resolution: {integrity: sha512-8t92P+oeW4d/CRQfJaSqEwXujrhH4OEeHRjGU3v1Q8mUS8GPF3yiX26sw4svv6faL2HfBtGTe2xWIoVgN3dy9w==} dependencies: - '@types/node': 18.16.18 + '@types/node': 18.17.17 dev: true /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.16.18 + '@types/node': 18.17.17 dev: false /@types/lodash.clonedeep@4.5.7: resolution: {integrity: sha512-ccNqkPptFIXrpVqUECi60/DFxjNKsfoQxSQsgcBJCX/fuX1wgyQieojkcWH/KpE3xzLoWN/2k+ZeGqIN3paSvw==} dependencies: - '@types/lodash': 4.14.195 + '@types/lodash': 4.14.198 dev: true /@types/lodash.mapvalues@4.6.7: resolution: {integrity: sha512-yGTo9zD60Iw1Q+YBvx4Ad7RDj5rA6EpvYTpVPVsfe6pwHcwDcGChSqL1n2sPBMbCeHJ3R5kcaqpkdlrFe/y4Vg==} dependencies: - '@types/lodash': 4.14.195 + '@types/lodash': 4.14.198 dev: true /@types/lodash.sortby@4.7.7: resolution: {integrity: sha512-J/4IS+jQopGBrrRetBXDCX0KnSeXJZ0rOTmGAxR9MWGV24YdHxX8IRi9LCGAU9GKWlBov9KRSfQpuup9PReqrw==} dependencies: - '@types/lodash': 4.14.195 + '@types/lodash': 4.14.198 dev: true - /@types/lodash@4.14.195: - resolution: {integrity: sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==} + /@types/lodash@4.14.198: + resolution: {integrity: sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg==} dev: true /@types/long@4.0.2: @@ -4472,17 +4300,21 @@ packages: /@types/mute-stream@0.0.1: resolution: {integrity: sha512-0yQLzYhCqGz7CQPE3iDmYjhb7KMBFOP+tBkyw+/Y2YyDI5wpS7itXXxneN1zSsUwWx3Ji6YiVYrhAnpQGS/vkw==} dependencies: - '@types/node': 18.16.18 + '@types/node': 18.17.17 dev: false /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - /@types/node@18.16.18: - resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} + /@types/node@18.17.17: + resolution: {integrity: sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw==} - /@types/node@20.6.0: - resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} + /@types/node@20.4.7: + resolution: {integrity: sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g==} + dev: true + + /@types/node@20.6.2: + resolution: {integrity: sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==} dev: false /@types/normalize-package-data@2.4.1: @@ -4496,38 +4328,34 @@ packages: /@types/pbkdf2@3.1.0: resolution: {integrity: sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==} dependencies: - '@types/node': 18.16.18 + '@types/node': 18.17.17 dev: false - /@types/prettier@2.7.2: - resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} - dev: true + /@types/prop-types@15.7.6: + resolution: {integrity: sha512-RK/kBbYOQQHLYj9Z95eh7S6t7gq4Ojt/NT8HTk8bWVhA5DaF+5SMnxHKkP4gPNN3wAZkKP+VjAf0ebtYzf+fxg==} - /@types/prop-types@15.7.5: - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - - /@types/react-dom@18.2.5: - resolution: {integrity: sha512-sRQsOS/sCLnpQhR4DSKGTtWFE3FZjpQa86KPVbhUqdYMRZ9FEFcfAytKhR/vUG2rH1oFbOOej6cuD7MFSobDRQ==} + /@types/react-dom@18.2.7: + resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: - '@types/react': 18.2.12 + '@types/react': 18.2.22 - /@types/react@18.2.12: - resolution: {integrity: sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==} + /@types/react@18.2.22: + resolution: {integrity: sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==} dependencies: - '@types/prop-types': 15.7.5 + '@types/prop-types': 15.7.6 '@types/scheduler': 0.16.3 csstype: 3.1.2 /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.16.18 + '@types/node': 18.17.17 dev: true /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.16.18 + '@types/node': 18.17.17 dev: false /@types/scheduler@0.16.3: @@ -4536,23 +4364,19 @@ packages: /@types/secp256k1@4.0.3: resolution: {integrity: sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==} dependencies: - '@types/node': 18.16.18 + '@types/node': 18.17.17 dev: false - /@types/semver@6.2.3: - resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} - dev: true - - /@types/semver@7.5.0: - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + /@types/semver@7.5.2: + resolution: {integrity: sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==} dev: true /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/trusted-types@2.0.3: - resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} + /@types/trusted-types@2.0.4: + resolution: {integrity: sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ==} dev: false /@types/validate-npm-package-name@4.0.0: @@ -4566,13 +4390,19 @@ packages: /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: - '@types/node': 18.16.18 + '@types/node': 18.17.17 + dev: false + + /@types/ws@8.5.5: + resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} + dependencies: + '@types/node': 18.17.17 dev: false - /@types/xml2js@0.4.11: - resolution: {integrity: sha512-JdigeAKmCyoJUiQljjr7tQG3if9NkqGUgwEUqBvV0N7LM4HyQk7UXCnusRa1lnvXAEYJ8mw8GtZWioagNztOwA==} + /@types/xml2js@0.4.12: + resolution: {integrity: sha512-CZPpQKBZ8db66EP5hCjwvYrLThgZvnyZrPXK2W+UI1oOaWezGt34iOaUCX4Jah2X8+rQqjvl9VKEIT8TR1I0rA==} dependencies: - '@types/node': 18.16.18 + '@types/node': 18.17.17 dev: true /@types/yargs-parser@21.0.0: @@ -4585,8 +4415,8 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5): - resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -4596,38 +4426,38 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@eslint-community/regexpp': 4.8.1 + '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.48.0 - grapheme-splitter: 1.0.4 + eslint: 8.49.0 + graphemer: 1.4.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 - semver: 7.5.2 + semver: 7.5.4 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): - resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} + /@typescript-eslint/experimental-utils@5.62.0(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) - eslint: 8.48.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + eslint: 8.49.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser@5.59.11(eslint@8.48.0)(typescript@4.9.5): - resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} + /@typescript-eslint/parser@5.62.0(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4636,32 +4466,24 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.48.0 + eslint: 8.49.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color - /@typescript-eslint/scope-manager@5.59.11: - resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/visitor-keys': 5.59.11 - - /@typescript-eslint/scope-manager@5.59.7: - resolution: {integrity: sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==} + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/visitor-keys': 5.59.7 - dev: true + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 - /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): - resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} + /@typescript-eslint/type-utils@5.62.0(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -4670,47 +4492,22 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.48.0 + eslint: 8.49.0 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.59.11: - resolution: {integrity: sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==} + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /@typescript-eslint/types@5.59.7: - resolution: {integrity: sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@typescript-eslint/typescript-estree@5.59.11(typescript@4.9.5): - resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/visitor-keys': 5.59.11 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.2 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - - /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): - resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} + /@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -4718,73 +4515,44 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/visitor-keys': 5.59.7 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.2 + semver: 7.5.4 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: true - - /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): - resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.59.11 - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) - eslint: 8.48.0 - eslint-scope: 5.1.1 - semver: 7.5.2 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): - resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} + /@typescript-eslint/utils@5.62.0(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.59.7 - '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) - eslint: 8.48.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@types/json-schema': 7.0.13 + '@types/semver': 7.5.2 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + eslint: 8.49.0 eslint-scope: 5.1.1 - semver: 7.5.2 + semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@5.59.11: - resolution: {integrity: sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==} + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - /@typescript-eslint/visitor-keys@5.59.7: - resolution: {integrity: sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.59.7 - eslint-visitor-keys: 3.4.3 - dev: true - /@vanilla-extract/css@1.9.1: resolution: {integrity: sha512-pu2SFiff5jRhPwvGoj8cM5l/qIyLvigOmy22ss5DGjwV5pJYezRjDLxWumi2luIwioMWvh9EozCjyfH8nq+7fQ==} dependencies: @@ -4819,45 +4587,31 @@ packages: '@vanilla-extract/css': 1.9.1 dev: false - /@wagmi/chains@1.1.0(typescript@4.9.5): - resolution: {integrity: sha512-pWZlxBk0Ql8E7DV8DwqlbBpOyUdaG9UDlQPBxJNALuEK1I0tbQ3AVvSDnlsEIt06UPmPo5o27gzs3hwPQ/A+UA==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - typescript: 4.9.5 - dev: false - - /@wagmi/connectors@2.2.0(@wagmi/chains@1.1.0)(react@18.2.0)(typescript@4.9.5)(viem@1.0.6): - resolution: {integrity: sha512-pI1ed2V8dC8Gro0YbXrJedFj5U9HHD/zUe9MMUaV3ews2LY6qziSXZp9Dw6TKyiSJ5ANbRlZcl40AmSPozkZmw==} + /@wagmi/connectors@3.1.2(@types/react@18.2.22)(react@18.2.0)(typescript@4.9.5)(viem@1.10.14): + resolution: {integrity: sha512-IlLKErqCzQRBUcCvXGPowcczbWcvJtEG006gPsAoePNJEXCHEWoKASghgu+L/bqD7006Z6mW6zlTNjcSQJvFAg==} peerDependencies: - '@wagmi/chains': '>=1.0.0' typescript: '>=5.0.4' viem: '>=0.3.35' peerDependenciesMeta: - '@wagmi/chains': - optional: true typescript: optional: true dependencies: - '@coinbase/wallet-sdk': 3.6.6 - '@ledgerhq/connect-kit-loader': 1.0.2 - '@safe-global/safe-apps-provider': 0.15.2 - '@safe-global/safe-apps-sdk': 7.11.0 - '@wagmi/chains': 1.1.0(typescript@4.9.5) - '@walletconnect/ethereum-provider': 2.8.0(@walletconnect/modal@2.5.9) + '@coinbase/wallet-sdk': 3.7.2 + '@ledgerhq/connect-kit-loader': 1.1.2 + '@safe-global/safe-apps-provider': 0.17.1(typescript@4.9.5) + '@safe-global/safe-apps-sdk': 8.1.0(typescript@4.9.5) + '@walletconnect/ethereum-provider': 2.10.1(@walletconnect/modal@2.6.2) '@walletconnect/legacy-provider': 2.0.0 - '@walletconnect/modal': 2.5.9(react@18.2.0) + '@walletconnect/modal': 2.6.2(@types/react@18.2.22)(react@18.2.0) + '@walletconnect/utils': 2.10.1 abitype: 0.8.7(typescript@4.9.5) eventemitter3: 4.0.7 typescript: 4.9.5 - viem: 1.0.6(typescript@4.9.5) + viem: 1.10.14(typescript@4.9.5) transitivePeerDependencies: - '@react-native-async-storage/async-storage' + - '@types/react' - bufferutil - - debug - encoding - lokijs - react @@ -4866,8 +4620,8 @@ packages: - zod dev: false - /@wagmi/core@1.2.0(react@18.2.0)(typescript@4.9.5)(viem@1.0.6): - resolution: {integrity: sha512-7onf13u0atdXOnoitB+pivnIUPJman7Y8GITKkxwmcwJ3lpE1U/grYE7xHcKN7av7KEu0DozvKPhN7nJ/7OErw==} + /@wagmi/core@1.4.2(@types/react@18.2.22)(react@18.2.0)(typescript@4.9.5)(viem@1.10.14): + resolution: {integrity: sha512-szgNs2DCbBXKsq3wdm/YD8FWkg7lfmTRAv25b2nJYJUTQN59pVXznlWfq8VCJLamhKOYjeYHlTQxXkAeUAJdhw==} peerDependencies: typescript: '>=5.0.4' viem: '>=0.3.35' @@ -4875,17 +4629,16 @@ packages: typescript: optional: true dependencies: - '@wagmi/chains': 1.1.0(typescript@4.9.5) - '@wagmi/connectors': 2.2.0(@wagmi/chains@1.1.0)(react@18.2.0)(typescript@4.9.5)(viem@1.0.6) + '@wagmi/connectors': 3.1.2(@types/react@18.2.22)(react@18.2.0)(typescript@4.9.5)(viem@1.10.14) abitype: 0.8.7(typescript@4.9.5) eventemitter3: 4.0.7 typescript: 4.9.5 - viem: 1.0.6(typescript@4.9.5) - zustand: 4.3.8(react@18.2.0) + viem: 1.10.14(typescript@4.9.5) + zustand: 4.4.1(@types/react@18.2.22)(react@18.2.0) transitivePeerDependencies: - '@react-native-async-storage/async-storage' + - '@types/react' - bufferutil - - debug - encoding - immer - lokijs @@ -4895,22 +4648,22 @@ packages: - zod dev: false - /@walletconnect/core@2.8.0: - resolution: {integrity: sha512-pl7x4sq1nuU0ixA9wF2ecjDecUzIauKr7ZwC29rs9qTcmDpxgJbbOdZwaSl+dJlf1bHC87adVLf5KAkwwo9PzQ==} + /@walletconnect/core@2.10.1: + resolution: {integrity: sha512-WAoXfmj+Zy5q48TnrKUjmHXJCBahzKwbul+noepRZf7JDtUAZ9IOWpUjg+UPRbfK5EiWZ0TF42S6SXidf7EHoQ==} dependencies: '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.11 + '@walletconnect/jsonrpc-ws-connection': 1.0.13 '@walletconnect/keyvaluestorage': 1.0.2 '@walletconnect/logger': 2.0.1 '@walletconnect/relay-api': 1.0.9 '@walletconnect/relay-auth': 1.0.4 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.8.0 - '@walletconnect/utils': 2.8.0 + '@walletconnect/types': 2.10.1 + '@walletconnect/utils': 2.10.1 events: 3.3.0 lodash.isequal: 4.5.0 uint8arrays: 3.1.1 @@ -4946,8 +4699,8 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/ethereum-provider@2.8.0(@walletconnect/modal@2.5.9): - resolution: {integrity: sha512-nVVJtZUpoeurFjoEPYlrUHkT3YleCpEC9YAMKJyEIB3MZZInttcGxGyi0vwFQ+trCfuX8RrdKUPQ952NvxvCvw==} + /@walletconnect/ethereum-provider@2.10.1(@walletconnect/modal@2.6.2): + resolution: {integrity: sha512-Yhoz8EXkKzxOlBT6G+elphqCx/gkH6RxD9/ZAiy9lLc8Ng5p1gvKCVVP5zsGNE9FbkKmHd+J9JJRzn2Bw2yqtQ==} peerDependencies: '@walletconnect/modal': '>=2' peerDependenciesMeta: @@ -4958,16 +4711,15 @@ packages: '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/modal': 2.5.9(react@18.2.0) - '@walletconnect/sign-client': 2.8.0 - '@walletconnect/types': 2.8.0 - '@walletconnect/universal-provider': 2.8.0 - '@walletconnect/utils': 2.8.0 + '@walletconnect/modal': 2.6.2(@types/react@18.2.22)(react@18.2.0) + '@walletconnect/sign-client': 2.10.1 + '@walletconnect/types': 2.10.1 + '@walletconnect/universal-provider': 2.10.1 + '@walletconnect/utils': 2.10.1 events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' - bufferutil - - debug - encoding - lokijs - utf-8-validate @@ -4993,7 +4745,7 @@ packages: dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 - cross-fetch: 3.1.6 + cross-fetch: 3.1.8 tslib: 1.14.1 transitivePeerDependencies: - encoding @@ -5022,8 +4774,8 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/jsonrpc-ws-connection@1.0.11: - resolution: {integrity: sha512-TiFJ6saasKXD+PwGkm5ZGSw0837nc6EeFmurSPgIT/NofnOV4Tv7CVJqGQN0rQYoJUSYu21cwHNYaFkzNpUN+w==} + /@walletconnect/jsonrpc-ws-connection@1.0.13: + resolution: {integrity: sha512-mfOM7uFH4lGtQxG+XklYuFBj6dwVvseTt5/ahOkkmpcAEgz2umuzu7fTR+h5EmjQBdrmYyEBOWADbeaFNxdySg==} dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 @@ -5071,7 +4823,7 @@ packages: '@walletconnect/legacy-types': 2.0.0 '@walletconnect/legacy-utils': 2.0.0 copy-to-clipboard: 3.3.3 - preact: 10.14.1 + preact: 10.17.1 qrcode: 1.5.3 dev: false @@ -5114,32 +4866,34 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/modal-core@2.5.9(react@18.2.0): - resolution: {integrity: sha512-isIebwF9hOknGouhS/Ob4YJ9Sa/tqNYG2v6Ua9EkCqIoLimepkG5eC53tslUWW29SLSfQ9qqBNG2+iE7yQXqgw==} + /@walletconnect/modal-core@2.6.2(@types/react@18.2.22)(react@18.2.0): + resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} dependencies: - buffer: 6.0.3 - valtio: 1.10.6(react@18.2.0) + valtio: 1.11.2(@types/react@18.2.22)(react@18.2.0) transitivePeerDependencies: + - '@types/react' - react dev: false - /@walletconnect/modal-ui@2.5.9(react@18.2.0): - resolution: {integrity: sha512-nfBaAT9Ls7RZTBBgAq+Nt/3AoUcinIJ9bcq5UHXTV3lOPu/qCKmUC/0HY3GvUK8ykabUAsjr0OAGmcqkB91qug==} + /@walletconnect/modal-ui@2.6.2(@types/react@18.2.22)(react@18.2.0): + resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==} dependencies: - '@walletconnect/modal-core': 2.5.9(react@18.2.0) - lit: 2.7.5 + '@walletconnect/modal-core': 2.6.2(@types/react@18.2.22)(react@18.2.0) + lit: 2.8.0 motion: 10.16.2 qrcode: 1.5.3 transitivePeerDependencies: + - '@types/react' - react dev: false - /@walletconnect/modal@2.5.9(react@18.2.0): - resolution: {integrity: sha512-Zs2RvPwbBNRdBhb50FuJCxi3FJltt1KSpI7odjU/x9GTpTOcSOkmR66PBCy2JvNA0+ztnS1Xs0LVEr3lu7/Jzw==} + /@walletconnect/modal@2.6.2(@types/react@18.2.22)(react@18.2.0): + resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} dependencies: - '@walletconnect/modal-core': 2.5.9(react@18.2.0) - '@walletconnect/modal-ui': 2.5.9(react@18.2.0) + '@walletconnect/modal-core': 2.6.2(@types/react@18.2.22)(react@18.2.0) + '@walletconnect/modal-ui': 2.6.2(@types/react@18.2.22)(react@18.2.0) transitivePeerDependencies: + - '@types/react' - react dev: false @@ -5176,17 +4930,17 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/sign-client@2.8.0: - resolution: {integrity: sha512-+l9qwvVeUGk0fBQsgx6yb6hdGYt8uQ3a9jR9GgsJvm8FjFh1oUzTKqFnG7XdhCBnzFnbSoLr41Xe8PbN8qoUSw==} + /@walletconnect/sign-client@2.10.1: + resolution: {integrity: sha512-iG3eJGi1yXeG3xGeVSSMf8wDFyx239B0prLQfy1uYDtYFb2ynnH/09oqAZyKn96W5nfQzUgM2Mz157PVdloH3Q==} dependencies: - '@walletconnect/core': 2.8.0 + '@walletconnect/core': 2.10.1 '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.8.0 - '@walletconnect/utils': 2.8.0 + '@walletconnect/types': 2.10.1 + '@walletconnect/utils': 2.10.1 events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -5201,8 +4955,8 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/types@2.8.0: - resolution: {integrity: sha512-FMeGK3lGXFDwcs5duoN74xL1aLrkgYqnavWE0DnFPt2i1QmSUITU9c8f88EDh8uPXANd2WIYOItm0DVCNxLGGA==} + /@walletconnect/types@2.10.1: + resolution: {integrity: sha512-7pccAhajQdiH2kYywjE1XI64IqRI+4ioyGy0wvz8d0UFQ/DSG3MLKR8jHf5aTOafQQ/HRLz6xvlzN4a7gIVkUQ==} dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 @@ -5215,30 +4969,28 @@ packages: - lokijs dev: false - /@walletconnect/universal-provider@2.8.0: - resolution: {integrity: sha512-BMsGiINI3rT7DRyDJM7miuWG6vDVE0PV6zMcCXIMDYYPay7zFvJxv2VHEx9an4MutrvQR76NTRyG//i1K84VOQ==} + /@walletconnect/universal-provider@2.10.1: + resolution: {integrity: sha512-81QxTH/X4dRoYCz0U9iOrBYOcj7N897ONcB57wsGhEkV7Rc9htmWJq2CzeOuxvVZ+pNZkE+/aw9LrhizO1Ltxg==} dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7 '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 - '@walletconnect/sign-client': 2.8.0 - '@walletconnect/types': 2.8.0 - '@walletconnect/utils': 2.8.0 - eip1193-provider: 1.0.1 + '@walletconnect/sign-client': 2.10.1 + '@walletconnect/types': 2.10.1 + '@walletconnect/utils': 2.10.1 events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' - bufferutil - - debug - encoding - lokijs - utf-8-validate dev: false - /@walletconnect/utils@2.8.0: - resolution: {integrity: sha512-Q8OwMtUevIn1+64LXyTMLlhH58k3UOAjU5b3smYZ7CEEmwEGpOTfTDAWrB3v+ZDIhjyqP94+8fuvKIbcVLKLWA==} + /@walletconnect/utils@2.10.1: + resolution: {integrity: sha512-DM0dKgm9O58l7VqJEyV2OVv16XRePhDAReI23let6WdW1dSpw/Y/A89Lp99ZJOjLm2FxyblMRF3YRaZtHwBffw==} dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -5248,7 +5000,7 @@ packages: '@walletconnect/relay-api': 1.0.9 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.8.0 + '@walletconnect/types': 2.10.1 '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 detect-browser: 5.3.0 @@ -5378,29 +5130,29 @@ packages: '@xtuc/long': 4.2.2 dev: true - /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.88.1): + /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.88.2): resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} engines: {node: '>=14.15.0'} peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x dependencies: - webpack: 5.88.1(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.88.1) + webpack: 5.88.2(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.88.2) dev: true - /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.88.1): + /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.88.2): resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} engines: {node: '>=14.15.0'} peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x dependencies: - webpack: 5.88.1(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.88.1) + webpack: 5.88.2(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.88.2) dev: true - /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.88.1): + /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.88.2): resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} engines: {node: '>=14.15.0'} peerDependencies: @@ -5411,8 +5163,8 @@ packages: webpack-dev-server: optional: true dependencies: - webpack: 5.88.1(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.88.1) + webpack: 5.88.2(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.88.2) dev: true /@xtuc/ieee754@1.2.0: @@ -5442,6 +5194,20 @@ packages: typescript: 4.9.5 dev: false + /abitype@0.9.8(typescript@4.9.5): + resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.19.1 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + dependencies: + typescript: 4.9.5 + dev: false + /acorn-import-assertions@1.9.0(acorn@8.10.0): resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} peerDependencies: @@ -5475,25 +5241,13 @@ packages: resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} dev: false - /agentkeepalive@4.3.0: - resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==} + /agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} engines: {node: '>= 8.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) - depd: 2.0.0 humanize-ms: 1.2.1 - transitivePeerDependencies: - - supports-color dev: false - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - dev: true - /ahocorasick@1.0.2: resolution: {integrity: sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA==} dev: false @@ -5559,6 +5313,13 @@ packages: dependencies: type-fest: 0.21.3 + /ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} + dependencies: + type-fest: 1.4.0 + dev: true + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -5618,10 +5379,10 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - /aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: - deep-equal: 2.2.1 + dequal: 2.0.3 /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} @@ -5633,13 +5394,13 @@ packages: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true - /array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 get-intrinsic: 1.2.1 is-string: 1.0.7 @@ -5659,32 +5420,54 @@ packages: engines: {node: '>=0.10.0'} dev: true - /array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.1 - /array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 es-shim-unscopables: 1.0.0 - /array.prototype.tosorted@1.1.1: - resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 es-shim-unscopables: 1.0.0 + + /array.prototype.tosorted@1.1.2: + resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.1 + + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 get-intrinsic: 1.2.1 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} @@ -5698,17 +5481,17 @@ packages: /ast-types-flow@0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} - /astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - dev: true - /async-mutex@0.2.6: resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} dependencies: - tslib: 2.5.2 + tslib: 2.6.2 dev: false + /asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + dependencies: + has-symbols: 1.0.3 + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false @@ -5722,8 +5505,8 @@ packages: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} - /axe-core@4.7.2: - resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} + /axe-core@4.8.1: + resolution: {integrity: sha512-9l850jDDPnKq48nbad8SiEelCv4OrUWrKab/cPj0GScVg6cb6NbCCt/Ulk26QEq5jP9NnGr04Bit1BHyV6r5CQ==} engines: {node: '>=4'} /axios@0.21.4: @@ -5734,8 +5517,8 @@ packages: - debug dev: false - /axios@1.3.4: - resolution: {integrity: sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==} + /axios@1.5.0: + resolution: {integrity: sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==} dependencies: follow-redirects: 1.15.2 form-data: 4.0.0 @@ -5744,22 +5527,22 @@ packages: - debug dev: false - /axobject-query@3.1.1: - resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: - deep-equal: 2.2.1 + dequal: 2.0.3 - /babel-jest@29.5.0(@babel/core@7.22.15): - resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} + /babel-jest@29.7.0(@babel/core@7.22.20): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.22.15 - '@jest/transform': 29.5.0 - '@types/babel__core': 7.20.0 + '@babel/core': 7.22.20 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.2 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0(@babel/core@7.22.15) + babel-preset-jest: 29.6.3(@babel/core@7.22.20) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -5780,57 +5563,57 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist@29.5.0: - resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.22.15 - '@types/babel__core': 7.20.0 - '@types/babel__traverse': 7.18.5 + '@babel/types': 7.22.19 + '@types/babel__core': 7.20.2 + '@types/babel__traverse': 7.20.2 dev: true /babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.15 cosmiconfig: 7.1.0 - resolve: 1.22.2 + resolve: 1.22.6 dev: true - /babel-plugin-polyfill-corejs2@0.4.3(@babel/core@7.22.15): - resolution: {integrity: sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==} + /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.22.20): + resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.15 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.15) + '@babel/compat-data': 7.22.20 + '@babel/core': 7.22.20 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.20) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.8.1(@babel/core@7.22.15): - resolution: {integrity: sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==} + /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.22.20): + resolution: {integrity: sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.15) - core-js-compat: 3.30.2 + '@babel/core': 7.22.20 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.20) + core-js-compat: 3.32.2 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.5.0(@babel/core@7.22.15): - resolution: {integrity: sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==} + /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.22.20): + resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.22.15 - '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.20) transitivePeerDependencies: - supports-color dev: true @@ -5839,55 +5622,55 @@ packages: resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.15): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.20): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.15 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.15) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.15) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.15) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.15) - dev: true - - /babel-preset-jest@29.5.0(@babel/core@7.22.15): - resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} + '@babel/core': 7.22.20 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.20) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.20) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.20) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.20) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.20) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.20) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.22.20): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.15 - babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.15) + '@babel/core': 7.22.20 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.20) dev: true /babel-preset-react-app@10.0.1: resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} dependencies: - '@babel/core': 7.22.15 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-proposal-decorators': 7.22.3(@babel/core@7.22.15) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.15) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.22.15) - '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.22.15) - '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.22.15) - '@babel/plugin-transform-runtime': 7.22.4(@babel/core@7.22.15) - '@babel/preset-env': 7.22.4(@babel/core@7.22.15) - '@babel/preset-react': 7.22.3(@babel/core@7.22.15) - '@babel/preset-typescript': 7.21.5(@babel/core@7.22.15) - '@babel/runtime': 7.22.3 + '@babel/core': 7.22.20 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.20) + '@babel/plugin-proposal-decorators': 7.22.15(@babel/core@7.22.20) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.20) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.20) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.20) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.22.20) + '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.22.20) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-runtime': 7.22.15(@babel/core@7.22.20) + '@babel/preset-env': 7.22.20(@babel/core@7.22.20) + '@babel/preset-react': 7.22.15(@babel/core@7.22.20) + '@babel/preset-typescript': 7.22.15(@babel/core@7.22.20) + '@babel/runtime': 7.22.15 babel-plugin-macros: 3.1.0 babel-plugin-transform-react-remove-prop-types: 0.4.24 transitivePeerDependencies: @@ -6003,8 +5786,8 @@ packages: dependencies: fill-range: 7.0.1 - /breakword@1.0.5: - resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} + /breakword@1.0.6: + resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} dependencies: wcwidth: 1.0.1 dev: true @@ -6033,8 +5816,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001527 - electron-to-chromium: 1.4.508 + caniuse-lite: 1.0.30001538 + electron-to-chromium: 1.4.523 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) @@ -6111,7 +5894,7 @@ packages: engines: {node: '>=6.14.2'} requiresBuild: true dependencies: - node-gyp-build: 4.6.0 + node-gyp-build: 4.6.1 dev: false /builtin-modules@3.3.0: @@ -6128,7 +5911,7 @@ packages: /builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: - semver: 7.5.2 + semver: 7.5.4 dev: false /cacheable-request@2.1.4: @@ -6171,13 +5954,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001527: - resolution: {integrity: sha512-YkJi7RwPgWtXVSgK4lG9AHH57nSzvvOp9MesgXmw4Q7n0C3H04L0foHqfxcmSAm5AcWb8dW9AYj2tR7/5GnddQ==} - - /case@1.6.3: - resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} - engines: {node: '>= 0.8.0'} - dev: false + /caniuse-lite@1.0.30001538: + resolution: {integrity: sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==} /caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -6189,8 +5967,8 @@ packages: url-to-options: 1.0.1 dev: false - /chai@4.3.7: - resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} + /chai@4.3.8: + resolution: {integrity: sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 @@ -6217,8 +5995,8 @@ packages: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk@5.2.0: - resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true @@ -6266,23 +6044,18 @@ packages: safe-buffer: 5.2.1 dev: false - /cjs-module-lexer@1.2.2: - resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} - dev: true - - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} + /cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} dev: true - /clean-webpack-plugin@4.0.0(webpack@5.88.1): + /clean-webpack-plugin@4.0.0(webpack@5.88.2): resolution: {integrity: sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==} engines: {node: '>=10.0.0'} peerDependencies: webpack: '>=4.0.0 <6.0.0' dependencies: del: 4.1.1 - webpack: 5.88.1(webpack-cli@5.1.4) + webpack: 5.88.2(webpack-cli@5.1.4) dev: true /cli-cursor@3.1.0: @@ -6290,20 +6063,20 @@ packages: engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 - - /cli-spinners@2.9.0: - resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} - engines: {node: '>=6'} dev: false - /cli-truncate@2.1.0: - resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} - engines: {node: '>=8'} + /cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - slice-ansi: 3.0.0 - string-width: 4.2.3 + restore-cursor: 4.0.0 dev: true + /cli-spinners@2.9.1: + resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==} + engines: {node: '>=6'} + dev: false + /cli-truncate@3.1.0: resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6379,8 +6152,8 @@ packages: engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true - /collect-v8-coverage@1.0.1: - resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + /collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} dev: true /color-convert@1.9.3: @@ -6419,7 +6192,6 @@ packages: /commander@11.0.0: resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} engines: {node: '>=16'} - dev: false /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -6428,6 +6200,13 @@ packages: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} dev: true + /compare-func@1.3.4: + resolution: {integrity: sha512-sq2sWtrqKPkEXAC8tEJA1+BqAH9GbFkGBtUOqrUX57VSfwp8xyktctk+uLoRy5eccTdxzDcVIztlYDpKs3Jv1Q==} + dependencies: + array-ify: 1.0.0 + dot-prop: 3.0.0 + dev: true + /compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} dependencies: @@ -6456,39 +6235,40 @@ packages: safe-buffer: 5.2.1 dev: false - /conventional-changelog-angular@5.0.13: - resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} - engines: {node: '>=10'} + /conventional-changelog-angular@6.0.0: + resolution: {integrity: sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==} + engines: {node: '>=14'} dependencies: compare-func: 2.0.0 - q: 1.5.1 dev: true - /conventional-changelog-cmyr-config@2.1.0: - resolution: {integrity: sha512-YJxf4Gm2xYCabWhHmrB/RWKDKzEMhDZGyHE8R7/NIflmu31zn9giyhLYWRyB+FAhAWplXulMtMI5VMFLqO0+Aw==} + /conventional-changelog-cmyr-config@2.1.1: + resolution: {integrity: sha512-ioqnPz4v6KqFDeIRh/RKcR6OYHB2gzXjhfUbyO1H4kMEcc8MNWWlIK8A+8n6L5Vnx8SgCOQJXsTHuRCg2O+fvg==} engines: {node: '>=12'} + dependencies: + compare-func: 1.3.4 + debug: 4.3.4(supports-color@8.1.1) + q: 1.5.1 + transitivePeerDependencies: + - supports-color dev: true - /conventional-changelog-conventionalcommits@5.0.0: - resolution: {integrity: sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==} - engines: {node: '>=10'} + /conventional-changelog-conventionalcommits@6.1.0: + resolution: {integrity: sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==} + engines: {node: '>=14'} dependencies: compare-func: 2.0.0 - lodash: 4.17.21 - q: 1.5.1 dev: true - /conventional-commits-parser@3.2.4: - resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==} - engines: {node: '>=10'} + /conventional-commits-parser@4.0.0: + resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} + engines: {node: '>=14'} hasBin: true dependencies: JSONStream: 1.3.5 is-text-path: 1.0.1 - lodash: 4.17.21 meow: 8.1.2 split2: 3.2.2 - through2: 4.0.2 dev: true /convert-source-map@1.9.0: @@ -6504,23 +6284,23 @@ packages: toggle-selection: 1.0.6 dev: false - /copy-webpack-plugin@11.0.0(webpack@5.88.1): + /copy-webpack-plugin@11.0.0(webpack@5.88.2): resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} engines: {node: '>= 14.15.0'} peerDependencies: webpack: ^5.1.0 dependencies: - fast-glob: 3.2.12 + fast-glob: 3.3.1 glob-parent: 6.0.2 - globby: 13.1.3 + globby: 13.2.2 normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.1 - webpack: 5.88.1(webpack-cli@5.1.4) + webpack: 5.88.2(webpack-cli@5.1.4) dev: true - /core-js-compat@3.30.2: - resolution: {integrity: sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA==} + /core-js-compat@3.32.2: + resolution: {integrity: sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==} dependencies: browserslist: 4.21.10 dev: true @@ -6537,18 +6317,18 @@ packages: vary: 1.1.2 dev: false - /cosmiconfig-typescript-loader@4.3.0(@types/node@18.16.18)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@4.9.5): - resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} - engines: {node: '>=12', npm: '>=6'} + /cosmiconfig-typescript-loader@4.4.0(@types/node@20.4.7)(cosmiconfig@8.3.6)(ts-node@10.9.1)(typescript@4.9.5): + resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==} + engines: {node: '>=v14.21.3'} peerDependencies: '@types/node': '*' cosmiconfig: '>=7' ts-node: '>=10' - typescript: '>=3' + typescript: '>=4' dependencies: - '@types/node': 18.16.18 - cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + '@types/node': 20.4.7 + cosmiconfig: 8.3.6(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.17.17)(typescript@4.9.5) typescript: 4.9.5 dev: true @@ -6563,14 +6343,20 @@ packages: yaml: 1.10.2 dev: true - /cosmiconfig@8.1.3: - resolution: {integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==} + /cosmiconfig@8.3.6(typescript@4.9.5): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 + typescript: 4.9.5 dev: true /cosmjs-types@0.4.1: @@ -6615,6 +6401,25 @@ packages: sha.js: 2.4.11 dev: false + /create-jest@29.7.0(@types/node@18.17.17)(ts-node@10.9.1): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@18.17.17)(ts-node@10.9.1) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true @@ -6627,10 +6432,10 @@ packages: cross-spawn: 7.0.3 dev: true - /cross-fetch@3.1.6: - resolution: {integrity: sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==} + /cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} dependencies: - node-fetch: 2.6.11 + node-fetch: 2.7.0 transitivePeerDependencies: - encoding dev: false @@ -6651,8 +6456,8 @@ packages: shebang-command: 2.0.0 which: 2.0.2 - /crypto-addr-codec@0.1.7: - resolution: {integrity: sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg==} + /crypto-addr-codec@0.1.8: + resolution: {integrity: sha512-GqAK90iLLgP3FvhNmHbpT3wR6dEdaM8hZyZtLX29SPardh3OA13RFLHDR6sntGCgRWOfiHqW6sIyohpNqOtV/g==} dependencies: base-x: 3.0.9 big-integer: 1.6.36 @@ -6711,8 +6516,8 @@ packages: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} dev: true - /dayjs@1.11.7: - resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} + /dayjs@1.11.9: + resolution: {integrity: sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==} dev: false /debug@3.2.7: @@ -6819,8 +6624,13 @@ packages: strip-dirs: 2.1.0 dev: false - /dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + /dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true dev: true /deep-eql@4.1.3: @@ -6830,28 +6640,6 @@ packages: type-detect: 4.0.8 dev: true - /deep-equal@2.2.1: - resolution: {integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==} - dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.2 - es-get-iterator: 1.1.3 - get-intrinsic: 1.2.1 - is-arguments: 1.1.1 - is-array-buffer: 3.0.2 - is-date-object: 1.0.5 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - isarray: 2.0.5 - object-is: 1.1.5 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 - side-channel: 1.0.4 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.9 - /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -6868,14 +6656,19 @@ packages: dependencies: clone: 1.0.4 - /define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} + /define-data-property@1.1.0: + resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 - /define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: + define-data-property: 1.1.0 has-property-descriptors: 1.0.0 object-keys: 1.1.1 @@ -6902,10 +6695,9 @@ packages: engines: {node: '>=0.4.0'} dev: false - /depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - dev: false + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} /detect-browser@5.3.0: resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} @@ -6925,8 +6717,8 @@ packages: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} dev: false - /diff-sequences@29.4.3: - resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true @@ -6962,6 +6754,13 @@ packages: dependencies: esutils: 2.0.3 + /dot-prop@3.0.0: + resolution: {integrity: sha512-k4ELWeEU3uCcwub7+dWydqQBRjAjkV9L33HjVRG5Xo2QybI6ja/v+4W73SRi8ubCqJz0l9XsTP1NbewfyqaSlw==} + engines: {node: '>=0.10.0'} + dependencies: + is-obj: 1.0.1 + dev: true + /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -6969,8 +6768,8 @@ packages: is-obj: 2.0.0 dev: true - /dotenv@16.0.3: - resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + /dotenv@16.3.1: + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} engines: {node: '>=12'} /dotenv@8.6.0: @@ -7013,26 +6812,16 @@ packages: dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 - readable-stream: 3.6.2 - stream-shift: 1.0.1 - dev: false - - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true - - /eip1193-provider@1.0.1: - resolution: {integrity: sha512-kSuqwQ26d7CzuS/t3yRXo2Su2cVH0QfvyKbr2H7Be7O5YDyIq4hQGCNTo5wRdP07bt+E2R/8nPCzey4ojBHf7g==} - dependencies: - '@json-rpc-tools/provider': 1.7.6 - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate + readable-stream: 3.6.2 + stream-shift: 1.0.1 dev: false - /electron-to-chromium@1.4.508: - resolution: {integrity: sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==} + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /electron-to-chromium@1.4.523: + resolution: {integrity: sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==} /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -7074,11 +6863,12 @@ packages: graceful-fs: 4.2.11 tapable: 2.2.1 - /enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + /enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 + strip-ansi: 6.0.1 dev: true /envinfo@7.10.0: @@ -7093,16 +6883,17 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract@1.21.2: - resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} + /es-abstract@1.22.2: + resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 available-typed-arrays: 1.0.5 call-bind: 1.0.2 es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 - function.prototype.name: 1.1.5 + function.prototype.name: 1.1.6 get-intrinsic: 1.2.1 get-symbol-description: 1.0.0 globalthis: 1.0.3 @@ -7118,35 +6909,44 @@ packages: is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 is-string: 1.0.7 - is-typed-array: 1.1.10 + is-typed-array: 1.1.12 is-weakref: 1.0.2 object-inspect: 1.12.3 object-keys: 1.1.1 object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 typed-array-length: 1.0.4 unbox-primitive: 1.0.2 - which-typed-array: 1.1.9 + which-typed-array: 1.1.11 - /es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + /es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} dependencies: + asynciterator.prototype: 1.0.0 call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + es-set-tostringtag: 2.0.1 + function-bind: 1.1.1 get-intrinsic: 1.2.1 + globalthis: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 has-symbols: 1.0.3 - is-arguments: 1.1.1 - is-map: 2.0.2 - is-set: 2.0.2 - is-string: 1.0.7 - isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 + internal-slot: 1.0.5 + iterator.prototype: 1.1.2 + safe-array-concat: 1.0.1 - /es-module-lexer@1.3.0: - resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} + /es-module-lexer@1.3.1: + resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==} dev: true /es-set-tostringtag@2.0.1: @@ -7197,7 +6997,7 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-config-next@13.1.6(eslint@8.48.0)(typescript@4.9.5): + /eslint-config-next@13.1.6(eslint@8.49.0)(typescript@4.9.5): resolution: {integrity: sha512-0cg7h5wztg/SoLAlxljZ0ZPUQ7i6QKqRiP4M2+MgTZtxWwNKb2JSwNc18nJ6/kXBI6xYvPraTbQSIhAuVw6czw==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -7207,22 +7007,22 @@ packages: optional: true dependencies: '@next/eslint-plugin-next': 13.1.6 - '@rushstack/eslint-patch': 1.3.0 - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) - eslint: 8.48.0 - eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) - eslint-plugin-react: 7.32.2(eslint@8.48.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) + '@rushstack/eslint-patch': 1.4.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + eslint: 8.49.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.49.0) + eslint-plugin-react: 7.33.2(eslint@8.49.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.49.0) typescript: 4.9.5 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color dev: false - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0)(typescript@4.9.5): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.49.0)(typescript@4.9.5): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7232,21 +7032,21 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.22.15 - '@babel/eslint-parser': 7.21.8(@babel/core@7.22.15)(eslint@8.48.0) - '@rushstack/eslint-patch': 1.3.0 - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@babel/core': 7.22.20 + '@babel/eslint-parser': 7.22.15(@babel/core@7.22.20)(eslint@8.49.0) + '@rushstack/eslint-patch': 1.4.0 + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.5) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 - eslint: 8.48.0 - eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) - eslint-plugin-react: 7.32.2(eslint@8.48.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) - eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@4.9.5) + eslint: 8.49.0 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.49.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.49.0)(typescript@4.9.5) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.49.0) + eslint-plugin-react: 7.33.2(eslint@8.49.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.49.0) + eslint-plugin-testing-library: 5.11.1(eslint@8.49.0)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' @@ -7257,17 +7057,17 @@ packages: - supports-color dev: true - /eslint-import-resolver-node@0.3.7: - resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7 - is-core-module: 2.12.1 - resolve: 1.22.2 + is-core-module: 2.13.0 + resolve: 1.22.6 transitivePeerDependencies: - supports-color - /eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0): - resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} + /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0): + resolution: {integrity: sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -7275,17 +7075,20 @@ packages: dependencies: debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.15.0 - eslint: 8.48.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) - get-tsconfig: 4.5.0 - globby: 13.1.3 - is-core-module: 2.12.1 + eslint: 8.49.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + fast-glob: 3.3.1 + get-tsconfig: 4.7.0 + is-core-module: 2.13.0 is-glob: 4.0.3 - synckit: 0.8.5 transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack - supports-color - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -7306,15 +7109,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.5) debug: 3.2.7 - eslint: 8.48.0 - eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) + eslint: 8.49.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) transitivePeerDependencies: - supports-color - /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0): + /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.49.0): resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -7322,15 +7125,15 @@ packages: '@babel/plugin-transform-react-jsx': ^7.14.9 eslint: ^8.1.0 dependencies: - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.15) - '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) - eslint: 8.48.0 + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.20) + eslint: 8.49.0 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): - resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0): + resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -7339,21 +7142,23 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) - array-includes: 3.1.6 - array.prototype.flat: 1.3.1 - array.prototype.flatmap: 1.3.1 + '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.48.0 - eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint: 8.49.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) has: 1.0.3 - is-core-module: 2.12.1 + is-core-module: 2.13.0 is-glob: 4.0.3 minimatch: 3.1.2 - object.values: 1.1.6 - resolve: 1.22.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 semver: 6.3.1 tsconfig-paths: 3.14.2 transitivePeerDependencies: @@ -7361,7 +7166,7 @@ packages: - eslint-import-resolver-webpack - supports-color - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.49.0)(typescript@4.9.5): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -7374,39 +7179,39 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) - '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) - eslint: 8.48.0 + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + eslint: 8.49.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.48.0): + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.49.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.22.3 - aria-query: 5.1.3 - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 + '@babel/runtime': 7.22.15 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.7 - axe-core: 4.7.2 - axobject-query: 3.1.1 + axe-core: 4.8.1 + axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.48.0 + eslint: 8.49.0 has: 1.0.3 - jsx-ast-utils: 3.3.3 + jsx-ast-utils: 3.3.5 language-tags: 1.0.5 minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 + object.entries: 1.1.7 + object.fromentries: 2.0.7 semver: 6.3.1 - /eslint-plugin-prettier@4.2.1(eslint@8.48.0)(prettier@2.8.8): + /eslint-plugin-prettier@4.2.1(eslint@8.49.0)(prettier@2.8.8): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -7417,50 +7222,51 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.48.0 + eslint: 8.49.0 prettier: 2.8.8 prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.48.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.49.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.48.0 + eslint: 8.49.0 - /eslint-plugin-react@7.32.2(eslint@8.48.0): - resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} + /eslint-plugin-react@7.33.2(eslint@8.49.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - array.prototype.tosorted: 1.1.1 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 doctrine: 2.1.0 - eslint: 8.48.0 + es-iterator-helpers: 1.0.15 + eslint: 8.49.0 estraverse: 5.3.0 - jsx-ast-utils: 3.3.3 + jsx-ast-utils: 3.3.5 minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - object.hasown: 1.1.2 - object.values: 1.1.6 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 prop-types: 15.8.1 resolve: 2.0.0-next.4 semver: 6.3.1 - string.prototype.matchall: 4.0.8 + string.prototype.matchall: 4.0.10 - /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@4.9.5): - resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} + /eslint-plugin-testing-library@5.11.1(eslint@8.49.0)(typescript@4.9.5): + resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) - eslint: 8.48.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + eslint: 8.49.0 transitivePeerDependencies: - supports-color - typescript @@ -7490,16 +7296,16 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /eslint@8.48.0: - resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} + /eslint@8.49.0: + resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) - '@eslint-community/regexpp': 4.8.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@eslint-community/regexpp': 4.8.1 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.48.0 - '@humanwhocodes/config-array': 0.11.10 + '@eslint/js': 8.49.0 + '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -7517,7 +7323,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.20.0 + globals: 13.21.0 graphemer: 1.4.0 ignore: 5.2.4 imurmurhash: 0.1.4 @@ -7638,22 +7444,13 @@ packages: setimmediate: 1.0.5 dev: false - /ethereum-cryptography@1.2.0: - resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} - dependencies: - '@noble/hashes': 1.2.0 - '@noble/secp256k1': 1.7.1 - '@scure/bip32': 1.1.5 - '@scure/bip39': 1.1.1 - dev: false - - /ethereum-cryptography@2.0.0: - resolution: {integrity: sha512-g25m4EtfQGjstWgVE1aIz7XYYjf3kH5kG17ULWVB5dH6uLahsoltOhACzSxyDV+fhn4gbR4xRrOXGe6r2uh4Bg==} + /ethereum-cryptography@2.1.2: + resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==} dependencies: - '@noble/curves': 1.0.0 - '@noble/hashes': 1.3.0 - '@scure/bip32': 1.3.0 - '@scure/bip39': 1.2.0 + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 + '@scure/bip32': 1.3.1 + '@scure/bip39': 1.2.1 dev: false /ethereumjs-abi@0.6.8: @@ -7675,44 +7472,6 @@ packages: rlp: 2.2.7 dev: false - /ethers@5.7.2: - resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/contracts': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/json-wallets': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/providers': 5.7.2 - '@ethersproject/random': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/solidity': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/units': 5.7.0 - '@ethersproject/wallet': 5.7.0 - '@ethersproject/web': 5.7.1 - '@ethersproject/wordlists': 5.7.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - /ethjs-util@0.1.6: resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} engines: {node: '>=6.5.0', npm: '>=3'} @@ -7725,6 +7484,10 @@ packages: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: false + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: true + /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -7764,8 +7527,8 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa@7.1.1: - resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: cross-spawn: 7.0.3 @@ -7784,15 +7547,15 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /expect@29.5.0: - resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/expect-utils': 29.5.0 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-util: 29.5.0 + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 dev: true /ext-list@2.2.2: @@ -7834,8 +7597,8 @@ packages: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -7850,8 +7613,8 @@ packages: /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - /fast-redact@3.2.0: - resolution: {integrity: sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==} + /fast-redact@3.3.0: + resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} engines: {node: '>=6'} dev: false @@ -7903,7 +7666,7 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.0.4 + flat-cache: 3.1.0 /file-type@3.9.0: resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} @@ -7980,11 +7743,12 @@ packages: pkg-dir: 4.2.0 dev: true - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} + /flat-cache@3.1.0: + resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + engines: {node: '>=12.0.0'} dependencies: - flatted: 3.2.7 + flatted: 3.2.9 + keyv: 4.5.3 rimraf: 3.0.2 /flat@5.0.2: @@ -7992,8 +7756,8 @@ packages: hasBin: true dev: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} /follow-redirects@1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} @@ -8070,13 +7834,13 @@ packages: /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - /function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 functions-have-names: 1.2.3 /functions-have-names@1.2.3: @@ -8144,8 +7908,10 @@ packages: call-bind: 1.0.2 get-intrinsic: 1.2.1 - /get-tsconfig@4.5.0: - resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} + /get-tsconfig@4.7.0: + resolution: {integrity: sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==} + dependencies: + resolve-pkg-maps: 1.0.0 /git-clone@0.1.0: resolution: {integrity: sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==} @@ -8222,8 +7988,8 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals@13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + /globals@13.21.0: + resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -8232,10 +7998,7 @@ packages: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: - define-properties: 1.2.0 - - /globalyzer@0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + define-properties: 1.2.1 /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -8243,20 +8006,21 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.1 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 - /globby@13.1.3: - resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==} + /globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.1 ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 + dev: true /globby@6.1.0: resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} @@ -8269,9 +8033,6 @@ packages: pinkie-promise: 2.0.1 dev: true - /globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - /google-protobuf@3.21.2: resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} dev: false @@ -8547,18 +8308,25 @@ packages: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 + dev: false /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 - is-typed-array: 1.1.10 + is-typed-array: 1.1.12 /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -8596,8 +8364,8 @@ packages: ci-info: 3.8.0 dev: true - /is-core-module@2.12.1: - resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + /is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} dependencies: has: 1.0.3 @@ -8607,15 +8375,15 @@ packages: dependencies: has-tostringtag: 1.0.0 - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.2 + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -8635,7 +8403,6 @@ packages: engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: false /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} @@ -8678,6 +8445,11 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + /is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + dev: true + /is-obj@2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} @@ -8793,15 +8565,11 @@ packages: text-extensions: 1.9.0 dev: true - /is-typed-array@1.1.10: - resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 + which-typed-array: 1.1.11 /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} @@ -8830,12 +8598,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: false @@ -8859,12 +8621,12 @@ packages: ws: 7.5.9 dev: false - /isomorphic-ws@5.0.0(ws@8.12.0): + /isomorphic-ws@5.0.0(ws@8.13.0): resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} peerDependencies: ws: '*' dependencies: - ws: 8.12.0 + ws: 8.13.0 dev: false /istanbul-lib-coverage@3.2.0: @@ -8876,8 +8638,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.22.15 - '@babel/parser': 7.22.15 + '@babel/core': 7.22.20 + '@babel/parser': 7.22.16 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.1 @@ -8885,12 +8647,25 @@ packages: - supports-color dev: true - /istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} + /istanbul-lib-instrument@6.0.0: + resolution: {integrity: sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.22.20 + '@babel/parser': 7.22.16 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} dependencies: istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 + make-dir: 4.0.0 supports-color: 7.2.0 dev: true @@ -8905,12 +8680,12 @@ packages: - supports-color dev: true - /istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + /istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 + istanbul-lib-report: 3.0.1 dev: true /isurl@1.0.0: @@ -8921,12 +8696,21 @@ packages: is-object: 1.0.2 dev: false - /jayson@3.7.0: - resolution: {integrity: sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==} + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.4 + set-function-name: 2.0.1 + + /jayson@4.1.0: + resolution: {integrity: sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==} engines: {node: '>=8'} hasBin: true dependencies: - '@types/connect': 3.4.35 + '@types/connect': 3.4.36 '@types/node': 12.20.55 '@types/ws': 7.4.7 JSONStream: 1.3.5 @@ -8936,7 +8720,6 @@ packages: eyes: 0.1.8 isomorphic-ws: 4.0.1(ws@7.5.9) json-stringify-safe: 5.0.1 - lodash: 4.17.21 uuid: 8.3.2 ws: 7.5.9 transitivePeerDependencies: @@ -8944,44 +8727,46 @@ packages: - utf-8-validate dev: false - /jest-changed-files@29.5.0: - resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 + jest-util: 29.7.0 p-limit: 3.1.0 dev: true - /jest-circus@29.5.0: - resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.5.0 - '@jest/expect': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.18 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.17.17 chalk: 4.1.2 co: 4.6.0 - dedent: 0.7.0 + dedent: 1.5.1 is-generator-fn: 2.1.0 - jest-each: 29.5.0 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 p-limit: 3.1.0 - pretty-format: 29.5.0 - pure-rand: 6.0.2 + pretty-format: 29.7.0 + pure-rand: 6.0.3 slash: 3.0.0 stack-utils: 2.0.6 transitivePeerDependencies: + - babel-plugin-macros - supports-color dev: true - /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): - resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} + /jest-cli@29.7.0(@types/node@18.17.17)(ts-node@10.9.1): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -8990,26 +8775,26 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0(ts-node@10.9.1) - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 + '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 chalk: 4.1.2 + create-jest: 29.7.0(@types/node@18.17.17)(ts-node@10.9.1) exit: 0.1.2 - graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) - jest-util: 29.5.0 - jest-validate: 29.5.0 - prompts: 2.4.2 + jest-config: 29.7.0(@types/node@18.17.17)(ts-node@10.9.1) + jest-util: 29.7.0 + jest-validate: 29.7.0 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' + - babel-plugin-macros - supports-color - ts-node dev: true - /jest-config@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + /jest-config@29.7.0(@types/node@18.17.17)(ts-node@10.9.1): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -9020,141 +8805,142 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.22.15 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.18 - babel-jest: 29.5.0(@babel/core@7.22.15) + '@babel/core': 7.22.20 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.17.17 + babel-jest: 29.7.0(@babel/core@7.22.20) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 29.5.0 + pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.17.17)(typescript@4.9.5) transitivePeerDependencies: + - babel-plugin-macros - supports-color dev: true - /jest-diff@29.5.0: - resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - diff-sequences: 29.4.3 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 dev: true - /jest-docblock@29.4.3: - resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each@29.5.0: - resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.5.0 + '@jest/types': 29.6.3 chalk: 4.1.2 - jest-get-type: 29.4.3 - jest-util: 29.5.0 - pretty-format: 29.5.0 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 dev: true - /jest-environment-node@29.5.0: - resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.5.0 - '@jest/fake-timers': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.18 - jest-mock: 29.5.0 - jest-util: 29.5.0 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.17.17 + jest-mock: 29.7.0 + jest-util: 29.7.0 dev: true - /jest-get-type@29.4.3: - resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map@29.5.0: - resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.5.0 + '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.6 - '@types/node': 18.16.18 + '@types/node': 18.17.17 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 - jest-worker: 29.5.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 dev: true - /jest-leak-detector@29.5.0: - resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.4.3 - pretty-format: 29.5.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 dev: true - /jest-matcher-utils@29.5.0: - resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 29.5.0 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 dev: true - /jest-message-util@29.5.0: - resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.22.13 - '@jest/types': 29.5.0 + '@jest/types': 29.6.3 '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.11 micromatch: 4.0.5 - pretty-format: 29.5.0 + pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 dev: true - /jest-mock@29.5.0: - resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.5.0 - '@types/node': 18.16.18 - jest-util: 29.5.0 + '@jest/types': 29.6.3 + '@types/node': 18.17.17 + jest-util: 29.7.0 dev: true - /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} peerDependencies: @@ -9163,164 +8949,161 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 29.5.0 + jest-resolve: 29.7.0 dev: true - /jest-regex-util@29.4.3: - resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies@29.5.0: - resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-regex-util: 29.4.3 - jest-snapshot: 29.5.0 + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color dev: true - /jest-resolve@29.5.0: - resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) - jest-util: 29.5.0 - jest-validate: 29.5.0 - resolve: 1.22.2 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.6 resolve.exports: 2.0.2 slash: 3.0.0 dev: true - /jest-runner@29.5.0: - resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.5.0 - '@jest/environment': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.18 + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.17.17 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 - jest-docblock: 29.4.3 - jest-environment-node: 29.5.0 - jest-haste-map: 29.5.0 - jest-leak-detector: 29.5.0 - jest-message-util: 29.5.0 - jest-resolve: 29.5.0 - jest-runtime: 29.5.0 - jest-util: 29.5.0 - jest-watcher: 29.5.0 - jest-worker: 29.5.0 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color dev: true - /jest-runtime@29.5.0: - resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.5.0 - '@jest/fake-timers': 29.5.0 - '@jest/globals': 29.5.0 - '@jest/source-map': 29.4.3 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.18 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.17.17 chalk: 4.1.2 - cjs-module-lexer: 1.2.2 - collect-v8-coverage: 1.0.1 + cjs-module-lexer: 1.2.3 + collect-v8-coverage: 1.0.2 glob: 7.2.3 graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-mock: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /jest-snapshot@29.5.0: - resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 '@babel/generator': 7.22.15 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) - '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.15) - '@babel/traverse': 7.22.15 - '@babel/types': 7.22.15 - '@jest/expect-utils': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/babel__traverse': 7.18.5 - '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.15) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.20) + '@babel/types': 7.22.19 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.20) chalk: 4.1.2 - expect: 29.5.0 + expect: 29.7.0 graceful-fs: 4.2.11 - jest-diff: 29.5.0 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-util: 29.5.0 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 natural-compare: 1.4.0 - pretty-format: 29.5.0 - semver: 7.5.2 + pretty-format: 29.7.0 + semver: 7.5.4 transitivePeerDependencies: - supports-color dev: true - /jest-util@29.5.0: - resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.5.0 - '@types/node': 18.16.18 + '@jest/types': 29.6.3 + '@types/node': 18.17.17 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 picomatch: 2.3.1 dev: true - /jest-validate@29.5.0: - resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.5.0 + '@jest/types': 29.6.3 camelcase: 6.3.0 chalk: 4.1.2 - jest-get-type: 29.4.3 + jest-get-type: 29.6.3 leven: 3.1.0 - pretty-format: 29.5.0 + pretty-format: 29.7.0 dev: true - /jest-watcher@29.5.0: - resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.18 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.17.17 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.5.0 + jest-util: 29.7.0 string-length: 4.0.2 dev: true @@ -9328,7 +9111,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.16.18 + '@types/node': 18.17.17 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -9337,23 +9120,23 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.16.18 + '@types/node': 18.17.17 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest-worker@29.5.0: - resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.16.18 - jest-util: 29.5.0 + '@types/node': 18.17.17 + jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} + /jest@29.7.0(@types/node@18.17.17)(ts-node@10.9.1): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -9362,12 +9145,13 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0(ts-node@10.9.1) - '@jest/types': 29.5.0 + '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-cli: 29.7.0(@types/node@18.17.17)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' + - babel-plugin-macros - supports-color - ts-node dev: true @@ -9407,6 +9191,9 @@ packages: resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} dev: false + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + /json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} dev: true @@ -9469,12 +9256,14 @@ packages: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} - /jsx-ast-utils@3.3.3: - resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.6 + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 object.assign: 4.1.4 + object.values: 1.1.7 /keccak@3.0.3: resolution: {integrity: sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==} @@ -9482,7 +9271,7 @@ packages: requiresBuild: true dependencies: node-addon-api: 2.0.2 - node-gyp-build: 4.6.0 + node-gyp-build: 4.6.1 readable-stream: 3.6.2 dev: false @@ -9492,6 +9281,11 @@ packages: json-buffer: 3.0.0 dev: false + /keyv@4.5.3: + resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + dependencies: + json-buffer: 3.0.1 + /keyvaluestorage-interface@1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} dev: false @@ -9531,14 +9325,14 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 - /libsodium-wrappers@0.7.11: - resolution: {integrity: sha512-SrcLtXj7BM19vUKtQuyQKiQCRJPgbpauzl3s0rSwD+60wtHqSUuqcoawlMDheCJga85nKOQwxNYQxf/CKAvs6Q==} + /libsodium-wrappers@0.7.13: + resolution: {integrity: sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw==} dependencies: - libsodium: 0.7.11 + libsodium: 0.7.13 dev: false - /libsodium@0.7.11: - resolution: {integrity: sha512-WPfJ7sS53I2s4iM58QxY3Inb83/6mjlYgcmZs7DJsvDlnmVUwNinBCi5vBT43P6bHRy01O4zsMU2CoVR6xJ40A==} + /libsodium@0.7.13: + resolution: {integrity: sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw==} dev: false /lilconfig@2.1.0: @@ -9558,21 +9352,18 @@ packages: chalk: 2.4.2 dev: false - /lint-staged@13.2.2: - resolution: {integrity: sha512-71gSwXKy649VrSU09s10uAT0rWCcY3aewhMaHyl2N84oBk4Xs9HgxvUp3AYu+bNsK4NrOYYxvSgg7FyGJ+jGcA==} - engines: {node: ^14.13.1 || >=16.0.0} + /lint-staged@13.3.0: + resolution: {integrity: sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==} + engines: {node: ^16.14.0 || >=18.0.0} hasBin: true dependencies: - chalk: 5.2.0 - cli-truncate: 3.1.0 - commander: 10.0.1 + chalk: 5.3.0 + commander: 11.0.0 debug: 4.3.4(supports-color@8.1.1) - execa: 7.1.1 + execa: 7.2.0 lilconfig: 2.1.0 - listr2: 5.0.8 + listr2: 6.6.1 micromatch: 4.0.5 - normalize-path: 3.0.0 - object-inspect: 1.12.3 pidtree: 0.6.0 string-argv: 0.3.2 yaml: 2.3.1 @@ -9581,45 +9372,43 @@ packages: - supports-color dev: true - /listr2@5.0.8: - resolution: {integrity: sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==} - engines: {node: ^14.13.1 || >=16.0.0} + /listr2@6.6.1: + resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} + engines: {node: '>=16.0.0'} peerDependencies: enquirer: '>= 2.3.0 < 3' peerDependenciesMeta: enquirer: optional: true dependencies: - cli-truncate: 2.1.0 + cli-truncate: 3.1.0 colorette: 2.0.20 - log-update: 4.0.0 - p-map: 4.0.0 + eventemitter3: 5.0.1 + log-update: 5.0.1 rfdc: 1.3.0 - rxjs: 7.8.1 - through: 2.3.8 - wrap-ansi: 7.0.0 + wrap-ansi: 8.1.0 dev: true - /lit-element@3.3.2: - resolution: {integrity: sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ==} + /lit-element@3.3.3: + resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} dependencies: '@lit-labs/ssr-dom-shim': 1.1.1 - '@lit/reactive-element': 1.6.1 - lit-html: 2.7.4 + '@lit/reactive-element': 1.6.3 + lit-html: 2.8.0 dev: false - /lit-html@2.7.4: - resolution: {integrity: sha512-/Jw+FBpeEN+z8X6PJva5n7+0MzCVAH2yypN99qHYYkq8bI+j7I39GH+68Z/MZD6rGKDK9RpzBw7CocfmHfq6+g==} + /lit-html@2.8.0: + resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} dependencies: - '@types/trusted-types': 2.0.3 + '@types/trusted-types': 2.0.4 dev: false - /lit@2.7.5: - resolution: {integrity: sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ==} + /lit@2.8.0: + resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} dependencies: - '@lit/reactive-element': 1.6.1 - lit-element: 3.3.2 - lit-html: 2.7.4 + '@lit/reactive-element': 1.6.3 + lit-element: 3.3.3 + lit-html: 2.8.0 dev: false /load-json-file@4.0.0: @@ -9724,6 +9513,7 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true /log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} @@ -9732,22 +9522,23 @@ packages: chalk: 4.1.2 is-unicode-supported: 0.1.0 - /log-update@4.0.0: - resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} - engines: {node: '>=10'} + /log-update@5.0.1: + resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - ansi-escapes: 4.3.2 - cli-cursor: 3.1.0 - slice-ansi: 4.0.0 - wrap-ansi: 6.2.0 + ansi-escapes: 5.0.0 + cli-cursor: 4.0.0 + slice-ansi: 5.0.0 + strip-ansi: 7.1.0 + wrap-ansi: 8.1.0 dev: true /long@4.0.0: resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} dev: false - /long@5.2.1: - resolution: {integrity: sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==} + /long@5.2.3: + resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} dev: false /loose-envify@1.4.0: @@ -9810,11 +9601,11 @@ packages: pify: 3.0.0 dev: false - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} dependencies: - semver: 6.3.1 + semver: 7.5.4 dev: true /make-error@1.3.6: @@ -9848,7 +9639,7 @@ packages: /media-query-parser@2.0.2: resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.15 dev: false /meow@6.1.1: @@ -9893,6 +9684,10 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + /micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + dev: false + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -10048,7 +9843,7 @@ packages: /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - /next@13.1.6(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0): + /next@13.1.6(@babel/core@7.22.20)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==} engines: {node: '>=14.6.0'} hasBin: true @@ -10068,11 +9863,11 @@ packages: dependencies: '@next/env': 13.1.6 '@swc/helpers': 0.4.14 - caniuse-lite: 1.0.30001527 + caniuse-lite: 1.0.30001538 postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.22.15)(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.22.20)(react@18.2.0) optionalDependencies: '@next/swc-android-arm-eabi': 13.1.6 '@next/swc-android-arm64': 13.1.6 @@ -10096,8 +9891,8 @@ packages: resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} dev: false - /node-fetch@2.6.11: - resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -10107,8 +9902,8 @@ packages: dependencies: whatwg-url: 5.0.0 - /node-gyp-build@4.6.0: - resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} + /node-gyp-build@4.6.1: + resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} hasBin: true dev: false @@ -10123,8 +9918,8 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.2 - semver: 5.7.1 + resolve: 1.22.6 + semver: 5.7.2 validate-npm-package-license: 3.0.4 dev: true @@ -10133,8 +9928,8 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.12.1 - semver: 7.5.2 + is-core-module: 2.13.0 + semver: 7.5.4 validate-npm-package-license: 3.0.4 dev: true @@ -10181,13 +9976,6 @@ packages: /object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} - /object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -10197,39 +9985,47 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 + define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - /object.entries@1.1.6: - resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + /object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 - /object.fromentries@2.0.6: - resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + get-intrinsic: 1.2.1 - /object.hasown@1.1.2: - resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + /object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} dependencies: - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 - /object.values@1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 /on-exit-leak-free@0.2.0: resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} @@ -10253,14 +10049,6 @@ packages: mimic-fn: 4.0.0 dev: true - /open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -10279,7 +10067,7 @@ packages: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.9.0 + cli-spinners: 2.9.1 is-interactive: 1.0.0 is-unicode-supported: 0.1.0 log-symbols: 4.1.0 @@ -10357,13 +10145,6 @@ packages: engines: {node: '>=6'} dev: true - /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - dependencies: - aggregate-error: 3.1.0 - dev: true - /p-timeout@2.0.1: resolution: {integrity: sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==} engines: {node: '>=4'} @@ -10510,7 +10291,7 @@ packages: hasBin: true dependencies: atomic-sleep: 1.0.0 - fast-redact: 3.2.0 + fast-redact: 3.3.0 on-exit-leak-free: 0.2.0 pino-abstract-transport: 0.5.0 pino-std-serializers: 4.0.0 @@ -10522,8 +10303,8 @@ packages: thread-stream: 0.15.2 dev: false - /pirates@4.0.5: - resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} dev: true @@ -10548,12 +10329,12 @@ packages: source-map-js: 1.0.2 dev: false - /preact@10.14.1: - resolution: {integrity: sha512-4XDSnUisk3YFBb3p9WeKeH1mKoxdFUsaXcvxs9wlpYR1wax/TWJVqhwmIWbByX0h7jMEJH6Zc5J6jqc58FKaNQ==} + /preact@10.17.1: + resolution: {integrity: sha512-X9BODrvQ4Ekwv9GURm9AKAGaomqXmip7NQTZgY7gcNmr7XE83adOMJvd3N42id1tMFU7ojiynRsYnY6/BRFxLA==} dev: false - /preferred-pm@3.0.3: - resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} + /preferred-pm@3.1.2: + resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} engines: {node: '>=10'} dependencies: find-up: 5.0.0 @@ -10584,11 +10365,11 @@ packages: hasBin: true dev: true - /pretty-format@29.5.0: - resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.4.3 + '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 dev: true @@ -10636,7 +10417,7 @@ packages: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 18.16.18 + '@types/node': 18.17.17 long: 4.0.0 dev: false @@ -10656,8 +10437,8 @@ packages: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} - /pure-rand@6.0.2: - resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} + /pure-rand@6.0.3: + resolution: {integrity: sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==} dev: true /q@1.5.1: @@ -10757,7 +10538,7 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /react-remove-scroll-bar@2.3.4(@types/react@18.2.12)(react@18.2.0): + /react-remove-scroll-bar@2.3.4(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: @@ -10767,13 +10548,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.12 + '@types/react': 18.2.22 react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.12)(react@18.2.0) - tslib: 2.5.2 + react-style-singleton: 2.2.1(@types/react@18.2.22)(react@18.2.0) + tslib: 2.6.2 dev: false - /react-remove-scroll@2.5.4(@types/react@18.2.12)(react@18.2.0): + /react-remove-scroll@2.5.4(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==} engines: {node: '>=10'} peerDependencies: @@ -10783,16 +10564,16 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.12 + '@types/react': 18.2.22 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.12)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.12)(react@18.2.0) - tslib: 2.5.2 - use-callback-ref: 1.3.0(@types/react@18.2.12)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.12)(react@18.2.0) + react-remove-scroll-bar: 2.3.4(@types/react@18.2.22)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.22)(react@18.2.0) + tslib: 2.6.2 + use-callback-ref: 1.3.0(@types/react@18.2.22)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.22)(react@18.2.0) dev: false - /react-style-singleton@2.2.1(@types/react@18.2.12)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -10802,11 +10583,11 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.12 + '@types/react': 18.2.22 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 - tslib: 2.5.2 + tslib: 2.6.2 dev: false /react@18.2.0: @@ -10894,14 +10675,14 @@ packages: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} dependencies: - resolve: 1.22.2 + resolve: 1.22.6 dev: false /rechoir@0.8.0: resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} engines: {node: '>= 10.13.0'} dependencies: - resolve: 1.22.2 + resolve: 1.22.6 dev: true /redent@3.0.0: @@ -10916,8 +10697,19 @@ packages: resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} dev: false - /regenerate-unicode-properties@10.1.0: - resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} + /reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + get-intrinsic: 1.2.1 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} engines: {node: '>=4'} dependencies: regenerate: 1.4.2 @@ -10927,22 +10719,22 @@ packages: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} dev: true - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} - /regenerator-transform@0.15.1: - resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.15 dev: true - /regexp.prototype.flags@1.5.0: - resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 + define-properties: 1.2.1 + set-function-name: 2.0.1 /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} @@ -10950,7 +10742,7 @@ packages: dependencies: '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.0 + regenerate-unicode-properties: 10.1.1 regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 @@ -10998,16 +10790,19 @@ packages: global-dirs: 0.1.1 dev: true + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + /resolve.exports@2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} dev: true - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + /resolve@1.22.6: + resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} hasBin: true dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -11015,7 +10810,7 @@ packages: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -11031,6 +10826,15 @@ packages: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 + dev: false + + /restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -11082,7 +10886,7 @@ packages: read-pkg: 3.0.0 rollup: 2.79.1 safe-resolve: 1.0.0 - semver: 5.7.1 + semver: 5.7.2 dev: true /rollup-plugin-polyfill-node@0.10.2(rollup@2.79.1): @@ -11104,7 +10908,7 @@ packages: jest-worker: 26.6.2 rollup: 2.79.1 serialize-javascript: 4.0.0 - terser: 5.19.2 + terser: 5.19.4 dev: true /rollup@2.79.1: @@ -11115,13 +10919,13 @@ packages: fsevents: 2.3.3 dev: true - /rpc-websockets@7.5.1: - resolution: {integrity: sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==} + /rpc-websockets@7.6.0: + resolution: {integrity: sha512-Jgcs8q6t8Go98dEulww1x7RysgTkzpCMelVxZW4hvuyFtOGpeUz9prpr2KjUa/usqxgFCd9Tu3+yhHEP9GVmiQ==} dependencies: - '@babel/runtime': 7.22.3 + '@babel/runtime': 7.22.15 eventemitter3: 4.0.7 uuid: 8.3.2 - ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) + ws: 8.14.1(bufferutil@4.0.7)(utf-8-validate@5.0.10) optionalDependencies: bufferutil: 4.0.7 utf-8-validate: 5.0.10 @@ -11144,11 +10948,14 @@ packages: tslib: 1.14.1 dev: false - /rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} dependencies: - tslib: 2.5.2 - dev: true + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + isarray: 2.0.5 /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -11190,7 +10997,7 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/json-schema': 7.0.12 + '@types/json-schema': 7.0.13 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) dev: true @@ -11199,7 +11006,7 @@ packages: resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} engines: {node: '>= 12.13.0'} dependencies: - '@types/json-schema': 7.0.12 + '@types/json-schema': 7.0.13 ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) ajv-keywords: 5.1.0(ajv@8.12.0) @@ -11216,7 +11023,7 @@ packages: dependencies: elliptic: 6.5.4 node-addon-api: 2.0.2 - node-gyp-build: 4.6.0 + node-gyp-build: 4.6.1 dev: false /seek-bzip@1.0.6: @@ -11226,8 +11033,8 @@ packages: commander: 2.20.3 dev: false - /semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true dev: true @@ -11235,8 +11042,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - /semver@7.5.2: - resolution: {integrity: sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==} + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} hasBin: true dependencies: @@ -11263,6 +11070,14 @@ packages: /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.0 + /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} dev: false @@ -11355,23 +11170,6 @@ packages: /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} - - /slice-ansi@3.0.0: - resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - - /slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 dev: true /slice-ansi@5.0.0: @@ -11387,8 +11185,8 @@ packages: engines: {node: '>=6'} hasBin: true dependencies: - array.prototype.flat: 1.3.1 - breakword: 1.0.5 + array.prototype.flat: 1.3.2 + breakword: 1.0.6 grapheme-splitter: 1.0.4 strip-ansi: 6.0.1 wcwidth: 1.0.1 @@ -11461,7 +11259,7 @@ packages: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 + spdx-license-ids: 3.0.14 dev: true /spdx-exceptions@2.3.0: @@ -11472,11 +11270,11 @@ packages: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 + spdx-license-ids: 3.0.14 dev: true - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + /spdx-license-ids@3.0.14: + resolution: {integrity: sha512-U0eS5wcpu/O2/QZk6PcAMOA8H3ZuvRe4mFHA3Q+LNl1SRDmfQ+mD3RoD6tItqnvqubJ32m/zV2Z/ikSmxccD1Q==} dev: true /split-on-first@1.1.0: @@ -11506,12 +11304,6 @@ packages: escape-string-regexp: 2.0.0 dev: true - /stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} - dependencies: - internal-slot: 1.0.5 - /stream-browserify@3.0.0: resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} dependencies: @@ -11573,39 +11365,40 @@ packages: strip-ansi: 7.1.0 dev: true - /string.prototype.matchall@4.0.8: - resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + /string.prototype.matchall@4.0.10: + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 get-intrinsic: 1.2.1 has-symbols: 1.0.3 internal-slot: 1.0.5 - regexp.prototype.flags: 1.5.0 + regexp.prototype.flags: 1.5.1 + set-function-name: 2.0.1 side-channel: 1.0.4 - /string.prototype.trim@1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 - /string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 - /string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -11685,7 +11478,7 @@ packages: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: false - /styled-jsx@5.1.1(@babel/core@7.22.15)(react@18.2.0): + /styled-jsx@5.1.1(@babel/core@7.22.20)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -11698,7 +11491,7 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 client-only: 0.0.1 react: 18.2.0 dev: false @@ -11739,13 +11532,6 @@ packages: engines: {node: '>=0.10'} dev: false - /synckit@0.8.5: - resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} - engines: {node: ^14.18.0 || >=16.0.0} - dependencies: - '@pkgr/utils': 2.3.1 - tslib: 2.5.2 - /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -11768,7 +11554,7 @@ packages: engines: {node: '>=8'} dev: true - /terser-webpack-plugin@5.3.9(webpack@5.88.1): + /terser-webpack-plugin@5.3.9(webpack@5.88.2): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -11788,12 +11574,12 @@ packages: jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 - terser: 5.19.2 - webpack: 5.88.1(webpack-cli@5.1.4) + terser: 5.19.4 + webpack: 5.88.2(webpack-cli@5.1.4) dev: true - /terser@5.19.2: - resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} + /terser@5.19.4: + resolution: {integrity: sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==} engines: {node: '>=10'} hasBin: true dependencies: @@ -11844,12 +11630,6 @@ packages: engines: {node: '>=0.10.0'} dev: false - /tiny-glob@0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - dependencies: - globalyzer: 0.1.0 - globrex: 0.1.2 - /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -11893,8 +11673,8 @@ packages: escape-string-regexp: 1.0.5 dev: false - /ts-jest@29.1.0(@babel/core@7.22.15)(jest@29.5.0)(typescript@4.9.5): - resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} + /ts-jest@29.1.1(@babel/core@7.22.20)(jest@29.7.0)(typescript@4.9.5): + resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -11914,20 +11694,20 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.22.20 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) - jest-util: 29.5.0 + jest: 29.7.0(@types/node@18.17.17)(ts-node@10.9.1) + jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.5.2 + semver: 7.5.4 typescript: 4.9.5 yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.16.18)(typescript@4.9.5): + /ts-node@10.9.1(@types/node@18.17.17)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -11945,8 +11725,8 @@ packages: '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 18.16.18 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.17.17 acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -11969,8 +11749,8 @@ packages: /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - /tslib@2.5.2: - resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==} + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} /tsutils@3.21.0(typescript@4.9.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -12055,12 +11835,44 @@ packages: engines: {node: '>=8'} dev: true + /type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: true + + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.2 for-each: 0.3.3 - is-typed-array: 1.1.10 + is-typed-array: 1.1.12 /typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} @@ -12167,7 +11979,7 @@ packages: engines: {node: '>= 4'} dev: false - /use-callback-ref@1.3.0(@types/react@18.2.12)(react@18.2.0): + /use-callback-ref@1.3.0(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: @@ -12177,12 +11989,12 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.12 + '@types/react': 18.2.22 react: 18.2.0 - tslib: 2.5.2 + tslib: 2.6.2 dev: false - /use-sidecar@1.1.2(@types/react@18.2.12)(react@18.2.0): + /use-sidecar@1.1.2(@types/react@18.2.22)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -12192,10 +12004,10 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.12 + '@types/react': 18.2.22 detect-node-es: 1.1.0 react: 18.2.0 - tslib: 2.5.2 + tslib: 2.6.2 dev: false /use-sync-external-store@1.2.0(react@18.2.0): @@ -12211,7 +12023,7 @@ packages: engines: {node: '>=6.14.2'} requiresBuild: true dependencies: - node-gyp-build: 4.6.0 + node-gyp-build: 4.6.1 dev: false /util-deprecate@1.0.2: @@ -12223,8 +12035,8 @@ packages: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 - is-typed-array: 1.1.10 - which-typed-array: 1.1.9 + is-typed-array: 1.1.12 + which-typed-array: 1.1.11 dev: false /uuid@8.3.2: @@ -12259,15 +12071,19 @@ packages: builtins: 5.0.1 dev: false - /valtio@1.10.6(react@18.2.0): - resolution: {integrity: sha512-SxN1bHUmdhW6V8qsQTpCgJEwp7uHbntuH0S9cdLQtiohuevwBksbpXjwj5uDMA7bLwg1WKyq9sEpZrx3TIMrkA==} + /valtio@1.11.2(@types/react@18.2.22)(react@18.2.0): + resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} engines: {node: '>=12.20.0'} peerDependencies: + '@types/react': '>=16.8' react: '>=16.8' peerDependenciesMeta: + '@types/react': + optional: true react: optional: true dependencies: + '@types/react': 18.2.22 proxy-compare: 2.5.1 react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) @@ -12278,27 +12094,32 @@ packages: engines: {node: '>= 0.8'} dev: false - /viem@1.0.6(typescript@4.9.5): - resolution: {integrity: sha512-NOVDREj8bWHajuP5Nw6edd0v3auuGWvLHGScmo9OOt1l7g3f1xMQxPA6JlhNmWXzoHjzzxt/5SorBn2DQ6N6Sg==} + /viem@1.10.14(typescript@4.9.5): + resolution: {integrity: sha512-GRwFXLFr+/7+7nYYkABgHom3zMIE3DdxZ/DP78QlYWUanpjUV5IebxMOm6pfKD+ZAj3vf9YPAmz+WogjiUgDWw==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@adraffy/ens-normalize': 1.9.0 - '@noble/curves': 1.0.0 - '@noble/hashes': 1.3.0 - '@scure/bip32': 1.3.0 - '@scure/bip39': 1.2.0 - '@wagmi/chains': 1.1.0(typescript@4.9.5) - abitype: 0.8.7(typescript@4.9.5) - isomorphic-ws: 5.0.0(ws@8.12.0) - ws: 8.12.0 + '@adraffy/ens-normalize': 1.9.4 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/bip32': 1.3.2 + '@scure/bip39': 1.2.1 + '@types/ws': 8.5.5 + abitype: 0.9.8(typescript@4.9.5) + isomorphic-ws: 5.0.0(ws@8.13.0) + typescript: 4.9.5 + ws: 8.13.0 transitivePeerDependencies: - bufferutil - - typescript - utf-8-validate - zod dev: false - /wagmi@1.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(viem@1.0.6): - resolution: {integrity: sha512-VSSBEVDMZAWIcWTlewC1XypHsWa1FdkdYXWdgu5pqTCqnW6JKWGsR5TbQY3poCIQoC7B2okisElZT2oVSYbA5Q==} + /wagmi@1.4.2(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(viem@1.10.14): + resolution: {integrity: sha512-Cxu0LatB44stqHoqdc6dgsTb9woYH1bEquJFq9PbTkePmnRCvceAD4aFUREUTaBWzIBcouhFlanWweDzEnb3mg==} peerDependencies: react: '>=17.0.0' typescript: '>=5.0.4' @@ -12307,19 +12128,19 @@ packages: typescript: optional: true dependencies: - '@tanstack/query-sync-storage-persister': 4.29.7 - '@tanstack/react-query': 4.29.7(react-dom@18.2.0)(react@18.2.0) - '@tanstack/react-query-persist-client': 4.29.7(@tanstack/react-query@4.29.7) - '@wagmi/core': 1.2.0(react@18.2.0)(typescript@4.9.5)(viem@1.0.6) + '@tanstack/query-sync-storage-persister': 4.35.3 + '@tanstack/react-query': 4.35.3(react-dom@18.2.0)(react@18.2.0) + '@tanstack/react-query-persist-client': 4.35.5(@tanstack/react-query@4.35.3) + '@wagmi/core': 1.4.2(@types/react@18.2.22)(react@18.2.0)(typescript@4.9.5)(viem@1.10.14) abitype: 0.8.7(typescript@4.9.5) react: 18.2.0 typescript: 4.9.5 use-sync-external-store: 1.2.0(react@18.2.0) - viem: 1.0.6(typescript@4.9.5) + viem: 1.10.14(typescript@4.9.5) transitivePeerDependencies: - '@react-native-async-storage/async-storage' + - '@types/react' - bufferutil - - debug - encoding - immer - lokijs @@ -12352,7 +12173,7 @@ packages: /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - /webpack-cli@5.1.4(webpack@5.88.1): + /webpack-cli@5.1.4(webpack@5.88.2): resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} engines: {node: '>=14.15.0'} hasBin: true @@ -12370,9 +12191,9 @@ packages: optional: true dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.88.1) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.88.1) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.88.1) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.88.2) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.88.2) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.88.2) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.3 @@ -12381,7 +12202,7 @@ packages: import-local: 3.1.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.88.1(webpack-cli@5.1.4) + webpack: 5.88.2(webpack-cli@5.1.4) webpack-merge: 5.9.0 dev: true @@ -12398,8 +12219,8 @@ packages: engines: {node: '>=10.13.0'} dev: true - /webpack@5.88.1(webpack-cli@5.1.4): - resolution: {integrity: sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==} + /webpack@5.88.2(webpack-cli@5.1.4): + resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -12418,7 +12239,7 @@ packages: browserslist: 4.21.10 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 - es-module-lexer: 1.3.0 + es-module-lexer: 1.3.1 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -12429,9 +12250,9 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(webpack@5.88.1) + terser-webpack-plugin: 5.3.9(webpack@5.88.2) watchpack: 2.4.0 - webpack-cli: 5.1.4(webpack@5.88.1) + webpack-cli: 5.1.4(webpack@5.88.2) webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -12454,6 +12275,23 @@ packages: is-string: 1.0.7 is-symbol: 1.0.4 + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.11 + /which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: @@ -12473,8 +12311,8 @@ packages: path-exists: 4.0.0 dev: true - /which-typed-array@1.1.9: - resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + /which-typed-array@1.1.11: + resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 @@ -12482,7 +12320,6 @@ packages: for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 - is-typed-array: 1.1.10 /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} @@ -12527,6 +12364,15 @@ packages: strip-ansi: 6.0.1 dev: true + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -12538,19 +12384,6 @@ packages: signal-exit: 3.0.7 dev: true - /ws@7.4.6: - resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false - /ws@7.5.9: resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} @@ -12564,8 +12397,8 @@ packages: optional: true dev: false - /ws@8.12.0: - resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} + /ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -12577,8 +12410,8 @@ packages: optional: true dev: false - /ws@8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10): - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + /ws@8.14.1(bufferutil@4.0.7)(utf-8-validate@5.0.10): + resolution: {integrity: sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -12691,7 +12524,7 @@ packages: require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 - yargs-parser: 20.2.9 + yargs-parser: 20.2.4 dev: true /yargs@17.7.2: @@ -12723,18 +12556,22 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - /zustand@4.3.8(react@18.2.0): - resolution: {integrity: sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg==} + /zustand@4.4.1(@types/react@18.2.22)(react@18.2.0): + resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} engines: {node: '>=12.7.0'} peerDependencies: + '@types/react': '>=16.8' immer: '>=9.0' react: '>=16.8' peerDependenciesMeta: + '@types/react': + optional: true immer: optional: true react: optional: true dependencies: + '@types/react': 18.2.22 react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) dev: false From 1ed0d32064dea1fe40044eec74b3eed3dfeec9dc Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 26 Sep 2023 01:14:58 +0800 Subject: [PATCH 259/433] Docs site ! (#350) * feat: Docs init * feat: Docs init * chore: Update README * docs: Update Docs * chore: Update deps * chore: Update docs * chore: Update docs * chore: Update * docs: Update * docs: Update * docs: Update * docs: Update Crosschain doc * chore: Update docs --- README.md | 8 +- doc-site/.gitignore | 20 + doc-site/README.md | 41 + doc-site/babel.config.js | 3 + doc-site/docs/api/_category_.json | 14 + doc-site/docs/api/account.mdx | 114 + doc-site/docs/api/bucket.mdx | 290 + doc-site/docs/api/crosschain.mdx | 156 + doc-site/docs/api/feegrant.mdx | 90 + doc-site/docs/api/gashub.mdx | 27 + doc-site/docs/api/group.mdx | 275 + doc-site/docs/api/object.mdx | 340 + doc-site/docs/api/overview.mdx | 21 + doc-site/docs/api/payment.mdx | 108 + doc-site/docs/api/sp.mdx | 106 + doc-site/docs/api/virtualGroup.mdx | 68 + doc-site/docs/client/_category_.json | 14 + doc-site/docs/client/greenfield.mdx | 38 + doc-site/docs/client/query-client.mdx | 122 + doc-site/docs/client/sp-client.mdx | 101 + doc-site/docs/client/tx-client.mdx | 120 + doc-site/docs/constants/msg-type-url.mdx | 9 + doc-site/docs/getting-started/_category_.json | 14 + doc-site/docs/getting-started/install.mdx | 35 + doc-site/docs/getting-started/overview.md | 42 + doc-site/docs/getting-started/quick-start.md | 16 + doc-site/docs/types/_category_.json | 14 + doc-site/docs/types/action.mdx | 26 + doc-site/docs/types/coin.mdx | 15 + doc-site/docs/types/pagination.mdx | 41 + doc-site/docs/types/principal.mdx | 16 + doc-site/docs/types/redundancy.mdx | 15 + doc-site/docs/types/timestamp.mdx | 27 + doc-site/docs/types/visibility.mdx | 23 + doc-site/docusaurus.config.js | 139 + doc-site/package.json | 43 + doc-site/sidebars.js | 31 + .../src/components/account/getAccount.tsx | 7 + .../src/components/snippers/api-types.tsx | 21 + doc-site/src/components/snippers/tx.mdx | 6 + doc-site/src/css/custom.css | 30 + doc-site/static/.nojekyll | 0 .../static/img/docusaurus-social-card.jpg | Bin 0 -> 55746 bytes doc-site/static/img/docusaurus.png | Bin 0 -> 5142 bytes doc-site/static/img/favicon.ico | Bin 0 -> 4286 bytes doc-site/static/img/logo.svg | 1 + .../static/img/undraw_docusaurus_mountain.svg | 171 + .../static/img/undraw_docusaurus_react.svg | 170 + .../static/img/undraw_docusaurus_tree.svg | 40 + .../src/components/group/delete/index.tsx | 8 +- packages/js-sdk/src/api/account.ts | 11 +- packages/js-sdk/src/api/bucket.ts | 11 +- packages/js-sdk/src/api/group.ts | 3 + packages/js-sdk/src/api/objectt.ts | 5 +- packages/js-sdk/src/clients/queryclient.ts | 10 +- pnpm-lock.yaml | 10338 ++++++++++++---- pnpm-workspace.yaml | 1 + 57 files changed, 10826 insertions(+), 2589 deletions(-) create mode 100644 doc-site/.gitignore create mode 100644 doc-site/README.md create mode 100644 doc-site/babel.config.js create mode 100644 doc-site/docs/api/_category_.json create mode 100644 doc-site/docs/api/account.mdx create mode 100644 doc-site/docs/api/bucket.mdx create mode 100644 doc-site/docs/api/crosschain.mdx create mode 100644 doc-site/docs/api/feegrant.mdx create mode 100644 doc-site/docs/api/gashub.mdx create mode 100644 doc-site/docs/api/group.mdx create mode 100644 doc-site/docs/api/object.mdx create mode 100644 doc-site/docs/api/overview.mdx create mode 100644 doc-site/docs/api/payment.mdx create mode 100644 doc-site/docs/api/sp.mdx create mode 100644 doc-site/docs/api/virtualGroup.mdx create mode 100644 doc-site/docs/client/_category_.json create mode 100644 doc-site/docs/client/greenfield.mdx create mode 100644 doc-site/docs/client/query-client.mdx create mode 100644 doc-site/docs/client/sp-client.mdx create mode 100644 doc-site/docs/client/tx-client.mdx create mode 100644 doc-site/docs/constants/msg-type-url.mdx create mode 100644 doc-site/docs/getting-started/_category_.json create mode 100644 doc-site/docs/getting-started/install.mdx create mode 100644 doc-site/docs/getting-started/overview.md create mode 100644 doc-site/docs/getting-started/quick-start.md create mode 100644 doc-site/docs/types/_category_.json create mode 100644 doc-site/docs/types/action.mdx create mode 100644 doc-site/docs/types/coin.mdx create mode 100644 doc-site/docs/types/pagination.mdx create mode 100644 doc-site/docs/types/principal.mdx create mode 100644 doc-site/docs/types/redundancy.mdx create mode 100644 doc-site/docs/types/timestamp.mdx create mode 100644 doc-site/docs/types/visibility.mdx create mode 100644 doc-site/docusaurus.config.js create mode 100644 doc-site/package.json create mode 100644 doc-site/sidebars.js create mode 100644 doc-site/src/components/account/getAccount.tsx create mode 100644 doc-site/src/components/snippers/api-types.tsx create mode 100644 doc-site/src/components/snippers/tx.mdx create mode 100644 doc-site/src/css/custom.css create mode 100644 doc-site/static/.nojekyll create mode 100644 doc-site/static/img/docusaurus-social-card.jpg create mode 100644 doc-site/static/img/docusaurus.png create mode 100644 doc-site/static/img/favicon.ico create mode 100644 doc-site/static/img/logo.svg create mode 100644 doc-site/static/img/undraw_docusaurus_mountain.svg create mode 100644 doc-site/static/img/undraw_docusaurus_react.svg create mode 100644 doc-site/static/img/undraw_docusaurus_tree.svg diff --git a/README.md b/README.md index 7ca91481..2b892c56 100644 --- a/README.md +++ b/README.md @@ -8,10 +8,10 @@ You can find some package documentation below: | Package | Description | Version | | --- | --- | --- | -| [@bnb-chain/greenfield-js-sdk](./packages/chain-sdk/README.md) | A client library for Greenfield Chain | ![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-js-sdk?color=blue) | -| [@bnb-chain/greenfiled-file-handle](./packages/file-handle/README.md) | WASM module that handle file, such as `checksums` | ![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfiled-file-handle?color=blue) | -| [@bnb-chain/greenfield-zk-crypto](./packages/zk-crypto/README.md) | WASM module about sign crypto | ![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-zk-crypto?color=blue) | -| [@bnb-chain/create-gnfd-app](./packages/create-gnfd-app/README.md) | Create Greenfield App Quickly | ![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fcreate-gnfd-app?color=blue) | +| [@bnb-chain/greenfield-js-sdk](./packages/js-sdk/README.md) | A client library for Greenfield Chain | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-js-sdk?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-js-sdk) | +| [@bnb-chain/greenfiled-file-handle](./packages/file-handle/README.md) | WASM module that handle file, such as `checksums` | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfiled-file-handle?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfiled-file-handle) | +| [@bnb-chain/greenfield-zk-crypto](./packages/zk-crypto/README.md) | WASM module about sign crypto | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-zk-crypto?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-zk-crypto) | +| [@bnb-chain/create-gnfd-app](./packages/create-gnfd-app/README.md) | Create Greenfield App Quickly | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fcreate-gnfd-app?color=blue)](https://www.npmjs.com/package/@bnb-chain/create-gnfd-app) | ## Online Examples diff --git a/doc-site/.gitignore b/doc-site/.gitignore new file mode 100644 index 00000000..b2d6de30 --- /dev/null +++ b/doc-site/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/doc-site/README.md b/doc-site/README.md new file mode 100644 index 00000000..aaba2fa1 --- /dev/null +++ b/doc-site/README.md @@ -0,0 +1,41 @@ +# Website + +This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. + +### Installation + +``` +$ yarn +``` + +### Local Development + +``` +$ yarn start +``` + +This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. + +### Build + +``` +$ yarn build +``` + +This command generates static content into the `build` directory and can be served using any static contents hosting service. + +### Deployment + +Using SSH: + +``` +$ USE_SSH=true yarn deploy +``` + +Not using SSH: + +``` +$ GIT_USER= yarn deploy +``` + +If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/doc-site/babel.config.js b/doc-site/babel.config.js new file mode 100644 index 00000000..e00595da --- /dev/null +++ b/doc-site/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [require.resolve('@docusaurus/core/lib/babel/preset')], +}; diff --git a/doc-site/docs/api/_category_.json b/doc-site/docs/api/_category_.json new file mode 100644 index 00000000..549674e8 --- /dev/null +++ b/doc-site/docs/api/_category_.json @@ -0,0 +1,14 @@ +{ + "position": 3, + "label": "API", + "collapsible": true, + "collapsed": true, + "className": "red", + "link": { + "type": "generated-index", + "title": "apis" + }, + "customProps": { + "description": "" + } +} \ No newline at end of file diff --git a/doc-site/docs/api/account.mdx b/doc-site/docs/api/account.mdx new file mode 100644 index 00000000..89307fb5 --- /dev/null +++ b/doc-site/docs/api/account.mdx @@ -0,0 +1,114 @@ +--- +id: account +title: 'Account' +--- + +import Tx from '../../src/components/snippers/tx.mdx'; +import ApiTypes from '../../src/components/snippers/api-types.tsx'; + +## getAccount + +Retrieve on-chain account information for a given address. + +| params | description | +| ------- | -------------------------------- | +| address | The given address for retrieving | + +```jsx title="example" +await client.getAccount('0x0000000000000000000000000000000000000001'); +``` + +## getAccountBalance + +Get the bank balance for the given address. + +| params | description | +| ------- | ------------------------------------ | +| address | the address to query balances for | +| denom | the coin denom to query balances for | + +```jsx title="example" +await client.getAccountBalance({ + address: '0x0000000000000000000000000000000000000001', + denom: 'BNB', +}); +``` + +## getModuleAccounts + +Get all module accounts. + +```jsx title="example" +await client.getModuleAccounts(); +``` + +## getModuleAccountByName + +Get module account by module name. + +| params | description | +| ------ | --------------------------------- | +| name | the address to query balances for | + +```jsx title="example" +await client.getModuleAccountByName('module_name'); +``` + +## getPaymentAccountsByOwner + +Get all payment accounts owned by the given owner address. + +| params | description | +| ------- | ---------------------------------------------- | +| address | The given owner account address for retrieving | + +```jsx title="example" +await client.getPaymentAccountsByOwner('0x0000000000000000000000000000000000000001'); +``` + +## createPaymentAccount + + + +Create a new payment account for the given address. + +The payment account is used to pay for the storage and read quota fee of objects. When you need to +pay for different buckets separately, you can create different payment accounts to do so. Note that +the payment account does not have a private key, and only the owner of the payment account can +withdraw funds from it. Once the owner revokes permission for withdrawal, the funds in the payment +account can only be utilized to cover storage and read quota fees. + +| params | description | +| ------- | -------------------------------------------- | +| creator | The owner address of the new payment account | + +```jsx title="example" +const tx = await client.account.createPaymentAccount({ + creator: address, +}); +``` + +## transfer + + + +Transfer BNB from sender to receiver. + +| params | description | +| ----------- | ------------------------------------ | +| fromAddress | The address who will send the BNB | +| toAddress | The address who will receive the BNB | +| amount | transfer coin | + +```jsx title="example" +const tx = await client.account.transfer({ + fromAddress: '0x0000000000000000000000000000000000000000', + toAddress: '0x0000000000000000000000000000000000000001', + amount: [ + { + denom: 'BNB', + amount: '1000000000', + }, + ], +}); +``` diff --git a/doc-site/docs/api/bucket.mdx b/doc-site/docs/api/bucket.mdx new file mode 100644 index 00000000..b3e7a457 --- /dev/null +++ b/doc-site/docs/api/bucket.mdx @@ -0,0 +1,290 @@ +--- +id: bucket +title: 'Bucket' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; + +## createBucket + +Create a new bucket in greenfield. This API sends a request to the storage provider to get approval +for creating bucket and sends the createBucket transaction to the Greenfield. + +| params | description | +| ---------------- | ------------------------------------------------------- | +| bucketName | bucket name | +| creator | creator account address | +| visibility | [VisibilityType](/types/visibility) | +| chargedReadQuota | defines the traffic quota that you read from primary sp | +| spInfo | primary sp address | +| paymentAddress | payment address | +| authType | [AuthType](/client/sp-client#authtype) | + +```jsx title="example" +const tx = await client.bucket.createBucket( + { + bucketName: 'bucket_name', + creator: address, + visibility: 'VISIBILITY_TYPE_PUBLIC_READ', + chargedReadQuota: '0', + spInfo: { + primarySpAddress: 'primary_sp_address', + }, + paymentAddress: address, + }, + { + type: 'EDDSA', + domain: window.location.origin, + seed: offChainData.seedString, + address, + }, +); +``` + +## deleteBucket + +Send DeleteBucket msg to greenfield chain and return txn hash. + +| params | description | +| ---------- | ------------------------------------ | +| bucketName | The name of the bucket to be deleted | +| operator | operator account address | + +```jsx title="example" +const tx = await client.bucket.deleteBucket({ + bucketName: bucketName, + operator: address, +}); +``` + + + +## deleteBucketPolicy + +Delete the bucket policy of the principal. + +| params | description | +| ------------- | ---------------------------------------------------------------------- | +| operator | | +| bucketName | The bucket name identifies the bucket | +| principalAddr | Principal define the roles that can grant permissions | +| principalType | PrincipalType refers to the identity type of system users or entities. | + +```jsx title="example" +const tx = await client.bucket.deleteBucketPolicy( + address, + bucketName, + address, + 'PRINCIPAL_TYPE_GNFD_ACCOUNT', +); +``` + + + +## getBucketMeta + +This API is used to get bucket meta by bucket name. + +| params | description | +| ---------- | ----------- | +| bucketName | bucket name | + +```jsx title="example" +const bucketInfo = await client.bucket.getBucketMeta({ + bucketName, +}); +``` + +## getBucketPolicy + +Get the bucket policy info of the user specified by principalAddr. + +```jsx title="example" +import { GRNToString, newBucketGRN } from '@bnb-chain/greenfield-js-sdk'; +await client.bucket.getBucketPolicy({ + resource: GRNToString(newBucketGRN(bucketName)), + principalAddress: '0x00..', +}); +``` + +## getBucketReadQuota + +Query the quota info of the specific bucket of current month. + +| params | description | +| ---------- | -------------------------------------- | +| bucketName | bucket name | +| authType | [AuthType](/client/sp-client#authtype) | + +```jsx title="example" +await client.bucket.getBucketReadQuota( + { + bucketName, + }, + { + type: 'EDDSA', + seed: offChainData.seedString, + domain: window.location.origin, + address, + }, +); +``` + +## headBucket + +query the bucketInfo on chain, return the bucket info if exists. + +| params | description | +| ---------- | ----------- | +| bucketName | bucket name | + +```jsx title="example" +const bucketInfo = await client.bucket.headBucket(bucketName); +``` + +## headBucketById + +| params | description | +| -------- | ----------- | +| bucketId | bucket id | + +```jsx title="example" +const bucketInfo = await client.bucket.headBucketById(bucketId); +``` + +## headBucketExtra + +Queries a bucket extra info (with gvg bindings and price time) with specify name. + +| params | description | +| ---------- | ----------- | +| bucketName | bucket name | + +```jsx title="example" +const bucketInfo = await client.bucket.headBucketExtra(bucketName); +``` + + + +## listBucketReadRecords + +List the download record info of the specific bucket of the current month. + +| params | description | +| ---------- | -------------------------------------- | +| bucketName | bucket name | +| authType | [AuthType](/client/sp-client#authtype) | + +```jsx title="example" +await client.bucket.listBucketReadRecords( + { + bucketName, + startTimeStamp, + endTimeStamp, + maxRecords: 1000, + }, + { + type: 'EDDSA', + domain: window.location.origin, + seed: offChainData.seedString, + address, + }, +); +``` + +## listBuckets + +Lists the bucket info of the user. + +| params | description | +| ------- | ------------ | +| address | user account | + +```jsx title="example" +const res = await client.bucket.listBuckets({ + address, +}); +``` + +## listBucketsByIds + +Lists the bucket info of the user. + +| params | description | +| ------ | ---------------- | +| ids | bucket ids array | + +```jsx title="example" +await client.bucket.listBucketsByIds({ + ids: ['1', '2'], +}); +``` + +## listBucketsByPaymentAccount + +List bucket info by payment account. + +| params | description | +| -------------- | ----------------------- | +| paymentAccount | payment account address | + +```jsx title="example" +const res = await client.bucket.listBucketsByPaymentAccount({ + paymentAccount: '0x00...', +}); +``` + +## putBucketPolicy + +Apply bucket policy to the principal, return the txn hash. + +| params | description | +| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| bucketName | bucket name | +| statements | Policies outline the specific details of permissions, including the Effect, ActionList, and Resources. | +| principal | Indicates the marshaled principal content of greenfield permission types, users can generate it by NewPrincipalWithAccount or NewPrincipalWithGroupId method. | + +```jsx title="example" +import { GRNToString, newBucketGRN, PermissionTypes } from '@bnb-chain/greenfield-js-sdk'; +const statement: PermissionTypes.Statement = { + effect: PermissionTypes.Effect.EFFECT_ALLOW, + actions: [PermissionTypes.ActionType.ACTION_UPDATE_BUCKET_INFO], + resources: [GRNToString(newBucketGRN(bucketName))], +}; +const tx = await client.bucket.putBucketPolicy(bucketName, { + operator: address, + statements: [statement], + principal: { + type: PermissionTypes.PrincipalType.PRINCIPAL_TYPE_GNFD_ACCOUNT, + value: '0x0000000000000000000000000000000000000001', + }, +}); +``` + + + +## updateBucketInfo + +Update the bucket meta on chain, including read quota, payment address or visibility. It will send +the MsgUpdateBucketInfo msg to greenfield to update the meta. + +| params | description | +| ---------------- | ------------------------------------------------------- | +| bucketName | bucket name | +| operator | operator account address | +| visibility | [VisibilityType](/types/visibility) | +| paymentAddress | payment address | +| chargedReadQuota | defines the traffic quota that you read from primary sp | + +```jsx title="example" +await client.bucket.updateBucketInfo({ + bucketName: bucketName, + operator: address, + visibility: 1, + paymentAddress: address, + chargedReadQuota: '100', +}); +``` + + diff --git a/doc-site/docs/api/crosschain.mdx b/doc-site/docs/api/crosschain.mdx new file mode 100644 index 00000000..11771c6d --- /dev/null +++ b/doc-site/docs/api/crosschain.mdx @@ -0,0 +1,156 @@ +--- +id: crosschain +title: 'Crosschain' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; + +## getChannelSendSequence + +Get the next send sequence for a channel. + +| params | description | +| ----------- | ------------------------------------- | +| destChainId | destination chain id | +| channelId | channel id of the cross chain package | + +```jsx title="example" +await client.crosschain.getChannelSendSequence({ + destChainId: '5600', + channelId: '97', +}); +``` + +## getChannelReceiveSequence + +Get the next receive sequence for a channel. + +| params | description | +| ----------- | ------------------------------------- | +| destChainId | destination chain id | +| channelId | channel id of the cross chain package | + +```jsx title="example" +await client.crosschain.getChannelReceiveSequence({ + destChainId: '5600', + channelId: '97', +}); +``` + +## getCrosschainPackage + +Get the cross-chain package by sequence. + +| params | description | +| ----------- | ------------------------------------- | +| destChainId | destination chain id | +| channelId | channel id of the cross chain package | +| sequence | sequence of the cross chain package | + +```jsx title="example" +await client.crosschain.getCrosschainPackage({ + destChainId: '5600', + channelId: '97', + sequence: '111', +}); +``` + +## getInturnRelayer + +Get the in-turn relayer bls public key and its relay interval. + +```jsx title="example" +await client.crosschain.getInturnRelayer(); +``` + +## mirrorBucket + +Mirror the bucket to BSC as an NFT. + +| params | description | +| ----------- | ----------------------------------------------------------------------------------------------------------- | +| creator | defines the account address of the grantee who has the DeleteBucket permission of the bucket to be deleted. | +| id | defines the unique u256 for bucket | +| bucketName | defines a globally unique name of bucket | +| destChainId | destination chain id | + +```jsx title="example" +const tx = await client.crosschain.mirrorBucket({ + bucketName: 'bucket_name', + id: 'bucket_id', + creator: '0x00...', + destChainId: '97', +}); +``` + + + +## mirrorGroup + +Mirror the group to BSC as an NFT. + +| params | description | +| ----------- | ------------------------------------------------------------------------- | +| operator | defines the account address of the operator who is the owner of the group | +| id | the unique u256 for group | +| groupName | the name of the group | +| destChainId | destination chain id | + +```jsx title="example" +const tx = await client.crosschain.mirrorGroup({ + groupName: 'group_name', + id: 'group_id', + operator: '0x00...', + destChainId: '97', +}); +``` + + + +## mirrorObject + +Mirror the object to BSC as an NFT. + +| params | description | +| ----------- | --------------------------------------------------------------------------------------------------- | +| operator | the account address of the operator who has the DeleteObject permission of the object to be deleted | +| id | the unique u256 for object | +| bucketName | the name of the bucket where the object is stored | +| objectName | the name of object | +| destChainId | destination chain id | + +```jsx title="example" +const tx = await client.crosschain.mirrorObject({ + bucketName: 'bucket_name', + objectName: 'object_name', + id: 'object_id', + operator: '0x00...', + destChainId: '97', +}); +``` + + + +## transferOut + +Make a transfer from Greenfield to BSC. + +| params | description | +| ------ | ------------------- | +| from | from address | +| to | to address | +| amount | [Coin](/types/coin) | + +```jsx title="example" +const tx = await client.crosschain.transferOut({ + from: '0x00...', + to: '0x0000000000000000000000000000000000000001', + amount: { + amount: '1000000000', + denom: 'BNB', + }, +}); +``` + + diff --git a/doc-site/docs/api/feegrant.mdx b/doc-site/docs/api/feegrant.mdx new file mode 100644 index 00000000..324901de --- /dev/null +++ b/doc-site/docs/api/feegrant.mdx @@ -0,0 +1,90 @@ +--- +id: feegrant +title: 'Feegrant' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; + +## grantAllowance + +Provides a way to grant allowance, the user needs to construct the desired type of allowance. + +| params | description | +| --------------- | --------------------------------------------------------------------------- | +| amount | amount of [Coin](/types/coin) | +| denom | denom of [Coin](/types/coin) | +| allowedMessages | array of [Msg Type URL](/constants/msg-type-url) | +| granter | the address of the user granting an allowance of their funds | +| grantee | the address of the user being granted an allowance of another user's funds. | +| expirationTime | [Timestamp](/types/timestamp) | + +```jsx title="example" +const tx = await client.feegrant.grantAllowance({ + granter: '0x00...', + grantee: '0x00...', + allowedMessages: [MsgDeleteObjectTypeUrl], + amount: parseEther('0.09').toString(), + denom: 'BNB', + expirationTime: toTimestamp(date), +}); +``` + + + +## revokeAllowance + +revokes allowance on a grantee by the granter. + +| params | description | +| ------- | ------------------------------------------------------------------------------------- | +| granter | the address of the user granting an allowance of their funds | +| grantee | grantee is the address of the user being granted an allowance of another user's funds | + +```jsx title="example" +const tx = await client.feegrant.revokeAllowance({ + granter: '0x00...', + grantee: '0x00...', +}); +``` + + + +## getAllowence + +queries the BasicAllowance. + +| params | description | +| ------- | ------------------------------------------------------------------------------------- | +| granter | the address of the user granting an allowance of their funds | +| grantee | grantee is the address of the user being granted an allowance of another user's funds | + +```jsx title="example" +await client.feegrant.getAllowence({ + granter: '0x00...', + grantee: '0x00...', +}); +``` + +## getAllowences + +queries the BasicAllowance by account address. + +| params | description | +| ---------- | ------------------------------------------------------------------------------------- | +| grantee | grantee is the address of the user being granted an allowance of another user's funds | +| pagination | [Pagination](/types/pagination) | + +```jsx title="example" +import { Long } from '@bnb-chain/greenfield-js-sdk'; +await client.feegrant.getAllowences({ + grantee: '0x00...', + pagination: { + limit: Long.fromInt(10), + offset: Long.fromInt(0), + countTotal: true, + key: Uint8Array.from([]), + reverse: false, + }, +}); +``` diff --git a/doc-site/docs/api/gashub.mdx b/doc-site/docs/api/gashub.mdx new file mode 100644 index 00000000..5de4c16d --- /dev/null +++ b/doc-site/docs/api/gashub.mdx @@ -0,0 +1,27 @@ +--- +id: gashub +title: 'Gashub' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; + +## getMsgGasParams + +| params | description | +| ----------- | ------------------------------------------- | +| msgTypeUrls | [Message Type URL](/constants/msg-type-url) | +| pagination | [Pagination](/types/pagination) | + +```jsx title="example" +await client.gashub.getMsgGasParams({ + msgTypeUrls: [], + pagination: { + countTotal: true, + key: Uint8Array.from([]), + limit: Long.fromInt(10), + offset: Long.fromInt(0), + reverse: false, + }, +}); +``` diff --git a/doc-site/docs/api/group.mdx b/doc-site/docs/api/group.mdx new file mode 100644 index 00000000..55861562 --- /dev/null +++ b/doc-site/docs/api/group.mdx @@ -0,0 +1,275 @@ +--- +id: group +title: 'Group' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +## createGroup + +Create a new group without group members on Greenfield blockchain, and group members can be added by +[updateGroupMember](#updategroupmember) transaction. + +A `Group` is a collection of accounts that share the same permissions, allowing them to be handled +as a single entity. + +Examples of permissions include: + +- `Put`, `List`, `Get`, `Delete`, `Copy`, and `Execute` data objects; +- `Create`, `Delete`, and `List` buckets +- `Create`, `Delete`, `ListMembers`, `Leave groups` +- `Create`, `Associate payment accounts` +- `Grant`, `Revoke` the above permissions + +For more details regarding `Group`, please refer to +https://docs.bnbchain.org/greenfield-docs/docs/guide/greenfield-blockchain/modules/permission. + +| params | description | +| --------- | ------------------------------------------------------- | +| creator | the account address of group owner who create the group | +| groupName | the name of the group. it's not globally unique | +| extra | extra info for the group | + +```jsx title="example" +const tx = await client.group.createGroup({ + creator: '0x00..', + groupName: 'group_name', + extra: 'extra_info', +}); +``` + + + +## deleteGroup + +Delete a group on Greenfield blockchain. The sender **MUST** only be the group owner, group members +or others would fail to send this transaction. + +:::warning + +Deleting a group will result in granted permission revoked. Members within the group will no longer +have access to resources (bucket, object) which granted permission on. + +::: + +| params | description | +| --------- | ------------------------------------------------------------------------------------------------- | +| operator | the account address of the operator who has the DeleteGroup permission of the group to be deleted | +| groupName | the name of the group which to be deleted | + +```jsx title="example" +const tx = await client.group.deleteGroup({ + groupName: 'group_name', + operator: '0x00..', +}); +``` + + + +## getBucketPolicyOfGroup + +Queries a bucket of policy that grants permission to a group. + +| params | description | +| ---------- | ----------- | +| bucketName | bucket name | +| groupId | group id | + +```jsx title="example" +await client.group.getBucketPolicyOfGroup('bucket_name', 1); +``` + +## getObjectPolicyOfGroup + +Queries a object of policy that grants permission to a group. + +| params | description | +| ---------- | ----------- | +| bucketName | bucket name | +| objectName | object name | +| groupId | group id | + +```jsx title="example" +await client.group.getObjectPolicyOfGroup('bucket_name', 'object_name', 1); +``` + + + +## headGroup + +Query the groupInfo on chain, return the group info if exists. + +| params | description | +| ---------- | -------------- | +| groupName | group name | +| groupOwner | owner of group | + +```jsx title="example" +await client.group.headGroup('group_name', '0x00..'); +``` + +## headGroupMember + +Query the group member info on chain, return true if the member exists in group. + +| params | description | +| ---------- | --------------- | +| groupName | group name | +| groupOwner | owner of group | +| member | member of group | + +```jsx title="example" +await client.group.headGroupMember( + 'groupName', + '0x00..', + '0x903904936a4328fac5477c0d96acf2E2bCaCD33d', +); +``` + + + +## leaveGroup + +Leave a group. A group member initially leaves a group. + +| params | description | +| ---------- | ------------------------------------------------------------- | +| address | operator address | +| member | the account address of the member who want to leave the group | +| groupOwner | the owner of the group you want to leave | +| groupName | the name of the group you want to leave | + +```jsx title="example" +await client.group.leaveGroup( + '0x...', // address + { + member: '0x...', + groupOwner: '0x...', + groupName: 'group_name', + }, +); +``` + + + +## putGroupPolicy + +Apply group policy to user specified by principalAddr, the sender needs to be the owner of the +group. + +| params | description | +| --------- | -------------- | +| owner | owner of group | +| groupName | name of group | + + + +```tsx title="example" +import { PermissionTypes } from '@bnb-chain/greenfield-js-sdk'; +const statement: PermissionTypes.Statement = { + effect: PermissionTypes.Effect.EFFECT_ALLOW, + actions: [PermissionTypes.ActionType.ACTION_UPDATE_GROUP_MEMBER], + resources: [], +}; + +await client.group.putGroupPolicy( + '0x...', // owner + 'group_name', + { + operator: '0x...', // address + statements: [statement], + principal: { + type: PermissionTypes.PrincipalType.PRINCIPAL_TYPE_GNFD_ACCOUNT, + value: '0x0000000000000000000000000000000000000001', + }, + }, +); +``` + + + +## updateGroupExtra + +Update a group extra. + +| params | description | +| ---------- | ----------------------------------------------------------------------------------------- | +| operator | the account address of the operator who has the UpdateGroupMember permission of the group | +| groupOwner | the account address of the group owner | +| groupName | the name of the group which to be updated | +| extra | extra info for the group to update | + +```jsx title="example" +await client.group.updateGroupExtra({ + operator: '0x...', + groupOwner: '0x...', + groupName: 'group_name', + extra: 'extra info', +}); +``` + + + +## updateGroupMember + +Update a group by adding or removing members. The sender can be the group owner or any individual +account(Principle) that has been granted permission by the group owner. + +| params | description | +| --------------- | ----------------------------------------------------------------------------------------- | +| operator | the account address of the operator who has the UpdateGroupMember permission of the group | +| groupOwner | the account address of the group owner | +| groupName | the name of the group which to be updated | +| membersToAdd | MsgGroupMember[] | +| membersToDelete | string[] | + + + + +```jsx title="example" +await client.group.updateGroupMember({ + operator: '0x..', + groupOwner: '0x..', + groupName: 'group_name', + membersToAdd: [ + { + expirationTime: toTimestamp(date), + member: '0x903904936a4328fac5477c0d96acf2E2bCaCD33d', + }, + ], + membersToDelete: [], +}); +``` + + + + +```jsx title="example" +await client.group.updateGroupMember({ + operator: '0x..', + groupOwner: '0x..', + groupName: 'group_name', + membersToAdd: [], + membersToDelete: ['0x903904936a4328fac5477c0d96acf2E2bCaCD33d'], +}); +``` + + + + + diff --git a/doc-site/docs/api/object.mdx b/doc-site/docs/api/object.mdx new file mode 100644 index 00000000..933507b6 --- /dev/null +++ b/doc-site/docs/api/object.mdx @@ -0,0 +1,340 @@ +--- +id: object +title: 'Object' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; + +## cancelCreateObject + +Send `CancelCreateObject` txn to greenfield chain. + +| params | description | +| ---------- | ----------------------------------- | +| operator | the account address of the operator | +| bucketName | the name of the bucket | +| objectName | the name of the object | + + + +## createFolder + +Send create empty object txn to greenfield chain. + +| params | description | +| ---------- | -------------------------------------- | +| bucketName | bucket name | +| objectName | object name | +| creator | the creator of object | +| authType | [AuthType](/client/sp-client#authtype) | + +```jsx title="example" +const tx = await client.object.createFolder( + { + bucketName: createObjectInfo.bucketName, + objectName: createObjectInfo.objectName + '/', + creator: address, + }, + { + type: 'EDDSA', + domain: window.location.origin, + seed: offChainData.seedString, + address, + }, +); +``` + +## createObject + +Get approval of creating object and send createObject txn to greenfield chain. + +| params | description | +| --------------- | ----------------------------------------------------------------------- | +| bucketName | bucket name | +| objectName | object name | +| creator | the creator of object | +| visibility | [VisibilityType](/types/visibility) | +| fileType | [file type](https://developer.mozilla.org/en-US/docs/Web/API/File/type) | +| redundancyType | [RedundancyType](/types/redundancy) | +| authType | [AuthType](/client/sp-client#authtype) | +| contentLength | file content length | +| expectCheckSums | file's expectCheckSums | + +```jsx title="example" +const tx = await client.object.createObject( + { + bucketName: 'bucket_name', + objectName: 'object_name', + creator: '0x...', + visibility: 'VISIBILITY_TYPE_PRIVATE', + fileType: 'json', + redundancyType: 'REDUNDANCY_EC_TYPE', + contentLength: 13311, + expectCheckSums: JSON.parse(expectCheckSums), + }, + { + type: 'EDDSA', + domain: window.location.origin, + seed: offChainData.seedString, + address, + }, +); +``` + + + +## deleteObject + +Send DeleteObject msg to greenfield chain and return txn hash. + +| params | description | +| ---------- | --------------------------------------------------------------------------------------------------- | +| operator | the account address of the operator who has the DeleteObject permission of the object to be deleted | +| bucketName | the name of the bucket where the object which to be deleted is stored | +| objectName | the name of the object which to be deleted | + +```jsx title="example" +const tx = await client.object.deleteObject({ + bucketName: 'bucket_name', + objectName: 'object_name', + operator: '0x000..', +}); +``` + + + +## deleteObjectPolicy + +Delete the object policy of the principal. + +| params | description | +| ------------- | --------------------------------------------------------- | +| operator | the granter who grant the permission to another principal | +| bucketName | the name of the bucket | +| objectName | the name of the object | +| principalAddr | principal address | +| principal | [PrincipalType](/types/principal) | + +```jsx title="example" +const tx = await client.object.deleteObjectPolicy( + '0x000..', // operator + 'bucket_name', // bucket name + 'object_name', // object name + '0x000..', // principalAddr + 'PRINCIPAL_TYPE_GNFD_GROUP', // PrincipalType +); +``` + + + +## downloadFile + +Download s3 object payload and return the related object info. + +| params | description | +| ---------- | ----------- | +| bucketName | bucket name | +| objectName | object name | + +```jsx title="example" +await client.object.downloadFile( + { + bucketName, + objectName, + }, + { + type: 'EDDSA', + address, + domain: window.location.origin, + seed: offChainData.seedString, + }, +); +``` + +## getObjectPolicy + +Get the object policy info of the user specified by principalAddr. + +| params | description | +| ------------- | ----------------- | +| bucketName | bucket name | +| objectName | object name | +| principalAddr | principal address | + +```jsx title="example" +const tx = await client.object.getObjectPolicy('bucket_name', 'object_name', '0x...'); +``` + +## getObjectPreviewUrl + +Get the object preview url. + +```jsx title="example" +const res = await client.object.getObjectPreviewUrl( + { + bucketName: 'bucket_name', + objectName: 'object_name', + queryMap: { + view: '1', + 'X-Gnfd-User-Address': address, + 'X-Gnfd-App-Domain': window.location.origin, + 'X-Gnfd-Expiry-Timestamp': '2023-09-03T09%3A23%3A39Z', + }, + }, + { + type: 'EDDSA', + address, + domain: window.location.origin, + seed: offChainData.seedString, + }, +); +``` + +## headObject + +Query the objectInfo on chain to check the object id, return the object info if exists. + +| params | description | +| ---------- | ----------- | +| bucketName | bucket name | +| objectName | object name | + +```jsx title="example" +await client.object.headObject(bucketName, objectName); +``` + +## headObjectById + +Query the objectInfo on chain by object id, return the object info if exists. + +```jsx title="example" +await client.object.headObjectById('12'); +``` + + + +## listObjects + +Lists the object info of the bucket. + +| params | description | +| ---------- | ----------- | +| bucketName | bucket name | + +```jsx title="example" +const res = await client.object.listObjects({ + bucketName, +}); +``` + +## listObjectsByIds + +List objects by object ids. + +| params | description | +| ------ | ---------------- | +| ids | object ids array | + +```jsx title="example" +await client.object.listObjectsByIds({ + ids: ['1', '2'], +}); +``` + +## listObjectPolicies + +List object policies by object info and action type. + +| params | description | +| ---------- | --------------------------- | +| bucketName | bucket name | +| objectName | object name | +| actionType | [ActionType](/types/action) | + +```jsx title="example" +const res = await client.object.listObjectPolicies({ + bucketName: 'bucket_name', + objectName: 'object_name', + actionType: 'ACTION_GET_OBJECT', +}); +``` + +## putObjectPolicy + +| params | description | +| --------- | ----------------------------- | +| operator | operator address | +| principal | [Principal](/types/principal) | + +Apply object policy to the principal, return the txn hash. + +```jsx title="example" +import { PermissionTypes } from '@bnb-chain/greenfield-js-sdk'; +const statement: PermissionTypes.Statement = { + effect: PermissionTypes.Effect.EFFECT_ALLOW, + actions: [PermissionTypes.ActionType.ACTION_GET_OBJECT], + resources: [], +}; +await client.object.putObjectPolicy('bucket_name', 'object_name', { + operator: '0x...', + statements: [statement], + principal: { + type: PermissionTypes.PrincipalType.PRINCIPAL_TYPE_GNFD_ACCOUNT, + value: '0x0000000000000000000000000000000000000001', + }, +}); +``` + + + +## updateObjectInfo + +Update object info by sending message to greenfield. + +| params | description | +| ---------- | ----------------------------------- | +| bucketName | bucket name | +| objectName | object name | +| operator | operator address | +| visibility | [VisibilityType](/types/visibility) | + +```jsx title="example" +const tx = await client.object.updateObjectInfo({ + bucketName: 'bucket_name', + objectName: 'object_name', + operator: '0x...', + visibility: 'VISIBILITY_TYPE_PUBLIC_READ', +}); +``` + + + +## uploadObject + +Uploading the object to bucket. + +| params | description | +| ---------- | -------------------------------------- | +| bucketName | bucket name | +| objectName | object name | +| body | file | +| txnHash | [createObject](#createobject) 's hash | +| authType | [AuthType](/client/sp-client#authtype) | + +```jsx title="example" +const uploadRes = await client.object.uploadObject( + { + bucketName: createObjectInfo.bucketName, + objectName: createObjectInfo.objectName, + body: file, + txnHash: txHash, + }, + { + type: 'EDDSA', + domain: window.location.origin, + seed: offChainData.seedString, + address, + }, +); +``` diff --git a/doc-site/docs/api/overview.mdx b/doc-site/docs/api/overview.mdx new file mode 100644 index 00000000..4a0fcb08 --- /dev/null +++ b/doc-site/docs/api/overview.mdx @@ -0,0 +1,21 @@ +--- +id: api-overview +title: 'Overview' +sidebar_position: 1 +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; + +The SDK contains three APIs: + +- + + send message to greenfield + +- + + [query](https://docs.bnbchain.org/greenfield-docs/docs/api/blockchain-rest) info from greenfield. + +- + + [more details](https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest) diff --git a/doc-site/docs/api/payment.mdx b/doc-site/docs/api/payment.mdx new file mode 100644 index 00000000..6a4b5dfa --- /dev/null +++ b/doc-site/docs/api/payment.mdx @@ -0,0 +1,108 @@ +--- +id: payment +title: 'Payment' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; + +## getStreamRecord + +Retrieve stream record information for a given stream address. + +| params | description | +| ------- | ----------------------------------------------- | +| account | The address of the stream record to be queried. | + +```jsx title="example" +await client.payment.getStreamRecord('0x...'); +``` + +## deposit + +Deposit BNB to a payment account. + +| params | description | +| ------- | ----------------------------------------------------------- | ------------------ | +| to | payment address of the stream record to receive the deposit | +| creator | | operator's account | +| amount | the amount to deposit | + +```jsx title="example" +const tx = await client.payment.deposit({ + amount: '1000000000', + creator: '0x...', + to: '0x...', +}); +``` + + + +## withdraw + +Withdraws BNB from a payment account. + +Withdrawal will trigger settlement, i.e., updating static balance and buffer balance. If the +withdrawal amount is greater than the static balance after settlement it will fail. If the +withdrawal amount is equal to or greater than 100BNB, it will be timelock-ed for 1 day duration. And +after the duration, a message without `from` field should be sent to get the funds. + +| params | description | +| ------- | ---------------------- | +| creator | operator's account | +| amount | the amount to withdraw | +| from | payment address | + +```jsx title="example" +const tx = await client.payment.withdraw({ + amount: '100000000', + creator: '0x...', + from: '0x..', +}); +``` + + + +## disableRefund + +Disable refund/withdrawal for a payment account. After disabling withdrawal of a payment account, no +more withdrawal can be executed. The action cannot be reverted. + +| params | description | +| ------ | ---------------- | +| owner | operator address | +| addr | payment address | + +```jsx title="example" +const tx = await client.payment.disableRefund({ + owner: address, + addr: paymentAccount, +}); +``` + + + +## listUserPaymentAccounts + +list user payment info. + +| params | description | +| -------- | -------------------------------------- | +| account | the address of user | +| authType | [AuthType](/client/sp-client#authtype) | + +```jsx title="example" +const res = await client.payment.listUserPaymentAccounts( + { + account: address, + }, + { + type: 'EDDSA', + domain: window.location.origin, + seed: offChainData.seedString, + address, + }, +); +``` + +List payment info by a user address. diff --git a/doc-site/docs/api/sp.mdx b/doc-site/docs/api/sp.mdx new file mode 100644 index 00000000..c5bd4c97 --- /dev/null +++ b/doc-site/docs/api/sp.mdx @@ -0,0 +1,106 @@ +--- +id: sp +title: 'Sp' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; + +## getStorageProviders + +List the storage providers info on chain. + +```jsx title="example" +await client.sp.getStorageProviders(); +``` + +## getStorageProviderInfo + +Get the specified storage providers info on chain. + +| params | description | +| ------ | ----------- | +| spId | sp's id | + +```jsx title="example" +await client.sp.getStorageProviderInfo(1); +``` + +## getQuerySpStoragePrice + +Get the storage price details for a particular storage provider, including update time, read price, +store price and .etc. + +| params | description | +| ------ | ---------------------- | +| spAddr | operator address of sp | + +```jsx title="example" +await client.sp.getQuerySpStoragePrice({ + spAddr: '0x..', +}); +``` + + + + + +## listGroups + +Get the group list by name and prefix. It provides fuzzy searches by inputting a specific name and +prefix. + +More details: +https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/get_group_list. + +```jsx title="example" +await client.sp.listGroups({ + name: groupName, + prefix: '', + sourceType: 'SOURCE_TYPE_ORIGIN', + limit: 1000, + offset: 0, +}); +``` + +## listGroupsMembers + +Query a list of group members by a given group id. + +| params | description | +| ------- | ----------- | +| groupId | group id | + +```jsx title="example" +await client.sp.listGroupsMembers({ + groupId: 269, +}); +``` + +## listUserGroups + +Query a list of groups by a given user. + +```jsx title="example" +await client.sp.listUserGroups({ + address: '0x000..', + limit: 10, + startAfter: '0', +}); +``` + +## listUserOwnedGroups + +Retrieve groups where the user is the owner. + +```jsx title="example" +await client.sp.listUserOwnedGroups({ + address: '0x000..', + limit: 10, + startAfter: '0', +}); +``` diff --git a/doc-site/docs/api/virtualGroup.mdx b/doc-site/docs/api/virtualGroup.mdx new file mode 100644 index 00000000..a4a95a4c --- /dev/null +++ b/doc-site/docs/api/virtualGroup.mdx @@ -0,0 +1,68 @@ +--- +id: virtual-group +title: 'VirtualGroup' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; + +## getGlobalVirtualGroup + +| params | description | +| -------------------- | ---------------- | +| globalVirtualGroupId | virtual group id | + +```jsx title="example" +await client.virtualGroup.getGlobalVirtualGroup({ + globalVirtualGroupId: 11, +}); +``` + +## getGlobalVirtualGroupByFamilyID + +Query the virtual group family by ID. + +Virtual group family(VGF) serve as a means of grouping global virtual groups. Each bucket must be +associated with a unique global virtual group family and cannot cross families. + +| params | description | +| -------------------------- | ----------- | +| globalVirtualGroupFamilyId | VGF id | + +```jsx title="example" +await client.virtualGroup.getGlobalVirtualGroupByFamilyID({ + globalVirtualGroupFamilyId: 11, +}); +``` + +## getGlobalVirtualGroupFamily + +| params | description | +| -------- | ----------- | +| familyId | family id | + +```jsx title="example" +await client.virtualGroup.getGlobalVirtualGroupFamily({ + familyId: 11, +}); +``` + +## getGlobalVirtualGroupFamilies + +Get All global virtual group families. + +| params | description | +| ---------- | ------------------------------- | +| pagination | [Pagination](/types/pagination) | + +```jsx title="example" +await client.virtualGroup.getGlobalVirtualGroupFamilies({ + pagination: { + countTotal: true, + key: Uint8Array.from([]), + limit: Long.fromInt(10), + offset: Long.fromInt(0), + reverse: false, + }, +}); +``` diff --git a/doc-site/docs/client/_category_.json b/doc-site/docs/client/_category_.json new file mode 100644 index 00000000..10c50077 --- /dev/null +++ b/doc-site/docs/client/_category_.json @@ -0,0 +1,14 @@ +{ + "position": 2, + "label": "Client", + "collapsible": true, + "collapsed": true, + "className": "red", + "link": { + "type": "generated-index", + "title": "clients" + }, + "customProps": { + "description": "" + } +} \ No newline at end of file diff --git a/doc-site/docs/client/greenfield.mdx b/doc-site/docs/client/greenfield.mdx new file mode 100644 index 00000000..10b297e8 --- /dev/null +++ b/doc-site/docs/client/greenfield.mdx @@ -0,0 +1,38 @@ +--- +id: greenfield-client +title: 'Greenfield Client' +sidebar_position: 1 +--- + +# Create Greenfield Client + +| params | description | +| -------------- | ------------------- | +| GRPC_URL | Greenfield grpc url | +| GREEN_CHAIN_ID | Greenfield chain id | + +```js +import { Client } from '@bnb-chain/greenfield-js-sdk'; + +// Node.js +const client = Client.create(GRPC_URL, GREEN_CHAIN_ID); + +// Browser +const client = Client.create(GRPC_URL, String(GREEN_CHAIN_ID), { + zkCryptoUrl: + 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto@0.0.2-alpha.4/dist/node/zk-crypto.wasm', +}); +``` + +:::tip + +Browser need load wasm manually. + +::: + +## Usage + +The JS SDK consists of two parts: + +- Chain: https://docs.bnbchain.org/greenfield-docs/docs/api/blockchain-rest +- Storage Provider: https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest diff --git a/doc-site/docs/client/query-client.mdx b/doc-site/docs/client/query-client.mdx new file mode 100644 index 00000000..dcb393db --- /dev/null +++ b/doc-site/docs/client/query-client.mdx @@ -0,0 +1,122 @@ +--- +id: query-client +title: 'Query Client' +sidebar_position: 2 +--- + +It's actually an encapsulation of the +[Blockchain API](https://docs.bnbchain.org/greenfield-docs/docs/api/blockchain-rest). + +:::info + +In most cases, you probably don't need to use the ‘Query Client` directly. + +::: + +## getAuthQueryClient + +```jsx title="example" +const rpc = await client.queryClient.getAuthQueryClient(); +await rpc.Account({ + address: '0x0000000000000000000000000000000000000001', +}); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/account-info + +## getBankQueryClient + +```jsx title="example" +const rpc = await client.queryClient.getBankQueryClient(); +await rpc.Balance({ + address: '0x0000000000000000000000000000000000000001', + denom: 'BNB', +}); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/account-info + +## getBridgeQueryClient + +```jsx title="example" +const rpc = await client.queryClient.getBridgeQueryClient(); +await rpc.Params(); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/bridge-params + +## getChallengeQueryClient + +```jsx title="example" +const rpc = await client.queryClient.getChallengeQueryClient(); +await rpc.Params(); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/attested-challenge + +## getCrosschainQueryClient + +```jsx title="example" +const rpc = await client.queryClient.getCrosschainQueryClient(); +await rpc.Params(); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/attested-challenge + +## getFeeGrantQueryClient + +```jsx title="example" +const rpc = await client.queryClient.getFeeGrantQueryClient(); +await rpc.Params(); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/allowance + +## getGashubClient + +```jsx title="example" +const rpc = await this.queryClient.getGashubClient(); +await rpc.MsgGasParams(request); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/msg-gas-params + +## getPaymentQueryClient + +```jsx title="example" +const rpc = await this.queryClient.getPaymentQueryClient(); +await rpc.Params(); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/msg-gas-params + +## getSpQueryClient + +```jsx title="example" +const rpc = await this.queryClient.getSpQueryClient(); +await rpc.Params(); +``` + +More apis: +https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/query-global-sp-store-price-by-time + +## getStorageQueryClient + +```jsx title="example" +const rpc = await client.queryClient.getStorageQueryClient(); +await rpc.HeadBucketById({ + bucketId: '1', +}); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/query-group-members-exist + +## getVirtualGroupClient + +```jsx title="example" +const rpc = await client.queryClient.getVirtualGroupClient(); +await rpc.Params(); +``` + +More apis: +https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/available-global-virtual-group-families diff --git a/doc-site/docs/client/sp-client.mdx b/doc-site/docs/client/sp-client.mdx new file mode 100644 index 00000000..34aebdc2 --- /dev/null +++ b/doc-site/docs/client/sp-client.mdx @@ -0,0 +1,101 @@ +--- +id: sp-client +sidebar_position: 3 +title: 'Storage Provider Client' +--- + +The api related to storage provider are some troublesome. + +## AuthType + +SDK support two +[authentication type](https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest#authentication-type): + +- ECDSA: It is usually used on Node.js(Because it need to use a private key) +- EDDSA: It is usually used in a browser + +```jsx title="AuthType" +/** + * ECDSA Signature + */ +export type ECDSA = { + type: 'ECDSA', + privateKey: string, +}; +/** + * EDDSA Signature + */ +export type EDDSA = { + type: 'EDDSA', + seed: string, + domain: string, + address: string, +}; +export type AuthType = ECDSA | EDDSA; +``` + + + +## Sp Api Example + +`getBucketReadQuota` as example: + +```jsx title="browser" +const getAllSps = async () => { + const sps = await getSps(); + + return sps.map((sp) => { + return { + address: sp.operatorAddress, + endpoint: sp.endpoint, + name: sp.description?.moniker, + }; + }); +}; + +// generate seed: +const allSps = await getAllSps(); +const offchainAuthRes = await client.offchainauth.genOffChainAuthKeyPairAndUpload( + { + sps: allSps, + chainId: GREEN_CHAIN_ID, + expirationMs: 5 * 24 * 60 * 60 * 1000, + domain: window.location.origin, + address: 'your address', + }, + provider: 'wallet provider', +); + +// request sp api +const bucketQuota = await client.bucket.getBucketReadQuota( + { + bucketName, + }, + { + type: 'EDDSA', + seed: offchainAuthRes.seedString, + domain: window.location.origin, + address: 'your address', + }, +); +``` + +```jsx title="Nodejs" +// request sp api +const bucketQuota = await client.bucket.getBucketReadQuota( + { + bucketName, + }, + { + type: 'ECDSA', + privateKey: '0x....', + }, +); +``` diff --git a/doc-site/docs/client/tx-client.mdx b/doc-site/docs/client/tx-client.mdx new file mode 100644 index 00000000..bc8f1a48 --- /dev/null +++ b/doc-site/docs/client/tx-client.mdx @@ -0,0 +1,120 @@ +--- +id: tx-client +sidebar_position: 1 +title: 'Tx Client' +--- + +## About Tx + +A transaction contains at least: + +1. construct a transaction: The sdk already provides each transaction type +2. simulate: [txClient.simulate](#simulate) +3. broadcast [txClient.broadcast](#broadcast) + +## simulate + +Just Simulate a transaction and valid transaction. + +| params | description | +| ------ | ------------------------------------ | +| denom | the coin denom to query balances for | + +```jsx title="simulate tx" +// `tx` is a transaction constructed by the sdk +const simulateInfo = await tx.simulate({ + denom: 'BNB', +}); +``` + +## broadcast + +Broadcast the transaction to the chain. + +| params | description | +| --------------------- | ----------------------------------------------------------------------------------------------------------------- | +| denom | the coin denom to query balances for | +| gasLimit | can be set to any number, but not too small or the transaction may fail (recommended use `simulateInfo.gasLimit`) | +| gasPrice | 1 unit of Gas that the transaction sender is willing to pay. | +| payer | transaction sender | +| granter | transaction ganter (Generally empty `''`) | +| signTypedDataCallback | broadcast use `window.ethereum` as signature provider by default. | +| privateKey | If you broadcast in Nodejs, you can broadcast a tx by privateKey | + +```jsx title="broadcast tx" +// broadcast tx +const broadcastRes = await transferTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo.gasLimit), + gasPrice: simulateInfo.gasPrice, + payer: '0x0000000000000000000000000000000000000001', + granter: '', +}); +``` + +:::tip + +If you want to use others wallet, you can set `signTypedDataCallback`: + +```jsx +// trustwallet: +const broadcastRes = await transferTx.broadcast({ + // ... + signTypedDataCallback: async (addr: string, message: string) => { + return await window.trustwallet.request({ + method: 'eth_signTypedData_v4', + params: [addr, message], + }); + }, +}); +``` + +If you broadcast in Nodejs, you can broadcast a tx by privateKey: + +```jsx +const broadcastRes = await transferTx.broadcast({ + // ... + privateKey: '0x.......', +}); +``` + +::: + +## Example + +Take `transfer` tx as an example. + +### 1. construct a transaction + +```jsx title="construct tx" +const transferTx = await client.account.transfer({ + fromAddress: address, + toAddress: transferInfo.to, + amount: [ + { + denom: 'BNB', + amount: '1000000000', + }, + ], +}); +``` + +### 2. simulate + +```jsx title="simulate tx" +const simulateInfo = await transferTx.simulate({ + denom: 'BNB', +}); +``` + +### 3. broadcast + +```jsx title="broadcast tx" +const broadcastRes = await transferTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo.gasLimit), + gasPrice: simulateInfo.gasPrice, + payer: address, + granter: '', +}); +``` diff --git a/doc-site/docs/constants/msg-type-url.mdx b/doc-site/docs/constants/msg-type-url.mdx new file mode 100644 index 00000000..92b2d4ff --- /dev/null +++ b/doc-site/docs/constants/msg-type-url.mdx @@ -0,0 +1,9 @@ +--- +id: msg-type-url +title: Message Type URL +--- + +The specific type urls you want look up. Leave empty to get all entries. + +More details: +https://github.com/bnb-chain/greenfield-js-sdk/blob/alpha/packages/js-sdk/src/constants/typeUrl.ts diff --git a/doc-site/docs/getting-started/_category_.json b/doc-site/docs/getting-started/_category_.json new file mode 100644 index 00000000..be0df9da --- /dev/null +++ b/doc-site/docs/getting-started/_category_.json @@ -0,0 +1,14 @@ +{ + "position": 1, + "label": "Getting Started", + "collapsible": true, + "collapsed": false, + "className": "red", + "link": { + "type": "generated-index", + "title": "Getting Started" + }, + "customProps": { + "description": "" + } +} \ No newline at end of file diff --git a/doc-site/docs/getting-started/install.mdx b/doc-site/docs/getting-started/install.mdx new file mode 100644 index 00000000..19cf18ad --- /dev/null +++ b/doc-site/docs/getting-started/install.mdx @@ -0,0 +1,35 @@ +--- +id: install +sidebar_position: 2 +title: Install +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +## Install + + + + +```bash +> npm install @bnb-chain/greenfield-js-sdk +``` + + + + +```bash +> yarn add @bnb-chain/greenfield-js-sdk +``` + + + + +```bash +> pnpm add @bnb-chain/greenfield-js-sdk +``` + + + + diff --git a/doc-site/docs/getting-started/overview.md b/doc-site/docs/getting-started/overview.md new file mode 100644 index 00000000..074ecac0 --- /dev/null +++ b/doc-site/docs/getting-started/overview.md @@ -0,0 +1,42 @@ +--- +id: getting-started-overview +sidebar_position: 1 +slug: / +--- + +# Overview + +You can find some package documentation below: + +| Package | Description | Version | +| --- | --- | --- | +| [@bnb-chain/greenfield-js-sdk](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/js-sdk/README.md) | A client library for Greenfield Chain | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-js-sdk?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-js-sdk) | +| [@bnb-chain/greenfiled-file-handle](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/file-handle/README.md) | WASM module that handle file, such as `checksums` | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfiled-file-handle?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfiled-file-handle) | +| [@bnb-chain/greenfield-zk-crypto](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/zk-crypto/README.md) | WASM module about sign crypto | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-zk-crypto?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-zk-crypto) | +| [@bnb-chain/create-gnfd-app](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/create-gnfd-app/README.md) | Create Greenfield App Quickly | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fcreate-gnfd-app?color=blue)](https://www.npmjs.com/package/@bnb-chain/create-gnfd-app) | + +## Online Examples + +* [Nextjs](https://codesandbox.io/p/github/rrr523/greenfield-nextjs-template/main) +* [Create React App](https://codesandbox.io/p/github/rrr523/greenfield-cra-template/main) +* [Vite](https://codesandbox.io/p/github/rrr523/greenfield-vite-template/main) + +## Supported JS environments + +1. Modern browsers (Chromium, Firefox, Safari) +2. Browser extensions (Chromium, Firefox) +3. Nodejs + +## Contribution + +1. install dependencies + +```bash +> pnpm install +``` + +2. Build package: +```bash +> pnpm run build +``` + diff --git a/doc-site/docs/getting-started/quick-start.md b/doc-site/docs/getting-started/quick-start.md new file mode 100644 index 00000000..858d8c46 --- /dev/null +++ b/doc-site/docs/getting-started/quick-start.md @@ -0,0 +1,16 @@ +--- +id: quick-start +sidebar_position: 3 +--- + +# Quick Start + +We provide templates that can run `React` (Next.js, Vite and CRA(Legacy) etc) directly. + +You can use [`create-gnfd-app`](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/create-gnfd-app) to create a app quickly: + +```bash +> npx @bnb-chain/create-gnfd-app +``` + +![](https://github.com/bnb-chain/greenfield-js-sdk/raw/alpha/packages/create-gnfd-app/example.gif) diff --git a/doc-site/docs/types/_category_.json b/doc-site/docs/types/_category_.json new file mode 100644 index 00000000..3458c194 --- /dev/null +++ b/doc-site/docs/types/_category_.json @@ -0,0 +1,14 @@ +{ + "position": 4, + "label": "Types", + "collapsible": true, + "collapsed": false, + "className": "red", + "link": { + "type": "generated-index", + "title": "Types" + }, + "customProps": { + "description": "" + } +} \ No newline at end of file diff --git a/doc-site/docs/types/action.mdx b/doc-site/docs/types/action.mdx new file mode 100644 index 00000000..f592dcc6 --- /dev/null +++ b/doc-site/docs/types/action.mdx @@ -0,0 +1,26 @@ +--- +id: action +title: ActionType +--- + +The operations you can execute in greenfield storage network + +```jsx +export enum ActionType { + ACTION_UNSPECIFIED = 0, + ACTION_UPDATE_BUCKET_INFO = 1, + ACTION_DELETE_BUCKET = 2, + ACTION_CREATE_OBJECT = 3, + ACTION_DELETE_OBJECT = 4, + ACTION_COPY_OBJECT = 5, + ACTION_GET_OBJECT = 6, + ACTION_EXECUTE_OBJECT = 7, + ACTION_LIST_OBJECT = 8, + ACTION_UPDATE_GROUP_MEMBER = 9, + ACTION_DELETE_GROUP = 10, + ACTION_UPDATE_OBJECT_INFO = 11, + ACTION_UPDATE_GROUP_EXTRA = 12, + ACTION_TYPE_ALL = 99, + UNRECOGNIZED = -1, +} +``` diff --git a/doc-site/docs/types/coin.mdx b/doc-site/docs/types/coin.mdx new file mode 100644 index 00000000..d70e563e --- /dev/null +++ b/doc-site/docs/types/coin.mdx @@ -0,0 +1,15 @@ +--- +id: coin +title: Coin +--- + +`Coin` defines a token with a denomination and an amount. + +The amount field is an Int which implements the custom method. + +```jsx +export interface Coin { + denom: string; + amount: string; +} +``` diff --git a/doc-site/docs/types/pagination.mdx b/doc-site/docs/types/pagination.mdx new file mode 100644 index 00000000..8dc6a275 --- /dev/null +++ b/doc-site/docs/types/pagination.mdx @@ -0,0 +1,41 @@ +--- +id: pagination +title: Pagination +--- + +PageRequest is to be embedded in gRPC request messages for efficient. + +```jsx +export interface PageRequest { + /** + * key is a value returned in PageResponse.next_key to begin + * querying the next page most efficiently. Only one of offset or key + * should be set. + */ + key: Uint8Array; + /** + * offset is a numeric offset that can be used when key is unavailable. + * It is less efficient than using key. Only one of offset or key should + * be set. + */ + offset: Long; + /** + * limit is the total number of results to be returned in the result page. + * If left empty it will default to a value to be set by each app. + */ + limit: Long; + /** + * count_total is set to true to indicate that the result set should include + * a count of the total number of items available for pagination in UIs. + * count_total is only respected when offset is used. It is ignored when key + * is set. + */ + countTotal: boolean; + /** + * reverse is set to true if results are to be returned in the descending order. + * + * Since: cosmos-sdk 0.43 + */ + reverse: boolean; +} +``` diff --git a/doc-site/docs/types/principal.mdx b/doc-site/docs/types/principal.mdx new file mode 100644 index 00000000..ff049173 --- /dev/null +++ b/doc-site/docs/types/principal.mdx @@ -0,0 +1,16 @@ +--- +id: principal +title: PrincipalType +--- + +PrincipalType refers to the identity type of system users or entities. In Greenfield, it usually +refers to accounts or groups. + +```jsx +export enum PrincipalType { + PRINCIPAL_TYPE_UNSPECIFIED = 0, + PRINCIPAL_TYPE_GNFD_ACCOUNT = 1, + PRINCIPAL_TYPE_GNFD_GROUP = 2, + UNRECOGNIZED = -1, +} +``` diff --git a/doc-site/docs/types/redundancy.mdx b/doc-site/docs/types/redundancy.mdx new file mode 100644 index 00000000..55b1a69a --- /dev/null +++ b/doc-site/docs/types/redundancy.mdx @@ -0,0 +1,15 @@ +--- +id: redundancy +title: RedundancyType +--- + +RedundancyType represents the redundancy algorithm type for object data, which can be either +multi-replica or erasure coding. + +```tsx +export enum RedundancyType { + REDUNDANCY_EC_TYPE = 0, + REDUNDANCY_REPLICA_TYPE = 1, + UNRECOGNIZED = -1, +} +``` diff --git a/doc-site/docs/types/timestamp.mdx b/doc-site/docs/types/timestamp.mdx new file mode 100644 index 00000000..34ef07dc --- /dev/null +++ b/doc-site/docs/types/timestamp.mdx @@ -0,0 +1,27 @@ +--- +id: timestamp +title: Timestamp +--- + +A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a +count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an +epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the +Gregorian calendar backwards to year one. + +```jsx +export interface Timestamp { + /** + * Represents seconds of UTC time since Unix epoch + * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + * 9999-12-31T23:59:59Z inclusive. + */ + seconds: Long; + /** + * Non-negative fractions of a second at nanosecond resolution. Negative + * second values with fractions must still have non-negative nanos values + * that count forward in time. Must be from 0 to 999,999,999 + * inclusive. + */ + nanos: number; +} +``` diff --git a/doc-site/docs/types/visibility.mdx b/doc-site/docs/types/visibility.mdx new file mode 100644 index 00000000..e91de1c9 --- /dev/null +++ b/doc-site/docs/types/visibility.mdx @@ -0,0 +1,23 @@ +--- +id: visibility +title: VisibilityType +--- + +visibility means the bucket is private or public. if private, only bucket owner or grantee can read +it,otherwise every greenfield user can read it. + +## VisibilityType + +`VisibilityType` is enum: + +```jsx +/** VisibilityType is the resources public status. */ +export declare enum VisibilityType { + VISIBILITY_TYPE_UNSPECIFIED = 0, + VISIBILITY_TYPE_PUBLIC_READ = 1, + VISIBILITY_TYPE_PRIVATE = 2, + /** VISIBILITY_TYPE_INHERIT - If the bucket Visibility is inherit, it's finally set to private. If the object Visibility is inherit, it's the same as bucket. */ + VISIBILITY_TYPE_INHERIT = 3, + UNRECOGNIZED = -1 +} +``` diff --git a/doc-site/docusaurus.config.js b/doc-site/docusaurus.config.js new file mode 100644 index 00000000..a878e389 --- /dev/null +++ b/doc-site/docusaurus.config.js @@ -0,0 +1,139 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +// @ts-check +// Note: type annotations allow type checking and IDEs autocompletion + +const lightCodeTheme = require('prism-react-renderer/themes/github'); +const darkCodeTheme = require('prism-react-renderer/themes/dracula'); + +/** @type {import('@docusaurus/types').Config} */ +const config = { + title: 'Greenfield JavaScript SDK', + tagline: `An easy-to-use tool designed to help developers build decentralized applications (DApps) on the Greenfield blockchain.`, + favicon: 'img/favicon.ico', + + // Set the production url of your site here + url: 'https://greenfield-js-sdk.netlify.app', + // Set the // pathname under which your site is served + // For GitHub pages deployment, it is often '//' + baseUrl: '/', + + // GitHub pages deployment config. + // If you aren't using GitHub pages, you don't need these. + organizationName: 'bnb-chain', // Usually your GitHub org/user name. + projectName: 'greenfield-js-sdk', // Usually your repo name. + + onBrokenLinks: 'throw', + onBrokenMarkdownLinks: 'warn', + + // Even if you don't use internalization, you can use this field to set useful + // metadata like html lang. For example, if your site is Chinese, you may want + // to replace "en" with "zh-Hans". + i18n: { + defaultLocale: 'en', + locales: ['en'], + }, + + presets: [ + [ + '@docusaurus/preset-classic', + /** @type {import('@docusaurus/preset-classic').Options} */ + ({ + docs: { + routeBasePath: '/', + sidebarPath: require.resolve('./sidebars.js'), + editUrl: 'https://github.com/bnb-chain/greenfield-js-sdk/tree/docs_sit/doc-site/', + }, + blog: false, + theme: { + customCss: require.resolve('./src/css/custom.css'), + }, + }), + ], + ], + + themeConfig: + /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ + ({ + // Replace with your project's social card + image: 'img/docusaurus-social-card.jpg', + navbar: { + title: 'Greenfield JavaScript SDK', + logo: { + alt: 'Greenfield logo', + src: 'img/logo.svg', + }, + items: [ + // { + // type: 'docSidebar', + // sidebarId: 'GettingStartSidebar', + // position: 'left', + // label: 'Getting Started', + // }, + { + href: 'https://github.com/bnb-chain/greenfield-js-sdk', + label: 'GitHub', + position: 'right', + }, + ], + }, + footer: { + style: 'dark', + links: [ + { + title: 'Docs', + items: [ + { + label: 'Getting Started', + to: '/', + }, + { + label: 'Client', + to: '/category/client', + }, + { + label: 'API', + to: '/category/api', + }, + { + label: 'types', + to: '/category/types', + }, + ], + }, + { + title: 'Github', + items: [ + { + label: 'JS SDK', + href: 'https://github.com/bnb-chain/greenfield-js-sdk', + }, + { + label: 'Go SDK', + href: 'https://github.com/bnb-chain/greenfield-go-sdk', + }, + ], + }, + /* { + title: 'More', + items: [ + { + label: 'Blog', + to: '/blog', + }, + { + label: 'GitHub', + href: 'https://github.com/facebook/docusaurus', + }, + ], + }, */ + ], + copyright: `Copyright © ${new Date().getFullYear()}. Built with Docusaurus.`, + }, + prism: { + theme: lightCodeTheme, + darkTheme: darkCodeTheme, + }, + }), +}; + +module.exports = config; diff --git a/doc-site/package.json b/doc-site/package.json new file mode 100644 index 00000000..87f0f2b6 --- /dev/null +++ b/doc-site/package.json @@ -0,0 +1,43 @@ +{ + "name": "greenfield-js-sdk-docs", + "version": "0.0.0", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids" + }, + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/preset-classic": "2.4.1", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.2.1", + "prism-react-renderer": "^1.3.5", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "2.4.1" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "engines": { + "node": ">=16.14" + } +} diff --git a/doc-site/sidebars.js b/doc-site/sidebars.js new file mode 100644 index 00000000..3f4e702c --- /dev/null +++ b/doc-site/sidebars.js @@ -0,0 +1,31 @@ +/** + * Creating a sidebar enables you to: + - create an ordered group of docs + - render a sidebar for each doc of that group + - provide next/previous navigation + + The sidebars can be generated from the filesystem, or explicitly defined here. + + Create as many sidebars as you want. + */ + +// @ts-check + +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const sidebars = { + // By default, Docusaurus generates a sidebar from the docs folder structure + // tutorialSidebar: [{ type: 'autogenerated', dirName: '.' }], + + GettingStartSidebar: [ + { type: 'autogenerated', dirName: '.' }, + // { + // type: 'category', + // label: 'Getting Started', + // items: ['getting-started/overview', 'getting-started/install', 'getting-started/quick-start'], + // className: 'category-as-header', + // }, + // { type: 'autogenerated', dirName: './docs/api' }, + ], +}; + +module.exports = sidebars; diff --git a/doc-site/src/components/account/getAccount.tsx b/doc-site/src/components/account/getAccount.tsx new file mode 100644 index 00000000..60e7c9da --- /dev/null +++ b/doc-site/src/components/account/getAccount.tsx @@ -0,0 +1,7 @@ +import React from 'react'; + +const GetAccount = () => { + return

        ; +}; + +export default GetAccount; diff --git a/doc-site/src/components/snippers/api-types.tsx b/doc-site/src/components/snippers/api-types.tsx new file mode 100644 index 00000000..817505ad --- /dev/null +++ b/doc-site/src/components/snippers/api-types.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +type API_TYPE = 'Tx' | 'Query' | 'Storage Provider'; + +const ApiTypes = (props: { type: API_TYPE }) => { + const { type } = props; + return ( + + {type} + + ); +}; + +export default ApiTypes; diff --git a/doc-site/src/components/snippers/tx.mdx b/doc-site/src/components/snippers/tx.mdx new file mode 100644 index 00000000..784a36e0 --- /dev/null +++ b/doc-site/src/components/snippers/tx.mdx @@ -0,0 +1,6 @@ +:::tip + +This is only [construct](/client/tx-client) tx, next need [simulate](/client/tx-client#simulate) and +[broadcast](/client/tx-client#broadcast) + +::: diff --git a/doc-site/src/css/custom.css b/doc-site/src/css/custom.css new file mode 100644 index 00000000..2bc6a4cf --- /dev/null +++ b/doc-site/src/css/custom.css @@ -0,0 +1,30 @@ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ + +/* You can override the default Infima variables here. */ +:root { + --ifm-color-primary: #2e8555; + --ifm-color-primary-dark: #29784c; + --ifm-color-primary-darker: #277148; + --ifm-color-primary-darkest: #205d3b; + --ifm-color-primary-light: #33925d; + --ifm-color-primary-lighter: #359962; + --ifm-color-primary-lightest: #3cad6e; + --ifm-code-font-size: 95%; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); +} + +/* For readability concerns, you should choose a lighter palette in dark mode. */ +[data-theme='dark'] { + --ifm-color-primary: #25c2a0; + --ifm-color-primary-dark: #21af90; + --ifm-color-primary-darker: #1fa588; + --ifm-color-primary-darkest: #1a8870; + --ifm-color-primary-light: #29d5b0; + --ifm-color-primary-lighter: #32d8b4; + --ifm-color-primary-lightest: #4fddbf; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); +} diff --git a/doc-site/static/.nojekyll b/doc-site/static/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/doc-site/static/img/docusaurus-social-card.jpg b/doc-site/static/img/docusaurus-social-card.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ffcb448210e1a456cb3588ae8b396a597501f187 GIT binary patch literal 55746 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 fgzs%Vr*-jYG(YMS<ttdtee# literal 0 HcmV?d00001 diff --git a/doc-site/static/img/docusaurus.png b/doc-site/static/img/docusaurus.png new file mode 100644 index 0000000000000000000000000000000000000000..f458149e3c8f53335f28fbc162ae67f55575c881 GIT binary patch literal 5142 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 F{0H{b<4^zq literal 0 HcmV?d00001 diff --git a/doc-site/static/img/favicon.ico b/doc-site/static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..693bb20b8ec7a64c160b4cc0808e0ab5126646af GIT binary patch literal 4286 zcmb`JPiPcZ9LFb7;$}C*AQDmu>{5!9QbasRDWwS>N|92Elp@80G$2w+8$={D0V|;_ zB?l=X*wRDsWIad@q1_ogbY&@v^wdLXrAW3cC5Y&I5+o~8r=Q=YK5@Uc>tvavJ2?M-G!*6?qu{dHj8_ zNZiXE8#amAlIp|rbMPSQoAEEH-FUr{)TC_~?!F*LSIx(9YK=UKU@#eze9kdmc)kn% zjN+T$m%iSx`EVr1bLh?`wP~MC#>4p!oW`Tq)-m_Q90W@soYThF(~s!edC+HZkHd?< zyQ^2w{)BN0w0YMH{}kV)o|4CHxNjOQbA?y2xoE7T@dJ?UB>LI&&*nGpTjoFh1H{jQ zc&*YewC_iP%^TYveicMo@b{7PNuhS)5C1s)LQ~p7OZKWolkaB!#GVSgT;`gqJ{3M~ zKL>3ctbhEN6ZDyRKy0ul@qDBU|1&0L%l>BmuofimuKYcH*7(zprOx}$nuz_cY{#Fm zd1oRyy&b={|3gtc_sdmJq|p}nKo;;+4tm}<^8C%kxw-L zx7`2OKbU`L${yCTm)gFvcf&ae{)HFrKb!cI-#u_=qukJo=fA5I+LItUOH2;%u0}e> zU+Rd&c*--LPdE?fxDEl%e|-+f`QP?U&|MIZ#QeK$e9e{E`1~>c32i*YdkGvgapuZe z9|oLP)G8)N_F<_}gp=@Zn|}#^YFhPLtG2$3?>m|1e5PL+Z~@+B5LMQ24ub_dM|cOo zH8VckZ|pDmyXpzL-`d)e&(NR8WGMYkTZn3xHU)Pk#8 zm6}%HAdi-PN@C%~wK8K2C#XAVkM`0ukB!>McR%BN6}0YwO>I2nJd!$e62!H#_{(?p zv^}9MvuB$fYrR diff --git a/doc-site/static/img/undraw_docusaurus_mountain.svg b/doc-site/static/img/undraw_docusaurus_mountain.svg new file mode 100644 index 00000000..af961c49 --- /dev/null +++ b/doc-site/static/img/undraw_docusaurus_mountain.svg @@ -0,0 +1,171 @@ + + Easy to Use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc-site/static/img/undraw_docusaurus_react.svg b/doc-site/static/img/undraw_docusaurus_react.svg new file mode 100644 index 00000000..94b5cf08 --- /dev/null +++ b/doc-site/static/img/undraw_docusaurus_react.svg @@ -0,0 +1,170 @@ + + Powered by React + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc-site/static/img/undraw_docusaurus_tree.svg b/doc-site/static/img/undraw_docusaurus_tree.svg new file mode 100644 index 00000000..d9161d33 --- /dev/null +++ b/doc-site/static/img/undraw_docusaurus_tree.svg @@ -0,0 +1,40 @@ + + Focus on What Matters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/nextjs/src/components/group/delete/index.tsx b/examples/nextjs/src/components/group/delete/index.tsx index 828e318d..632f2706 100644 --- a/examples/nextjs/src/components/group/delete/index.tsx +++ b/examples/nextjs/src/components/group/delete/index.tsx @@ -6,7 +6,7 @@ export const DeleteGroup = () => { const { address, connector } = useAccount(); const [deleteGroupInfo, setDeleteGroupInfo] = useState({ - bucketName: '', + groupName: '', }); return ( @@ -14,10 +14,10 @@ export const DeleteGroup = () => {

        delete group

        { - setDeleteGroupInfo({ ...setDeleteGroupInfo, bucketName: e.target.value }); + setDeleteGroupInfo({ ...setDeleteGroupInfo, groupName: e.target.value }); }} /> @@ -26,7 +26,7 @@ export const DeleteGroup = () => { if (!address) return; const deleteGroupTx = await client.group.deleteGroup({ - groupName: deleteGroupInfo.bucketName, + groupName: deleteGroupInfo.groupName, operator: address, }); diff --git a/packages/js-sdk/src/api/account.ts b/packages/js-sdk/src/api/account.ts index 0e098191..23e0cf6e 100644 --- a/packages/js-sdk/src/api/account.ts +++ b/packages/js-sdk/src/api/account.ts @@ -34,15 +34,24 @@ export interface IAccount { */ getAccountBalance(request: QueryBalanceRequest): Promise; + /** + * Get all module accounts. + */ getModuleAccounts(): Promise; + /** + * Get module account by module name. + */ getModuleAccountByName(name: string): Promise; /** - * retrieves all payment accounts owned by the given address + * Get all payment accounts owned by the given owner address. */ getPaymentAccountsByOwner(owner: string): Promise; + /** + * Create a new payment account for the given address. + */ createPaymentAccount(msg: MsgCreatePaymentAccount): Promise; /** diff --git a/packages/js-sdk/src/api/bucket.ts b/packages/js-sdk/src/api/bucket.ts index 75288311..11cbd7cd 100644 --- a/packages/js-sdk/src/api/bucket.ts +++ b/packages/js-sdk/src/api/bucket.ts @@ -181,6 +181,9 @@ export interface IBucket { putBucketPolicy(bucketName: string, srcMsg: Omit): Promise; + /** + * Update the bucket meta on chain, including read quota, payment address or visibility. It will send the MsgUpdateBucketInfo msg to greenfield to update the meta. + */ updateBucketInfo( srcMsg: Omit & { chargedReadQuota?: string }, ): Promise; @@ -320,21 +323,21 @@ export class Bucket implements IBucket { } public async headBucket(bucketName: string) { - const rpc = await this.queryClient.getBucketQueryClient(); + const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.HeadBucket({ bucketName, }); } public async headBucketById(bucketId: string) { - const rpc = await this.queryClient.getBucketQueryClient(); + const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.HeadBucketById({ bucketId, }); } public async headBucketExtra(bucketName: string) { - const rpc = await this.queryClient.getBucketQueryClient(); + const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.HeadBucketExtra({ bucketName, }); @@ -346,7 +349,7 @@ export class Bucket implements IBucket { } public async getVerifyPermission(bucketName: string, operator: string, actionType: ActionType) { - const rpc = await this.queryClient.getBucketQueryClient(); + const rpc = await this.queryClient.getStorageQueryClient(); return rpc.VerifyPermission({ bucketName, operator, diff --git a/packages/js-sdk/src/api/group.ts b/packages/js-sdk/src/api/group.ts index 6f9b398a..e0fb5d2b 100644 --- a/packages/js-sdk/src/api/group.ts +++ b/packages/js-sdk/src/api/group.ts @@ -73,6 +73,9 @@ export interface IGroup { member: string, ): Promise; + /** + * @deprecated + */ listGroup(request: QueryListGroupsRequest): Promise; headGroupNFT(request: QueryNFTRequest): Promise; diff --git a/packages/js-sdk/src/api/objectt.ts b/packages/js-sdk/src/api/objectt.ts index 41c217f3..fd877c95 100644 --- a/packages/js-sdk/src/api/objectt.ts +++ b/packages/js-sdk/src/api/objectt.ts @@ -71,6 +71,7 @@ import { CreateObjectApprovalRequest, CreateObjectApprovalResponse, GetListObjectPoliciesRequest, + GetListObjectPoliciesResponse, GetPrivewObject, ListObjectsByBucketNameRequest, ListObjectsByIDsRequest, @@ -169,7 +170,9 @@ export interface IObject { listObjectsByIds(params: ListObjectsByIDsRequest): Promise>; - listObjectPolicies(params: GetListObjectPoliciesRequest): Promise; + listObjectPolicies( + params: GetListObjectPoliciesRequest, + ): Promise>; // TODO: GetObjectUploadProgress // TODO: getObjectStatusFromSP } diff --git a/packages/js-sdk/src/clients/queryclient.ts b/packages/js-sdk/src/clients/queryclient.ts index 8326aeb2..98ed08a9 100644 --- a/packages/js-sdk/src/clients/queryclient.ts +++ b/packages/js-sdk/src/clients/queryclient.ts @@ -10,10 +10,7 @@ import { QueryClientImpl as BridgeQueryClientImpl } from '@bnb-chain/greenfield- import { QueryClientImpl as ChallengeQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/query'; import { QueryClientImpl as PaymentQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; import { QueryClientImpl as SpQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/query'; -import { - QueryClientImpl as BucketQueryClientImpl, - QueryClientImpl as StorageQueryClientImpl, -} from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/query'; +import { QueryClientImpl as StorageQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/query'; import { QueryClientImpl as VirtualGroupClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/virtualgroup/query'; import { AuthExtension, @@ -78,11 +75,6 @@ export class RpcQueryClient { return new PaymentQueryClientImpl(rpcClient); } - public async getBucketQueryClient() { - const rpcClient = await this.getRpcClient(); - return new BucketQueryClientImpl(rpcClient); - } - public async getSpQueryClient() { const rpcClient = await this.getRpcClient(); return new SpQueryClientImpl(rpcClient); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2759ef34..594f16e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,25 +10,25 @@ importers: devDependencies: '@babel/core': specifier: ^7.22.5 - version: 7.22.20 + version: 7.22.15 '@changesets/changelog-github': specifier: ^0.4.8 version: 0.4.8 '@changesets/cli': specifier: ^2.26.1 - version: 2.26.2 + version: 2.26.1 '@commitlint/cli': specifier: ^17.6.5 - version: 17.7.1 + version: 17.6.5 '@commitlint/config-conventional': specifier: ^17.6.5 - version: 17.7.0 + version: 17.6.5 '@rollup/plugin-alias': specifier: ^4.0.4 version: 4.0.4(rollup@2.79.1) '@rollup/plugin-babel': specifier: ^5.3.1 - version: 5.3.1(@babel/core@7.22.20)(rollup@2.79.1) + version: 5.3.1(@babel/core@7.22.15)(rollup@2.79.1) '@rollup/plugin-commonjs': specifier: ^22.0.2 version: 22.0.2(rollup@2.79.1) @@ -43,49 +43,49 @@ importers: version: 3.0.2(rollup@2.79.1) '@rollup/plugin-typescript': specifier: ^11.1.3 - version: 11.1.3(rollup@2.79.1)(tslib@2.6.2)(typescript@4.9.5) + version: 11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5) '@types/chai': specifier: ^4.3.5 - version: 4.3.6 + version: 4.3.5 '@types/mocha': specifier: ^9.1.1 version: 9.1.1 '@types/node': specifier: ^18.16.18 - version: 18.17.17 + version: 18.16.18 '@types/react': specifier: ^18.2.12 - version: 18.2.22 + version: 18.2.12 '@types/react-dom': specifier: ^18.2.5 - version: 18.2.7 + version: 18.2.5 '@typescript-eslint/eslint-plugin': specifier: ^5.59.11 - version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@4.9.5) + version: 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) '@typescript-eslint/parser': specifier: ^5.59.11 - version: 5.62.0(eslint@8.49.0)(typescript@4.9.5) + version: 5.59.11(eslint@8.48.0)(typescript@4.9.5) chai: specifier: ^4.3.7 - version: 4.3.8 + version: 4.3.7 conventional-changelog-cmyr-config: specifier: ^2.1.0 - version: 2.1.1 + version: 2.1.0 eslint: specifier: ^8.48.0 - version: 8.49.0 + version: 8.48.0 eslint-config-react-app: specifier: ^7.0.1 - version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.49.0)(typescript@4.9.5) + version: 7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0)(typescript@4.9.5) eslint-plugin-prettier: specifier: ^4.2.1 - version: 4.2.1(eslint@8.49.0)(prettier@2.8.8) + version: 4.2.1(eslint@8.48.0)(prettier@2.8.8) husky: specifier: ^8.0.3 version: 8.0.3 lint-staged: specifier: ^13.2.2 - version: 13.3.0 + version: 13.2.2 mocha: specifier: ^10.2.0 version: 10.2.0 @@ -108,6 +108,34 @@ importers: specifier: ^7.0.2 version: 7.0.2(rollup@2.79.1) + doc-site: + dependencies: + '@docusaurus/core': + specifier: 2.4.1 + version: 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/preset-classic': + specifier: 2.4.1 + version: 2.4.1(@algolia/client-search@4.20.0)(@types/react@18.2.12)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.8.2)(typescript@4.9.5) + '@mdx-js/react': + specifier: ^1.6.22 + version: 1.6.22(react@17.0.2) + clsx: + specifier: ^1.2.1 + version: 1.2.1 + prism-react-renderer: + specifier: ^1.3.5 + version: 1.3.5(react@17.0.2) + react: + specifier: ^17.0.2 + version: 17.0.2 + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) + devDependencies: + '@docusaurus/module-type-aliases': + specifier: 2.4.1 + version: 2.4.1(react-dom@17.0.2)(react@17.0.2) + examples/nextjs: dependencies: '@bnb-chain/greenfield-js-sdk': @@ -133,43 +161,43 @@ importers: version: 5.7.0 '@metamask/eth-sig-util': specifier: ^5.0.2 - version: 5.1.0 + version: 5.0.2 '@next/font': specifier: 13.1.6 version: 13.1.6 '@rainbow-me/rainbowkit': specifier: ^1.0.5 - version: 1.0.11(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0)(viem@1.10.14)(wagmi@1.4.2) + version: 1.0.5(@types/react@18.2.12)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0) '@types/node': specifier: ^18.7.1 - version: 18.17.17 + version: 18.16.18 '@types/react': specifier: ^18.0.17 - version: 18.2.22 + version: 18.2.12 '@types/react-dom': specifier: ^18.0.6 - version: 18.2.7 + version: 18.2.5 axios: specifier: ^1.3.4 - version: 1.5.0 + version: 1.3.4 cors: specifier: ^2.8.5 version: 2.8.5 eslint: specifier: ^8.21.0 - version: 8.49.0 + version: 8.48.0 eslint-config-next: specifier: 13.1.6 - version: 13.1.6(eslint@8.49.0)(typescript@4.9.5) + version: 13.1.6(eslint@8.48.0)(typescript@4.9.5) evmosjs: specifier: ^0.2.17 version: 0.2.17 long: specifier: ^5.2.1 - version: 5.2.3 + version: 5.2.1 next: specifier: 13.1.6 - version: 13.1.6(@babel/core@7.22.20)(react-dom@18.2.0)(react@18.2.0) + version: 13.1.6(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 @@ -181,17 +209,17 @@ importers: version: 4.9.5 viem: specifier: ^1.0.6 - version: 1.10.14(typescript@4.9.5) + version: 1.0.6(typescript@4.9.5) wagmi: specifier: ^1.2.0 - version: 1.4.2(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(viem@1.10.14) + version: 1.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(viem@1.0.6) devDependencies: cross-env: specifier: ^7.0.3 version: 7.0.3 dotenv: specifier: ^16.0.3 - version: 16.3.1 + version: 16.0.3 examples/nodejs: dependencies: @@ -241,7 +269,7 @@ importers: version: 6.0.3 '@types/fs-extra': specifier: ^11.0.1 - version: 11.0.2 + version: 11.0.1 '@types/validate-npm-package-name': specifier: ^4.0.0 version: 4.0.0 @@ -250,10 +278,10 @@ importers: devDependencies: clean-webpack-plugin: specifier: ^4.0.0 - version: 4.0.0(webpack@5.88.2) + version: 4.0.0(webpack@5.88.1) copy-webpack-plugin: specifier: ^11.0.0 - version: 11.0.0(webpack@5.88.2) + version: 11.0.0(webpack@5.88.1) rimraf: specifier: ^3.0.2 version: 3.0.2 @@ -262,10 +290,10 @@ importers: version: 5.2.2 webpack: specifier: ^5.88.1 - version: 5.88.2(webpack-cli@5.1.4) + version: 5.88.1(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 - version: 5.1.4(webpack@5.88.2) + version: 5.1.4(webpack@5.88.1) packages/js-sdk: dependencies: @@ -298,19 +326,19 @@ importers: version: 5.7.0 '@metamask/eth-sig-util': specifier: ^5.0.2 - version: 5.1.0 + version: 5.0.2 cross-fetch: specifier: ^3.1.6 - version: 3.1.8 + version: 3.1.6 dayjs: specifier: ^1.11.7 - version: 1.11.9 + version: 1.11.7 dotenv: specifier: ^16.0.3 - version: 16.3.1 + version: 16.0.3 ethereum-cryptography: specifier: ^2.0.0 - version: 2.1.2 + version: 2.0.0 fast-xml-parser: specifier: ^4.2.7 version: 4.2.7 @@ -325,7 +353,7 @@ importers: version: 4.7.0 long: specifier: ^5.2.1 - version: 5.2.3 + version: 5.2.1 reflect-metadata: specifier: ^0.1.13 version: 0.1.13 @@ -335,13 +363,13 @@ importers: devDependencies: '@jest/globals': specifier: ^29.5.0 - version: 29.7.0 + version: 29.5.0 '@rollup/plugin-typescript': specifier: ^11.1.3 - version: 11.1.3(rollup@2.79.1)(tslib@2.6.2)(typescript@4.9.5) + version: 11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5) '@types/jest': specifier: ^29.5.1 - version: 29.5.5 + version: 29.5.1 '@types/lodash.clonedeep': specifier: ^4.5.7 version: 4.5.7 @@ -356,22 +384,22 @@ importers: version: 3.0.1 '@types/xml2js': specifier: ^0.4.11 - version: 0.4.12 + version: 0.4.11 jest: specifier: ^29.5.0 - version: 29.7.0(@types/node@18.17.17)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) mime: specifier: ^3.0.0 version: 3.0.0 ts-jest: specifier: ^29.1.0 - version: 29.1.1(@babel/core@7.22.20)(jest@29.7.0)(typescript@4.9.5) + version: 29.1.0(@babel/core@7.22.15)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.17.17)(typescript@4.9.5) + version: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) tslib: specifier: ^2.5.0 - version: 2.6.2 + version: 2.5.2 typescript: specifier: ^4.9.5 version: 4.9.5 @@ -380,10 +408,10 @@ importers: devDependencies: clean-webpack-plugin: specifier: ^4.0.0 - version: 4.0.0(webpack@5.88.2) + version: 4.0.0(webpack@5.88.1) copy-webpack-plugin: specifier: ^11.0.0 - version: 11.0.0(webpack@5.88.2) + version: 11.0.0(webpack@5.88.1) rimraf: specifier: ^3.0.2 version: 3.0.2 @@ -392,10 +420,10 @@ importers: version: 5.2.2 webpack: specifier: ^5.88.1 - version: 5.88.2(webpack-cli@5.1.4) + version: 5.88.1(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 - version: 5.1.4(webpack@5.88.2) + version: 5.1.4(webpack@5.88.1) packages: @@ -403,8 +431,146 @@ packages: resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} - /@adraffy/ens-normalize@1.9.4: - resolution: {integrity: sha512-UK0bHA7hh9cR39V+4gl2/NnBBjoXIxkuWAPCaY4X7fbH4L/azIi7ilWOCjMUYfpJgraLUAqkRi2BqrjME8Rynw==} + /@adraffy/ens-normalize@1.9.0: + resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} + dev: false + + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.8.2): + resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.8.2) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + dev: false + + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.8.2): + resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} + peerDependencies: + search-insights: '>= 1 < 3' + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + search-insights: 2.8.2 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + dev: false + + /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): + resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + '@algolia/client-search': 4.20.0 + algoliasearch: 4.20.0 + dev: false + + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): + resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/client-search': 4.20.0 + algoliasearch: 4.20.0 + dev: false + + /@algolia/cache-browser-local-storage@4.20.0: + resolution: {integrity: sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==} + dependencies: + '@algolia/cache-common': 4.20.0 + dev: false + + /@algolia/cache-common@4.20.0: + resolution: {integrity: sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==} + dev: false + + /@algolia/cache-in-memory@4.20.0: + resolution: {integrity: sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==} + dependencies: + '@algolia/cache-common': 4.20.0 + dev: false + + /@algolia/client-account@4.20.0: + resolution: {integrity: sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==} + dependencies: + '@algolia/client-common': 4.20.0 + '@algolia/client-search': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: false + + /@algolia/client-analytics@4.20.0: + resolution: {integrity: sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==} + dependencies: + '@algolia/client-common': 4.20.0 + '@algolia/client-search': 4.20.0 + '@algolia/requester-common': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: false + + /@algolia/client-common@4.20.0: + resolution: {integrity: sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==} + dependencies: + '@algolia/requester-common': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: false + + /@algolia/client-personalization@4.20.0: + resolution: {integrity: sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==} + dependencies: + '@algolia/client-common': 4.20.0 + '@algolia/requester-common': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: false + + /@algolia/client-search@4.20.0: + resolution: {integrity: sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==} + dependencies: + '@algolia/client-common': 4.20.0 + '@algolia/requester-common': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: false + + /@algolia/events@4.0.1: + resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} + dev: false + + /@algolia/logger-common@4.20.0: + resolution: {integrity: sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==} + dev: false + + /@algolia/logger-console@4.20.0: + resolution: {integrity: sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==} + dependencies: + '@algolia/logger-common': 4.20.0 + dev: false + + /@algolia/requester-browser-xhr@4.20.0: + resolution: {integrity: sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==} + dependencies: + '@algolia/requester-common': 4.20.0 + dev: false + + /@algolia/requester-common@4.20.0: + resolution: {integrity: sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==} + dev: false + + /@algolia/requester-node-http@4.20.0: + resolution: {integrity: sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==} + dependencies: + '@algolia/requester-common': 4.20.0 + dev: false + + /@algolia/transporter@4.20.0: + resolution: {integrity: sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==} + dependencies: + '@algolia/cache-common': 4.20.0 + '@algolia/logger-common': 4.20.0 + '@algolia/requester-common': 4.20.0 dev: false /@ampproject/remapping@2.2.1: @@ -418,27 +584,51 @@ packages: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.22.20 + '@babel/highlight': 7.22.13 chalk: 2.4.2 - /@babel/compat-data@7.22.20: - resolution: {integrity: sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==} + /@babel/compat-data@7.22.9: + resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} + engines: {node: '>=6.9.0'} + + /@babel/core@7.12.9: + resolution: {integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.12.9) + '@babel/helpers': 7.22.15 + '@babel/parser': 7.22.15 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 + convert-source-map: 1.9.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + lodash: 4.17.21 + resolve: 1.22.2 + semver: 5.7.1 + source-map: 0.5.7 + transitivePeerDependencies: + - supports-color + dev: false - /@babel/core@7.22.20: - resolution: {integrity: sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==} + /@babel/core@7.22.15: + resolution: {integrity: sha512-PtZqMmgRrvj8ruoEOIwVA3yoF91O+Hgw9o7DAUTNBA6Mo2jpu31clx9a7Nz/9JznqetTR6zwfC4L3LAjKQXUwA==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.22.13 '@babel/generator': 7.22.15 '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.22.20(@babel/core@7.22.20) + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) '@babel/helpers': 7.22.15 - '@babel/parser': 7.22.16 + '@babel/parser': 7.22.15 '@babel/template': 7.22.15 - '@babel/traverse': 7.22.20 - '@babel/types': 7.22.19 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 convert-source-map: 1.9.0 debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 @@ -447,16 +637,16 @@ packages: transitivePeerDependencies: - supports-color - /@babel/eslint-parser@7.22.15(@babel/core@7.22.20)(eslint@8.49.0): - resolution: {integrity: sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==} + /@babel/eslint-parser@7.21.8(@babel/core@7.22.15)(eslint@8.48.0): + resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: - '@babel/core': ^7.11.0 + '@babel/core': '>=7.11.0' eslint: ^7.5.0 || ^8.0.0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.49.0 + eslint: 8.48.0 eslint-visitor-keys: 2.1.0 semver: 6.3.1 dev: true @@ -465,7 +655,7 @@ packages: resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.19 + '@babel/types': 7.22.15 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 @@ -474,73 +664,71 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.19 - dev: true + '@babel/types': 7.22.15 - /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: - resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.3: + resolution: {integrity: sha512-ahEoxgqNoYXm0k22TvOke48i1PkavGu0qGCmcq9ugi6gnmvKNaMjKBSrZTnWUi1CFEeNAUiVba0Wtzm03aSkJg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.19 - dev: true + '@babel/types': 7.22.15 /@babel/helper-compilation-targets@7.22.15: resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.22.20 + '@babel/compat-data': 7.22.9 '@babel/helper-validator-option': 7.22.15 browserslist: 4.21.10 lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} + /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.22.15): + resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.15 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.22.20) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.3 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-replace-supers': 7.22.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 - dev: true + transitivePeerDependencies: + - supports-color - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + /@babel/helper-create-regexp-features-plugin@7.22.1(@babel/core@7.22.15): + resolution: {integrity: sha512-WWjdnfR3LPIe+0EY8td7WmjhytxXtjKAEpnAxun/hkNiyOaPlvGK+NZaBFIdi9ndYV3Gav7BpFvtUwnaJlwi1w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 - dev: true - /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.22.20): - resolution: {integrity: sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==} + /@babel/helper-define-polyfill-provider@0.4.0(@babel/core@7.22.15): + resolution: {integrity: sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==} peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/core': ^7.4.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 - resolve: 1.22.6 + resolve: 1.22.2 + semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /@babel/helper-environment-visitor@7.22.20: - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + /@babel/helper-environment-visitor@7.22.5: + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} /@babel/helper-function-name@7.22.5: @@ -548,1269 +736,1296 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.22.19 + '@babel/types': 7.22.15 /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.19 + '@babel/types': 7.22.15 - /@babel/helper-member-expression-to-functions@7.22.15: - resolution: {integrity: sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==} + /@babel/helper-member-expression-to-functions@7.22.3: + resolution: {integrity: sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.19 - dev: true + '@babel/types': 7.22.15 /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.19 + '@babel/types': 7.22.15 + + /@babel/helper-module-transforms@7.22.15(@babel/core@7.12.9): + resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.15 + dev: false - /@babel/helper-module-transforms@7.22.20(@babel/core@7.22.20): - resolution: {integrity: sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==} + /@babel/helper-module-transforms@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-environment-visitor': 7.22.20 + '@babel/core': 7.22.15 + '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.22.15 - /@babel/helper-optimise-call-expression@7.22.5: - resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + /@babel/helper-optimise-call-expression@7.18.6: + resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.19 - dev: true + '@babel/types': 7.22.15 + + /@babel/helper-plugin-utils@7.10.4: + resolution: {integrity: sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==} + dev: false /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.22.20): - resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.22.15): + resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.22.20 - dev: true + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-wrap-function': 7.20.5 + '@babel/types': 7.22.15 + transitivePeerDependencies: + - supports-color - /@babel/helper-replace-supers@7.22.20(@babel/core@7.22.20): - resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + /@babel/helper-replace-supers@7.22.1: + resolution: {integrity: sha512-ut4qrkE4AuSfrwHSps51ekR1ZY/ygrP1tp0WFm8oVq6nzc/hvfV/22JylndIbsf2U2M9LOMwiSddr6y+78j+OQ==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.22.15 - '@babel/helper-optimise-call-expression': 7.22.5 - dev: true + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.3 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 + transitivePeerDependencies: + - supports-color /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.19 + '@babel/types': 7.22.15 - /@babel/helper-skip-transparent-expression-wrappers@7.22.5: - resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + /@babel/helper-skip-transparent-expression-wrappers@7.20.0: + resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.19 - dev: true + '@babel/types': 7.22.15 /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.19 + '@babel/types': 7.22.15 /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + /@babel/helper-validator-identifier@7.22.15: + resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} engines: {node: '>=6.9.0'} /@babel/helper-validator-option@7.22.15: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - /@babel/helper-wrap-function@7.22.20: - resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + /@babel/helper-wrap-function@7.20.5: + resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-function-name': 7.22.5 '@babel/template': 7.22.15 - '@babel/types': 7.22.19 - dev: true + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 + transitivePeerDependencies: + - supports-color /@babel/helpers@7.22.15: resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/traverse': 7.22.20 - '@babel/types': 7.22.19 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color - /@babel/highlight@7.22.20: - resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} + /@babel/highlight@7.22.13: + resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.22.15 chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.22.16: - resolution: {integrity: sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==} + /@babel/parser@7.22.15: + resolution: {integrity: sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.22.19 + '@babel/types': 7.22.15 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-6r4yRwEnorYByILoDRnEqxtojYKuiIv9FojW2E8GUKo9eWBwbKcd9IiZOZpdyXc64RmyGGyPu3/uAcrz/dq2kQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.22.15(@babel/core@7.22.20) - dev: true + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.22.15) - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.20): + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 + transitivePeerDependencies: + - supports-color dev: true - /@babel/plugin-proposal-decorators@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-kc0VvbbUyKelvzcKOSyQUSVVXS5pT3UhRB0e3c9An86MvLqs+gx0dN4asllrDluqSa3m9YyooXKGOFVomnyFkg==} + /@babel/plugin-proposal-decorators@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-XjTKH3sHr6pPqG+hR1NCdVupwiosfdKM2oSMyKQVQ5Bym9l/p7BuLAqT5U32zZzRCfPq/TPRPzMiiTE9bOXU4w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.22.20) + '@babel/helper-replace-supers': 7.22.1 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/plugin-syntax-decorators': 7.22.10(@babel/core@7.22.20) + '@babel/plugin-syntax-decorators': 7.22.3(@babel/core@7.22.15) + transitivePeerDependencies: + - supports-color dev: true - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.20): + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.22.20): + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.20) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) dev: true - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.20): + /@babel/plugin-proposal-object-rest-spread@7.12.1(@babel/core@7.12.9): + resolution: {integrity: sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) + '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.12.9) + dev: false + + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.15): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.20) + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) dev: true - /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.22.20): + /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 + transitivePeerDependencies: + - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.20): - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.22.15): + resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - dev: true + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.15) + transitivePeerDependencies: + - supports-color - /@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.22.20): - resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} + engines: {node: '>=4'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.20) - dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.20): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.15): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.20): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.20): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.15): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.20): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.15): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-decorators@7.22.10(@babel/core@7.22.20): - resolution: {integrity: sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==} + /@babel/plugin-syntax-decorators@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-R16Zuge73+8/nLcDjkIpyhi5wIbN7i7fiuLJR8yQX7vPAa/ltUKtd3iLbb4AgP5nrLi91HnNUNosELIGUGH1bg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.20): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.20): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.20): + /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.15): resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.22.15): + resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} + /@babel/plugin-syntax-import-attributes@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-i35jZJv6aO7hxEbIWQ41adVfOzjm9dcYDNeWlBMd8p0ZQRtNUCBrmGwZt+H5lb+oOC9a3svp956KP0oWGA1YsA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.20): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.15): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.20): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.20): + /@babel/plugin-syntax-jsx@7.12.1(@babel/core@7.12.9): + resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.15): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.20): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.15): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.20): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.20): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.15): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.20): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.12.9): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.15): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.20): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.20): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.20): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.15): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.20): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.15): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} + /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.22.15): + resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.20): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} + /@babel/plugin-transform-arrow-functions@7.21.5(@babel/core@7.22.15): + resolution: {integrity: sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-async-generator-functions@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==} + /@babel/plugin-transform-async-generator-functions@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-36A4Aq48t66btydbZd5Fk0/xJqbpg/v4QWI4AH4cYHBXy9Mu42UOupZpebKFiCFNT9S9rJFcsld0gsv0ayLjtA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-environment-visitor': 7.22.20 + '@babel/core': 7.22.15 + '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.22.20) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.20) - dev: true + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} + /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.22.15): + resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.22.20) - dev: true + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.22.15) + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} + /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-block-scoping@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==} + /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.22.15): + resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} + /@babel/plugin-transform-class-properties@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-mASLsd6rhOrLZ5F3WbCxkzl67mmOnqik0zrg5W6D/X0QMW7HtvnoL1dRARLKIbMP3vXwkwziuLesPqWVGIl6Bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.22.20): - resolution: {integrity: sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==} + /@babel/plugin-transform-class-static-block@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-5BirgNWNOx7cwbTJCOmKFJ1pZjwk5MUfMIwiBBvsirCJMZeQgs5pk6i1OlkVg+1Vef5LfBahFOrdCnAWvkVKMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.20) - dev: true + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.15) + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-classes@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==} + /@babel/plugin-transform-classes@7.21.0(@babel/core@7.22.15): + resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-optimise-call-expression': 7.18.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.22.20) + '@babel/helper-replace-supers': 7.22.1 '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 - dev: true + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} + /@babel/plugin-transform-computed-properties@7.21.5(@babel/core@7.22.15): + resolution: {integrity: sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 - dev: true - /@babel/plugin-transform-destructuring@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==} + /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.22.15): + resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} + /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} + /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.22.15): + resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.22.20): - resolution: {integrity: sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==} + /@babel/plugin-transform-dynamic-import@7.22.1(@babel/core@7.22.15): + resolution: {integrity: sha512-rlhWtONnVBPdmt+jeewS0qSnMz/3yLFrqAP8hHC6EDcrYRSyuz9f9yQhHvVn2Ad6+yO9fHXac5piudeYrInxwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.20) - dev: true + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.15) - /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} + /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/core': 7.22.15 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.22.20): - resolution: {integrity: sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==} + /@babel/plugin-transform-export-namespace-from@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-5Ti1cHLTDnt3vX61P9KZ5IG09bFXp4cDVFJIAeCZuxu9OXXJJZp5iP0n/rzM2+iAutJY+KWEyyHcRaHlpQ/P5g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.20) - dev: true + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.15) - /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} + /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.22.15): + resolution: {integrity: sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.15) dev: true - /@babel/plugin-transform-for-of@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==} + /@babel/plugin-transform-for-of@7.21.5(@babel/core@7.22.15): + resolution: {integrity: sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} + /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.22.15): + resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-function-name': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.22.20): - resolution: {integrity: sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==} + /@babel/plugin-transform-json-strings@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-IuvOMdeOOY2X4hRNAT6kwbePtK21BUyrAEgLKviL8pL6AEEVUVcqtRdN/HJXBLGIbt9T3ETmXRnFedRRmQNTYw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.20) - dev: true + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.15) - /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} + /@babel/plugin-transform-literals@7.18.9(@babel/core@7.22.15): + resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.22.20): - resolution: {integrity: sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==} + /@babel/plugin-transform-logical-assignment-operators@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-CbayIfOw4av2v/HYZEsH+Klks3NC2/MFIR3QR8gnpGNNPEaq2fdlVCRYG/paKs7/5hvBLQ+H70pGWOHtlNEWNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.20) - dev: true + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.15) - /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} + /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} + /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.22.15): + resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-module-transforms': 7.22.20(@babel/core@7.22.20) + '@babel/core': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-modules-commonjs@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==} + /@babel/plugin-transform-modules-commonjs@7.21.5(@babel/core@7.22.15): + resolution: {integrity: sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-module-transforms': 7.22.20(@babel/core@7.22.20) + '@babel/core': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 - dev: true - /@babel/plugin-transform-modules-systemjs@7.22.11(@babel/core@7.22.20): - resolution: {integrity: sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==} + /@babel/plugin-transform-modules-systemjs@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-V21W3bKLxO3ZjcBJZ8biSvo5gQ85uIXW2vJfh7JSWf/4SLUSr1tOoHX3ruN4+Oqa2m+BKfsxTR1I+PsvkIWvNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.22.20(@babel/core@7.22.20) + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - dev: true + '@babel/helper-validator-identifier': 7.22.15 - /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} + /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-module-transforms': 7.22.20(@babel/core@7.22.20) + '@babel/core': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + /@babel/plugin-transform-named-capturing-groups-regex@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-c6HrD/LpUdNNJsISQZpds3TXvfYIAbo+efE9aWmY/PmSRD0agrJ9cPMt4BmArwUQ7ZymEWTFjTyp+yReLJZh0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} + /@babel/plugin-transform-new-target@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-5RuJdSo89wKdkRTqtM9RVVJzHum9c2s0te9rB7vZC1zKKxcioWIy+xcu4OoIAjyFZhb/bp5KkunuLin1q7Ct+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.22.20): - resolution: {integrity: sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==} + /@babel/plugin-transform-nullish-coalescing-operator@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-CpaoNp16nX7ROtLONNuCyenYdY/l7ZsR6aoVa7rW7nMWisoNoQNIH5Iay/4LDyRjKMuElMqXiBoOQCDLTMGZiw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.20) - dev: true + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) - /@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.22.20): - resolution: {integrity: sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==} + /@babel/plugin-transform-numeric-separator@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-+AF88fPDJrnseMh5vD9+SH6wq4ZMvpiTMHh58uLs+giMEyASFVhcT3NkoyO+NebFCNnpHJEq5AXO2txV4AGPDQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.20) - dev: true + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) - /@babel/plugin-transform-object-rest-spread@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==} + /@babel/plugin-transform-object-rest-spread@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-38bzTsqMMCI46/TQnJwPPpy33EjLCc1Gsm2hRTF6zTMWnKsN61vdrpuzIEGQyKEhDSYDKyZHrrd5FMj4gcUHhw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.20 - '@babel/core': 7.22.20 + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.15 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.20) - '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.20) - dev: true + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.15) - /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} + /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.22.20) - dev: true + '@babel/helper-replace-supers': 7.22.1 + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.22.20): - resolution: {integrity: sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==} + /@babel/plugin-transform-optional-catch-binding@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-bnDFWXFzWY0BsOyqaoSXvMQ2F35zutQipugog/rqotL2S4ciFOKlRYUu9djt4iq09oh2/34hqfRR2k1dIvuu4g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.20) - dev: true + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) - /@babel/plugin-transform-optional-chaining@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==} + /@babel/plugin-transform-optional-chaining@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-63v3/UFFxhPKT8j8u1jTTGVyITxl7/7AfOqK8C5gz1rHURPUGe3y5mvIf68eYKGoBNahtJnTxBKug4BQOnzeJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.20) - dev: true + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) - /@babel/plugin-transform-parameters@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==} + /@babel/plugin-transform-parameters@7.22.3(@babel/core@7.12.9): + resolution: {integrity: sha512-x7QHQJHPuD9VmfpzboyGJ5aHEr9r7DsAsdxdhJiTB3J3j8dyl+NFZ+rX5Q2RWFDCs61c06qBfS4ys2QYn8UkMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.22.5 - dev: true + dev: false - /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} + /@babel/plugin-transform-parameters@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-x7QHQJHPuD9VmfpzboyGJ5aHEr9r7DsAsdxdhJiTB3J3j8dyl+NFZ+rX5Q2RWFDCs61c06qBfS4ys2QYn8UkMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.22.20): - resolution: {integrity: sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==} + /@babel/plugin-transform-private-methods@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-fC7jtjBPFqhqpPAE+O4LKwnLq7gGkD3ZmC2E3i4qWH34mH3gOg2Xrq5YMHUq6DM30xhqM1DNftiRaSqVjEG+ug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-transform-private-property-in-object@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-C7MMl4qWLpgVCbXfj3UW8rR1xeCnisQ0cU7YJHV//8oNBS0aCIVg1vFnZXxOckHhEpQyqNNkWmvSEWnMLlc+Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.20) - dev: true + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.15) + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} + /@babel/plugin-transform-react-constant-elements@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true + dev: false - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.20) - dev: true + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-react-jsx-development@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) - /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.22.20): + /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.22.15): resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.20) - '@babel/types': 7.22.19 - dev: true + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) + '@babel/types': 7.22.15 - /@babel/plugin-transform-react-pure-annotations@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==} + /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.22.20): - resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} + /@babel/plugin-transform-regenerator@7.21.5(@babel/core@7.22.15): + resolution: {integrity: sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - regenerator-transform: 0.15.2 - dev: true + regenerator-transform: 0.15.1 - /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} + /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-runtime@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==} + /@babel/plugin-transform-runtime@7.22.4(@babel/core@7.22.15): + resolution: {integrity: sha512-Urkiz1m4zqiRo17klj+l3nXgiRTFQng91Bc1eiLF7BMQu1e7wE5Gcq9xSv062IF068NHjcutSbIMev60gXxAvA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.20) - babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.20) - babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.20) + babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.15) + babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.15) + babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.15) semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} + /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} + /@babel/plugin-transform-spread@7.20.7(@babel/core@7.22.15): + resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: true + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} + /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} + /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.22.15): + resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} + /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.22.15): + resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} + /@babel/plugin-transform-typescript@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-pyjnCIniO5PNaEuGxT28h0HbMru3qCVrMqVgVOz/krComdIrY9W6FCLBq9NWHY8HDGaUlan+UhmZElDENIfCcw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.20) + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.20) - dev: true + '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.15) + transitivePeerDependencies: + - supports-color - /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.22.20): - resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} + /@babel/plugin-transform-unicode-escapes@7.21.5(@babel/core@7.22.15): + resolution: {integrity: sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} + /@babel/plugin-transform-unicode-property-regex@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-5ScJ+OmdX+O6HRuMGW4kv7RL9vIKdtdAj9wuWUKy1wbHY3jaM/UlyIiC1G7J6UJiiyMukjjK0QwL3P0vBd0yYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} + /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.20): - resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} + /@babel/plugin-transform-unicode-sets-regex@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-hNufLdkF8vqywRp+P55j4FHXqAX2LRUccoZHH7AFn1pq5ZOO2ISKW9w13bFZVjBoTqeve2HOgoJCcaziJVhGNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.20) + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/preset-env@7.22.20(@babel/core@7.22.20): - resolution: {integrity: sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==} + /@babel/preset-env@7.22.4(@babel/core@7.22.15): + resolution: {integrity: sha512-c3lHOjbwBv0TkhYCr+XCR6wKcSZ1QbQTVdSkZUaVpLv8CVWotBMArWUi5UAJrcrQaEnleVkkvaV8F/pmc/STZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.20 - '@babel/core': 7.22.20 + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.15 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.15(@babel/core@7.22.20) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.15(@babel/core@7.22.20) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.20) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.20) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.20) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.20) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.20) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.20) - '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.20) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.20) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.20) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.20) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.20) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.20) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.20) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.20) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.20) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.20) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.20) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-async-generator-functions': 7.22.15(@babel/core@7.22.20) - '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-block-scoping': 7.22.15(@babel/core@7.22.20) - '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-class-static-block': 7.22.11(@babel/core@7.22.20) - '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.22.20) - '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-destructuring': 7.22.15(@babel/core@7.22.20) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-dynamic-import': 7.22.11(@babel/core@7.22.20) - '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-export-namespace-from': 7.22.11(@babel/core@7.22.20) - '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.22.20) - '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-json-strings': 7.22.11(@babel/core@7.22.20) - '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-logical-assignment-operators': 7.22.11(@babel/core@7.22.20) - '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.20) - '@babel/plugin-transform-modules-systemjs': 7.22.11(@babel/core@7.22.20) - '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-nullish-coalescing-operator': 7.22.11(@babel/core@7.22.20) - '@babel/plugin-transform-numeric-separator': 7.22.11(@babel/core@7.22.20) - '@babel/plugin-transform-object-rest-spread': 7.22.15(@babel/core@7.22.20) - '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-optional-catch-binding': 7.22.11(@babel/core@7.22.20) - '@babel/plugin-transform-optional-chaining': 7.22.15(@babel/core@7.22.20) - '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.20) - '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-private-property-in-object': 7.22.11(@babel/core@7.22.20) - '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.22.20) - '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.22.20) - '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.20) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.22.20) - '@babel/types': 7.22.19 - babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.20) - babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.20) - babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.20) - core-js-compat: 3.32.2 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.15) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.15) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.22.15) + '@babel/plugin-syntax-import-attributes': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.15) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.15) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-arrow-functions': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-async-generator-functions': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.22.15) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-transform-class-properties': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-class-static-block': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-transform-computed-properties': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.22.15) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-transform-dynamic-import': 7.22.1(@babel/core@7.22.15) + '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-export-namespace-from': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-for-of': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-transform-json-strings': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-transform-logical-assignment-operators': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-modules-amd': 7.20.11(@babel/core@7.22.15) + '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-modules-systemjs': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-new-target': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-numeric-separator': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-object-rest-spread': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-optional-catch-binding': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-private-methods': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-private-property-in-object': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-regenerator': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.22.15) + '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-escapes': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-property-regex': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-sets-regex': 7.22.3(@babel/core@7.22.15) + '@babel/preset-modules': 0.1.5(@babel/core@7.22.15) + '@babel/types': 7.22.15 + babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.15) + babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.15) + babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.15) + core-js-compat: 3.30.2 semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.22.20): - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + /@babel/preset-modules@0.1.5(@babel/core@7.22.15): + resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.22.19 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.15) + '@babel/types': 7.22.15 esutils: 2.0.3 - dev: true - /@babel/preset-react@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w==} + /@babel/preset-react@7.22.3(@babel/core@7.22.15): + resolution: {integrity: sha512-lxDz1mnZ9polqClBCVBjIVUypoB4qV3/tZUDb/IlYbW1kiiLaXaX+bInbRjl+lNQ/iUZraQ3+S8daEmoELMWug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.20) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-react-pure-annotations': 7.22.5(@babel/core@7.22.20) - dev: true + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-react-pure-annotations': 7.18.6(@babel/core@7.22.15) - /@babel/preset-typescript@7.22.15(@babel/core@7.22.20): - resolution: {integrity: sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A==} + /@babel/preset-typescript@7.21.5(@babel/core@7.22.15): + resolution: {integrity: sha512-iqe3sETat5EOrORXiQ6rWfoOg2y68Cs75B9wNxdPW4kixJxh7aXQE1KPdWLDniC24T/6dSnguF33W9j/ZZQcmA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.20) - '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.22.20) - dev: true + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.22.15) + '@babel/plugin-transform-typescript': 7.22.3(@babel/core@7.22.15) + transitivePeerDependencies: + - supports-color /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - dev: true - /@babel/runtime@7.22.15: - resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} + /@babel/runtime-corejs3@7.22.15: + resolution: {integrity: sha512-SAj8oKi8UogVi6eXQXKNPu8qZ78Yzy7zawrlTr0M+IuW/g8Qe9gVDhGcF9h1S69OyACpYoLxEzpjs1M15sI5wQ==} engines: {node: '>=6.9.0'} dependencies: + core-js-pure: 3.32.2 regenerator-runtime: 0.14.0 + dev: false + + /@babel/runtime@7.22.3: + resolution: {integrity: sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.13 - '@babel/parser': 7.22.16 - '@babel/types': 7.22.19 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 - /@babel/traverse@7.22.20: - resolution: {integrity: sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw==} + /@babel/traverse@7.22.15: + resolution: {integrity: sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.13 '@babel/generator': 7.22.15 - '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.16 - '@babel/types': 7.22.19 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types@7.22.19: - resolution: {integrity: sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==} + /@babel/types@7.22.15: + resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.22.15 to-fast-properties: 2.0.0 /@bcoe/v8-coverage@0.2.3: @@ -1824,11 +2039,29 @@ packages: protobufjs: 6.11.4 dev: false - /@changesets/apply-release-plan@6.1.4: - resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} + /@chainsafe/as-sha256@0.3.1: + resolution: {integrity: sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==} + dev: false + + /@chainsafe/persistent-merkle-tree@0.4.2: + resolution: {integrity: sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==} + dependencies: + '@chainsafe/as-sha256': 0.3.1 + dev: false + + /@chainsafe/ssz@0.9.4: + resolution: {integrity: sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==} + dependencies: + '@chainsafe/as-sha256': 0.3.1 + '@chainsafe/persistent-merkle-tree': 0.4.2 + case: 1.6.3 + dev: false + + /@changesets/apply-release-plan@6.1.3: + resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} dependencies: - '@babel/runtime': 7.22.15 - '@changesets/config': 2.3.1 + '@babel/runtime': 7.22.3 + '@changesets/config': 2.3.0 '@changesets/get-version-range-type': 0.3.2 '@changesets/git': 2.0.0 '@changesets/types': 5.2.1 @@ -1839,18 +2072,18 @@ packages: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.5.4 + semver: 5.7.1 dev: true - /@changesets/assemble-release-plan@5.2.4: - resolution: {integrity: sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==} + /@changesets/assemble-release-plan@5.2.3: + resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} dependencies: - '@babel/runtime': 7.22.15 + '@babel/runtime': 7.22.3 '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6 + '@changesets/get-dependents-graph': 1.3.5 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 - semver: 7.5.4 + semver: 5.7.1 dev: true /@changesets/changelog-git@0.1.14: @@ -1869,18 +2102,18 @@ packages: - encoding dev: true - /@changesets/cli@2.26.2: - resolution: {integrity: sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==} + /@changesets/cli@2.26.1: + resolution: {integrity: sha512-XnTa+b51vt057fyAudvDKGB0Sh72xutQZNAdXkCqPBKO2zvs2yYZx5hFZj1u9cbtpwM6Sxtcr02/FQJfZOzemQ==} hasBin: true dependencies: - '@babel/runtime': 7.22.15 - '@changesets/apply-release-plan': 6.1.4 - '@changesets/assemble-release-plan': 5.2.4 + '@babel/runtime': 7.22.3 + '@changesets/apply-release-plan': 6.1.3 + '@changesets/assemble-release-plan': 5.2.3 '@changesets/changelog-git': 0.1.14 - '@changesets/config': 2.3.1 + '@changesets/config': 2.3.0 '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6 - '@changesets/get-release-plan': 3.0.17 + '@changesets/get-dependents-graph': 1.3.5 + '@changesets/get-release-plan': 3.0.16 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/pre': 1.0.14 @@ -1889,10 +2122,10 @@ packages: '@changesets/write': 0.2.3 '@manypkg/get-packages': 1.1.3 '@types/is-ci': 3.0.0 - '@types/semver': 7.5.2 + '@types/semver': 6.2.3 ansi-colors: 4.1.3 chalk: 2.4.2 - enquirer: 2.4.1 + enquirer: 2.3.6 external-editor: 3.1.0 fs-extra: 7.0.1 human-id: 1.0.2 @@ -1900,19 +2133,19 @@ packages: meow: 6.1.1 outdent: 0.5.0 p-limit: 2.3.0 - preferred-pm: 3.1.2 + preferred-pm: 3.0.3 resolve-from: 5.0.0 - semver: 7.5.4 + semver: 5.7.1 spawndamnit: 2.0.0 term-size: 2.2.1 tty-table: 4.2.1 dev: true - /@changesets/config@2.3.1: - resolution: {integrity: sha512-PQXaJl82CfIXddUOppj4zWu+987GCw2M+eQcOepxN5s+kvnsZOwjEJO3DH9eVy+OP6Pg/KFEWdsECFEYTtbg6w==} + /@changesets/config@2.3.0: + resolution: {integrity: sha512-EgP/px6mhCx8QeaMAvWtRrgyxW08k/Bx2tpGT+M84jEdX37v3VKfh4Cz1BkwrYKuMV2HZKeHOh8sHvja/HcXfQ==} dependencies: '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6 + '@changesets/get-dependents-graph': 1.3.5 '@changesets/logger': 0.0.5 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -1926,31 +2159,31 @@ packages: extendable-error: 0.1.7 dev: true - /@changesets/get-dependents-graph@1.3.6: - resolution: {integrity: sha512-Q/sLgBANmkvUm09GgRsAvEtY3p1/5OCzgBE5vX3vgb5CvW0j7CEljocx5oPXeQSNph6FXulJlXV3Re/v3K3P3Q==} + /@changesets/get-dependents-graph@1.3.5: + resolution: {integrity: sha512-w1eEvnWlbVDIY8mWXqWuYE9oKhvIaBhzqzo4ITSJY9hgoqQ3RoBqwlcAzg11qHxv/b8ReDWnMrpjpKrW6m1ZTA==} dependencies: '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 - semver: 7.5.4 + semver: 5.7.1 dev: true /@changesets/get-github-info@0.5.2: resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==} dependencies: dataloader: 1.4.0 - node-fetch: 2.7.0 + node-fetch: 2.6.11 transitivePeerDependencies: - encoding dev: true - /@changesets/get-release-plan@3.0.17: - resolution: {integrity: sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==} + /@changesets/get-release-plan@3.0.16: + resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} dependencies: - '@babel/runtime': 7.22.15 - '@changesets/assemble-release-plan': 5.2.4 - '@changesets/config': 2.3.1 + '@babel/runtime': 7.22.3 + '@changesets/assemble-release-plan': 5.2.3 + '@changesets/config': 2.3.0 '@changesets/pre': 1.0.14 '@changesets/read': 0.5.9 '@changesets/types': 5.2.1 @@ -1964,7 +2197,7 @@ packages: /@changesets/git@2.0.0: resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: - '@babel/runtime': 7.22.15 + '@babel/runtime': 7.22.3 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -1989,7 +2222,7 @@ packages: /@changesets/pre@1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: - '@babel/runtime': 7.22.15 + '@babel/runtime': 7.22.3 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -1999,7 +2232,7 @@ packages: /@changesets/read@0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: - '@babel/runtime': 7.22.15 + '@babel/runtime': 7.22.3 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/parse': 0.3.16 @@ -2020,19 +2253,19 @@ packages: /@changesets/write@0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: - '@babel/runtime': 7.22.15 + '@babel/runtime': 7.22.3 '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 prettier: 2.8.8 dev: true - /@coinbase/wallet-sdk@3.7.2: - resolution: {integrity: sha512-lIGvXMsgpsQWci/XOMQIJ2nIZ8JUy/L+bvC0wkRaYarr0YylwpXrJ2gRM3hCXPS477pkyO7N/kSiAoRgEXUdJQ==} + /@coinbase/wallet-sdk@3.6.6: + resolution: {integrity: sha512-vX+epj/Ttjo7XRwlr3TFUUfW5GTRMvORpERPwiu7z2jl3DSVL4rXLmHt5y6LDPlUVreas2gumdcFbu0fLRG9Jg==} engines: {node: '>= 10.0.0'} dependencies: '@metamask/safe-event-emitter': 2.0.0 - '@solana/web3.js': 1.78.5 + '@solana/web3.js': 1.76.0 bind-decorator: 1.0.11 bn.js: 5.2.1 buffer: 6.0.3 @@ -2042,7 +2275,7 @@ packages: eth-rpc-errors: 4.0.2 json-rpc-engine: 6.1.0 keccak: 3.0.3 - preact: 10.17.1 + preact: 10.14.1 qs: 6.11.2 rxjs: 6.6.7 sha.js: 2.4.11 @@ -2055,14 +2288,21 @@ packages: - utf-8-validate dev: false - /@commitlint/cli@17.7.1: - resolution: {integrity: sha512-BCm/AT06SNCQtvFv921iNhudOHuY16LswT0R3OeolVGLk8oP+Rk9TfQfgjH7QPMjhvp76bNqGFEcpKojxUNW1g==} + /@colors/colors@1.5.0: + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + requiresBuild: true + dev: false + optional: true + + /@commitlint/cli@17.6.5: + resolution: {integrity: sha512-3PQrWr/uo6lzF5k7n5QuosCYnzaxP9qGBp3jhWP0Vmsa7XA6wrl9ccPqfQyXpSbQE3zBROVO3TDqgPKe4tfmLQ==} engines: {node: '>=v14'} hasBin: true dependencies: '@commitlint/format': 17.4.4 - '@commitlint/lint': 17.7.0 - '@commitlint/load': 17.7.1 + '@commitlint/lint': 17.6.6 + '@commitlint/load': 17.5.0 '@commitlint/read': 17.5.1 '@commitlint/types': 17.4.4 execa: 5.1.1 @@ -2075,23 +2315,23 @@ packages: - '@swc/wasm' dev: true - /@commitlint/config-conventional@17.7.0: - resolution: {integrity: sha512-iicqh2o6et+9kWaqsQiEYZzfLbtoWv9uZl8kbI8EGfnc0HeGafQBF7AJ0ylN9D/2kj6txltsdyQs8+2fTMwWEw==} + /@commitlint/config-conventional@17.6.5: + resolution: {integrity: sha512-Xl9H9KLl86NZm5CYNTNF9dcz1xelE/EbvhWIWcYxG/rn3UWYWdWmmnX2q6ZduNdLFSGbOxzUpIx61j5zxbeXxg==} engines: {node: '>=v14'} dependencies: - conventional-changelog-conventionalcommits: 6.1.0 + conventional-changelog-conventionalcommits: 5.0.0 dev: true - /@commitlint/config-validator@17.6.7: - resolution: {integrity: sha512-vJSncmnzwMvpr3lIcm0I8YVVDJTzyjy7NZAeXbTXy+MPUdAr9pKyyg7Tx/ebOQ9kqzE6O9WT6jg2164br5UdsQ==} + /@commitlint/config-validator@17.4.4: + resolution: {integrity: sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg==} engines: {node: '>=v14'} dependencies: '@commitlint/types': 17.4.4 ajv: 8.12.0 dev: true - /@commitlint/ensure@17.6.7: - resolution: {integrity: sha512-mfDJOd1/O/eIb/h4qwXzUxkmskXDL9vNPnZ4AKYKiZALz4vHzwMxBSYtyL2mUIDeU9DRSpEUins8SeKtFkYHSw==} + /@commitlint/ensure@17.4.4: + resolution: {integrity: sha512-AHsFCNh8hbhJiuZ2qHv/m59W/GRE9UeOXbkOqxYMNNg9pJ7qELnFcwj5oYpa6vzTSHtPGKf3C2yUFNy1GGHq6g==} engines: {node: '>=v14'} dependencies: '@commitlint/types': 17.4.4 @@ -2115,41 +2355,41 @@ packages: chalk: 4.1.2 dev: true - /@commitlint/is-ignored@17.7.0: - resolution: {integrity: sha512-043rA7m45tyEfW7Zv2vZHF++176MLHH9h70fnPoYlB1slKBeKl8BwNIlnPg4xBdRBVNPaCqvXxWswx2GR4c9Hw==} + /@commitlint/is-ignored@17.6.6: + resolution: {integrity: sha512-4Fw875faAKO+2nILC04yW/2Vy/wlV3BOYCSQ4CEFzriPEprc1Td2LILmqmft6PDEK5Sr14dT9tEzeaZj0V56Gg==} engines: {node: '>=v14'} dependencies: '@commitlint/types': 17.4.4 - semver: 7.5.4 + semver: 7.5.2 dev: true - /@commitlint/lint@17.7.0: - resolution: {integrity: sha512-TCQihm7/uszA5z1Ux1vw+Nf3yHTgicus/+9HiUQk+kRSQawByxZNESeQoX9ujfVd3r4Sa+3fn0JQAguG4xvvbA==} + /@commitlint/lint@17.6.6: + resolution: {integrity: sha512-5bN+dnHcRLkTvwCHYMS7Xpbr+9uNi0Kq5NR3v4+oPNx6pYXt8ACuw9luhM/yMgHYwW0ajIR20wkPAFkZLEMGmg==} engines: {node: '>=v14'} dependencies: - '@commitlint/is-ignored': 17.7.0 - '@commitlint/parse': 17.7.0 - '@commitlint/rules': 17.7.0 + '@commitlint/is-ignored': 17.6.6 + '@commitlint/parse': 17.6.5 + '@commitlint/rules': 17.6.5 '@commitlint/types': 17.4.4 dev: true - /@commitlint/load@17.7.1: - resolution: {integrity: sha512-S/QSOjE1ztdogYj61p6n3UbkUvweR17FQ0zDbNtoTLc+Hz7vvfS7ehoTMQ27hPSjVBpp7SzEcOQu081RLjKHJQ==} + /@commitlint/load@17.5.0: + resolution: {integrity: sha512-l+4W8Sx4CD5rYFsrhHH8HP01/8jEP7kKf33Xlx2Uk2out/UKoKPYMOIRcDH5ppT8UXLMV+x6Wm5osdRKKgaD1Q==} engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 17.6.7 + '@commitlint/config-validator': 17.4.4 '@commitlint/execute-rule': 17.4.0 - '@commitlint/resolve-extends': 17.6.7 + '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 20.4.7 + '@types/node': 18.16.18 chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@4.9.5) - cosmiconfig-typescript-loader: 4.4.0(@types/node@20.4.7)(cosmiconfig@8.3.6)(ts-node@10.9.1)(typescript@4.9.5) + cosmiconfig: 8.1.3 + cosmiconfig-typescript-loader: 4.3.0(@types/node@18.16.18)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@4.9.5) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.17.17)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -2161,13 +2401,13 @@ packages: engines: {node: '>=v14'} dev: true - /@commitlint/parse@17.7.0: - resolution: {integrity: sha512-dIvFNUMCUHqq5Abv80mIEjLVfw8QNuA4DS7OWip4pcK/3h5wggmjVnlwGCDvDChkw2TjK1K6O+tAEV78oxjxag==} + /@commitlint/parse@17.6.5: + resolution: {integrity: sha512-0zle3bcn1Hevw5Jqpz/FzEWNo2KIzUbc1XyGg6WrWEoa6GH3A1pbqNF6MvE6rjuy6OY23c8stWnb4ETRZyN+Yw==} engines: {node: '>=v14'} dependencies: '@commitlint/types': 17.4.4 - conventional-changelog-angular: 6.0.0 - conventional-commits-parser: 4.0.0 + conventional-changelog-angular: 5.0.13 + conventional-commits-parser: 3.2.4 dev: true /@commitlint/read@17.5.1: @@ -2181,11 +2421,11 @@ packages: minimist: 1.2.8 dev: true - /@commitlint/resolve-extends@17.6.7: - resolution: {integrity: sha512-PfeoAwLHtbOaC9bGn/FADN156CqkFz6ZKiVDMjuC2N5N0740Ke56rKU7Wxdwya8R8xzLK9vZzHgNbuGhaOVKIg==} + /@commitlint/resolve-extends@17.4.4: + resolution: {integrity: sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A==} engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 17.6.7 + '@commitlint/config-validator': 17.4.4 '@commitlint/types': 17.4.4 import-fresh: 3.3.0 lodash.mergewith: 4.6.2 @@ -2193,11 +2433,11 @@ packages: resolve-global: 1.0.0 dev: true - /@commitlint/rules@17.7.0: - resolution: {integrity: sha512-J3qTh0+ilUE5folSaoK91ByOb8XeQjiGcdIdiB/8UT1/Rd1itKo0ju/eQVGyFzgTMYt8HrDJnGTmNWwcMR1rmA==} + /@commitlint/rules@17.6.5: + resolution: {integrity: sha512-uTB3zSmnPyW2qQQH+Dbq2rekjlWRtyrjDo4aLFe63uteandgkI+cc0NhhbBAzcXShzVk0qqp8SlkQMu0mgHg/A==} engines: {node: '>=v14'} dependencies: - '@commitlint/ensure': 17.6.7 + '@commitlint/ensure': 17.4.4 '@commitlint/message': 17.4.2 '@commitlint/to-lines': 17.4.0 '@commitlint/types': 17.4.4 @@ -2226,7 +2466,7 @@ packages: /@confio/ics23@0.6.8: resolution: {integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==} dependencies: - '@noble/hashes': 1.3.2 + '@noble/hashes': 1.3.0 protobufjs: 6.11.4 dev: false @@ -2263,10 +2503,10 @@ packages: '@cosmjs/encoding': 0.28.13 '@cosmjs/math': 0.28.13 '@cosmjs/utils': 0.28.13 - '@noble/hashes': 1.3.2 + '@noble/hashes': 1.3.0 bn.js: 5.2.1 elliptic: 6.5.4 - libsodium-wrappers: 0.7.13 + libsodium-wrappers: 0.7.11 dev: false /@cosmjs/crypto@0.29.5: @@ -2275,10 +2515,10 @@ packages: '@cosmjs/encoding': 0.29.5 '@cosmjs/math': 0.29.5 '@cosmjs/utils': 0.29.5 - '@noble/hashes': 1.3.2 + '@noble/hashes': 1.3.0 bn.js: 5.2.1 elliptic: 6.5.4 - libsodium-wrappers: 0.7.13 + libsodium-wrappers: 0.7.11 dev: false /@cosmjs/crypto@0.30.1: @@ -2287,10 +2527,10 @@ packages: '@cosmjs/encoding': 0.30.1 '@cosmjs/math': 0.30.1 '@cosmjs/utils': 0.30.1 - '@noble/hashes': 1.3.2 + '@noble/hashes': 1.3.0 bn.js: 5.2.1 elliptic: 6.5.4 - libsodium-wrappers: 0.7.13 + libsodium-wrappers: 0.7.11 dev: false /@cosmjs/encoding@0.28.13: @@ -2523,302 +2763,1153 @@ packages: /@discoveryjs/json-ext@0.5.7: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} - dev: true - /@emotion/hash@0.8.0: - resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + /@docsearch/css@3.5.2: + resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@eslint-community/eslint-utils@4.4.0(eslint@8.49.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.12)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.8.2): + resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true dependencies: - eslint: 8.49.0 - eslint-visitor-keys: 3.4.3 - - /@eslint-community/regexpp@4.8.1: - resolution: {integrity: sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.8.2) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + '@docsearch/css': 3.5.2 + '@types/react': 18.2.12 + algoliasearch: 4.20.0 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + search-insights: 2.8.2 + transitivePeerDependencies: + - '@algolia/client-search' + dev: false - /@eslint/eslintrc@2.1.2: - resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@docusaurus/core@2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-SNsY7PshK3Ri7vtsLXVeAJGS50nJN3RgF836zkyUfAD01Fq+sAk5EwWgLw+nnm5KVNGDu7PRR2kRGDsWvqpo0g==} + engines: {node: '>=16.14'} + hasBin: true + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 dependencies: - ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) - espree: 9.6.1 - globals: 13.21.0 - ignore: 5.2.4 + '@babel/core': 7.22.15 + '@babel/generator': 7.22.15 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-transform-runtime': 7.22.4(@babel/core@7.22.15) + '@babel/preset-env': 7.22.4(@babel/core@7.22.15) + '@babel/preset-react': 7.22.3(@babel/core@7.22.15) + '@babel/preset-typescript': 7.21.5(@babel/core@7.22.15) + '@babel/runtime': 7.22.3 + '@babel/runtime-corejs3': 7.22.15 + '@babel/traverse': 7.22.15 + '@docusaurus/cssnano-preset': 2.4.1 + '@docusaurus/logger': 2.4.1 + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/react-loadable': 5.5.2(react@17.0.2) + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-common': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + '@slorber/static-site-generator-webpack-plugin': 4.0.7 + '@svgr/webpack': 6.5.1 + autoprefixer: 10.4.15(postcss@8.4.14) + babel-loader: 8.3.0(@babel/core@7.22.15)(webpack@5.88.1) + babel-plugin-dynamic-import-node: 2.3.3 + boxen: 6.2.1 + chalk: 4.1.2 + chokidar: 3.5.3 + clean-css: 5.3.2 + cli-table3: 0.6.3 + combine-promises: 1.2.0 + commander: 5.1.0 + copy-webpack-plugin: 11.0.0(webpack@5.88.1) + core-js: 3.32.2 + css-loader: 6.8.1(webpack@5.88.1) + css-minimizer-webpack-plugin: 4.2.2(clean-css@5.3.2)(webpack@5.88.1) + cssnano: 5.1.15(postcss@8.4.14) + del: 6.1.1 + detect-port: 1.5.1 + escape-html: 1.0.3 + eta: 2.2.0 + file-loader: 6.2.0(webpack@5.88.1) + fs-extra: 10.1.0 + html-minifier-terser: 6.1.0 + html-tags: 3.3.1 + html-webpack-plugin: 5.5.3(webpack@5.88.1) import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 + leven: 3.1.0 + lodash: 4.17.21 + mini-css-extract-plugin: 2.7.6(webpack@5.88.1) + postcss: 8.4.14 + postcss-loader: 7.3.3(postcss@8.4.14)(typescript@4.9.5)(webpack@5.88.1) + prompts: 2.4.2 + react: 17.0.2 + react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.88.1) + react-dom: 17.0.2(react@17.0.2) + react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.2) + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.88.1) + react-router: 5.3.4(react@17.0.2) + react-router-config: 5.1.1(react-router@5.3.4)(react@17.0.2) + react-router-dom: 5.3.4(react@17.0.2) + rtl-detect: 1.0.4 + semver: 7.5.2 + serve-handler: 6.1.5 + shelljs: 0.8.5 + terser-webpack-plugin: 5.3.9(webpack@5.88.1) + tslib: 2.5.2 + update-notifier: 5.1.0 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.88.1) + wait-on: 6.0.1 + webpack: 5.88.1(webpack-cli@5.1.4) + webpack-bundle-analyzer: 4.9.1 + webpack-dev-server: 4.15.1(webpack@5.88.1) + webpack-merge: 5.9.0 + webpackbar: 5.0.2(webpack@5.88.1) transitivePeerDependencies: + - '@docusaurus/types' + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss - supports-color - - /@eslint/js@8.49.0: - resolution: {integrity: sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - /@ethereumjs/rlp@4.0.1: - resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} - engines: {node: '>=14'} - hasBin: true + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethereumjs/util@8.1.0: - resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} - engines: {node: '>=14'} + /@docusaurus/cssnano-preset@2.4.1: + resolution: {integrity: sha512-ka+vqXwtcW1NbXxWsh6yA1Ckii1klY9E53cJ4O9J09nkMBgrNX3iEFED1fWdv8wf4mJjvGi5RLZ2p9hJNjsLyQ==} + engines: {node: '>=16.14'} dependencies: - '@ethereumjs/rlp': 4.0.1 - ethereum-cryptography: 2.1.2 - micro-ftch: 0.3.1 + cssnano-preset-advanced: 5.3.10(postcss@8.4.14) + postcss: 8.4.14 + postcss-sort-media-queries: 4.4.1(postcss@8.4.14) + tslib: 2.5.2 dev: false - /@ethersproject/abstract-provider@5.7.0: - resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + /@docusaurus/logger@2.4.1: + resolution: {integrity: sha512-5h5ysIIWYIDHyTVd8BjheZmQZmEgWDR54aQ1BX9pjFfpyzFo5puKXKYrYJXbjEHGyVhEzmB9UXwbxGfaZhOjcg==} + engines: {node: '>=16.14'} dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 + chalk: 4.1.2 + tslib: 2.5.2 dev: false - /@ethersproject/abstract-signer@5.7.0: - resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 + /@docusaurus/mdx-loader@2.4.1(@docusaurus/types@2.4.1)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-4KhUhEavteIAmbBj7LVFnrVYDiU51H5YWW1zY6SmBSte/YLhDutztLTBE0PQl1Grux1jzUJeaSvAzHpTn6JJDQ==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@babel/parser': 7.22.15 + '@babel/traverse': 7.22.15 + '@docusaurus/logger': 2.4.1 + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@mdx-js/mdx': 1.6.22 + escape-html: 1.0.3 + file-loader: 6.2.0(webpack@5.88.1) + fs-extra: 10.1.0 + image-size: 1.0.2 + mdast-util-to-string: 2.0.0 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + remark-emoji: 2.2.0 + stringify-object: 3.3.0 + tslib: 2.5.2 + unified: 9.2.2 + unist-util-visit: 2.0.3 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.88.1) + webpack: 5.88.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - '@docusaurus/types' + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli dev: false - /@ethersproject/address@5.7.0: - resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/rlp': 5.7.0 + /@docusaurus/module-type-aliases@2.4.1(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-gLBuIFM8Dp2XOCWffUDSjtxY7jQgKvYujt7Mx5s4FCTfoL5dN1EVbnrn+O2Wvh8b0a77D57qoIDY7ghgmatR1A==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@docusaurus/react-loadable': 5.5.2(react@17.0.2) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@types/history': 4.7.11 + '@types/react': 18.2.12 + '@types/react-router-config': 5.0.7 + '@types/react-router-dom': 5.3.3 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.2) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + + /@docusaurus/plugin-content-blog@2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-E2i7Knz5YIbE1XELI6RlTnZnGgS52cUO4BlCiCUCvQHbR+s1xeIWz4C6BtaVnlug0Ccz7nFSksfwDpVlkujg5Q==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/logger': 2.4.1 + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-common': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + cheerio: 1.0.0-rc.12 + feed: 4.2.2 + fs-extra: 10.1.0 + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + reading-time: 1.5.0 + tslib: 2.5.2 + unist-util-visit: 2.0.3 + utility-types: 3.10.0 + webpack: 5.88.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/base64@5.7.0: - resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} - dependencies: - '@ethersproject/bytes': 5.7.0 + /@docusaurus/plugin-content-docs@2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-Lo7lSIcpswa2Kv4HEeUcGYqaasMUQNpjTXpV0N8G6jXgZaQurqp7E8NGYeGbDXnb48czmHWbzDL4S3+BbK0VzA==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/logger': 2.4.1 + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/module-type-aliases': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + '@types/react-router-config': 5.0.7 + combine-promises: 1.2.0 + fs-extra: 10.1.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.5.2 + utility-types: 3.10.0 + webpack: 5.88.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/basex@5.7.0: - resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/properties': 5.7.0 + /@docusaurus/plugin-content-pages@2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-/UjuH/76KLaUlL+o1OvyORynv6FURzjurSjvn2lbWTFc4tpYY2qLYTlKpTCBVPhlLUQsfyFnshEJDLmPneq2oA==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + fs-extra: 10.1.0 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.5.2 + webpack: 5.88.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/bignumber@5.7.0: - resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - bn.js: 5.2.1 + /@docusaurus/plugin-debug@2.4.1(@types/react@18.2.12)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-7Yu9UPzRShlrH/G8btOpR0e6INFZr0EegWplMjOqelIwAcx3PKyR8mgPTxGTxcqiYj6hxSCRN0D8R7YrzImwNA==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + fs-extra: 10.1.0 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-json-view: 1.21.3(@types/react@18.2.12)(react-dom@17.0.2)(react@17.0.2) + tslib: 2.5.2 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - '@types/react' + - bufferutil + - csso + - debug + - encoding + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/bytes@5.7.0: - resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} - dependencies: - '@ethersproject/logger': 5.7.0 + /@docusaurus/plugin-google-analytics@2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-dyZJdJiCoL+rcfnm0RPkLt/o732HvLiEwmtoNzOoz9MSZz117UH2J6U2vUDtzUzwtFLIf32KkeyzisbwUCgcaQ==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.5.2 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/constants@5.7.0: - resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} - dependencies: - '@ethersproject/bignumber': 5.7.0 + /@docusaurus/plugin-google-gtag@2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-mKIefK+2kGTQBYvloNEKtDmnRD7bxHLsBcxgnbt4oZwzi2nxCGjPX6+9SQO2KCN5HZbNrYmGo5GJfMgoRvy6uA==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.5.2 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/hash@5.7.0: - resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 + /@docusaurus/plugin-google-tag-manager@2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-Zg4Ii9CMOLfpeV2nG74lVTWNtisFaH9QNtEw48R5QE1KIwDBdTVaiSA18G1EujZjrzJJzXN79VhINSbOJO/r3g==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.5.2 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/hdnode@5.7.0: - resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wordlists': 5.7.0 + /@docusaurus/plugin-sitemap@2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-lZx+ijt/+atQ3FVE8FOHV/+X3kuok688OydDXrqKRJyXBJZKgGjA2Qa8RjQ4f27V2woaXhtnyrdPop/+OjVMRg==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/logger': 2.4.1 + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-common': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + fs-extra: 10.1.0 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + sitemap: 7.1.1 + tslib: 2.5.2 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/json-wallets@5.7.0: - resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + /@docusaurus/preset-classic@2.4.1(@algolia/client-search@4.20.0)(@types/react@18.2.12)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.8.2)(typescript@4.9.5): + resolution: {integrity: sha512-P4//+I4zDqQJ+UDgoFrjIFaQ1MeS9UD1cvxVQaI6O7iBmiHQm0MGROP1TbE7HlxlDPXFJjZUK3x3cAoK63smGQ==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-content-blog': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-debug': 2.4.1(@types/react@18.2.12)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-google-analytics': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-google-gtag': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-google-tag-manager': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-sitemap': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/theme-classic': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/theme-search-algolia': 2.4.1(@algolia/client-search@4.20.0)(@docusaurus/types@2.4.1)(@types/react@18.2.12)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.8.2)(typescript@4.9.5) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + transitivePeerDependencies: + - '@algolia/client-search' + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - '@types/react' + - bufferutil + - csso + - debug + - encoding + - esbuild + - eslint + - lightningcss + - search-insights + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false + + /@docusaurus/react-loadable@5.5.2(react@17.0.2): + resolution: {integrity: sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==} + peerDependencies: + react: '*' dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - aes-js: 3.0.0 - scrypt-js: 3.0.1 + '@types/react': 18.2.12 + prop-types: 15.8.1 + react: 17.0.2 + + /@docusaurus/theme-classic@2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-Rz0wKUa+LTW1PLXmwnf8mn85EBzaGSt6qamqtmnh9Hflkc+EqiYMhtUJeLdV+wsgYq4aG0ANc+bpUDpsUhdnwg==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/module-type-aliases': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/plugin-content-blog': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/theme-translations': 2.4.1 + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-common': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + '@mdx-js/react': 1.6.22(react@17.0.2) + clsx: 1.2.1 + copy-text-to-clipboard: 3.2.0 + infima: 0.2.0-alpha.43 + lodash: 4.17.21 + nprogress: 0.2.0 + postcss: 8.4.14 + prism-react-renderer: 1.3.5(react@17.0.2) + prismjs: 1.29.0 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-router-dom: 5.3.4(react@17.0.2) + rtlcss: 3.5.0 + tslib: 2.5.2 + utility-types: 3.10.0 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/keccak256@5.7.0: - resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + /@docusaurus/theme-common@2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-G7Zau1W5rQTaFFB3x3soQoZpkgMbl/SYNG8PfMFIjKa3M3q8n0m/GRf5/H/e5BqOvt8c+ZWIXGCiz+kUCSHovA==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/module-type-aliases': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/plugin-content-blog': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-common': 2.4.1(@docusaurus/types@2.4.1) + '@types/history': 4.7.11 + '@types/react': 18.2.12 + '@types/react-router-config': 5.0.7 + clsx: 1.2.1 + parse-numeric-range: 1.3.0 + prism-react-renderer: 1.3.5(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.5.2 + use-sync-external-store: 1.2.0(react@17.0.2) + utility-types: 3.10.0 + transitivePeerDependencies: + - '@docusaurus/types' + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false + + /@docusaurus/theme-search-algolia@2.4.1(@algolia/client-search@4.20.0)(@docusaurus/types@2.4.1)(@types/react@18.2.12)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.8.2)(typescript@4.9.5): + resolution: {integrity: sha512-6BcqW2lnLhZCXuMAvPRezFs1DpmEKzXFKlYjruuas+Xy3AQeFzDJKTJFIm49N77WFCTyxff8d3E4Q9pi/+5McQ==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.12)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.8.2) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/logger': 2.4.1 + '@docusaurus/plugin-content-docs': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/theme-translations': 2.4.1 + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + algoliasearch: 4.20.0 + algoliasearch-helper: 3.14.1(algoliasearch@4.20.0) + clsx: 1.2.1 + eta: 2.2.0 + fs-extra: 10.1.0 + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.5.2 + utility-types: 3.10.0 + transitivePeerDependencies: + - '@algolia/client-search' + - '@docusaurus/types' + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - '@types/react' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - search-insights + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: false + + /@docusaurus/theme-translations@2.4.1: + resolution: {integrity: sha512-T1RAGP+f86CA1kfE8ejZ3T3pUU3XcyvrGMfC/zxCtc2BsnoexuNI9Vk2CmuKCb+Tacvhxjv5unhxXce0+NKyvA==} + engines: {node: '>=16.14'} dependencies: - '@ethersproject/bytes': 5.7.0 - js-sha3: 0.8.0 + fs-extra: 10.1.0 + tslib: 2.5.2 dev: false - /@ethersproject/logger@5.7.0: - resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + /@docusaurus/types@2.4.1(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-0R+cbhpMkhbRXX138UOc/2XZFF8hiZa6ooZAEEJFp5scytzCw4tC1gChMFXrpa3d2tYE6AX8IrOEpSonLmfQuQ==} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.12 + commander: 5.1.0 + joi: 17.10.2 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2) + utility-types: 3.10.0 + webpack: 5.88.1(webpack-cli@5.1.4) + webpack-merge: 5.9.0 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + + /@docusaurus/utils-common@2.4.1(@docusaurus/types@2.4.1): + resolution: {integrity: sha512-bCVGdZU+z/qVcIiEQdyx0K13OC5mYwxhSuDUR95oFbKVuXYRrTVrwZIqQljuo1fyJvFTKHiL9L9skQOPokuFNQ==} + engines: {node: '>=16.14'} + peerDependencies: + '@docusaurus/types': '*' + peerDependenciesMeta: + '@docusaurus/types': + optional: true + dependencies: + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + tslib: 2.5.2 dev: false - /@ethersproject/networks@5.7.1: - resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + /@docusaurus/utils-validation@2.4.1(@docusaurus/types@2.4.1): + resolution: {integrity: sha512-unII3hlJlDwZ3w8U+pMO3Lx3RhI4YEbY3YNsQj4yzrkZzlpqZOLuAiZK2JyULnD+TKbceKU0WyWkQXtYbLNDFA==} + engines: {node: '>=16.14'} dependencies: - '@ethersproject/logger': 5.7.0 + '@docusaurus/logger': 2.4.1 + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + joi: 17.10.2 + js-yaml: 4.1.0 + tslib: 2.5.2 + transitivePeerDependencies: + - '@docusaurus/types' + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli dev: false - /@ethersproject/pbkdf2@5.7.0: - resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + /@docusaurus/utils@2.4.1(@docusaurus/types@2.4.1): + resolution: {integrity: sha512-1lvEZdAQhKNht9aPXPoh69eeKnV0/62ROhQeFKKxmzd0zkcuE/Oc5Gpnt00y/f5bIsmOsYMY7Pqfm/5rteT5GA==} + engines: {node: '>=16.14'} + peerDependencies: + '@docusaurus/types': '*' + peerDependenciesMeta: + '@docusaurus/types': + optional: true dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/sha2': 5.7.0 + '@docusaurus/logger': 2.4.1 + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@svgr/webpack': 6.5.1 + escape-string-regexp: 4.0.0 + file-loader: 6.2.0(webpack@5.88.1) + fs-extra: 10.1.0 + github-slugger: 1.5.0 + globby: 11.1.0 + gray-matter: 4.0.3 + js-yaml: 4.1.0 + lodash: 4.17.21 + micromatch: 4.0.5 + resolve-pathname: 3.0.0 + shelljs: 0.8.5 + tslib: 2.5.2 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.88.1) + webpack: 5.88.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli dev: false - /@ethersproject/properties@5.7.0: - resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + /@emotion/hash@0.8.0: + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + dev: false + + /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - '@ethersproject/logger': 5.7.0 + eslint: 8.48.0 + eslint-visitor-keys: 3.4.3 + + /@eslint-community/regexpp@4.8.0: + resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@8.1.1) + espree: 9.6.1 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + /@eslint/js@8.48.0: + resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /@ethereumjs/rlp@4.0.1: + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true dev: false - /@ethersproject/random@5.7.0: - resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + /@ethereumjs/util@8.0.5: + resolution: {integrity: sha512-259rXKK3b3D8HRVdRmlOEi6QFvwxdt304hhrEAmpZhsj7ufXEOTIc9JRZPMnXatKjECokdLNBcDOFBeBSzAIaw==} + engines: {node: '>=14'} + dependencies: + '@chainsafe/ssz': 0.9.4 + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 1.2.0 + dev: false + + /@ethersproject/abi@5.7.0: + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/keccak256': 5.7.0 '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 dev: false - /@ethersproject/rlp@5.7.0: - resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + /@ethersproject/abstract-provider@5.7.0: + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} dependencies: + '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 dev: false - /@ethersproject/sha2@5.7.0: - resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + /@ethersproject/abstract-signer@5.7.0: + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - hash.js: 1.1.7 + '@ethersproject/properties': 5.7.0 dev: false - /@ethersproject/signing-key@5.7.0: - resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + /@ethersproject/address@5.7.0: + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} dependencies: + '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 '@ethersproject/logger': 5.7.0 + '@ethersproject/rlp': 5.7.0 + dev: false + + /@ethersproject/base64@5.7.0: + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + dependencies: + '@ethersproject/bytes': 5.7.0 + dev: false + + /@ethersproject/basex@5.7.0: + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} + dependencies: + '@ethersproject/bytes': 5.7.0 '@ethersproject/properties': 5.7.0 - bn.js: 5.2.1 - elliptic: 6.5.4 - hash.js: 1.1.7 dev: false - /@ethersproject/strings@5.7.0: - resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + /@ethersproject/bignumber@5.7.0: + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} dependencies: '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 + bn.js: 5.2.1 dev: false - /@ethersproject/transactions@5.7.0: - resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + /@ethersproject/bytes@5.7.0: + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/keccak256': 5.7.0 '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/signing-key': 5.7.0 dev: false - /@ethersproject/units@5.7.0: - resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + /@ethersproject/constants@5.7.0: + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} dependencies: '@ethersproject/bignumber': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 dev: false - /@ethersproject/wallet@5.7.0: - resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + /@ethersproject/contracts@5.7.0: + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} dependencies: + '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/address': 5.7.0 '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/json-wallets': 5.7.0 - '@ethersproject/keccak256': 5.7.0 + '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/signing-key': 5.7.0 '@ethersproject/transactions': 5.7.0 - '@ethersproject/wordlists': 5.7.0 dev: false - /@ethersproject/web@5.7.1: - resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + /@ethersproject/hash@5.7.0: + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 '@ethersproject/base64': 5.7.0 + '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 dev: false - /@ethersproject/wordlists@5.7.0: - resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + /@ethersproject/hdnode@5.7.0: + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + dev: false + + /@ethersproject/json-wallets@5.7.0: + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 + dev: false + + /@ethersproject/keccak256@5.7.0: + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + dependencies: + '@ethersproject/bytes': 5.7.0 + js-sha3: 0.8.0 + dev: false + + /@ethersproject/logger@5.7.0: + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + dev: false + + /@ethersproject/networks@5.7.1: + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/pbkdf2@5.7.0: + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/sha2': 5.7.0 + dev: false + + /@ethersproject/properties@5.7.0: + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/providers@5.7.2: + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + bech32: 1.1.4 + ws: 7.4.6 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@ethersproject/random@5.7.0: + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/rlp@5.7.0: + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/sha2@5.7.0: + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + hash.js: 1.1.7 + dev: false + + /@ethersproject/signing-key@5.7.0: + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + bn.js: 5.2.1 + elliptic: 6.5.4 + hash.js: 1.1.7 + dev: false + + /@ethersproject/solidity@5.7.0: + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@ethersproject/strings@5.7.0: + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/transactions@5.7.0: + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + dev: false + + /@ethersproject/units@5.7.0: + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/wallet@5.7.0: + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + dev: false + + /@ethersproject/web@5.7.1: + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + dependencies: + '@ethersproject/base64': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@ethersproject/wordlists@5.7.0: + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 @@ -2829,7 +3920,7 @@ packages: requiresBuild: true dependencies: bech32: 2.0.0 - crypto-addr-codec: 0.1.8 + crypto-addr-codec: 0.1.7 link-module-alias: 1.2.0 shx: 0.3.4 dev: false @@ -2843,7 +3934,7 @@ packages: '@metamask/eth-sig-util': 4.0.1 cosmjs-types: 0.5.2 link-module-alias: 1.2.0 - long: 5.2.3 + long: 5.2.1 shx: 0.3.4 dev: false @@ -2875,8 +3966,16 @@ packages: shx: 0.3.4 dev: false - /@humanwhocodes/config-array@0.11.11: - resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} + /@hapi/hoek@9.3.0: + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + + /@hapi/topo@5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + dependencies: + '@hapi/hoek': 9.3.0 + + /@humanwhocodes/config-array@0.11.10: + resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -2918,11 +4017,11 @@ packages: dependencies: '@inquirer/type': 1.1.4 '@types/mute-stream': 0.0.1 - '@types/node': 20.6.2 + '@types/node': 20.6.0 '@types/wrap-ansi': 3.0.0 ansi-escapes: 4.3.2 chalk: 4.1.2 - cli-spinners: 2.9.1 + cli-spinners: 2.9.0 cli-width: 4.1.0 figures: 3.2.0 mute-stream: 1.0.0 @@ -3027,20 +4126,20 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console@29.7.0: - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + /@jest/console@29.5.0: + resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.6.3 - '@types/node': 18.17.17 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 slash: 3.0.0 dev: true - /@jest/core@29.7.0(ts-node@10.9.1): - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + /@jest/core@29.5.0(ts-node@10.9.1): + resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -3048,93 +4147,92 @@ packages: node-notifier: optional: true dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.17.17 + '@jest/console': 29.5.0 + '@jest/reporters': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@18.17.17)(ts-node@10.9.1) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 + jest-changed-files: 29.5.0 + jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-resolve-dependencies: 29.5.0 + jest-runner: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + jest-watcher: 29.5.0 micromatch: 4.0.5 - pretty-format: 29.7.0 + pretty-format: 29.5.0 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: - - babel-plugin-macros - supports-color - ts-node dev: true - /@jest/environment@29.7.0: - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + /@jest/environment@29.5.0: + resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.17.17 - jest-mock: 29.7.0 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 + jest-mock: 29.5.0 dev: true - /@jest/expect-utils@29.7.0: - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + /@jest/expect-utils@29.5.0: + resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.6.3 + jest-get-type: 29.4.3 dev: true - /@jest/expect@29.7.0: - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + /@jest/expect@29.5.0: + resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - expect: 29.7.0 - jest-snapshot: 29.7.0 + expect: 29.5.0 + jest-snapshot: 29.5.0 transitivePeerDependencies: - supports-color dev: true - /@jest/fake-timers@29.7.0: - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + /@jest/fake-timers@29.5.0: + resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 18.17.17 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 + '@jest/types': 29.5.0 + '@sinonjs/fake-timers': 10.2.0 + '@types/node': 18.16.18 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-util: 29.5.0 dev: true - /@jest/globals@29.7.0: - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + /@jest/globals@29.5.0: + resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/types': 29.6.3 - jest-mock: 29.7.0 + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/types': 29.5.0 + jest-mock: 29.5.0 transitivePeerDependencies: - supports-color dev: true - /@jest/reporters@29.7.0: - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + /@jest/reporters@29.5.0: + resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -3143,25 +4241,25 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 + '@jest/console': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.19 - '@types/node': 18.17.17 + '@types/node': 18.16.18 chalk: 4.1.2 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.1 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 6.0.0 - istanbul-lib-report: 3.0.1 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.0 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.6 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 + istanbul-reports: 3.1.5 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + jest-worker: 29.5.0 slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 @@ -3170,15 +4268,14 @@ packages: - supports-color dev: true - /@jest/schemas@29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + /@jest/schemas@29.4.3: + resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@sinclair/typebox': 0.27.8 - dev: true + '@sinclair/typebox': 0.25.24 - /@jest/source-map@29.6.3: - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + /@jest/source-map@29.4.3: + resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jridgewell/trace-mapping': 0.3.19 @@ -3186,60 +4283,59 @@ packages: graceful-fs: 4.2.11 dev: true - /@jest/test-result@29.7.0: - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + /@jest/test-result@29.5.0: + resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.7.0 - '@jest/types': 29.6.3 + '@jest/console': 29.5.0 + '@jest/types': 29.5.0 '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer@29.7.0: - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + /@jest/test-sequencer@29.5.0: + resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.7.0 + '@jest/test-result': 29.5.0 graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 + jest-haste-map: 29.5.0 slash: 3.0.0 dev: true - /@jest/transform@29.7.0: - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + /@jest/transform@29.5.0: + resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.20 - '@jest/types': 29.6.3 + '@babel/core': 7.22.15 + '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.19 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 + jest-haste-map: 29.5.0 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 micromatch: 4.0.5 - pirates: 4.0.6 + pirates: 4.0.5 slash: 3.0.0 write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color dev: true - /@jest/types@29.6.3: - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + /@jest/types@29.5.0: + resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.6.3 + '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.17.17 + '@types/node': 18.16.18 '@types/yargs': 17.0.24 chalk: 4.1.2 - dev: true /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} @@ -3262,7 +4358,6 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 - dev: true /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} @@ -3280,16 +4375,49 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@ledgerhq/connect-kit-loader@1.1.2: - resolution: {integrity: sha512-mscwGroSJQrCTjtNGBu+18FQbZYA4+q6Tyx6K7CXHl6AwgZKbWfZYdgP2F+fyZcRUdGRsMX8QtvU61VcGGtO1A==} + /@json-rpc-tools/provider@1.7.6: + resolution: {integrity: sha512-z7D3xvJ33UfCGv77n40lbzOYjZKVM3k2+5cV7xS8G6SCvKTzMkhkUYuD/qzQUNT4cG/lv0e9mRToweEEVLVVmA==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + dependencies: + '@json-rpc-tools/utils': 1.7.6 + axios: 0.21.4 + safe-json-utils: 1.1.1 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: false + + /@json-rpc-tools/types@1.7.6: + resolution: {integrity: sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + dependencies: + keyvaluestorage-interface: 1.0.0 + dev: false + + /@json-rpc-tools/utils@1.7.6: + resolution: {integrity: sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + dependencies: + '@json-rpc-tools/types': 1.7.6 + '@pedrouid/environment': 1.0.1 + dev: false + + /@ledgerhq/connect-kit-loader@1.0.2: + resolution: {integrity: sha512-TQ21IjcZOw/scqypaVFY3jHVqI7X7Hta3qN/us6FvTol3AY06UmrhhXGww0E9xHmAbdX241ddwXEiMBSQZFr9g==} + dev: false + + /@leichtgewicht/ip-codec@2.0.4: + resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} dev: false /@lit-labs/ssr-dom-shim@1.1.1: resolution: {integrity: sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==} dev: false - /@lit/reactive-element@1.6.3: - resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} + /@lit/reactive-element@1.6.1: + resolution: {integrity: sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA==} dependencies: '@lit-labs/ssr-dom-shim': 1.1.1 dev: false @@ -3297,7 +4425,7 @@ packages: /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.22.15 + '@babel/runtime': 7.22.3 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -3306,7 +4434,7 @@ packages: /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.22.15 + '@babel/runtime': 7.22.3 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -3314,6 +4442,44 @@ packages: read-yaml-file: 1.1.0 dev: true + /@mdx-js/mdx@1.6.22: + resolution: {integrity: sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==} + dependencies: + '@babel/core': 7.12.9 + '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) + '@mdx-js/util': 1.6.22 + babel-plugin-apply-mdx-type-prop: 1.6.22(@babel/core@7.12.9) + babel-plugin-extract-import-names: 1.6.22 + camelcase-css: 2.0.1 + detab: 2.0.4 + hast-util-raw: 6.0.1 + lodash.uniq: 4.5.0 + mdast-util-to-hast: 10.0.1 + remark-footnotes: 2.0.0 + remark-mdx: 1.6.22 + remark-parse: 8.0.3 + remark-squeeze-paragraphs: 4.0.0 + style-to-object: 0.3.0 + unified: 9.2.0 + unist-builder: 2.0.3 + unist-util-visit: 2.0.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@mdx-js/react@1.6.22(react@17.0.2): + resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} + peerDependencies: + react: ^16.13.1 || ^17.0.0 + dependencies: + react: 17.0.2 + dev: false + + /@mdx-js/util@1.6.22: + resolution: {integrity: sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==} + dev: false + /@metamask/eth-sig-util@4.0.1: resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} engines: {node: '>=12.0.0'} @@ -3325,13 +4491,13 @@ packages: tweetnacl-util: 0.15.1 dev: false - /@metamask/eth-sig-util@5.1.0: - resolution: {integrity: sha512-mlgziIHYlA9pi/XZerChqg4NocdOgBPB9NmxgXWQO2U2hH8RGOJQrz6j/AIKkYxgCMIE2PY000+joOwXfzeTDQ==} + /@metamask/eth-sig-util@5.0.2: + resolution: {integrity: sha512-RU6fG/H6/UlBol221uBkq5C7w3TwLK611nEZliO2u+kO0vHKGBXnIPlhI0tzKUigjhUeOd9mhCNbNvhh0LKt9Q==} engines: {node: '>=14.0.0'} dependencies: - '@ethereumjs/util': 8.1.0 + '@ethereumjs/util': 8.0.5 bn.js: 4.12.0 - ethereum-cryptography: 2.1.2 + ethereum-cryptography: 1.2.0 ethjs-util: 0.1.6 tweetnacl: 1.0.3 tweetnacl-util: 0.15.1 @@ -3345,9 +4511,9 @@ packages: resolution: {integrity: sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==} engines: {node: '>=14.0.0'} dependencies: - '@types/debug': 4.1.8 + '@types/debug': 4.1.7 debug: 4.3.4(supports-color@8.1.1) - semver: 7.5.4 + semver: 7.5.2 superstruct: 1.0.3 transitivePeerDependencies: - supports-color @@ -3359,7 +4525,7 @@ packages: '@motionone/easing': 10.15.1 '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 - tslib: 2.6.2 + tslib: 2.5.2 dev: false /@motionone/dom@10.16.2: @@ -3370,14 +4536,14 @@ packages: '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 hey-listen: 1.0.8 - tslib: 2.6.2 + tslib: 2.5.2 dev: false /@motionone/easing@10.15.1: resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==} dependencies: '@motionone/utils': 10.15.1 - tslib: 2.6.2 + tslib: 2.5.2 dev: false /@motionone/generators@10.15.1: @@ -3385,14 +4551,14 @@ packages: dependencies: '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 - tslib: 2.6.2 + tslib: 2.5.2 dev: false /@motionone/svelte@10.16.2: resolution: {integrity: sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==} dependencies: '@motionone/dom': 10.16.2 - tslib: 2.6.2 + tslib: 2.5.2 dev: false /@motionone/types@10.15.1: @@ -3404,14 +4570,14 @@ packages: dependencies: '@motionone/types': 10.15.1 hey-listen: 1.0.8 - tslib: 2.6.2 + tslib: 2.5.2 dev: false /@motionone/vue@10.16.2: resolution: {integrity: sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==} dependencies: '@motionone/dom': 10.16.2 - tslib: 2.6.2 + tslib: 2.5.2 dev: false /@next/env@13.1.6: @@ -3551,26 +4717,22 @@ packages: eslint-scope: 5.1.1 dev: true - /@noble/curves@1.1.0: - resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} + /@noble/curves@1.0.0: + resolution: {integrity: sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==} dependencies: - '@noble/hashes': 1.3.1 + '@noble/hashes': 1.3.0 dev: false - /@noble/curves@1.2.0: - resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} - dependencies: - '@noble/hashes': 1.3.2 + /@noble/hashes@1.2.0: + resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} dev: false - /@noble/hashes@1.3.1: - resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} - engines: {node: '>= 16'} + /@noble/hashes@1.3.0: + resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} dev: false - /@noble/hashes@1.3.2: - resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} - engines: {node: '>= 16'} + /@noble/secp256k1@1.7.1: + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} dev: false /@nodelib/fs.scandir@2.1.5: @@ -3591,6 +4753,25 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 + /@pedrouid/environment@1.0.1: + resolution: {integrity: sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug==} + dev: false + + /@pkgr/utils@2.3.1: + resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + is-glob: 4.0.3 + open: 8.4.2 + picocolors: 1.0.0 + tiny-glob: 0.2.9 + tslib: 2.5.2 + + /@polka/url@1.0.0-next.23: + resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} + dev: false + /@protobufjs/aspromise@1.1.2: resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} dev: false @@ -3634,14 +4815,14 @@ packages: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} dev: false - /@rainbow-me/rainbowkit@1.0.11(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0)(viem@1.10.14)(wagmi@1.4.2): - resolution: {integrity: sha512-+cm6+WUPG9iPgkfJKbvlowcrSHu266Zk20LVRsYLcmb6v29gVMHcWQvyI4T6EVC9TxNjnyq/jIlen++uiUBmmQ==} + /@rainbow-me/rainbowkit@1.0.5(@types/react@18.2.12)(react-dom@18.2.0)(react@18.2.0)(viem@1.0.6)(wagmi@1.2.0): + resolution: {integrity: sha512-vVXYpX9euFrellK0yiLXBC+tp0NFc0IAR/XzXlFNl3x6eaC+0/S99PGEwRQb66SQ9ioVoHdyvxz1BpeeWlc91w==} engines: {node: '>=12.4'} peerDependencies: react: '>=17' react-dom: '>=17' viem: ~0.3.19 || ^1.0.0 - wagmi: ~1.0.1 || ~1.1.0 || ~1.2.0 || ~1.3.0 || ~1.4.0 + wagmi: ~1.0.1 || ~1.1.0 || ~1.2.0 || ~1.3.0 dependencies: '@vanilla-extract/css': 1.9.1 '@vanilla-extract/dynamic': 2.0.2 @@ -3650,9 +4831,9 @@ packages: qrcode: 1.5.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.4(@types/react@18.2.22)(react@18.2.0) - viem: 1.10.14(typescript@4.9.5) - wagmi: 1.4.2(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(viem@1.10.14) + react-remove-scroll: 2.5.4(@types/react@18.2.12)(react@18.2.0) + viem: 1.0.6(typescript@4.9.5) + wagmi: 1.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(viem@1.0.6) transitivePeerDependencies: - '@types/react' dev: false @@ -3670,7 +4851,7 @@ packages: slash: 4.0.0 dev: true - /@rollup/plugin-babel@5.3.1(@babel/core@7.22.20)(rollup@2.79.1): + /@rollup/plugin-babel@5.3.1(@babel/core@7.22.15)(rollup@2.79.1): resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -3681,7 +4862,7 @@ packages: '@types/babel__core': optional: true dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/helper-module-imports': 7.22.15 '@rollup/pluginutils': 3.1.0(rollup@2.79.1) rollup: 2.79.1 @@ -3699,7 +4880,7 @@ packages: glob: 7.2.3 is-reference: 1.2.1 magic-string: 0.25.9 - resolve: 1.22.6 + resolve: 1.22.2 rollup: 2.79.1 dev: true @@ -3734,7 +4915,7 @@ packages: deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 - resolve: 1.22.6 + resolve: 1.22.2 rollup: 2.79.1 dev: true @@ -3747,13 +4928,13 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@2.79.1) + '@rollup/pluginutils': 5.0.2(rollup@2.79.1) estree-walker: 2.0.2 magic-string: 0.27.0 rollup: 2.79.1 dev: true - /@rollup/plugin-typescript@11.1.3(rollup@2.79.1)(tslib@2.6.2)(typescript@4.9.5): + /@rollup/plugin-typescript@11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5): resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3766,10 +4947,10 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@2.79.1) - resolve: 1.22.6 + '@rollup/pluginutils': 5.0.2(rollup@2.79.1) + resolve: 1.22.2 rollup: 2.79.1 - tslib: 2.6.2 + tslib: 2.5.2 typescript: 4.9.5 dev: true @@ -3785,8 +4966,8 @@ packages: rollup: 2.79.1 dev: true - /@rollup/pluginutils@5.0.4(rollup@2.79.1): - resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} + /@rollup/pluginutils@5.0.2(rollup@2.79.1): + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0 @@ -3800,82 +4981,104 @@ packages: rollup: 2.79.1 dev: true - /@rushstack/eslint-patch@1.4.0: - resolution: {integrity: sha512-cEjvTPU32OM9lUFegJagO0mRnIn+rbqrG89vV8/xLnLFX0DoR0r1oy5IlTga71Q7uT3Qus7qm7wgeiMT/+Irlg==} + /@rushstack/eslint-patch@1.3.0: + resolution: {integrity: sha512-IthPJsJR85GhOkp3Hvp8zFOPK5ynKn6STyHa/WZpioK7E1aYDiBzpqQPrngc14DszIUkIrdd3k9Iu0XSzlP/1w==} - /@safe-global/safe-apps-provider@0.17.1(typescript@4.9.5): - resolution: {integrity: sha512-lYfRqrbbK1aKU1/UGkYWc/X7PgySYcumXKc5FB2uuwAs2Ghj8uETuW5BrwPqyjBknRxutFbTv+gth/JzjxAhdQ==} + /@safe-global/safe-apps-provider@0.15.2: + resolution: {integrity: sha512-BaoGAuY7h6jLBL7P+M6b7hd+1QfTv8uMyNF3udhiNUwA0XwfzH2ePQB13IEV3Mn7wdcIMEEUDS5kHbtAsj60qQ==} dependencies: - '@safe-global/safe-apps-sdk': 8.0.0(typescript@4.9.5) + '@safe-global/safe-apps-sdk': 7.9.0 events: 3.3.0 transitivePeerDependencies: - bufferutil - - typescript + - encoding - utf-8-validate - - zod dev: false - /@safe-global/safe-apps-sdk@8.0.0(typescript@4.9.5): - resolution: {integrity: sha512-gYw0ki/EAuV1oSyMxpqandHjnthZjYYy+YWpTAzf8BqfXM3ItcZLpjxfg+3+mXW8HIO+3jw6T9iiqEXsqHaMMw==} + /@safe-global/safe-apps-sdk@7.11.0: + resolution: {integrity: sha512-RDamzPM1Lhhiiz0O+Dn6FkFqIh47jmZX+HCV/BBnBBOSKfBJE//IGD3+02zMgojXHTikQAburdPes9qmH1SA1A==} dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.12.0 - viem: 1.10.14(typescript@4.9.5) + '@safe-global/safe-gateway-typescript-sdk': 3.7.3 + ethers: 5.7.2 transitivePeerDependencies: - bufferutil - - typescript + - encoding - utf-8-validate - - zod dev: false - /@safe-global/safe-apps-sdk@8.1.0(typescript@4.9.5): - resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} + /@safe-global/safe-apps-sdk@7.9.0: + resolution: {integrity: sha512-S2EI+JL8ocSgE3uGNaDZCzKmwfhtxXZFDUP76vN0FeaY35itFMyi8F0Vhxu0XnZm3yLzJE3tp5px6GhuQFLU6w==} dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.12.0 - viem: 1.10.14(typescript@4.9.5) + '@safe-global/safe-gateway-typescript-sdk': 3.7.3 + ethers: 5.7.2 transitivePeerDependencies: - bufferutil - - typescript + - encoding - utf-8-validate - - zod dev: false - /@safe-global/safe-gateway-typescript-sdk@3.12.0: - resolution: {integrity: sha512-hExCo62lScVC9/ztVqYEYL2pFxcqLTvB8fj0WtdP5FWrvbtEgD0pbVolchzD5bf85pbzvEwdAxSVS7EdCZxTNw==} - engines: {node: '>=16'} + /@safe-global/safe-gateway-typescript-sdk@3.7.3: + resolution: {integrity: sha512-O6JCgXNZWG0Vv8FnOEjKfcbsP0WxGvoPJk5ufqUrsyBlHup16It6oaLnn+25nXFLBZOHI1bz8429JlqAc2t2hg==} + dependencies: + cross-fetch: 3.1.6 + transitivePeerDependencies: + - encoding dev: false - /@scure/base@1.1.3: - resolution: {integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==} + /@scure/base@1.1.1: + resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==} dev: false - /@scure/bip32@1.3.1: - resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} + /@scure/bip32@1.1.5: + resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} dependencies: - '@noble/curves': 1.1.0 - '@noble/hashes': 1.3.1 - '@scure/base': 1.1.3 + '@noble/hashes': 1.2.0 + '@noble/secp256k1': 1.7.1 + '@scure/base': 1.1.1 dev: false - /@scure/bip32@1.3.2: - resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} + /@scure/bip32@1.3.0: + resolution: {integrity: sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==} dependencies: - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/base': 1.1.3 + '@noble/curves': 1.0.0 + '@noble/hashes': 1.3.0 + '@scure/base': 1.1.1 dev: false - /@scure/bip39@1.2.1: - resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + /@scure/bip39@1.1.1: + resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} dependencies: - '@noble/hashes': 1.3.2 - '@scure/base': 1.1.3 + '@noble/hashes': 1.2.0 + '@scure/base': 1.1.1 dev: false - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - dev: true + /@scure/bip39@1.2.0: + resolution: {integrity: sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==} + dependencies: + '@noble/hashes': 1.3.0 + '@scure/base': 1.1.1 + dev: false - /@sindresorhus/is@0.7.0: + /@sideway/address@4.1.4: + resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} + dependencies: + '@hapi/hoek': 9.3.0 + + /@sideway/formula@3.0.1: + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + + /@sideway/pinpoint@2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + + /@sinclair/typebox@0.25.24: + resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} + + /@sindresorhus/is@0.14.0: + resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} + engines: {node: '>=6'} + dev: false + + /@sindresorhus/is@0.7.0: resolution: {integrity: sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==} engines: {node: '>=4'} dev: false @@ -3886,12 +5089,22 @@ packages: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers@10.3.0: - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + /@sinonjs/fake-timers@10.2.0: + resolution: {integrity: sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==} + deprecated: Use version 10.1.0. Version 10.2.0 has potential breaking issues dependencies: '@sinonjs/commons': 3.0.0 dev: true + /@slorber/static-site-generator-webpack-plugin@4.0.7: + resolution: {integrity: sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==} + engines: {node: '>=14'} + dependencies: + eval: 0.1.8 + p-map: 4.0.0 + webpack-sources: 3.2.3 + dev: false + /@solana/buffer-layout@4.0.1: resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} engines: {node: '>=5.10'} @@ -3899,27 +5112,28 @@ packages: buffer: 6.0.3 dev: false - /@solana/web3.js@1.78.5: - resolution: {integrity: sha512-2ZHsDNqkKdglJQrIvJ3p2DmgS3cGnary3VJyqt9C1SPrpAtLYzcElr3xyXJOznyQTU/8AMw+GoF11lFoKbicKg==} + /@solana/web3.js@1.76.0: + resolution: {integrity: sha512-aJtF/nTs+9St+KtTK/wgVJ+SinfjYzn+3w1ygYIPw8ST6LH+qHBn8XkodgDTwlv/xzNkaVz1kkUDOZ8BPXyZWA==} dependencies: - '@babel/runtime': 7.22.15 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 + '@babel/runtime': 7.22.3 + '@noble/curves': 1.0.0 + '@noble/hashes': 1.3.0 '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.5.0 + agentkeepalive: 4.3.0 bigint-buffer: 1.1.5 bn.js: 5.2.1 borsh: 0.7.0 bs58: 4.0.1 buffer: 6.0.3 fast-stable-stringify: 1.0.0 - jayson: 4.1.0 - node-fetch: 2.7.0 - rpc-websockets: 7.6.0 + jayson: 3.7.0 + node-fetch: 2.6.11 + rpc-websockets: 7.5.1 superstruct: 0.14.2 transitivePeerDependencies: - bufferutil - encoding + - supports-color - utf-8-validate dev: false @@ -4039,39 +5253,199 @@ packages: '@stablelib/wipe': 1.0.1 dev: false + /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.22.15): + resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + dev: false + + /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.22.15): + resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + dev: false + + /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.22.15): + resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + dev: false + + /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.22.15): + resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + dev: false + + /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.22.15): + resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + dev: false + + /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.22.15): + resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + dev: false + + /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.22.15): + resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + dev: false + + /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.22.15): + resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + dev: false + + /@svgr/babel-preset@6.5.1(@babel/core@7.22.15): + resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.22.15) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.22.15) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.22.15) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.22.15) + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.22.15) + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.22.15) + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.22.15) + '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.22.15) + dev: false + + /@svgr/core@6.5.1: + resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.22.15 + '@svgr/babel-preset': 6.5.1(@babel/core@7.22.15) + '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) + camelcase: 6.3.0 + cosmiconfig: 7.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@svgr/hast-util-to-babel-ast@6.5.1: + resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} + engines: {node: '>=10'} + dependencies: + '@babel/types': 7.22.15 + entities: 4.5.0 + dev: false + + /@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1): + resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} + engines: {node: '>=10'} + peerDependencies: + '@svgr/core': ^6.0.0 + dependencies: + '@babel/core': 7.22.15 + '@svgr/babel-preset': 6.5.1(@babel/core@7.22.15) + '@svgr/core': 6.5.1 + '@svgr/hast-util-to-babel-ast': 6.5.1 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@svgr/plugin-svgo@6.5.1(@svgr/core@6.5.1): + resolution: {integrity: sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==} + engines: {node: '>=10'} + peerDependencies: + '@svgr/core': '*' + dependencies: + '@svgr/core': 6.5.1 + cosmiconfig: 7.1.0 + deepmerge: 4.3.1 + svgo: 2.8.0 + dev: false + + /@svgr/webpack@6.5.1: + resolution: {integrity: sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.22.15 + '@babel/plugin-transform-react-constant-elements': 7.22.5(@babel/core@7.22.15) + '@babel/preset-env': 7.22.4(@babel/core@7.22.15) + '@babel/preset-react': 7.22.3(@babel/core@7.22.15) + '@babel/preset-typescript': 7.21.5(@babel/core@7.22.15) + '@svgr/core': 6.5.1 + '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) + '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) + transitivePeerDependencies: + - supports-color + dev: false + /@swc/helpers@0.4.14: resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} dependencies: - tslib: 2.6.2 + tslib: 2.5.2 + dev: false + + /@szmarczak/http-timer@1.1.2: + resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} + engines: {node: '>=6'} + dependencies: + defer-to-connect: 1.1.3 dev: false - /@tanstack/query-core@4.35.3: - resolution: {integrity: sha512-PS+WEjd9wzKTyNjjQymvcOe1yg8f3wYc6mD+vb6CKyZAKvu4sIJwryfqfBULITKCla7P9C4l5e9RXePHvZOZeQ==} + /@tanstack/query-core@4.29.7: + resolution: {integrity: sha512-GXG4b5hV2Loir+h2G+RXhJdoZhJLnrBWsuLB2r0qBRyhWuXq9w/dWxzvpP89H0UARlH6Mr9DiVj4SMtpkF/aUA==} dev: false - /@tanstack/query-persist-client-core@4.35.3: - resolution: {integrity: sha512-UlUMsvmy12qgPzphIq8iyFtwxuv/vaEyFQEFDVVCvyrqj2G020qMZiCA1vj3+gasmCXh59EraiC2eY4Iqo0/PA==} + /@tanstack/query-persist-client-core@4.29.7: + resolution: {integrity: sha512-/QahvSq9/f8hetCsCd9MaOy6fAoPn0YDGDcl6TTobqdr9kHMgrM9laP9yKJFg2hm5/jIsrCMDO/iCnxBiUhrqw==} dependencies: - '@tanstack/query-core': 4.35.3 + '@tanstack/query-core': 4.29.7 dev: false - /@tanstack/query-sync-storage-persister@4.35.3: - resolution: {integrity: sha512-q9axt4iJkRnhR9R9qou+Q2+T2S21jwgf/7carYs9DQGLoE9r9YnwxgbmDE72yQd1glcsGF26UqqO6WO8ziNCrQ==} + /@tanstack/query-sync-storage-persister@4.29.7: + resolution: {integrity: sha512-XWys8hez8eFIb9+oYNs0Jumfjz8afEwN52VSrHJEWg7gZO/Y/8ziI80cNlaDNB+60t7s3TaspKXT5z8DNFsCkQ==} dependencies: - '@tanstack/query-persist-client-core': 4.35.3 + '@tanstack/query-persist-client-core': 4.29.7 dev: false - /@tanstack/react-query-persist-client@4.35.5(@tanstack/react-query@4.35.3): - resolution: {integrity: sha512-d8pFzvMD6AD2guGXLP2A4r0mfCRuZ8C4VMBl5+EZvka/e4o9/DRfizZB4S9w0Za+sOQJ4/SdD3OOk2BwYEykkQ==} + /@tanstack/react-query-persist-client@4.29.7(@tanstack/react-query@4.29.7): + resolution: {integrity: sha512-KYUeESnthjjcfakpAei9Cz5gsIm1uDAVHrKcIAoARQwksk4j0KAo9ieExoIhL9v4mpTOlE9GsuZ/y06ANmaVaQ==} peerDependencies: - '@tanstack/react-query': ^4.35.3 + '@tanstack/react-query': 4.29.7 dependencies: - '@tanstack/query-persist-client-core': 4.35.3 - '@tanstack/react-query': 4.35.3(react-dom@18.2.0)(react@18.2.0) + '@tanstack/query-persist-client-core': 4.29.7 + '@tanstack/react-query': 4.29.7(react-dom@18.2.0)(react@18.2.0) dev: false - /@tanstack/react-query@4.35.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-UgTPioip/rGG3EQilXfA2j4BJkhEQsR+KAbF+KIuvQ7j4MkgnTCJF01SfRpIRNtQTlEfz/+IL7+jP8WA8bFbsw==} + /@tanstack/react-query@4.29.7(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ijBWEzAIo09fB1yd22slRZzprrZ5zMdWYzBnCg5qiXuFbH78uGN1qtGz8+Ed4MuhaPaYSD+hykn+QEKtQviEtg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4082,12 +5456,17 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.35.3 + '@tanstack/query-core': 4.29.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) use-sync-external-store: 1.2.0(react@18.2.0) dev: false + /@trysound/sax@0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: false + /@tsconfig/node10@1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} dev: true @@ -4100,63 +5479,83 @@ packages: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} dev: true - /@tsconfig/node16@1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + /@tsconfig/node16@1.0.3: + resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} dev: true - /@types/babel__core@7.20.2: - resolution: {integrity: sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==} + /@types/babel__core@7.20.0: + resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} dependencies: - '@babel/parser': 7.22.16 - '@babel/types': 7.22.19 - '@types/babel__generator': 7.6.5 - '@types/babel__template': 7.4.2 - '@types/babel__traverse': 7.20.2 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.18.5 dev: true - /@types/babel__generator@7.6.5: - resolution: {integrity: sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==} + /@types/babel__generator@7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.22.19 + '@babel/types': 7.22.15 dev: true - /@types/babel__template@7.4.2: - resolution: {integrity: sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==} + /@types/babel__template@7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.22.16 - '@babel/types': 7.22.19 + '@babel/parser': 7.22.15 + '@babel/types': 7.22.15 dev: true - /@types/babel__traverse@7.20.2: - resolution: {integrity: sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==} + /@types/babel__traverse@7.18.5: + resolution: {integrity: sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==} dependencies: - '@babel/types': 7.22.19 + '@babel/types': 7.22.15 dev: true /@types/bn.js@4.11.6: resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} dependencies: - '@types/node': 18.17.17 + '@types/node': 18.16.18 + dev: false + + /@types/body-parser@1.19.3: + resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} + dependencies: + '@types/connect': 3.4.35 + '@types/node': 18.16.18 + dev: false + + /@types/bonjour@3.5.11: + resolution: {integrity: sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==} + dependencies: + '@types/node': 18.16.18 dev: false - /@types/chai@4.3.6: - resolution: {integrity: sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==} + /@types/chai@4.3.5: + resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} dev: true - /@types/connect@3.4.36: - resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} + /@types/connect-history-api-fallback@1.5.1: + resolution: {integrity: sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==} + dependencies: + '@types/express-serve-static-core': 4.17.36 + '@types/node': 18.16.18 + dev: false + + /@types/connect@3.4.35: + resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.17.17 + '@types/node': 18.16.18 dev: false /@types/cross-spawn@6.0.3: resolution: {integrity: sha512-BDAkU7WHHRHnvBf5z89lcvACsvkz/n7Tv+HyD/uW76O29HoH1Tk/W6iQrepaZVbisvlEek4ygwT8IW7ow9XLAA==} dependencies: - '@types/node': 18.17.17 + '@types/node': 18.16.18 dev: true - /@types/debug@4.1.8: - resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} + /@types/debug@4.1.7: + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: '@types/ms': 0.7.31 dev: false @@ -4166,14 +5565,12 @@ packages: dependencies: '@types/eslint': 8.44.2 '@types/estree': 1.0.1 - dev: true /@types/eslint@8.44.2: resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} dependencies: '@types/estree': 1.0.1 - '@types/json-schema': 7.0.13 - dev: true + '@types/json-schema': 7.0.12 /@types/estree@0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} @@ -4181,28 +5578,68 @@ packages: /@types/estree@1.0.1: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} - dev: true - /@types/fs-extra@11.0.2: - resolution: {integrity: sha512-c0hrgAOVYr21EX8J0jBMXGLMgJqVf/v6yxi0dLaJboW9aQPh16Id+z6w2Tx1hm+piJOLv8xPfVKZCLfjPw/IMQ==} + /@types/express-serve-static-core@4.17.36: + resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} dependencies: - '@types/jsonfile': 6.1.2 - '@types/node': 18.17.17 + '@types/node': 18.16.18 + '@types/qs': 6.9.8 + '@types/range-parser': 1.2.4 + '@types/send': 0.17.1 + dev: false + + /@types/express@4.17.17: + resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} + dependencies: + '@types/body-parser': 1.19.3 + '@types/express-serve-static-core': 4.17.36 + '@types/qs': 6.9.8 + '@types/serve-static': 1.15.2 + dev: false + + /@types/fs-extra@11.0.1: + resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} + dependencies: + '@types/jsonfile': 6.1.1 + '@types/node': 18.16.18 dev: true /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.17.17 + '@types/node': 18.16.18 dev: true /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 18.17.17 + '@types/node': 18.16.18 dev: true + /@types/hast@2.3.6: + resolution: {integrity: sha512-47rJE80oqPmFdVDCD7IheXBrVdwuBgsYwoczFvKmwfo2Mzsnt+V9OONsYauFmICb6lQPpCuXYJWejBNs4pDJRg==} + dependencies: + '@types/unist': 2.0.8 + dev: false + + /@types/history@4.7.11: + resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} + + /@types/html-minifier-terser@6.1.0: + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + dev: false + + /@types/http-errors@2.0.2: + resolution: {integrity: sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==} + dev: false + + /@types/http-proxy@1.17.12: + resolution: {integrity: sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==} + dependencies: + '@types/node': 18.16.18 + dev: false + /@types/is-ci@3.0.0: resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} dependencies: @@ -4211,75 +5648,80 @@ packages: /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: true /@types/istanbul-lib-report@3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 - dev: true /@types/istanbul-reports@3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 - dev: true - /@types/jest@29.5.5: - resolution: {integrity: sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==} + /@types/jest@29.5.1: + resolution: {integrity: sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==} dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 + expect: 29.5.0 + pretty-format: 29.5.0 dev: true - /@types/json-schema@7.0.13: - resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} - dev: true + /@types/json-schema@7.0.12: + resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - /@types/jsonfile@6.1.2: - resolution: {integrity: sha512-8t92P+oeW4d/CRQfJaSqEwXujrhH4OEeHRjGU3v1Q8mUS8GPF3yiX26sw4svv6faL2HfBtGTe2xWIoVgN3dy9w==} + /@types/jsonfile@6.1.1: + resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} dependencies: - '@types/node': 18.17.17 + '@types/node': 18.16.18 dev: true /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.17.17 + '@types/node': 18.16.18 dev: false /@types/lodash.clonedeep@4.5.7: resolution: {integrity: sha512-ccNqkPptFIXrpVqUECi60/DFxjNKsfoQxSQsgcBJCX/fuX1wgyQieojkcWH/KpE3xzLoWN/2k+ZeGqIN3paSvw==} dependencies: - '@types/lodash': 4.14.198 + '@types/lodash': 4.14.195 dev: true /@types/lodash.mapvalues@4.6.7: resolution: {integrity: sha512-yGTo9zD60Iw1Q+YBvx4Ad7RDj5rA6EpvYTpVPVsfe6pwHcwDcGChSqL1n2sPBMbCeHJ3R5kcaqpkdlrFe/y4Vg==} dependencies: - '@types/lodash': 4.14.198 + '@types/lodash': 4.14.195 dev: true /@types/lodash.sortby@4.7.7: resolution: {integrity: sha512-J/4IS+jQopGBrrRetBXDCX0KnSeXJZ0rOTmGAxR9MWGV24YdHxX8IRi9LCGAU9GKWlBov9KRSfQpuup9PReqrw==} dependencies: - '@types/lodash': 4.14.198 + '@types/lodash': 4.14.195 dev: true - /@types/lodash@4.14.198: - resolution: {integrity: sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg==} + /@types/lodash@4.14.195: + resolution: {integrity: sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==} dev: true /@types/long@4.0.2: resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} dev: false + /@types/mdast@3.0.12: + resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==} + dependencies: + '@types/unist': 2.0.8 + dev: false + + /@types/mime@1.3.2: + resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} + dev: false + /@types/mime@3.0.1: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} - dev: true /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} @@ -4300,21 +5742,21 @@ packages: /@types/mute-stream@0.0.1: resolution: {integrity: sha512-0yQLzYhCqGz7CQPE3iDmYjhb7KMBFOP+tBkyw+/Y2YyDI5wpS7itXXxneN1zSsUwWx3Ji6YiVYrhAnpQGS/vkw==} dependencies: - '@types/node': 18.17.17 + '@types/node': 18.16.18 dev: false /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - /@types/node@18.17.17: - resolution: {integrity: sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw==} + /@types/node@17.0.45: + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + dev: false - /@types/node@20.4.7: - resolution: {integrity: sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g==} - dev: true + /@types/node@18.16.18: + resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} - /@types/node@20.6.2: - resolution: {integrity: sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==} + /@types/node@20.6.0: + resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} dev: false /@types/normalize-package-data@2.4.1: @@ -4323,39 +5765,84 @@ packages: /@types/parse-json@4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - dev: true + + /@types/parse5@5.0.3: + resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==} + dev: false /@types/pbkdf2@3.1.0: resolution: {integrity: sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==} dependencies: - '@types/node': 18.17.17 + '@types/node': 18.16.18 dev: false - /@types/prop-types@15.7.6: - resolution: {integrity: sha512-RK/kBbYOQQHLYj9Z95eh7S6t7gq4Ojt/NT8HTk8bWVhA5DaF+5SMnxHKkP4gPNN3wAZkKP+VjAf0ebtYzf+fxg==} + /@types/prettier@2.7.2: + resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} + dev: true + + /@types/prop-types@15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + + /@types/qs@6.9.8: + resolution: {integrity: sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==} + dev: false + + /@types/range-parser@1.2.4: + resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} + dev: false + + /@types/react-dom@18.2.5: + resolution: {integrity: sha512-sRQsOS/sCLnpQhR4DSKGTtWFE3FZjpQa86KPVbhUqdYMRZ9FEFcfAytKhR/vUG2rH1oFbOOej6cuD7MFSobDRQ==} + dependencies: + '@types/react': 18.2.12 + + /@types/react-router-config@5.0.7: + resolution: {integrity: sha512-pFFVXUIydHlcJP6wJm7sDii5mD/bCmmAY0wQzq+M+uX7bqS95AQqHZWP1iNMKrWVQSuHIzj5qi9BvrtLX2/T4w==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.12 + '@types/react-router': 5.1.20 + + /@types/react-router-dom@5.3.3: + resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.12 + '@types/react-router': 5.1.20 - /@types/react-dom@18.2.7: - resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} + /@types/react-router@5.1.20: + resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: - '@types/react': 18.2.22 + '@types/history': 4.7.11 + '@types/react': 18.2.12 - /@types/react@18.2.22: - resolution: {integrity: sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==} + /@types/react@18.2.12: + resolution: {integrity: sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==} dependencies: - '@types/prop-types': 15.7.6 + '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 csstype: 3.1.2 /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.17.17 + '@types/node': 18.16.18 dev: true /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.17.17 + '@types/node': 18.16.18 + dev: false + + /@types/retry@0.12.0: + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + dev: false + + /@types/sax@1.2.4: + resolution: {integrity: sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==} + dependencies: + '@types/node': 18.16.18 dev: false /@types/scheduler@0.16.3: @@ -4364,19 +5851,54 @@ packages: /@types/secp256k1@4.0.3: resolution: {integrity: sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==} dependencies: - '@types/node': 18.17.17 + '@types/node': 18.16.18 dev: false - /@types/semver@7.5.2: - resolution: {integrity: sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==} + /@types/semver@6.2.3: + resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} + dev: true + + /@types/semver@7.5.0: + resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true + /@types/send@0.17.1: + resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} + dependencies: + '@types/mime': 1.3.2 + '@types/node': 18.16.18 + dev: false + + /@types/serve-index@1.9.1: + resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==} + dependencies: + '@types/express': 4.17.17 + dev: false + + /@types/serve-static@1.15.2: + resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} + dependencies: + '@types/http-errors': 2.0.2 + '@types/mime': 3.0.1 + '@types/node': 18.16.18 + dev: false + + /@types/sockjs@0.3.33: + resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} + dependencies: + '@types/node': 18.16.18 + dev: false + /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/trusted-types@2.0.4: - resolution: {integrity: sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ==} + /@types/trusted-types@2.0.3: + resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} + dev: false + + /@types/unist@2.0.8: + resolution: {integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==} dev: false /@types/validate-npm-package-name@4.0.0: @@ -4390,33 +5912,31 @@ packages: /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: - '@types/node': 18.17.17 + '@types/node': 18.16.18 dev: false /@types/ws@8.5.5: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: - '@types/node': 18.17.17 + '@types/node': 18.16.18 dev: false - /@types/xml2js@0.4.12: - resolution: {integrity: sha512-CZPpQKBZ8db66EP5hCjwvYrLThgZvnyZrPXK2W+UI1oOaWezGt34iOaUCX4Jah2X8+rQqjvl9VKEIT8TR1I0rA==} + /@types/xml2js@0.4.11: + resolution: {integrity: sha512-JdigeAKmCyoJUiQljjr7tQG3if9NkqGUgwEUqBvV0N7LM4HyQk7UXCnusRa1lnvXAEYJ8mw8GtZWioagNztOwA==} dependencies: - '@types/node': 18.17.17 + '@types/node': 18.16.18 dev: true /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - dev: true /@types/yargs@17.0.24: resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} dependencies: '@types/yargs-parser': 21.0.0 - dev: true - /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@4.9.5): - resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5): + resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -4426,38 +5946,38 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.8.1 - '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.5) - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + '@eslint-community/regexpp': 4.8.0 + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.59.11 + '@typescript-eslint/type-utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.49.0 - graphemer: 1.4.0 + eslint: 8.48.0 + grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 - semver: 7.5.4 + semver: 7.5.2 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@5.62.0(eslint@8.49.0)(typescript@4.9.5): - resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} + /@typescript-eslint/experimental-utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): + resolution: {integrity: sha512-jqM0Cjfvta/sBlY1MxdXYv853/dJUC2wmUWnKoG2srwp0njNGQ6Zu/XLWoRFiLvocQbzBbpHkPFwKgC2UqyovA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) - eslint: 8.49.0 + '@typescript-eslint/utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) + eslint: 8.48.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/parser@5.62.0(eslint@8.49.0)(typescript@4.9.5): - resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + /@typescript-eslint/parser@5.59.11(eslint@8.48.0)(typescript@4.9.5): + resolution: {integrity: sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4466,24 +5986,32 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.59.11 + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.49.0 + eslint: 8.48.0 typescript: 4.9.5 transitivePeerDependencies: - supports-color - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + /@typescript-eslint/scope-manager@5.59.11: + resolution: {integrity: sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/visitor-keys': 5.59.11 + + /@typescript-eslint/scope-manager@5.59.7: + resolution: {integrity: sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/visitor-keys': 5.59.7 + dev: true - /@typescript-eslint/type-utils@5.62.0(eslint@8.49.0)(typescript@4.9.5): - resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + /@typescript-eslint/type-utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): + resolution: {integrity: sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -4492,22 +6020,47 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) - '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.49.0 + eslint: 8.48.0 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.62.0: - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + /@typescript-eslint/types@5.59.11: + resolution: {integrity: sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /@typescript-eslint/types@5.59.7: + resolution: {integrity: sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.59.11(typescript@4.9.5): + resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/visitor-keys': 5.59.11 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.2 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color - /@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): + resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -4515,43 +6068,72 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/visitor-keys': 5.59.7 debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 + semver: 7.5.2 tsutils: 3.21.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: true + + /@typescript-eslint/utils@5.59.11(eslint@8.48.0)(typescript@4.9.5): + resolution: {integrity: sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.59.11 + '@typescript-eslint/types': 5.59.11 + '@typescript-eslint/typescript-estree': 5.59.11(typescript@4.9.5) + eslint: 8.48.0 + eslint-scope: 5.1.1 + semver: 7.5.2 + transitivePeerDependencies: + - supports-color + - typescript + dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.49.0)(typescript@4.9.5): - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + /@typescript-eslint/utils@5.59.7(eslint@8.48.0)(typescript@4.9.5): + resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) - '@types/json-schema': 7.0.13 - '@types/semver': 7.5.2 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) - eslint: 8.49.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.59.7 + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) + eslint: 8.48.0 eslint-scope: 5.1.1 - semver: 7.5.4 + semver: 7.5.2 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + /@typescript-eslint/visitor-keys@5.59.11: + resolution: {integrity: sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.11 + eslint-visitor-keys: 3.4.3 + + /@typescript-eslint/visitor-keys@5.59.7: + resolution: {integrity: sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/types': 5.59.7 eslint-visitor-keys: 3.4.3 + dev: true /@vanilla-extract/css@1.9.1: resolution: {integrity: sha512-pu2SFiff5jRhPwvGoj8cM5l/qIyLvigOmy22ss5DGjwV5pJYezRjDLxWumi2luIwioMWvh9EozCjyfH8nq+7fQ==} @@ -4587,31 +6169,45 @@ packages: '@vanilla-extract/css': 1.9.1 dev: false - /@wagmi/connectors@3.1.2(@types/react@18.2.22)(react@18.2.0)(typescript@4.9.5)(viem@1.10.14): - resolution: {integrity: sha512-IlLKErqCzQRBUcCvXGPowcczbWcvJtEG006gPsAoePNJEXCHEWoKASghgu+L/bqD7006Z6mW6zlTNjcSQJvFAg==} + /@wagmi/chains@1.1.0(typescript@4.9.5): + resolution: {integrity: sha512-pWZlxBk0Ql8E7DV8DwqlbBpOyUdaG9UDlQPBxJNALuEK1I0tbQ3AVvSDnlsEIt06UPmPo5o27gzs3hwPQ/A+UA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 4.9.5 + dev: false + + /@wagmi/connectors@2.2.0(@wagmi/chains@1.1.0)(react@18.2.0)(typescript@4.9.5)(viem@1.0.6): + resolution: {integrity: sha512-pI1ed2V8dC8Gro0YbXrJedFj5U9HHD/zUe9MMUaV3ews2LY6qziSXZp9Dw6TKyiSJ5ANbRlZcl40AmSPozkZmw==} peerDependencies: + '@wagmi/chains': '>=1.0.0' typescript: '>=5.0.4' viem: '>=0.3.35' peerDependenciesMeta: + '@wagmi/chains': + optional: true typescript: optional: true dependencies: - '@coinbase/wallet-sdk': 3.7.2 - '@ledgerhq/connect-kit-loader': 1.1.2 - '@safe-global/safe-apps-provider': 0.17.1(typescript@4.9.5) - '@safe-global/safe-apps-sdk': 8.1.0(typescript@4.9.5) - '@walletconnect/ethereum-provider': 2.10.1(@walletconnect/modal@2.6.2) + '@coinbase/wallet-sdk': 3.6.6 + '@ledgerhq/connect-kit-loader': 1.0.2 + '@safe-global/safe-apps-provider': 0.15.2 + '@safe-global/safe-apps-sdk': 7.11.0 + '@wagmi/chains': 1.1.0(typescript@4.9.5) + '@walletconnect/ethereum-provider': 2.8.0(@walletconnect/modal@2.5.9) '@walletconnect/legacy-provider': 2.0.0 - '@walletconnect/modal': 2.6.2(@types/react@18.2.22)(react@18.2.0) - '@walletconnect/utils': 2.10.1 + '@walletconnect/modal': 2.5.9(react@18.2.0) abitype: 0.8.7(typescript@4.9.5) eventemitter3: 4.0.7 typescript: 4.9.5 - viem: 1.10.14(typescript@4.9.5) + viem: 1.0.6(typescript@4.9.5) transitivePeerDependencies: - '@react-native-async-storage/async-storage' - - '@types/react' - bufferutil + - debug - encoding - lokijs - react @@ -4620,8 +6216,8 @@ packages: - zod dev: false - /@wagmi/core@1.4.2(@types/react@18.2.22)(react@18.2.0)(typescript@4.9.5)(viem@1.10.14): - resolution: {integrity: sha512-szgNs2DCbBXKsq3wdm/YD8FWkg7lfmTRAv25b2nJYJUTQN59pVXznlWfq8VCJLamhKOYjeYHlTQxXkAeUAJdhw==} + /@wagmi/core@1.2.0(react@18.2.0)(typescript@4.9.5)(viem@1.0.6): + resolution: {integrity: sha512-7onf13u0atdXOnoitB+pivnIUPJman7Y8GITKkxwmcwJ3lpE1U/grYE7xHcKN7av7KEu0DozvKPhN7nJ/7OErw==} peerDependencies: typescript: '>=5.0.4' viem: '>=0.3.35' @@ -4629,16 +6225,17 @@ packages: typescript: optional: true dependencies: - '@wagmi/connectors': 3.1.2(@types/react@18.2.22)(react@18.2.0)(typescript@4.9.5)(viem@1.10.14) + '@wagmi/chains': 1.1.0(typescript@4.9.5) + '@wagmi/connectors': 2.2.0(@wagmi/chains@1.1.0)(react@18.2.0)(typescript@4.9.5)(viem@1.0.6) abitype: 0.8.7(typescript@4.9.5) eventemitter3: 4.0.7 typescript: 4.9.5 - viem: 1.10.14(typescript@4.9.5) - zustand: 4.4.1(@types/react@18.2.22)(react@18.2.0) + viem: 1.0.6(typescript@4.9.5) + zustand: 4.3.8(react@18.2.0) transitivePeerDependencies: - '@react-native-async-storage/async-storage' - - '@types/react' - bufferutil + - debug - encoding - immer - lokijs @@ -4648,22 +6245,22 @@ packages: - zod dev: false - /@walletconnect/core@2.10.1: - resolution: {integrity: sha512-WAoXfmj+Zy5q48TnrKUjmHXJCBahzKwbul+noepRZf7JDtUAZ9IOWpUjg+UPRbfK5EiWZ0TF42S6SXidf7EHoQ==} + /@walletconnect/core@2.8.0: + resolution: {integrity: sha512-pl7x4sq1nuU0ixA9wF2ecjDecUzIauKr7ZwC29rs9qTcmDpxgJbbOdZwaSl+dJlf1bHC87adVLf5KAkwwo9PzQ==} dependencies: '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.13 + '@walletconnect/jsonrpc-ws-connection': 1.0.11 '@walletconnect/keyvaluestorage': 1.0.2 '@walletconnect/logger': 2.0.1 '@walletconnect/relay-api': 1.0.9 '@walletconnect/relay-auth': 1.0.4 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.10.1 - '@walletconnect/utils': 2.10.1 + '@walletconnect/types': 2.8.0 + '@walletconnect/utils': 2.8.0 events: 3.3.0 lodash.isequal: 4.5.0 uint8arrays: 3.1.1 @@ -4699,8 +6296,8 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/ethereum-provider@2.10.1(@walletconnect/modal@2.6.2): - resolution: {integrity: sha512-Yhoz8EXkKzxOlBT6G+elphqCx/gkH6RxD9/ZAiy9lLc8Ng5p1gvKCVVP5zsGNE9FbkKmHd+J9JJRzn2Bw2yqtQ==} + /@walletconnect/ethereum-provider@2.8.0(@walletconnect/modal@2.5.9): + resolution: {integrity: sha512-nVVJtZUpoeurFjoEPYlrUHkT3YleCpEC9YAMKJyEIB3MZZInttcGxGyi0vwFQ+trCfuX8RrdKUPQ952NvxvCvw==} peerDependencies: '@walletconnect/modal': '>=2' peerDependenciesMeta: @@ -4711,15 +6308,16 @@ packages: '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/modal': 2.6.2(@types/react@18.2.22)(react@18.2.0) - '@walletconnect/sign-client': 2.10.1 - '@walletconnect/types': 2.10.1 - '@walletconnect/universal-provider': 2.10.1 - '@walletconnect/utils': 2.10.1 + '@walletconnect/modal': 2.5.9(react@18.2.0) + '@walletconnect/sign-client': 2.8.0 + '@walletconnect/types': 2.8.0 + '@walletconnect/universal-provider': 2.8.0 + '@walletconnect/utils': 2.8.0 events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' - bufferutil + - debug - encoding - lokijs - utf-8-validate @@ -4745,7 +6343,7 @@ packages: dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 - cross-fetch: 3.1.8 + cross-fetch: 3.1.6 tslib: 1.14.1 transitivePeerDependencies: - encoding @@ -4774,8 +6372,8 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/jsonrpc-ws-connection@1.0.13: - resolution: {integrity: sha512-mfOM7uFH4lGtQxG+XklYuFBj6dwVvseTt5/ahOkkmpcAEgz2umuzu7fTR+h5EmjQBdrmYyEBOWADbeaFNxdySg==} + /@walletconnect/jsonrpc-ws-connection@1.0.11: + resolution: {integrity: sha512-TiFJ6saasKXD+PwGkm5ZGSw0837nc6EeFmurSPgIT/NofnOV4Tv7CVJqGQN0rQYoJUSYu21cwHNYaFkzNpUN+w==} dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 @@ -4823,7 +6421,7 @@ packages: '@walletconnect/legacy-types': 2.0.0 '@walletconnect/legacy-utils': 2.0.0 copy-to-clipboard: 3.3.3 - preact: 10.17.1 + preact: 10.14.1 qrcode: 1.5.3 dev: false @@ -4866,34 +6464,32 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/modal-core@2.6.2(@types/react@18.2.22)(react@18.2.0): - resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} + /@walletconnect/modal-core@2.5.9(react@18.2.0): + resolution: {integrity: sha512-isIebwF9hOknGouhS/Ob4YJ9Sa/tqNYG2v6Ua9EkCqIoLimepkG5eC53tslUWW29SLSfQ9qqBNG2+iE7yQXqgw==} dependencies: - valtio: 1.11.2(@types/react@18.2.22)(react@18.2.0) + buffer: 6.0.3 + valtio: 1.10.6(react@18.2.0) transitivePeerDependencies: - - '@types/react' - react dev: false - /@walletconnect/modal-ui@2.6.2(@types/react@18.2.22)(react@18.2.0): - resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==} + /@walletconnect/modal-ui@2.5.9(react@18.2.0): + resolution: {integrity: sha512-nfBaAT9Ls7RZTBBgAq+Nt/3AoUcinIJ9bcq5UHXTV3lOPu/qCKmUC/0HY3GvUK8ykabUAsjr0OAGmcqkB91qug==} dependencies: - '@walletconnect/modal-core': 2.6.2(@types/react@18.2.22)(react@18.2.0) - lit: 2.8.0 + '@walletconnect/modal-core': 2.5.9(react@18.2.0) + lit: 2.7.5 motion: 10.16.2 qrcode: 1.5.3 transitivePeerDependencies: - - '@types/react' - react dev: false - /@walletconnect/modal@2.6.2(@types/react@18.2.22)(react@18.2.0): - resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} + /@walletconnect/modal@2.5.9(react@18.2.0): + resolution: {integrity: sha512-Zs2RvPwbBNRdBhb50FuJCxi3FJltt1KSpI7odjU/x9GTpTOcSOkmR66PBCy2JvNA0+ztnS1Xs0LVEr3lu7/Jzw==} dependencies: - '@walletconnect/modal-core': 2.6.2(@types/react@18.2.22)(react@18.2.0) - '@walletconnect/modal-ui': 2.6.2(@types/react@18.2.22)(react@18.2.0) + '@walletconnect/modal-core': 2.5.9(react@18.2.0) + '@walletconnect/modal-ui': 2.5.9(react@18.2.0) transitivePeerDependencies: - - '@types/react' - react dev: false @@ -4930,17 +6526,17 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/sign-client@2.10.1: - resolution: {integrity: sha512-iG3eJGi1yXeG3xGeVSSMf8wDFyx239B0prLQfy1uYDtYFb2ynnH/09oqAZyKn96W5nfQzUgM2Mz157PVdloH3Q==} + /@walletconnect/sign-client@2.8.0: + resolution: {integrity: sha512-+l9qwvVeUGk0fBQsgx6yb6hdGYt8uQ3a9jR9GgsJvm8FjFh1oUzTKqFnG7XdhCBnzFnbSoLr41Xe8PbN8qoUSw==} dependencies: - '@walletconnect/core': 2.10.1 + '@walletconnect/core': 2.8.0 '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.10.1 - '@walletconnect/utils': 2.10.1 + '@walletconnect/types': 2.8.0 + '@walletconnect/utils': 2.8.0 events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -4955,8 +6551,8 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/types@2.10.1: - resolution: {integrity: sha512-7pccAhajQdiH2kYywjE1XI64IqRI+4ioyGy0wvz8d0UFQ/DSG3MLKR8jHf5aTOafQQ/HRLz6xvlzN4a7gIVkUQ==} + /@walletconnect/types@2.8.0: + resolution: {integrity: sha512-FMeGK3lGXFDwcs5duoN74xL1aLrkgYqnavWE0DnFPt2i1QmSUITU9c8f88EDh8uPXANd2WIYOItm0DVCNxLGGA==} dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 @@ -4969,28 +6565,30 @@ packages: - lokijs dev: false - /@walletconnect/universal-provider@2.10.1: - resolution: {integrity: sha512-81QxTH/X4dRoYCz0U9iOrBYOcj7N897ONcB57wsGhEkV7Rc9htmWJq2CzeOuxvVZ+pNZkE+/aw9LrhizO1Ltxg==} + /@walletconnect/universal-provider@2.8.0: + resolution: {integrity: sha512-BMsGiINI3rT7DRyDJM7miuWG6vDVE0PV6zMcCXIMDYYPay7zFvJxv2VHEx9an4MutrvQR76NTRyG//i1K84VOQ==} dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7 '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 - '@walletconnect/sign-client': 2.10.1 - '@walletconnect/types': 2.10.1 - '@walletconnect/utils': 2.10.1 + '@walletconnect/sign-client': 2.8.0 + '@walletconnect/types': 2.8.0 + '@walletconnect/utils': 2.8.0 + eip1193-provider: 1.0.1 events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' - bufferutil + - debug - encoding - lokijs - utf-8-validate dev: false - /@walletconnect/utils@2.10.1: - resolution: {integrity: sha512-DM0dKgm9O58l7VqJEyV2OVv16XRePhDAReI23let6WdW1dSpw/Y/A89Lp99ZJOjLm2FxyblMRF3YRaZtHwBffw==} + /@walletconnect/utils@2.8.0: + resolution: {integrity: sha512-Q8OwMtUevIn1+64LXyTMLlhH58k3UOAjU5b3smYZ7CEEmwEGpOTfTDAWrB3v+ZDIhjyqP94+8fuvKIbcVLKLWA==} dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -5000,7 +6598,7 @@ packages: '@walletconnect/relay-api': 1.0.9 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.10.1 + '@walletconnect/types': 2.8.0 '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 detect-browser: 5.3.0 @@ -5029,19 +6627,15 @@ packages: dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - dev: true /@webassemblyjs/floating-point-hex-parser@1.11.6: resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - dev: true /@webassemblyjs/helper-api-error@1.11.6: resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - dev: true /@webassemblyjs/helper-buffer@1.11.6: resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} - dev: true /@webassemblyjs/helper-numbers@1.11.6: resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} @@ -5049,11 +6643,9 @@ packages: '@webassemblyjs/floating-point-hex-parser': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 - dev: true /@webassemblyjs/helper-wasm-bytecode@1.11.6: resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - dev: true /@webassemblyjs/helper-wasm-section@1.11.6: resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} @@ -5062,23 +6654,19 @@ packages: '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 - dev: true /@webassemblyjs/ieee754@1.11.6: resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} dependencies: '@xtuc/ieee754': 1.2.0 - dev: true /@webassemblyjs/leb128@1.11.6: resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} dependencies: '@xtuc/long': 4.2.2 - dev: true /@webassemblyjs/utf8@1.11.6: resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - dev: true /@webassemblyjs/wasm-edit@1.11.6: resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} @@ -5091,7 +6679,6 @@ packages: '@webassemblyjs/wasm-opt': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 '@webassemblyjs/wast-printer': 1.11.6 - dev: true /@webassemblyjs/wasm-gen@1.11.6: resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} @@ -5101,7 +6688,6 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: true /@webassemblyjs/wasm-opt@1.11.6: resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} @@ -5110,7 +6696,6 @@ packages: '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 - dev: true /@webassemblyjs/wasm-parser@1.11.6: resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} @@ -5121,38 +6706,34 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: true /@webassemblyjs/wast-printer@1.11.6: resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} dependencies: '@webassemblyjs/ast': 1.11.6 '@xtuc/long': 4.2.2 - dev: true - /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.88.2): + /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.88.1): resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} engines: {node: '>=14.15.0'} peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x dependencies: - webpack: 5.88.2(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.88.2) - dev: true + webpack: 5.88.1(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.88.1) - /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.88.2): + /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.88.1): resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} engines: {node: '>=14.15.0'} peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x dependencies: - webpack: 5.88.2(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.88.2) - dev: true + webpack: 5.88.1(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.88.1) - /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.88.2): + /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.88.1): resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} engines: {node: '>=14.15.0'} peerDependencies: @@ -5163,17 +6744,14 @@ packages: webpack-dev-server: optional: true dependencies: - webpack: 5.88.2(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack@5.88.2) - dev: true + webpack: 5.88.1(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.88.1) /@xtuc/ieee754@1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dev: true /@xtuc/long@4.2.2: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dev: true /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} @@ -5194,18 +6772,12 @@ packages: typescript: 4.9.5 dev: false - /abitype@0.9.8(typescript@4.9.5): - resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.19.1 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} dependencies: - typescript: 4.9.5 + mime-types: 2.1.35 + negotiator: 0.6.3 dev: false /acorn-import-assertions@1.9.0(acorn@8.10.0): @@ -5214,7 +6786,6 @@ packages: acorn: ^8 dependencies: acorn: 8.10.0 - dev: true /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -5226,13 +6797,17 @@ packages: /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - dev: true /acorn@8.10.0: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true + /address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + dev: false + /aes-js@3.0.0: resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} dev: false @@ -5241,13 +6816,24 @@ packages: resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} dev: false - /agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + /agentkeepalive@4.3.0: + resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==} engines: {node: '>= 8.0.0'} dependencies: + debug: 4.3.4(supports-color@8.1.1) + depd: 2.0.0 humanize-ms: 1.2.1 + transitivePeerDependencies: + - supports-color dev: false + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + /ahocorasick@1.0.2: resolution: {integrity: sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA==} dev: false @@ -5261,7 +6847,6 @@ packages: optional: true dependencies: ajv: 8.12.0 - dev: true /ajv-keywords@3.5.2(ajv@6.12.6): resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} @@ -5269,7 +6854,6 @@ packages: ajv: ^6.9.1 dependencies: ajv: 6.12.6 - dev: true /ajv-keywords@5.1.0(ajv@8.12.0): resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} @@ -5278,7 +6862,6 @@ packages: dependencies: ajv: 8.12.0 fast-deep-equal: 3.1.3 - dev: true /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -5295,7 +6878,40 @@ packages: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 - dev: true + + /algoliasearch-helper@3.14.1(algoliasearch@4.20.0): + resolution: {integrity: sha512-TZihm6eisSqgLWOXpISAUFXAolJvEpa1gkTjUUEDmVl+TTiQuNvzLQ/osOiqIXzx6QSS4Pd6Ry+SKKOwiqJ17g==} + peerDependencies: + algoliasearch: '>= 3.1 < 6' + dependencies: + '@algolia/events': 4.0.1 + algoliasearch: 4.20.0 + dev: false + + /algoliasearch@4.20.0: + resolution: {integrity: sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==} + dependencies: + '@algolia/cache-browser-local-storage': 4.20.0 + '@algolia/cache-common': 4.20.0 + '@algolia/cache-in-memory': 4.20.0 + '@algolia/client-account': 4.20.0 + '@algolia/client-analytics': 4.20.0 + '@algolia/client-common': 4.20.0 + '@algolia/client-personalization': 4.20.0 + '@algolia/client-search': 4.20.0 + '@algolia/logger-common': 4.20.0 + '@algolia/logger-console': 4.20.0 + '@algolia/requester-browser-xhr': 4.20.0 + '@algolia/requester-common': 4.20.0 + '@algolia/requester-node-http': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: false + + /ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + dependencies: + string-width: 4.2.3 + dev: false /ansi-colors@4.1.1: resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} @@ -5313,12 +6929,11 @@ packages: dependencies: type-fest: 0.21.3 - /ansi-escapes@5.0.0: - resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} - engines: {node: '>=12'} - dependencies: - type-fest: 1.4.0 - dev: true + /ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + dev: false /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -5327,7 +6942,6 @@ packages: /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - dev: true /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} @@ -5349,7 +6963,6 @@ packages: /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - dev: true /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -5357,7 +6970,6 @@ packages: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - dev: true /archive-type@4.0.0: resolution: {integrity: sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==} @@ -5370,19 +6982,22 @@ packages: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: false + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 - dev: true /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - /aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + /aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: - dequal: 2.0.3 + deep-equal: 2.2.1 /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} @@ -5390,17 +7005,25 @@ packages: call-bind: 1.0.2 is-array-buffer: 3.0.2 + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: false + + /array-flatten@2.1.2: + resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} + dev: false + /array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + /array-includes@3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 get-intrinsic: 1.2.1 is-string: 1.0.7 @@ -5420,60 +7043,42 @@ packages: engines: {node: '>=0.10.0'} dev: true - /array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + /array.prototype.flat@1.3.1: + resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 - es-shim-unscopables: 1.0.0 - get-intrinsic: 1.2.1 - - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + /array.prototype.flatmap@1.3.1: + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 - /array.prototype.tosorted@1.1.2: - resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + /array.prototype.tosorted@1.1.1: + resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 get-intrinsic: 1.2.1 - /arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 - get-intrinsic: 1.2.1 - is-array-buffer: 3.0.2 - is-shared-array-buffer: 1.0.2 - /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} dev: true + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: false + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -5481,32 +7086,53 @@ packages: /ast-types-flow@0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} + /astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + /async-mutex@0.2.6: resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} dependencies: - tslib: 2.6.2 + tslib: 2.5.2 dev: false - /asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} - dependencies: - has-symbols: 1.0.3 - /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false + /at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: false + /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} dev: false + /autoprefixer@10.4.15(postcss@8.4.14): + resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.10 + caniuse-lite: 1.0.30001527 + fraction.js: 4.3.6 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} - /axe-core@4.8.1: - resolution: {integrity: sha512-9l850jDDPnKq48nbad8SiEelCv4OrUWrKab/cPj0GScVg6cb6NbCCt/Ulk26QEq5jP9NnGr04Bit1BHyV6r5CQ==} + /axe-core@4.7.2: + resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} engines: {node: '>=4'} /axios@0.21.4: @@ -5517,8 +7143,16 @@ packages: - debug dev: false - /axios@1.5.0: - resolution: {integrity: sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==} + /axios@0.25.0: + resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} + dependencies: + follow-redirects: 1.15.2 + transitivePeerDependencies: + - debug + dev: false + + /axios@1.3.4: + resolution: {integrity: sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==} dependencies: follow-redirects: 1.15.2 form-data: 4.0.0 @@ -5527,22 +7161,22 @@ packages: - debug dev: false - /axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + /axobject-query@3.1.1: + resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} dependencies: - dequal: 2.0.3 + deep-equal: 2.2.1 - /babel-jest@29.7.0(@babel/core@7.22.20): - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + /babel-jest@29.5.0(@babel/core@7.22.15): + resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.22.20 - '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.2 + '@babel/core': 7.22.15 + '@jest/transform': 29.5.0 + '@types/babel__core': 7.20.0 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.22.20) + babel-preset-jest: 29.5.0(@babel/core@7.22.15) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -5550,6 +7184,43 @@ packages: - supports-color dev: true + /babel-loader@8.3.0(@babel/core@7.22.15)(webpack@5.88.1): + resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.22.15 + find-cache-dir: 3.3.2 + loader-utils: 2.0.4 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + + /babel-plugin-apply-mdx-type-prop@1.6.22(@babel/core@7.12.9): + resolution: {integrity: sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==} + peerDependencies: + '@babel/core': ^7.11.6 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@mdx-js/util': 1.6.22 + dev: false + + /babel-plugin-dynamic-import-node@2.3.3: + resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} + dependencies: + object.assign: 4.1.4 + dev: false + + /babel-plugin-extract-import-names@1.6.22: + resolution: {integrity: sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==} + dependencies: + '@babel/helper-plugin-utils': 7.10.4 + dev: false + /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} @@ -5563,120 +7234,121 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + /babel-plugin-jest-hoist@29.5.0: + resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.22.19 - '@types/babel__core': 7.20.2 - '@types/babel__traverse': 7.20.2 + '@babel/types': 7.22.15 + '@types/babel__core': 7.20.0 + '@types/babel__traverse': 7.18.5 dev: true /babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.22.15 + '@babel/runtime': 7.22.3 cosmiconfig: 7.1.0 - resolve: 1.22.6 + resolve: 1.22.2 dev: true - /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.22.20): - resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} + /babel-plugin-polyfill-corejs2@0.4.3(@babel/core@7.22.15): + resolution: {integrity: sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==} peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.20 - '@babel/core': 7.22.20 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.20) + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.15 + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.15) semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.22.20): - resolution: {integrity: sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==} + /babel-plugin-polyfill-corejs3@0.8.1(@babel/core@7.22.15): + resolution: {integrity: sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==} peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.20) - core-js-compat: 3.32.2 + '@babel/core': 7.22.15 + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.15) + core-js-compat: 3.30.2 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.22.20): - resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==} + /babel-plugin-polyfill-regenerator@0.5.0(@babel/core@7.22.15): + resolution: {integrity: sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==} peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.20 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.20) + '@babel/core': 7.22.15 + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.15) transitivePeerDependencies: - supports-color - dev: true /babel-plugin-transform-react-remove-prop-types@0.4.24: resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.20): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.15): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.20 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.20) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.20) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.20) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.20) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.20) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.20) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.20) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.20) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.20) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.20) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.20) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.20) - dev: true - - /babel-preset-jest@29.6.3(@babel/core@7.22.20): - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + '@babel/core': 7.22.15 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.15) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.15) + dev: true + + /babel-preset-jest@29.5.0(@babel/core@7.22.15): + resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.20 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.20) + '@babel/core': 7.22.15 + babel-plugin-jest-hoist: 29.5.0 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.15) dev: true /babel-preset-react-app@10.0.1: resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} dependencies: - '@babel/core': 7.22.20 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.20) - '@babel/plugin-proposal-decorators': 7.22.15(@babel/core@7.22.20) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.20) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.20) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.20) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.22.20) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.22.20) - '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-runtime': 7.22.15(@babel/core@7.22.20) - '@babel/preset-env': 7.22.20(@babel/core@7.22.20) - '@babel/preset-react': 7.22.15(@babel/core@7.22.20) - '@babel/preset-typescript': 7.22.15(@babel/core@7.22.20) - '@babel/runtime': 7.22.15 + '@babel/core': 7.22.15 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-decorators': 7.22.3(@babel/core@7.22.15) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-runtime': 7.22.4(@babel/core@7.22.15) + '@babel/preset-env': 7.22.4(@babel/core@7.22.15) + '@babel/preset-react': 7.22.3(@babel/core@7.22.15) + '@babel/preset-typescript': 7.21.5(@babel/core@7.22.15) + '@babel/runtime': 7.22.3 babel-plugin-macros: 3.1.0 babel-plugin-transform-react-remove-prop-types: 0.4.24 transitivePeerDependencies: - supports-color dev: true + /bail@1.0.5: + resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} + dev: false + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -5686,10 +7358,18 @@ packages: safe-buffer: 5.2.1 dev: false + /base16@1.0.0: + resolution: {integrity: sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==} + dev: false + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false + /batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + dev: false + /bech32@1.1.4: resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} dev: false @@ -5710,6 +7390,10 @@ packages: engines: {node: '>=0.6'} dev: false + /big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: false + /bigint-buffer@1.1.5: resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} engines: {node: '>= 10.0.0'} @@ -5721,7 +7405,6 @@ packages: /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - dev: true /bind-decorator@1.0.11: resolution: {integrity: sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg==} @@ -5760,6 +7443,39 @@ packages: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} dev: false + /body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /bonjour-service@1.1.1: + resolution: {integrity: sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==} + dependencies: + array-flatten: 2.1.2 + dns-equal: 1.0.0 + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + dev: false + + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: false + /borsh@0.7.0: resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} dependencies: @@ -5768,6 +7484,34 @@ packages: text-encoding-utf-8: 1.0.2 dev: false + /boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + dev: false + + /boxen@6.2.1: + resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + dev: false + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -5786,8 +7530,8 @@ packages: dependencies: fill-range: 7.0.1 - /breakword@1.0.6: - resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} + /breakword@1.0.5: + resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} dependencies: wcwidth: 1.0.1 dev: true @@ -5816,8 +7560,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001538 - electron-to-chromium: 1.4.523 + caniuse-lite: 1.0.30001527 + electron-to-chromium: 1.4.508 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) @@ -5869,7 +7613,6 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true /buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} @@ -5894,7 +7637,7 @@ packages: engines: {node: '>=6.14.2'} requiresBuild: true dependencies: - node-gyp-build: 4.6.1 + node-gyp-build: 4.6.0 dev: false /builtin-modules@3.3.0: @@ -5911,7 +7654,17 @@ packages: /builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: - semver: 7.5.4 + semver: 7.5.2 + dev: false + + /bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: false + + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} dev: false /cacheable-request@2.1.4: @@ -5926,6 +7679,19 @@ packages: responselike: 1.0.2 dev: false + /cacheable-request@6.1.0: + resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} + engines: {node: '>=8'} + dependencies: + clone-response: 1.0.2 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 3.0.0 + lowercase-keys: 2.0.0 + normalize-url: 4.5.1 + responselike: 1.0.2 + dev: false + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: @@ -5936,6 +7702,18 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + /camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + dependencies: + pascal-case: 3.1.2 + tslib: 2.5.2 + dev: false + + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: false + /camelcase-keys@6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} @@ -5952,10 +7730,23 @@ packages: /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - dev: true - /caniuse-lite@1.0.30001538: - resolution: {integrity: sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==} + /caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + dependencies: + browserslist: 4.21.10 + caniuse-lite: 1.0.30001527 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + dev: false + + /caniuse-lite@1.0.30001527: + resolution: {integrity: sha512-YkJi7RwPgWtXVSgK4lG9AHH57nSzvvOp9MesgXmw4Q7n0C3H04L0foHqfxcmSAm5AcWb8dW9AYj2tR7/5GnddQ==} + + /case@1.6.3: + resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} + engines: {node: '>= 0.8.0'} + dev: false /caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} @@ -5967,8 +7758,12 @@ packages: url-to-options: 1.0.1 dev: false - /chai@4.3.8: - resolution: {integrity: sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==} + /ccount@1.1.0: + resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} + dev: false + + /chai@4.3.7: + resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 @@ -5995,8 +7790,8 @@ packages: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + /chalk@5.2.0: + resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true @@ -6005,6 +7800,18 @@ packages: engines: {node: '>=10'} dev: true + /character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + dev: false + + /character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + dev: false + + /character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + dev: false + /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -6012,6 +7819,30 @@ packages: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true + /cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + dev: false + + /cheerio@1.0.0-rc.12: + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} + engines: {node: '>= 6'} + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.1.0 + htmlparser2: 8.0.2 + parse5: 7.1.2 + parse5-htmlparser2-tree-adapter: 7.0.0 + dev: false + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -6025,17 +7856,18 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 - dev: true /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} - dev: true + + /ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + dev: false /ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} - dev: true /cipher-base@1.0.4: resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} @@ -6044,39 +7876,69 @@ packages: safe-buffer: 5.2.1 dev: false - /cjs-module-lexer@1.2.3: - resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + /cjs-module-lexer@1.2.2: + resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: true - /clean-webpack-plugin@4.0.0(webpack@5.88.2): + /clean-css@5.3.2: + resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} + engines: {node: '>= 10.0'} + dependencies: + source-map: 0.6.1 + dev: false + + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + /clean-webpack-plugin@4.0.0(webpack@5.88.1): resolution: {integrity: sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==} engines: {node: '>=10.0.0'} peerDependencies: webpack: '>=4.0.0 <6.0.0' dependencies: del: 4.1.1 - webpack: 5.88.2(webpack-cli@5.1.4) + webpack: 5.88.1(webpack-cli@5.1.4) dev: true + /cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + dev: false + + /cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + dev: false + /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 + + /cli-spinners@2.9.0: + resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} + engines: {node: '>=6'} dev: false - /cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /cli-table3@0.6.3: + resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + engines: {node: 10.* || >= 12.*} dependencies: - restore-cursor: 4.0.0 - dev: true - - /cli-spinners@2.9.1: - resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==} - engines: {node: '>=6'} + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 dev: false + /cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + dev: true + /cli-truncate@3.1.0: resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6125,7 +7987,6 @@ packages: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 - dev: true /clone-response@1.0.2: resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} @@ -6152,8 +8013,12 @@ packages: engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true - /collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + /collapse-white-space@1.0.6: + resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} + dev: false + + /collect-v8-coverage@1.0.1: + resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} dev: true /color-convert@1.9.3: @@ -6173,9 +8038,17 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + dev: false + /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - dev: true + + /combine-promises@1.2.0: + resolution: {integrity: sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==} + engines: {node: '>=10'} + dev: false /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} @@ -6184,28 +8057,38 @@ packages: delayed-stream: 1.0.0 dev: false + /comma-separated-tokens@1.0.8: + resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} + dev: false + /commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} - dev: true /commander@11.0.0: resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} engines: {node: '>=16'} + dev: false /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: true + /commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} - /compare-func@1.3.4: - resolution: {integrity: sha512-sq2sWtrqKPkEXAC8tEJA1+BqAH9GbFkGBtUOqrUX57VSfwp8xyktctk+uLoRy5eccTdxzDcVIztlYDpKs3Jv1Q==} - dependencies: - array-ify: 1.0.0 - dot-prop: 3.0.0 - dev: true + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: false + + /commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + dev: false + + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} /compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} @@ -6214,6 +8097,28 @@ packages: dot-prop: 5.3.0 dev: true + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: false + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -6224,10 +8129,36 @@ packages: proto-list: 1.2.4 dev: false + /configstore@5.0.1: + resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} + engines: {node: '>=8'} + dependencies: + dot-prop: 5.3.0 + graceful-fs: 4.2.11 + make-dir: 3.1.0 + unique-string: 2.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 4.0.0 + dev: false + /confusing-browser-globals@1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: true + /connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + dev: false + + /consola@2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + dev: false + + /content-disposition@0.5.2: + resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} + engines: {node: '>= 0.6'} + dev: false + /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -6235,40 +8166,44 @@ packages: safe-buffer: 5.2.1 dev: false - /conventional-changelog-angular@6.0.0: - resolution: {integrity: sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==} - engines: {node: '>=14'} + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: false + + /conventional-changelog-angular@5.0.13: + resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} + engines: {node: '>=10'} dependencies: compare-func: 2.0.0 + q: 1.5.1 dev: true - /conventional-changelog-cmyr-config@2.1.1: - resolution: {integrity: sha512-ioqnPz4v6KqFDeIRh/RKcR6OYHB2gzXjhfUbyO1H4kMEcc8MNWWlIK8A+8n6L5Vnx8SgCOQJXsTHuRCg2O+fvg==} + /conventional-changelog-cmyr-config@2.1.0: + resolution: {integrity: sha512-YJxf4Gm2xYCabWhHmrB/RWKDKzEMhDZGyHE8R7/NIflmu31zn9giyhLYWRyB+FAhAWplXulMtMI5VMFLqO0+Aw==} engines: {node: '>=12'} - dependencies: - compare-func: 1.3.4 - debug: 4.3.4(supports-color@8.1.1) - q: 1.5.1 - transitivePeerDependencies: - - supports-color dev: true - /conventional-changelog-conventionalcommits@6.1.0: - resolution: {integrity: sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==} - engines: {node: '>=14'} + /conventional-changelog-conventionalcommits@5.0.0: + resolution: {integrity: sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==} + engines: {node: '>=10'} dependencies: compare-func: 2.0.0 + lodash: 4.17.21 + q: 1.5.1 dev: true - /conventional-commits-parser@4.0.0: - resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} - engines: {node: '>=14'} + /conventional-commits-parser@3.2.4: + resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==} + engines: {node: '>=10'} hasBin: true dependencies: JSONStream: 1.3.5 is-text-path: 1.0.1 + lodash: 4.17.21 meow: 8.1.2 split2: 3.2.2 + through2: 4.0.2 dev: true /convert-source-map@1.9.0: @@ -6278,32 +8213,54 @@ packages: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true + /cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: false + + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: false + + /copy-text-to-clipboard@3.2.0: + resolution: {integrity: sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==} + engines: {node: '>=12'} + dev: false + /copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} dependencies: toggle-selection: 1.0.6 dev: false - /copy-webpack-plugin@11.0.0(webpack@5.88.2): + /copy-webpack-plugin@11.0.0(webpack@5.88.1): resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} engines: {node: '>= 14.15.0'} peerDependencies: webpack: ^5.1.0 dependencies: - fast-glob: 3.3.1 + fast-glob: 3.2.12 glob-parent: 6.0.2 - globby: 13.2.2 + globby: 13.1.3 normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.1 - webpack: 5.88.2(webpack-cli@5.1.4) - dev: true + webpack: 5.88.1(webpack-cli@5.1.4) - /core-js-compat@3.32.2: - resolution: {integrity: sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==} + /core-js-compat@3.30.2: + resolution: {integrity: sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA==} dependencies: browserslist: 4.21.10 - dev: true + + /core-js-pure@3.32.2: + resolution: {integrity: sha512-Y2rxThOuNywTjnX/PgA5vWM6CZ9QB9sz9oGeCixV8MqXZO70z/5SHzf9EeBrEBK0PN36DnEBBu9O/aGWzKuMZQ==} + requiresBuild: true + dev: false + + /core-js@3.32.2: + resolution: {integrity: sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ==} + requiresBuild: true + dev: false /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -6317,21 +8274,32 @@ packages: vary: 1.1.2 dev: false - /cosmiconfig-typescript-loader@4.4.0(@types/node@20.4.7)(cosmiconfig@8.3.6)(ts-node@10.9.1)(typescript@4.9.5): - resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==} - engines: {node: '>=v14.21.3'} + /cosmiconfig-typescript-loader@4.3.0(@types/node@18.16.18)(cosmiconfig@8.1.3)(ts-node@10.9.1)(typescript@4.9.5): + resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} + engines: {node: '>=12', npm: '>=6'} peerDependencies: '@types/node': '*' cosmiconfig: '>=7' ts-node: '>=10' - typescript: '>=4' + typescript: '>=3' dependencies: - '@types/node': 20.4.7 - cosmiconfig: 8.3.6(typescript@4.9.5) - ts-node: 10.9.1(@types/node@18.17.17)(typescript@4.9.5) + '@types/node': 18.16.18 + cosmiconfig: 8.1.3 + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) typescript: 4.9.5 dev: true + /cosmiconfig@6.0.0: + resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} + engines: {node: '>=8'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: false + /cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -6341,6 +8309,15 @@ packages: parse-json: 5.2.0 path-type: 4.0.0 yaml: 1.10.2 + + /cosmiconfig@8.1.3: + resolution: {integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==} + engines: {node: '>=14'} + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 dev: true /cosmiconfig@8.3.6(typescript@4.9.5): @@ -6357,7 +8334,7 @@ packages: parse-json: 5.2.0 path-type: 4.0.0 typescript: 4.9.5 - dev: true + dev: false /cosmjs-types@0.4.1: resolution: {integrity: sha512-I7E/cHkIgoJzMNQdFF0YVqPlaTqrqKHrskuSTIqlEyxfB5Lf3WKCajSXVK2yHOfOFfSux/RxEdpMzw/eO4DIog==} @@ -6401,25 +8378,6 @@ packages: sha.js: 2.4.11 dev: false - /create-jest@29.7.0(@types/node@18.17.17)(ts-node@10.9.1): - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@18.17.17)(ts-node@10.9.1) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - dev: true - /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true @@ -6432,10 +8390,10 @@ packages: cross-spawn: 7.0.3 dev: true - /cross-fetch@3.1.8: - resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + /cross-fetch@3.1.6: + resolution: {integrity: sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==} dependencies: - node-fetch: 2.7.0 + node-fetch: 2.6.11 transitivePeerDependencies: - encoding dev: false @@ -6456,8 +8414,8 @@ packages: shebang-command: 2.0.0 which: 2.0.2 - /crypto-addr-codec@0.1.8: - resolution: {integrity: sha512-GqAK90iLLgP3FvhNmHbpT3wR6dEdaM8hZyZtLX29SPardh3OA13RFLHDR6sntGCgRWOfiHqW6sIyohpNqOtV/g==} + /crypto-addr-codec@0.1.7: + resolution: {integrity: sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg==} dependencies: base-x: 3.0.9 big-integer: 1.6.36 @@ -6468,17 +8426,265 @@ packages: sha3: 2.1.4 dev: false + /crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + dev: false + + /css-declaration-sorter@6.4.1(postcss@8.4.14): + resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + dependencies: + postcss: 8.4.14 + dev: false + + /css-declaration-sorter@6.4.1(postcss@8.4.29): + resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + dependencies: + postcss: 8.4.29 + dev: false + + /css-loader@6.8.1(webpack@5.88.1): + resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.29) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.29) + postcss-modules-scope: 3.0.0(postcss@8.4.29) + postcss-modules-values: 4.0.0(postcss@8.4.29) + postcss-value-parser: 4.2.0 + semver: 7.5.2 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + + /css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.2)(webpack@5.88.1): + resolution: {integrity: sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@parcel/css': '*' + '@swc/css': '*' + clean-css: '*' + csso: '*' + esbuild: '*' + lightningcss: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@parcel/css': + optional: true + '@swc/css': + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + lightningcss: + optional: true + dependencies: + clean-css: 5.3.2 + cssnano: 5.1.15(postcss@8.4.29) + jest-worker: 29.5.0 + postcss: 8.4.29 + schema-utils: 4.2.0 + serialize-javascript: 6.0.1 + source-map: 0.6.1 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + + /css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: false + + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + dev: false + + /css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: false + /css-what@5.1.0: resolution: {integrity: sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==} engines: {node: '>= 6'} dev: false + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: false + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true dev: false + /cssnano-preset-advanced@5.3.10(postcss@8.4.14): + resolution: {integrity: sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + autoprefixer: 10.4.15(postcss@8.4.14) + cssnano-preset-default: 5.2.14(postcss@8.4.14) + postcss: 8.4.14 + postcss-discard-unused: 5.1.0(postcss@8.4.14) + postcss-merge-idents: 5.1.1(postcss@8.4.14) + postcss-reduce-idents: 5.2.0(postcss@8.4.14) + postcss-zindex: 5.1.0(postcss@8.4.14) + dev: false + + /cssnano-preset-default@5.2.14(postcss@8.4.14): + resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.4.14) + cssnano-utils: 3.1.0(postcss@8.4.14) + postcss: 8.4.14 + postcss-calc: 8.2.4(postcss@8.4.14) + postcss-colormin: 5.3.1(postcss@8.4.14) + postcss-convert-values: 5.1.3(postcss@8.4.14) + postcss-discard-comments: 5.1.2(postcss@8.4.14) + postcss-discard-duplicates: 5.1.0(postcss@8.4.14) + postcss-discard-empty: 5.1.1(postcss@8.4.14) + postcss-discard-overridden: 5.1.0(postcss@8.4.14) + postcss-merge-longhand: 5.1.7(postcss@8.4.14) + postcss-merge-rules: 5.1.4(postcss@8.4.14) + postcss-minify-font-values: 5.1.0(postcss@8.4.14) + postcss-minify-gradients: 5.1.1(postcss@8.4.14) + postcss-minify-params: 5.1.4(postcss@8.4.14) + postcss-minify-selectors: 5.2.1(postcss@8.4.14) + postcss-normalize-charset: 5.1.0(postcss@8.4.14) + postcss-normalize-display-values: 5.1.0(postcss@8.4.14) + postcss-normalize-positions: 5.1.1(postcss@8.4.14) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.14) + postcss-normalize-string: 5.1.0(postcss@8.4.14) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.14) + postcss-normalize-unicode: 5.1.1(postcss@8.4.14) + postcss-normalize-url: 5.1.0(postcss@8.4.14) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.14) + postcss-ordered-values: 5.1.3(postcss@8.4.14) + postcss-reduce-initial: 5.1.2(postcss@8.4.14) + postcss-reduce-transforms: 5.1.0(postcss@8.4.14) + postcss-svgo: 5.1.0(postcss@8.4.14) + postcss-unique-selectors: 5.1.1(postcss@8.4.14) + dev: false + + /cssnano-preset-default@5.2.14(postcss@8.4.29): + resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.4.29) + cssnano-utils: 3.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-calc: 8.2.4(postcss@8.4.29) + postcss-colormin: 5.3.1(postcss@8.4.29) + postcss-convert-values: 5.1.3(postcss@8.4.29) + postcss-discard-comments: 5.1.2(postcss@8.4.29) + postcss-discard-duplicates: 5.1.0(postcss@8.4.29) + postcss-discard-empty: 5.1.1(postcss@8.4.29) + postcss-discard-overridden: 5.1.0(postcss@8.4.29) + postcss-merge-longhand: 5.1.7(postcss@8.4.29) + postcss-merge-rules: 5.1.4(postcss@8.4.29) + postcss-minify-font-values: 5.1.0(postcss@8.4.29) + postcss-minify-gradients: 5.1.1(postcss@8.4.29) + postcss-minify-params: 5.1.4(postcss@8.4.29) + postcss-minify-selectors: 5.2.1(postcss@8.4.29) + postcss-normalize-charset: 5.1.0(postcss@8.4.29) + postcss-normalize-display-values: 5.1.0(postcss@8.4.29) + postcss-normalize-positions: 5.1.1(postcss@8.4.29) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.29) + postcss-normalize-string: 5.1.0(postcss@8.4.29) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.29) + postcss-normalize-unicode: 5.1.1(postcss@8.4.29) + postcss-normalize-url: 5.1.0(postcss@8.4.29) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.29) + postcss-ordered-values: 5.1.3(postcss@8.4.29) + postcss-reduce-initial: 5.1.2(postcss@8.4.29) + postcss-reduce-transforms: 5.1.0(postcss@8.4.29) + postcss-svgo: 5.1.0(postcss@8.4.29) + postcss-unique-selectors: 5.1.1(postcss@8.4.29) + dev: false + + /cssnano-utils@3.1.0(postcss@8.4.14): + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + dev: false + + /cssnano-utils@3.1.0(postcss@8.4.29): + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: false + + /cssnano@5.1.15(postcss@8.4.14): + resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.4.14) + lilconfig: 2.1.0 + postcss: 8.4.14 + yaml: 1.10.2 + dev: false + + /cssnano@5.1.15(postcss@8.4.29): + resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.4.29) + lilconfig: 2.1.0 + postcss: 8.4.29 + yaml: 1.10.2 + dev: false + + /csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + dev: false + /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} @@ -6516,8 +8722,19 @@ packages: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} dev: true - /dayjs@1.11.9: - resolution: {integrity: sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==} + /dayjs@1.11.7: + resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} + dev: false + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 dev: false /debug@3.2.7: @@ -6624,13 +8841,8 @@ packages: strip-dirs: 2.1.0 dev: false - /dedent@1.5.1: - resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true + /dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true /deep-eql@4.1.3: @@ -6640,6 +8852,33 @@ packages: type-detect: 4.0.8 dev: true + /deep-equal@2.2.1: + resolution: {integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.1 + is-arguments: 1.1.1 + is-array-buffer: 3.0.2 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + isarray: 2.0.5 + object-is: 1.1.5 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.0 + side-channel: 1.0.4 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.9 + + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: false + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -6651,24 +8890,30 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + /default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + dependencies: + execa: 5.1.1 + dev: false + /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 - /define-data-property@1.1.0: - resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.1 - gopd: 1.0.1 - has-property-descriptors: 1.0.0 + /defer-to-connect@1.1.3: + resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} + dev: false - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + /define-properties@1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.0 has-property-descriptors: 1.0.0 object-keys: 1.1.1 @@ -6685,6 +8930,20 @@ packages: rimraf: 2.7.1 dev: true + /del@6.1.1: + resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} + engines: {node: '>=10'} + dependencies: + globby: 11.1.0 + graceful-fs: 4.2.11 + is-glob: 4.0.3 + is-path-cwd: 2.2.0 + is-path-inside: 3.0.3 + p-map: 4.0.0 + rimraf: 3.0.2 + slash: 3.0.0 + dev: false + /delay@5.0.0: resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} engines: {node: '>=10'} @@ -6695,9 +8954,26 @@ packages: engines: {node: '>=0.4.0'} dev: false - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: false + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: false + + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: false + + /detab@2.0.4: + resolution: {integrity: sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==} + dependencies: + repeat-string: 1.6.1 + dev: false /detect-browser@5.3.0: resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} @@ -6717,8 +8993,33 @@ packages: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} dev: false - /diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + /detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + dev: false + + /detect-port-alt@1.1.6: + resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} + engines: {node: '>= 4.2.1'} + hasBin: true + dependencies: + address: 1.2.2 + debug: 2.6.9 + transitivePeerDependencies: + - supports-color + dev: false + + /detect-port@1.5.1: + resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} + hasBin: true + dependencies: + address: 1.2.2 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: false + + /diff-sequences@29.4.3: + resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true @@ -6742,6 +9043,17 @@ packages: dependencies: path-type: 4.0.0 + /dns-equal@1.0.0: + resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} + dev: false + + /dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + dependencies: + '@leichtgewicht/ip-codec': 2.0.4 + dev: false + /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -6754,22 +9066,77 @@ packages: dependencies: esutils: 2.0.3 - /dot-prop@3.0.0: - resolution: {integrity: sha512-k4ELWeEU3uCcwub7+dWydqQBRjAjkV9L33HjVRG5Xo2QybI6ja/v+4W73SRi8ubCqJz0l9XsTP1NbewfyqaSlw==} - engines: {node: '>=0.10.0'} + /dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} dependencies: - is-obj: 1.0.1 - dev: true + utila: 0.4.0 + dev: false + + /dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: false + + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: false + + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: false + + /domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: false + + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: false + + /domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: false + + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: false + + /dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dependencies: + no-case: 3.0.4 + tslib: 2.5.2 + dev: false /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} dependencies: is-obj: 2.0.0 - dev: true - /dotenv@16.3.1: - resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + /dotenv@16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} engines: {node: '>=12'} /dotenv@8.6.0: @@ -6807,6 +9174,10 @@ packages: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} dev: false + /duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: false + /duplexify@4.1.2: resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} dependencies: @@ -6818,10 +9189,23 @@ packages: /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true - /electron-to-chromium@1.4.523: - resolution: {integrity: sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==} + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: false + + /eip1193-provider@1.0.1: + resolution: {integrity: sha512-kSuqwQ26d7CzuS/t3yRXo2Su2cVH0QfvyKbr2H7Be7O5YDyIq4hQGCNTo5wRdP07bt+E2R/8nPCzey4ojBHf7g==} + dependencies: + '@json-rpc-tools/provider': 1.7.6 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: false + + /electron-to-chromium@1.4.508: + resolution: {integrity: sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==} /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -6846,10 +9230,24 @@ packages: /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + /emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + dev: false + + /emoticon@3.2.0: + resolution: {integrity: sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==} + dev: false + /encode-utf8@1.0.3: resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} dev: false + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: false + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: @@ -6863,37 +9261,42 @@ packages: graceful-fs: 4.2.11 tapable: 2.2.1 - /enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + /enquirer@2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 - strip-ansi: 6.0.1 dev: true + /entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: false + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: false + /envinfo@7.10.0: resolution: {integrity: sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==} engines: {node: '>=4'} hasBin: true - dev: true /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - dev: true - /es-abstract@1.22.2: - resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==} + /es-abstract@1.21.2: + resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 available-typed-arrays: 1.0.5 call-bind: 1.0.2 es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 + function.prototype.name: 1.1.5 get-intrinsic: 1.2.1 get-symbol-description: 1.0.0 globalthis: 1.0.3 @@ -6909,45 +9312,35 @@ packages: is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 is-string: 1.0.7 - is-typed-array: 1.1.12 + is-typed-array: 1.1.10 is-weakref: 1.0.2 object-inspect: 1.12.3 object-keys: 1.1.1 object.assign: 4.1.4 - regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.0.1 + regexp.prototype.flags: 1.5.0 safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.0 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 + string.prototype.trim: 1.2.7 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 typed-array-length: 1.0.4 unbox-primitive: 1.0.2 - which-typed-array: 1.1.11 + which-typed-array: 1.1.9 - /es-iterator-helpers@1.0.15: - resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + /es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: - asynciterator.prototype: 1.0.0 call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 - es-set-tostringtag: 2.0.1 - function-bind: 1.1.1 get-intrinsic: 1.2.1 - globalthis: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.5 - iterator.prototype: 1.1.2 - safe-array-concat: 1.0.1 + is-arguments: 1.1.1 + is-map: 2.0.2 + is-set: 2.0.2 + is-string: 1.0.7 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 - /es-module-lexer@1.3.1: - resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==} - dev: true + /es-module-lexer@1.3.0: + resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} @@ -6984,6 +9377,15 @@ packages: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} + /escape-goat@2.1.1: + resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} + engines: {node: '>=8'} + dev: false + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: false + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -6997,7 +9399,7 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-config-next@13.1.6(eslint@8.49.0)(typescript@4.9.5): + /eslint-config-next@13.1.6(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-0cg7h5wztg/SoLAlxljZ0ZPUQ7i6QKqRiP4M2+MgTZtxWwNKb2JSwNc18nJ6/kXBI6xYvPraTbQSIhAuVw6czw==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -7007,22 +9409,22 @@ packages: optional: true dependencies: '@next/eslint-plugin-next': 13.1.6 - '@rushstack/eslint-patch': 1.4.0 - '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.5) - eslint: 8.49.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.49.0) - eslint-plugin-react: 7.33.2(eslint@8.49.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.49.0) + '@rushstack/eslint-patch': 1.3.0 + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + eslint: 8.48.0 + eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) + eslint-plugin-react: 7.32.2(eslint@8.48.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) typescript: 4.9.5 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color dev: false - /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.49.0)(typescript@4.9.5): + /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -7032,21 +9434,21 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.22.20 - '@babel/eslint-parser': 7.22.15(@babel/core@7.22.20)(eslint@8.49.0) - '@rushstack/eslint-patch': 1.4.0 - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@4.9.5) - '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + '@babel/core': 7.22.15 + '@babel/eslint-parser': 7.21.8(@babel/core@7.22.15)(eslint@8.48.0) + '@rushstack/eslint-patch': 1.3.0 + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 - eslint: 8.49.0 - eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.49.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.49.0)(typescript@4.9.5) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.49.0) - eslint-plugin-react: 7.33.2(eslint@8.49.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.49.0) - eslint-plugin-testing-library: 5.11.1(eslint@8.49.0)(typescript@4.9.5) + eslint: 8.48.0 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) + eslint-plugin-react: 7.32.2(eslint@8.48.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) + eslint-plugin-testing-library: 5.11.0(eslint@8.48.0)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@babel/plugin-syntax-flow' @@ -7057,17 +9459,17 @@ packages: - supports-color dev: true - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + /eslint-import-resolver-node@0.3.7: + resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: debug: 3.2.7 - is-core-module: 2.13.0 - resolve: 1.22.6 + is-core-module: 2.12.1 + resolve: 1.22.2 transitivePeerDependencies: - supports-color - /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0): - resolution: {integrity: sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==} + /eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0): + resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -7075,20 +9477,17 @@ packages: dependencies: debug: 4.3.4(supports-color@8.1.1) enhanced-resolve: 5.15.0 - eslint: 8.49.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) - fast-glob: 3.3.1 - get-tsconfig: 4.7.0 - is-core-module: 2.13.0 + eslint: 8.48.0 + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) + get-tsconfig: 4.5.0 + globby: 13.1.3 + is-core-module: 2.12.1 is-glob: 4.0.3 + synckit: 0.8.5 transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack - supports-color - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -7109,15 +9508,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) debug: 3.2.7 - eslint: 8.49.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) + eslint: 8.48.0 + eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.48.0) transitivePeerDependencies: - supports-color - /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.49.0): + /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.22.5)(@babel/plugin-transform-react-jsx@7.22.15)(eslint@8.48.0): resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -7125,15 +9524,15 @@ packages: '@babel/plugin-transform-react-jsx': ^7.14.9 eslint: ^8.1.0 dependencies: - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.20) - eslint: 8.49.0 + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) + eslint: 8.48.0 lodash: 4.17.21 string-natural-compare: 3.0.1 dev: true - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0): - resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0): + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -7142,23 +9541,21 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.5) - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.3 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 + '@typescript-eslint/parser': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.49.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + eslint: 8.48.0 + eslint-import-resolver-node: 0.3.7 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.11)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.48.0) has: 1.0.3 - is-core-module: 2.13.0 + is-core-module: 2.12.1 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.1 - object.values: 1.1.7 + object.values: 1.1.6 + resolve: 1.22.2 semver: 6.3.1 tsconfig-paths: 3.14.2 transitivePeerDependencies: @@ -7166,7 +9563,7 @@ packages: - eslint-import-resolver-webpack - supports-color - /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.49.0)(typescript@4.9.5): + /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.59.11)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: @@ -7179,39 +9576,39 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@4.9.5) - '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) - eslint: 8.49.0 + '@typescript-eslint/eslint-plugin': 5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 5.59.7(eslint@8.48.0)(typescript@4.9.5) + eslint: 8.48.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.49.0): + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.48.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.22.15 - aria-query: 5.3.0 - array-includes: 3.1.7 - array.prototype.flatmap: 1.3.2 + '@babel/runtime': 7.22.3 + aria-query: 5.1.3 + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 ast-types-flow: 0.0.7 - axe-core: 4.8.1 - axobject-query: 3.2.1 + axe-core: 4.7.2 + axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.49.0 + eslint: 8.48.0 has: 1.0.3 - jsx-ast-utils: 3.3.5 + jsx-ast-utils: 3.3.3 language-tags: 1.0.5 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 + object.entries: 1.1.6 + object.fromentries: 2.0.6 semver: 6.3.1 - /eslint-plugin-prettier@4.2.1(eslint@8.49.0)(prettier@2.8.8): + /eslint-plugin-prettier@4.2.1(eslint@8.48.0)(prettier@2.8.8): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -7222,51 +9619,50 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.49.0 + eslint: 8.48.0 prettier: 2.8.8 prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.49.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.48.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.49.0 + eslint: 8.48.0 - /eslint-plugin-react@7.33.2(eslint@8.49.0): - resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + /eslint-plugin-react@7.32.2(eslint@8.48.0): + resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.7 - array.prototype.flatmap: 1.3.2 - array.prototype.tosorted: 1.1.2 + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - es-iterator-helpers: 1.0.15 - eslint: 8.49.0 + eslint: 8.48.0 estraverse: 5.3.0 - jsx-ast-utils: 3.3.5 + jsx-ast-utils: 3.3.3 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - object.hasown: 1.1.3 - object.values: 1.1.7 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 prop-types: 15.8.1 resolve: 2.0.0-next.4 semver: 6.3.1 - string.prototype.matchall: 4.0.10 + string.prototype.matchall: 4.0.8 - /eslint-plugin-testing-library@5.11.1(eslint@8.49.0)(typescript@4.9.5): - resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==} + /eslint-plugin-testing-library@5.11.0(eslint@8.48.0)(typescript@4.9.5): + resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@4.9.5) - eslint: 8.49.0 + '@typescript-eslint/utils': 5.59.11(eslint@8.48.0)(typescript@4.9.5) + eslint: 8.48.0 transitivePeerDependencies: - supports-color - typescript @@ -7278,7 +9674,6 @@ packages: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - dev: true /eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} @@ -7296,16 +9691,16 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /eslint@8.49.0: - resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==} + /eslint@8.48.0: + resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) - '@eslint-community/regexpp': 4.8.1 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/regexpp': 4.8.0 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.49.0 - '@humanwhocodes/config-array': 0.11.11 + '@eslint/js': 8.48.0 + '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -7323,7 +9718,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.21.0 + globals: 13.20.0 graphemer: 1.4.0 ignore: 5.2.4 imurmurhash: 0.1.4 @@ -7353,7 +9748,6 @@ packages: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - dev: true /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} @@ -7370,7 +9764,6 @@ packages: /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} - dev: true /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} @@ -7388,6 +9781,16 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + /eta@2.2.0: + resolution: {integrity: sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==} + engines: {node: '>=6.0.0'} + dev: false + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: false + /eth-block-tracker@6.1.0: resolution: {integrity: sha512-K9SY8+/xMBi4M5HHTDdxnpEqEEGjbNpzHFqvxyjMZej8InV/B+CkFRKM6W+uvrFJ7m8Zd1E0qUkseU3vdIDFYQ==} engines: {node: '>=14.0.0'} @@ -7444,13 +9847,22 @@ packages: setimmediate: 1.0.5 dev: false - /ethereum-cryptography@2.1.2: - resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==} + /ethereum-cryptography@1.2.0: + resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} + dependencies: + '@noble/hashes': 1.2.0 + '@noble/secp256k1': 1.7.1 + '@scure/bip32': 1.1.5 + '@scure/bip39': 1.1.1 + dev: false + + /ethereum-cryptography@2.0.0: + resolution: {integrity: sha512-g25m4EtfQGjstWgVE1aIz7XYYjf3kH5kG17ULWVB5dH6uLahsoltOhACzSxyDV+fhn4gbR4xRrOXGe6r2uh4Bg==} dependencies: - '@noble/curves': 1.1.0 - '@noble/hashes': 1.3.1 - '@scure/bip32': 1.3.1 - '@scure/bip39': 1.2.1 + '@noble/curves': 1.0.0 + '@noble/hashes': 1.3.0 + '@scure/bip32': 1.3.0 + '@scure/bip39': 1.2.0 dev: false /ethereumjs-abi@0.6.8: @@ -7472,6 +9884,44 @@ packages: rlp: 2.2.7 dev: false + /ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/solidity': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/units': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@ethersproject/web': 5.7.1 + '@ethersproject/wordlists': 5.7.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + /ethjs-util@0.1.6: resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} engines: {node: '>=6.5.0', npm: '>=3'} @@ -7480,14 +9930,18 @@ packages: strip-hex-prefix: 1.0.0 dev: false + /eval@0.1.8: + resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} + engines: {node: '>= 0.8'} + dependencies: + '@types/node': 18.16.18 + require-like: 0.1.2 + dev: false + /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: false - /eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - dev: true - /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -7525,10 +9979,9 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: true - /execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + /execa@7.1.1: + resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: cross-spawn: 7.0.3 @@ -7547,17 +10000,56 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + /expect@29.5.0: + resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/expect-utils': 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 + '@jest/expect-utils': 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 dev: true + /express@4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: false + /ext-list@2.2.2: resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} engines: {node: '>=0.10.0'} @@ -7573,6 +10065,17 @@ packages: sort-keys-length: 1.0.1 dev: false + /extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + dev: false + + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: false + /extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} dev: true @@ -7597,8 +10100,8 @@ packages: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + /fast-glob@3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -7613,8 +10116,8 @@ packages: /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - /fast-redact@3.3.0: - resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} + /fast-redact@3.2.0: + resolution: {integrity: sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==} engines: {node: '>=6'} dev: false @@ -7626,6 +10129,12 @@ packages: resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} dev: false + /fast-url-parser@1.1.3: + resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} + dependencies: + punycode: 1.4.1 + dev: false + /fast-xml-parser@4.2.7: resolution: {integrity: sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig==} hasBin: true @@ -7636,25 +10145,64 @@ packages: /fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} - dev: true /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 + /faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + dependencies: + websocket-driver: 0.7.4 + dev: false + /fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 dev: true + /fbemitter@3.0.0: + resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} + dependencies: + fbjs: 3.0.5 + transitivePeerDependencies: + - encoding + dev: false + + /fbjs-css-vars@1.0.2: + resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} + dev: false + + /fbjs@3.0.5: + resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} + dependencies: + cross-fetch: 3.1.6 + fbjs-css-vars: 1.0.2 + loose-envify: 1.4.0 + object-assign: 4.1.1 + promise: 7.3.1 + setimmediate: 1.0.5 + ua-parser-js: 1.0.36 + transitivePeerDependencies: + - encoding + dev: false + /fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} dependencies: pend: 1.2.0 dev: false + /feed@4.2.2: + resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} + engines: {node: '>=0.4.0'} + dependencies: + xml-js: 1.6.11 + dev: false + /figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -7666,7 +10214,18 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.1.0 + flat-cache: 3.0.4 + + /file-loader@6.2.0(webpack@5.88.1): + resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false /file-type@3.9.0: resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} @@ -7711,6 +10270,11 @@ packages: trim-repeated: 1.0.0 dev: false + /filesize@8.0.7: + resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} + engines: {node: '>= 0.4.0'} + dev: false + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -7722,6 +10286,37 @@ packages: engines: {node: '>=0.10.0'} dev: false + /finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + dev: false + + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + dev: false + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -7743,12 +10338,11 @@ packages: pkg-dir: 4.2.0 dev: true - /flat-cache@3.1.0: - resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} - engines: {node: '>=12.0.0'} + /flat-cache@3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flatted: 3.2.9 - keyv: 4.5.3 + flatted: 3.2.7 rimraf: 3.0.2 /flat@5.0.2: @@ -7756,8 +10350,20 @@ packages: hasBin: true dev: true - /flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + + /flux@4.0.4(react@17.0.2): + resolution: {integrity: sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==} + peerDependencies: + react: ^15.0.2 || ^16.0.0 || ^17.0.0 + dependencies: + fbemitter: 3.0.0 + fbjs: 3.0.5 + react: 17.0.2 + transitivePeerDependencies: + - encoding + dev: false /follow-redirects@1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} @@ -7774,6 +10380,38 @@ packages: dependencies: is-callable: 1.2.7 + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.88.1): + resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.22.13 + '@types/json-schema': 7.0.12 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.3.1 + eslint: 8.48.0 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.5.3 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.5.2 + tapable: 1.1.3 + typescript: 4.9.5 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -7783,6 +10421,20 @@ packages: mime-types: 2.1.35 dev: false + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: false + + /fraction.js@4.3.6: + resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==} + dev: false + + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: false + /from2@2.3.0: resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} dependencies: @@ -7794,6 +10446,15 @@ packages: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} dev: false + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: false + /fs-extra@11.1.1: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} engines: {node: '>=14.14'} @@ -7820,27 +10481,40 @@ packages: universalify: 0.1.2 dev: true - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + /fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: false + + /fs-monkey@1.0.4: + resolution: {integrity: sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==} + dev: false + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: true optional: true /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + /function.prototype.name@1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 functions-have-names: 1.2.3 /functions-have-names@1.2.3: @@ -7871,6 +10545,10 @@ packages: engines: {node: '>=6'} dev: false + /get-own-enumerable-property-symbols@3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + dev: false + /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -7896,10 +10574,23 @@ packages: engines: {node: '>=4'} dev: false + /get-stream@4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} + dependencies: + pump: 3.0.0 + dev: false + + /get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + dev: false + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - dev: true /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} @@ -7908,10 +10599,8 @@ packages: call-bind: 1.0.2 get-intrinsic: 1.2.1 - /get-tsconfig@4.7.0: - resolution: {integrity: sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==} - dependencies: - resolve-pkg-maps: 1.0.0 + /get-tsconfig@4.5.0: + resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} /git-clone@0.1.0: resolution: {integrity: sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==} @@ -7929,6 +10618,10 @@ packages: through2: 4.0.2 dev: true + /github-slugger@1.5.0: + resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} + dev: false + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -7943,7 +10636,6 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: true /glob@7.1.7: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} @@ -7984,12 +10676,35 @@ packages: ini: 1.3.8 dev: true + /global-dirs@3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + engines: {node: '>=10'} + dependencies: + ini: 2.0.0 + dev: false + + /global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + dependencies: + global-prefix: 3.0.0 + dev: false + + /global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + dev: false + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals@13.21.0: - resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} + /globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -7998,7 +10713,10 @@ packages: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: - define-properties: 1.2.1 + define-properties: 1.2.0 + + /globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -8006,21 +10724,20 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.1 + fast-glob: 3.2.12 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 - /globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + /globby@13.1.3: + resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.3.1 + fast-glob: 3.2.12 ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 - dev: true /globby@6.1.0: resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} @@ -8033,6 +10750,9 @@ packages: pinkie-promise: 2.0.1 dev: true + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + /google-protobuf@3.21.2: resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} dev: false @@ -8067,6 +10787,25 @@ packages: url-to-options: 1.0.1 dev: false + /got@9.6.0: + resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} + engines: {node: '>=8.6'} + dependencies: + '@sindresorhus/is': 0.14.0 + '@szmarczak/http-timer': 1.1.2 + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.0 + cacheable-request: 6.1.0 + decompress-response: 3.3.0 + duplexer3: 0.1.5 + get-stream: 4.1.0 + lowercase-keys: 1.0.1 + mimic-response: 1.0.1 + p-cancelable: 1.1.0 + to-readable-stream: 1.0.0 + url-parse-lax: 3.0.0 + dev: false + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -8077,6 +10816,27 @@ packages: /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + /gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + dependencies: + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + dev: false + + /gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + dependencies: + duplexer: 0.1.2 + dev: false + + /handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + dev: false + /handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} engines: {node: '>=0.4.7'} @@ -8135,6 +10895,11 @@ packages: dependencies: has-symbols: 1.0.3 + /has-yarn@2.1.0: + resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} + engines: {node: '>=8'} + dev: false + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -8157,15 +10922,87 @@ packages: minimalistic-assert: 1.0.1 dev: false + /hast-to-hyperscript@9.0.1: + resolution: {integrity: sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==} + dependencies: + '@types/unist': 2.0.8 + comma-separated-tokens: 1.0.8 + property-information: 5.6.0 + space-separated-tokens: 1.1.5 + style-to-object: 0.3.0 + unist-util-is: 4.1.0 + web-namespaces: 1.1.4 + dev: false + + /hast-util-from-parse5@6.0.1: + resolution: {integrity: sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==} + dependencies: + '@types/parse5': 5.0.3 + hastscript: 6.0.0 + property-information: 5.6.0 + vfile: 4.2.1 + vfile-location: 3.2.0 + web-namespaces: 1.1.4 + dev: false + + /hast-util-parse-selector@2.2.5: + resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} + dev: false + + /hast-util-raw@6.0.1: + resolution: {integrity: sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==} + dependencies: + '@types/hast': 2.3.6 + hast-util-from-parse5: 6.0.1 + hast-util-to-parse5: 6.0.0 + html-void-elements: 1.0.5 + parse5: 6.0.1 + unist-util-position: 3.1.0 + vfile: 4.2.1 + web-namespaces: 1.1.4 + xtend: 4.0.2 + zwitch: 1.0.5 + dev: false + + /hast-util-to-parse5@6.0.0: + resolution: {integrity: sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==} + dependencies: + hast-to-hyperscript: 9.0.1 + property-information: 5.6.0 + web-namespaces: 1.1.4 + xtend: 4.0.2 + zwitch: 1.0.5 + dev: false + + /hastscript@6.0.0: + resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} + dependencies: + '@types/hast': 2.3.6 + comma-separated-tokens: 1.0.8 + hast-util-parse-selector: 2.2.5 + property-information: 5.6.0 + space-separated-tokens: 1.1.5 + dev: false + /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - dev: true /hey-listen@1.0.8: resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} dev: false + /history@4.10.1: + resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} + dependencies: + '@babel/runtime': 7.22.3 + loose-envify: 1.4.0 + resolve-pathname: 3.0.0 + tiny-invariant: 1.3.1 + tiny-warning: 1.0.3 + value-equal: 1.0.1 + dev: false + /hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} dependencies: @@ -8174,6 +11011,12 @@ packages: minimalistic-crypto-utils: 1.0.1 dev: false + /hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + dependencies: + react-is: 16.13.1 + dev: false + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true @@ -8185,14 +11028,145 @@ packages: lru-cache: 6.0.0 dev: true + /hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + dev: false + + /html-entities@2.4.0: + resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==} + dev: false + /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true + /html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.2 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.19.2 + dev: false + + /html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + dev: false + + /html-void-elements@1.0.5: + resolution: {integrity: sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==} + dev: false + + /html-webpack-plugin@5.5.3(webpack@5.88.1): + resolution: {integrity: sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==} + engines: {node: '>=10.13.0'} + peerDependencies: + webpack: ^5.20.0 + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.1 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + + /htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + dev: false + + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + dev: false + /http-cache-semantics@3.8.1: resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==} dev: false + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: false + + /http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + dev: false + + /http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + dev: false + + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: false + + /http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + dev: false + + /http-proxy-middleware@2.0.6(@types/express@4.17.17): + resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + dependencies: + '@types/express': 4.17.17 + '@types/http-proxy': 1.17.12 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.5 + transitivePeerDependencies: + - debug + dev: false + + /http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.2 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + dev: false + /human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} dev: true @@ -8200,7 +11174,6 @@ packages: /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - dev: true /human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} @@ -8225,6 +11198,15 @@ packages: dependencies: safer-buffer: 2.1.2 + /icss-utils@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.29 + dev: false + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: false @@ -8233,6 +11215,18 @@ packages: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} + /image-size@1.0.2: + resolution: {integrity: sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + queue: 6.0.2 + dev: false + + /immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + dev: false + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -8240,6 +11234,11 @@ packages: parent-module: 1.0.1 resolve-from: 4.0.0 + /import-lazy@2.1.0: + resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} + engines: {node: '>=4'} + dev: false + /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} @@ -8247,7 +11246,6 @@ packages: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 - dev: true /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} @@ -8256,7 +11254,11 @@ packages: /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - dev: true + + /infima@0.2.0-alpha.43: + resolution: {integrity: sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==} + engines: {node: '>=12'} + dev: false /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} @@ -8264,12 +11266,25 @@ packages: once: 1.4.0 wrappy: 1.0.2 + /inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: false + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + /ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + dev: false + + /inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + dev: false + /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} @@ -8286,7 +11301,6 @@ packages: /interpret@3.1.1: resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} engines: {node: '>=10.13.0'} - dev: true /into-stream@3.1.0: resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==} @@ -8300,6 +11314,26 @@ packages: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: loose-envify: 1.4.0 + + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: false + + /ipaddr.js@2.1.0: + resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} + engines: {node: '>= 10'} + dev: false + + /is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + dev: false + + /is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 dev: false /is-arguments@1.1.1: @@ -8308,24 +11342,16 @@ packages: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: false /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 - is-typed-array: 1.1.12 + is-typed-array: 1.1.10 /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true - - /is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} @@ -8337,7 +11363,6 @@ packages: engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 - dev: true /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} @@ -8346,6 +11371,11 @@ packages: call-bind: 1.0.2 has-tostringtag: 1.0.0 + /is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: false + /is-builtin-module@3.2.1: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} @@ -8357,6 +11387,13 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} + /is-ci@2.0.0: + resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} + hasBin: true + dependencies: + ci-info: 2.0.0 + dev: false + /is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true @@ -8364,8 +11401,8 @@ packages: ci-info: 3.8.0 dev: true - /is-core-module@2.13.0: - resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + /is-core-module@2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} dependencies: has: 1.0.3 @@ -8375,15 +11412,24 @@ packages: dependencies: has-tostringtag: 1.0.0 + /is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + dev: false + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + /is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: false + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - /is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - dependencies: - call-bind: 1.0.2 - /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -8403,6 +11449,7 @@ packages: engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 + dev: false /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} @@ -8415,6 +11462,18 @@ packages: engines: {node: '>=6.5.0', npm: '>=3'} dev: false + /is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + dev: false + + /is-installed-globally@0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + dependencies: + global-dirs: 3.0.1 + is-path-inside: 3.0.3 + dev: false + /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} @@ -8435,6 +11494,11 @@ packages: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} + /is-npm@5.0.0: + resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} + engines: {node: '>=10'} + dev: false + /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} @@ -8448,12 +11512,11 @@ packages: /is-obj@1.0.1: resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} engines: {node: '>=0.10.0'} - dev: true + dev: false /is-obj@2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} - dev: true /is-object@1.0.2: resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} @@ -8462,7 +11525,6 @@ packages: /is-path-cwd@2.2.0: resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} engines: {node: '>=6'} - dev: true /is-path-in-cwd@2.1.0: resolution: {integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==} @@ -8489,14 +11551,22 @@ packages: /is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} - dev: true + + /is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + dev: false /is-plain-object@2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 - dev: true + + /is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + dev: false /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} @@ -8511,11 +11581,21 @@ packages: call-bind: 1.0.2 has-tostringtag: 1.0.0 - /is-retry-allowed@1.2.0: - resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} + /is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} engines: {node: '>=0.10.0'} dev: false + /is-retry-allowed@1.2.0: + resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} + engines: {node: '>=0.10.0'} + dev: false + + /is-root@2.1.0: + resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} + engines: {node: '>=6'} + dev: false + /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} @@ -8532,7 +11612,6 @@ packages: /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - dev: true /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} @@ -8565,11 +11644,15 @@ packages: text-extensions: 1.9.0 dev: true - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + /is-typed-array@1.1.10: + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.11 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} @@ -8593,11 +11676,33 @@ packages: call-bind: 1.0.2 get-intrinsic: 1.2.1 + /is-whitespace-character@1.0.4: + resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} + dev: false + /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} dev: true + /is-word-character@1.0.4: + resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} + dev: false + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + + /is-yarn-global@0.3.0: + resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} + dev: false + + /isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + dev: false + /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: false @@ -8611,7 +11716,6 @@ packages: /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} - dev: true /isomorphic-ws@4.0.1(ws@7.5.9): resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} @@ -8621,12 +11725,12 @@ packages: ws: 7.5.9 dev: false - /isomorphic-ws@5.0.0(ws@8.13.0): + /isomorphic-ws@5.0.0(ws@8.12.0): resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} peerDependencies: ws: '*' dependencies: - ws: 8.13.0 + ws: 8.12.0 dev: false /istanbul-lib-coverage@3.2.0: @@ -8638,8 +11742,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.22.20 - '@babel/parser': 7.22.16 + '@babel/core': 7.22.15 + '@babel/parser': 7.22.15 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.1 @@ -8647,25 +11751,12 @@ packages: - supports-color dev: true - /istanbul-lib-instrument@6.0.0: - resolution: {integrity: sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==} - engines: {node: '>=10'} - dependencies: - '@babel/core': 7.22.20 - '@babel/parser': 7.22.16 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} + /istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} + engines: {node: '>=8'} dependencies: istanbul-lib-coverage: 3.2.0 - make-dir: 4.0.0 + make-dir: 3.1.0 supports-color: 7.2.0 dev: true @@ -8680,12 +11771,12 @@ packages: - supports-color dev: true - /istanbul-reports@3.1.6: - resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + /istanbul-reports@3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 + istanbul-lib-report: 3.0.0 dev: true /isurl@1.0.0: @@ -8696,21 +11787,12 @@ packages: is-object: 1.0.2 dev: false - /iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.1 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.4 - set-function-name: 2.0.1 - - /jayson@4.1.0: - resolution: {integrity: sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==} + /jayson@3.7.0: + resolution: {integrity: sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==} engines: {node: '>=8'} hasBin: true dependencies: - '@types/connect': 3.4.36 + '@types/connect': 3.4.35 '@types/node': 12.20.55 '@types/ws': 7.4.7 JSONStream: 1.3.5 @@ -8720,6 +11802,7 @@ packages: eyes: 0.1.8 isomorphic-ws: 4.0.1(ws@7.5.9) json-stringify-safe: 5.0.1 + lodash: 4.17.21 uuid: 8.3.2 ws: 7.5.9 transitivePeerDependencies: @@ -8727,46 +11810,44 @@ packages: - utf-8-validate dev: false - /jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + /jest-changed-files@29.5.0: + resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 - jest-util: 29.7.0 p-limit: 3.1.0 dev: true - /jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + /jest-circus@29.5.0: + resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.17.17 + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 chalk: 4.1.2 co: 4.6.0 - dedent: 1.5.1 + dedent: 0.7.0 is-generator-fn: 2.1.0 - jest-each: 29.7.0 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 + jest-each: 29.5.0 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 p-limit: 3.1.0 - pretty-format: 29.7.0 - pure-rand: 6.0.3 + pretty-format: 29.5.0 + pure-rand: 6.0.2 slash: 3.0.0 stack-utils: 2.0.6 transitivePeerDependencies: - - babel-plugin-macros - supports-color dev: true - /jest-cli@29.7.0(@types/node@18.17.17)(ts-node@10.9.1): - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -8775,26 +11856,26 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 + '@jest/core': 29.5.0(ts-node@10.9.1) + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@18.17.17)(ts-node@10.9.1) exit: 0.1.2 + graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@18.17.17)(ts-node@10.9.1) - jest-util: 29.7.0 - jest-validate: 29.7.0 + jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-util: 29.5.0 + jest-validate: 29.5.0 + prompts: 2.4.2 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' - - babel-plugin-macros - supports-color - ts-node dev: true - /jest-config@29.7.0(@types/node@18.17.17)(ts-node@10.9.1): - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + /jest-config@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -8805,142 +11886,141 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.22.20 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.17.17 - babel-jest: 29.7.0(@babel/core@7.22.20) + '@babel/core': 7.22.15 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 + babel-jest: 29.5.0(@babel/core@7.22.15) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 29.7.0 + pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.17.17)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) transitivePeerDependencies: - - babel-plugin-macros - supports-color dev: true - /jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + /jest-diff@29.5.0: + resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - diff-sequences: 29.6.3 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 + diff-sequences: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 dev: true - /jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + /jest-docblock@29.4.3: + resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + /jest-each@29.5.0: + resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.6.3 + '@jest/types': 29.5.0 chalk: 4.1.2 - jest-get-type: 29.6.3 - jest-util: 29.7.0 - pretty-format: 29.7.0 + jest-get-type: 29.4.3 + jest-util: 29.5.0 + pretty-format: 29.5.0 dev: true - /jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + /jest-environment-node@29.5.0: + resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.17.17 - jest-mock: 29.7.0 - jest-util: 29.7.0 + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 + jest-mock: 29.5.0 + jest-util: 29.5.0 dev: true - /jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + /jest-get-type@29.4.3: + resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + /jest-haste-map@29.5.0: + resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.6.3 + '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.6 - '@types/node': 18.17.17 + '@types/node': 18.16.18 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - jest-worker: 29.7.0 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + jest-worker: 29.5.0 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 dev: true - /jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + /jest-leak-detector@29.5.0: + resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.6.3 - pretty-format: 29.7.0 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 dev: true - /jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + /jest-matcher-utils@29.5.0: + resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 dev: true - /jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + /jest-message-util@29.5.0: + resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.22.13 - '@jest/types': 29.6.3 + '@jest/types': 29.5.0 '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.11 micromatch: 4.0.5 - pretty-format: 29.7.0 + pretty-format: 29.5.0 slash: 3.0.0 stack-utils: 2.0.6 dev: true - /jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + /jest-mock@29.5.0: + resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.6.3 - '@types/node': 18.17.17 - jest-util: 29.7.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 + jest-util: 29.5.0 dev: true - /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} peerDependencies: @@ -8949,161 +12029,163 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 29.7.0 + jest-resolve: 29.5.0 dev: true - /jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + /jest-regex-util@29.4.3: + resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + /jest-resolve-dependencies@29.5.0: + resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 + jest-regex-util: 29.4.3 + jest-snapshot: 29.5.0 transitivePeerDependencies: - supports-color dev: true - /jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + /jest-resolve@29.5.0: + resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - resolve: 1.22.6 + jest-haste-map: 29.5.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) + jest-util: 29.5.0 + jest-validate: 29.5.0 + resolve: 1.22.2 resolve.exports: 2.0.2 slash: 3.0.0 dev: true - /jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + /jest-runner@29.5.0: + resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.7.0 - '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.17.17 + '@jest/console': 29.5.0 + '@jest/environment': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 - jest-docblock: 29.7.0 - jest-environment-node: 29.7.0 - jest-haste-map: 29.7.0 - jest-leak-detector: 29.7.0 - jest-message-util: 29.7.0 - jest-resolve: 29.7.0 - jest-runtime: 29.7.0 - jest-util: 29.7.0 - jest-watcher: 29.7.0 - jest-worker: 29.7.0 + jest-docblock: 29.4.3 + jest-environment-node: 29.5.0 + jest-haste-map: 29.5.0 + jest-leak-detector: 29.5.0 + jest-message-util: 29.5.0 + jest-resolve: 29.5.0 + jest-runtime: 29.5.0 + jest-util: 29.5.0 + jest-watcher: 29.5.0 + jest-worker: 29.5.0 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color dev: true - /jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + /jest-runtime@29.5.0: + resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0 - '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.17.17 + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/globals': 29.5.0 + '@jest/source-map': 29.4.3 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 chalk: 4.1.2 - cjs-module-lexer: 1.2.3 - collect-v8-coverage: 1.0.2 + cjs-module-lexer: 1.2.2 + collect-v8-coverage: 1.0.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + /jest-snapshot@29.5.0: + resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 '@babel/generator': 7.22.15 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.20) - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.20) - '@babel/types': 7.22.19 - '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.20) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.15) + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 + '@jest/expect-utils': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/babel__traverse': 7.18.5 + '@types/prettier': 2.7.2 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.15) chalk: 4.1.2 - expect: 29.7.0 + expect: 29.5.0 graceful-fs: 4.2.11 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 natural-compare: 1.4.0 - pretty-format: 29.7.0 - semver: 7.5.4 + pretty-format: 29.5.0 + semver: 7.5.2 transitivePeerDependencies: - supports-color dev: true - /jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + /jest-util@29.5.0: + resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.6.3 - '@types/node': 18.17.17 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 picomatch: 2.3.1 - dev: true - /jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + /jest-validate@29.5.0: + resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.6.3 + '@jest/types': 29.5.0 camelcase: 6.3.0 chalk: 4.1.2 - jest-get-type: 29.6.3 + jest-get-type: 29.4.3 leven: 3.1.0 - pretty-format: 29.7.0 + pretty-format: 29.5.0 dev: true - /jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + /jest-watcher@29.5.0: + resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 18.17.17 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.7.0 + jest-util: 29.5.0 string-length: 4.0.2 dev: true @@ -9111,7 +12193,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.17.17 + '@types/node': 18.16.18 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -9120,23 +12202,21 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.17.17 + '@types/node': 18.16.18 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: true - /jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + /jest-worker@29.5.0: + resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.17.17 - jest-util: 29.7.0 + '@types/node': 18.16.18 + jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: true - /jest@29.7.0(@types/node@18.17.17)(ts-node@10.9.1): - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -9145,17 +12225,30 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1) - '@jest/types': 29.6.3 + '@jest/core': 29.5.0(ts-node@10.9.1) + '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@18.17.17)(ts-node@10.9.1) + jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - - babel-plugin-macros - supports-color - ts-node dev: true + /jiti@1.20.0: + resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==} + hasBin: true + dev: false + + /joi@17.10.2: + resolution: {integrity: sha512-hcVhjBxRNW/is3nNLdGLIjkgXetkeGc2wyhydhz8KumG23Aerk4HPjU5zaPAMRqXQFc0xNqXTC7+zQjxr0GlKA==} + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.4 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + /js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} dev: false @@ -9169,7 +12262,6 @@ packages: dependencies: argparse: 1.0.10 esprima: 4.0.1 - dev: true /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} @@ -9180,7 +12272,6 @@ packages: /jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true - dev: true /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} @@ -9191,16 +12282,12 @@ packages: resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} dev: false - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - /json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} dev: true /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true /json-rpc-engine@6.1.0: resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} @@ -9219,7 +12306,6 @@ packages: /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: true /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -9256,14 +12342,12 @@ packages: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} - /jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + /jsx-ast-utils@3.3.3: + resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.7 - array.prototype.flat: 1.3.2 + array-includes: 3.1.6 object.assign: 4.1.4 - object.values: 1.1.7 /keccak@3.0.3: resolution: {integrity: sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==} @@ -9271,7 +12355,7 @@ packages: requiresBuild: true dependencies: node-addon-api: 2.0.2 - node-gyp-build: 4.6.1 + node-gyp-build: 4.6.0 readable-stream: 3.6.2 dev: false @@ -9281,11 +12365,6 @@ packages: json-buffer: 3.0.0 dev: false - /keyv@4.5.3: - resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} - dependencies: - json-buffer: 3.0.1 - /keyvaluestorage-interface@1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} dev: false @@ -9293,12 +12372,10 @@ packages: /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - dev: true /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - dev: true /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} @@ -9313,10 +12390,23 @@ packages: dependencies: language-subtag-registry: 0.3.22 + /latest-version@5.1.0: + resolution: {integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==} + engines: {node: '>=8'} + dependencies: + package-json: 6.5.0 + dev: false + + /launch-editor@2.6.0: + resolution: {integrity: sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==} + dependencies: + picocolors: 1.0.0 + shell-quote: 1.8.1 + dev: false + /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} - dev: true /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} @@ -9325,24 +12415,22 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 - /libsodium-wrappers@0.7.13: - resolution: {integrity: sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw==} + /libsodium-wrappers@0.7.11: + resolution: {integrity: sha512-SrcLtXj7BM19vUKtQuyQKiQCRJPgbpauzl3s0rSwD+60wtHqSUuqcoawlMDheCJga85nKOQwxNYQxf/CKAvs6Q==} dependencies: - libsodium: 0.7.13 + libsodium: 0.7.11 dev: false - /libsodium@0.7.13: - resolution: {integrity: sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw==} + /libsodium@0.7.11: + resolution: {integrity: sha512-WPfJ7sS53I2s4iM58QxY3Inb83/6mjlYgcmZs7DJsvDlnmVUwNinBCi5vBT43P6bHRy01O4zsMU2CoVR6xJ40A==} dev: false /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - dev: true /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true /link-module-alias@1.2.0: resolution: {integrity: sha512-ahPjXepbSVKbahTB6LxR//VHm8HPfI+QQygCH+E82spBY4HR5VPJTvlhKBc9F7muVxnS6C1rRfoPOXAbWO/fyw==} @@ -9352,18 +12440,21 @@ packages: chalk: 2.4.2 dev: false - /lint-staged@13.3.0: - resolution: {integrity: sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==} - engines: {node: ^16.14.0 || >=18.0.0} + /lint-staged@13.2.2: + resolution: {integrity: sha512-71gSwXKy649VrSU09s10uAT0rWCcY3aewhMaHyl2N84oBk4Xs9HgxvUp3AYu+bNsK4NrOYYxvSgg7FyGJ+jGcA==} + engines: {node: ^14.13.1 || >=16.0.0} hasBin: true dependencies: - chalk: 5.3.0 - commander: 11.0.0 + chalk: 5.2.0 + cli-truncate: 3.1.0 + commander: 10.0.1 debug: 4.3.4(supports-color@8.1.1) - execa: 7.2.0 + execa: 7.1.1 lilconfig: 2.1.0 - listr2: 6.6.1 + listr2: 5.0.8 micromatch: 4.0.5 + normalize-path: 3.0.0 + object-inspect: 1.12.3 pidtree: 0.6.0 string-argv: 0.3.2 yaml: 2.3.1 @@ -9372,43 +12463,45 @@ packages: - supports-color dev: true - /listr2@6.6.1: - resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} - engines: {node: '>=16.0.0'} + /listr2@5.0.8: + resolution: {integrity: sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==} + engines: {node: ^14.13.1 || >=16.0.0} peerDependencies: enquirer: '>= 2.3.0 < 3' peerDependenciesMeta: enquirer: optional: true dependencies: - cli-truncate: 3.1.0 + cli-truncate: 2.1.0 colorette: 2.0.20 - eventemitter3: 5.0.1 - log-update: 5.0.1 + log-update: 4.0.0 + p-map: 4.0.0 rfdc: 1.3.0 - wrap-ansi: 8.1.0 + rxjs: 7.8.1 + through: 2.3.8 + wrap-ansi: 7.0.0 dev: true - /lit-element@3.3.3: - resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} + /lit-element@3.3.2: + resolution: {integrity: sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ==} dependencies: '@lit-labs/ssr-dom-shim': 1.1.1 - '@lit/reactive-element': 1.6.3 - lit-html: 2.8.0 + '@lit/reactive-element': 1.6.1 + lit-html: 2.7.4 dev: false - /lit-html@2.8.0: - resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} + /lit-html@2.7.4: + resolution: {integrity: sha512-/Jw+FBpeEN+z8X6PJva5n7+0MzCVAH2yypN99qHYYkq8bI+j7I39GH+68Z/MZD6rGKDK9RpzBw7CocfmHfq6+g==} dependencies: - '@types/trusted-types': 2.0.4 + '@types/trusted-types': 2.0.3 dev: false - /lit@2.8.0: - resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} + /lit@2.7.5: + resolution: {integrity: sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ==} dependencies: - '@lit/reactive-element': 1.6.3 - lit-element: 3.3.3 - lit-html: 2.8.0 + '@lit/reactive-element': 1.6.1 + lit-element: 3.3.2 + lit-html: 2.7.4 dev: false /load-json-file@4.0.0: @@ -9434,7 +12527,28 @@ packages: /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} - dev: true + + /loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + dev: false + + /loader-utils@3.2.1: + resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} + engines: {node: '>= 12.13.0'} + dev: false + + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + dev: false /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} @@ -9456,9 +12570,28 @@ packages: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} dev: false + /lodash.curry@4.1.1: + resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} + dev: false + /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - dev: true + + /lodash.escape@4.0.1: + resolution: {integrity: sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==} + dev: false + + /lodash.flatten@4.4.0: + resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + dev: false + + /lodash.flow@3.5.0: + resolution: {integrity: sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==} + dev: false + + /lodash.invokemap@4.6.0: + resolution: {integrity: sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==} + dev: false /lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} @@ -9482,7 +12615,6 @@ packages: /lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - dev: true /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -9491,6 +12623,10 @@ packages: resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} dev: true + /lodash.pullall@4.2.0: + resolution: {integrity: sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==} + dev: false + /lodash.snakecase@4.1.1: resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} dev: true @@ -9505,7 +12641,10 @@ packages: /lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - dev: true + + /lodash.uniqby@4.7.0: + resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} + dev: false /lodash.upperfirst@4.3.1: resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} @@ -9513,7 +12652,6 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true /log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} @@ -9522,23 +12660,22 @@ packages: chalk: 4.1.2 is-unicode-supported: 0.1.0 - /log-update@5.0.1: - resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} dependencies: - ansi-escapes: 5.0.0 - cli-cursor: 4.0.0 - slice-ansi: 5.0.0 - strip-ansi: 7.1.0 - wrap-ansi: 8.1.0 + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 dev: true /long@4.0.0: resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} dev: false - /long@5.2.3: - resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + /long@5.2.1: + resolution: {integrity: sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==} dev: false /loose-envify@1.4.0: @@ -9553,6 +12690,12 @@ packages: get-func-name: 2.0.0 dev: true + /lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + dependencies: + tslib: 2.5.2 + dev: false + /lowercase-keys@1.0.0: resolution: {integrity: sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==} engines: {node: '>=0.10.0'} @@ -9563,6 +12706,11 @@ packages: engines: {node: '>=0.10.0'} dev: false + /lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + dev: false + /lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: @@ -9601,12 +12749,11 @@ packages: pify: 3.0.0 dev: false - /make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} dependencies: - semver: 7.5.4 - dev: true + semver: 6.3.1 /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} @@ -9628,6 +12775,10 @@ packages: engines: {node: '>=8'} dev: true + /markdown-escapes@1.0.4: + resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} + dev: false + /md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} dependencies: @@ -9636,10 +12787,59 @@ packages: safe-buffer: 5.2.1 dev: false + /mdast-squeeze-paragraphs@4.0.0: + resolution: {integrity: sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==} + dependencies: + unist-util-remove: 2.1.0 + dev: false + + /mdast-util-definitions@4.0.0: + resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==} + dependencies: + unist-util-visit: 2.0.3 + dev: false + + /mdast-util-to-hast@10.0.1: + resolution: {integrity: sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==} + dependencies: + '@types/mdast': 3.0.12 + '@types/unist': 2.0.8 + mdast-util-definitions: 4.0.0 + mdurl: 1.0.1 + unist-builder: 2.0.3 + unist-util-generated: 1.1.6 + unist-util-position: 3.1.0 + unist-util-visit: 2.0.3 + dev: false + + /mdast-util-to-string@2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + dev: false + + /mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: false + + /mdurl@1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + dev: false + /media-query-parser@2.0.2: resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} dependencies: - '@babel/runtime': 7.22.15 + '@babel/runtime': 7.22.3 + dev: false + + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: false + + /memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + dependencies: + fs-monkey: 1.0.4 dev: false /meow@6.1.1: @@ -9676,16 +12876,20 @@ packages: yargs-parser: 20.2.9 dev: true + /merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + dev: false + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /micro-ftch@0.3.1: - resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} dev: false /micromatch@4.0.5: @@ -9695,16 +12899,34 @@ packages: braces: 3.0.2 picomatch: 2.3.1 + /mime-db@1.33.0: + resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} + engines: {node: '>= 0.6'} + dev: false + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + /mime-types@2.1.18: + resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.33.0 + dev: false + /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: false + /mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} @@ -9730,6 +12952,16 @@ packages: engines: {node: '>=4'} dev: true + /mini-css-extract-plugin@2.7.6(webpack@5.88.1): + resolution: {integrity: sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + schema-utils: 4.2.0 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + /minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} dev: false @@ -9806,12 +13038,29 @@ packages: '@motionone/vue': 10.16.2 dev: false + /mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: false + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: false + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + /multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + dev: false + /multiformats@9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} dev: false @@ -9840,10 +13089,15 @@ packages: /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: false + /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - /next@13.1.6(@babel/core@7.22.20)(react-dom@18.2.0)(react@18.2.0): + /next@13.1.6(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==} engines: {node: '>=14.6.0'} hasBin: true @@ -9863,11 +13117,11 @@ packages: dependencies: '@next/env': 13.1.6 '@swc/helpers': 0.4.14 - caniuse-lite: 1.0.30001538 + caniuse-lite: 1.0.30001527 postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.22.20)(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.22.15)(react@18.2.0) optionalDependencies: '@next/swc-android-arm-eabi': 13.1.6 '@next/swc-android-arm64': 13.1.6 @@ -9887,12 +13141,25 @@ packages: - babel-plugin-macros dev: false + /no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + dependencies: + lower-case: 2.0.2 + tslib: 2.5.2 + dev: false + /node-addon-api@2.0.2: resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} dev: false - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + /node-emoji@1.11.0: + resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} + dependencies: + lodash: 4.17.21 + dev: false + + /node-fetch@2.6.11: + resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -9902,8 +13169,13 @@ packages: dependencies: whatwg-url: 5.0.0 - /node-gyp-build@4.6.1: - resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + dev: false + + /node-gyp-build@4.6.0: + resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} hasBin: true dev: false @@ -9918,8 +13190,8 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.6 - semver: 5.7.2 + resolve: 1.22.2 + semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: true @@ -9928,15 +13200,19 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.13.0 - semver: 7.5.4 + is-core-module: 2.12.1 + semver: 7.5.2 validate-npm-package-license: 3.0.4 dev: true /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - dev: true + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: false /normalize-url@2.0.1: resolution: {integrity: sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==} @@ -9947,6 +13223,16 @@ packages: sort-keys: 2.0.0 dev: false + /normalize-url@4.5.1: + resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} + engines: {node: '>=8'} + dev: false + + /normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: false + /npm-conf@1.1.3: resolution: {integrity: sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==} engines: {node: '>=4'} @@ -9960,7 +13246,6 @@ packages: engines: {node: '>=8'} dependencies: path-key: 3.1.1 - dev: true /npm-run-path@5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} @@ -9969,6 +13254,16 @@ packages: path-key: 4.0.0 dev: true + /nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + dev: false + + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: false + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -9976,6 +13271,13 @@ packages: /object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + /object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -9985,52 +13287,60 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 + define-properties: 1.2.0 has-symbols: 1.0.3 object-keys: 1.1.1 - /object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + /object.entries@1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 - /object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + /object.fromentries@2.0.6: + resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 - - /object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 - get-intrinsic: 1.2.1 + define-properties: 1.2.0 + es-abstract: 1.21.2 - /object.hasown@1.1.3: - resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + /object.hasown@1.1.2: + resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: - define-properties: 1.2.1 - es-abstract: 1.22.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 - /object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + /object.values@1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + + /obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + dev: false /on-exit-leak-free@0.2.0: resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} dev: false + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: false + + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: false + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -10049,6 +13359,19 @@ packages: mimic-fn: 4.0.0 dev: true + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + /opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + dev: false + /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -10067,7 +13390,7 @@ packages: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.9.1 + cli-spinners: 2.9.0 is-interactive: 1.0.0 is-unicode-supported: 0.1.0 log-symbols: 4.1.0 @@ -10092,6 +13415,11 @@ packages: engines: {node: '>=4'} dev: false + /p-cancelable@1.1.0: + resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} + engines: {node: '>=6'} + dev: false + /p-event@2.3.1: resolution: {integrity: sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==} engines: {node: '>=6'} @@ -10128,6 +13456,13 @@ packages: dependencies: yocto-queue: 0.1.0 + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 + dev: false + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -10145,6 +13480,20 @@ packages: engines: {node: '>=6'} dev: true + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + + /p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + dev: false + /p-timeout@2.0.1: resolution: {integrity: sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==} engines: {node: '>=4'} @@ -10156,11 +13505,39 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + /package-json@6.5.0: + resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} + engines: {node: '>=8'} dependencies: - callsites: 3.1.0 + got: 9.6.0 + registry-auth-token: 4.2.2 + registry-url: 5.1.0 + semver: 6.3.1 + dev: false + + /param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + dependencies: + dot-case: 3.0.4 + tslib: 2.5.2 + dev: false + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + + /parse-entities@2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + dev: false /parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} @@ -10178,7 +13555,44 @@ packages: error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - dev: true + + /parse-numeric-range@1.3.0: + resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} + dev: false + + /parse5-htmlparser2-tree-adapter@7.0.0: + resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + dependencies: + domhandler: 5.0.3 + parse5: 7.1.2 + dev: false + + /parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + dev: false + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + dev: false + + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: false + + /pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + dependencies: + no-case: 3.0.4 + tslib: 2.5.2 + dev: false + + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + dev: false /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} @@ -10190,7 +13604,6 @@ packages: /path-is-inside@1.0.2: resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - dev: true /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} @@ -10204,6 +13617,20 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + /path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + dev: false + + /path-to-regexp@1.8.0: + resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} + dependencies: + isarray: 0.0.1 + dev: false + + /path-to-regexp@2.2.1: + resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} + dev: false + /path-type@3.0.0: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} engines: {node: '>=4'} @@ -10275,49 +13702,738 @@ packages: resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} engines: {node: '>=0.10.0'} - /pino-abstract-transport@0.5.0: - resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + /pino-abstract-transport@0.5.0: + resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + dependencies: + duplexify: 4.1.2 + split2: 4.2.0 + dev: false + + /pino-std-serializers@4.0.0: + resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + dev: false + + /pino@7.11.0: + resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} + hasBin: true + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.2.0 + on-exit-leak-free: 0.2.0 + pino-abstract-transport: 0.5.0 + pino-std-serializers: 4.0.0 + process-warning: 1.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.1.0 + safe-stable-stringify: 2.4.3 + sonic-boom: 2.8.0 + thread-stream: 0.15.2 + dev: false + + /pirates@4.0.5: + resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + engines: {node: '>= 6'} + dev: true + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + + /pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + dependencies: + find-up: 3.0.0 + dev: false + + /pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + dev: false + + /postcss-calc@8.2.4(postcss@8.4.14): + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-calc@8.2.4(postcss@8.4.29): + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-colormin@5.3.1(postcss@8.4.14): + resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-colormin@5.3.1(postcss@8.4.29): + resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-convert-values@5.1.3(postcss@8.4.14): + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-convert-values@5.1.3(postcss@8.4.29): + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-discard-comments@5.1.2(postcss@8.4.14): + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + dev: false + + /postcss-discard-comments@5.1.2(postcss@8.4.29): + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: false + + /postcss-discard-duplicates@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + dev: false + + /postcss-discard-duplicates@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: false + + /postcss-discard-empty@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + dev: false + + /postcss-discard-empty@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: false + + /postcss-discard-overridden@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + dev: false + + /postcss-discard-overridden@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: false + + /postcss-discard-unused@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-loader@7.3.3(postcss@8.4.14)(typescript@4.9.5)(webpack@5.88.1): + resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + dependencies: + cosmiconfig: 8.3.6(typescript@4.9.5) + jiti: 1.20.0 + postcss: 8.4.14 + semver: 7.5.2 + webpack: 5.88.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - typescript + dev: false + + /postcss-merge-idents@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 3.1.0(postcss@8.4.14) + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-merge-longhand@5.1.7(postcss@8.4.14): + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1(postcss@8.4.14) + dev: false + + /postcss-merge-longhand@5.1.7(postcss@8.4.29): + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1(postcss@8.4.29) + dev: false + + /postcss-merge-rules@5.1.4(postcss@8.4.14): + resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0(postcss@8.4.14) + postcss: 8.4.14 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-merge-rules@5.1.4(postcss@8.4.29): + resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-minify-font-values@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-font-values@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-gradients@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0(postcss@8.4.14) + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-gradients@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-params@5.1.4(postcss@8.4.14): + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + cssnano-utils: 3.1.0(postcss@8.4.14) + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-params@5.1.4(postcss@8.4.29): + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + cssnano-utils: 3.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-selectors@5.2.1(postcss@8.4.14): + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-minify-selectors@5.2.1(postcss@8.4.29): + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-modules-extract-imports@3.0.0(postcss@8.4.29): + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.29 + dev: false + + /postcss-modules-local-by-default@4.0.3(postcss@8.4.29): + resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-modules-scope@3.0.0(postcss@8.4.29): + resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-modules-values@4.0.0(postcss@8.4.29): + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.29) + postcss: 8.4.29 + dev: false + + /postcss-normalize-charset@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + dev: false + + /postcss-normalize-charset@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: false + + /postcss-normalize-display-values@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-display-values@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-positions@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-positions@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-repeat-style@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-repeat-style@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-string@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-string@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-timing-functions@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-timing-functions@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-unicode@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-unicode@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-url@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-url@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-whitespace@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-whitespace@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-ordered-values@5.1.3(postcss@8.4.14): + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 3.1.0(postcss@8.4.14) + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-ordered-values@5.1.3(postcss@8.4.29): + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 3.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-reduce-idents@5.2.0(postcss@8.4.14): + resolution: {integrity: sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-reduce-initial@5.1.2(postcss@8.4.14): + resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + caniuse-api: 3.0.0 + postcss: 8.4.14 + dev: false + + /postcss-reduce-initial@5.1.2(postcss@8.4.29): + resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + caniuse-api: 3.0.0 + postcss: 8.4.29 + dev: false + + /postcss-reduce-transforms@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-reduce-transforms@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: false + + /postcss-sort-media-queries@4.4.1(postcss@8.4.14): + resolution: {integrity: sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.4.16 + dependencies: + postcss: 8.4.14 + sort-css-media-queries: 2.1.0 + dev: false + + /postcss-svgo@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + dev: false + + /postcss-svgo@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - duplexify: 4.1.2 - split2: 4.2.0 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 dev: false - /pino-std-serializers@4.0.0: - resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + /postcss-unique-selectors@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.13 dev: false - /pino@7.11.0: - resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} - hasBin: true + /postcss-unique-selectors@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - atomic-sleep: 1.0.0 - fast-redact: 3.3.0 - on-exit-leak-free: 0.2.0 - pino-abstract-transport: 0.5.0 - pino-std-serializers: 4.0.0 - process-warning: 1.0.0 - quick-format-unescaped: 4.0.4 - real-require: 0.1.0 - safe-stable-stringify: 2.4.3 - sonic-boom: 2.8.0 - thread-stream: 0.15.2 + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 dev: false - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - dev: true + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: false - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + /postcss-zindex@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - find-up: 4.1.0 - dev: true - - /pngjs@5.0.0: - resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} - engines: {node: '>=10.13.0'} + postcss: 8.4.14 dev: false /postcss@8.4.14: @@ -10329,12 +14445,21 @@ packages: source-map-js: 1.0.2 dev: false - /preact@10.17.1: - resolution: {integrity: sha512-X9BODrvQ4Ekwv9GURm9AKAGaomqXmip7NQTZgY7gcNmr7XE83adOMJvd3N42id1tMFU7ojiynRsYnY6/BRFxLA==} + /postcss@8.4.29: + resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + + /preact@10.14.1: + resolution: {integrity: sha512-4XDSnUisk3YFBb3p9WeKeH1mKoxdFUsaXcvxs9wlpYR1wax/TWJVqhwmIWbByX0h7jMEJH6Zc5J6jqc58FKaNQ==} dev: false - /preferred-pm@3.1.2: - resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} + /preferred-pm@3.0.3: + resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} engines: {node: '>=10'} dependencies: find-up: 5.0.0 @@ -10365,15 +14490,40 @@ packages: hasBin: true dev: true - /pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + /pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + dependencies: + lodash: 4.17.21 + renderkid: 3.0.0 + dev: false + + /pretty-format@29.5.0: + resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.6.3 + '@jest/schemas': 29.4.3 ansi-styles: 5.2.0 react-is: 18.2.0 dev: true + /pretty-time@1.1.0: + resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} + engines: {node: '>=4'} + dev: false + + /prism-react-renderer@1.3.5(react@17.0.2): + resolution: {integrity: sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==} + peerDependencies: + react: '>=0.14.9' + dependencies: + react: 17.0.2 + dev: false + + /prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + dev: false + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: false @@ -10382,13 +14532,18 @@ packages: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} dev: false + /promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + dependencies: + asap: 2.0.6 + dev: false + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - dev: true /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -10397,6 +14552,12 @@ packages: object-assign: 4.1.1 react-is: 16.13.1 + /property-information@5.6.0: + resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} + dependencies: + xtend: 4.0.2 + dev: false + /proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: false @@ -10417,10 +14578,18 @@ packages: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 18.17.17 + '@types/node': 18.16.18 long: 4.0.0 dev: false + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + dev: false + /proxy-compare@2.5.1: resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} dev: false @@ -10433,12 +14602,34 @@ packages: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: false + + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: false + /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} - /pure-rand@6.0.3: - resolution: {integrity: sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==} + /pupa@2.1.1: + resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} + engines: {node: '>=8'} + dependencies: + escape-goat: 2.1.1 + dev: false + + /pure-color@1.3.0: + resolution: {integrity: sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==} + dev: false + + /pure-rand@6.0.2: + resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} dev: true /q@1.5.1: @@ -10468,6 +14659,13 @@ packages: yargs: 15.4.1 dev: false + /qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: false + /qs@6.11.2: resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} engines: {node: '>=0.6'} @@ -10507,6 +14705,12 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + /queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + dependencies: + inherits: 2.0.4 + dev: false + /quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} dev: false @@ -10521,6 +14725,97 @@ packages: dependencies: safe-buffer: 5.2.1 + /range-parser@1.2.0: + resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} + engines: {node: '>= 0.6'} + dev: false + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: false + + /raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: false + + /rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + dev: false + + /react-base16-styling@0.6.0: + resolution: {integrity: sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==} + dependencies: + base16: 1.0.0 + lodash.curry: 4.1.1 + lodash.flow: 3.5.0 + pure-color: 1.3.0 + dev: false + + /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.88.1): + resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=2.7' + webpack: '>=4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/code-frame': 7.22.13 + address: 1.2.2 + browserslist: 4.21.10 + chalk: 4.1.2 + cross-spawn: 7.0.3 + detect-port-alt: 1.1.6 + escape-string-regexp: 4.0.0 + filesize: 8.0.7 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.88.1) + global-modules: 2.0.0 + globby: 11.1.0 + gzip-size: 6.0.0 + immer: 9.0.21 + is-root: 2.1.0 + loader-utils: 3.2.1 + open: 8.4.2 + pkg-up: 3.1.0 + prompts: 2.4.2 + react-error-overlay: 6.0.11 + recursive-readdir: 2.2.3 + shell-quote: 1.8.1 + strip-ansi: 6.0.1 + text-table: 0.2.0 + typescript: 4.9.5 + webpack: 5.88.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + dev: false + + /react-dom@17.0.2(react@17.0.2): + resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} + peerDependencies: + react: 17.0.2 + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react: 17.0.2 + scheduler: 0.20.2 + /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: @@ -10531,6 +14826,27 @@ packages: scheduler: 0.23.0 dev: false + /react-error-overlay@6.0.11: + resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} + dev: false + + /react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + + /react-helmet-async@1.3.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.22.3 + invariant: 2.2.4 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-fast-compare: 3.2.2 + shallowequal: 1.1.0 + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -10538,7 +14854,40 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /react-remove-scroll-bar@2.3.4(@types/react@18.2.22)(react@18.2.0): + /react-json-view@1.21.3(@types/react@18.2.12)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==} + peerDependencies: + react: ^17.0.0 || ^16.3.0 || ^15.5.4 + react-dom: ^17.0.0 || ^16.3.0 || ^15.5.4 + dependencies: + flux: 4.0.4(react@17.0.2) + react: 17.0.2 + react-base16-styling: 0.6.0 + react-dom: 17.0.2(react@17.0.2) + react-lifecycles-compat: 3.0.4 + react-textarea-autosize: 8.5.3(@types/react@18.2.12)(react@17.0.2) + transitivePeerDependencies: + - '@types/react' + - encoding + dev: false + + /react-lifecycles-compat@3.0.4: + resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + dev: false + + /react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.88.1): + resolution: {integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==} + engines: {node: '>=10.13.0'} + peerDependencies: + react-loadable: '*' + webpack: '>=4.41.1 || 5.x' + dependencies: + '@babel/runtime': 7.22.3 + react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.2) + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + + /react-remove-scroll-bar@2.3.4(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: @@ -10548,13 +14897,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.22 + '@types/react': 18.2.12 react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.22)(react@18.2.0) - tslib: 2.6.2 + react-style-singleton: 2.2.1(@types/react@18.2.12)(react@18.2.0) + tslib: 2.5.2 dev: false - /react-remove-scroll@2.5.4(@types/react@18.2.22)(react@18.2.0): + /react-remove-scroll@2.5.4(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==} engines: {node: '>=10'} peerDependencies: @@ -10564,16 +14913,59 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.22 + '@types/react': 18.2.12 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.22)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.22)(react@18.2.0) - tslib: 2.6.2 - use-callback-ref: 1.3.0(@types/react@18.2.22)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.22)(react@18.2.0) + react-remove-scroll-bar: 2.3.4(@types/react@18.2.12)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.12)(react@18.2.0) + tslib: 2.5.2 + use-callback-ref: 1.3.0(@types/react@18.2.12)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.12)(react@18.2.0) + dev: false + + /react-router-config@5.1.1(react-router@5.3.4)(react@17.0.2): + resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} + peerDependencies: + react: '>=15' + react-router: '>=5' + dependencies: + '@babel/runtime': 7.22.3 + react: 17.0.2 + react-router: 5.3.4(react@17.0.2) + dev: false + + /react-router-dom@5.3.4(react@17.0.2): + resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} + peerDependencies: + react: '>=15' + dependencies: + '@babel/runtime': 7.22.3 + history: 4.10.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 17.0.2 + react-router: 5.3.4(react@17.0.2) + tiny-invariant: 1.3.1 + tiny-warning: 1.0.3 + dev: false + + /react-router@5.3.4(react@17.0.2): + resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} + peerDependencies: + react: '>=15' + dependencies: + '@babel/runtime': 7.22.3 + history: 4.10.1 + hoist-non-react-statics: 3.3.2 + loose-envify: 1.4.0 + path-to-regexp: 1.8.0 + prop-types: 15.8.1 + react: 17.0.2 + react-is: 16.13.1 + tiny-invariant: 1.3.1 + tiny-warning: 1.0.3 dev: false - /react-style-singleton@2.2.1(@types/react@18.2.22)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -10583,13 +14975,34 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.22 + '@types/react': 18.2.12 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 - tslib: 2.6.2 + tslib: 2.5.2 + dev: false + + /react-textarea-autosize@8.5.3(@types/react@18.2.12)(react@17.0.2): + resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==} + engines: {node: '>=10'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.22.3 + react: 17.0.2 + use-composed-ref: 1.3.0(react@17.0.2) + use-latest: 1.2.1(@types/react@18.2.12)(react@17.0.2) + transitivePeerDependencies: + - '@types/react' dev: false + /react@17.0.2: + resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} @@ -10660,7 +15073,10 @@ packages: engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - dev: true + + /reading-time@1.5.0: + resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} + dev: false /readonly-date@1.0.0: resolution: {integrity: sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==} @@ -10675,15 +15091,21 @@ packages: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} dependencies: - resolve: 1.22.6 + resolve: 1.22.2 dev: false /rechoir@0.8.0: resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} engines: {node: '>= 10.13.0'} dependencies: - resolve: 1.22.6 - dev: true + resolve: 1.22.2 + + /recursive-readdir@2.2.3: + resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} + engines: {node: '>=6.0.0'} + dependencies: + minimatch: 3.1.2 + dev: false /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} @@ -10697,44 +15119,34 @@ packages: resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} dev: false - /reflect.getprototypeof@1.0.4: - resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 - get-intrinsic: 1.2.1 - globalthis: 1.0.3 - which-builtin-type: 1.1.3 - - /regenerate-unicode-properties@10.1.1: - resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + /regenerate-unicode-properties@10.1.0: + resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} engines: {node: '>=4'} dependencies: regenerate: 1.4.2 - dev: true /regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - dev: true + + /regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} /regenerator-runtime@0.14.0: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + dev: false - /regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + /regenerator-transform@0.15.1: + resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: - '@babel/runtime': 7.22.15 - dev: true + '@babel/runtime': 7.22.3 - /regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + /regexp.prototype.flags@1.5.0: + resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 - set-function-name: 2.0.1 + define-properties: 1.2.0 + functions-have-names: 1.2.3 /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} @@ -10742,18 +15154,104 @@ packages: dependencies: '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.1 + regenerate-unicode-properties: 10.1.0 regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 - dev: true + + /registry-auth-token@4.2.2: + resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} + engines: {node: '>=6.0.0'} + dependencies: + rc: 1.2.8 + dev: false + + /registry-url@5.1.0: + resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} + engines: {node: '>=8'} + dependencies: + rc: 1.2.8 + dev: false /regjsparser@0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true dependencies: jsesc: 0.5.0 - dev: true + + /relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + dev: false + + /remark-emoji@2.2.0: + resolution: {integrity: sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==} + dependencies: + emoticon: 3.2.0 + node-emoji: 1.11.0 + unist-util-visit: 2.0.3 + dev: false + + /remark-footnotes@2.0.0: + resolution: {integrity: sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==} + dev: false + + /remark-mdx@1.6.22: + resolution: {integrity: sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==} + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-proposal-object-rest-spread': 7.12.1(@babel/core@7.12.9) + '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9) + '@mdx-js/util': 1.6.22 + is-alphabetical: 1.0.4 + remark-parse: 8.0.3 + unified: 9.2.0 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-parse@8.0.3: + resolution: {integrity: sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==} + dependencies: + ccount: 1.1.0 + collapse-white-space: 1.0.6 + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + is-whitespace-character: 1.0.4 + is-word-character: 1.0.4 + markdown-escapes: 1.0.4 + parse-entities: 2.0.0 + repeat-string: 1.6.1 + state-toggle: 1.0.3 + trim: 0.0.1 + trim-trailing-lines: 1.1.4 + unherit: 1.1.3 + unist-util-remove-position: 2.0.1 + vfile-location: 3.2.0 + xtend: 4.0.2 + dev: false + + /remark-squeeze-paragraphs@4.0.0: + resolution: {integrity: sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==} + dependencies: + mdast-squeeze-paragraphs: 4.0.0 + dev: false + + /renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 6.0.1 + dev: false + + /repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + dev: false /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} @@ -10762,17 +15260,23 @@ packages: /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - dev: true + + /require-like@0.1.2: + resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} + dev: false /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: false + /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 - dev: true /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} @@ -10781,7 +15285,6 @@ packages: /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - dev: true /resolve-global@1.0.0: resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} @@ -10790,19 +15293,20 @@ packages: global-dirs: 0.1.1 dev: true - /resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + /resolve-pathname@3.0.0: + resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + dev: false /resolve.exports@2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} dev: true - /resolve@1.22.6: - resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} + /resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true dependencies: - is-core-module: 2.13.0 + is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -10810,7 +15314,7 @@ packages: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: - is-core-module: 2.13.0 + is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -10826,15 +15330,11 @@ packages: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - dev: false - /restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: true + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: false /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -10886,7 +15386,7 @@ packages: read-pkg: 3.0.0 rollup: 2.79.1 safe-resolve: 1.0.0 - semver: 5.7.2 + semver: 5.7.1 dev: true /rollup-plugin-polyfill-node@0.10.2(rollup@2.79.1): @@ -10908,7 +15408,7 @@ packages: jest-worker: 26.6.2 rollup: 2.79.1 serialize-javascript: 4.0.0 - terser: 5.19.4 + terser: 5.19.2 dev: true /rollup@2.79.1: @@ -10919,18 +15419,32 @@ packages: fsevents: 2.3.3 dev: true - /rpc-websockets@7.6.0: - resolution: {integrity: sha512-Jgcs8q6t8Go98dEulww1x7RysgTkzpCMelVxZW4hvuyFtOGpeUz9prpr2KjUa/usqxgFCd9Tu3+yhHEP9GVmiQ==} + /rpc-websockets@7.5.1: + resolution: {integrity: sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==} dependencies: - '@babel/runtime': 7.22.15 + '@babel/runtime': 7.22.3 eventemitter3: 4.0.7 uuid: 8.3.2 - ws: 8.14.1(bufferutil@4.0.7)(utf-8-validate@5.0.10) + ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) optionalDependencies: bufferutil: 4.0.7 utf-8-validate: 5.0.10 dev: false + /rtl-detect@1.0.4: + resolution: {integrity: sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==} + dev: false + + /rtlcss@3.5.0: + resolution: {integrity: sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==} + hasBin: true + dependencies: + find-up: 5.0.0 + picocolors: 1.0.0 + postcss: 8.4.14 + strip-json-comments: 3.1.1 + dev: false + /run-async@3.0.0: resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} engines: {node: '>=0.12.0'} @@ -10948,14 +15462,10 @@ packages: tslib: 1.14.1 dev: false - /safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} - engines: {node: '>=0.4'} + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - has-symbols: 1.0.3 - isarray: 2.0.5 + tslib: 2.5.2 /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -10987,35 +15497,65 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + /sax@1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + dev: false + + /scheduler@0.20.2: + resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 dev: false + /schema-utils@2.7.0: + resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} + engines: {node: '>= 8.9.0'} + dependencies: + '@types/json-schema': 7.0.12 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: false + + /schema-utils@2.7.1: + resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} + engines: {node: '>= 8.9.0'} + dependencies: + '@types/json-schema': 7.0.12 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: false + /schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/json-schema': 7.0.13 + '@types/json-schema': 7.0.12 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true /schema-utils@4.2.0: resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} engines: {node: '>= 12.13.0'} dependencies: - '@types/json-schema': 7.0.13 + '@types/json-schema': 7.0.12 ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) ajv-keywords: 5.1.0(ajv@8.12.0) - dev: true /scrypt-js@3.0.1: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} dev: false + /search-insights@2.8.2: + resolution: {integrity: sha512-PxA9M5Q2bpBelVvJ3oDZR8nuY00Z6qwOxL53wNpgzV28M/D6u9WUbImDckjLSILBF8F1hn/mgyuUaOPtjow4Qw==} + dev: false + /secp256k1@4.0.3: resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} engines: {node: '>=10.0.0'} @@ -11023,7 +15563,15 @@ packages: dependencies: elliptic: 6.5.4 node-addon-api: 2.0.2 - node-gyp-build: 4.6.1 + node-gyp-build: 4.6.0 + dev: false + + /section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 dev: false /seek-bzip@1.0.6: @@ -11033,22 +15581,60 @@ packages: commander: 2.20.3 dev: false - /semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + /select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + dev: false + + /selfsigned@2.1.1: + resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==} + engines: {node: '>=10'} + dependencies: + node-forge: 1.3.1 + dev: false + + /semver-diff@3.1.1: + resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.1 + dev: false + + /semver@5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true - dev: true /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + /semver@7.5.2: + resolution: {integrity: sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: false + /serialize-javascript@4.0.0: resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} dependencies: @@ -11065,23 +15651,62 @@ packages: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} dependencies: randombytes: 2.1.0 - dev: true - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + /serve-handler@6.1.5: + resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==} + dependencies: + bytes: 3.0.0 + content-disposition: 0.5.2 + fast-url-parser: 1.1.3 + mime-types: 2.1.18 + minimatch: 3.1.2 + path-is-inside: 1.0.2 + path-to-regexp: 2.2.1 + range-parser: 1.2.0 + dev: false - /set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} - engines: {node: '>= 0.4'} + /serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} dependencies: - define-data-property: 1.1.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.0 + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + dev: false + + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + dev: false + + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} dev: false + /setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + dev: false + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: false + /sha.js@2.4.11: resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} hasBin: true @@ -11101,7 +15726,9 @@ packages: engines: {node: '>=8'} dependencies: kind-of: 6.0.3 - dev: true + + /shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} @@ -11125,6 +15752,10 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: false + /shelljs@0.8.5: resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} engines: {node: '>=4'} @@ -11159,9 +15790,28 @@ packages: engines: {node: '>=14'} dev: false + /sirv@2.0.3: + resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.23 + mrmime: 1.0.1 + totalist: 3.0.1 + dev: false + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: true + + /sitemap@7.1.1: + resolution: {integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==} + engines: {node: '>=12.0.0', npm: '>=5.6.0'} + hasBin: true + dependencies: + '@types/node': 17.0.45 + '@types/sax': 1.2.4 + arg: 5.0.2 + sax: 1.2.4 + dev: false /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} @@ -11170,6 +15820,23 @@ packages: /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} + + /slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 dev: true /slice-ansi@5.0.0: @@ -11185,20 +15852,33 @@ packages: engines: {node: '>=6'} hasBin: true dependencies: - array.prototype.flat: 1.3.2 - breakword: 1.0.6 + array.prototype.flat: 1.3.1 + breakword: 1.0.5 grapheme-splitter: 1.0.4 strip-ansi: 6.0.1 wcwidth: 1.0.1 yargs: 15.4.1 dev: true + /sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + dev: false + /sonic-boom@2.8.0: resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} dependencies: atomic-sleep: 1.0.0 dev: false + /sort-css-media-queries@2.1.0: + resolution: {integrity: sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==} + engines: {node: '>= 6.3.0'} + dev: false + /sort-keys-length@1.0.1: resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} engines: {node: '>=0.10.0'} @@ -11237,7 +15917,11 @@ packages: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true + + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: false /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} @@ -11248,6 +15932,10 @@ packages: deprecated: Please use @jridgewell/sourcemap-codec instead dev: true + /space-separated-tokens@1.1.5: + resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} + dev: false + /spawndamnit@2.0.0: resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} dependencies: @@ -11259,7 +15947,7 @@ packages: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.14 + spdx-license-ids: 3.0.13 dev: true /spdx-exceptions@2.3.0: @@ -11270,13 +15958,39 @@ packages: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.14 + spdx-license-ids: 3.0.13 dev: true - /spdx-license-ids@3.0.14: - resolution: {integrity: sha512-U0eS5wcpu/O2/QZk6PcAMOA8H3ZuvRe4mFHA3Q+LNl1SRDmfQ+mD3RoD6tItqnvqubJ32m/zV2Z/ikSmxccD1Q==} + /spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} dev: true + /spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + dev: false + + /spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} @@ -11295,7 +16009,11 @@ packages: /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true + + /stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: false /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} @@ -11304,6 +16022,30 @@ packages: escape-string-regexp: 2.0.0 dev: true + /state-toggle@1.0.3: + resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} + dev: false + + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: false + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: false + + /std-env@3.4.3: + resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} + dev: false + + /stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + dependencies: + internal-slot: 1.0.5 + /stream-browserify@3.0.0: resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} dependencies: @@ -11363,42 +16105,40 @@ packages: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - dev: true - /string.prototype.matchall@4.0.10: - resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + /string.prototype.matchall@4.0.8: + resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 get-intrinsic: 1.2.1 has-symbols: 1.0.3 internal-slot: 1.0.5 - regexp.prototype.flags: 1.5.1 - set-function-name: 2.0.1 + regexp.prototype.flags: 1.5.0 side-channel: 1.0.4 - /string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + /string.prototype.trim@1.2.7: + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 - /string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + /string.prototype.trimend@1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + /string.prototype.trimstart@1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -11411,6 +16151,15 @@ packages: dependencies: safe-buffer: 5.2.1 + /stringify-object@3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + dev: false + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -11422,7 +16171,11 @@ packages: engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 - dev: true + + /strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + dev: false /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} @@ -11442,7 +16195,6 @@ packages: /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - dev: true /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} @@ -11463,6 +16215,11 @@ packages: min-indent: 1.0.1 dev: true + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: false + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -11478,7 +16235,13 @@ packages: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: false - /styled-jsx@5.1.1(@babel/core@7.22.20)(react@18.2.0): + /style-to-object@0.3.0: + resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} + dependencies: + inline-style-parser: 0.1.1 + dev: false + + /styled-jsx@5.1.1(@babel/core@7.22.15)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -11491,11 +16254,33 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 client-only: 0.0.1 react: 18.2.0 dev: false + /stylehacks@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.14 + postcss-selector-parser: 6.0.13 + dev: false + + /stylehacks@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: false + /superstruct@0.14.2: resolution: {integrity: sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==} dev: false @@ -11527,11 +16312,41 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + /svg-parser@2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + dev: false + + /svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + dev: false + /symbol-observable@2.0.3: resolution: {integrity: sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==} engines: {node: '>=0.10'} dev: false + /synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.3.1 + tslib: 2.5.2 + + /tapable@1.1.3: + resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} + engines: {node: '>=6'} + dev: false + /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -11554,7 +16369,7 @@ packages: engines: {node: '>=8'} dev: true - /terser-webpack-plugin@5.3.9(webpack@5.88.2): + /terser-webpack-plugin@5.3.9(webpack@5.88.1): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -11574,12 +16389,11 @@ packages: jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 - terser: 5.19.4 - webpack: 5.88.2(webpack-cli@5.1.4) - dev: true + terser: 5.19.2 + webpack: 5.88.1(webpack-cli@5.1.4) - /terser@5.19.4: - resolution: {integrity: sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==} + /terser@5.19.2: + resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} engines: {node: '>=10'} hasBin: true dependencies: @@ -11587,7 +16401,6 @@ packages: acorn: 8.10.0 commander: 2.20.3 source-map-support: 0.5.21 - dev: true /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} @@ -11625,11 +16438,29 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + /thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + dev: false + /timed-out@4.0.1: resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} engines: {node: '>=0.10.0'} dev: false + /tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + + /tiny-invariant@1.3.1: + resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} + dev: false + + /tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + dev: false + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -11648,6 +16479,11 @@ packages: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} + /to-readable-stream@1.0.0: + resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} + engines: {node: '>=6'} + dev: false + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -11658,6 +16494,16 @@ packages: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} dev: false + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: false + + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: false + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -11673,8 +16519,21 @@ packages: escape-string-regexp: 1.0.5 dev: false - /ts-jest@29.1.1(@babel/core@7.22.20)(jest@29.7.0)(typescript@4.9.5): - resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} + /trim-trailing-lines@1.1.4: + resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} + dev: false + + /trim@0.0.1: + resolution: {integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==} + deprecated: Use String.prototype.trim() instead + dev: false + + /trough@1.0.5: + resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} + dev: false + + /ts-jest@29.1.0(@babel/core@7.22.15)(jest@29.5.0)(typescript@4.9.5): + resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -11694,20 +16553,20 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.15 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@18.17.17)(ts-node@10.9.1) - jest-util: 29.7.0 + jest: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.5.4 + semver: 7.5.2 typescript: 4.9.5 yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.17.17)(typescript@4.9.5): + /ts-node@10.9.1(@types/node@18.16.18)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -11725,8 +16584,8 @@ packages: '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 18.17.17 + '@tsconfig/node16': 1.0.3 + '@types/node': 18.16.18 acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -11749,8 +16608,8 @@ packages: /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + /tslib@2.5.2: + resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==} /tsutils@3.21.0(typescript@4.9.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -11835,44 +16694,25 @@ packages: engines: {node: '>=8'} dev: true - /type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - dev: true - - /typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - is-typed-array: 1.1.12 - - /typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 + /type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + dev: false - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} - engines: {node: '>= 0.4'} + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 + media-typer: 0.3.0 + mime-types: 2.1.35 + dev: false /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.2 for-each: 0.3.3 - is-typed-array: 1.1.12 + is-typed-array: 1.1.10 /typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} @@ -11891,6 +16731,10 @@ packages: hasBin: true dev: true + /ua-parser-js@1.0.36: + resolution: {integrity: sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw==} + dev: false + /uglify-js@3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} engines: {node: '>=0.8.0'} @@ -11920,10 +16764,16 @@ packages: through: 2.3.8 dev: false + /unherit@1.1.3: + resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} + dependencies: + inherits: 2.0.4 + xtend: 4.0.2 + dev: false + /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} - dev: true /unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} @@ -11931,17 +16781,94 @@ packages: dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 - dev: true /unicode-match-property-value-ecmascript@2.1.0: resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} engines: {node: '>=4'} - dev: true /unicode-property-aliases-ecmascript@2.1.0: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} - dev: true + + /unified@9.2.0: + resolution: {integrity: sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==} + dependencies: + '@types/unist': 2.0.8 + bail: 1.0.5 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 2.1.0 + trough: 1.0.5 + vfile: 4.2.1 + dev: false + + /unified@9.2.2: + resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} + dependencies: + '@types/unist': 2.0.8 + bail: 1.0.5 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 2.1.0 + trough: 1.0.5 + vfile: 4.2.1 + dev: false + + /unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + dependencies: + crypto-random-string: 2.0.0 + dev: false + + /unist-builder@2.0.3: + resolution: {integrity: sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==} + dev: false + + /unist-util-generated@1.1.6: + resolution: {integrity: sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==} + dev: false + + /unist-util-is@4.1.0: + resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} + dev: false + + /unist-util-position@3.1.0: + resolution: {integrity: sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==} + dev: false + + /unist-util-remove-position@2.0.1: + resolution: {integrity: sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==} + dependencies: + unist-util-visit: 2.0.3 + dev: false + + /unist-util-remove@2.1.0: + resolution: {integrity: sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==} + dependencies: + unist-util-is: 4.1.0 + dev: false + + /unist-util-stringify-position@2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + dependencies: + '@types/unist': 2.0.8 + dev: false + + /unist-util-visit-parents@3.1.1: + resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} + dependencies: + '@types/unist': 2.0.8 + unist-util-is: 4.1.0 + dev: false + + /unist-util-visit@2.0.3: + resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} + dependencies: + '@types/unist': 2.0.8 + unist-util-is: 4.1.0 + unist-util-visit-parents: 3.1.1 + dev: false /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} @@ -11952,6 +16879,11 @@ packages: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: false + /update-browserslist-db@1.0.11(browserslist@4.21.10): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true @@ -11962,11 +16894,48 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 + /update-notifier@5.1.0: + resolution: {integrity: sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==} + engines: {node: '>=10'} + dependencies: + boxen: 5.1.2 + chalk: 4.1.2 + configstore: 5.0.1 + has-yarn: 2.1.0 + import-lazy: 2.1.0 + is-ci: 2.0.0 + is-installed-globally: 0.4.0 + is-npm: 5.0.0 + is-yarn-global: 0.3.0 + latest-version: 5.1.0 + pupa: 2.1.1 + semver: 7.5.2 + semver-diff: 3.1.1 + xdg-basedir: 4.0.0 + dev: false + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 + /url-loader@4.1.1(file-loader@6.2.0)(webpack@5.88.1): + resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + file-loader: '*' + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + file-loader: + optional: true + dependencies: + file-loader: 6.2.0(webpack@5.88.1) + loader-utils: 2.0.4 + mime-types: 2.1.35 + schema-utils: 3.3.0 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + /url-parse-lax@3.0.0: resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} engines: {node: '>=4'} @@ -11979,7 +16948,7 @@ packages: engines: {node: '>= 4'} dev: false - /use-callback-ref@1.3.0(@types/react@18.2.22)(react@18.2.0): + /use-callback-ref@1.3.0(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: @@ -11989,12 +16958,47 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.22 + '@types/react': 18.2.12 react: 18.2.0 - tslib: 2.6.2 + tslib: 2.5.2 + dev: false + + /use-composed-ref@1.3.0(react@17.0.2): + resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 17.0.2 dev: false - /use-sidecar@1.1.2(@types/react@18.2.22)(react@18.2.0): + /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.12)(react@17.0.2): + resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.12 + react: 17.0.2 + dev: false + + /use-latest@1.2.1(@types/react@18.2.12)(react@17.0.2): + resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.12 + react: 17.0.2 + use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.12)(react@17.0.2) + dev: false + + /use-sidecar@1.1.2(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -12004,10 +17008,18 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.22 + '@types/react': 18.2.12 detect-node-es: 1.1.0 react: 18.2.0 - tslib: 2.6.2 + tslib: 2.5.2 + dev: false + + /use-sync-external-store@1.2.0(react@17.0.2): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 17.0.2 dev: false /use-sync-external-store@1.2.0(react@18.2.0): @@ -12023,7 +17035,7 @@ packages: engines: {node: '>=6.14.2'} requiresBuild: true dependencies: - node-gyp-build: 4.6.1 + node-gyp-build: 4.6.0 dev: false /util-deprecate@1.0.2: @@ -12035,8 +17047,21 @@ packages: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 - is-typed-array: 1.1.12 - which-typed-array: 1.1.11 + is-typed-array: 1.1.10 + which-typed-array: 1.1.9 + dev: false + + /utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + dev: false + + /utility-types@3.10.0: + resolution: {integrity: sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==} + engines: {node: '>= 4'} + + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} dev: false /uuid@8.3.2: @@ -12071,55 +17096,70 @@ packages: builtins: 5.0.1 dev: false - /valtio@1.11.2(@types/react@18.2.22)(react@18.2.0): - resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} + /valtio@1.10.6(react@18.2.0): + resolution: {integrity: sha512-SxN1bHUmdhW6V8qsQTpCgJEwp7uHbntuH0S9cdLQtiohuevwBksbpXjwj5uDMA7bLwg1WKyq9sEpZrx3TIMrkA==} engines: {node: '>=12.20.0'} peerDependencies: - '@types/react': '>=16.8' react: '>=16.8' peerDependenciesMeta: - '@types/react': - optional: true react: optional: true dependencies: - '@types/react': 18.2.22 proxy-compare: 2.5.1 react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) dev: false + /value-equal@1.0.1: + resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} + dev: false + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} dev: false - /viem@1.10.14(typescript@4.9.5): - resolution: {integrity: sha512-GRwFXLFr+/7+7nYYkABgHom3zMIE3DdxZ/DP78QlYWUanpjUV5IebxMOm6pfKD+ZAj3vf9YPAmz+WogjiUgDWw==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true + /vfile-location@3.2.0: + resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==} + dev: false + + /vfile-message@2.0.4: + resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} dependencies: - '@adraffy/ens-normalize': 1.9.4 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/bip32': 1.3.2 - '@scure/bip39': 1.2.1 - '@types/ws': 8.5.5 - abitype: 0.9.8(typescript@4.9.5) - isomorphic-ws: 5.0.0(ws@8.13.0) - typescript: 4.9.5 - ws: 8.13.0 + '@types/unist': 2.0.8 + unist-util-stringify-position: 2.0.3 + dev: false + + /vfile@4.2.1: + resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} + dependencies: + '@types/unist': 2.0.8 + is-buffer: 2.0.5 + unist-util-stringify-position: 2.0.3 + vfile-message: 2.0.4 + dev: false + + /viem@1.0.6(typescript@4.9.5): + resolution: {integrity: sha512-NOVDREj8bWHajuP5Nw6edd0v3auuGWvLHGScmo9OOt1l7g3f1xMQxPA6JlhNmWXzoHjzzxt/5SorBn2DQ6N6Sg==} + dependencies: + '@adraffy/ens-normalize': 1.9.0 + '@noble/curves': 1.0.0 + '@noble/hashes': 1.3.0 + '@scure/bip32': 1.3.0 + '@scure/bip39': 1.2.0 + '@wagmi/chains': 1.1.0(typescript@4.9.5) + abitype: 0.8.7(typescript@4.9.5) + isomorphic-ws: 5.0.0(ws@8.12.0) + ws: 8.12.0 transitivePeerDependencies: - bufferutil + - typescript - utf-8-validate - zod dev: false - /wagmi@1.4.2(@types/react@18.2.22)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(viem@1.10.14): - resolution: {integrity: sha512-Cxu0LatB44stqHoqdc6dgsTb9woYH1bEquJFq9PbTkePmnRCvceAD4aFUREUTaBWzIBcouhFlanWweDzEnb3mg==} + /wagmi@1.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(viem@1.0.6): + resolution: {integrity: sha512-VSSBEVDMZAWIcWTlewC1XypHsWa1FdkdYXWdgu5pqTCqnW6JKWGsR5TbQY3poCIQoC7B2okisElZT2oVSYbA5Q==} peerDependencies: react: '>=17.0.0' typescript: '>=5.0.4' @@ -12128,19 +17168,19 @@ packages: typescript: optional: true dependencies: - '@tanstack/query-sync-storage-persister': 4.35.3 - '@tanstack/react-query': 4.35.3(react-dom@18.2.0)(react@18.2.0) - '@tanstack/react-query-persist-client': 4.35.5(@tanstack/react-query@4.35.3) - '@wagmi/core': 1.4.2(@types/react@18.2.22)(react@18.2.0)(typescript@4.9.5)(viem@1.10.14) + '@tanstack/query-sync-storage-persister': 4.29.7 + '@tanstack/react-query': 4.29.7(react-dom@18.2.0)(react@18.2.0) + '@tanstack/react-query-persist-client': 4.29.7(@tanstack/react-query@4.29.7) + '@wagmi/core': 1.2.0(react@18.2.0)(typescript@4.9.5)(viem@1.0.6) abitype: 0.8.7(typescript@4.9.5) react: 18.2.0 typescript: 4.9.5 use-sync-external-store: 1.2.0(react@18.2.0) - viem: 1.10.14(typescript@4.9.5) + viem: 1.0.6(typescript@4.9.5) transitivePeerDependencies: - '@react-native-async-storage/async-storage' - - '@types/react' - bufferutil + - debug - encoding - immer - lokijs @@ -12151,6 +17191,20 @@ packages: - zod dev: false + /wait-on@6.0.1: + resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} + engines: {node: '>=10.0.0'} + hasBin: true + dependencies: + axios: 0.25.0 + joi: 17.10.2 + lodash: 4.17.21 + minimist: 1.2.8 + rxjs: 7.8.1 + transitivePeerDependencies: + - debug + dev: false + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: @@ -12163,17 +17217,53 @@ packages: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - dev: true + + /wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + dependencies: + minimalistic-assert: 1.0.1 + dev: false /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 + /web-namespaces@1.1.4: + resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==} + dev: false + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - /webpack-cli@5.1.4(webpack@5.88.2): + /webpack-bundle-analyzer@4.9.1: + resolution: {integrity: sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==} + engines: {node: '>= 10.13.0'} + hasBin: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + acorn: 8.10.0 + acorn-walk: 8.2.0 + commander: 7.2.0 + escape-string-regexp: 4.0.0 + gzip-size: 6.0.0 + is-plain-object: 5.0.0 + lodash.debounce: 4.0.8 + lodash.escape: 4.0.1 + lodash.flatten: 4.4.0 + lodash.invokemap: 4.6.0 + lodash.pullall: 4.2.0 + lodash.uniqby: 4.7.0 + opener: 1.5.2 + picocolors: 1.0.0 + sirv: 2.0.3 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /webpack-cli@5.1.4(webpack@5.88.1): resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} engines: {node: '>=14.15.0'} hasBin: true @@ -12191,9 +17281,9 @@ packages: optional: true dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.88.2) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.88.2) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.88.2) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.88.1) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.88.1) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.88.1) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.3 @@ -12202,9 +17292,73 @@ packages: import-local: 3.1.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.88.2(webpack-cli@5.1.4) + webpack: 5.88.1(webpack-cli@5.1.4) webpack-merge: 5.9.0 - dev: true + + /webpack-dev-middleware@5.3.3(webpack@5.88.1): + resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.2.0 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + + /webpack-dev-server@4.15.1(webpack@5.88.1): + resolution: {integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==} + engines: {node: '>= 12.13.0'} + hasBin: true + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + dependencies: + '@types/bonjour': 3.5.11 + '@types/connect-history-api-fallback': 1.5.1 + '@types/express': 4.17.17 + '@types/serve-index': 1.9.1 + '@types/serve-static': 1.15.2 + '@types/sockjs': 0.3.33 + '@types/ws': 8.5.5 + ansi-html-community: 0.0.8 + bonjour-service: 1.1.1 + chokidar: 3.5.3 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.18.2 + graceful-fs: 4.2.11 + html-entities: 2.4.0 + http-proxy-middleware: 2.0.6(@types/express@4.17.17) + ipaddr.js: 2.1.0 + launch-editor: 2.6.0 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.2.0 + selfsigned: 2.1.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack: 5.88.1(webpack-cli@5.1.4) + webpack-dev-middleware: 5.3.3(webpack@5.88.1) + ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: false /webpack-merge@5.9.0: resolution: {integrity: sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==} @@ -12212,15 +17366,13 @@ packages: dependencies: clone-deep: 4.0.1 wildcard: 2.0.1 - dev: true /webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - dev: true - /webpack@5.88.2(webpack-cli@5.1.4): - resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} + /webpack@5.88.1(webpack-cli@5.1.4): + resolution: {integrity: sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -12239,7 +17391,7 @@ packages: browserslist: 4.21.10 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 - es-module-lexer: 1.3.1 + es-module-lexer: 1.3.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -12250,15 +17402,41 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(webpack@5.88.2) + terser-webpack-plugin: 5.3.9(webpack@5.88.1) watchpack: 2.4.0 - webpack-cli: 5.1.4(webpack@5.88.2) + webpack-cli: 5.1.4(webpack@5.88.1) webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - dev: true + + /webpackbar@5.0.2(webpack@5.88.1): + resolution: {integrity: sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==} + engines: {node: '>=12'} + peerDependencies: + webpack: 3 || 4 || 5 + dependencies: + chalk: 4.1.2 + consola: 2.15.3 + pretty-time: 1.1.0 + std-env: 3.4.3 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + + /websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + dependencies: + http-parser-js: 0.5.8 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + dev: false + + /websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + dev: false /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -12275,23 +17453,6 @@ packages: is-string: 1.0.7 is-symbol: 1.0.4 - /which-builtin-type@1.1.3: - resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} - engines: {node: '>= 0.4'} - dependencies: - function.prototype.name: 1.1.6 - has-tostringtag: 1.0.0 - is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.0.2 - is-generator-function: 1.0.10 - is-regex: 1.1.4 - is-weakref: 1.0.2 - isarray: 2.0.5 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.11 - /which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: @@ -12311,8 +17472,8 @@ packages: path-exists: 4.0.0 dev: true - /which-typed-array@1.1.11: - resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} + /which-typed-array@1.1.9: + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 @@ -12320,13 +17481,13 @@ packages: for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 + is-typed-array: 1.1.10 /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true dependencies: isexe: 2.0.0 - dev: true /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -12335,9 +17496,22 @@ packages: dependencies: isexe: 2.0.0 + /widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + dependencies: + string-width: 4.2.3 + dev: false + + /widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + dev: false + /wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - dev: true /wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} @@ -12362,7 +17536,6 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true /wrap-ansi@8.1.0: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} @@ -12371,11 +17544,20 @@ packages: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 - dev: true + dev: false /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + /write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + dev: false + /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -12384,6 +17566,19 @@ packages: signal-exit: 3.0.7 dev: true + /ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + /ws@7.5.9: resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} @@ -12397,8 +17592,8 @@ packages: optional: true dev: false - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + /ws@8.12.0: + resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -12410,8 +17605,8 @@ packages: optional: true dev: false - /ws@8.14.1(bufferutil@4.0.7)(utf-8-validate@5.0.10): - resolution: {integrity: sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==} + /ws@8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10): + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -12426,6 +17621,18 @@ packages: utf-8-validate: 5.0.10 dev: false + /xdg-basedir@4.0.0: + resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} + engines: {node: '>=8'} + dev: false + + /xml-js@1.6.11: + resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} + hasBin: true + dependencies: + sax: 1.2.4 + dev: false + /xstream@11.14.0: resolution: {integrity: sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==} dependencies: @@ -12459,7 +17666,6 @@ packages: /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - dev: true /yaml@2.3.1: resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} @@ -12524,7 +17730,7 @@ packages: require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 - yargs-parser: 20.2.4 + yargs-parser: 20.2.9 dev: true /yargs@17.7.2: @@ -12556,22 +17762,22 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - /zustand@4.4.1(@types/react@18.2.22)(react@18.2.0): - resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} + /zustand@4.3.8(react@18.2.0): + resolution: {integrity: sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg==} engines: {node: '>=12.7.0'} peerDependencies: - '@types/react': '>=16.8' immer: '>=9.0' react: '>=16.8' peerDependenciesMeta: - '@types/react': - optional: true immer: optional: true react: optional: true dependencies: - '@types/react': 18.2.22 react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) dev: false + + /zwitch@1.0.5: + resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} + dev: false diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c9494909..0de6cbe0 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,4 @@ packages: - 'examples/*' - 'packages/*' + - 'doc-site' From 07aaf8cf2a0c7759af295e814df477eae1286cc9 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 26 Sep 2023 01:17:51 +0800 Subject: [PATCH 260/433] chore: Pre exit (#351) --- .changeset/pre.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 0463e279..0ddc6192 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -1,5 +1,5 @@ { - "mode": "pre", + "mode": "exit", "tag": "alpha", "initialVersions": { "@demo/wallet": "0.0.6", From 77b564e10de061da5a7bcc3add172c1377e6e3e0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 26 Sep 2023 01:21:11 +0800 Subject: [PATCH 261/433] chore: [ci] release (#352) Co-authored-by: github-actions[bot] --- .changeset/great-teachers-thank.md | 8 -------- .changeset/pre.json | 16 ---------------- .changeset/tame-pandas-deny.md | 8 -------- examples/nextjs/CHANGELOG.md | 10 ++++++++++ examples/nextjs/package.json | 2 +- examples/nodejs/CHANGELOG.md | 10 ++++++++++ examples/nodejs/package.json | 2 +- packages/create-gnfd-app/CHANGELOG.md | 12 ++++++++++++ packages/create-gnfd-app/package.json | 2 +- packages/file-handle/CHANGELOG.md | 12 ++++++++++++ packages/file-handle/package.json | 2 +- packages/js-sdk/CHANGELOG.md | 17 +++++++++++++++++ packages/js-sdk/package.json | 2 +- packages/zk-crypto/CHANGELOG.md | 12 ++++++++++++ packages/zk-crypto/package.json | 2 +- 15 files changed, 79 insertions(+), 38 deletions(-) delete mode 100644 .changeset/great-teachers-thank.md delete mode 100644 .changeset/pre.json delete mode 100644 .changeset/tame-pandas-deny.md diff --git a/.changeset/great-teachers-thank.md b/.changeset/great-teachers-thank.md deleted file mode 100644 index 10b5078f..00000000 --- a/.changeset/great-teachers-thank.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@bnb-chain/create-gnfd-app': patch -'@bnb-chain/greenfiled-file-handle': patch -'@bnb-chain/greenfield-zk-crypto': patch -'@bnb-chain/greenfield-js-sdk': patch ---- - -chore: Update package.json diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index 0ddc6192..00000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "mode": "exit", - "tag": "alpha", - "initialVersions": { - "@demo/wallet": "0.0.6", - "@demo/nodejs": "0.0.9", - "@bnb-chain/greenfield-js-sdk": "0.2.5", - "@bnb-chain/create-gnfd-app": "0.0.2", - "@bnb-chain/greenfiled-file-handle": "0.2.1", - "@bnb-chain/greenfield-zk-crypto": "0.0.3" - }, - "changesets": [ - "great-teachers-thank", - "tame-pandas-deny" - ] -} diff --git a/.changeset/tame-pandas-deny.md b/.changeset/tame-pandas-deny.md deleted file mode 100644 index c15b86be..00000000 --- a/.changeset/tame-pandas-deny.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@bnb-chain/create-gnfd-app': patch -'@bnb-chain/greenfiled-file-handle': patch -'@bnb-chain/greenfield-zk-crypto': patch -'@bnb-chain/greenfield-js-sdk': patch ---- - -chore: Update deps diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index 2cedbb81..522fa09b 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,15 @@ # @demo/wallet +## 0.0.7 + +### Patch Changes + +- Updated dependencies + [[`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9), + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1)]: + - @bnb-chain/greenfiled-file-handle@0.2.2 + - @bnb-chain/greenfield-js-sdk@0.2.6 + ## 0.0.7-alpha.0 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index a361d711..52195e38 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.7-alpha.0", + "version": "0.0.7", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index dd21585c..817717f5 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,15 @@ # @demo/nodejs +## 0.0.10 + +### Patch Changes + +- Updated dependencies + [[`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9), + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1)]: + - @bnb-chain/greenfiled-file-handle@0.2.2 + - @bnb-chain/greenfield-js-sdk@0.2.6 + ## 0.0.10-alpha.0 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 7335576b..8c489809 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.10-alpha.0", + "version": "0.0.10", "type": "commonjs", "private": true, "scripts": {}, diff --git a/packages/create-gnfd-app/CHANGELOG.md b/packages/create-gnfd-app/CHANGELOG.md index 5411eae4..9f9def61 100644 --- a/packages/create-gnfd-app/CHANGELOG.md +++ b/packages/create-gnfd-app/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/create-gnfd-app +## 0.0.3 + +### Patch Changes + +- [#346](https://github.com/bnb-chain/greenfield-js-sdk/pull/346) + [`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update package.json + +- [#347](https://github.com/bnb-chain/greenfield-js-sdk/pull/347) + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + ## 0.0.3-alpha.0 ### Patch Changes diff --git a/packages/create-gnfd-app/package.json b/packages/create-gnfd-app/package.json index 15cb1451..23a8227e 100644 --- a/packages/create-gnfd-app/package.json +++ b/packages/create-gnfd-app/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/create-gnfd-app", - "version": "0.0.3-alpha.0", + "version": "0.0.3", "description": "help you create greenfield project quickly", "main": "index.js", "bin": { diff --git a/packages/file-handle/CHANGELOG.md b/packages/file-handle/CHANGELOG.md index d0f3230f..ba680285 100644 --- a/packages/file-handle/CHANGELOG.md +++ b/packages/file-handle/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/greenfiled-file-handle +## 0.2.2 + +### Patch Changes + +- [#346](https://github.com/bnb-chain/greenfield-js-sdk/pull/346) + [`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update package.json + +- [#347](https://github.com/bnb-chain/greenfield-js-sdk/pull/347) + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + ## 0.2.2-alpha.0 ### Patch Changes diff --git a/packages/file-handle/package.json b/packages/file-handle/package.json index 7fa08201..3aa0f327 100644 --- a/packages/file-handle/package.json +++ b/packages/file-handle/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfiled-file-handle", - "version": "0.2.2-alpha.0", + "version": "0.2.2", "description": "checksums wasm package", "module": "./dist/browser/esm/index.js", "main": "./dist/node/index.js", diff --git a/packages/js-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md index ac4d161f..db60a516 100644 --- a/packages/js-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,22 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.6 + +### Patch Changes + +- [#346](https://github.com/bnb-chain/greenfield-js-sdk/pull/346) + [`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update package.json + +- [#347](https://github.com/bnb-chain/greenfield-js-sdk/pull/347) + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + +- Updated dependencies + [[`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9), + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1)]: + - @bnb-chain/greenfield-zk-crypto@0.0.4 + ## 0.2.6-alpha.0 ### Patch Changes diff --git a/packages/js-sdk/package.json b/packages/js-sdk/package.json index 29617676..3c9fff1a 100644 --- a/packages/js-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.6-alpha.0", + "version": "0.2.6", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", diff --git a/packages/zk-crypto/CHANGELOG.md b/packages/zk-crypto/CHANGELOG.md index b242551b..eb0f4294 100644 --- a/packages/zk-crypto/CHANGELOG.md +++ b/packages/zk-crypto/CHANGELOG.md @@ -1,5 +1,17 @@ # @bnb-chain/zk-crypto +## 0.0.4 + +### Patch Changes + +- [#346](https://github.com/bnb-chain/greenfield-js-sdk/pull/346) + [`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update package.json + +- [#347](https://github.com/bnb-chain/greenfield-js-sdk/pull/347) + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + ## 0.0.4-alpha.0 ### Patch Changes diff --git a/packages/zk-crypto/package.json b/packages/zk-crypto/package.json index 0878cc99..838bc78f 100644 --- a/packages/zk-crypto/package.json +++ b/packages/zk-crypto/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-zk-crypto", - "version": "0.0.4-alpha.0", + "version": "0.0.4", "description": "Zk crypto wasm module", "scripts": { "predev": "rimraf ./dist", From ab034b15fe3b73bfa022b48fa8832c2c8e3ea4af Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 26 Sep 2023 11:04:49 +0800 Subject: [PATCH 262/433] release 0.2.6 (#353) * feat: add offchainauth method (#64) * feat: Add offchainauth method * feat: Compatiable old get approval method * Create ten-suits-crash.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> Co-authored-by: rrr523 * chore: [ci] release (alpha) (#66) Co-authored-by: github-actions[bot] * feat: Add Sp params (#67) * feat: Optimize get approval types and add throw error (#70) * feat: Optimize get approval types and add throw error * Create fluffy-snails-explain.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#68) Co-authored-by: github-actions[bot] * chore: Update example without greenfield-cosmos-types (#71) * fix: Return Promise (#72) * fix: Return Promise * Create strong-snails-count.md * chore: [ci] release (alpha) (#73) Co-authored-by: github-actions[bot] * fix: Create Group message (#74) * fix: Create Group message * Create young-bears-scream.md * feat: Add Storage Params API (#76) * chore: [ci] release (alpha) (#75) Co-authored-by: github-actions[bot] * Chore/group example (#77) * feat: Group API * chore: Group and Mirror example * chore: [ci] release (alpha) (#78) Co-authored-by: github-actions[bot] * chore: Update example (#79) * feat: Add query param to ListObjects API for display folder. (#80) * feat: Add query params to ListObjects API for folder * Create clean-dogs-joke.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/group (#82) * chore: Update Example * feat: Add some group API * Create sweet-feet-hide.md * chore: [ci] release (alpha) (#81) Co-authored-by: github-actions[bot] * Update objectt.ts (#83) * Update objectt.ts add missing resp params * Create cold-suns-accept.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/policy (#86) * feat: Policy API * fix: Object API name * Create pretty-bulldogs-notice.md * feat: Migrate out zkbas-js-sdk and upate the sign msg format (#85) * feat: Migrate out zkbas-js-sdk and upate the sign msg format * Create fluffy-pumas-yawn.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#84) Co-authored-by: github-actions[bot] * fix: Head Group (#96) * fix: Head Group * Create cyan-ties-cross.md * feat: Multi Send Txs (#97) * feat: Multi Send Txs * Create lovely-knives-smile.md * chore: [ci] release (alpha) (#98) Co-authored-by: github-actions[bot] * feat: Allow to have sp auth fail (#101) * feat: Allow to have sp auth fail * fix: Replace endpoint with address when auth failed * Create tidy-dodos-care.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: TS lib (#104) * feat: Sync cosmos types (#106) * chore: [ci] release (alpha) (#102) Co-authored-by: github-actions[bot] * chore: Use rainbowkit simply wallet of example (#107) * Feat/update group (#108) * feat: Update group extra api * chore: Test group api * Create quiet-planets-shop.md * chore: [ci] release (alpha) (#109) Co-authored-by: github-actions[bot] * Feat/sp listgroup (#110) * feat: Add sp.listGroup API * chore: Update Example * chore: [ci] release (alpha) (#111) Co-authored-by: github-actions[bot] * chore: Update Example (#112) * chore: Update Examples (#114) * chore(dep): Add cross-env * chore(dep): Npm script * chore: Pnpm engines * chore: Codesandbox Example (#115) * chore(docs): Update stackblitz url (#116) * refactor: CreateFoler API params (#119) * chore: [ci] release (alpha) (#120) Co-authored-by: github-actions[bot] * feat: TimeStamp format * chore: [ci] release (alpha) (#121) Co-authored-by: github-actions[bot] * Refactor/policy (#122) * refactor: Bucket policy * refactor: Bucket policy * chore: [ci] release (alpha) (#123) Co-authored-by: github-actions[bot] * chore(example): BucketPolicy (#127) * Chore/update policy example (#128) * chore(example): BucketPolicy * chore(example): BucketPolicy * Feat/gashub (#129) * feat: Add gas hub API * refactor: TypeUrl as constants * chore: [ci] release (alpha) (#130) Co-authored-by: github-actions[bot] * feat: Export queryClient (#131) * feat: Export queryClient * Create calm-birds-sleep.md * Update README.md * fix: Compatiable net error (#133) * fix: Compatiable net error * Create old-roses-play.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#132) Co-authored-by: github-actions[bot] * Test/test case (#134) * feat: Isomorphic fetch * test: Uint test and e2e test * feat: Sync Types (#136) * feat: Sync Types * Create weak-hounds-sell.md * chore: [ci] release (alpha) (#135) Co-authored-by: github-actions[bot] * Fix/sort types (#137) * feat: Sort EIP712 message field * feat: Extra field * Create happy-humans-thank.md * chore: [ci] release (alpha) (#138) Co-authored-by: github-actions[bot] * feat: Bump version (#139) * chore: [ci] release (alpha) (#140) Co-authored-by: github-actions[bot] * feat: Split approval and simulate (#141) * chore: [ci] release (alpha) (#142) Co-authored-by: github-actions[bot] * Revert "feat: Split approval and simulate" (#143) * Revert "feat: Split approval and simulate" This reverts commit 76defa7f31b7f2d4683f8ed04e8dc2786dd1ef6c. * Create dirty-parrots-hear.md * chore: [ci] release (alpha) (#144) Co-authored-by: github-actions[bot] * Chore/test case (#145) * chore(test): Remove private key from config * chore: Test CI * chore: Update rainkit version (#146) * feat: Query Lock Fee API (#147) * feat: Query Lock Fee API * Create green-avocados-jump.md * chore: [ci] release (alpha) (#148) Co-authored-by: github-actions[bot] * Update bucket.ts (#149) * Update bucket.ts throw error * Create hot-countries-begin.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#150) Co-authored-by: github-actions[bot] * fix: Return real statuscode when call metaservice (#164) * fix: Return real statuscode when call metaservice * Create kind-eyes-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#166) Co-authored-by: github-actions[bot] * feat: Upgrade types version (#167) * chore: [ci] release (alpha) (#168) Co-authored-by: github-actions[bot] * Feat/sp exit (#169) * feat: Add Virtual Group API * feat: Compatibility createBukcet and createObject API * feat: Add Migrate bucket API * Feat/batch upload (#171) * feat: Feegrant * feat: Feegrant * Create angry-horses-enjoy.md * Feat/batch upload (#174) * feat: Feegrant * feat: Feegrant * feat: Feegrant grantAllowance API * feat: CreateObject example * feat: CreateBucket example * feat: Transfer example * feat: AuthInfoBytes add feePayer and feeGranter * feat: Add Two Apis (#179) * feat: Add Two Apis * Create mean-wombats-remain.md * chore: [ci] release (alpha) (#170) Co-authored-by: github-actions[bot] * feat AuthV1 (#182) * chore: Update example * chore: Update Example * feat: V1Auth * feat: V1Auth generate * feat: V1Auth createObject Approval * Create shaggy-experts-approve.md * Feat/com new (#186) * feat: Remove GetUserBuckets API Auth * feat: Update BucketProps type * feat: Remove listObjects api auth and update response type * feat: Remove listGroup api auth * feat: Update Types * chore: [ci] release (alpha) (#183) Co-authored-by: github-actions[bot] * feat: Offchainauth timeout reduced to 2s (#187) * feat: Offchainauth timeout reduced to 2s * Create warm-planets-exercise.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#188) Co-authored-by: github-actions[bot] * Feat/auth v1 (#189) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * Create empty-pens-sing.md * chore: [ci] release (alpha) (#190) Co-authored-by: github-actions[bot] * Feat/auth v1 (#191) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * feat: API getStorageProviderInfo params update * chore: Upgrade types * feat: GetSpURLfrom bucket * feat: Remove Sp param when create object and bucket * chore: [ci] release (alpha) (#192) Co-authored-by: github-actions[bot] * feat: Change Allwance value type (#193) * chore: Test config update * feat: Change Allowance Type * chore: [ci] release (alpha) (#194) Co-authored-by: github-actions[bot] * feat: MultiTx support private key (#195) * fix: Throw sp error code and message (#197) * fix: Throw sp error code and message * Create good-bobcats-hang.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#196) Co-authored-by: github-actions[bot] * fix: No sp available error (#200) * fix: No sp available error * Create khaki-ducks-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Opt (#198) * chore: Update Example * refactor: Replace @ethereumjs/util with @ethersproject/bytes * feat: Upload Object V1 auth * fix: CreateObjectTx content-type msg * chore: [ci] release (alpha) (#201) Co-authored-by: github-actions[bot] * feat: Extend response time to 3s (#202) * feat: Extend response time to 3s * Create orange-spiders-add.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#203) Co-authored-by: github-actions[bot] * Chore/conflict (#209) * release 0.2.2 (#204) * feat: Update Types * chore: [ci] release (alpha) * Feat/query status (#42) * fix: Return types * feat: Feegrant * fix: Pubkey typeUrl * feat: Upgrade Cosmos SDK * refactor: Simply broadcast and simulate tx * feat: Support Tx by PrivateKey * feat: Replace local message with types npm * test: Test Framework * chore: Upgrade Example wagmi version, Replace ethersjs with viem * feat: Support EIP712 callback use external provider * feat: Support dynamic provider * test: Support jest test * test: Account Query * feat: Change Tx API * feat: Type Complete * chore: Complate Example in New API * fix: Rollup bundle Support Nodejs * feat: Resolute Module (IoC) * docs: Update README * chore: [ci] release (alpha) (#43) Co-authored-by: github-actions[bot] * Feat/multi msg (#49) * feat: Multi Send * feat: Compatibility multi tx message * Revert "Feat/multi msg (#49)" (#53) This reverts commit fc3dd986646624c81f3cc43bdffb02e70d170b4f. * Update WASM (#55) * feat: Update WASM * feat: Update create object tx * docs: Update doc (#56) * feat: Pre alpha (#57) * chore: [ci] release (alpha) (#58) Co-authored-by: github-actions[bot] * Update README.md * multi msg (#59) * feat: Multi Send * feat: Compatibility multi tx message * chore: [ci] release (alpha) (#62) Co-authored-by: github-actions[bot] * fix: CreateObject Msg (#65) * feat: add offchainauth method (#64) * feat: Add offchainauth method * feat: Compatiable old get approval method * Create ten-suits-crash.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> Co-authored-by: rrr523 * chore: [ci] release (alpha) (#66) Co-authored-by: github-actions[bot] * feat: Add Sp params (#67) * feat: Optimize get approval types and add throw error (#70) * feat: Optimize get approval types and add throw error * Create fluffy-snails-explain.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#68) Co-authored-by: github-actions[bot] * chore: Update example without greenfield-cosmos-types (#71) * fix: Return Promise (#72) * fix: Return Promise * Create strong-snails-count.md * chore: [ci] release (alpha) (#73) Co-authored-by: github-actions[bot] * fix: Create Group message (#74) * fix: Create Group message * Create young-bears-scream.md * feat: Add Storage Params API (#76) * chore: [ci] release (alpha) (#75) Co-authored-by: github-actions[bot] * Chore/group example (#77) * feat: Group API * chore: Group and Mirror example * chore: [ci] release (alpha) (#78) Co-authored-by: github-actions[bot] * chore: Update example (#79) * feat: Add query param to ListObjects API for display folder. (#80) * feat: Add query params to ListObjects API for folder * Create clean-dogs-joke.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/group (#82) * chore: Update Example * feat: Add some group API * Create sweet-feet-hide.md * chore: [ci] release (alpha) (#81) Co-authored-by: github-actions[bot] * Update objectt.ts (#83) * Update objectt.ts add missing resp params * Create cold-suns-accept.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/policy (#86) * feat: Policy API * fix: Object API name * Create pretty-bulldogs-notice.md * feat: Migrate out zkbas-js-sdk and upate the sign msg format (#85) * feat: Migrate out zkbas-js-sdk and upate the sign msg format * Create fluffy-pumas-yawn.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#84) Co-authored-by: github-actions[bot] * fix: Head Group (#96) * fix: Head Group * Create cyan-ties-cross.md * feat: Multi Send Txs (#97) * feat: Multi Send Txs * Create lovely-knives-smile.md * chore: [ci] release (alpha) (#98) Co-authored-by: github-actions[bot] * feat: Allow to have sp auth fail (#101) * feat: Allow to have sp auth fail * fix: Replace endpoint with address when auth failed * Create tidy-dodos-care.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: TS lib (#104) * feat: Sync cosmos types (#106) * chore: [ci] release (alpha) (#102) Co-authored-by: github-actions[bot] * chore: Use rainbowkit simply wallet of example (#107) * Feat/update group (#108) * feat: Update group extra api * chore: Test group api * Create quiet-planets-shop.md * chore: [ci] release (alpha) (#109) Co-authored-by: github-actions[bot] * Feat/sp listgroup (#110) * feat: Add sp.listGroup API * chore: Update Example * chore: [ci] release (alpha) (#111) Co-authored-by: github-actions[bot] * chore: Update Example (#112) * chore: Update Examples (#114) * chore(dep): Add cross-env * chore(dep): Npm script * chore: Pnpm engines * chore: Codesandbox Example (#115) * chore(docs): Update stackblitz url (#116) * refactor: CreateFoler API params (#119) * chore: [ci] release (alpha) (#120) Co-authored-by: github-actions[bot] * feat: TimeStamp format * chore: [ci] release (alpha) (#121) Co-authored-by: github-actions[bot] * Refactor/policy (#122) * refactor: Bucket policy * refactor: Bucket policy * chore: [ci] release (alpha) (#123) Co-authored-by: github-actions[bot] * chore(example): BucketPolicy (#127) * Chore/update policy example (#128) * chore(example): BucketPolicy * chore(example): BucketPolicy * Feat/gashub (#129) * feat: Add gas hub API * refactor: TypeUrl as constants * chore: [ci] release (alpha) (#130) Co-authored-by: github-actions[bot] * feat: Export queryClient (#131) * feat: Export queryClient * Create calm-birds-sleep.md * Update README.md * fix: Compatiable net error (#133) * fix: Compatiable net error * Create old-roses-play.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#132) Co-authored-by: github-actions[bot] * Test/test case (#134) * feat: Isomorphic fetch * test: Uint test and e2e test * feat: Sync Types (#136) * feat: Sync Types * Create weak-hounds-sell.md * chore: [ci] release (alpha) (#135) Co-authored-by: github-actions[bot] * Fix/sort types (#137) * feat: Sort EIP712 message field * feat: Extra field * Create happy-humans-thank.md * chore: [ci] release (alpha) (#138) Co-authored-by: github-actions[bot] * feat: Bump version (#139) * chore: [ci] release (alpha) (#140) Co-authored-by: github-actions[bot] * feat: Split approval and simulate (#141) * chore: [ci] release (alpha) (#142) Co-authored-by: github-actions[bot] * Revert "feat: Split approval and simulate" (#143) * Revert "feat: Split approval and simulate" This reverts commit 76defa7f31b7f2d4683f8ed04e8dc2786dd1ef6c. * Create dirty-parrots-hear.md * chore: [ci] release (alpha) (#144) Co-authored-by: github-actions[bot] * Chore/test case (#145) * chore(test): Remove private key from config * chore: Test CI * chore: Update rainkit version (#146) * feat: Query Lock Fee API (#147) * feat: Query Lock Fee API * Create green-avocados-jump.md * chore: [ci] release (alpha) (#148) Co-authored-by: github-actions[bot] * Update bucket.ts (#149) * Update bucket.ts throw error * Create hot-countries-begin.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#150) Co-authored-by: github-actions[bot] * fix: Return real statuscode when call metaservice (#164) * fix: Return real statuscode when call metaservice * Create kind-eyes-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#166) Co-authored-by: github-actions[bot] * feat: Upgrade types version (#167) * chore: [ci] release (alpha) (#168) Co-authored-by: github-actions[bot] * Feat/sp exit (#169) * feat: Add Virtual Group API * feat: Compatibility createBukcet and createObject API * feat: Add Migrate bucket API * Feat/batch upload (#171) * feat: Feegrant * feat: Feegrant * Create angry-horses-enjoy.md * Feat/batch upload (#174) * feat: Feegrant * feat: Feegrant * feat: Feegrant grantAllowance API * feat: CreateObject example * feat: CreateBucket example * feat: Transfer example * feat: AuthInfoBytes add feePayer and feeGranter * feat: Add Two Apis (#179) * feat: Add Two Apis * Create mean-wombats-remain.md * chore: [ci] release (alpha) (#170) Co-authored-by: github-actions[bot] * feat AuthV1 (#182) * chore: Update example * chore: Update Example * feat: V1Auth * feat: V1Auth generate * feat: V1Auth createObject Approval * Create shaggy-experts-approve.md * Feat/com new (#186) * feat: Remove GetUserBuckets API Auth * feat: Update BucketProps type * feat: Remove listObjects api auth and update response type * feat: Remove listGroup api auth * feat: Update Types * chore: [ci] release (alpha) (#183) Co-authored-by: github-actions[bot] * feat: Offchainauth timeout reduced to 2s (#187) * feat: Offchainauth timeout reduced to 2s * Create warm-planets-exercise.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#188) Co-authored-by: github-actions[bot] * Feat/auth v1 (#189) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * Create empty-pens-sing.md * chore: [ci] release (alpha) (#190) Co-authored-by: github-actions[bot] * Feat/auth v1 (#191) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * feat: API getStorageProviderInfo params update * chore: Upgrade types * feat: GetSpURLfrom bucket * feat: Remove Sp param when create object and bucket * chore: [ci] release (alpha) (#192) Co-authored-by: github-actions[bot] * feat: Change Allwance value type (#193) * chore: Test config update * feat: Change Allowance Type * chore: [ci] release (alpha) (#194) Co-authored-by: github-actions[bot] * feat: MultiTx support private key (#195) * fix: Throw sp error code and message (#197) * fix: Throw sp error code and message * Create good-bobcats-hang.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#196) Co-authored-by: github-actions[bot] * fix: No sp available error (#200) * fix: No sp available error * Create khaki-ducks-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Opt (#198) * chore: Update Example * refactor: Replace @ethereumjs/util with @ethersproject/bytes * feat: Upload Object V1 auth * fix: CreateObjectTx content-type msg * chore: [ci] release (alpha) (#201) Co-authored-by: github-actions[bot] * feat: Extend response time to 3s (#202) * feat: Extend response time to 3s * Create orange-spiders-add.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#203) Co-authored-by: github-actions[bot] --------- Co-authored-by: github-actions[bot] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> * chore: Pre exit (#205) * chore: [ci] release (#206) Co-authored-by: github-actions[bot] * chore: Rename package (#207) * chore: [ci] release (#208) Co-authored-by: github-actions[bot] --------- Co-authored-by: github-actions[bot] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> * Feat/payment (#210) * feat: Add Payment query API * fix: Create Payment Account * fix: Payment disableRefund * chore: Update Example * chore: [ci] release (alpha) (#211) Co-authored-by: github-actions[bot] * chore: Update README link (#214) * fix: Return Types (#213) * chore: Update withdraw example params (#212) * chore: Update withdraw example params * feat: Zk crypto wasm package * chore: Nodejs example update package * chore: Add comment * chore: Update UMD name * feat: Upgrade file handle package * chore: Update OffchainAuth example * feat: New Zk package * chore: Changeset (#215) * chore: [ci] release (alpha) (#216) Co-authored-by: github-actions[bot] * Feat/group api (#217) * fix: Dynamic add and delete members string array * chore: Release zk crypto * chore: [ci] release (alpha) (#218) Co-authored-by: github-actions[bot] * chore: Release zk crypto (#219) * chore: [ci] release (alpha) (#220) Co-authored-by: github-actions[bot] * fix: Zk version bump (#221) * chore: [ci] release (alpha) (#222) Co-authored-by: github-actions[bot] * fix: DeepClone EIP712 (#223) * chore: [ci] release (alpha) (#224) Co-authored-by: github-actions[bot] * fix: Error try catch (#230) * chore: [ci] release (alpha) (#231) Co-authored-by: github-actions[bot] * Feat/auth (#232) * feat: Compatibility new payment api * feat: Compatibility updateGroupMember api * chore: Update example * feat: Feegrant api add timestamp * feat: EDDSA Sign * feat: Remove log (#234) * chore: [ci] release (alpha) (#233) Co-authored-by: github-actions[bot] * fix: Feegrant add expiration time (#235) * fix: Feegrant add expiration time * chore(example): GetAllowence support pagination * refactor (#236) * refactor: Tx * fix: Type * feat: Add Group API * feat: Update Sp API * feat: Bucket add authType * feat: and add params * fix: Types * feat: Change type * chore: [ci] release (alpha) (#237) Co-authored-by: github-actions[bot] * Fix/read quota (#238) * fix: CreateBucketApproval * feat: ReadQuota * chore(example): Update Example * chore: [ci] release (alpha) (#239) Co-authored-by: github-actions[bot] * XML response (#240) * feat: Return XML type * feat: CreateBucket Add payment address * chore: [ci] release (alpha) (#241) Co-authored-by: github-actions[bot] * fix: XMLParser force array not object (#242) * Feat/export req (#243) * fix: XMLParser force array not object * fix: XMLParser force array not object * chore: [ci] release (alpha) (#244) Co-authored-by: github-actions[bot] * feat: Export types (#245) * Export types (#247) * feat: Export types * fix: Hex number convert to string not big number * chore: [ci] release (alpha) (#246) Co-authored-by: github-actions[bot] * Feat/up and down (#248) * feat: Upload Object add AuthType * feat: Download s3 object * feat: Migrate Bucket add authType * feat: SpClient expose makeHeaders method * chore: Update constant pathj * chore: [ci] release (alpha) (#249) Co-authored-by: github-actions[bot] * Feat/xml null (#250) * feat: Add default XML value * feat: Add default XML value * chore: [ci] release (alpha) (#251) Co-authored-by: github-actions[bot] * Fix/gap time (#252) * fix: Gap time * fix: Gap time * Feat/meta (#254) * feat: GetBucketMeta * feat: Object Meta * Create curly-fishes-bow.md * chore: [ci] release (alpha) (#253) Co-authored-by: github-actions[bot] * Refactor/sp client (#255) * chore: Exact parseError * feat: Remove deps * chore: Structor * feat: Refeactor Sp Client * chore: [ci] release (alpha) (#256) Co-authored-by: github-actions[bot] * feat: Custom HTTP method (#257) * feat: Custom HTTP method * chore(example): Update * chore: [ci] release (alpha) (#258) Co-authored-by: github-actions[bot] * chore(docs): Update README (#259) * chore: Add comment (#260) * fix: Sp types (#261) * Feat/upload progress (#263) * fix: GfSpGetUserBucketsResponse Bucket types * feat: Cross fetch * chore: [ci] release (alpha) (#262) Co-authored-by: github-actions[bot] * fix: EncodePath (#264) * chore: [ci] release (alpha) (#265) Co-authored-by: github-actions[bot] * fix: Download http method (#266) * fix: Download http method (#267) * chore: [ci] release (alpha) (#268) Co-authored-by: github-actions[bot] * feat: New API getObjectPreviewUrl (#270) * chore: [ci] release (alpha) (#271) Co-authored-by: github-actions[bot] * fix: XML type align to go struct (#272) * feat: Optional endpoint param (#273) * chore: [ci] release (alpha) (#274) Co-authored-by: github-actions[bot] * fix: XML parse boolean (#275) * chore: [ci] release (alpha) (#276) Co-authored-by: github-actions[bot] * fix: Common Prefix parse as array (#277) * chore: [ci] release (alpha) (#278) Co-authored-by: github-actions[bot] * test: Parse XML test case (#279) * feat: Migrate bucket (#280) * fix: Create bucket quota params (#282) * chore: [ci] release (alpha) (#281) Co-authored-by: github-actions[bot] * feat: Replace xml2js to fast-xml-parse (#283) * Feat/update bucket info (#284) * feat: Update Bucket Info API * chore(example): Update * chore: [ci] release (alpha) (#285) Co-authored-by: github-actions[bot] * fix: EncodePath function (#286) * fix: Convert enum to number (#287) * chore: [ci] release (alpha) (#288) Co-authored-by: github-actions[bot] * feat: Add listReadRecords api * feat: ListGroups API * feat: ListObjectsByIds API * feat: ListBucketsByIds api * feat: Add verifyPermission api * feat: ListGroupsMembers * feat: ListUserGroups api * feat: Add listUserOwnedGroups api * chore: [ci] release (alpha) * feat: Sort query (#292) * feat: Sort query * Create healthy-chicken-beam.md * chore: [ci] release (alpha) (#293) Co-authored-by: github-actions[bot] * chore(exmaple): Group (#294) * docs: Update API (#295) * chore: Pre Exit (#296) * Pre exit (#297) * chore: Pre Exit * chore: Pre Exit * chore: [ci] release (#298) Co-authored-by: github-actions[bot] * chore: Pre Enter (#299) * Refactor/sp (#302) * feat: Auth expiry timestamp add default value * refactor: Sp types * fix: Expire time * feat: Upgrade TinyGo version * Refactor/sp (#305) * feat: Auth expiry timestamp add default value * refactor: Sp types * fix: Expire time * feat: Upgrade TinyGo version * refactor: Sp metainfo * chore: Update Example * chore: [ci] release (alpha) (#303) Co-authored-by: github-actions[bot] * fix: Build (#306) * chore: Update Deps (#308) * chore: [ci] release (alpha) (#307) Co-authored-by: github-actions[bot] * docs: Update README (#309) * Feat/validator (#310) * feat: EditValidator * feat: Add proposal api * refactor: TxClient * feat: Bucket listBucketsByPaymentAccount api * fix: Proposal and Validator API * feat: ListUserPaymentAccount api * chore: [ci] release (alpha) (#311) Co-authored-by: github-actions[bot] * chore: Nodejs example update * test: Test case update * chore: README update * feat: ListBuckets * fix: QueryClient and TxClient is not singleton * chore: Upgrade types * fix: PutPolicy * feat: ListObjectPolicies api * chore: [ci] release (alpha) * fix: IOC (#314) fix: All class use injectable * chore: [ci] release (alpha) (#315) Co-authored-by: github-actions[bot] * chore: Update exmaple (#316) * feat: Distribution API (#317) * chore: [ci] release (alpha) (#318) Co-authored-by: github-actions[bot] * feat: MsgSettle (#319) * feat: MsgSettle * Create fast-houses-do.md * chore: [ci] release (alpha) (#320) Co-authored-by: github-actions[bot] * chore(example): Update custom tx (#321) * chore: [ci] release (alpha) (#322) Co-authored-by: github-actions[bot] * chore: Github Action issue close (#323) * feat: Bucket headBucketExtra api (#324) * chore: [ci] release (alpha) (#325) Co-authored-by: github-actions[bot] * chore: Nodejs Example update (#326) * chore: Example Update (#327) * Chore/example (#328) * chore: Example Update * chore: Example Update * chore: Update (#329) * feat: Custom Tx (#330) * chore: [ci] release (alpha) (#331) Co-authored-by: github-actions[bot] * fix: Delete Policy (#332) * chore: [ci] release (alpha) (#333) Co-authored-by: github-actions[bot] * Feat/create app (#334) * feat: Template Init * feat: Template Init * feat: Create App Commander * chore: [ci] release (alpha) (#335) Co-authored-by: github-actions[bot] * feat: Create App Commander (#336) * chore: [ci] release (alpha) (#337) Co-authored-by: github-actions[bot] * chore: Update README (#338) * feat: Add vite template (#339) * chore: [ci] release (alpha) (#340) Co-authored-by: github-actions[bot] * release 0.2.5 (#341) chore: Pre Exit * chore: [ci] release (#342) Co-authored-by: github-actions[bot] * chore: Enter pre (#343) * chore(docs): Update README (#344) * Chore/package (#346) * chore: Update package.json * chore: Update package.json * Chore/package js sdk (#347) * chore: Update deps * chore: Update deps * chore: [ci] release (alpha) (#348) Co-authored-by: github-actions[bot] * Chore/update deps (#349) * chore: Update deps * chore: Update deps * Docs site ! (#350) * feat: Docs init * feat: Docs init * chore: Update README * docs: Update Docs * chore: Update deps * chore: Update docs * chore: Update docs * chore: Update * docs: Update * docs: Update * docs: Update * docs: Update Crosschain doc * chore: Update docs * chore: Pre exit (#351) * chore: [ci] release (#352) Co-authored-by: github-actions[bot] --------- Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> --- .changeset/pre.json | 13 - .codesandbox/ci.json | 11 - README.md | 65 +- doc-site/.gitignore | 20 + doc-site/README.md | 41 + doc-site/babel.config.js | 3 + doc-site/docs/api/_category_.json | 14 + doc-site/docs/api/account.mdx | 114 + doc-site/docs/api/bucket.mdx | 290 + doc-site/docs/api/crosschain.mdx | 156 + doc-site/docs/api/feegrant.mdx | 90 + doc-site/docs/api/gashub.mdx | 27 + doc-site/docs/api/group.mdx | 275 + doc-site/docs/api/object.mdx | 340 + doc-site/docs/api/overview.mdx | 21 + doc-site/docs/api/payment.mdx | 108 + doc-site/docs/api/sp.mdx | 106 + doc-site/docs/api/virtualGroup.mdx | 68 + doc-site/docs/client/_category_.json | 14 + doc-site/docs/client/greenfield.mdx | 38 + doc-site/docs/client/query-client.mdx | 122 + doc-site/docs/client/sp-client.mdx | 101 + doc-site/docs/client/tx-client.mdx | 120 + doc-site/docs/constants/msg-type-url.mdx | 9 + doc-site/docs/getting-started/_category_.json | 14 + doc-site/docs/getting-started/install.mdx | 35 + doc-site/docs/getting-started/overview.md | 42 + doc-site/docs/getting-started/quick-start.md | 16 + doc-site/docs/types/_category_.json | 14 + doc-site/docs/types/action.mdx | 26 + doc-site/docs/types/coin.mdx | 15 + doc-site/docs/types/pagination.mdx | 41 + doc-site/docs/types/principal.mdx | 16 + doc-site/docs/types/redundancy.mdx | 15 + doc-site/docs/types/timestamp.mdx | 27 + doc-site/docs/types/visibility.mdx | 23 + doc-site/docusaurus.config.js | 139 + doc-site/package.json | 43 + doc-site/sidebars.js | 31 + .../src/components/account/getAccount.tsx | 7 + .../src/components/snippers/api-types.tsx | 21 + doc-site/src/components/snippers/tx.mdx | 6 + doc-site/src/css/custom.css | 30 + doc-site/static/.nojekyll | 0 .../static/img/docusaurus-social-card.jpg | Bin 0 -> 55746 bytes doc-site/static/img/docusaurus.png | Bin 0 -> 5142 bytes doc-site/static/img/favicon.ico | Bin 0 -> 4286 bytes doc-site/static/img/logo.svg | 1 + .../static/img/undraw_docusaurus_mountain.svg | 171 + .../static/img/undraw_docusaurus_react.svg | 170 + .../static/img/undraw_docusaurus_tree.svg | 40 + examples/nextjs/CHANGELOG.md | 20 + examples/nextjs/package.json | 2 +- .../src/components/group/delete/index.tsx | 8 +- examples/nodejs/CHANGELOG.md | 20 + examples/nodejs/package.json | 2 +- package.json | 15 +- .../clients/spclient/spApis/bucketApproval.ts | 36 - .../spclient/spApis/migrateApproval.ts | 36 - .../clients/spclient/spApis/objectApproval.ts | 36 - packages/chain-sdk/src/types/sp-xml/Common.ts | 131 - .../src/types/sp-xml/GetBucketMetaResponse.ts | 15 - .../src/types/sp-xml/GetObjectMetaResponse.ts | 15 - .../types/sp-xml/GetUserBucketsResponse.ts | 9 - .../sp-xml/ListBucketReadRecordResponse.ts | 10 - .../types/sp-xml/ListBucketsByIDsResponse.ts | 24 - .../types/sp-xml/ListGroupsMembersResponse.ts | 21 - .../src/types/sp-xml/ListGroupsResponse.ts | 20 - .../sp-xml/ListObjectsByBucketNameResponse.ts | 18 - .../types/sp-xml/ListObjectsByIDsResponse.ts | 25 - .../types/sp-xml/ListUserGroupsResponse.ts | 21 - .../sp-xml/ListUserOwnedGroupsResponse.ts | 21 - .../src/types/sp-xml/ReadQuotaResponse.ts | 10 - .../src/types/sp-xml/RequestErrorResponse.ts | 6 - .../src/types/sp-xml/RequestNonceResponse.ts | 8 - .../types/sp-xml/VerifyPermissionResponse.ts | 7 - packages/chain-sdk/src/types/sp-xml/index.ts | 14 - packages/create-gnfd-app/CHANGELOG.md | 24 + packages/create-gnfd-app/package.json | 5 +- packages/file-handle/CHANGELOG.md | 24 + packages/file-handle/package.json | 14 +- packages/{chain-sdk => js-sdk}/CHANGELOG.md | 34 + packages/{chain-sdk => js-sdk}/README.md | 0 .../config/tsconfig-cjs.json | 0 .../config/tsconfig-esm.json | 0 .../config/tsconfig-test.json | 0 .../config/tsconfig.json | 0 .../{chain-sdk => js-sdk}/jest.config.mjs | 0 packages/{chain-sdk => js-sdk}/package.json | 17 +- .../{chain-sdk => js-sdk}/rollup.config.js | 0 .../{chain-sdk => js-sdk}/src/api/account.ts | 11 +- .../{chain-sdk => js-sdk}/src/api/basic.ts | 0 .../{chain-sdk => js-sdk}/src/api/bucket.ts | 11 +- .../src/api/challenge.ts | 0 .../src/api/crosschain.ts | 0 .../src/api/distribution.ts | 0 .../{chain-sdk => js-sdk}/src/api/feegrant.ts | 0 .../{chain-sdk => js-sdk}/src/api/gashub.ts | 0 .../{chain-sdk => js-sdk}/src/api/group.ts | 3 + .../{chain-sdk => js-sdk}/src/api/objectt.ts | 5 +- .../src/api/offchainauth.ts | 0 .../{chain-sdk => js-sdk}/src/api/payment.ts | 0 .../{chain-sdk => js-sdk}/src/api/proposal.ts | 0 packages/{chain-sdk => js-sdk}/src/api/sp.ts | 0 .../{chain-sdk => js-sdk}/src/api/storage.ts | 0 .../src/api/validator.ts | 0 .../src/api/virtualGroup.ts | 0 packages/{chain-sdk => js-sdk}/src/client.ts | 0 .../src/clients/queryclient.ts | 10 +- .../src/clients/spclient/auth.ts | 0 .../src/clients/spclient/sign.ts | 0 .../src/clients/spclient/spApis/approval.ts | 0 .../clients/spclient/spApis/getBucketMeta.ts | 0 .../src/clients/spclient/spApis/getNonce.ts | 0 .../src/clients/spclient/spApis/getObject.ts | 0 .../clients/spclient/spApis/getObjectMeta.ts | 0 .../clients/spclient/spApis/getUserBuckets.ts | 0 .../spclient/spApis/listBucketReadRecords.ts | 0 .../spclient/spApis/listBucketsByIds.ts | 0 .../spclient/spApis/listBucketsByPayment.ts | 0 .../src/clients/spclient/spApis/listGroups.ts | 0 .../spclient/spApis/listGroupsMembers.ts | 0 .../spclient/spApis/listObjectPolicies.ts | 0 .../spclient/spApis/listObjectsByBucket.ts | 0 .../spclient/spApis/listObjectsByIds.ts | 0 .../clients/spclient/spApis/listUserGroups.ts | 0 .../spclient/spApis/listUserOwnedGroups.ts | 0 .../spApis/listUserPaymentAccounts.ts | 0 .../src/clients/spclient/spApis/metaInfos.ts | 0 .../src/clients/spclient/spApis/parseError.ts | 0 .../src/clients/spclient/spApis/putObject.ts | 0 .../spclient/spApis/queryBucketReadQuota.ts | 0 .../spclient/spApis/updateUserAccountKey.ts | 0 .../spclient/spApis/verifyPermission.ts | 0 .../src/clients/spclient/spClient.ts | 0 .../src/clients/txClient.ts | 2 +- .../src/constants/http.ts | 0 .../src/constants/index.ts | 0 .../src/constants/typeUrl.ts | 0 packages/{chain-sdk => js-sdk}/src/index.ts | 0 .../src/keymanage/index.ts | 0 .../src/messages/README.md | 0 .../src/messages/bank/MsgMultiSend.ts | 0 .../src/messages/bank/MsgSend.ts | 0 .../MsgFundCommunityPoolTypeUrl.ts | 0 .../distribution/MsgSetWithdrawAddress.ts | 0 .../MsgWithdrawDelegatorReward.ts | 0 .../MsgWithdrawValidatorCommission.ts | 0 .../src/messages/cosmos/gov/MsgVote.ts | 0 .../src/messages/cosmos/oracle/MsgClaim.ts | 0 .../cosmos/staking/MsgCreateValidator.ts | 0 .../cosmos/staking/MsgEditValidator.ts | 0 .../messages/feegrant/MsgGrantAllowance.ts | 0 .../messages/feegrant/MsgRevokeAllowance.ts | 0 .../greenfield/bridge/MsgTransferOut.ts | 0 .../messages/greenfield/chanenge/MsgAttest.ts | 0 .../messages/greenfield/chanenge/MsgSubmit.ts | 0 .../src/messages/greenfield/index.ts | 0 .../payment/MsgCreatePaymentAccount.ts | 0 .../messages/greenfield/payment/MsgDeposit.ts | 0 .../greenfield/payment/MsgDisableRefund.ts | 0 .../greenfield/payment/MsgWithdraw.ts | 0 .../storage/MsgCancelCreateObject.ts | 0 .../greenfield/storage/MsgCreateBucket.ts | 0 .../greenfield/storage/MsgCreateGroup.ts | 0 .../greenfield/storage/MsgCreateObject.ts | 0 .../greenfield/storage/MsgDeleteBucket.ts | 0 .../greenfield/storage/MsgDeleteGroup.ts | 0 .../greenfield/storage/MsgDeleteObject.ts | 0 .../greenfield/storage/MsgDeletePolicy.ts | 0 .../greenfield/storage/MsgLeaveGroup.ts | 0 .../greenfield/storage/MsgMigrateBucket.ts | 0 .../greenfield/storage/MsgMirrorBucket.ts | 0 .../greenfield/storage/MsgMirrorGroup.ts | 0 .../greenfield/storage/MsgMirrorObject.ts | 0 .../greenfield/storage/MsgPutPolicy.ts | 0 .../greenfield/storage/MsgUpdateBucketInfo.ts | 0 .../greenfield/storage/MsgUpdateGroupExtra.ts | 0 .../storage/MsgUpdateGroupMember.ts | 0 .../greenfield/storage/MsgUpdateObjectInfo.ts | 0 .../greenfield/virtualgroup/MsgSettle.ts | 0 .../src/messages/index.ts | 0 .../src/messages/utils.ts | 0 .../src/offchainauth/index.ts | 0 .../src/offchainauth/utils.ts | 0 .../{chain-sdk => js-sdk}/src/sign/index.ts | 0 .../{chain-sdk => js-sdk}/src/sign/pubKey.ts | 0 .../{chain-sdk => js-sdk}/src/sign/signTx.ts | 0 .../{chain-sdk => js-sdk}/src/types/auth.ts | 0 .../{chain-sdk => js-sdk}/src/types/common.ts | 0 .../{chain-sdk => js-sdk}/src/types/index.ts | 0 .../src/types/sp/BucketApproval.ts | 0 .../src/types/sp/Common.ts | 0 .../src/types/sp/ErrorResponse.ts | 0 .../src/types/sp/GetBucketMeta.ts | 0 .../src/types/sp/GetObject.ts | 0 .../src/types/sp/GetObjectMeta.ts | 0 .../src/types/sp/GetPreviewObject.ts | 0 .../src/types/sp/GetUserBuckets.ts | 0 .../src/types/sp/ListBucketReadRecord.ts | 0 .../src/types/sp/ListBucketsByIDs.ts | 0 .../types/sp/ListBucketsByPaymentAccount.ts | 0 .../src/types/sp/ListGroups.ts | 0 .../src/types/sp/ListGroupsMembers.ts | 0 .../src/types/sp/ListObjectPolicies.ts | 0 .../src/types/sp/ListObjectsByBucketName.ts | 0 .../src/types/sp/ListObjectsByIDs.ts | 0 .../src/types/sp/ListUserGroups.ts | 0 .../src/types/sp/ListUserOwnedGroups.ts | 0 .../src/types/sp/ListUserPaymentAccounts.ts | 0 .../src/types/sp/MigrateBucket.ts | 0 .../src/types/sp/ObjectApproval.ts | 0 .../src/types/sp/PutObject.ts | 0 .../src/types/sp/ReadQuota.ts | 0 .../src/types/sp/RequestNonce.ts | 0 .../src/types/sp/SuccessResponse.ts | 0 .../src/types/sp/VerifyPermission.ts | 0 .../src/types/sp/index.ts | 0 .../src/types/storage.ts | 0 .../{chain-sdk => js-sdk}/src/types/tx.ts | 0 .../src/utils/allowance.ts | 0 .../src/utils/encoding.ts | 0 .../{chain-sdk => js-sdk}/src/utils/grn.ts | 0 .../src/utils/helpers.ts | 0 .../{chain-sdk => js-sdk}/src/utils/http.ts | 0 .../{chain-sdk => js-sdk}/src/utils/index.ts | 0 .../{chain-sdk => js-sdk}/src/utils/s3.ts | 0 .../{chain-sdk => js-sdk}/src/utils/time.ts | 0 .../{chain-sdk => js-sdk}/src/utils/units.ts | 0 .../tests/.env.example.ts | 0 .../tests/account.spec.ts | 0 .../tests/config.spec.ts | 0 .../tests/parsexml.spec.ts | 0 .../tests/policy.spec.ts | 0 .../{chain-sdk => js-sdk}/tests/query.spec.ts | 0 .../tests/storage.spec.ts | 0 .../{chain-sdk => js-sdk}/tests/utils.spec.ts | 0 .../tests/wallet.spec.ts | 0 packages/{chain-sdk => js-sdk}/tsconfig.json | 0 packages/zk-crypto/CHANGELOG.md | 24 + packages/zk-crypto/package.json | 17 +- pnpm-lock.yaml | 9571 +++++++++++++---- pnpm-workspace.yaml | 1 + 243 files changed, 10573 insertions(+), 2859 deletions(-) delete mode 100644 .changeset/pre.json delete mode 100644 .codesandbox/ci.json create mode 100644 doc-site/.gitignore create mode 100644 doc-site/README.md create mode 100644 doc-site/babel.config.js create mode 100644 doc-site/docs/api/_category_.json create mode 100644 doc-site/docs/api/account.mdx create mode 100644 doc-site/docs/api/bucket.mdx create mode 100644 doc-site/docs/api/crosschain.mdx create mode 100644 doc-site/docs/api/feegrant.mdx create mode 100644 doc-site/docs/api/gashub.mdx create mode 100644 doc-site/docs/api/group.mdx create mode 100644 doc-site/docs/api/object.mdx create mode 100644 doc-site/docs/api/overview.mdx create mode 100644 doc-site/docs/api/payment.mdx create mode 100644 doc-site/docs/api/sp.mdx create mode 100644 doc-site/docs/api/virtualGroup.mdx create mode 100644 doc-site/docs/client/_category_.json create mode 100644 doc-site/docs/client/greenfield.mdx create mode 100644 doc-site/docs/client/query-client.mdx create mode 100644 doc-site/docs/client/sp-client.mdx create mode 100644 doc-site/docs/client/tx-client.mdx create mode 100644 doc-site/docs/constants/msg-type-url.mdx create mode 100644 doc-site/docs/getting-started/_category_.json create mode 100644 doc-site/docs/getting-started/install.mdx create mode 100644 doc-site/docs/getting-started/overview.md create mode 100644 doc-site/docs/getting-started/quick-start.md create mode 100644 doc-site/docs/types/_category_.json create mode 100644 doc-site/docs/types/action.mdx create mode 100644 doc-site/docs/types/coin.mdx create mode 100644 doc-site/docs/types/pagination.mdx create mode 100644 doc-site/docs/types/principal.mdx create mode 100644 doc-site/docs/types/redundancy.mdx create mode 100644 doc-site/docs/types/timestamp.mdx create mode 100644 doc-site/docs/types/visibility.mdx create mode 100644 doc-site/docusaurus.config.js create mode 100644 doc-site/package.json create mode 100644 doc-site/sidebars.js create mode 100644 doc-site/src/components/account/getAccount.tsx create mode 100644 doc-site/src/components/snippers/api-types.tsx create mode 100644 doc-site/src/components/snippers/tx.mdx create mode 100644 doc-site/src/css/custom.css create mode 100644 doc-site/static/.nojekyll create mode 100644 doc-site/static/img/docusaurus-social-card.jpg create mode 100644 doc-site/static/img/docusaurus.png create mode 100644 doc-site/static/img/favicon.ico create mode 100644 doc-site/static/img/logo.svg create mode 100644 doc-site/static/img/undraw_docusaurus_mountain.svg create mode 100644 doc-site/static/img/undraw_docusaurus_react.svg create mode 100644 doc-site/static/img/undraw_docusaurus_tree.svg delete mode 100644 packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts delete mode 100644 packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts delete mode 100644 packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/Common.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/GetBucketMetaResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/GetObjectMetaResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/GetUserBucketsResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ListBucketReadRecordResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ListBucketsByIDsResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ListGroupsResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ListObjectsByIDsResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ListUserGroupsResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ListUserOwnedGroupsResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/ReadQuotaResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/RequestErrorResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/RequestNonceResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/VerifyPermissionResponse.ts delete mode 100644 packages/chain-sdk/src/types/sp-xml/index.ts rename packages/{chain-sdk => js-sdk}/CHANGELOG.md (98%) rename packages/{chain-sdk => js-sdk}/README.md (100%) rename packages/{chain-sdk => js-sdk}/config/tsconfig-cjs.json (100%) rename packages/{chain-sdk => js-sdk}/config/tsconfig-esm.json (100%) rename packages/{chain-sdk => js-sdk}/config/tsconfig-test.json (100%) rename packages/{chain-sdk => js-sdk}/config/tsconfig.json (100%) rename packages/{chain-sdk => js-sdk}/jest.config.mjs (100%) rename packages/{chain-sdk => js-sdk}/package.json (84%) rename packages/{chain-sdk => js-sdk}/rollup.config.js (100%) rename packages/{chain-sdk => js-sdk}/src/api/account.ts (94%) rename packages/{chain-sdk => js-sdk}/src/api/basic.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/bucket.ts (98%) rename packages/{chain-sdk => js-sdk}/src/api/challenge.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/crosschain.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/distribution.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/feegrant.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/gashub.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/group.ts (99%) rename packages/{chain-sdk => js-sdk}/src/api/objectt.ts (99%) rename packages/{chain-sdk => js-sdk}/src/api/offchainauth.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/payment.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/proposal.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/sp.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/storage.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/validator.ts (100%) rename packages/{chain-sdk => js-sdk}/src/api/virtualGroup.ts (100%) rename packages/{chain-sdk => js-sdk}/src/client.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/queryclient.ts (94%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/auth.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/sign.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/approval.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/getBucketMeta.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/getNonce.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/getObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/getObjectMeta.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/getUserBuckets.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listBucketReadRecords.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listBucketsByIds.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listBucketsByPayment.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listGroups.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listGroupsMembers.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listObjectPolicies.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listObjectsByBucket.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listObjectsByIds.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listUserGroups.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listUserOwnedGroups.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/listUserPaymentAccounts.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/metaInfos.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/parseError.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/putObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/queryBucketReadQuota.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/updateUserAccountKey.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spApis/verifyPermission.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/spclient/spClient.ts (100%) rename packages/{chain-sdk => js-sdk}/src/clients/txClient.ts (99%) rename packages/{chain-sdk => js-sdk}/src/constants/http.ts (100%) rename packages/{chain-sdk => js-sdk}/src/constants/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/constants/typeUrl.ts (100%) rename packages/{chain-sdk => js-sdk}/src/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/keymanage/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/README.md (100%) rename packages/{chain-sdk => js-sdk}/src/messages/bank/MsgMultiSend.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/bank/MsgSend.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/cosmos/gov/MsgVote.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/cosmos/oracle/MsgClaim.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/cosmos/staking/MsgCreateValidator.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/cosmos/staking/MsgEditValidator.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/feegrant/MsgGrantAllowance.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/feegrant/MsgRevokeAllowance.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/bridge/MsgTransferOut.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/chanenge/MsgAttest.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/chanenge/MsgSubmit.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/payment/MsgDeposit.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/payment/MsgDisableRefund.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/payment/MsgWithdraw.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgCancelCreateObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgCreateBucket.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgCreateGroup.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgCreateObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgDeleteBucket.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgDeleteGroup.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgDeleteObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgDeletePolicy.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgLeaveGroup.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgMigrateBucket.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgMirrorBucket.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgMirrorGroup.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgMirrorObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgPutPolicy.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgUpdateGroupMember.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/greenfield/virtualgroup/MsgSettle.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/messages/utils.ts (100%) rename packages/{chain-sdk => js-sdk}/src/offchainauth/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/offchainauth/utils.ts (100%) rename packages/{chain-sdk => js-sdk}/src/sign/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/sign/pubKey.ts (100%) rename packages/{chain-sdk => js-sdk}/src/sign/signTx.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/auth.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/common.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/BucketApproval.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/Common.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ErrorResponse.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/GetBucketMeta.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/GetObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/GetObjectMeta.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/GetPreviewObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/GetUserBuckets.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListBucketReadRecord.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListBucketsByIDs.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListBucketsByPaymentAccount.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListGroups.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListGroupsMembers.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListObjectPolicies.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListObjectsByBucketName.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListObjectsByIDs.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListUserGroups.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListUserOwnedGroups.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ListUserPaymentAccounts.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/MigrateBucket.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ObjectApproval.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/PutObject.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/ReadQuota.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/RequestNonce.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/SuccessResponse.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/VerifyPermission.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/sp/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/storage.ts (100%) rename packages/{chain-sdk => js-sdk}/src/types/tx.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/allowance.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/encoding.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/grn.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/helpers.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/http.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/index.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/s3.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/time.ts (100%) rename packages/{chain-sdk => js-sdk}/src/utils/units.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/.env.example.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/account.spec.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/config.spec.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/parsexml.spec.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/policy.spec.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/query.spec.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/storage.spec.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/utils.spec.ts (100%) rename packages/{chain-sdk => js-sdk}/tests/wallet.spec.ts (100%) rename packages/{chain-sdk => js-sdk}/tsconfig.json (100%) diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index 4328d2a8..00000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "mode": "pre", - "tag": "alpha", - "initialVersions": { - "@demo/wallet": "0.0.6", - "@demo/nodejs": "0.0.9", - "@bnb-chain/greenfield-js-sdk": "0.2.5", - "@bnb-chain/create-gnfd-app": "0.0.2", - "@bnb-chain/greenfiled-file-handle": "0.2.1", - "@bnb-chain/greenfield-zk-crypto": "0.0.3" - }, - "changesets": [] -} diff --git a/.codesandbox/ci.json b/.codesandbox/ci.json deleted file mode 100644 index 686fb6d5..00000000 --- a/.codesandbox/ci.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "node": 16, - "packages": [ - "./", - "packages/chain-sdk", - "packages/file-handle" - ], - "sandboxes": [ - "examples/nextjs" - ] -} diff --git a/README.md b/README.md index 517ccc84..2b892c56 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,17 @@ -# GreenField JS SDK +# GreenField JS SDK ![License](https://img.shields.io/npm/l/%40bnb-chain%2Fgreenfield-js-sdk) ![version](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-js-sdk?color=blue) + A Greenfield JS SDK is an easy-to-use tool designed to help developers build decentralized applications (DApps) on the Greenfield blockchain using JavaScript. It provides a simple and straightforward starting point for developers to create DApps with the latest technology and best practices, making Dapp development more efficient. This SDK includes features and tools to make interacting with the Greenfield blockchain easy, such as libraries for common functionality, testing tools, and documentation. With a Greenfield JS SDK, developers can create scalable, maintainable, and efficient DApps for a variety of use cases. ## Documentation You can find some package documentation below: -| Package | Description | -| --- | --- | -| [@bnb-chain/greenfield-js-sdk](./packages/chain-sdk/README.md) | A client library for Greenfield Chain | -| [@bnb-chain/greenfiled-file-handle](./packages/file-handle/README.md) | WASM module that handle file, such as `checksums` | -| [@bnb-chain/greenfield-zk-crypto](./packages/zk-crypto/README.md) | WASM module about sign crypto | -| [@bnb-chain/create-gnfd-app](./packages/create-gnfd-app/README.md) | Create Greenfield App Quickly | +| Package | Description | Version | +| --- | --- | --- | +| [@bnb-chain/greenfield-js-sdk](./packages/js-sdk/README.md) | A client library for Greenfield Chain | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-js-sdk?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-js-sdk) | +| [@bnb-chain/greenfiled-file-handle](./packages/file-handle/README.md) | WASM module that handle file, such as `checksums` | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfiled-file-handle?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfiled-file-handle) | +| [@bnb-chain/greenfield-zk-crypto](./packages/zk-crypto/README.md) | WASM module about sign crypto | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-zk-crypto?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-zk-crypto) | +| [@bnb-chain/create-gnfd-app](./packages/create-gnfd-app/README.md) | Create Greenfield App Quickly | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fcreate-gnfd-app?color=blue)](https://www.npmjs.com/package/@bnb-chain/create-gnfd-app) | ## Online Examples @@ -28,63 +29,27 @@ You can use [`create-gnfd-app`](./packages/create-gnfd-app/README.md) to create ![](./packages/create-gnfd-app/example.gif) +## Supported JS environments - +1. Modern browsers (Chromium, Firefox, Safari) +2. Browser extensions (Chromium, Firefox) +3. Nodejs +## Contribution - - - - -## Supported JS environments - -1. Modern browsers (Chromium, Firefox, Safari) -2. Browser extensions (Chromium, Firefox) -3. Nodejs - -## Contribution - Look over [CONTRIBUTING](./CONTRIBUTING.md) - ## Disclaimer Look over [DISCLAIMER](./DISCLAIMER.md) diff --git a/doc-site/.gitignore b/doc-site/.gitignore new file mode 100644 index 00000000..b2d6de30 --- /dev/null +++ b/doc-site/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/doc-site/README.md b/doc-site/README.md new file mode 100644 index 00000000..aaba2fa1 --- /dev/null +++ b/doc-site/README.md @@ -0,0 +1,41 @@ +# Website + +This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. + +### Installation + +``` +$ yarn +``` + +### Local Development + +``` +$ yarn start +``` + +This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. + +### Build + +``` +$ yarn build +``` + +This command generates static content into the `build` directory and can be served using any static contents hosting service. + +### Deployment + +Using SSH: + +``` +$ USE_SSH=true yarn deploy +``` + +Not using SSH: + +``` +$ GIT_USER= yarn deploy +``` + +If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/doc-site/babel.config.js b/doc-site/babel.config.js new file mode 100644 index 00000000..e00595da --- /dev/null +++ b/doc-site/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [require.resolve('@docusaurus/core/lib/babel/preset')], +}; diff --git a/doc-site/docs/api/_category_.json b/doc-site/docs/api/_category_.json new file mode 100644 index 00000000..549674e8 --- /dev/null +++ b/doc-site/docs/api/_category_.json @@ -0,0 +1,14 @@ +{ + "position": 3, + "label": "API", + "collapsible": true, + "collapsed": true, + "className": "red", + "link": { + "type": "generated-index", + "title": "apis" + }, + "customProps": { + "description": "" + } +} \ No newline at end of file diff --git a/doc-site/docs/api/account.mdx b/doc-site/docs/api/account.mdx new file mode 100644 index 00000000..89307fb5 --- /dev/null +++ b/doc-site/docs/api/account.mdx @@ -0,0 +1,114 @@ +--- +id: account +title: 'Account' +--- + +import Tx from '../../src/components/snippers/tx.mdx'; +import ApiTypes from '../../src/components/snippers/api-types.tsx'; + +## getAccount + +Retrieve on-chain account information for a given address. + +| params | description | +| ------- | -------------------------------- | +| address | The given address for retrieving | + +```jsx title="example" +await client.getAccount('0x0000000000000000000000000000000000000001'); +``` + +## getAccountBalance + +Get the bank balance for the given address. + +| params | description | +| ------- | ------------------------------------ | +| address | the address to query balances for | +| denom | the coin denom to query balances for | + +```jsx title="example" +await client.getAccountBalance({ + address: '0x0000000000000000000000000000000000000001', + denom: 'BNB', +}); +``` + +## getModuleAccounts + +Get all module accounts. + +```jsx title="example" +await client.getModuleAccounts(); +``` + +## getModuleAccountByName + +Get module account by module name. + +| params | description | +| ------ | --------------------------------- | +| name | the address to query balances for | + +```jsx title="example" +await client.getModuleAccountByName('module_name'); +``` + +## getPaymentAccountsByOwner + +Get all payment accounts owned by the given owner address. + +| params | description | +| ------- | ---------------------------------------------- | +| address | The given owner account address for retrieving | + +```jsx title="example" +await client.getPaymentAccountsByOwner('0x0000000000000000000000000000000000000001'); +``` + +## createPaymentAccount + + + +Create a new payment account for the given address. + +The payment account is used to pay for the storage and read quota fee of objects. When you need to +pay for different buckets separately, you can create different payment accounts to do so. Note that +the payment account does not have a private key, and only the owner of the payment account can +withdraw funds from it. Once the owner revokes permission for withdrawal, the funds in the payment +account can only be utilized to cover storage and read quota fees. + +| params | description | +| ------- | -------------------------------------------- | +| creator | The owner address of the new payment account | + +```jsx title="example" +const tx = await client.account.createPaymentAccount({ + creator: address, +}); +``` + +## transfer + + + +Transfer BNB from sender to receiver. + +| params | description | +| ----------- | ------------------------------------ | +| fromAddress | The address who will send the BNB | +| toAddress | The address who will receive the BNB | +| amount | transfer coin | + +```jsx title="example" +const tx = await client.account.transfer({ + fromAddress: '0x0000000000000000000000000000000000000000', + toAddress: '0x0000000000000000000000000000000000000001', + amount: [ + { + denom: 'BNB', + amount: '1000000000', + }, + ], +}); +``` diff --git a/doc-site/docs/api/bucket.mdx b/doc-site/docs/api/bucket.mdx new file mode 100644 index 00000000..b3e7a457 --- /dev/null +++ b/doc-site/docs/api/bucket.mdx @@ -0,0 +1,290 @@ +--- +id: bucket +title: 'Bucket' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; + +## createBucket + +Create a new bucket in greenfield. This API sends a request to the storage provider to get approval +for creating bucket and sends the createBucket transaction to the Greenfield. + +| params | description | +| ---------------- | ------------------------------------------------------- | +| bucketName | bucket name | +| creator | creator account address | +| visibility | [VisibilityType](/types/visibility) | +| chargedReadQuota | defines the traffic quota that you read from primary sp | +| spInfo | primary sp address | +| paymentAddress | payment address | +| authType | [AuthType](/client/sp-client#authtype) | + +```jsx title="example" +const tx = await client.bucket.createBucket( + { + bucketName: 'bucket_name', + creator: address, + visibility: 'VISIBILITY_TYPE_PUBLIC_READ', + chargedReadQuota: '0', + spInfo: { + primarySpAddress: 'primary_sp_address', + }, + paymentAddress: address, + }, + { + type: 'EDDSA', + domain: window.location.origin, + seed: offChainData.seedString, + address, + }, +); +``` + +## deleteBucket + +Send DeleteBucket msg to greenfield chain and return txn hash. + +| params | description | +| ---------- | ------------------------------------ | +| bucketName | The name of the bucket to be deleted | +| operator | operator account address | + +```jsx title="example" +const tx = await client.bucket.deleteBucket({ + bucketName: bucketName, + operator: address, +}); +``` + + + +## deleteBucketPolicy + +Delete the bucket policy of the principal. + +| params | description | +| ------------- | ---------------------------------------------------------------------- | +| operator | | +| bucketName | The bucket name identifies the bucket | +| principalAddr | Principal define the roles that can grant permissions | +| principalType | PrincipalType refers to the identity type of system users or entities. | + +```jsx title="example" +const tx = await client.bucket.deleteBucketPolicy( + address, + bucketName, + address, + 'PRINCIPAL_TYPE_GNFD_ACCOUNT', +); +``` + + + +## getBucketMeta + +This API is used to get bucket meta by bucket name. + +| params | description | +| ---------- | ----------- | +| bucketName | bucket name | + +```jsx title="example" +const bucketInfo = await client.bucket.getBucketMeta({ + bucketName, +}); +``` + +## getBucketPolicy + +Get the bucket policy info of the user specified by principalAddr. + +```jsx title="example" +import { GRNToString, newBucketGRN } from '@bnb-chain/greenfield-js-sdk'; +await client.bucket.getBucketPolicy({ + resource: GRNToString(newBucketGRN(bucketName)), + principalAddress: '0x00..', +}); +``` + +## getBucketReadQuota + +Query the quota info of the specific bucket of current month. + +| params | description | +| ---------- | -------------------------------------- | +| bucketName | bucket name | +| authType | [AuthType](/client/sp-client#authtype) | + +```jsx title="example" +await client.bucket.getBucketReadQuota( + { + bucketName, + }, + { + type: 'EDDSA', + seed: offChainData.seedString, + domain: window.location.origin, + address, + }, +); +``` + +## headBucket + +query the bucketInfo on chain, return the bucket info if exists. + +| params | description | +| ---------- | ----------- | +| bucketName | bucket name | + +```jsx title="example" +const bucketInfo = await client.bucket.headBucket(bucketName); +``` + +## headBucketById + +| params | description | +| -------- | ----------- | +| bucketId | bucket id | + +```jsx title="example" +const bucketInfo = await client.bucket.headBucketById(bucketId); +``` + +## headBucketExtra + +Queries a bucket extra info (with gvg bindings and price time) with specify name. + +| params | description | +| ---------- | ----------- | +| bucketName | bucket name | + +```jsx title="example" +const bucketInfo = await client.bucket.headBucketExtra(bucketName); +``` + + + +## listBucketReadRecords + +List the download record info of the specific bucket of the current month. + +| params | description | +| ---------- | -------------------------------------- | +| bucketName | bucket name | +| authType | [AuthType](/client/sp-client#authtype) | + +```jsx title="example" +await client.bucket.listBucketReadRecords( + { + bucketName, + startTimeStamp, + endTimeStamp, + maxRecords: 1000, + }, + { + type: 'EDDSA', + domain: window.location.origin, + seed: offChainData.seedString, + address, + }, +); +``` + +## listBuckets + +Lists the bucket info of the user. + +| params | description | +| ------- | ------------ | +| address | user account | + +```jsx title="example" +const res = await client.bucket.listBuckets({ + address, +}); +``` + +## listBucketsByIds + +Lists the bucket info of the user. + +| params | description | +| ------ | ---------------- | +| ids | bucket ids array | + +```jsx title="example" +await client.bucket.listBucketsByIds({ + ids: ['1', '2'], +}); +``` + +## listBucketsByPaymentAccount + +List bucket info by payment account. + +| params | description | +| -------------- | ----------------------- | +| paymentAccount | payment account address | + +```jsx title="example" +const res = await client.bucket.listBucketsByPaymentAccount({ + paymentAccount: '0x00...', +}); +``` + +## putBucketPolicy + +Apply bucket policy to the principal, return the txn hash. + +| params | description | +| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| bucketName | bucket name | +| statements | Policies outline the specific details of permissions, including the Effect, ActionList, and Resources. | +| principal | Indicates the marshaled principal content of greenfield permission types, users can generate it by NewPrincipalWithAccount or NewPrincipalWithGroupId method. | + +```jsx title="example" +import { GRNToString, newBucketGRN, PermissionTypes } from '@bnb-chain/greenfield-js-sdk'; +const statement: PermissionTypes.Statement = { + effect: PermissionTypes.Effect.EFFECT_ALLOW, + actions: [PermissionTypes.ActionType.ACTION_UPDATE_BUCKET_INFO], + resources: [GRNToString(newBucketGRN(bucketName))], +}; +const tx = await client.bucket.putBucketPolicy(bucketName, { + operator: address, + statements: [statement], + principal: { + type: PermissionTypes.PrincipalType.PRINCIPAL_TYPE_GNFD_ACCOUNT, + value: '0x0000000000000000000000000000000000000001', + }, +}); +``` + + + +## updateBucketInfo + +Update the bucket meta on chain, including read quota, payment address or visibility. It will send +the MsgUpdateBucketInfo msg to greenfield to update the meta. + +| params | description | +| ---------------- | ------------------------------------------------------- | +| bucketName | bucket name | +| operator | operator account address | +| visibility | [VisibilityType](/types/visibility) | +| paymentAddress | payment address | +| chargedReadQuota | defines the traffic quota that you read from primary sp | + +```jsx title="example" +await client.bucket.updateBucketInfo({ + bucketName: bucketName, + operator: address, + visibility: 1, + paymentAddress: address, + chargedReadQuota: '100', +}); +``` + + diff --git a/doc-site/docs/api/crosschain.mdx b/doc-site/docs/api/crosschain.mdx new file mode 100644 index 00000000..11771c6d --- /dev/null +++ b/doc-site/docs/api/crosschain.mdx @@ -0,0 +1,156 @@ +--- +id: crosschain +title: 'Crosschain' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; + +## getChannelSendSequence + +Get the next send sequence for a channel. + +| params | description | +| ----------- | ------------------------------------- | +| destChainId | destination chain id | +| channelId | channel id of the cross chain package | + +```jsx title="example" +await client.crosschain.getChannelSendSequence({ + destChainId: '5600', + channelId: '97', +}); +``` + +## getChannelReceiveSequence + +Get the next receive sequence for a channel. + +| params | description | +| ----------- | ------------------------------------- | +| destChainId | destination chain id | +| channelId | channel id of the cross chain package | + +```jsx title="example" +await client.crosschain.getChannelReceiveSequence({ + destChainId: '5600', + channelId: '97', +}); +``` + +## getCrosschainPackage + +Get the cross-chain package by sequence. + +| params | description | +| ----------- | ------------------------------------- | +| destChainId | destination chain id | +| channelId | channel id of the cross chain package | +| sequence | sequence of the cross chain package | + +```jsx title="example" +await client.crosschain.getCrosschainPackage({ + destChainId: '5600', + channelId: '97', + sequence: '111', +}); +``` + +## getInturnRelayer + +Get the in-turn relayer bls public key and its relay interval. + +```jsx title="example" +await client.crosschain.getInturnRelayer(); +``` + +## mirrorBucket + +Mirror the bucket to BSC as an NFT. + +| params | description | +| ----------- | ----------------------------------------------------------------------------------------------------------- | +| creator | defines the account address of the grantee who has the DeleteBucket permission of the bucket to be deleted. | +| id | defines the unique u256 for bucket | +| bucketName | defines a globally unique name of bucket | +| destChainId | destination chain id | + +```jsx title="example" +const tx = await client.crosschain.mirrorBucket({ + bucketName: 'bucket_name', + id: 'bucket_id', + creator: '0x00...', + destChainId: '97', +}); +``` + + + +## mirrorGroup + +Mirror the group to BSC as an NFT. + +| params | description | +| ----------- | ------------------------------------------------------------------------- | +| operator | defines the account address of the operator who is the owner of the group | +| id | the unique u256 for group | +| groupName | the name of the group | +| destChainId | destination chain id | + +```jsx title="example" +const tx = await client.crosschain.mirrorGroup({ + groupName: 'group_name', + id: 'group_id', + operator: '0x00...', + destChainId: '97', +}); +``` + + + +## mirrorObject + +Mirror the object to BSC as an NFT. + +| params | description | +| ----------- | --------------------------------------------------------------------------------------------------- | +| operator | the account address of the operator who has the DeleteObject permission of the object to be deleted | +| id | the unique u256 for object | +| bucketName | the name of the bucket where the object is stored | +| objectName | the name of object | +| destChainId | destination chain id | + +```jsx title="example" +const tx = await client.crosschain.mirrorObject({ + bucketName: 'bucket_name', + objectName: 'object_name', + id: 'object_id', + operator: '0x00...', + destChainId: '97', +}); +``` + + + +## transferOut + +Make a transfer from Greenfield to BSC. + +| params | description | +| ------ | ------------------- | +| from | from address | +| to | to address | +| amount | [Coin](/types/coin) | + +```jsx title="example" +const tx = await client.crosschain.transferOut({ + from: '0x00...', + to: '0x0000000000000000000000000000000000000001', + amount: { + amount: '1000000000', + denom: 'BNB', + }, +}); +``` + + diff --git a/doc-site/docs/api/feegrant.mdx b/doc-site/docs/api/feegrant.mdx new file mode 100644 index 00000000..324901de --- /dev/null +++ b/doc-site/docs/api/feegrant.mdx @@ -0,0 +1,90 @@ +--- +id: feegrant +title: 'Feegrant' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; + +## grantAllowance + +Provides a way to grant allowance, the user needs to construct the desired type of allowance. + +| params | description | +| --------------- | --------------------------------------------------------------------------- | +| amount | amount of [Coin](/types/coin) | +| denom | denom of [Coin](/types/coin) | +| allowedMessages | array of [Msg Type URL](/constants/msg-type-url) | +| granter | the address of the user granting an allowance of their funds | +| grantee | the address of the user being granted an allowance of another user's funds. | +| expirationTime | [Timestamp](/types/timestamp) | + +```jsx title="example" +const tx = await client.feegrant.grantAllowance({ + granter: '0x00...', + grantee: '0x00...', + allowedMessages: [MsgDeleteObjectTypeUrl], + amount: parseEther('0.09').toString(), + denom: 'BNB', + expirationTime: toTimestamp(date), +}); +``` + + + +## revokeAllowance + +revokes allowance on a grantee by the granter. + +| params | description | +| ------- | ------------------------------------------------------------------------------------- | +| granter | the address of the user granting an allowance of their funds | +| grantee | grantee is the address of the user being granted an allowance of another user's funds | + +```jsx title="example" +const tx = await client.feegrant.revokeAllowance({ + granter: '0x00...', + grantee: '0x00...', +}); +``` + + + +## getAllowence + +queries the BasicAllowance. + +| params | description | +| ------- | ------------------------------------------------------------------------------------- | +| granter | the address of the user granting an allowance of their funds | +| grantee | grantee is the address of the user being granted an allowance of another user's funds | + +```jsx title="example" +await client.feegrant.getAllowence({ + granter: '0x00...', + grantee: '0x00...', +}); +``` + +## getAllowences + +queries the BasicAllowance by account address. + +| params | description | +| ---------- | ------------------------------------------------------------------------------------- | +| grantee | grantee is the address of the user being granted an allowance of another user's funds | +| pagination | [Pagination](/types/pagination) | + +```jsx title="example" +import { Long } from '@bnb-chain/greenfield-js-sdk'; +await client.feegrant.getAllowences({ + grantee: '0x00...', + pagination: { + limit: Long.fromInt(10), + offset: Long.fromInt(0), + countTotal: true, + key: Uint8Array.from([]), + reverse: false, + }, +}); +``` diff --git a/doc-site/docs/api/gashub.mdx b/doc-site/docs/api/gashub.mdx new file mode 100644 index 00000000..5de4c16d --- /dev/null +++ b/doc-site/docs/api/gashub.mdx @@ -0,0 +1,27 @@ +--- +id: gashub +title: 'Gashub' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; + +## getMsgGasParams + +| params | description | +| ----------- | ------------------------------------------- | +| msgTypeUrls | [Message Type URL](/constants/msg-type-url) | +| pagination | [Pagination](/types/pagination) | + +```jsx title="example" +await client.gashub.getMsgGasParams({ + msgTypeUrls: [], + pagination: { + countTotal: true, + key: Uint8Array.from([]), + limit: Long.fromInt(10), + offset: Long.fromInt(0), + reverse: false, + }, +}); +``` diff --git a/doc-site/docs/api/group.mdx b/doc-site/docs/api/group.mdx new file mode 100644 index 00000000..55861562 --- /dev/null +++ b/doc-site/docs/api/group.mdx @@ -0,0 +1,275 @@ +--- +id: group +title: 'Group' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +## createGroup + +Create a new group without group members on Greenfield blockchain, and group members can be added by +[updateGroupMember](#updategroupmember) transaction. + +A `Group` is a collection of accounts that share the same permissions, allowing them to be handled +as a single entity. + +Examples of permissions include: + +- `Put`, `List`, `Get`, `Delete`, `Copy`, and `Execute` data objects; +- `Create`, `Delete`, and `List` buckets +- `Create`, `Delete`, `ListMembers`, `Leave groups` +- `Create`, `Associate payment accounts` +- `Grant`, `Revoke` the above permissions + +For more details regarding `Group`, please refer to +https://docs.bnbchain.org/greenfield-docs/docs/guide/greenfield-blockchain/modules/permission. + +| params | description | +| --------- | ------------------------------------------------------- | +| creator | the account address of group owner who create the group | +| groupName | the name of the group. it's not globally unique | +| extra | extra info for the group | + +```jsx title="example" +const tx = await client.group.createGroup({ + creator: '0x00..', + groupName: 'group_name', + extra: 'extra_info', +}); +``` + + + +## deleteGroup + +Delete a group on Greenfield blockchain. The sender **MUST** only be the group owner, group members +or others would fail to send this transaction. + +:::warning + +Deleting a group will result in granted permission revoked. Members within the group will no longer +have access to resources (bucket, object) which granted permission on. + +::: + +| params | description | +| --------- | ------------------------------------------------------------------------------------------------- | +| operator | the account address of the operator who has the DeleteGroup permission of the group to be deleted | +| groupName | the name of the group which to be deleted | + +```jsx title="example" +const tx = await client.group.deleteGroup({ + groupName: 'group_name', + operator: '0x00..', +}); +``` + + + +## getBucketPolicyOfGroup + +Queries a bucket of policy that grants permission to a group. + +| params | description | +| ---------- | ----------- | +| bucketName | bucket name | +| groupId | group id | + +```jsx title="example" +await client.group.getBucketPolicyOfGroup('bucket_name', 1); +``` + +## getObjectPolicyOfGroup + +Queries a object of policy that grants permission to a group. + +| params | description | +| ---------- | ----------- | +| bucketName | bucket name | +| objectName | object name | +| groupId | group id | + +```jsx title="example" +await client.group.getObjectPolicyOfGroup('bucket_name', 'object_name', 1); +``` + + + +## headGroup + +Query the groupInfo on chain, return the group info if exists. + +| params | description | +| ---------- | -------------- | +| groupName | group name | +| groupOwner | owner of group | + +```jsx title="example" +await client.group.headGroup('group_name', '0x00..'); +``` + +## headGroupMember + +Query the group member info on chain, return true if the member exists in group. + +| params | description | +| ---------- | --------------- | +| groupName | group name | +| groupOwner | owner of group | +| member | member of group | + +```jsx title="example" +await client.group.headGroupMember( + 'groupName', + '0x00..', + '0x903904936a4328fac5477c0d96acf2E2bCaCD33d', +); +``` + + + +## leaveGroup + +Leave a group. A group member initially leaves a group. + +| params | description | +| ---------- | ------------------------------------------------------------- | +| address | operator address | +| member | the account address of the member who want to leave the group | +| groupOwner | the owner of the group you want to leave | +| groupName | the name of the group you want to leave | + +```jsx title="example" +await client.group.leaveGroup( + '0x...', // address + { + member: '0x...', + groupOwner: '0x...', + groupName: 'group_name', + }, +); +``` + + + +## putGroupPolicy + +Apply group policy to user specified by principalAddr, the sender needs to be the owner of the +group. + +| params | description | +| --------- | -------------- | +| owner | owner of group | +| groupName | name of group | + + + +```tsx title="example" +import { PermissionTypes } from '@bnb-chain/greenfield-js-sdk'; +const statement: PermissionTypes.Statement = { + effect: PermissionTypes.Effect.EFFECT_ALLOW, + actions: [PermissionTypes.ActionType.ACTION_UPDATE_GROUP_MEMBER], + resources: [], +}; + +await client.group.putGroupPolicy( + '0x...', // owner + 'group_name', + { + operator: '0x...', // address + statements: [statement], + principal: { + type: PermissionTypes.PrincipalType.PRINCIPAL_TYPE_GNFD_ACCOUNT, + value: '0x0000000000000000000000000000000000000001', + }, + }, +); +``` + + + +## updateGroupExtra + +Update a group extra. + +| params | description | +| ---------- | ----------------------------------------------------------------------------------------- | +| operator | the account address of the operator who has the UpdateGroupMember permission of the group | +| groupOwner | the account address of the group owner | +| groupName | the name of the group which to be updated | +| extra | extra info for the group to update | + +```jsx title="example" +await client.group.updateGroupExtra({ + operator: '0x...', + groupOwner: '0x...', + groupName: 'group_name', + extra: 'extra info', +}); +``` + + + +## updateGroupMember + +Update a group by adding or removing members. The sender can be the group owner or any individual +account(Principle) that has been granted permission by the group owner. + +| params | description | +| --------------- | ----------------------------------------------------------------------------------------- | +| operator | the account address of the operator who has the UpdateGroupMember permission of the group | +| groupOwner | the account address of the group owner | +| groupName | the name of the group which to be updated | +| membersToAdd | MsgGroupMember[] | +| membersToDelete | string[] | + + + + +```jsx title="example" +await client.group.updateGroupMember({ + operator: '0x..', + groupOwner: '0x..', + groupName: 'group_name', + membersToAdd: [ + { + expirationTime: toTimestamp(date), + member: '0x903904936a4328fac5477c0d96acf2E2bCaCD33d', + }, + ], + membersToDelete: [], +}); +``` + + + + +```jsx title="example" +await client.group.updateGroupMember({ + operator: '0x..', + groupOwner: '0x..', + groupName: 'group_name', + membersToAdd: [], + membersToDelete: ['0x903904936a4328fac5477c0d96acf2E2bCaCD33d'], +}); +``` + + + + + diff --git a/doc-site/docs/api/object.mdx b/doc-site/docs/api/object.mdx new file mode 100644 index 00000000..933507b6 --- /dev/null +++ b/doc-site/docs/api/object.mdx @@ -0,0 +1,340 @@ +--- +id: object +title: 'Object' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; + +## cancelCreateObject + +Send `CancelCreateObject` txn to greenfield chain. + +| params | description | +| ---------- | ----------------------------------- | +| operator | the account address of the operator | +| bucketName | the name of the bucket | +| objectName | the name of the object | + + + +## createFolder + +Send create empty object txn to greenfield chain. + +| params | description | +| ---------- | -------------------------------------- | +| bucketName | bucket name | +| objectName | object name | +| creator | the creator of object | +| authType | [AuthType](/client/sp-client#authtype) | + +```jsx title="example" +const tx = await client.object.createFolder( + { + bucketName: createObjectInfo.bucketName, + objectName: createObjectInfo.objectName + '/', + creator: address, + }, + { + type: 'EDDSA', + domain: window.location.origin, + seed: offChainData.seedString, + address, + }, +); +``` + +## createObject + +Get approval of creating object and send createObject txn to greenfield chain. + +| params | description | +| --------------- | ----------------------------------------------------------------------- | +| bucketName | bucket name | +| objectName | object name | +| creator | the creator of object | +| visibility | [VisibilityType](/types/visibility) | +| fileType | [file type](https://developer.mozilla.org/en-US/docs/Web/API/File/type) | +| redundancyType | [RedundancyType](/types/redundancy) | +| authType | [AuthType](/client/sp-client#authtype) | +| contentLength | file content length | +| expectCheckSums | file's expectCheckSums | + +```jsx title="example" +const tx = await client.object.createObject( + { + bucketName: 'bucket_name', + objectName: 'object_name', + creator: '0x...', + visibility: 'VISIBILITY_TYPE_PRIVATE', + fileType: 'json', + redundancyType: 'REDUNDANCY_EC_TYPE', + contentLength: 13311, + expectCheckSums: JSON.parse(expectCheckSums), + }, + { + type: 'EDDSA', + domain: window.location.origin, + seed: offChainData.seedString, + address, + }, +); +``` + + + +## deleteObject + +Send DeleteObject msg to greenfield chain and return txn hash. + +| params | description | +| ---------- | --------------------------------------------------------------------------------------------------- | +| operator | the account address of the operator who has the DeleteObject permission of the object to be deleted | +| bucketName | the name of the bucket where the object which to be deleted is stored | +| objectName | the name of the object which to be deleted | + +```jsx title="example" +const tx = await client.object.deleteObject({ + bucketName: 'bucket_name', + objectName: 'object_name', + operator: '0x000..', +}); +``` + + + +## deleteObjectPolicy + +Delete the object policy of the principal. + +| params | description | +| ------------- | --------------------------------------------------------- | +| operator | the granter who grant the permission to another principal | +| bucketName | the name of the bucket | +| objectName | the name of the object | +| principalAddr | principal address | +| principal | [PrincipalType](/types/principal) | + +```jsx title="example" +const tx = await client.object.deleteObjectPolicy( + '0x000..', // operator + 'bucket_name', // bucket name + 'object_name', // object name + '0x000..', // principalAddr + 'PRINCIPAL_TYPE_GNFD_GROUP', // PrincipalType +); +``` + + + +## downloadFile + +Download s3 object payload and return the related object info. + +| params | description | +| ---------- | ----------- | +| bucketName | bucket name | +| objectName | object name | + +```jsx title="example" +await client.object.downloadFile( + { + bucketName, + objectName, + }, + { + type: 'EDDSA', + address, + domain: window.location.origin, + seed: offChainData.seedString, + }, +); +``` + +## getObjectPolicy + +Get the object policy info of the user specified by principalAddr. + +| params | description | +| ------------- | ----------------- | +| bucketName | bucket name | +| objectName | object name | +| principalAddr | principal address | + +```jsx title="example" +const tx = await client.object.getObjectPolicy('bucket_name', 'object_name', '0x...'); +``` + +## getObjectPreviewUrl + +Get the object preview url. + +```jsx title="example" +const res = await client.object.getObjectPreviewUrl( + { + bucketName: 'bucket_name', + objectName: 'object_name', + queryMap: { + view: '1', + 'X-Gnfd-User-Address': address, + 'X-Gnfd-App-Domain': window.location.origin, + 'X-Gnfd-Expiry-Timestamp': '2023-09-03T09%3A23%3A39Z', + }, + }, + { + type: 'EDDSA', + address, + domain: window.location.origin, + seed: offChainData.seedString, + }, +); +``` + +## headObject + +Query the objectInfo on chain to check the object id, return the object info if exists. + +| params | description | +| ---------- | ----------- | +| bucketName | bucket name | +| objectName | object name | + +```jsx title="example" +await client.object.headObject(bucketName, objectName); +``` + +## headObjectById + +Query the objectInfo on chain by object id, return the object info if exists. + +```jsx title="example" +await client.object.headObjectById('12'); +``` + + + +## listObjects + +Lists the object info of the bucket. + +| params | description | +| ---------- | ----------- | +| bucketName | bucket name | + +```jsx title="example" +const res = await client.object.listObjects({ + bucketName, +}); +``` + +## listObjectsByIds + +List objects by object ids. + +| params | description | +| ------ | ---------------- | +| ids | object ids array | + +```jsx title="example" +await client.object.listObjectsByIds({ + ids: ['1', '2'], +}); +``` + +## listObjectPolicies + +List object policies by object info and action type. + +| params | description | +| ---------- | --------------------------- | +| bucketName | bucket name | +| objectName | object name | +| actionType | [ActionType](/types/action) | + +```jsx title="example" +const res = await client.object.listObjectPolicies({ + bucketName: 'bucket_name', + objectName: 'object_name', + actionType: 'ACTION_GET_OBJECT', +}); +``` + +## putObjectPolicy + +| params | description | +| --------- | ----------------------------- | +| operator | operator address | +| principal | [Principal](/types/principal) | + +Apply object policy to the principal, return the txn hash. + +```jsx title="example" +import { PermissionTypes } from '@bnb-chain/greenfield-js-sdk'; +const statement: PermissionTypes.Statement = { + effect: PermissionTypes.Effect.EFFECT_ALLOW, + actions: [PermissionTypes.ActionType.ACTION_GET_OBJECT], + resources: [], +}; +await client.object.putObjectPolicy('bucket_name', 'object_name', { + operator: '0x...', + statements: [statement], + principal: { + type: PermissionTypes.PrincipalType.PRINCIPAL_TYPE_GNFD_ACCOUNT, + value: '0x0000000000000000000000000000000000000001', + }, +}); +``` + + + +## updateObjectInfo + +Update object info by sending message to greenfield. + +| params | description | +| ---------- | ----------------------------------- | +| bucketName | bucket name | +| objectName | object name | +| operator | operator address | +| visibility | [VisibilityType](/types/visibility) | + +```jsx title="example" +const tx = await client.object.updateObjectInfo({ + bucketName: 'bucket_name', + objectName: 'object_name', + operator: '0x...', + visibility: 'VISIBILITY_TYPE_PUBLIC_READ', +}); +``` + + + +## uploadObject + +Uploading the object to bucket. + +| params | description | +| ---------- | -------------------------------------- | +| bucketName | bucket name | +| objectName | object name | +| body | file | +| txnHash | [createObject](#createobject) 's hash | +| authType | [AuthType](/client/sp-client#authtype) | + +```jsx title="example" +const uploadRes = await client.object.uploadObject( + { + bucketName: createObjectInfo.bucketName, + objectName: createObjectInfo.objectName, + body: file, + txnHash: txHash, + }, + { + type: 'EDDSA', + domain: window.location.origin, + seed: offChainData.seedString, + address, + }, +); +``` diff --git a/doc-site/docs/api/overview.mdx b/doc-site/docs/api/overview.mdx new file mode 100644 index 00000000..4a0fcb08 --- /dev/null +++ b/doc-site/docs/api/overview.mdx @@ -0,0 +1,21 @@ +--- +id: api-overview +title: 'Overview' +sidebar_position: 1 +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; + +The SDK contains three APIs: + +- + + send message to greenfield + +- + + [query](https://docs.bnbchain.org/greenfield-docs/docs/api/blockchain-rest) info from greenfield. + +- + + [more details](https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest) diff --git a/doc-site/docs/api/payment.mdx b/doc-site/docs/api/payment.mdx new file mode 100644 index 00000000..6a4b5dfa --- /dev/null +++ b/doc-site/docs/api/payment.mdx @@ -0,0 +1,108 @@ +--- +id: payment +title: 'Payment' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; + +## getStreamRecord + +Retrieve stream record information for a given stream address. + +| params | description | +| ------- | ----------------------------------------------- | +| account | The address of the stream record to be queried. | + +```jsx title="example" +await client.payment.getStreamRecord('0x...'); +``` + +## deposit + +Deposit BNB to a payment account. + +| params | description | +| ------- | ----------------------------------------------------------- | ------------------ | +| to | payment address of the stream record to receive the deposit | +| creator | | operator's account | +| amount | the amount to deposit | + +```jsx title="example" +const tx = await client.payment.deposit({ + amount: '1000000000', + creator: '0x...', + to: '0x...', +}); +``` + + + +## withdraw + +Withdraws BNB from a payment account. + +Withdrawal will trigger settlement, i.e., updating static balance and buffer balance. If the +withdrawal amount is greater than the static balance after settlement it will fail. If the +withdrawal amount is equal to or greater than 100BNB, it will be timelock-ed for 1 day duration. And +after the duration, a message without `from` field should be sent to get the funds. + +| params | description | +| ------- | ---------------------- | +| creator | operator's account | +| amount | the amount to withdraw | +| from | payment address | + +```jsx title="example" +const tx = await client.payment.withdraw({ + amount: '100000000', + creator: '0x...', + from: '0x..', +}); +``` + + + +## disableRefund + +Disable refund/withdrawal for a payment account. After disabling withdrawal of a payment account, no +more withdrawal can be executed. The action cannot be reverted. + +| params | description | +| ------ | ---------------- | +| owner | operator address | +| addr | payment address | + +```jsx title="example" +const tx = await client.payment.disableRefund({ + owner: address, + addr: paymentAccount, +}); +``` + + + +## listUserPaymentAccounts + +list user payment info. + +| params | description | +| -------- | -------------------------------------- | +| account | the address of user | +| authType | [AuthType](/client/sp-client#authtype) | + +```jsx title="example" +const res = await client.payment.listUserPaymentAccounts( + { + account: address, + }, + { + type: 'EDDSA', + domain: window.location.origin, + seed: offChainData.seedString, + address, + }, +); +``` + +List payment info by a user address. diff --git a/doc-site/docs/api/sp.mdx b/doc-site/docs/api/sp.mdx new file mode 100644 index 00000000..c5bd4c97 --- /dev/null +++ b/doc-site/docs/api/sp.mdx @@ -0,0 +1,106 @@ +--- +id: sp +title: 'Sp' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; + +## getStorageProviders + +List the storage providers info on chain. + +```jsx title="example" +await client.sp.getStorageProviders(); +``` + +## getStorageProviderInfo + +Get the specified storage providers info on chain. + +| params | description | +| ------ | ----------- | +| spId | sp's id | + +```jsx title="example" +await client.sp.getStorageProviderInfo(1); +``` + +## getQuerySpStoragePrice + +Get the storage price details for a particular storage provider, including update time, read price, +store price and .etc. + +| params | description | +| ------ | ---------------------- | +| spAddr | operator address of sp | + +```jsx title="example" +await client.sp.getQuerySpStoragePrice({ + spAddr: '0x..', +}); +``` + + + + + +## listGroups + +Get the group list by name and prefix. It provides fuzzy searches by inputting a specific name and +prefix. + +More details: +https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest/get_group_list. + +```jsx title="example" +await client.sp.listGroups({ + name: groupName, + prefix: '', + sourceType: 'SOURCE_TYPE_ORIGIN', + limit: 1000, + offset: 0, +}); +``` + +## listGroupsMembers + +Query a list of group members by a given group id. + +| params | description | +| ------- | ----------- | +| groupId | group id | + +```jsx title="example" +await client.sp.listGroupsMembers({ + groupId: 269, +}); +``` + +## listUserGroups + +Query a list of groups by a given user. + +```jsx title="example" +await client.sp.listUserGroups({ + address: '0x000..', + limit: 10, + startAfter: '0', +}); +``` + +## listUserOwnedGroups + +Retrieve groups where the user is the owner. + +```jsx title="example" +await client.sp.listUserOwnedGroups({ + address: '0x000..', + limit: 10, + startAfter: '0', +}); +``` diff --git a/doc-site/docs/api/virtualGroup.mdx b/doc-site/docs/api/virtualGroup.mdx new file mode 100644 index 00000000..a4a95a4c --- /dev/null +++ b/doc-site/docs/api/virtualGroup.mdx @@ -0,0 +1,68 @@ +--- +id: virtual-group +title: 'VirtualGroup' +--- + +import ApiTypes from '../../src/components/snippers/api-types.tsx'; +import Tx from '../../src/components/snippers/tx.mdx'; + +## getGlobalVirtualGroup + +| params | description | +| -------------------- | ---------------- | +| globalVirtualGroupId | virtual group id | + +```jsx title="example" +await client.virtualGroup.getGlobalVirtualGroup({ + globalVirtualGroupId: 11, +}); +``` + +## getGlobalVirtualGroupByFamilyID + +Query the virtual group family by ID. + +Virtual group family(VGF) serve as a means of grouping global virtual groups. Each bucket must be +associated with a unique global virtual group family and cannot cross families. + +| params | description | +| -------------------------- | ----------- | +| globalVirtualGroupFamilyId | VGF id | + +```jsx title="example" +await client.virtualGroup.getGlobalVirtualGroupByFamilyID({ + globalVirtualGroupFamilyId: 11, +}); +``` + +## getGlobalVirtualGroupFamily + +| params | description | +| -------- | ----------- | +| familyId | family id | + +```jsx title="example" +await client.virtualGroup.getGlobalVirtualGroupFamily({ + familyId: 11, +}); +``` + +## getGlobalVirtualGroupFamilies + +Get All global virtual group families. + +| params | description | +| ---------- | ------------------------------- | +| pagination | [Pagination](/types/pagination) | + +```jsx title="example" +await client.virtualGroup.getGlobalVirtualGroupFamilies({ + pagination: { + countTotal: true, + key: Uint8Array.from([]), + limit: Long.fromInt(10), + offset: Long.fromInt(0), + reverse: false, + }, +}); +``` diff --git a/doc-site/docs/client/_category_.json b/doc-site/docs/client/_category_.json new file mode 100644 index 00000000..10c50077 --- /dev/null +++ b/doc-site/docs/client/_category_.json @@ -0,0 +1,14 @@ +{ + "position": 2, + "label": "Client", + "collapsible": true, + "collapsed": true, + "className": "red", + "link": { + "type": "generated-index", + "title": "clients" + }, + "customProps": { + "description": "" + } +} \ No newline at end of file diff --git a/doc-site/docs/client/greenfield.mdx b/doc-site/docs/client/greenfield.mdx new file mode 100644 index 00000000..10b297e8 --- /dev/null +++ b/doc-site/docs/client/greenfield.mdx @@ -0,0 +1,38 @@ +--- +id: greenfield-client +title: 'Greenfield Client' +sidebar_position: 1 +--- + +# Create Greenfield Client + +| params | description | +| -------------- | ------------------- | +| GRPC_URL | Greenfield grpc url | +| GREEN_CHAIN_ID | Greenfield chain id | + +```js +import { Client } from '@bnb-chain/greenfield-js-sdk'; + +// Node.js +const client = Client.create(GRPC_URL, GREEN_CHAIN_ID); + +// Browser +const client = Client.create(GRPC_URL, String(GREEN_CHAIN_ID), { + zkCryptoUrl: + 'https://unpkg.com/@bnb-chain/greenfield-zk-crypto@0.0.2-alpha.4/dist/node/zk-crypto.wasm', +}); +``` + +:::tip + +Browser need load wasm manually. + +::: + +## Usage + +The JS SDK consists of two parts: + +- Chain: https://docs.bnbchain.org/greenfield-docs/docs/api/blockchain-rest +- Storage Provider: https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest diff --git a/doc-site/docs/client/query-client.mdx b/doc-site/docs/client/query-client.mdx new file mode 100644 index 00000000..dcb393db --- /dev/null +++ b/doc-site/docs/client/query-client.mdx @@ -0,0 +1,122 @@ +--- +id: query-client +title: 'Query Client' +sidebar_position: 2 +--- + +It's actually an encapsulation of the +[Blockchain API](https://docs.bnbchain.org/greenfield-docs/docs/api/blockchain-rest). + +:::info + +In most cases, you probably don't need to use the ‘Query Client` directly. + +::: + +## getAuthQueryClient + +```jsx title="example" +const rpc = await client.queryClient.getAuthQueryClient(); +await rpc.Account({ + address: '0x0000000000000000000000000000000000000001', +}); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/account-info + +## getBankQueryClient + +```jsx title="example" +const rpc = await client.queryClient.getBankQueryClient(); +await rpc.Balance({ + address: '0x0000000000000000000000000000000000000001', + denom: 'BNB', +}); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/account-info + +## getBridgeQueryClient + +```jsx title="example" +const rpc = await client.queryClient.getBridgeQueryClient(); +await rpc.Params(); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/bridge-params + +## getChallengeQueryClient + +```jsx title="example" +const rpc = await client.queryClient.getChallengeQueryClient(); +await rpc.Params(); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/attested-challenge + +## getCrosschainQueryClient + +```jsx title="example" +const rpc = await client.queryClient.getCrosschainQueryClient(); +await rpc.Params(); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/attested-challenge + +## getFeeGrantQueryClient + +```jsx title="example" +const rpc = await client.queryClient.getFeeGrantQueryClient(); +await rpc.Params(); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/allowance + +## getGashubClient + +```jsx title="example" +const rpc = await this.queryClient.getGashubClient(); +await rpc.MsgGasParams(request); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/msg-gas-params + +## getPaymentQueryClient + +```jsx title="example" +const rpc = await this.queryClient.getPaymentQueryClient(); +await rpc.Params(); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/msg-gas-params + +## getSpQueryClient + +```jsx title="example" +const rpc = await this.queryClient.getSpQueryClient(); +await rpc.Params(); +``` + +More apis: +https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/query-global-sp-store-price-by-time + +## getStorageQueryClient + +```jsx title="example" +const rpc = await client.queryClient.getStorageQueryClient(); +await rpc.HeadBucketById({ + bucketId: '1', +}); +``` + +More apis: https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/query-group-members-exist + +## getVirtualGroupClient + +```jsx title="example" +const rpc = await client.queryClient.getVirtualGroupClient(); +await rpc.Params(); +``` + +More apis: +https://docs.bnbchain.org/greenfield-docs/docs/greenfield-api/available-global-virtual-group-families diff --git a/doc-site/docs/client/sp-client.mdx b/doc-site/docs/client/sp-client.mdx new file mode 100644 index 00000000..34aebdc2 --- /dev/null +++ b/doc-site/docs/client/sp-client.mdx @@ -0,0 +1,101 @@ +--- +id: sp-client +sidebar_position: 3 +title: 'Storage Provider Client' +--- + +The api related to storage provider are some troublesome. + +## AuthType + +SDK support two +[authentication type](https://docs.bnbchain.org/greenfield-docs/docs/api/storage-provider-rest#authentication-type): + +- ECDSA: It is usually used on Node.js(Because it need to use a private key) +- EDDSA: It is usually used in a browser + +```jsx title="AuthType" +/** + * ECDSA Signature + */ +export type ECDSA = { + type: 'ECDSA', + privateKey: string, +}; +/** + * EDDSA Signature + */ +export type EDDSA = { + type: 'EDDSA', + seed: string, + domain: string, + address: string, +}; +export type AuthType = ECDSA | EDDSA; +``` + + + +## Sp Api Example + +`getBucketReadQuota` as example: + +```jsx title="browser" +const getAllSps = async () => { + const sps = await getSps(); + + return sps.map((sp) => { + return { + address: sp.operatorAddress, + endpoint: sp.endpoint, + name: sp.description?.moniker, + }; + }); +}; + +// generate seed: +const allSps = await getAllSps(); +const offchainAuthRes = await client.offchainauth.genOffChainAuthKeyPairAndUpload( + { + sps: allSps, + chainId: GREEN_CHAIN_ID, + expirationMs: 5 * 24 * 60 * 60 * 1000, + domain: window.location.origin, + address: 'your address', + }, + provider: 'wallet provider', +); + +// request sp api +const bucketQuota = await client.bucket.getBucketReadQuota( + { + bucketName, + }, + { + type: 'EDDSA', + seed: offchainAuthRes.seedString, + domain: window.location.origin, + address: 'your address', + }, +); +``` + +```jsx title="Nodejs" +// request sp api +const bucketQuota = await client.bucket.getBucketReadQuota( + { + bucketName, + }, + { + type: 'ECDSA', + privateKey: '0x....', + }, +); +``` diff --git a/doc-site/docs/client/tx-client.mdx b/doc-site/docs/client/tx-client.mdx new file mode 100644 index 00000000..bc8f1a48 --- /dev/null +++ b/doc-site/docs/client/tx-client.mdx @@ -0,0 +1,120 @@ +--- +id: tx-client +sidebar_position: 1 +title: 'Tx Client' +--- + +## About Tx + +A transaction contains at least: + +1. construct a transaction: The sdk already provides each transaction type +2. simulate: [txClient.simulate](#simulate) +3. broadcast [txClient.broadcast](#broadcast) + +## simulate + +Just Simulate a transaction and valid transaction. + +| params | description | +| ------ | ------------------------------------ | +| denom | the coin denom to query balances for | + +```jsx title="simulate tx" +// `tx` is a transaction constructed by the sdk +const simulateInfo = await tx.simulate({ + denom: 'BNB', +}); +``` + +## broadcast + +Broadcast the transaction to the chain. + +| params | description | +| --------------------- | ----------------------------------------------------------------------------------------------------------------- | +| denom | the coin denom to query balances for | +| gasLimit | can be set to any number, but not too small or the transaction may fail (recommended use `simulateInfo.gasLimit`) | +| gasPrice | 1 unit of Gas that the transaction sender is willing to pay. | +| payer | transaction sender | +| granter | transaction ganter (Generally empty `''`) | +| signTypedDataCallback | broadcast use `window.ethereum` as signature provider by default. | +| privateKey | If you broadcast in Nodejs, you can broadcast a tx by privateKey | + +```jsx title="broadcast tx" +// broadcast tx +const broadcastRes = await transferTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo.gasLimit), + gasPrice: simulateInfo.gasPrice, + payer: '0x0000000000000000000000000000000000000001', + granter: '', +}); +``` + +:::tip + +If you want to use others wallet, you can set `signTypedDataCallback`: + +```jsx +// trustwallet: +const broadcastRes = await transferTx.broadcast({ + // ... + signTypedDataCallback: async (addr: string, message: string) => { + return await window.trustwallet.request({ + method: 'eth_signTypedData_v4', + params: [addr, message], + }); + }, +}); +``` + +If you broadcast in Nodejs, you can broadcast a tx by privateKey: + +```jsx +const broadcastRes = await transferTx.broadcast({ + // ... + privateKey: '0x.......', +}); +``` + +::: + +## Example + +Take `transfer` tx as an example. + +### 1. construct a transaction + +```jsx title="construct tx" +const transferTx = await client.account.transfer({ + fromAddress: address, + toAddress: transferInfo.to, + amount: [ + { + denom: 'BNB', + amount: '1000000000', + }, + ], +}); +``` + +### 2. simulate + +```jsx title="simulate tx" +const simulateInfo = await transferTx.simulate({ + denom: 'BNB', +}); +``` + +### 3. broadcast + +```jsx title="broadcast tx" +const broadcastRes = await transferTx.broadcast({ + denom: 'BNB', + gasLimit: Number(simulateInfo.gasLimit), + gasPrice: simulateInfo.gasPrice, + payer: address, + granter: '', +}); +``` diff --git a/doc-site/docs/constants/msg-type-url.mdx b/doc-site/docs/constants/msg-type-url.mdx new file mode 100644 index 00000000..92b2d4ff --- /dev/null +++ b/doc-site/docs/constants/msg-type-url.mdx @@ -0,0 +1,9 @@ +--- +id: msg-type-url +title: Message Type URL +--- + +The specific type urls you want look up. Leave empty to get all entries. + +More details: +https://github.com/bnb-chain/greenfield-js-sdk/blob/alpha/packages/js-sdk/src/constants/typeUrl.ts diff --git a/doc-site/docs/getting-started/_category_.json b/doc-site/docs/getting-started/_category_.json new file mode 100644 index 00000000..be0df9da --- /dev/null +++ b/doc-site/docs/getting-started/_category_.json @@ -0,0 +1,14 @@ +{ + "position": 1, + "label": "Getting Started", + "collapsible": true, + "collapsed": false, + "className": "red", + "link": { + "type": "generated-index", + "title": "Getting Started" + }, + "customProps": { + "description": "" + } +} \ No newline at end of file diff --git a/doc-site/docs/getting-started/install.mdx b/doc-site/docs/getting-started/install.mdx new file mode 100644 index 00000000..19cf18ad --- /dev/null +++ b/doc-site/docs/getting-started/install.mdx @@ -0,0 +1,35 @@ +--- +id: install +sidebar_position: 2 +title: Install +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +## Install + + + + +```bash +> npm install @bnb-chain/greenfield-js-sdk +``` + + + + +```bash +> yarn add @bnb-chain/greenfield-js-sdk +``` + + + + +```bash +> pnpm add @bnb-chain/greenfield-js-sdk +``` + + + + diff --git a/doc-site/docs/getting-started/overview.md b/doc-site/docs/getting-started/overview.md new file mode 100644 index 00000000..074ecac0 --- /dev/null +++ b/doc-site/docs/getting-started/overview.md @@ -0,0 +1,42 @@ +--- +id: getting-started-overview +sidebar_position: 1 +slug: / +--- + +# Overview + +You can find some package documentation below: + +| Package | Description | Version | +| --- | --- | --- | +| [@bnb-chain/greenfield-js-sdk](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/js-sdk/README.md) | A client library for Greenfield Chain | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-js-sdk?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-js-sdk) | +| [@bnb-chain/greenfiled-file-handle](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/file-handle/README.md) | WASM module that handle file, such as `checksums` | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfiled-file-handle?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfiled-file-handle) | +| [@bnb-chain/greenfield-zk-crypto](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/zk-crypto/README.md) | WASM module about sign crypto | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fgreenfield-zk-crypto?color=blue)](https://www.npmjs.com/package/@bnb-chain/greenfield-zk-crypto) | +| [@bnb-chain/create-gnfd-app](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/create-gnfd-app/README.md) | Create Greenfield App Quickly | [![npm](https://img.shields.io/npm/v/%40bnb-chain%2Fcreate-gnfd-app?color=blue)](https://www.npmjs.com/package/@bnb-chain/create-gnfd-app) | + +## Online Examples + +* [Nextjs](https://codesandbox.io/p/github/rrr523/greenfield-nextjs-template/main) +* [Create React App](https://codesandbox.io/p/github/rrr523/greenfield-cra-template/main) +* [Vite](https://codesandbox.io/p/github/rrr523/greenfield-vite-template/main) + +## Supported JS environments + +1. Modern browsers (Chromium, Firefox, Safari) +2. Browser extensions (Chromium, Firefox) +3. Nodejs + +## Contribution + +1. install dependencies + +```bash +> pnpm install +``` + +2. Build package: +```bash +> pnpm run build +``` + diff --git a/doc-site/docs/getting-started/quick-start.md b/doc-site/docs/getting-started/quick-start.md new file mode 100644 index 00000000..858d8c46 --- /dev/null +++ b/doc-site/docs/getting-started/quick-start.md @@ -0,0 +1,16 @@ +--- +id: quick-start +sidebar_position: 3 +--- + +# Quick Start + +We provide templates that can run `React` (Next.js, Vite and CRA(Legacy) etc) directly. + +You can use [`create-gnfd-app`](https://github.com/bnb-chain/greenfield-js-sdk/tree/main/packages/create-gnfd-app) to create a app quickly: + +```bash +> npx @bnb-chain/create-gnfd-app +``` + +![](https://github.com/bnb-chain/greenfield-js-sdk/raw/alpha/packages/create-gnfd-app/example.gif) diff --git a/doc-site/docs/types/_category_.json b/doc-site/docs/types/_category_.json new file mode 100644 index 00000000..3458c194 --- /dev/null +++ b/doc-site/docs/types/_category_.json @@ -0,0 +1,14 @@ +{ + "position": 4, + "label": "Types", + "collapsible": true, + "collapsed": false, + "className": "red", + "link": { + "type": "generated-index", + "title": "Types" + }, + "customProps": { + "description": "" + } +} \ No newline at end of file diff --git a/doc-site/docs/types/action.mdx b/doc-site/docs/types/action.mdx new file mode 100644 index 00000000..f592dcc6 --- /dev/null +++ b/doc-site/docs/types/action.mdx @@ -0,0 +1,26 @@ +--- +id: action +title: ActionType +--- + +The operations you can execute in greenfield storage network + +```jsx +export enum ActionType { + ACTION_UNSPECIFIED = 0, + ACTION_UPDATE_BUCKET_INFO = 1, + ACTION_DELETE_BUCKET = 2, + ACTION_CREATE_OBJECT = 3, + ACTION_DELETE_OBJECT = 4, + ACTION_COPY_OBJECT = 5, + ACTION_GET_OBJECT = 6, + ACTION_EXECUTE_OBJECT = 7, + ACTION_LIST_OBJECT = 8, + ACTION_UPDATE_GROUP_MEMBER = 9, + ACTION_DELETE_GROUP = 10, + ACTION_UPDATE_OBJECT_INFO = 11, + ACTION_UPDATE_GROUP_EXTRA = 12, + ACTION_TYPE_ALL = 99, + UNRECOGNIZED = -1, +} +``` diff --git a/doc-site/docs/types/coin.mdx b/doc-site/docs/types/coin.mdx new file mode 100644 index 00000000..d70e563e --- /dev/null +++ b/doc-site/docs/types/coin.mdx @@ -0,0 +1,15 @@ +--- +id: coin +title: Coin +--- + +`Coin` defines a token with a denomination and an amount. + +The amount field is an Int which implements the custom method. + +```jsx +export interface Coin { + denom: string; + amount: string; +} +``` diff --git a/doc-site/docs/types/pagination.mdx b/doc-site/docs/types/pagination.mdx new file mode 100644 index 00000000..8dc6a275 --- /dev/null +++ b/doc-site/docs/types/pagination.mdx @@ -0,0 +1,41 @@ +--- +id: pagination +title: Pagination +--- + +PageRequest is to be embedded in gRPC request messages for efficient. + +```jsx +export interface PageRequest { + /** + * key is a value returned in PageResponse.next_key to begin + * querying the next page most efficiently. Only one of offset or key + * should be set. + */ + key: Uint8Array; + /** + * offset is a numeric offset that can be used when key is unavailable. + * It is less efficient than using key. Only one of offset or key should + * be set. + */ + offset: Long; + /** + * limit is the total number of results to be returned in the result page. + * If left empty it will default to a value to be set by each app. + */ + limit: Long; + /** + * count_total is set to true to indicate that the result set should include + * a count of the total number of items available for pagination in UIs. + * count_total is only respected when offset is used. It is ignored when key + * is set. + */ + countTotal: boolean; + /** + * reverse is set to true if results are to be returned in the descending order. + * + * Since: cosmos-sdk 0.43 + */ + reverse: boolean; +} +``` diff --git a/doc-site/docs/types/principal.mdx b/doc-site/docs/types/principal.mdx new file mode 100644 index 00000000..ff049173 --- /dev/null +++ b/doc-site/docs/types/principal.mdx @@ -0,0 +1,16 @@ +--- +id: principal +title: PrincipalType +--- + +PrincipalType refers to the identity type of system users or entities. In Greenfield, it usually +refers to accounts or groups. + +```jsx +export enum PrincipalType { + PRINCIPAL_TYPE_UNSPECIFIED = 0, + PRINCIPAL_TYPE_GNFD_ACCOUNT = 1, + PRINCIPAL_TYPE_GNFD_GROUP = 2, + UNRECOGNIZED = -1, +} +``` diff --git a/doc-site/docs/types/redundancy.mdx b/doc-site/docs/types/redundancy.mdx new file mode 100644 index 00000000..55b1a69a --- /dev/null +++ b/doc-site/docs/types/redundancy.mdx @@ -0,0 +1,15 @@ +--- +id: redundancy +title: RedundancyType +--- + +RedundancyType represents the redundancy algorithm type for object data, which can be either +multi-replica or erasure coding. + +```tsx +export enum RedundancyType { + REDUNDANCY_EC_TYPE = 0, + REDUNDANCY_REPLICA_TYPE = 1, + UNRECOGNIZED = -1, +} +``` diff --git a/doc-site/docs/types/timestamp.mdx b/doc-site/docs/types/timestamp.mdx new file mode 100644 index 00000000..34ef07dc --- /dev/null +++ b/doc-site/docs/types/timestamp.mdx @@ -0,0 +1,27 @@ +--- +id: timestamp +title: Timestamp +--- + +A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a +count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an +epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the +Gregorian calendar backwards to year one. + +```jsx +export interface Timestamp { + /** + * Represents seconds of UTC time since Unix epoch + * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + * 9999-12-31T23:59:59Z inclusive. + */ + seconds: Long; + /** + * Non-negative fractions of a second at nanosecond resolution. Negative + * second values with fractions must still have non-negative nanos values + * that count forward in time. Must be from 0 to 999,999,999 + * inclusive. + */ + nanos: number; +} +``` diff --git a/doc-site/docs/types/visibility.mdx b/doc-site/docs/types/visibility.mdx new file mode 100644 index 00000000..e91de1c9 --- /dev/null +++ b/doc-site/docs/types/visibility.mdx @@ -0,0 +1,23 @@ +--- +id: visibility +title: VisibilityType +--- + +visibility means the bucket is private or public. if private, only bucket owner or grantee can read +it,otherwise every greenfield user can read it. + +## VisibilityType + +`VisibilityType` is enum: + +```jsx +/** VisibilityType is the resources public status. */ +export declare enum VisibilityType { + VISIBILITY_TYPE_UNSPECIFIED = 0, + VISIBILITY_TYPE_PUBLIC_READ = 1, + VISIBILITY_TYPE_PRIVATE = 2, + /** VISIBILITY_TYPE_INHERIT - If the bucket Visibility is inherit, it's finally set to private. If the object Visibility is inherit, it's the same as bucket. */ + VISIBILITY_TYPE_INHERIT = 3, + UNRECOGNIZED = -1 +} +``` diff --git a/doc-site/docusaurus.config.js b/doc-site/docusaurus.config.js new file mode 100644 index 00000000..a878e389 --- /dev/null +++ b/doc-site/docusaurus.config.js @@ -0,0 +1,139 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +// @ts-check +// Note: type annotations allow type checking and IDEs autocompletion + +const lightCodeTheme = require('prism-react-renderer/themes/github'); +const darkCodeTheme = require('prism-react-renderer/themes/dracula'); + +/** @type {import('@docusaurus/types').Config} */ +const config = { + title: 'Greenfield JavaScript SDK', + tagline: `An easy-to-use tool designed to help developers build decentralized applications (DApps) on the Greenfield blockchain.`, + favicon: 'img/favicon.ico', + + // Set the production url of your site here + url: 'https://greenfield-js-sdk.netlify.app', + // Set the // pathname under which your site is served + // For GitHub pages deployment, it is often '//' + baseUrl: '/', + + // GitHub pages deployment config. + // If you aren't using GitHub pages, you don't need these. + organizationName: 'bnb-chain', // Usually your GitHub org/user name. + projectName: 'greenfield-js-sdk', // Usually your repo name. + + onBrokenLinks: 'throw', + onBrokenMarkdownLinks: 'warn', + + // Even if you don't use internalization, you can use this field to set useful + // metadata like html lang. For example, if your site is Chinese, you may want + // to replace "en" with "zh-Hans". + i18n: { + defaultLocale: 'en', + locales: ['en'], + }, + + presets: [ + [ + '@docusaurus/preset-classic', + /** @type {import('@docusaurus/preset-classic').Options} */ + ({ + docs: { + routeBasePath: '/', + sidebarPath: require.resolve('./sidebars.js'), + editUrl: 'https://github.com/bnb-chain/greenfield-js-sdk/tree/docs_sit/doc-site/', + }, + blog: false, + theme: { + customCss: require.resolve('./src/css/custom.css'), + }, + }), + ], + ], + + themeConfig: + /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ + ({ + // Replace with your project's social card + image: 'img/docusaurus-social-card.jpg', + navbar: { + title: 'Greenfield JavaScript SDK', + logo: { + alt: 'Greenfield logo', + src: 'img/logo.svg', + }, + items: [ + // { + // type: 'docSidebar', + // sidebarId: 'GettingStartSidebar', + // position: 'left', + // label: 'Getting Started', + // }, + { + href: 'https://github.com/bnb-chain/greenfield-js-sdk', + label: 'GitHub', + position: 'right', + }, + ], + }, + footer: { + style: 'dark', + links: [ + { + title: 'Docs', + items: [ + { + label: 'Getting Started', + to: '/', + }, + { + label: 'Client', + to: '/category/client', + }, + { + label: 'API', + to: '/category/api', + }, + { + label: 'types', + to: '/category/types', + }, + ], + }, + { + title: 'Github', + items: [ + { + label: 'JS SDK', + href: 'https://github.com/bnb-chain/greenfield-js-sdk', + }, + { + label: 'Go SDK', + href: 'https://github.com/bnb-chain/greenfield-go-sdk', + }, + ], + }, + /* { + title: 'More', + items: [ + { + label: 'Blog', + to: '/blog', + }, + { + label: 'GitHub', + href: 'https://github.com/facebook/docusaurus', + }, + ], + }, */ + ], + copyright: `Copyright © ${new Date().getFullYear()}. Built with Docusaurus.`, + }, + prism: { + theme: lightCodeTheme, + darkTheme: darkCodeTheme, + }, + }), +}; + +module.exports = config; diff --git a/doc-site/package.json b/doc-site/package.json new file mode 100644 index 00000000..87f0f2b6 --- /dev/null +++ b/doc-site/package.json @@ -0,0 +1,43 @@ +{ + "name": "greenfield-js-sdk-docs", + "version": "0.0.0", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids" + }, + "dependencies": { + "@docusaurus/core": "2.4.1", + "@docusaurus/preset-classic": "2.4.1", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.2.1", + "prism-react-renderer": "^1.3.5", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "2.4.1" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "engines": { + "node": ">=16.14" + } +} diff --git a/doc-site/sidebars.js b/doc-site/sidebars.js new file mode 100644 index 00000000..3f4e702c --- /dev/null +++ b/doc-site/sidebars.js @@ -0,0 +1,31 @@ +/** + * Creating a sidebar enables you to: + - create an ordered group of docs + - render a sidebar for each doc of that group + - provide next/previous navigation + + The sidebars can be generated from the filesystem, or explicitly defined here. + + Create as many sidebars as you want. + */ + +// @ts-check + +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const sidebars = { + // By default, Docusaurus generates a sidebar from the docs folder structure + // tutorialSidebar: [{ type: 'autogenerated', dirName: '.' }], + + GettingStartSidebar: [ + { type: 'autogenerated', dirName: '.' }, + // { + // type: 'category', + // label: 'Getting Started', + // items: ['getting-started/overview', 'getting-started/install', 'getting-started/quick-start'], + // className: 'category-as-header', + // }, + // { type: 'autogenerated', dirName: './docs/api' }, + ], +}; + +module.exports = sidebars; diff --git a/doc-site/src/components/account/getAccount.tsx b/doc-site/src/components/account/getAccount.tsx new file mode 100644 index 00000000..60e7c9da --- /dev/null +++ b/doc-site/src/components/account/getAccount.tsx @@ -0,0 +1,7 @@ +import React from 'react'; + +const GetAccount = () => { + return
        xx
        ; +}; + +export default GetAccount; diff --git a/doc-site/src/components/snippers/api-types.tsx b/doc-site/src/components/snippers/api-types.tsx new file mode 100644 index 00000000..817505ad --- /dev/null +++ b/doc-site/src/components/snippers/api-types.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +type API_TYPE = 'Tx' | 'Query' | 'Storage Provider'; + +const ApiTypes = (props: { type: API_TYPE }) => { + const { type } = props; + return ( + + {type} + + ); +}; + +export default ApiTypes; diff --git a/doc-site/src/components/snippers/tx.mdx b/doc-site/src/components/snippers/tx.mdx new file mode 100644 index 00000000..784a36e0 --- /dev/null +++ b/doc-site/src/components/snippers/tx.mdx @@ -0,0 +1,6 @@ +:::tip + +This is only [construct](/client/tx-client) tx, next need [simulate](/client/tx-client#simulate) and +[broadcast](/client/tx-client#broadcast) + +::: diff --git a/doc-site/src/css/custom.css b/doc-site/src/css/custom.css new file mode 100644 index 00000000..2bc6a4cf --- /dev/null +++ b/doc-site/src/css/custom.css @@ -0,0 +1,30 @@ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ + +/* You can override the default Infima variables here. */ +:root { + --ifm-color-primary: #2e8555; + --ifm-color-primary-dark: #29784c; + --ifm-color-primary-darker: #277148; + --ifm-color-primary-darkest: #205d3b; + --ifm-color-primary-light: #33925d; + --ifm-color-primary-lighter: #359962; + --ifm-color-primary-lightest: #3cad6e; + --ifm-code-font-size: 95%; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); +} + +/* For readability concerns, you should choose a lighter palette in dark mode. */ +[data-theme='dark'] { + --ifm-color-primary: #25c2a0; + --ifm-color-primary-dark: #21af90; + --ifm-color-primary-darker: #1fa588; + --ifm-color-primary-darkest: #1a8870; + --ifm-color-primary-light: #29d5b0; + --ifm-color-primary-lighter: #32d8b4; + --ifm-color-primary-lightest: #4fddbf; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); +} diff --git a/doc-site/static/.nojekyll b/doc-site/static/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/doc-site/static/img/docusaurus-social-card.jpg b/doc-site/static/img/docusaurus-social-card.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ffcb448210e1a456cb3588ae8b396a597501f187 GIT binary patch literal 55746 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
        sH`pxVp$E*LSx0bY$^ho1gZ(Ce+BX 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 fgzs%Vr*-jYG(YMS<ttdtee# literal 0 HcmV?d00001 diff --git a/doc-site/static/img/docusaurus.png b/doc-site/static/img/docusaurus.png new file mode 100644 index 0000000000000000000000000000000000000000..f458149e3c8f53335f28fbc162ae67f55575c881 GIT binary patch literal 5142 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 F{0H{b<4^zq literal 0 HcmV?d00001 diff --git a/doc-site/static/img/favicon.ico b/doc-site/static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..693bb20b8ec7a64c160b4cc0808e0ab5126646af GIT binary patch literal 4286 zcmb`JPiPcZ9LFb7;$}C*AQDmu>{5!9QbasRDWwS>N|92Elp@80G$2w+8$={D0V|;_ zB?l=X*wRDsWIad@q1_ogbY&@v^wdLXrAW3cC5Y&I5+o~8r=Q=YK5@Uc>tvavJ2?M-G!*6?qu{dHj8_ zNZiXE8#amAlIp|rbMPSQoAEEH-FUr{)TC_~?!F*LSIx(9YK=UKU@#eze9kdmc)kn% zjN+T$m%iSx`EVr1bLh?`wP~MC#>4p!oW`Tq)-m_Q90W@soYThF(~s!edC+HZkHd?< zyQ^2w{)BN0w0YMH{}kV)o|4CHxNjOQbA?y2xoE7T@dJ?UB>LI&&*nGpTjoFh1H{jQ zc&*YewC_iP%^TYveicMo@b{7PNuhS)5C1s)LQ~p7OZKWolkaB!#GVSgT;`gqJ{3M~ zKL>3ctbhEN6ZDyRKy0ul@qDBU|1&0L%l>BmuofimuKYcH*7(zprOx}$nuz_cY{#Fm zd1oRyy&b={|3gtc_sdmJq|p}nKo;;+4tm}<^8C%kxw-L zx7`2OKbU`L${yCTm)gFvcf&ae{)HFrKb!cI-#u_=qukJo=fA5I+LItUOH2;%u0}e> zU+Rd&c*--LPdE?fxDEl%e|-+f`QP?U&|MIZ#QeK$e9e{E`1~>c32i*YdkGvgapuZe z9|oLP)G8)N_F<_}gp=@Zn|}#^YFhPLtG2$3?>m|1e5PL+Z~@+B5LMQ24ub_dM|cOo zH8VckZ|pDmyXpzL-`d)e&(NR8WGMYkTZn3xHU)Pk#8 zm6}%HAdi-PN@C%~wK8K2C#XAVkM`0ukB!>McR%BN6}0YwO>I2nJd!$e62!H#_{(?p zv^}9MvuB$fYrR diff --git a/doc-site/static/img/undraw_docusaurus_mountain.svg b/doc-site/static/img/undraw_docusaurus_mountain.svg new file mode 100644 index 00000000..af961c49 --- /dev/null +++ b/doc-site/static/img/undraw_docusaurus_mountain.svg @@ -0,0 +1,171 @@ + + Easy to Use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc-site/static/img/undraw_docusaurus_react.svg b/doc-site/static/img/undraw_docusaurus_react.svg new file mode 100644 index 00000000..94b5cf08 --- /dev/null +++ b/doc-site/static/img/undraw_docusaurus_react.svg @@ -0,0 +1,170 @@ + + Powered by React + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc-site/static/img/undraw_docusaurus_tree.svg b/doc-site/static/img/undraw_docusaurus_tree.svg new file mode 100644 index 00000000..d9161d33 --- /dev/null +++ b/doc-site/static/img/undraw_docusaurus_tree.svg @@ -0,0 +1,40 @@ + + Focus on What Matters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/nextjs/CHANGELOG.md b/examples/nextjs/CHANGELOG.md index cec5c50b..522fa09b 100644 --- a/examples/nextjs/CHANGELOG.md +++ b/examples/nextjs/CHANGELOG.md @@ -1,5 +1,25 @@ # @demo/wallet +## 0.0.7 + +### Patch Changes + +- Updated dependencies + [[`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9), + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1)]: + - @bnb-chain/greenfiled-file-handle@0.2.2 + - @bnb-chain/greenfield-js-sdk@0.2.6 + +## 0.0.7-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9), + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1)]: + - @bnb-chain/greenfiled-file-handle@0.2.2-alpha.0 + - @bnb-chain/greenfield-js-sdk@0.2.6-alpha.0 + ## 0.0.6 ### Patch Changes diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 2b8d76a8..52195e38 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/wallet", - "version": "0.0.6", + "version": "0.0.7", "private": true, "scripts": { "dev": "cross-env NODE_ENV=development next dev", diff --git a/examples/nextjs/src/components/group/delete/index.tsx b/examples/nextjs/src/components/group/delete/index.tsx index 828e318d..632f2706 100644 --- a/examples/nextjs/src/components/group/delete/index.tsx +++ b/examples/nextjs/src/components/group/delete/index.tsx @@ -6,7 +6,7 @@ export const DeleteGroup = () => { const { address, connector } = useAccount(); const [deleteGroupInfo, setDeleteGroupInfo] = useState({ - bucketName: '', + groupName: '', }); return ( @@ -14,10 +14,10 @@ export const DeleteGroup = () => {

        delete group

        { - setDeleteGroupInfo({ ...setDeleteGroupInfo, bucketName: e.target.value }); + setDeleteGroupInfo({ ...setDeleteGroupInfo, groupName: e.target.value }); }} /> @@ -26,7 +26,7 @@ export const DeleteGroup = () => { if (!address) return; const deleteGroupTx = await client.group.deleteGroup({ - groupName: deleteGroupInfo.bucketName, + groupName: deleteGroupInfo.groupName, operator: address, }); diff --git a/examples/nodejs/CHANGELOG.md b/examples/nodejs/CHANGELOG.md index 07914ab6..817717f5 100644 --- a/examples/nodejs/CHANGELOG.md +++ b/examples/nodejs/CHANGELOG.md @@ -1,5 +1,25 @@ # @demo/nodejs +## 0.0.10 + +### Patch Changes + +- Updated dependencies + [[`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9), + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1)]: + - @bnb-chain/greenfiled-file-handle@0.2.2 + - @bnb-chain/greenfield-js-sdk@0.2.6 + +## 0.0.10-alpha.0 + +### Patch Changes + +- Updated dependencies + [[`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9), + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1)]: + - @bnb-chain/greenfiled-file-handle@0.2.2-alpha.0 + - @bnb-chain/greenfield-js-sdk@0.2.6-alpha.0 + ## 0.0.9 ### Patch Changes diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index 6247770f..8c489809 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -1,6 +1,6 @@ { "name": "@demo/nodejs", - "version": "0.0.9", + "version": "0.0.10", "type": "commonjs", "private": true, "scripts": {}, diff --git a/package.json b/package.json index 624b0aec..72ee45cb 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "scripts": { "prepare": "husky install", "version": "pnpm install && changeset version", - "clean": "rimraf node_modules **/*/node_modules" + "clean": "rimraf node_modules **/*/node_modules", + "build": "pnpm run -F \"./packages/**\" -r build" }, "keywords": [ "greenfield" @@ -26,11 +27,7 @@ "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.3.0", "@rollup/plugin-strip": "^3.0.2", - "@rollup/plugin-typescript": "^8.5.0", - "rollup": "^2.79.1", - "rollup-plugin-auto-external": "^2.0.0", - "rollup-plugin-polyfill-node": "^0.10.2", - "rollup-plugin-terser": "^7.0.2", + "@rollup/plugin-typescript": "^11.1.3", "@types/chai": "^4.3.5", "@types/mocha": "^9.1.1", "@types/node": "^18.16.18", @@ -47,6 +44,10 @@ "lint-staged": "^13.2.2", "mocha": "^10.2.0", "prettier": "^2.8.8", - "rimraf": "^3.0.2" + "rimraf": "^3.0.2", + "rollup": "^2.79.1", + "rollup-plugin-auto-external": "^2.0.0", + "rollup-plugin-polyfill-node": "^0.10.2", + "rollup-plugin-terser": "^7.0.2" } } diff --git a/packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts b/packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts deleted file mode 100644 index 9d6ca5fd..00000000 --- a/packages/chain-sdk/src/clients/spclient/spApis/bucketApproval.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; -import { ICreateBucketMsgType, ReqMeta } from '@/types'; -import { toHex, utf8ToBytes } from 'ethereum-cryptography/utils'; -import { getSortQuery } from '../auth'; - -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_approval -export const getBucketApprovalMetaInfo = async (endpoint: string, msg: ICreateBucketMsgType) => { - const path = '/greenfield/admin/v1/get-approval'; - const queryMap = { - action: 'CreateBucket', - }; - const query = getSortQuery(queryMap); - const url = `${endpoint}${path}?${query}`; - const unSignedMessageInHex = toHex(utf8ToBytes(JSON.stringify(msg))); - - const reqMeta: Partial = { - contentSHA256: EMPTY_STRING_SHA256, - unsignMsg: unSignedMessageInHex, - method: METHOD_GET, - url: { - hostname: new URL(endpoint).hostname, - query, - path, - }, - }; - - const optionsWithOutHeaders: Omit = { - method: METHOD_GET, - }; - - return { - url, - optionsWithOutHeaders, - reqMeta, - }; -}; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts b/packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts deleted file mode 100644 index 903039be..00000000 --- a/packages/chain-sdk/src/clients/spclient/spApis/migrateApproval.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; -import { IMigrateBucketMsgType, ReqMeta } from '@/types'; -import { toHex, utf8ToBytes } from 'ethereum-cryptography/utils'; -import { getSortQuery } from '../auth'; - -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_approval -export const getMigrateMetaInfo = async (endpoint: string, msg: IMigrateBucketMsgType) => { - const path = '/greenfield/admin/v1/get-approval'; - const queryMap = { - action: 'MigrateBucket', - }; - const query = getSortQuery(queryMap); - const url = `${endpoint}${path}?${query}`; - const unSignedMessageInHex = toHex(utf8ToBytes(JSON.stringify(msg))); - - const reqMeta: Partial = { - contentSHA256: EMPTY_STRING_SHA256, - method: METHOD_GET, - url: { - hostname: new URL(url).hostname, - query, - path, - }, - unsignMsg: unSignedMessageInHex, - }; - - const optionsWithOutHeaders: Omit = { - method: METHOD_GET, - }; - - return { - url, - optionsWithOutHeaders, - reqMeta, - }; -}; diff --git a/packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts b/packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts deleted file mode 100644 index a30339de..00000000 --- a/packages/chain-sdk/src/clients/spclient/spApis/objectApproval.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { EMPTY_STRING_SHA256, METHOD_GET } from '@/constants'; -import { ICreateObjectMsgType, ReqMeta } from '@/types'; -import { toHex, utf8ToBytes } from 'ethereum-cryptography/utils'; -import { getSortQuery } from '../auth'; - -// https://docs.bnbchain.org/greenfield-docs/docs/api/storgae-provider-rest/get_approval -export const getObjectApprovalMetaInfo = async (endpoint: string, msg: ICreateObjectMsgType) => { - const path = '/greenfield/admin/v1/get-approval'; - const queryMap = { - action: 'CreateObject', - }; - const query = getSortQuery(queryMap); - const url = `${endpoint}${path}?${query}`; - const unSignedMessageInHex = toHex(utf8ToBytes(JSON.stringify(msg))); - - const reqMeta: Partial = { - contentSHA256: EMPTY_STRING_SHA256, - unsignMsg: unSignedMessageInHex, - method: METHOD_GET, - url: { - hostname: new URL(endpoint).hostname, - query, - path, - }, - }; - - const optionsWithOutHeaders: Omit = { - method: METHOD_GET, - }; - - return { - url, - optionsWithOutHeaders, - reqMeta, - }; -}; diff --git a/packages/chain-sdk/src/types/sp-xml/Common.ts b/packages/chain-sdk/src/types/sp-xml/Common.ts deleted file mode 100644 index 931c1e67..00000000 --- a/packages/chain-sdk/src/types/sp-xml/Common.ts +++ /dev/null @@ -1,131 +0,0 @@ -export interface BucketMeta { - BucketInfo: BucketInfo; - Removed: boolean; - DeleteAt: number; - DeleteReason: string; - Operator: string; - CreateTxHash: string; - UpdateTxHash: string; - UpdateAt: number; - UpdateTime: number; -} - -export interface BucketInfo { - // PrimarySpId: number; - BucketName: string; - BucketStatus: number; - ChargedReadQuota: number; - CreateAt: number; - GlobalVirtualGroupFamilyId: number; - Id: string; - Owner: string; - PaymentAddress: string; - SourceType: number; - Visibility: number; -} - -export interface StreamRecord { - Account: string; - CrudTimestamp: string; - NetflowRate: string; - StaticBalance: string; - BufferBalance: string; - LockBalance: string; - Status: string; - SettleTimestamp: string; - OutFlowCount: string; - FrozenNetflowRate: string; -} - -export interface ObjectMeta { - ObjectInfo: ObjectInfo; - LockedBalance: string; - Removed: boolean; - UpdateAt: number; - DeleteAt: number; - DeleteReason: string; - Operator: string; - CreateTxHash: string; - UpdateTxHash: string; - SealTxHash: string; -} - -export interface ObjectInfo { - BucketName: string; - Checksums: string[]; - ContentType: string; - CreateAt: number; - Creator: string; - Id: number; - LocalVirtualGroupId: number; - ObjectName: string; - ObjectStatus: number; - Owner: string; - PayloadSize: number; - RedundancyType: number; - SourceType: number; - Visibility: number; -} - -export function formatBucketInfo(o: BucketInfo) { - return { - ...o, - // PrimarySpId: Number(item.BucketInfo.PrimarySpId), - BucketStatus: Number(o.BucketStatus), - ChargedReadQuota: Number(o.ChargedReadQuota), - CreateAt: Number(o.CreateAt), - GlobalVirtualGroupFamilyId: Number(o.GlobalVirtualGroupFamilyId), - SourceType: Number(o.SourceType), - Visibility: Number(o.Visibility), - }; -} - -export function formatObjectInfo(o: ObjectInfo) { - return { - ...o, - CreateAt: Number(o.CreateAt), - Id: Number(o.Id), - LocalVirtualGroupId: Number(o.LocalVirtualGroupId), - ObjectStatus: Number(o.ObjectStatus), - PayloadSize: Number(o.PayloadSize), - RedundancyType: Number(o.RedundancyType), - SourceType: Number(o.SourceType), - Visibility: Number(o.Visibility), - }; -} - -export function convertStrToBool(str: string) { - return String(str).toLowerCase() === 'true'; -} - -export interface ReadRecord { - ObjectName: string; - ObjectID: string; - ReadAccountAddress: string; - ReadTimestampUs: number; - ReadSize: number; -} - -export function formatReadRecord(o: ReadRecord) { - return { - ...o, - ReadTimestampUs: Number(o.ReadTimestampUs), - ReadSize: Number(o.ReadSize), - }; -} - -export interface GroupInfo { - Owner: string; - GroupName: string; - SourceType: number; - Id: number; - Extra: string; -} - -export function formatGroupInfo(o: GroupInfo) { - return { - ...o, - SourceType: Number(o.SourceType), - Id: Number(o.Id), - }; -} diff --git a/packages/chain-sdk/src/types/sp-xml/GetBucketMetaResponse.ts b/packages/chain-sdk/src/types/sp-xml/GetBucketMetaResponse.ts deleted file mode 100644 index 55272bf9..00000000 --- a/packages/chain-sdk/src/types/sp-xml/GetBucketMetaResponse.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { BucketMeta, StreamRecord } from './Common'; - -export interface GetBucketMetaRequest { - bucketName: string; - endpoint: string; -} - -export interface GetBucketMetaResponse { - GfSpGetBucketMetaResponse: GfSPGetBucketMetaResponse; -} - -export interface GfSPGetBucketMetaResponse { - Bucket: BucketMeta; - StreamRecord: StreamRecord; -} diff --git a/packages/chain-sdk/src/types/sp-xml/GetObjectMetaResponse.ts b/packages/chain-sdk/src/types/sp-xml/GetObjectMetaResponse.ts deleted file mode 100644 index 5c6d215d..00000000 --- a/packages/chain-sdk/src/types/sp-xml/GetObjectMetaResponse.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { ObjectMeta } from './Common'; - -export interface GetObjectMetaRequest { - bucketName: string; - objectName: string; - endpoint: string; -} - -export interface GetObjectMetaResponse { - GfSpGetObjectMetaResponse: GfSPGetObjectMetaResponse; -} - -export interface GfSPGetObjectMetaResponse { - Object: ObjectMeta; -} diff --git a/packages/chain-sdk/src/types/sp-xml/GetUserBucketsResponse.ts b/packages/chain-sdk/src/types/sp-xml/GetUserBucketsResponse.ts deleted file mode 100644 index 45c09a1e..00000000 --- a/packages/chain-sdk/src/types/sp-xml/GetUserBucketsResponse.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { BucketMeta } from './Common'; - -export interface GetUserBucketsResponse { - GfSpGetUserBucketsResponse: GfSPGetUserBucketsResponse; -} - -export interface GfSPGetUserBucketsResponse { - Buckets: BucketMeta[]; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ListBucketReadRecordResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListBucketReadRecordResponse.ts deleted file mode 100644 index ed7906aa..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ListBucketReadRecordResponse.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { ReadRecord } from './Common'; - -export interface ListBucketReadRecordResponse { - GetBucketReadQuotaResult: GetBucketReadQuotaResult; -} - -export interface GetBucketReadQuotaResult { - NextStartTimestampUs: string; - ReadRecords: ReadRecord[]; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ListBucketsByIDsResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListBucketsByIDsResponse.ts deleted file mode 100644 index 84c2c223..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ListBucketsByIDsResponse.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { BucketInfo } from './Common'; - -export interface ListBucketsByIDsResponse { - GfSpListBucketsByIDsResponse: GfSpListBucketsByIDsResponse; -} - -export interface GfSpListBucketsByIDsResponse { - BucketEntry: BucketEntry[]; -} - -export interface BucketEntry { - Id: number; - Value: { - BucketInfo: BucketInfo; - Removed: boolean; - DeleteAt: number; - DeleteReason: string; - Operator: string; - CreateTxHash: string; - UpdateTxHash: string; - UpdateAt: number; - UpdateTime: number; - }; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts deleted file mode 100644 index 7c4b9441..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ListGroupsMembersResponse.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { GroupInfo } from './Common'; - -export interface ListGroupsMembersResponse { - GfSpGetGroupMembersResponse: GfSpGetGroupMembersResponse; -} - -export interface GfSpGetGroupMembersResponse { - Groups: Group[]; -} - -interface Group { - Group: GroupInfo; - AccountId: string; - Operator: string; - CreateAt: number; - CreateTime: number; - UpdateAt: number; - UpdateTime: number; - Removed: boolean; - ExpirationTime: string; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ListGroupsResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListGroupsResponse.ts deleted file mode 100644 index d2755afd..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ListGroupsResponse.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { GroupInfo } from './Common'; - -export interface ListGroupsResponse { - GfSpGetGroupListResponse: GfSpGetGroupListResponse; -} - -interface Group { - Group: GroupInfo; - Operator: string; - CreateAt: number; - CreateTime: number; - UpdateAt: number; - UpdateTime: number; - Removed: boolean; -} - -export interface GfSpGetGroupListResponse { - Groups: Group[]; - Count: number; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts deleted file mode 100644 index 8579f978..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ListObjectsByBucketNameResponse.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ObjectMeta } from './Common'; - -export interface ListObjectsByBucketNameResponse { - GfSpListObjectsByBucketNameResponse: GfSPListObjectsByBucketNameResponse; -} - -export interface GfSPListObjectsByBucketNameResponse { - Objects: ObjectMeta[]; - KeyCount: string; - MaxKeys: string; - IsTruncated: boolean; - NextContinuationToken: string; - Name: string; - Prefix: string; - Delimiter: string; - CommonPrefixes: string[]; - ContinuationToken: string; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ListObjectsByIDsResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListObjectsByIDsResponse.ts deleted file mode 100644 index 967b742e..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ListObjectsByIDsResponse.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ObjectInfo } from './Common'; - -export interface ListObjectsByIDsResponse { - GfSpListObjectsByIDsResponse: GfSpListObjectsByIDsResponse; -} - -export interface GfSpListObjectsByIDsResponse { - ObjectEntry: ObjectEntry[]; -} - -export interface ObjectEntry { - Id: number; - Value: { - ObjectInfo: ObjectInfo; - LockedBalance: string; - Removed: boolean; - UpdateAt: number; - DeleteAt: number; - DeleteReason: string; - Operator: string; - CreateTxHash: string; - UpdateTxHash: string; - SealTxHash: string; - }; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ListUserGroupsResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListUserGroupsResponse.ts deleted file mode 100644 index b89398af..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ListUserGroupsResponse.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { GroupInfo } from './Common'; - -export interface ListUserGroupsResponse { - GfSpGetUserGroupsResponse: GfSpGetUserGroupsResponse; -} - -export interface GfSpGetUserGroupsResponse { - Groups: Group[]; -} - -interface Group { - Group: GroupInfo; - AccountId: string; - Operator: string; - CreateAt: number; - CreateTime: number; - UpdateAt: number; - UpdateTime: number; - Removed: boolean; - ExpirationTime: string; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ListUserOwnedGroupsResponse.ts b/packages/chain-sdk/src/types/sp-xml/ListUserOwnedGroupsResponse.ts deleted file mode 100644 index c3e1a058..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ListUserOwnedGroupsResponse.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { GroupInfo } from './Common'; - -export interface ListUserOwnedGroupsResponse { - GfSpGetUserOwnedGroupsResponse: GfSpGetUserOwnedGroupsResponse; -} - -export interface GfSpGetUserOwnedGroupsResponse { - Groups: Group[]; -} - -interface Group { - Group: GroupInfo; - AccountId: string; - Operator: string; - CreateAt: number; - CreateTime: number; - UpdateAt: number; - UpdateTime: number; - Removed: boolean; - ExpirationTime: string; -} diff --git a/packages/chain-sdk/src/types/sp-xml/ReadQuotaResponse.ts b/packages/chain-sdk/src/types/sp-xml/ReadQuotaResponse.ts deleted file mode 100644 index 5498c434..00000000 --- a/packages/chain-sdk/src/types/sp-xml/ReadQuotaResponse.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface ReadQuotaResponse { - GetReadQuotaResult: { - BucketName: string; - BucketID: string; - ReadQuotaSize: number; - SPFreeReadQuotaSize: number; - ReadConsumedSize: number; - FreeConsumedSize: number; - }; -} diff --git a/packages/chain-sdk/src/types/sp-xml/RequestErrorResponse.ts b/packages/chain-sdk/src/types/sp-xml/RequestErrorResponse.ts deleted file mode 100644 index c9ebf94c..00000000 --- a/packages/chain-sdk/src/types/sp-xml/RequestErrorResponse.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface RequestErrorResponse { - Error: { - Code: string; - Message: string; - }; -} diff --git a/packages/chain-sdk/src/types/sp-xml/RequestNonceResponse.ts b/packages/chain-sdk/src/types/sp-xml/RequestNonceResponse.ts deleted file mode 100644 index aa129d46..00000000 --- a/packages/chain-sdk/src/types/sp-xml/RequestNonceResponse.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface RequestNonceResponse { - RequestNonceResp: { - CurrentNonce: number; - CurrentPublicKey: string; - ExpiryDate: string; - NextNonce: number; - }; -} diff --git a/packages/chain-sdk/src/types/sp-xml/VerifyPermissionResponse.ts b/packages/chain-sdk/src/types/sp-xml/VerifyPermissionResponse.ts deleted file mode 100644 index f0aed8ae..00000000 --- a/packages/chain-sdk/src/types/sp-xml/VerifyPermissionResponse.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface VerifyPermissionResponse { - QueryVerifyPermissionResponse: QueryVerifyPermissionResponse; -} - -export interface QueryVerifyPermissionResponse { - Effect: number; -} diff --git a/packages/chain-sdk/src/types/sp-xml/index.ts b/packages/chain-sdk/src/types/sp-xml/index.ts deleted file mode 100644 index 3bf8b1a8..00000000 --- a/packages/chain-sdk/src/types/sp-xml/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -export * from './GetBucketMetaResponse'; -export * from './GetObjectMetaResponse'; -export * from './GetUserBucketsResponse'; -export * from './ListBucketReadRecordResponse'; -export * from './ListBucketsByIDsResponse'; -export * from './ListGroupsMembersResponse'; -export * from './ListGroupsResponse'; -export * from './ListObjectsByBucketNameResponse'; -export * from './ListObjectsByIDsResponse'; -export * from './ListUserGroupsResponse'; -export * from './ReadQuotaResponse'; -export * from './RequestErrorResponse'; -export * from './RequestNonceResponse'; -export * from './VerifyPermissionResponse'; diff --git a/packages/create-gnfd-app/CHANGELOG.md b/packages/create-gnfd-app/CHANGELOG.md index 17ca5eeb..9f9def61 100644 --- a/packages/create-gnfd-app/CHANGELOG.md +++ b/packages/create-gnfd-app/CHANGELOG.md @@ -1,5 +1,29 @@ # @bnb-chain/create-gnfd-app +## 0.0.3 + +### Patch Changes + +- [#346](https://github.com/bnb-chain/greenfield-js-sdk/pull/346) + [`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update package.json + +- [#347](https://github.com/bnb-chain/greenfield-js-sdk/pull/347) + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + +## 0.0.3-alpha.0 + +### Patch Changes + +- [#346](https://github.com/bnb-chain/greenfield-js-sdk/pull/346) + [`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update package.json + +- [#347](https://github.com/bnb-chain/greenfield-js-sdk/pull/347) + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + ## 0.0.2 ### Patch Changes diff --git a/packages/create-gnfd-app/package.json b/packages/create-gnfd-app/package.json index 95afec92..23a8227e 100644 --- a/packages/create-gnfd-app/package.json +++ b/packages/create-gnfd-app/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/create-gnfd-app", - "version": "0.0.2", + "version": "0.0.3", "description": "help you create greenfield project quickly", "main": "index.js", "bin": { @@ -11,7 +11,8 @@ "url": "https://github.com/bnb-chain/greenfield-js-sdk", "directory": "packages/create-gnfd-app" }, - "homepage": "https://github.com/bnb-chain/greenfield-js-sdk/packages/create-gnfd-app#readme", + "homepage": "https://github.com/bnb-chain/greenfield-js-sdk/tree/alpha/packages/create-gnfd-app#readme", + "bugs": "https://github.com/bnb-chain/greenfield-js-sdk/issues", "scripts": { "dev": "rollup -cw", "build": "rollup -c" diff --git a/packages/file-handle/CHANGELOG.md b/packages/file-handle/CHANGELOG.md index 78c51c6c..ba680285 100644 --- a/packages/file-handle/CHANGELOG.md +++ b/packages/file-handle/CHANGELOG.md @@ -1,5 +1,29 @@ # @bnb-chain/greenfiled-file-handle +## 0.2.2 + +### Patch Changes + +- [#346](https://github.com/bnb-chain/greenfield-js-sdk/pull/346) + [`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update package.json + +- [#347](https://github.com/bnb-chain/greenfield-js-sdk/pull/347) + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + +## 0.2.2-alpha.0 + +### Patch Changes + +- [#346](https://github.com/bnb-chain/greenfield-js-sdk/pull/346) + [`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update package.json + +- [#347](https://github.com/bnb-chain/greenfield-js-sdk/pull/347) + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + ## 0.2.1 ### Patch Changes diff --git a/packages/file-handle/package.json b/packages/file-handle/package.json index 1d3ecef6..3aa0f327 100644 --- a/packages/file-handle/package.json +++ b/packages/file-handle/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfiled-file-handle", - "version": "0.2.1", + "version": "0.2.2", "description": "checksums wasm package", "module": "./dist/browser/esm/index.js", "main": "./dist/node/index.js", @@ -21,7 +21,17 @@ "build": "webpack", "test": "" }, - "keywords": [], + "repository": { + "type": "git", + "url": "https://github.com/bnb-chain/greenfield-js-sdk", + "directory": "packages/file-handle" + }, + "homepage": "https://github.com/bnb-chain/greenfield-js-sdk/tree/alpha/packages/file-handle#readme", + "bugs": "https://github.com/bnb-chain/greenfield-js-sdk/issues", + "keywords": [ + "greenfiled", + "checksums" + ], "author": "", "license": "GPLv3", "engines": { diff --git a/packages/chain-sdk/CHANGELOG.md b/packages/js-sdk/CHANGELOG.md similarity index 98% rename from packages/chain-sdk/CHANGELOG.md rename to packages/js-sdk/CHANGELOG.md index ac9883e8..db60a516 100644 --- a/packages/chain-sdk/CHANGELOG.md +++ b/packages/js-sdk/CHANGELOG.md @@ -1,5 +1,39 @@ # @bnb-chain/greenfield-js-sdk +## 0.2.6 + +### Patch Changes + +- [#346](https://github.com/bnb-chain/greenfield-js-sdk/pull/346) + [`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update package.json + +- [#347](https://github.com/bnb-chain/greenfield-js-sdk/pull/347) + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + +- Updated dependencies + [[`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9), + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1)]: + - @bnb-chain/greenfield-zk-crypto@0.0.4 + +## 0.2.6-alpha.0 + +### Patch Changes + +- [#346](https://github.com/bnb-chain/greenfield-js-sdk/pull/346) + [`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update package.json + +- [#347](https://github.com/bnb-chain/greenfield-js-sdk/pull/347) + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + +- Updated dependencies + [[`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9), + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1)]: + - @bnb-chain/greenfield-zk-crypto@0.0.4-alpha.0 + ## 0.2.5 ### Patch Changes diff --git a/packages/chain-sdk/README.md b/packages/js-sdk/README.md similarity index 100% rename from packages/chain-sdk/README.md rename to packages/js-sdk/README.md diff --git a/packages/chain-sdk/config/tsconfig-cjs.json b/packages/js-sdk/config/tsconfig-cjs.json similarity index 100% rename from packages/chain-sdk/config/tsconfig-cjs.json rename to packages/js-sdk/config/tsconfig-cjs.json diff --git a/packages/chain-sdk/config/tsconfig-esm.json b/packages/js-sdk/config/tsconfig-esm.json similarity index 100% rename from packages/chain-sdk/config/tsconfig-esm.json rename to packages/js-sdk/config/tsconfig-esm.json diff --git a/packages/chain-sdk/config/tsconfig-test.json b/packages/js-sdk/config/tsconfig-test.json similarity index 100% rename from packages/chain-sdk/config/tsconfig-test.json rename to packages/js-sdk/config/tsconfig-test.json diff --git a/packages/chain-sdk/config/tsconfig.json b/packages/js-sdk/config/tsconfig.json similarity index 100% rename from packages/chain-sdk/config/tsconfig.json rename to packages/js-sdk/config/tsconfig.json diff --git a/packages/chain-sdk/jest.config.mjs b/packages/js-sdk/jest.config.mjs similarity index 100% rename from packages/chain-sdk/jest.config.mjs rename to packages/js-sdk/jest.config.mjs diff --git a/packages/chain-sdk/package.json b/packages/js-sdk/package.json similarity index 84% rename from packages/chain-sdk/package.json rename to packages/js-sdk/package.json index f888743e..3c9fff1a 100644 --- a/packages/chain-sdk/package.json +++ b/packages/js-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-js-sdk", - "version": "0.2.5", + "version": "0.2.6", "description": "greenfield js chain and sp sdk", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", @@ -29,7 +29,17 @@ "test": "jest --runInBand", "lint": "prettier --write './src/*.{ts,tsx,js,jsx}' && eslint ./src/ --ext .js,.jsx,.ts,.tsx --fix" }, - "keywords": [], + "repository": { + "type": "git", + "url": "https://github.com/bnb-chain/greenfield-js-sdk", + "directory": "packages/js-sdk" + }, + "homepage": "https://github.com/bnb-chain/greenfield-js-sdk/tree/alpha/packages/js-sdk#readme", + "bugs": "https://github.com/bnb-chain/greenfield-js-sdk/issues", + "keywords": [ + "greenfiled", + "js-sdk" + ], "author": "", "license": "GPLv3", "engines": { @@ -88,6 +98,7 @@ "ts-jest": "^29.1.0", "ts-node": "^10.9.1", "tslib": "^2.5.0", - "typescript": "^4.9.5" + "typescript": "^4.9.5", + "@rollup/plugin-typescript": "^11.1.3" } } diff --git a/packages/chain-sdk/rollup.config.js b/packages/js-sdk/rollup.config.js similarity index 100% rename from packages/chain-sdk/rollup.config.js rename to packages/js-sdk/rollup.config.js diff --git a/packages/chain-sdk/src/api/account.ts b/packages/js-sdk/src/api/account.ts similarity index 94% rename from packages/chain-sdk/src/api/account.ts rename to packages/js-sdk/src/api/account.ts index 0e098191..23e0cf6e 100644 --- a/packages/chain-sdk/src/api/account.ts +++ b/packages/js-sdk/src/api/account.ts @@ -34,15 +34,24 @@ export interface IAccount { */ getAccountBalance(request: QueryBalanceRequest): Promise; + /** + * Get all module accounts. + */ getModuleAccounts(): Promise; + /** + * Get module account by module name. + */ getModuleAccountByName(name: string): Promise; /** - * retrieves all payment accounts owned by the given address + * Get all payment accounts owned by the given owner address. */ getPaymentAccountsByOwner(owner: string): Promise; + /** + * Create a new payment account for the given address. + */ createPaymentAccount(msg: MsgCreatePaymentAccount): Promise; /** diff --git a/packages/chain-sdk/src/api/basic.ts b/packages/js-sdk/src/api/basic.ts similarity index 100% rename from packages/chain-sdk/src/api/basic.ts rename to packages/js-sdk/src/api/basic.ts diff --git a/packages/chain-sdk/src/api/bucket.ts b/packages/js-sdk/src/api/bucket.ts similarity index 98% rename from packages/chain-sdk/src/api/bucket.ts rename to packages/js-sdk/src/api/bucket.ts index 75288311..11cbd7cd 100644 --- a/packages/chain-sdk/src/api/bucket.ts +++ b/packages/js-sdk/src/api/bucket.ts @@ -181,6 +181,9 @@ export interface IBucket { putBucketPolicy(bucketName: string, srcMsg: Omit): Promise; + /** + * Update the bucket meta on chain, including read quota, payment address or visibility. It will send the MsgUpdateBucketInfo msg to greenfield to update the meta. + */ updateBucketInfo( srcMsg: Omit & { chargedReadQuota?: string }, ): Promise; @@ -320,21 +323,21 @@ export class Bucket implements IBucket { } public async headBucket(bucketName: string) { - const rpc = await this.queryClient.getBucketQueryClient(); + const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.HeadBucket({ bucketName, }); } public async headBucketById(bucketId: string) { - const rpc = await this.queryClient.getBucketQueryClient(); + const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.HeadBucketById({ bucketId, }); } public async headBucketExtra(bucketName: string) { - const rpc = await this.queryClient.getBucketQueryClient(); + const rpc = await this.queryClient.getStorageQueryClient(); return await rpc.HeadBucketExtra({ bucketName, }); @@ -346,7 +349,7 @@ export class Bucket implements IBucket { } public async getVerifyPermission(bucketName: string, operator: string, actionType: ActionType) { - const rpc = await this.queryClient.getBucketQueryClient(); + const rpc = await this.queryClient.getStorageQueryClient(); return rpc.VerifyPermission({ bucketName, operator, diff --git a/packages/chain-sdk/src/api/challenge.ts b/packages/js-sdk/src/api/challenge.ts similarity index 100% rename from packages/chain-sdk/src/api/challenge.ts rename to packages/js-sdk/src/api/challenge.ts diff --git a/packages/chain-sdk/src/api/crosschain.ts b/packages/js-sdk/src/api/crosschain.ts similarity index 100% rename from packages/chain-sdk/src/api/crosschain.ts rename to packages/js-sdk/src/api/crosschain.ts diff --git a/packages/chain-sdk/src/api/distribution.ts b/packages/js-sdk/src/api/distribution.ts similarity index 100% rename from packages/chain-sdk/src/api/distribution.ts rename to packages/js-sdk/src/api/distribution.ts diff --git a/packages/chain-sdk/src/api/feegrant.ts b/packages/js-sdk/src/api/feegrant.ts similarity index 100% rename from packages/chain-sdk/src/api/feegrant.ts rename to packages/js-sdk/src/api/feegrant.ts diff --git a/packages/chain-sdk/src/api/gashub.ts b/packages/js-sdk/src/api/gashub.ts similarity index 100% rename from packages/chain-sdk/src/api/gashub.ts rename to packages/js-sdk/src/api/gashub.ts diff --git a/packages/chain-sdk/src/api/group.ts b/packages/js-sdk/src/api/group.ts similarity index 99% rename from packages/chain-sdk/src/api/group.ts rename to packages/js-sdk/src/api/group.ts index 6f9b398a..e0fb5d2b 100644 --- a/packages/chain-sdk/src/api/group.ts +++ b/packages/js-sdk/src/api/group.ts @@ -73,6 +73,9 @@ export interface IGroup { member: string, ): Promise; + /** + * @deprecated + */ listGroup(request: QueryListGroupsRequest): Promise; headGroupNFT(request: QueryNFTRequest): Promise; diff --git a/packages/chain-sdk/src/api/objectt.ts b/packages/js-sdk/src/api/objectt.ts similarity index 99% rename from packages/chain-sdk/src/api/objectt.ts rename to packages/js-sdk/src/api/objectt.ts index 41c217f3..fd877c95 100644 --- a/packages/chain-sdk/src/api/objectt.ts +++ b/packages/js-sdk/src/api/objectt.ts @@ -71,6 +71,7 @@ import { CreateObjectApprovalRequest, CreateObjectApprovalResponse, GetListObjectPoliciesRequest, + GetListObjectPoliciesResponse, GetPrivewObject, ListObjectsByBucketNameRequest, ListObjectsByIDsRequest, @@ -169,7 +170,9 @@ export interface IObject { listObjectsByIds(params: ListObjectsByIDsRequest): Promise>; - listObjectPolicies(params: GetListObjectPoliciesRequest): Promise; + listObjectPolicies( + params: GetListObjectPoliciesRequest, + ): Promise>; // TODO: GetObjectUploadProgress // TODO: getObjectStatusFromSP } diff --git a/packages/chain-sdk/src/api/offchainauth.ts b/packages/js-sdk/src/api/offchainauth.ts similarity index 100% rename from packages/chain-sdk/src/api/offchainauth.ts rename to packages/js-sdk/src/api/offchainauth.ts diff --git a/packages/chain-sdk/src/api/payment.ts b/packages/js-sdk/src/api/payment.ts similarity index 100% rename from packages/chain-sdk/src/api/payment.ts rename to packages/js-sdk/src/api/payment.ts diff --git a/packages/chain-sdk/src/api/proposal.ts b/packages/js-sdk/src/api/proposal.ts similarity index 100% rename from packages/chain-sdk/src/api/proposal.ts rename to packages/js-sdk/src/api/proposal.ts diff --git a/packages/chain-sdk/src/api/sp.ts b/packages/js-sdk/src/api/sp.ts similarity index 100% rename from packages/chain-sdk/src/api/sp.ts rename to packages/js-sdk/src/api/sp.ts diff --git a/packages/chain-sdk/src/api/storage.ts b/packages/js-sdk/src/api/storage.ts similarity index 100% rename from packages/chain-sdk/src/api/storage.ts rename to packages/js-sdk/src/api/storage.ts diff --git a/packages/chain-sdk/src/api/validator.ts b/packages/js-sdk/src/api/validator.ts similarity index 100% rename from packages/chain-sdk/src/api/validator.ts rename to packages/js-sdk/src/api/validator.ts diff --git a/packages/chain-sdk/src/api/virtualGroup.ts b/packages/js-sdk/src/api/virtualGroup.ts similarity index 100% rename from packages/chain-sdk/src/api/virtualGroup.ts rename to packages/js-sdk/src/api/virtualGroup.ts diff --git a/packages/chain-sdk/src/client.ts b/packages/js-sdk/src/client.ts similarity index 100% rename from packages/chain-sdk/src/client.ts rename to packages/js-sdk/src/client.ts diff --git a/packages/chain-sdk/src/clients/queryclient.ts b/packages/js-sdk/src/clients/queryclient.ts similarity index 94% rename from packages/chain-sdk/src/clients/queryclient.ts rename to packages/js-sdk/src/clients/queryclient.ts index 8326aeb2..98ed08a9 100644 --- a/packages/chain-sdk/src/clients/queryclient.ts +++ b/packages/js-sdk/src/clients/queryclient.ts @@ -10,10 +10,7 @@ import { QueryClientImpl as BridgeQueryClientImpl } from '@bnb-chain/greenfield- import { QueryClientImpl as ChallengeQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/challenge/query'; import { QueryClientImpl as PaymentQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/payment/query'; import { QueryClientImpl as SpQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/sp/query'; -import { - QueryClientImpl as BucketQueryClientImpl, - QueryClientImpl as StorageQueryClientImpl, -} from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/query'; +import { QueryClientImpl as StorageQueryClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/storage/query'; import { QueryClientImpl as VirtualGroupClientImpl } from '@bnb-chain/greenfield-cosmos-types/greenfield/virtualgroup/query'; import { AuthExtension, @@ -78,11 +75,6 @@ export class RpcQueryClient { return new PaymentQueryClientImpl(rpcClient); } - public async getBucketQueryClient() { - const rpcClient = await this.getRpcClient(); - return new BucketQueryClientImpl(rpcClient); - } - public async getSpQueryClient() { const rpcClient = await this.getRpcClient(); return new SpQueryClientImpl(rpcClient); diff --git a/packages/chain-sdk/src/clients/spclient/auth.ts b/packages/js-sdk/src/clients/spclient/auth.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/auth.ts rename to packages/js-sdk/src/clients/spclient/auth.ts diff --git a/packages/chain-sdk/src/clients/spclient/sign.ts b/packages/js-sdk/src/clients/spclient/sign.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/sign.ts rename to packages/js-sdk/src/clients/spclient/sign.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/approval.ts b/packages/js-sdk/src/clients/spclient/spApis/approval.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/approval.ts rename to packages/js-sdk/src/clients/spclient/spApis/approval.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts b/packages/js-sdk/src/clients/spclient/spApis/getBucketMeta.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/getBucketMeta.ts rename to packages/js-sdk/src/clients/spclient/spApis/getBucketMeta.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getNonce.ts b/packages/js-sdk/src/clients/spclient/spApis/getNonce.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/getNonce.ts rename to packages/js-sdk/src/clients/spclient/spApis/getNonce.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getObject.ts b/packages/js-sdk/src/clients/spclient/spApis/getObject.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/getObject.ts rename to packages/js-sdk/src/clients/spclient/spApis/getObject.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts b/packages/js-sdk/src/clients/spclient/spApis/getObjectMeta.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/getObjectMeta.ts rename to packages/js-sdk/src/clients/spclient/spApis/getObjectMeta.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts b/packages/js-sdk/src/clients/spclient/spApis/getUserBuckets.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/getUserBuckets.ts rename to packages/js-sdk/src/clients/spclient/spApis/getUserBuckets.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts b/packages/js-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts rename to packages/js-sdk/src/clients/spclient/spApis/listBucketReadRecords.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts b/packages/js-sdk/src/clients/spclient/spApis/listBucketsByIds.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listBucketsByIds.ts rename to packages/js-sdk/src/clients/spclient/spApis/listBucketsByIds.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts b/packages/js-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts rename to packages/js-sdk/src/clients/spclient/spApis/listBucketsByPayment.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts b/packages/js-sdk/src/clients/spclient/spApis/listGroups.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listGroups.ts rename to packages/js-sdk/src/clients/spclient/spApis/listGroups.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts b/packages/js-sdk/src/clients/spclient/spApis/listGroupsMembers.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listGroupsMembers.ts rename to packages/js-sdk/src/clients/spclient/spApis/listGroupsMembers.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectPolicies.ts b/packages/js-sdk/src/clients/spclient/spApis/listObjectPolicies.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listObjectPolicies.ts rename to packages/js-sdk/src/clients/spclient/spApis/listObjectPolicies.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts b/packages/js-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts rename to packages/js-sdk/src/clients/spclient/spApis/listObjectsByBucket.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts b/packages/js-sdk/src/clients/spclient/spApis/listObjectsByIds.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listObjectsByIds.ts rename to packages/js-sdk/src/clients/spclient/spApis/listObjectsByIds.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts b/packages/js-sdk/src/clients/spclient/spApis/listUserGroups.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listUserGroups.ts rename to packages/js-sdk/src/clients/spclient/spApis/listUserGroups.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts b/packages/js-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts rename to packages/js-sdk/src/clients/spclient/spApis/listUserOwnedGroups.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/listUserPaymentAccounts.ts b/packages/js-sdk/src/clients/spclient/spApis/listUserPaymentAccounts.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/listUserPaymentAccounts.ts rename to packages/js-sdk/src/clients/spclient/spApis/listUserPaymentAccounts.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/metaInfos.ts b/packages/js-sdk/src/clients/spclient/spApis/metaInfos.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/metaInfos.ts rename to packages/js-sdk/src/clients/spclient/spApis/metaInfos.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/parseError.ts b/packages/js-sdk/src/clients/spclient/spApis/parseError.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/parseError.ts rename to packages/js-sdk/src/clients/spclient/spApis/parseError.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/putObject.ts b/packages/js-sdk/src/clients/spclient/spApis/putObject.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/putObject.ts rename to packages/js-sdk/src/clients/spclient/spApis/putObject.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts b/packages/js-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts rename to packages/js-sdk/src/clients/spclient/spApis/queryBucketReadQuota.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/updateUserAccountKey.ts b/packages/js-sdk/src/clients/spclient/spApis/updateUserAccountKey.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/updateUserAccountKey.ts rename to packages/js-sdk/src/clients/spclient/spApis/updateUserAccountKey.ts diff --git a/packages/chain-sdk/src/clients/spclient/spApis/verifyPermission.ts b/packages/js-sdk/src/clients/spclient/spApis/verifyPermission.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spApis/verifyPermission.ts rename to packages/js-sdk/src/clients/spclient/spApis/verifyPermission.ts diff --git a/packages/chain-sdk/src/clients/spclient/spClient.ts b/packages/js-sdk/src/clients/spclient/spClient.ts similarity index 100% rename from packages/chain-sdk/src/clients/spclient/spClient.ts rename to packages/js-sdk/src/clients/spclient/spClient.ts diff --git a/packages/chain-sdk/src/clients/txClient.ts b/packages/js-sdk/src/clients/txClient.ts similarity index 99% rename from packages/chain-sdk/src/clients/txClient.ts rename to packages/js-sdk/src/clients/txClient.ts index a25962be..7f675670 100644 --- a/packages/chain-sdk/src/clients/txClient.ts +++ b/packages/js-sdk/src/clients/txClient.ts @@ -29,7 +29,7 @@ import { SimulateOptions, TxResponse, } from '..'; -import { RpcQueryClient } from '../clients/queryclient'; +import { RpcQueryClient } from './queryclient'; import { DEFAULT_DENOM, ZERO_PUBKEY } from '../constants'; import { createEIP712, diff --git a/packages/chain-sdk/src/constants/http.ts b/packages/js-sdk/src/constants/http.ts similarity index 100% rename from packages/chain-sdk/src/constants/http.ts rename to packages/js-sdk/src/constants/http.ts diff --git a/packages/chain-sdk/src/constants/index.ts b/packages/js-sdk/src/constants/index.ts similarity index 100% rename from packages/chain-sdk/src/constants/index.ts rename to packages/js-sdk/src/constants/index.ts diff --git a/packages/chain-sdk/src/constants/typeUrl.ts b/packages/js-sdk/src/constants/typeUrl.ts similarity index 100% rename from packages/chain-sdk/src/constants/typeUrl.ts rename to packages/js-sdk/src/constants/typeUrl.ts diff --git a/packages/chain-sdk/src/index.ts b/packages/js-sdk/src/index.ts similarity index 100% rename from packages/chain-sdk/src/index.ts rename to packages/js-sdk/src/index.ts diff --git a/packages/chain-sdk/src/keymanage/index.ts b/packages/js-sdk/src/keymanage/index.ts similarity index 100% rename from packages/chain-sdk/src/keymanage/index.ts rename to packages/js-sdk/src/keymanage/index.ts diff --git a/packages/chain-sdk/src/messages/README.md b/packages/js-sdk/src/messages/README.md similarity index 100% rename from packages/chain-sdk/src/messages/README.md rename to packages/js-sdk/src/messages/README.md diff --git a/packages/chain-sdk/src/messages/bank/MsgMultiSend.ts b/packages/js-sdk/src/messages/bank/MsgMultiSend.ts similarity index 100% rename from packages/chain-sdk/src/messages/bank/MsgMultiSend.ts rename to packages/js-sdk/src/messages/bank/MsgMultiSend.ts diff --git a/packages/chain-sdk/src/messages/bank/MsgSend.ts b/packages/js-sdk/src/messages/bank/MsgSend.ts similarity index 100% rename from packages/chain-sdk/src/messages/bank/MsgSend.ts rename to packages/js-sdk/src/messages/bank/MsgSend.ts diff --git a/packages/chain-sdk/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts b/packages/js-sdk/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts similarity index 100% rename from packages/chain-sdk/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts rename to packages/js-sdk/src/messages/cosmos/distribution/MsgFundCommunityPoolTypeUrl.ts diff --git a/packages/chain-sdk/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts b/packages/js-sdk/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts similarity index 100% rename from packages/chain-sdk/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts rename to packages/js-sdk/src/messages/cosmos/distribution/MsgSetWithdrawAddress.ts diff --git a/packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts b/packages/js-sdk/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts similarity index 100% rename from packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts rename to packages/js-sdk/src/messages/cosmos/distribution/MsgWithdrawDelegatorReward.ts diff --git a/packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts b/packages/js-sdk/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts similarity index 100% rename from packages/chain-sdk/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts rename to packages/js-sdk/src/messages/cosmos/distribution/MsgWithdrawValidatorCommission.ts diff --git a/packages/chain-sdk/src/messages/cosmos/gov/MsgVote.ts b/packages/js-sdk/src/messages/cosmos/gov/MsgVote.ts similarity index 100% rename from packages/chain-sdk/src/messages/cosmos/gov/MsgVote.ts rename to packages/js-sdk/src/messages/cosmos/gov/MsgVote.ts diff --git a/packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts b/packages/js-sdk/src/messages/cosmos/oracle/MsgClaim.ts similarity index 100% rename from packages/chain-sdk/src/messages/cosmos/oracle/MsgClaim.ts rename to packages/js-sdk/src/messages/cosmos/oracle/MsgClaim.ts diff --git a/packages/chain-sdk/src/messages/cosmos/staking/MsgCreateValidator.ts b/packages/js-sdk/src/messages/cosmos/staking/MsgCreateValidator.ts similarity index 100% rename from packages/chain-sdk/src/messages/cosmos/staking/MsgCreateValidator.ts rename to packages/js-sdk/src/messages/cosmos/staking/MsgCreateValidator.ts diff --git a/packages/chain-sdk/src/messages/cosmos/staking/MsgEditValidator.ts b/packages/js-sdk/src/messages/cosmos/staking/MsgEditValidator.ts similarity index 100% rename from packages/chain-sdk/src/messages/cosmos/staking/MsgEditValidator.ts rename to packages/js-sdk/src/messages/cosmos/staking/MsgEditValidator.ts diff --git a/packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts b/packages/js-sdk/src/messages/feegrant/MsgGrantAllowance.ts similarity index 100% rename from packages/chain-sdk/src/messages/feegrant/MsgGrantAllowance.ts rename to packages/js-sdk/src/messages/feegrant/MsgGrantAllowance.ts diff --git a/packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts b/packages/js-sdk/src/messages/feegrant/MsgRevokeAllowance.ts similarity index 100% rename from packages/chain-sdk/src/messages/feegrant/MsgRevokeAllowance.ts rename to packages/js-sdk/src/messages/feegrant/MsgRevokeAllowance.ts diff --git a/packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts b/packages/js-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts rename to packages/js-sdk/src/messages/greenfield/bridge/MsgTransferOut.ts diff --git a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts b/packages/js-sdk/src/messages/greenfield/chanenge/MsgAttest.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/chanenge/MsgAttest.ts rename to packages/js-sdk/src/messages/greenfield/chanenge/MsgAttest.ts diff --git a/packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts b/packages/js-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts rename to packages/js-sdk/src/messages/greenfield/chanenge/MsgSubmit.ts diff --git a/packages/chain-sdk/src/messages/greenfield/index.ts b/packages/js-sdk/src/messages/greenfield/index.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/index.ts rename to packages/js-sdk/src/messages/greenfield/index.ts diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts b/packages/js-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts rename to packages/js-sdk/src/messages/greenfield/payment/MsgCreatePaymentAccount.ts diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts b/packages/js-sdk/src/messages/greenfield/payment/MsgDeposit.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/payment/MsgDeposit.ts rename to packages/js-sdk/src/messages/greenfield/payment/MsgDeposit.ts diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts b/packages/js-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts rename to packages/js-sdk/src/messages/greenfield/payment/MsgDisableRefund.ts diff --git a/packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts b/packages/js-sdk/src/messages/greenfield/payment/MsgWithdraw.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/payment/MsgWithdraw.ts rename to packages/js-sdk/src/messages/greenfield/payment/MsgWithdraw.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgCancelCreateObject.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgCreateBucket.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgCreateGroup.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgCreateObject.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgCreateObject.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgDeleteBucket.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgDeleteGroup.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgDeleteObject.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgDeletePolicy.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgLeaveGroup.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMigrateBucket.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgMigrateBucket.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgMigrateBucket.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgMigrateBucket.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgMirrorBucket.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgMirrorGroup.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgMirrorObject.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgPutPolicy.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgUpdateBucketInfo.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgUpdateGroupExtra.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgUpdateGroupMember.ts diff --git a/packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts b/packages/js-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts rename to packages/js-sdk/src/messages/greenfield/storage/MsgUpdateObjectInfo.ts diff --git a/packages/chain-sdk/src/messages/greenfield/virtualgroup/MsgSettle.ts b/packages/js-sdk/src/messages/greenfield/virtualgroup/MsgSettle.ts similarity index 100% rename from packages/chain-sdk/src/messages/greenfield/virtualgroup/MsgSettle.ts rename to packages/js-sdk/src/messages/greenfield/virtualgroup/MsgSettle.ts diff --git a/packages/chain-sdk/src/messages/index.ts b/packages/js-sdk/src/messages/index.ts similarity index 100% rename from packages/chain-sdk/src/messages/index.ts rename to packages/js-sdk/src/messages/index.ts diff --git a/packages/chain-sdk/src/messages/utils.ts b/packages/js-sdk/src/messages/utils.ts similarity index 100% rename from packages/chain-sdk/src/messages/utils.ts rename to packages/js-sdk/src/messages/utils.ts diff --git a/packages/chain-sdk/src/offchainauth/index.ts b/packages/js-sdk/src/offchainauth/index.ts similarity index 100% rename from packages/chain-sdk/src/offchainauth/index.ts rename to packages/js-sdk/src/offchainauth/index.ts diff --git a/packages/chain-sdk/src/offchainauth/utils.ts b/packages/js-sdk/src/offchainauth/utils.ts similarity index 100% rename from packages/chain-sdk/src/offchainauth/utils.ts rename to packages/js-sdk/src/offchainauth/utils.ts diff --git a/packages/chain-sdk/src/sign/index.ts b/packages/js-sdk/src/sign/index.ts similarity index 100% rename from packages/chain-sdk/src/sign/index.ts rename to packages/js-sdk/src/sign/index.ts diff --git a/packages/chain-sdk/src/sign/pubKey.ts b/packages/js-sdk/src/sign/pubKey.ts similarity index 100% rename from packages/chain-sdk/src/sign/pubKey.ts rename to packages/js-sdk/src/sign/pubKey.ts diff --git a/packages/chain-sdk/src/sign/signTx.ts b/packages/js-sdk/src/sign/signTx.ts similarity index 100% rename from packages/chain-sdk/src/sign/signTx.ts rename to packages/js-sdk/src/sign/signTx.ts diff --git a/packages/chain-sdk/src/types/auth.ts b/packages/js-sdk/src/types/auth.ts similarity index 100% rename from packages/chain-sdk/src/types/auth.ts rename to packages/js-sdk/src/types/auth.ts diff --git a/packages/chain-sdk/src/types/common.ts b/packages/js-sdk/src/types/common.ts similarity index 100% rename from packages/chain-sdk/src/types/common.ts rename to packages/js-sdk/src/types/common.ts diff --git a/packages/chain-sdk/src/types/index.ts b/packages/js-sdk/src/types/index.ts similarity index 100% rename from packages/chain-sdk/src/types/index.ts rename to packages/js-sdk/src/types/index.ts diff --git a/packages/chain-sdk/src/types/sp/BucketApproval.ts b/packages/js-sdk/src/types/sp/BucketApproval.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/BucketApproval.ts rename to packages/js-sdk/src/types/sp/BucketApproval.ts diff --git a/packages/chain-sdk/src/types/sp/Common.ts b/packages/js-sdk/src/types/sp/Common.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/Common.ts rename to packages/js-sdk/src/types/sp/Common.ts diff --git a/packages/chain-sdk/src/types/sp/ErrorResponse.ts b/packages/js-sdk/src/types/sp/ErrorResponse.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ErrorResponse.ts rename to packages/js-sdk/src/types/sp/ErrorResponse.ts diff --git a/packages/chain-sdk/src/types/sp/GetBucketMeta.ts b/packages/js-sdk/src/types/sp/GetBucketMeta.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/GetBucketMeta.ts rename to packages/js-sdk/src/types/sp/GetBucketMeta.ts diff --git a/packages/chain-sdk/src/types/sp/GetObject.ts b/packages/js-sdk/src/types/sp/GetObject.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/GetObject.ts rename to packages/js-sdk/src/types/sp/GetObject.ts diff --git a/packages/chain-sdk/src/types/sp/GetObjectMeta.ts b/packages/js-sdk/src/types/sp/GetObjectMeta.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/GetObjectMeta.ts rename to packages/js-sdk/src/types/sp/GetObjectMeta.ts diff --git a/packages/chain-sdk/src/types/sp/GetPreviewObject.ts b/packages/js-sdk/src/types/sp/GetPreviewObject.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/GetPreviewObject.ts rename to packages/js-sdk/src/types/sp/GetPreviewObject.ts diff --git a/packages/chain-sdk/src/types/sp/GetUserBuckets.ts b/packages/js-sdk/src/types/sp/GetUserBuckets.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/GetUserBuckets.ts rename to packages/js-sdk/src/types/sp/GetUserBuckets.ts diff --git a/packages/chain-sdk/src/types/sp/ListBucketReadRecord.ts b/packages/js-sdk/src/types/sp/ListBucketReadRecord.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListBucketReadRecord.ts rename to packages/js-sdk/src/types/sp/ListBucketReadRecord.ts diff --git a/packages/chain-sdk/src/types/sp/ListBucketsByIDs.ts b/packages/js-sdk/src/types/sp/ListBucketsByIDs.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListBucketsByIDs.ts rename to packages/js-sdk/src/types/sp/ListBucketsByIDs.ts diff --git a/packages/chain-sdk/src/types/sp/ListBucketsByPaymentAccount.ts b/packages/js-sdk/src/types/sp/ListBucketsByPaymentAccount.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListBucketsByPaymentAccount.ts rename to packages/js-sdk/src/types/sp/ListBucketsByPaymentAccount.ts diff --git a/packages/chain-sdk/src/types/sp/ListGroups.ts b/packages/js-sdk/src/types/sp/ListGroups.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListGroups.ts rename to packages/js-sdk/src/types/sp/ListGroups.ts diff --git a/packages/chain-sdk/src/types/sp/ListGroupsMembers.ts b/packages/js-sdk/src/types/sp/ListGroupsMembers.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListGroupsMembers.ts rename to packages/js-sdk/src/types/sp/ListGroupsMembers.ts diff --git a/packages/chain-sdk/src/types/sp/ListObjectPolicies.ts b/packages/js-sdk/src/types/sp/ListObjectPolicies.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListObjectPolicies.ts rename to packages/js-sdk/src/types/sp/ListObjectPolicies.ts diff --git a/packages/chain-sdk/src/types/sp/ListObjectsByBucketName.ts b/packages/js-sdk/src/types/sp/ListObjectsByBucketName.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListObjectsByBucketName.ts rename to packages/js-sdk/src/types/sp/ListObjectsByBucketName.ts diff --git a/packages/chain-sdk/src/types/sp/ListObjectsByIDs.ts b/packages/js-sdk/src/types/sp/ListObjectsByIDs.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListObjectsByIDs.ts rename to packages/js-sdk/src/types/sp/ListObjectsByIDs.ts diff --git a/packages/chain-sdk/src/types/sp/ListUserGroups.ts b/packages/js-sdk/src/types/sp/ListUserGroups.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListUserGroups.ts rename to packages/js-sdk/src/types/sp/ListUserGroups.ts diff --git a/packages/chain-sdk/src/types/sp/ListUserOwnedGroups.ts b/packages/js-sdk/src/types/sp/ListUserOwnedGroups.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListUserOwnedGroups.ts rename to packages/js-sdk/src/types/sp/ListUserOwnedGroups.ts diff --git a/packages/chain-sdk/src/types/sp/ListUserPaymentAccounts.ts b/packages/js-sdk/src/types/sp/ListUserPaymentAccounts.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ListUserPaymentAccounts.ts rename to packages/js-sdk/src/types/sp/ListUserPaymentAccounts.ts diff --git a/packages/chain-sdk/src/types/sp/MigrateBucket.ts b/packages/js-sdk/src/types/sp/MigrateBucket.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/MigrateBucket.ts rename to packages/js-sdk/src/types/sp/MigrateBucket.ts diff --git a/packages/chain-sdk/src/types/sp/ObjectApproval.ts b/packages/js-sdk/src/types/sp/ObjectApproval.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ObjectApproval.ts rename to packages/js-sdk/src/types/sp/ObjectApproval.ts diff --git a/packages/chain-sdk/src/types/sp/PutObject.ts b/packages/js-sdk/src/types/sp/PutObject.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/PutObject.ts rename to packages/js-sdk/src/types/sp/PutObject.ts diff --git a/packages/chain-sdk/src/types/sp/ReadQuota.ts b/packages/js-sdk/src/types/sp/ReadQuota.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/ReadQuota.ts rename to packages/js-sdk/src/types/sp/ReadQuota.ts diff --git a/packages/chain-sdk/src/types/sp/RequestNonce.ts b/packages/js-sdk/src/types/sp/RequestNonce.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/RequestNonce.ts rename to packages/js-sdk/src/types/sp/RequestNonce.ts diff --git a/packages/chain-sdk/src/types/sp/SuccessResponse.ts b/packages/js-sdk/src/types/sp/SuccessResponse.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/SuccessResponse.ts rename to packages/js-sdk/src/types/sp/SuccessResponse.ts diff --git a/packages/chain-sdk/src/types/sp/VerifyPermission.ts b/packages/js-sdk/src/types/sp/VerifyPermission.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/VerifyPermission.ts rename to packages/js-sdk/src/types/sp/VerifyPermission.ts diff --git a/packages/chain-sdk/src/types/sp/index.ts b/packages/js-sdk/src/types/sp/index.ts similarity index 100% rename from packages/chain-sdk/src/types/sp/index.ts rename to packages/js-sdk/src/types/sp/index.ts diff --git a/packages/chain-sdk/src/types/storage.ts b/packages/js-sdk/src/types/storage.ts similarity index 100% rename from packages/chain-sdk/src/types/storage.ts rename to packages/js-sdk/src/types/storage.ts diff --git a/packages/chain-sdk/src/types/tx.ts b/packages/js-sdk/src/types/tx.ts similarity index 100% rename from packages/chain-sdk/src/types/tx.ts rename to packages/js-sdk/src/types/tx.ts diff --git a/packages/chain-sdk/src/utils/allowance.ts b/packages/js-sdk/src/utils/allowance.ts similarity index 100% rename from packages/chain-sdk/src/utils/allowance.ts rename to packages/js-sdk/src/utils/allowance.ts diff --git a/packages/chain-sdk/src/utils/encoding.ts b/packages/js-sdk/src/utils/encoding.ts similarity index 100% rename from packages/chain-sdk/src/utils/encoding.ts rename to packages/js-sdk/src/utils/encoding.ts diff --git a/packages/chain-sdk/src/utils/grn.ts b/packages/js-sdk/src/utils/grn.ts similarity index 100% rename from packages/chain-sdk/src/utils/grn.ts rename to packages/js-sdk/src/utils/grn.ts diff --git a/packages/chain-sdk/src/utils/helpers.ts b/packages/js-sdk/src/utils/helpers.ts similarity index 100% rename from packages/chain-sdk/src/utils/helpers.ts rename to packages/js-sdk/src/utils/helpers.ts diff --git a/packages/chain-sdk/src/utils/http.ts b/packages/js-sdk/src/utils/http.ts similarity index 100% rename from packages/chain-sdk/src/utils/http.ts rename to packages/js-sdk/src/utils/http.ts diff --git a/packages/chain-sdk/src/utils/index.ts b/packages/js-sdk/src/utils/index.ts similarity index 100% rename from packages/chain-sdk/src/utils/index.ts rename to packages/js-sdk/src/utils/index.ts diff --git a/packages/chain-sdk/src/utils/s3.ts b/packages/js-sdk/src/utils/s3.ts similarity index 100% rename from packages/chain-sdk/src/utils/s3.ts rename to packages/js-sdk/src/utils/s3.ts diff --git a/packages/chain-sdk/src/utils/time.ts b/packages/js-sdk/src/utils/time.ts similarity index 100% rename from packages/chain-sdk/src/utils/time.ts rename to packages/js-sdk/src/utils/time.ts diff --git a/packages/chain-sdk/src/utils/units.ts b/packages/js-sdk/src/utils/units.ts similarity index 100% rename from packages/chain-sdk/src/utils/units.ts rename to packages/js-sdk/src/utils/units.ts diff --git a/packages/chain-sdk/tests/.env.example.ts b/packages/js-sdk/tests/.env.example.ts similarity index 100% rename from packages/chain-sdk/tests/.env.example.ts rename to packages/js-sdk/tests/.env.example.ts diff --git a/packages/chain-sdk/tests/account.spec.ts b/packages/js-sdk/tests/account.spec.ts similarity index 100% rename from packages/chain-sdk/tests/account.spec.ts rename to packages/js-sdk/tests/account.spec.ts diff --git a/packages/chain-sdk/tests/config.spec.ts b/packages/js-sdk/tests/config.spec.ts similarity index 100% rename from packages/chain-sdk/tests/config.spec.ts rename to packages/js-sdk/tests/config.spec.ts diff --git a/packages/chain-sdk/tests/parsexml.spec.ts b/packages/js-sdk/tests/parsexml.spec.ts similarity index 100% rename from packages/chain-sdk/tests/parsexml.spec.ts rename to packages/js-sdk/tests/parsexml.spec.ts diff --git a/packages/chain-sdk/tests/policy.spec.ts b/packages/js-sdk/tests/policy.spec.ts similarity index 100% rename from packages/chain-sdk/tests/policy.spec.ts rename to packages/js-sdk/tests/policy.spec.ts diff --git a/packages/chain-sdk/tests/query.spec.ts b/packages/js-sdk/tests/query.spec.ts similarity index 100% rename from packages/chain-sdk/tests/query.spec.ts rename to packages/js-sdk/tests/query.spec.ts diff --git a/packages/chain-sdk/tests/storage.spec.ts b/packages/js-sdk/tests/storage.spec.ts similarity index 100% rename from packages/chain-sdk/tests/storage.spec.ts rename to packages/js-sdk/tests/storage.spec.ts diff --git a/packages/chain-sdk/tests/utils.spec.ts b/packages/js-sdk/tests/utils.spec.ts similarity index 100% rename from packages/chain-sdk/tests/utils.spec.ts rename to packages/js-sdk/tests/utils.spec.ts diff --git a/packages/chain-sdk/tests/wallet.spec.ts b/packages/js-sdk/tests/wallet.spec.ts similarity index 100% rename from packages/chain-sdk/tests/wallet.spec.ts rename to packages/js-sdk/tests/wallet.spec.ts diff --git a/packages/chain-sdk/tsconfig.json b/packages/js-sdk/tsconfig.json similarity index 100% rename from packages/chain-sdk/tsconfig.json rename to packages/js-sdk/tsconfig.json diff --git a/packages/zk-crypto/CHANGELOG.md b/packages/zk-crypto/CHANGELOG.md index 5a325402..eb0f4294 100644 --- a/packages/zk-crypto/CHANGELOG.md +++ b/packages/zk-crypto/CHANGELOG.md @@ -1,5 +1,29 @@ # @bnb-chain/zk-crypto +## 0.0.4 + +### Patch Changes + +- [#346](https://github.com/bnb-chain/greenfield-js-sdk/pull/346) + [`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update package.json + +- [#347](https://github.com/bnb-chain/greenfield-js-sdk/pull/347) + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + +## 0.0.4-alpha.0 + +### Patch Changes + +- [#346](https://github.com/bnb-chain/greenfield-js-sdk/pull/346) + [`00a2cdd`](https://github.com/bnb-chain/greenfield-js-sdk/commit/00a2cddf98623c59780b6f8a8892674124d910c9) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update package.json + +- [#347](https://github.com/bnb-chain/greenfield-js-sdk/pull/347) + [`10c5723`](https://github.com/bnb-chain/greenfield-js-sdk/commit/10c572370abfa76c30c5f2f4b288cbc76efed6b1) + Thanks [@rrr523](https://github.com/rrr523)! - chore: Update deps + ## 0.0.3 ### Patch Changes diff --git a/packages/zk-crypto/package.json b/packages/zk-crypto/package.json index 2b6987f8..838bc78f 100644 --- a/packages/zk-crypto/package.json +++ b/packages/zk-crypto/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/greenfield-zk-crypto", - "version": "0.0.3", + "version": "0.0.4", "description": "Zk crypto wasm module", "scripts": { "predev": "rimraf ./dist", @@ -29,7 +29,20 @@ "dist", "types" ], - "keywords": [], + "repository": { + "type": "git", + "url": "https://github.com/bnb-chain/greenfield-js-sdk", + "directory": "packages/zk-crypto" + }, + "homepage": "https://github.com/bnb-chain/greenfield-js-sdk/tree/alpha/packages/zk-crypto#readme", + "bugs": "https://github.com/bnb-chain/greenfield-js-sdk/issues", + "keywords": [ + "greenfiled", + "crypto", + "signature", + "EDDSA", + "ECDSA" + ], "author": "", "license": "MIT", "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1410fc42..594f16e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,8 +42,8 @@ importers: specifier: ^3.0.2 version: 3.0.2(rollup@2.79.1) '@rollup/plugin-typescript': - specifier: ^8.5.0 - version: 8.5.0(rollup@2.79.1)(typescript@4.9.5) + specifier: ^11.1.3 + version: 11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5) '@types/chai': specifier: ^4.3.5 version: 4.3.5 @@ -108,11 +108,39 @@ importers: specifier: ^7.0.2 version: 7.0.2(rollup@2.79.1) + doc-site: + dependencies: + '@docusaurus/core': + specifier: 2.4.1 + version: 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/preset-classic': + specifier: 2.4.1 + version: 2.4.1(@algolia/client-search@4.20.0)(@types/react@18.2.12)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.8.2)(typescript@4.9.5) + '@mdx-js/react': + specifier: ^1.6.22 + version: 1.6.22(react@17.0.2) + clsx: + specifier: ^1.2.1 + version: 1.2.1 + prism-react-renderer: + specifier: ^1.3.5 + version: 1.3.5(react@17.0.2) + react: + specifier: ^17.0.2 + version: 17.0.2 + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) + devDependencies: + '@docusaurus/module-type-aliases': + specifier: 2.4.1 + version: 2.4.1(react-dom@17.0.2)(react@17.0.2) + examples/nextjs: dependencies: '@bnb-chain/greenfield-js-sdk': specifier: workspace:* - version: link:../../packages/chain-sdk + version: link:../../packages/js-sdk '@bnb-chain/greenfiled-file-handle': specifier: workspace:* version: link:../../packages/file-handle @@ -197,7 +225,7 @@ importers: dependencies: '@bnb-chain/greenfield-js-sdk': specifier: workspace:* - version: link:../../packages/chain-sdk + version: link:../../packages/js-sdk '@bnb-chain/greenfiled-file-handle': specifier: workspace:* version: link:../../packages/file-handle @@ -206,7 +234,68 @@ importers: specifier: ^7.0.3 version: 7.0.3 - packages/chain-sdk: + packages/create-gnfd-app: + dependencies: + '@inquirer/prompts': + specifier: ^3.1.1 + version: 3.1.1 + commander: + specifier: ^11.0.0 + version: 11.0.0 + cross-spawn: + specifier: ^7.0.3 + version: 7.0.3 + download-git-repo: + specifier: ^3.0.2 + version: 3.0.2 + fs-extra: + specifier: ^11.1.1 + version: 11.1.1 + handlebars: + specifier: ^4.7.8 + version: 4.7.8 + ora: + specifier: ^5.4.0 + version: 5.4.1 + picocolors: + specifier: ^1.0.0 + version: 1.0.0 + validate-npm-package-name: + specifier: ^5.0.0 + version: 5.0.0 + devDependencies: + '@types/cross-spawn': + specifier: ^6.0.3 + version: 6.0.3 + '@types/fs-extra': + specifier: ^11.0.1 + version: 11.0.1 + '@types/validate-npm-package-name': + specifier: ^4.0.0 + version: 4.0.0 + + packages/file-handle: + devDependencies: + clean-webpack-plugin: + specifier: ^4.0.0 + version: 4.0.0(webpack@5.88.1) + copy-webpack-plugin: + specifier: ^11.0.0 + version: 11.0.0(webpack@5.88.1) + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + typescript: + specifier: ^5.1.6 + version: 5.2.2 + webpack: + specifier: ^5.88.1 + version: 5.88.1(webpack-cli@5.1.4) + webpack-cli: + specifier: ^5.1.4 + version: 5.1.4(webpack@5.88.1) + + packages/js-sdk: dependencies: '@bnb-chain/greenfield-cosmos-types': specifier: 0.4.0-alpha.23 @@ -275,6 +364,9 @@ importers: '@jest/globals': specifier: ^29.5.0 version: 29.5.0 + '@rollup/plugin-typescript': + specifier: ^11.1.3 + version: 11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5) '@types/jest': specifier: ^29.5.1 version: 29.5.1 @@ -312,67 +404,6 @@ importers: specifier: ^4.9.5 version: 4.9.5 - packages/create-gnfd-app: - dependencies: - '@inquirer/prompts': - specifier: ^3.1.1 - version: 3.1.1 - commander: - specifier: ^11.0.0 - version: 11.0.0 - cross-spawn: - specifier: ^7.0.3 - version: 7.0.3 - download-git-repo: - specifier: ^3.0.2 - version: 3.0.2 - fs-extra: - specifier: ^11.1.1 - version: 11.1.1 - handlebars: - specifier: ^4.7.8 - version: 4.7.8 - ora: - specifier: ^5.4.0 - version: 5.4.1 - picocolors: - specifier: ^1.0.0 - version: 1.0.0 - validate-npm-package-name: - specifier: ^5.0.0 - version: 5.0.0 - devDependencies: - '@types/cross-spawn': - specifier: ^6.0.3 - version: 6.0.3 - '@types/fs-extra': - specifier: ^11.0.1 - version: 11.0.1 - '@types/validate-npm-package-name': - specifier: ^4.0.0 - version: 4.0.0 - - packages/file-handle: - devDependencies: - clean-webpack-plugin: - specifier: ^4.0.0 - version: 4.0.0(webpack@5.88.1) - copy-webpack-plugin: - specifier: ^11.0.0 - version: 11.0.0(webpack@5.88.1) - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - typescript: - specifier: ^5.1.6 - version: 5.2.2 - webpack: - specifier: ^5.88.1 - version: 5.88.1(webpack-cli@5.1.4) - webpack-cli: - specifier: ^5.1.4 - version: 5.1.4(webpack@5.88.1) - packages/zk-crypto: devDependencies: clean-webpack-plugin: @@ -404,6 +435,144 @@ packages: resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} dev: false + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.8.2): + resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.8.2) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + dev: false + + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.8.2): + resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} + peerDependencies: + search-insights: '>= 1 < 3' + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + search-insights: 2.8.2 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + dev: false + + /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): + resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + '@algolia/client-search': 4.20.0 + algoliasearch: 4.20.0 + dev: false + + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0): + resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/client-search': 4.20.0 + algoliasearch: 4.20.0 + dev: false + + /@algolia/cache-browser-local-storage@4.20.0: + resolution: {integrity: sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==} + dependencies: + '@algolia/cache-common': 4.20.0 + dev: false + + /@algolia/cache-common@4.20.0: + resolution: {integrity: sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==} + dev: false + + /@algolia/cache-in-memory@4.20.0: + resolution: {integrity: sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==} + dependencies: + '@algolia/cache-common': 4.20.0 + dev: false + + /@algolia/client-account@4.20.0: + resolution: {integrity: sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==} + dependencies: + '@algolia/client-common': 4.20.0 + '@algolia/client-search': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: false + + /@algolia/client-analytics@4.20.0: + resolution: {integrity: sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==} + dependencies: + '@algolia/client-common': 4.20.0 + '@algolia/client-search': 4.20.0 + '@algolia/requester-common': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: false + + /@algolia/client-common@4.20.0: + resolution: {integrity: sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==} + dependencies: + '@algolia/requester-common': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: false + + /@algolia/client-personalization@4.20.0: + resolution: {integrity: sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==} + dependencies: + '@algolia/client-common': 4.20.0 + '@algolia/requester-common': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: false + + /@algolia/client-search@4.20.0: + resolution: {integrity: sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==} + dependencies: + '@algolia/client-common': 4.20.0 + '@algolia/requester-common': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: false + + /@algolia/events@4.0.1: + resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} + dev: false + + /@algolia/logger-common@4.20.0: + resolution: {integrity: sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==} + dev: false + + /@algolia/logger-console@4.20.0: + resolution: {integrity: sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==} + dependencies: + '@algolia/logger-common': 4.20.0 + dev: false + + /@algolia/requester-browser-xhr@4.20.0: + resolution: {integrity: sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==} + dependencies: + '@algolia/requester-common': 4.20.0 + dev: false + + /@algolia/requester-common@4.20.0: + resolution: {integrity: sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==} + dev: false + + /@algolia/requester-node-http@4.20.0: + resolution: {integrity: sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==} + dependencies: + '@algolia/requester-common': 4.20.0 + dev: false + + /@algolia/transporter@4.20.0: + resolution: {integrity: sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==} + dependencies: + '@algolia/cache-common': 4.20.0 + '@algolia/logger-common': 4.20.0 + '@algolia/requester-common': 4.20.0 + dev: false + /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} @@ -422,6 +591,30 @@ packages: resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} + /@babel/core@7.12.9: + resolution: {integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.12.9) + '@babel/helpers': 7.22.15 + '@babel/parser': 7.22.15 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 + convert-source-map: 1.9.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + lodash: 4.17.21 + resolve: 1.22.2 + semver: 5.7.1 + source-map: 0.5.7 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/core@7.22.15: resolution: {integrity: sha512-PtZqMmgRrvj8ruoEOIwVA3yoF91O+Hgw9o7DAUTNBA6Mo2jpu31clx9a7Nz/9JznqetTR6zwfC4L3LAjKQXUwA==} engines: {node: '>=6.9.0'} @@ -472,14 +665,12 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.15 - dev: true /@babel/helper-builder-binary-assignment-operator-visitor@7.22.3: resolution: {integrity: sha512-ahEoxgqNoYXm0k22TvOke48i1PkavGu0qGCmcq9ugi6gnmvKNaMjKBSrZTnWUi1CFEeNAUiVba0Wtzm03aSkJg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.15 - dev: true /@babel/helper-compilation-targets@7.22.15: resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} @@ -509,7 +700,6 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-create-regexp-features-plugin@7.22.1(@babel/core@7.22.15): resolution: {integrity: sha512-WWjdnfR3LPIe+0EY8td7WmjhytxXtjKAEpnAxun/hkNiyOaPlvGK+NZaBFIdi9ndYV3Gav7BpFvtUwnaJlwi1w==} @@ -521,7 +711,6 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 - dev: true /@babel/helper-define-polyfill-provider@0.4.0(@babel/core@7.22.15): resolution: {integrity: sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==} @@ -537,7 +726,6 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} @@ -561,7 +749,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.15 - dev: true /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} @@ -569,6 +756,20 @@ packages: dependencies: '@babel/types': 7.22.15 + /@babel/helper-module-transforms@7.22.15(@babel/core@7.12.9): + resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.15 + dev: false + /@babel/helper-module-transforms@7.22.15(@babel/core@7.22.15): resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} engines: {node: '>=6.9.0'} @@ -587,12 +788,14 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.15 - dev: true + + /@babel/helper-plugin-utils@7.10.4: + resolution: {integrity: sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==} + dev: false /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} @@ -607,7 +810,6 @@ packages: '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-replace-supers@7.22.1: resolution: {integrity: sha512-ut4qrkE4AuSfrwHSps51ekR1ZY/ygrP1tp0WFm8oVq6nzc/hvfV/22JylndIbsf2U2M9LOMwiSddr6y+78j+OQ==} @@ -621,7 +823,6 @@ packages: '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color - dev: true /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} @@ -634,7 +835,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.15 - dev: true /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} @@ -664,7 +864,6 @@ packages: '@babel/types': 7.22.15 transitivePeerDependencies: - supports-color - dev: true /@babel/helpers@7.22.15: resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==} @@ -699,7 +898,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-6r4yRwEnorYByILoDRnEqxtojYKuiIv9FojW2E8GUKo9eWBwbKcd9IiZOZpdyXc64RmyGGyPu3/uAcrz/dq2kQ==} @@ -711,7 +909,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.22.15) - dev: true /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} @@ -767,6 +964,18 @@ packages: '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) dev: true + /@babel/plugin-proposal-object-rest-spread@7.12.1(@babel/core@7.12.9): + resolution: {integrity: sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) + '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.12.9) + dev: false + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.15): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} @@ -808,7 +1017,6 @@ packages: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.15) transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} @@ -820,7 +1028,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.15): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} @@ -829,7 +1036,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} @@ -847,7 +1053,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.15): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} @@ -857,7 +1062,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-decorators@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-R16Zuge73+8/nLcDjkIpyhi5wIbN7i7fiuLJR8yQX7vPAa/ltUKtd3iLbb4AgP5nrLi91HnNUNosELIGUGH1bg==} @@ -876,7 +1080,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} @@ -885,7 +1088,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.15): resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} @@ -905,7 +1107,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-import-attributes@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-i35jZJv6aO7hxEbIWQ41adVfOzjm9dcYDNeWlBMd8p0ZQRtNUCBrmGwZt+H5lb+oOC9a3svp956KP0oWGA1YsA==} @@ -915,7 +1116,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.15): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} @@ -924,7 +1124,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} @@ -933,7 +1132,15 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true + + /@babel/plugin-syntax-jsx@7.12.1(@babel/core@7.12.9): + resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.15): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} @@ -943,7 +1150,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.15): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -952,7 +1158,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} @@ -961,7 +1166,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.15): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} @@ -970,7 +1174,15 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.12.9): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -979,7 +1191,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -988,7 +1199,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.15): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -997,7 +1207,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.15): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} @@ -1007,7 +1216,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.15): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} @@ -1017,7 +1225,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.22.15): resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} @@ -1027,7 +1234,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} @@ -1038,7 +1244,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-arrow-functions@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==} @@ -1048,7 +1253,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-async-generator-functions@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-36A4Aq48t66btydbZd5Fk0/xJqbpg/v4QWI4AH4cYHBXy9Mu42UOupZpebKFiCFNT9S9rJFcsld0gsv0ayLjtA==} @@ -1063,7 +1267,6 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.22.15): resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} @@ -1077,7 +1280,6 @@ packages: '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.22.15) transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} @@ -1087,7 +1289,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.22.15): resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} @@ -1097,7 +1298,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-class-properties@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-mASLsd6rhOrLZ5F3WbCxkzl67mmOnqik0zrg5W6D/X0QMW7HtvnoL1dRARLKIbMP3vXwkwziuLesPqWVGIl6Bw==} @@ -1110,7 +1310,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-class-static-block@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-5BirgNWNOx7cwbTJCOmKFJ1pZjwk5MUfMIwiBBvsirCJMZeQgs5pk6i1OlkVg+1Vef5LfBahFOrdCnAWvkVKMw==} @@ -1124,7 +1323,6 @@ packages: '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.15) transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-classes@7.21.0(@babel/core@7.22.15): resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} @@ -1144,7 +1342,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-computed-properties@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q==} @@ -1155,7 +1352,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 - dev: true /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.22.15): resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} @@ -1165,7 +1361,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} @@ -1176,7 +1371,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} @@ -1186,7 +1380,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-dynamic-import@7.22.1(@babel/core@7.22.15): resolution: {integrity: sha512-rlhWtONnVBPdmt+jeewS0qSnMz/3yLFrqAP8hHC6EDcrYRSyuz9f9yQhHvVn2Ad6+yO9fHXac5piudeYrInxwQ==} @@ -1197,7 +1390,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.15) - dev: true /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} @@ -1208,7 +1400,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.3 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-export-namespace-from@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-5Ti1cHLTDnt3vX61P9KZ5IG09bFXp4cDVFJIAeCZuxu9OXXJJZp5iP0n/rzM2+iAutJY+KWEyyHcRaHlpQ/P5g==} @@ -1219,7 +1410,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.15) - dev: true /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.22.15): resolution: {integrity: sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==} @@ -1240,7 +1430,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} @@ -1252,7 +1441,6 @@ packages: '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-function-name': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-json-strings@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-IuvOMdeOOY2X4hRNAT6kwbePtK21BUyrAEgLKviL8pL6AEEVUVcqtRdN/HJXBLGIbt9T3ETmXRnFedRRmQNTYw==} @@ -1263,7 +1451,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.15) - dev: true /@babel/plugin-transform-literals@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} @@ -1273,7 +1460,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-logical-assignment-operators@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-CbayIfOw4av2v/HYZEsH+Klks3NC2/MFIR3QR8gnpGNNPEaq2fdlVCRYG/paKs7/5hvBLQ+H70pGWOHtlNEWNA==} @@ -1284,7 +1470,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.15) - dev: true /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} @@ -1294,7 +1479,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.22.15): resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} @@ -1305,7 +1489,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-modules-commonjs@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==} @@ -1317,7 +1500,6 @@ packages: '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 - dev: true /@babel/plugin-transform-modules-systemjs@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-V21W3bKLxO3ZjcBJZ8biSvo5gQ85uIXW2vJfh7JSWf/4SLUSr1tOoHX3ruN4+Oqa2m+BKfsxTR1I+PsvkIWvNw==} @@ -1330,7 +1512,6 @@ packages: '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.15 - dev: true /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} @@ -1341,7 +1522,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-named-capturing-groups-regex@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-c6HrD/LpUdNNJsISQZpds3TXvfYIAbo+efE9aWmY/PmSRD0agrJ9cPMt4BmArwUQ7ZymEWTFjTyp+yReLJZh0Q==} @@ -1352,7 +1532,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-new-target@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-5RuJdSo89wKdkRTqtM9RVVJzHum9c2s0te9rB7vZC1zKKxcioWIy+xcu4OoIAjyFZhb/bp5KkunuLin1q7Ct+w==} @@ -1362,7 +1541,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-nullish-coalescing-operator@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-CpaoNp16nX7ROtLONNuCyenYdY/l7ZsR6aoVa7rW7nMWisoNoQNIH5Iay/4LDyRjKMuElMqXiBoOQCDLTMGZiw==} @@ -1373,7 +1551,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) - dev: true /@babel/plugin-transform-numeric-separator@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-+AF88fPDJrnseMh5vD9+SH6wq4ZMvpiTMHh58uLs+giMEyASFVhcT3NkoyO+NebFCNnpHJEq5AXO2txV4AGPDQ==} @@ -1384,7 +1561,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) - dev: true /@babel/plugin-transform-object-rest-spread@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-38bzTsqMMCI46/TQnJwPPpy33EjLCc1Gsm2hRTF6zTMWnKsN61vdrpuzIEGQyKEhDSYDKyZHrrd5FMj4gcUHhw==} @@ -1398,7 +1574,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.15) - dev: true /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} @@ -1411,7 +1586,6 @@ packages: '@babel/helper-replace-supers': 7.22.1 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-optional-catch-binding@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-bnDFWXFzWY0BsOyqaoSXvMQ2F35zutQipugog/rqotL2S4ciFOKlRYUu9djt4iq09oh2/34hqfRR2k1dIvuu4g==} @@ -1422,7 +1596,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) - dev: true /@babel/plugin-transform-optional-chaining@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-63v3/UFFxhPKT8j8u1jTTGVyITxl7/7AfOqK8C5gz1rHURPUGe3y5mvIf68eYKGoBNahtJnTxBKug4BQOnzeJg==} @@ -1434,7 +1607,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) - dev: true + + /@babel/plugin-transform-parameters@7.22.3(@babel/core@7.12.9): + resolution: {integrity: sha512-x7QHQJHPuD9VmfpzboyGJ5aHEr9r7DsAsdxdhJiTB3J3j8dyl+NFZ+rX5Q2RWFDCs61c06qBfS4ys2QYn8UkMw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-parameters@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-x7QHQJHPuD9VmfpzboyGJ5aHEr9r7DsAsdxdhJiTB3J3j8dyl+NFZ+rX5Q2RWFDCs61c06qBfS4ys2QYn8UkMw==} @@ -1444,7 +1626,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-private-methods@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-fC7jtjBPFqhqpPAE+O4LKwnLq7gGkD3ZmC2E3i4qWH34mH3gOg2Xrq5YMHUq6DM30xhqM1DNftiRaSqVjEG+ug==} @@ -1457,7 +1638,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-private-property-in-object@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-C7MMl4qWLpgVCbXfj3UW8rR1xeCnisQ0cU7YJHV//8oNBS0aCIVg1vFnZXxOckHhEpQyqNNkWmvSEWnMLlc+Vw==} @@ -1472,7 +1652,6 @@ packages: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.15) transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} @@ -1482,7 +1661,16 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true + + /@babel/plugin-transform-react-constant-elements@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} @@ -1492,7 +1680,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-react-jsx-development@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} @@ -1502,7 +1689,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) - dev: true /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.22.15): resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==} @@ -1516,7 +1702,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) '@babel/types': 7.22.15 - dev: true /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} @@ -1527,7 +1712,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-regenerator@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w==} @@ -1538,7 +1722,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.1 - dev: true /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} @@ -1548,7 +1731,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-runtime@7.22.4(@babel/core@7.22.15): resolution: {integrity: sha512-Urkiz1m4zqiRo17klj+l3nXgiRTFQng91Bc1eiLF7BMQu1e7wE5Gcq9xSv062IF068NHjcutSbIMev60gXxAvA==} @@ -1565,7 +1747,6 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} @@ -1575,7 +1756,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-spread@7.20.7(@babel/core@7.22.15): resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} @@ -1586,7 +1766,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - dev: true /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} @@ -1596,7 +1775,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} @@ -1606,7 +1784,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.22.15): resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} @@ -1616,7 +1793,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-typescript@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-pyjnCIniO5PNaEuGxT28h0HbMru3qCVrMqVgVOz/krComdIrY9W6FCLBq9NWHY8HDGaUlan+UhmZElDENIfCcw==} @@ -1631,7 +1807,6 @@ packages: '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.15) transitivePeerDependencies: - supports-color - dev: true /@babel/plugin-transform-unicode-escapes@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg==} @@ -1641,7 +1816,6 @@ packages: dependencies: '@babel/core': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-unicode-property-regex@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-5ScJ+OmdX+O6HRuMGW4kv7RL9vIKdtdAj9wuWUKy1wbHY3jaM/UlyIiC1G7J6UJiiyMukjjK0QwL3P0vBd0yYg==} @@ -1652,7 +1826,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.22.15): resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} @@ -1663,7 +1836,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-unicode-sets-regex@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-hNufLdkF8vqywRp+P55j4FHXqAX2LRUccoZHH7AFn1pq5ZOO2ISKW9w13bFZVjBoTqeve2HOgoJCcaziJVhGNw==} @@ -1674,7 +1846,6 @@ packages: '@babel/core': 7.22.15 '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.15) '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/preset-env@7.22.4(@babel/core@7.22.15): resolution: {integrity: sha512-c3lHOjbwBv0TkhYCr+XCR6wKcSZ1QbQTVdSkZUaVpLv8CVWotBMArWUi5UAJrcrQaEnleVkkvaV8F/pmc/STZQ==} @@ -1765,7 +1936,6 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true /@babel/preset-modules@0.1.5(@babel/core@7.22.15): resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} @@ -1778,7 +1948,6 @@ packages: '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.15) '@babel/types': 7.22.15 esutils: 2.0.3 - dev: true /@babel/preset-react@7.22.3(@babel/core@7.22.15): resolution: {integrity: sha512-lxDz1mnZ9polqClBCVBjIVUypoB4qV3/tZUDb/IlYbW1kiiLaXaX+bInbRjl+lNQ/iUZraQ3+S8daEmoELMWug==} @@ -1793,7 +1962,6 @@ packages: '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.22.15) '@babel/plugin-transform-react-pure-annotations': 7.18.6(@babel/core@7.22.15) - dev: true /@babel/preset-typescript@7.21.5(@babel/core@7.22.15): resolution: {integrity: sha512-iqe3sETat5EOrORXiQ6rWfoOg2y68Cs75B9wNxdPW4kixJxh7aXQE1KPdWLDniC24T/6dSnguF33W9j/ZZQcmA==} @@ -1809,11 +1977,17 @@ packages: '@babel/plugin-transform-typescript': 7.22.3(@babel/core@7.22.15) transitivePeerDependencies: - supports-color - dev: true /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - dev: true + + /@babel/runtime-corejs3@7.22.15: + resolution: {integrity: sha512-SAj8oKi8UogVi6eXQXKNPu8qZ78Yzy7zawrlTr0M+IuW/g8Qe9gVDhGcF9h1S69OyACpYoLxEzpjs1M15sI5wQ==} + engines: {node: '>=6.9.0'} + dependencies: + core-js-pure: 3.32.2 + regenerator-runtime: 0.14.0 + dev: false /@babel/runtime@7.22.3: resolution: {integrity: sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==} @@ -2114,6 +2288,13 @@ packages: - utf-8-validate dev: false + /@colors/colors@1.5.0: + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + requiresBuild: true + dev: false + optional: true + /@commitlint/cli@17.6.5: resolution: {integrity: sha512-3PQrWr/uo6lzF5k7n5QuosCYnzaxP9qGBp3jhWP0Vmsa7XA6wrl9ccPqfQyXpSbQE3zBROVO3TDqgPKe4tfmLQ==} engines: {node: '>=v14'} @@ -2582,417 +2763,1200 @@ packages: /@discoveryjs/json-ext@0.5.7: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} - dev: true - /@emotion/hash@0.8.0: - resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + /@docsearch/css@3.5.2: + resolution: {integrity: sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==} dev: false - /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@docsearch/react@3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.12)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.8.2): + resolution: {integrity: sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true dependencies: - eslint: 8.48.0 - eslint-visitor-keys: 3.4.3 - - /@eslint-community/regexpp@4.8.0: - resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0)(search-insights@2.8.2) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.20.0)(algoliasearch@4.20.0) + '@docsearch/css': 3.5.2 + '@types/react': 18.2.12 + algoliasearch: 4.20.0 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + search-insights: 2.8.2 + transitivePeerDependencies: + - '@algolia/client-search' + dev: false - /@eslint/eslintrc@2.1.2: - resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@docusaurus/core@2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-SNsY7PshK3Ri7vtsLXVeAJGS50nJN3RgF836zkyUfAD01Fq+sAk5EwWgLw+nnm5KVNGDu7PRR2kRGDsWvqpo0g==} + engines: {node: '>=16.14'} + hasBin: true + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 dependencies: - ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) - espree: 9.6.1 - globals: 13.20.0 - ignore: 5.2.4 + '@babel/core': 7.22.15 + '@babel/generator': 7.22.15 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-transform-runtime': 7.22.4(@babel/core@7.22.15) + '@babel/preset-env': 7.22.4(@babel/core@7.22.15) + '@babel/preset-react': 7.22.3(@babel/core@7.22.15) + '@babel/preset-typescript': 7.21.5(@babel/core@7.22.15) + '@babel/runtime': 7.22.3 + '@babel/runtime-corejs3': 7.22.15 + '@babel/traverse': 7.22.15 + '@docusaurus/cssnano-preset': 2.4.1 + '@docusaurus/logger': 2.4.1 + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/react-loadable': 5.5.2(react@17.0.2) + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-common': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + '@slorber/static-site-generator-webpack-plugin': 4.0.7 + '@svgr/webpack': 6.5.1 + autoprefixer: 10.4.15(postcss@8.4.14) + babel-loader: 8.3.0(@babel/core@7.22.15)(webpack@5.88.1) + babel-plugin-dynamic-import-node: 2.3.3 + boxen: 6.2.1 + chalk: 4.1.2 + chokidar: 3.5.3 + clean-css: 5.3.2 + cli-table3: 0.6.3 + combine-promises: 1.2.0 + commander: 5.1.0 + copy-webpack-plugin: 11.0.0(webpack@5.88.1) + core-js: 3.32.2 + css-loader: 6.8.1(webpack@5.88.1) + css-minimizer-webpack-plugin: 4.2.2(clean-css@5.3.2)(webpack@5.88.1) + cssnano: 5.1.15(postcss@8.4.14) + del: 6.1.1 + detect-port: 1.5.1 + escape-html: 1.0.3 + eta: 2.2.0 + file-loader: 6.2.0(webpack@5.88.1) + fs-extra: 10.1.0 + html-minifier-terser: 6.1.0 + html-tags: 3.3.1 + html-webpack-plugin: 5.5.3(webpack@5.88.1) import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 + leven: 3.1.0 + lodash: 4.17.21 + mini-css-extract-plugin: 2.7.6(webpack@5.88.1) + postcss: 8.4.14 + postcss-loader: 7.3.3(postcss@8.4.14)(typescript@4.9.5)(webpack@5.88.1) + prompts: 2.4.2 + react: 17.0.2 + react-dev-utils: 12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.88.1) + react-dom: 17.0.2(react@17.0.2) + react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.2) + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.88.1) + react-router: 5.3.4(react@17.0.2) + react-router-config: 5.1.1(react-router@5.3.4)(react@17.0.2) + react-router-dom: 5.3.4(react@17.0.2) + rtl-detect: 1.0.4 + semver: 7.5.2 + serve-handler: 6.1.5 + shelljs: 0.8.5 + terser-webpack-plugin: 5.3.9(webpack@5.88.1) + tslib: 2.5.2 + update-notifier: 5.1.0 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.88.1) + wait-on: 6.0.1 + webpack: 5.88.1(webpack-cli@5.1.4) + webpack-bundle-analyzer: 4.9.1 + webpack-dev-server: 4.15.1(webpack@5.88.1) + webpack-merge: 5.9.0 + webpackbar: 5.0.2(webpack@5.88.1) transitivePeerDependencies: + - '@docusaurus/types' + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss - supports-color - - /@eslint/js@8.48.0: - resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - /@ethereumjs/rlp@4.0.1: - resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} - engines: {node: '>=14'} - hasBin: true - dev: false - - /@ethereumjs/util@8.0.5: - resolution: {integrity: sha512-259rXKK3b3D8HRVdRmlOEi6QFvwxdt304hhrEAmpZhsj7ufXEOTIc9JRZPMnXatKjECokdLNBcDOFBeBSzAIaw==} - engines: {node: '>=14'} - dependencies: - '@chainsafe/ssz': 0.9.4 - '@ethereumjs/rlp': 4.0.1 - ethereum-cryptography: 1.2.0 + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/abi@5.7.0: - resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + /@docusaurus/cssnano-preset@2.4.1: + resolution: {integrity: sha512-ka+vqXwtcW1NbXxWsh6yA1Ckii1klY9E53cJ4O9J09nkMBgrNX3iEFED1fWdv8wf4mJjvGi5RLZ2p9hJNjsLyQ==} + engines: {node: '>=16.14'} dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 + cssnano-preset-advanced: 5.3.10(postcss@8.4.14) + postcss: 8.4.14 + postcss-sort-media-queries: 4.4.1(postcss@8.4.14) + tslib: 2.5.2 dev: false - /@ethersproject/abstract-provider@5.7.0: - resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + /@docusaurus/logger@2.4.1: + resolution: {integrity: sha512-5h5ysIIWYIDHyTVd8BjheZmQZmEgWDR54aQ1BX9pjFfpyzFo5puKXKYrYJXbjEHGyVhEzmB9UXwbxGfaZhOjcg==} + engines: {node: '>=16.14'} dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 + chalk: 4.1.2 + tslib: 2.5.2 dev: false - /@ethersproject/abstract-signer@5.7.0: - resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} + /@docusaurus/mdx-loader@2.4.1(@docusaurus/types@2.4.1)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-4KhUhEavteIAmbBj7LVFnrVYDiU51H5YWW1zY6SmBSte/YLhDutztLTBE0PQl1Grux1jzUJeaSvAzHpTn6JJDQ==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 + '@babel/parser': 7.22.15 + '@babel/traverse': 7.22.15 + '@docusaurus/logger': 2.4.1 + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@mdx-js/mdx': 1.6.22 + escape-html: 1.0.3 + file-loader: 6.2.0(webpack@5.88.1) + fs-extra: 10.1.0 + image-size: 1.0.2 + mdast-util-to-string: 2.0.0 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + remark-emoji: 2.2.0 + stringify-object: 3.3.0 + tslib: 2.5.2 + unified: 9.2.2 + unist-util-visit: 2.0.3 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.88.1) + webpack: 5.88.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - '@docusaurus/types' + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli dev: false - /@ethersproject/address@5.7.0: - resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + /@docusaurus/module-type-aliases@2.4.1(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-gLBuIFM8Dp2XOCWffUDSjtxY7jQgKvYujt7Mx5s4FCTfoL5dN1EVbnrn+O2Wvh8b0a77D57qoIDY7ghgmatR1A==} + peerDependencies: + react: '*' + react-dom: '*' dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/rlp': 5.7.0 - dev: false + '@docusaurus/react-loadable': 5.5.2(react@17.0.2) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@types/history': 4.7.11 + '@types/react': 18.2.12 + '@types/react-router-config': 5.0.7 + '@types/react-router-dom': 5.3.3 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2) + react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.2) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli - /@ethersproject/base64@5.7.0: - resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} - dependencies: - '@ethersproject/bytes': 5.7.0 + /@docusaurus/plugin-content-blog@2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-E2i7Knz5YIbE1XELI6RlTnZnGgS52cUO4BlCiCUCvQHbR+s1xeIWz4C6BtaVnlug0Ccz7nFSksfwDpVlkujg5Q==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/logger': 2.4.1 + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-common': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + cheerio: 1.0.0-rc.12 + feed: 4.2.2 + fs-extra: 10.1.0 + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + reading-time: 1.5.0 + tslib: 2.5.2 + unist-util-visit: 2.0.3 + utility-types: 3.10.0 + webpack: 5.88.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/basex@5.7.0: - resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/properties': 5.7.0 + /@docusaurus/plugin-content-docs@2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-Lo7lSIcpswa2Kv4HEeUcGYqaasMUQNpjTXpV0N8G6jXgZaQurqp7E8NGYeGbDXnb48czmHWbzDL4S3+BbK0VzA==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/logger': 2.4.1 + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/module-type-aliases': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + '@types/react-router-config': 5.0.7 + combine-promises: 1.2.0 + fs-extra: 10.1.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.5.2 + utility-types: 3.10.0 + webpack: 5.88.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/bignumber@5.7.0: - resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - bn.js: 5.2.1 + /@docusaurus/plugin-content-pages@2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-/UjuH/76KLaUlL+o1OvyORynv6FURzjurSjvn2lbWTFc4tpYY2qLYTlKpTCBVPhlLUQsfyFnshEJDLmPneq2oA==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + fs-extra: 10.1.0 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.5.2 + webpack: 5.88.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/bytes@5.7.0: - resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} - dependencies: - '@ethersproject/logger': 5.7.0 + /@docusaurus/plugin-debug@2.4.1(@types/react@18.2.12)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-7Yu9UPzRShlrH/G8btOpR0e6INFZr0EegWplMjOqelIwAcx3PKyR8mgPTxGTxcqiYj6hxSCRN0D8R7YrzImwNA==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + fs-extra: 10.1.0 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-json-view: 1.21.3(@types/react@18.2.12)(react-dom@17.0.2)(react@17.0.2) + tslib: 2.5.2 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - '@types/react' + - bufferutil + - csso + - debug + - encoding + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/constants@5.7.0: - resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} - dependencies: - '@ethersproject/bignumber': 5.7.0 + /@docusaurus/plugin-google-analytics@2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-dyZJdJiCoL+rcfnm0RPkLt/o732HvLiEwmtoNzOoz9MSZz117UH2J6U2vUDtzUzwtFLIf32KkeyzisbwUCgcaQ==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.5.2 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/contracts@5.7.0: - resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 + /@docusaurus/plugin-google-gtag@2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-mKIefK+2kGTQBYvloNEKtDmnRD7bxHLsBcxgnbt4oZwzi2nxCGjPX6+9SQO2KCN5HZbNrYmGo5GJfMgoRvy6uA==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.5.2 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/hash@5.7.0: - resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 + /@docusaurus/plugin-google-tag-manager@2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-Zg4Ii9CMOLfpeV2nG74lVTWNtisFaH9QNtEw48R5QE1KIwDBdTVaiSA18G1EujZjrzJJzXN79VhINSbOJO/r3g==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.5.2 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/hdnode@5.7.0: - resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wordlists': 5.7.0 + /@docusaurus/plugin-sitemap@2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-lZx+ijt/+atQ3FVE8FOHV/+X3kuok688OydDXrqKRJyXBJZKgGjA2Qa8RjQ4f27V2woaXhtnyrdPop/+OjVMRg==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/logger': 2.4.1 + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-common': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + fs-extra: 10.1.0 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + sitemap: 7.1.1 + tslib: 2.5.2 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/json-wallets@5.7.0: - resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - aes-js: 3.0.0 - scrypt-js: 3.0.1 + /@docusaurus/preset-classic@2.4.1(@algolia/client-search@4.20.0)(@types/react@18.2.12)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.8.2)(typescript@4.9.5): + resolution: {integrity: sha512-P4//+I4zDqQJ+UDgoFrjIFaQ1MeS9UD1cvxVQaI6O7iBmiHQm0MGROP1TbE7HlxlDPXFJjZUK3x3cAoK63smGQ==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-content-blog': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-debug': 2.4.1(@types/react@18.2.12)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-google-analytics': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-google-gtag': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-google-tag-manager': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-sitemap': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/theme-classic': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/theme-search-algolia': 2.4.1(@algolia/client-search@4.20.0)(@docusaurus/types@2.4.1)(@types/react@18.2.12)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.8.2)(typescript@4.9.5) + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + transitivePeerDependencies: + - '@algolia/client-search' + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - '@types/react' + - bufferutil + - csso + - debug + - encoding + - esbuild + - eslint + - lightningcss + - search-insights + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/keccak256@5.7.0: - resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + /@docusaurus/react-loadable@5.5.2(react@17.0.2): + resolution: {integrity: sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==} + peerDependencies: + react: '*' dependencies: - '@ethersproject/bytes': 5.7.0 - js-sha3: 0.8.0 + '@types/react': 18.2.12 + prop-types: 15.8.1 + react: 17.0.2 + + /@docusaurus/theme-classic@2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-Rz0wKUa+LTW1PLXmwnf8mn85EBzaGSt6qamqtmnh9Hflkc+EqiYMhtUJeLdV+wsgYq4aG0ANc+bpUDpsUhdnwg==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/module-type-aliases': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/plugin-content-blog': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/theme-translations': 2.4.1 + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-common': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + '@mdx-js/react': 1.6.22(react@17.0.2) + clsx: 1.2.1 + copy-text-to-clipboard: 3.2.0 + infima: 0.2.0-alpha.43 + lodash: 4.17.21 + nprogress: 0.2.0 + postcss: 8.4.14 + prism-react-renderer: 1.3.5(react@17.0.2) + prismjs: 1.29.0 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-router-dom: 5.3.4(react@17.0.2) + rtlcss: 3.5.0 + tslib: 2.5.2 + utility-types: 3.10.0 + transitivePeerDependencies: + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/logger@5.7.0: - resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + /@docusaurus/theme-common@2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5): + resolution: {integrity: sha512-G7Zau1W5rQTaFFB3x3soQoZpkgMbl/SYNG8PfMFIjKa3M3q8n0m/GRf5/H/e5BqOvt8c+ZWIXGCiz+kUCSHovA==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docusaurus/mdx-loader': 2.4.1(@docusaurus/types@2.4.1)(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/module-type-aliases': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@docusaurus/plugin-content-blog': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-content-docs': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/plugin-content-pages': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-common': 2.4.1(@docusaurus/types@2.4.1) + '@types/history': 4.7.11 + '@types/react': 18.2.12 + '@types/react-router-config': 5.0.7 + clsx: 1.2.1 + parse-numeric-range: 1.3.0 + prism-react-renderer: 1.3.5(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.5.2 + use-sync-external-store: 1.2.0(react@17.0.2) + utility-types: 3.10.0 + transitivePeerDependencies: + - '@docusaurus/types' + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/networks@5.7.1: - resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} - dependencies: - '@ethersproject/logger': 5.7.0 + /@docusaurus/theme-search-algolia@2.4.1(@algolia/client-search@4.20.0)(@docusaurus/types@2.4.1)(@types/react@18.2.12)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.8.2)(typescript@4.9.5): + resolution: {integrity: sha512-6BcqW2lnLhZCXuMAvPRezFs1DpmEKzXFKlYjruuas+Xy3AQeFzDJKTJFIm49N77WFCTyxff8d3E4Q9pi/+5McQ==} + engines: {node: '>=16.14'} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 + dependencies: + '@docsearch/react': 3.5.2(@algolia/client-search@4.20.0)(@types/react@18.2.12)(react-dom@17.0.2)(react@17.0.2)(search-insights@2.8.2) + '@docusaurus/core': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/logger': 2.4.1 + '@docusaurus/plugin-content-docs': 2.4.1(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/theme-common': 2.4.1(@docusaurus/types@2.4.1)(eslint@8.48.0)(react-dom@17.0.2)(react@17.0.2)(typescript@4.9.5) + '@docusaurus/theme-translations': 2.4.1 + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + '@docusaurus/utils-validation': 2.4.1(@docusaurus/types@2.4.1) + algoliasearch: 4.20.0 + algoliasearch-helper: 3.14.1(algoliasearch@4.20.0) + clsx: 1.2.1 + eta: 2.2.0 + fs-extra: 10.1.0 + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.5.2 + utility-types: 3.10.0 + transitivePeerDependencies: + - '@algolia/client-search' + - '@docusaurus/types' + - '@parcel/css' + - '@swc/core' + - '@swc/css' + - '@types/react' + - bufferutil + - csso + - debug + - esbuild + - eslint + - lightningcss + - search-insights + - supports-color + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli dev: false - /@ethersproject/pbkdf2@5.7.0: - resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + /@docusaurus/theme-translations@2.4.1: + resolution: {integrity: sha512-T1RAGP+f86CA1kfE8ejZ3T3pUU3XcyvrGMfC/zxCtc2BsnoexuNI9Vk2CmuKCb+Tacvhxjv5unhxXce0+NKyvA==} + engines: {node: '>=16.14'} dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/sha2': 5.7.0 + fs-extra: 10.1.0 + tslib: 2.5.2 dev: false - /@ethersproject/properties@5.7.0: - resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + /@docusaurus/types@2.4.1(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-0R+cbhpMkhbRXX138UOc/2XZFF8hiZa6ooZAEEJFp5scytzCw4tC1gChMFXrpa3d2tYE6AX8IrOEpSonLmfQuQ==} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@ethersproject/logger': 5.7.0 + '@types/history': 4.7.11 + '@types/react': 18.2.12 + commander: 5.1.0 + joi: 17.10.2 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-helmet-async: 1.3.0(react-dom@17.0.2)(react@17.0.2) + utility-types: 3.10.0 + webpack: 5.88.1(webpack-cli@5.1.4) + webpack-merge: 5.9.0 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + + /@docusaurus/utils-common@2.4.1(@docusaurus/types@2.4.1): + resolution: {integrity: sha512-bCVGdZU+z/qVcIiEQdyx0K13OC5mYwxhSuDUR95oFbKVuXYRrTVrwZIqQljuo1fyJvFTKHiL9L9skQOPokuFNQ==} + engines: {node: '>=16.14'} + peerDependencies: + '@docusaurus/types': '*' + peerDependenciesMeta: + '@docusaurus/types': + optional: true + dependencies: + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + tslib: 2.5.2 dev: false - /@ethersproject/providers@5.7.2: - resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + /@docusaurus/utils-validation@2.4.1(@docusaurus/types@2.4.1): + resolution: {integrity: sha512-unII3hlJlDwZ3w8U+pMO3Lx3RhI4YEbY3YNsQj4yzrkZzlpqZOLuAiZK2JyULnD+TKbceKU0WyWkQXtYbLNDFA==} + engines: {node: '>=16.14'} dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 + '@docusaurus/logger': 2.4.1 + '@docusaurus/utils': 2.4.1(@docusaurus/types@2.4.1) + joi: 17.10.2 + js-yaml: 4.1.0 + tslib: 2.5.2 + transitivePeerDependencies: + - '@docusaurus/types' + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + dev: false + + /@docusaurus/utils@2.4.1(@docusaurus/types@2.4.1): + resolution: {integrity: sha512-1lvEZdAQhKNht9aPXPoh69eeKnV0/62ROhQeFKKxmzd0zkcuE/Oc5Gpnt00y/f5bIsmOsYMY7Pqfm/5rteT5GA==} + engines: {node: '>=16.14'} + peerDependencies: + '@docusaurus/types': '*' + peerDependenciesMeta: + '@docusaurus/types': + optional: true + dependencies: + '@docusaurus/logger': 2.4.1 + '@docusaurus/types': 2.4.1(react-dom@17.0.2)(react@17.0.2) + '@svgr/webpack': 6.5.1 + escape-string-regexp: 4.0.0 + file-loader: 6.2.0(webpack@5.88.1) + fs-extra: 10.1.0 + github-slugger: 1.5.0 + globby: 11.1.0 + gray-matter: 4.0.3 + js-yaml: 4.1.0 + lodash: 4.17.21 + micromatch: 4.0.5 + resolve-pathname: 3.0.0 + shelljs: 0.8.5 + tslib: 2.5.2 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.88.1) + webpack: 5.88.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + dev: false + + /@emotion/hash@0.8.0: + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + dev: false + + /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.48.0 + eslint-visitor-keys: 3.4.3 + + /@eslint-community/regexpp@4.8.0: + resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@8.1.1) + espree: 9.6.1 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + /@eslint/js@8.48.0: + resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /@ethereumjs/rlp@4.0.1: + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + dev: false + + /@ethereumjs/util@8.0.5: + resolution: {integrity: sha512-259rXKK3b3D8HRVdRmlOEi6QFvwxdt304hhrEAmpZhsj7ufXEOTIc9JRZPMnXatKjECokdLNBcDOFBeBSzAIaw==} + engines: {node: '>=14'} + dependencies: + '@chainsafe/ssz': 0.9.4 + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 1.2.0 + dev: false + + /@ethersproject/abi@5.7.0: + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/hash': 5.7.0 + '@ethersproject/keccak256': 5.7.0 '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/sha2': 5.7.0 '@ethersproject/strings': 5.7.0 + dev: false + + /@ethersproject/abstract-provider@5.7.0: + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/web': 5.7.1 - bech32: 1.1.4 - ws: 7.4.6 - transitivePeerDependencies: - - bufferutil - - utf-8-validate dev: false - /@ethersproject/random@5.7.0: - resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + /@ethersproject/abstract-signer@5.7.0: + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 dev: false - /@ethersproject/rlp@5.7.0: - resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + /@ethersproject/address@5.7.0: + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} dependencies: + '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 '@ethersproject/logger': 5.7.0 + '@ethersproject/rlp': 5.7.0 dev: false - /@ethersproject/sha2@5.7.0: - resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + /@ethersproject/base64@5.7.0: + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} dependencies: '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - hash.js: 1.1.7 dev: false - /@ethersproject/signing-key@5.7.0: - resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + /@ethersproject/basex@5.7.0: + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} dependencies: '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 - bn.js: 5.2.1 - elliptic: 6.5.4 - hash.js: 1.1.7 dev: false - /@ethersproject/solidity@5.7.0: - resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + /@ethersproject/bignumber@5.7.0: + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} dependencies: - '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 '@ethersproject/logger': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/strings': 5.7.0 + bn.js: 5.2.1 dev: false - /@ethersproject/strings@5.7.0: - resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + /@ethersproject/bytes@5.7.0: + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 dev: false - /@ethersproject/transactions@5.7.0: - resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + /@ethersproject/constants@5.7.0: + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} dependencies: - '@ethersproject/address': 5.7.0 '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/signing-key': 5.7.0 dev: false - /@ethersproject/units@5.7.0: - resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + /@ethersproject/contracts@5.7.0: + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 dev: false - /@ethersproject/wallet@5.7.0: - resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + /@ethersproject/hash@5.7.0: + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} dependencies: - '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/json-wallets': 5.7.0 '@ethersproject/keccak256': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wordlists': 5.7.0 + '@ethersproject/strings': 5.7.0 dev: false - /@ethersproject/web@5.7.1: - resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + /@ethersproject/hdnode@5.7.0: + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} dependencies: - '@ethersproject/base64': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 '@ethersproject/properties': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 dev: false - /@ethersproject/wordlists@5.7.0: - resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + /@ethersproject/json-wallets@5.7.0: + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/keccak256': 5.7.0 '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 dev: false - /@evmos/address-converter@0.1.9: - resolution: {integrity: sha512-Sbl4hHo/4UkMgmdwBDN/GNMhDeOlc5CyRCLFMajTVKyT0Sf269RQsuntD+P48EJWIpBjw3q6+laVZ9hrpfB4Nw==} - requiresBuild: true + /@ethersproject/keccak256@5.7.0: + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} dependencies: - bech32: 2.0.0 - crypto-addr-codec: 0.1.7 - link-module-alias: 1.2.0 - shx: 0.3.4 + '@ethersproject/bytes': 5.7.0 + js-sha3: 0.8.0 dev: false - /@evmos/eip712@0.2.11: - resolution: {integrity: sha512-8iGZ03PqhxYXZycAvl/GJ6b78qVPkzP7A42a/d3zeZXtzRpRwOpxHmBJr5xmsZur+eqZlgAqkmZ8Q+vEh+ICgA==} - requiresBuild: true - dependencies: - '@cosmjs/proto-signing': 0.28.13 - '@evmos/proto': 0.1.27 - '@metamask/eth-sig-util': 4.0.1 - cosmjs-types: 0.5.2 - link-module-alias: 1.2.0 - long: 5.2.1 - shx: 0.3.4 + /@ethersproject/logger@5.7.0: + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} dev: false - /@evmos/proto@0.1.27: - resolution: {integrity: sha512-lBOZhQFsIUz3on/4H+Rj1aDj2OWaZnz7OJjUFklkPZQ3tEtAATBOQiVCjkPvIX3jh/H5DACahmi8BmhcNF+7UA==} - requiresBuild: true + /@ethersproject/networks@5.7.1: + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} dependencies: - google-protobuf: 3.21.2 - link-module-alias: 1.2.0 - sha3: 2.1.4 - shx: 0.3.4 + '@ethersproject/logger': 5.7.0 dev: false - /@evmos/provider@0.2.8: - resolution: {integrity: sha512-LOml6RtabQafhNn38IaREXB2oClHTUBYF0VttQRB3qxaOEqBy9WbH0Dz7fvqqGFbcanMdQKhBQ4NfNMeslWQgQ==} - requiresBuild: true + /@ethersproject/pbkdf2@5.7.0: + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} dependencies: - link-module-alias: 1.2.0 - shx: 0.3.4 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/sha2': 5.7.0 dev: false - /@evmos/transactions@0.2.13: + /@ethersproject/properties@5.7.0: + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/providers@5.7.2: + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + bech32: 1.1.4 + ws: 7.4.6 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@ethersproject/random@5.7.0: + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/rlp@5.7.0: + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/sha2@5.7.0: + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + hash.js: 1.1.7 + dev: false + + /@ethersproject/signing-key@5.7.0: + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + bn.js: 5.2.1 + elliptic: 6.5.4 + hash.js: 1.1.7 + dev: false + + /@ethersproject/solidity@5.7.0: + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@ethersproject/strings@5.7.0: + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/transactions@5.7.0: + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + dev: false + + /@ethersproject/units@5.7.0: + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/wallet@5.7.0: + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + dev: false + + /@ethersproject/web@5.7.1: + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + dependencies: + '@ethersproject/base64': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@ethersproject/wordlists@5.7.0: + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@evmos/address-converter@0.1.9: + resolution: {integrity: sha512-Sbl4hHo/4UkMgmdwBDN/GNMhDeOlc5CyRCLFMajTVKyT0Sf269RQsuntD+P48EJWIpBjw3q6+laVZ9hrpfB4Nw==} + requiresBuild: true + dependencies: + bech32: 2.0.0 + crypto-addr-codec: 0.1.7 + link-module-alias: 1.2.0 + shx: 0.3.4 + dev: false + + /@evmos/eip712@0.2.11: + resolution: {integrity: sha512-8iGZ03PqhxYXZycAvl/GJ6b78qVPkzP7A42a/d3zeZXtzRpRwOpxHmBJr5xmsZur+eqZlgAqkmZ8Q+vEh+ICgA==} + requiresBuild: true + dependencies: + '@cosmjs/proto-signing': 0.28.13 + '@evmos/proto': 0.1.27 + '@metamask/eth-sig-util': 4.0.1 + cosmjs-types: 0.5.2 + link-module-alias: 1.2.0 + long: 5.2.1 + shx: 0.3.4 + dev: false + + /@evmos/proto@0.1.27: + resolution: {integrity: sha512-lBOZhQFsIUz3on/4H+Rj1aDj2OWaZnz7OJjUFklkPZQ3tEtAATBOQiVCjkPvIX3jh/H5DACahmi8BmhcNF+7UA==} + requiresBuild: true + dependencies: + google-protobuf: 3.21.2 + link-module-alias: 1.2.0 + sha3: 2.1.4 + shx: 0.3.4 + dev: false + + /@evmos/provider@0.2.8: + resolution: {integrity: sha512-LOml6RtabQafhNn38IaREXB2oClHTUBYF0VttQRB3qxaOEqBy9WbH0Dz7fvqqGFbcanMdQKhBQ4NfNMeslWQgQ==} + requiresBuild: true + dependencies: + link-module-alias: 1.2.0 + shx: 0.3.4 + dev: false + + /@evmos/transactions@0.2.13: resolution: {integrity: sha512-O+SoWUXkg3XoP80PB01BSKBh+HMGZuWbQ2M07yscGfSxgmSsKrTPliOmai3yM8CnDnzUmPSNZk/oWaKaCDl8kw==} requiresBuild: true dependencies: @@ -3002,6 +3966,14 @@ packages: shx: 0.3.4 dev: false + /@hapi/hoek@9.3.0: + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + + /@hapi/topo@5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + dependencies: + '@hapi/hoek': 9.3.0 + /@humanwhocodes/config-array@0.11.10: resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} engines: {node: '>=10.10.0'} @@ -3301,7 +4273,6 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.25.24 - dev: true /@jest/source-map@29.4.3: resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} @@ -3365,7 +4336,6 @@ packages: '@types/node': 18.16.18 '@types/yargs': 17.0.24 chalk: 4.1.2 - dev: true /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} @@ -3388,7 +4358,6 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 - dev: true /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} @@ -3439,6 +4408,10 @@ packages: resolution: {integrity: sha512-TQ21IjcZOw/scqypaVFY3jHVqI7X7Hta3qN/us6FvTol3AY06UmrhhXGww0E9xHmAbdX241ddwXEiMBSQZFr9g==} dev: false + /@leichtgewicht/ip-codec@2.0.4: + resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} + dev: false + /@lit-labs/ssr-dom-shim@1.1.1: resolution: {integrity: sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==} dev: false @@ -3469,6 +4442,44 @@ packages: read-yaml-file: 1.1.0 dev: true + /@mdx-js/mdx@1.6.22: + resolution: {integrity: sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==} + dependencies: + '@babel/core': 7.12.9 + '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) + '@mdx-js/util': 1.6.22 + babel-plugin-apply-mdx-type-prop: 1.6.22(@babel/core@7.12.9) + babel-plugin-extract-import-names: 1.6.22 + camelcase-css: 2.0.1 + detab: 2.0.4 + hast-util-raw: 6.0.1 + lodash.uniq: 4.5.0 + mdast-util-to-hast: 10.0.1 + remark-footnotes: 2.0.0 + remark-mdx: 1.6.22 + remark-parse: 8.0.3 + remark-squeeze-paragraphs: 4.0.0 + style-to-object: 0.3.0 + unified: 9.2.0 + unist-builder: 2.0.3 + unist-util-visit: 2.0.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@mdx-js/react@1.6.22(react@17.0.2): + resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} + peerDependencies: + react: ^16.13.1 || ^17.0.0 + dependencies: + react: 17.0.2 + dev: false + + /@mdx-js/util@1.6.22: + resolution: {integrity: sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==} + dev: false + /@metamask/eth-sig-util@4.0.1: resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} engines: {node: '>=12.0.0'} @@ -3757,6 +4768,10 @@ packages: tiny-glob: 0.2.9 tslib: 2.5.2 + /@polka/url@1.0.0-next.23: + resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} + dev: false + /@protobufjs/aspromise@1.1.2: resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} dev: false @@ -3919,20 +4934,23 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-typescript@8.5.0(rollup@2.79.1)(typescript@4.9.5): - resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} - engines: {node: '>=8.0.0'} + /@rollup/plugin-typescript@11.1.3(rollup@2.79.1)(tslib@2.5.2)(typescript@4.9.5): + resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} + engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^2.14.0 + rollup: ^2.14.0||^3.0.0 tslib: '*' typescript: '>=3.7.0' peerDependenciesMeta: + rollup: + optional: true tslib: optional: true dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + '@rollup/pluginutils': 5.0.2(rollup@2.79.1) resolve: 1.22.2 rollup: 2.79.1 + tslib: 2.5.2 typescript: 4.9.5 dev: true @@ -4041,9 +5059,24 @@ packages: '@scure/base': 1.1.1 dev: false + /@sideway/address@4.1.4: + resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} + dependencies: + '@hapi/hoek': 9.3.0 + + /@sideway/formula@3.0.1: + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + + /@sideway/pinpoint@2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + /@sinclair/typebox@0.25.24: resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} - dev: true + + /@sindresorhus/is@0.14.0: + resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} + engines: {node: '>=6'} + dev: false /@sindresorhus/is@0.7.0: resolution: {integrity: sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==} @@ -4063,6 +5096,15 @@ packages: '@sinonjs/commons': 3.0.0 dev: true + /@slorber/static-site-generator-webpack-plugin@4.0.7: + resolution: {integrity: sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==} + engines: {node: '>=14'} + dependencies: + eval: 0.1.8 + p-map: 4.0.0 + webpack-sources: 3.2.3 + dev: false + /@solana/buffer-layout@4.0.1: resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} engines: {node: '>=5.10'} @@ -4211,24 +5253,184 @@ packages: '@stablelib/wipe': 1.0.1 dev: false - /@swc/helpers@0.4.14: - resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} + /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.22.15): + resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - tslib: 2.5.2 + '@babel/core': 7.22.15 dev: false - /@tanstack/query-core@4.29.7: - resolution: {integrity: sha512-GXG4b5hV2Loir+h2G+RXhJdoZhJLnrBWsuLB2r0qBRyhWuXq9w/dWxzvpP89H0UARlH6Mr9DiVj4SMtpkF/aUA==} + /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.22.15): + resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 dev: false - /@tanstack/query-persist-client-core@4.29.7: - resolution: {integrity: sha512-/QahvSq9/f8hetCsCd9MaOy6fAoPn0YDGDcl6TTobqdr9kHMgrM9laP9yKJFg2hm5/jIsrCMDO/iCnxBiUhrqw==} + /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.22.15): + resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@tanstack/query-core': 4.29.7 + '@babel/core': 7.22.15 dev: false - /@tanstack/query-sync-storage-persister@4.29.7: - resolution: {integrity: sha512-XWys8hez8eFIb9+oYNs0Jumfjz8afEwN52VSrHJEWg7gZO/Y/8ziI80cNlaDNB+60t7s3TaspKXT5z8DNFsCkQ==} + /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.22.15): + resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + dev: false + + /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.22.15): + resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + dev: false + + /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.22.15): + resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + dev: false + + /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.22.15): + resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + dev: false + + /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.22.15): + resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + dev: false + + /@svgr/babel-preset@6.5.1(@babel/core@7.22.15): + resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.22.15) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.22.15) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.22.15) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.22.15) + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.22.15) + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.22.15) + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.22.15) + '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.22.15) + dev: false + + /@svgr/core@6.5.1: + resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.22.15 + '@svgr/babel-preset': 6.5.1(@babel/core@7.22.15) + '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) + camelcase: 6.3.0 + cosmiconfig: 7.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@svgr/hast-util-to-babel-ast@6.5.1: + resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} + engines: {node: '>=10'} + dependencies: + '@babel/types': 7.22.15 + entities: 4.5.0 + dev: false + + /@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1): + resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} + engines: {node: '>=10'} + peerDependencies: + '@svgr/core': ^6.0.0 + dependencies: + '@babel/core': 7.22.15 + '@svgr/babel-preset': 6.5.1(@babel/core@7.22.15) + '@svgr/core': 6.5.1 + '@svgr/hast-util-to-babel-ast': 6.5.1 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@svgr/plugin-svgo@6.5.1(@svgr/core@6.5.1): + resolution: {integrity: sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==} + engines: {node: '>=10'} + peerDependencies: + '@svgr/core': '*' + dependencies: + '@svgr/core': 6.5.1 + cosmiconfig: 7.1.0 + deepmerge: 4.3.1 + svgo: 2.8.0 + dev: false + + /@svgr/webpack@6.5.1: + resolution: {integrity: sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.22.15 + '@babel/plugin-transform-react-constant-elements': 7.22.5(@babel/core@7.22.15) + '@babel/preset-env': 7.22.4(@babel/core@7.22.15) + '@babel/preset-react': 7.22.3(@babel/core@7.22.15) + '@babel/preset-typescript': 7.21.5(@babel/core@7.22.15) + '@svgr/core': 6.5.1 + '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) + '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) + transitivePeerDependencies: + - supports-color + dev: false + + /@swc/helpers@0.4.14: + resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} + dependencies: + tslib: 2.5.2 + dev: false + + /@szmarczak/http-timer@1.1.2: + resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} + engines: {node: '>=6'} + dependencies: + defer-to-connect: 1.1.3 + dev: false + + /@tanstack/query-core@4.29.7: + resolution: {integrity: sha512-GXG4b5hV2Loir+h2G+RXhJdoZhJLnrBWsuLB2r0qBRyhWuXq9w/dWxzvpP89H0UARlH6Mr9DiVj4SMtpkF/aUA==} + dev: false + + /@tanstack/query-persist-client-core@4.29.7: + resolution: {integrity: sha512-/QahvSq9/f8hetCsCd9MaOy6fAoPn0YDGDcl6TTobqdr9kHMgrM9laP9yKJFg2hm5/jIsrCMDO/iCnxBiUhrqw==} + dependencies: + '@tanstack/query-core': 4.29.7 + dev: false + + /@tanstack/query-sync-storage-persister@4.29.7: + resolution: {integrity: sha512-XWys8hez8eFIb9+oYNs0Jumfjz8afEwN52VSrHJEWg7gZO/Y/8ziI80cNlaDNB+60t7s3TaspKXT5z8DNFsCkQ==} dependencies: '@tanstack/query-persist-client-core': 4.29.7 dev: false @@ -4260,6 +5462,11 @@ packages: use-sync-external-store: 1.2.0(react@18.2.0) dev: false + /@trysound/sax@0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: false + /@tsconfig/node10@1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} dev: true @@ -4311,10 +5518,30 @@ packages: '@types/node': 18.16.18 dev: false + /@types/body-parser@1.19.3: + resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} + dependencies: + '@types/connect': 3.4.35 + '@types/node': 18.16.18 + dev: false + + /@types/bonjour@3.5.11: + resolution: {integrity: sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==} + dependencies: + '@types/node': 18.16.18 + dev: false + /@types/chai@4.3.5: resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} dev: true + /@types/connect-history-api-fallback@1.5.1: + resolution: {integrity: sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==} + dependencies: + '@types/express-serve-static-core': 4.17.36 + '@types/node': 18.16.18 + dev: false + /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: @@ -4338,14 +5565,12 @@ packages: dependencies: '@types/eslint': 8.44.2 '@types/estree': 1.0.1 - dev: true /@types/eslint@8.44.2: resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} dependencies: '@types/estree': 1.0.1 '@types/json-schema': 7.0.12 - dev: true /@types/estree@0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} @@ -4353,7 +5578,24 @@ packages: /@types/estree@1.0.1: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} - dev: true + + /@types/express-serve-static-core@4.17.36: + resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} + dependencies: + '@types/node': 18.16.18 + '@types/qs': 6.9.8 + '@types/range-parser': 1.2.4 + '@types/send': 0.17.1 + dev: false + + /@types/express@4.17.17: + resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} + dependencies: + '@types/body-parser': 1.19.3 + '@types/express-serve-static-core': 4.17.36 + '@types/qs': 6.9.8 + '@types/serve-static': 1.15.2 + dev: false /@types/fs-extra@11.0.1: resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} @@ -4375,6 +5617,29 @@ packages: '@types/node': 18.16.18 dev: true + /@types/hast@2.3.6: + resolution: {integrity: sha512-47rJE80oqPmFdVDCD7IheXBrVdwuBgsYwoczFvKmwfo2Mzsnt+V9OONsYauFmICb6lQPpCuXYJWejBNs4pDJRg==} + dependencies: + '@types/unist': 2.0.8 + dev: false + + /@types/history@4.7.11: + resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} + + /@types/html-minifier-terser@6.1.0: + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + dev: false + + /@types/http-errors@2.0.2: + resolution: {integrity: sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==} + dev: false + + /@types/http-proxy@1.17.12: + resolution: {integrity: sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==} + dependencies: + '@types/node': 18.16.18 + dev: false + /@types/is-ci@3.0.0: resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} dependencies: @@ -4383,19 +5648,16 @@ packages: /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: true /@types/istanbul-lib-report@3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 - dev: true /@types/istanbul-reports@3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 - dev: true /@types/jest@29.5.1: resolution: {integrity: sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==} @@ -4406,7 +5668,6 @@ packages: /@types/json-schema@7.0.12: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} - dev: true /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} @@ -4449,9 +5710,18 @@ packages: resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} dev: false + /@types/mdast@3.0.12: + resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==} + dependencies: + '@types/unist': 2.0.8 + dev: false + + /@types/mime@1.3.2: + resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} + dev: false + /@types/mime@3.0.1: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} - dev: true /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} @@ -4478,6 +5748,10 @@ packages: /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + /@types/node@17.0.45: + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + dev: false + /@types/node@18.16.18: resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} @@ -4491,7 +5765,10 @@ packages: /@types/parse-json@4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - dev: true + + /@types/parse5@5.0.3: + resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==} + dev: false /@types/pbkdf2@3.1.0: resolution: {integrity: sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==} @@ -4506,11 +5783,39 @@ packages: /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + /@types/qs@6.9.8: + resolution: {integrity: sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==} + dev: false + + /@types/range-parser@1.2.4: + resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} + dev: false + /@types/react-dom@18.2.5: resolution: {integrity: sha512-sRQsOS/sCLnpQhR4DSKGTtWFE3FZjpQa86KPVbhUqdYMRZ9FEFcfAytKhR/vUG2rH1oFbOOej6cuD7MFSobDRQ==} dependencies: '@types/react': 18.2.12 + /@types/react-router-config@5.0.7: + resolution: {integrity: sha512-pFFVXUIydHlcJP6wJm7sDii5mD/bCmmAY0wQzq+M+uX7bqS95AQqHZWP1iNMKrWVQSuHIzj5qi9BvrtLX2/T4w==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.12 + '@types/react-router': 5.1.20 + + /@types/react-router-dom@5.3.3: + resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.12 + '@types/react-router': 5.1.20 + + /@types/react-router@5.1.20: + resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.12 + /@types/react@18.2.12: resolution: {integrity: sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==} dependencies: @@ -4530,6 +5835,16 @@ packages: '@types/node': 18.16.18 dev: false + /@types/retry@0.12.0: + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + dev: false + + /@types/sax@1.2.4: + resolution: {integrity: sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==} + dependencies: + '@types/node': 18.16.18 + dev: false + /@types/scheduler@0.16.3: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} @@ -4547,6 +5862,33 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true + /@types/send@0.17.1: + resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} + dependencies: + '@types/mime': 1.3.2 + '@types/node': 18.16.18 + dev: false + + /@types/serve-index@1.9.1: + resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==} + dependencies: + '@types/express': 4.17.17 + dev: false + + /@types/serve-static@1.15.2: + resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} + dependencies: + '@types/http-errors': 2.0.2 + '@types/mime': 3.0.1 + '@types/node': 18.16.18 + dev: false + + /@types/sockjs@0.3.33: + resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} + dependencies: + '@types/node': 18.16.18 + dev: false + /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true @@ -4555,6 +5897,10 @@ packages: resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} dev: false + /@types/unist@2.0.8: + resolution: {integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==} + dev: false + /@types/validate-npm-package-name@4.0.0: resolution: {integrity: sha512-RpO62vB2lkjEkyLbwTheA2+uwYmtVMWTr/kWRI++UAgVdZqNqdAuIQl/SxBCGeMKfdjWaXPbyhZbiCc4PAj+KA==} dev: true @@ -4569,6 +5915,12 @@ packages: '@types/node': 18.16.18 dev: false + /@types/ws@8.5.5: + resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} + dependencies: + '@types/node': 18.16.18 + dev: false + /@types/xml2js@0.4.11: resolution: {integrity: sha512-JdigeAKmCyoJUiQljjr7tQG3if9NkqGUgwEUqBvV0N7LM4HyQk7UXCnusRa1lnvXAEYJ8mw8GtZWioagNztOwA==} dependencies: @@ -4577,13 +5929,11 @@ packages: /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - dev: true /@types/yargs@17.0.24: resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} dependencies: '@types/yargs-parser': 21.0.0 - dev: true /@typescript-eslint/eslint-plugin@5.59.11(@typescript-eslint/parser@5.59.11)(eslint@8.48.0)(typescript@4.9.5): resolution: {integrity: sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==} @@ -5277,19 +6627,15 @@ packages: dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - dev: true /@webassemblyjs/floating-point-hex-parser@1.11.6: resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - dev: true /@webassemblyjs/helper-api-error@1.11.6: resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - dev: true /@webassemblyjs/helper-buffer@1.11.6: resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} - dev: true /@webassemblyjs/helper-numbers@1.11.6: resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} @@ -5297,11 +6643,9 @@ packages: '@webassemblyjs/floating-point-hex-parser': 1.11.6 '@webassemblyjs/helper-api-error': 1.11.6 '@xtuc/long': 4.2.2 - dev: true /@webassemblyjs/helper-wasm-bytecode@1.11.6: resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - dev: true /@webassemblyjs/helper-wasm-section@1.11.6: resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} @@ -5310,23 +6654,19 @@ packages: '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 - dev: true /@webassemblyjs/ieee754@1.11.6: resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} dependencies: '@xtuc/ieee754': 1.2.0 - dev: true /@webassemblyjs/leb128@1.11.6: resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} dependencies: '@xtuc/long': 4.2.2 - dev: true /@webassemblyjs/utf8@1.11.6: resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - dev: true /@webassemblyjs/wasm-edit@1.11.6: resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} @@ -5339,7 +6679,6 @@ packages: '@webassemblyjs/wasm-opt': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 '@webassemblyjs/wast-printer': 1.11.6 - dev: true /@webassemblyjs/wasm-gen@1.11.6: resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} @@ -5349,7 +6688,6 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: true /@webassemblyjs/wasm-opt@1.11.6: resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} @@ -5358,7 +6696,6 @@ packages: '@webassemblyjs/helper-buffer': 1.11.6 '@webassemblyjs/wasm-gen': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 - dev: true /@webassemblyjs/wasm-parser@1.11.6: resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} @@ -5369,14 +6706,12 @@ packages: '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 - dev: true /@webassemblyjs/wast-printer@1.11.6: resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} dependencies: '@webassemblyjs/ast': 1.11.6 '@xtuc/long': 4.2.2 - dev: true /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.88.1): resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} @@ -5387,7 +6722,6 @@ packages: dependencies: webpack: 5.88.1(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.88.1) - dev: true /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.88.1): resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} @@ -5398,7 +6732,6 @@ packages: dependencies: webpack: 5.88.1(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.88.1) - dev: true /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.88.1): resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} @@ -5413,15 +6746,12 @@ packages: dependencies: webpack: 5.88.1(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.88.1) - dev: true /@xtuc/ieee754@1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dev: true /@xtuc/long@4.2.2: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dev: true /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} @@ -5442,13 +6772,20 @@ packages: typescript: 4.9.5 dev: false + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: false + /acorn-import-assertions@1.9.0(acorn@8.10.0): resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} peerDependencies: acorn: ^8 dependencies: acorn: 8.10.0 - dev: true /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -5460,13 +6797,17 @@ packages: /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - dev: true /acorn@8.10.0: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true + /address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + dev: false + /aes-js@3.0.0: resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} dev: false @@ -5492,7 +6833,6 @@ packages: dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 - dev: true /ahocorasick@1.0.2: resolution: {integrity: sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA==} @@ -5507,7 +6847,6 @@ packages: optional: true dependencies: ajv: 8.12.0 - dev: true /ajv-keywords@3.5.2(ajv@6.12.6): resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} @@ -5515,7 +6854,6 @@ packages: ajv: ^6.9.1 dependencies: ajv: 6.12.6 - dev: true /ajv-keywords@5.1.0(ajv@8.12.0): resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} @@ -5524,7 +6862,6 @@ packages: dependencies: ajv: 8.12.0 fast-deep-equal: 3.1.3 - dev: true /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -5541,7 +6878,40 @@ packages: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 - dev: true + + /algoliasearch-helper@3.14.1(algoliasearch@4.20.0): + resolution: {integrity: sha512-TZihm6eisSqgLWOXpISAUFXAolJvEpa1gkTjUUEDmVl+TTiQuNvzLQ/osOiqIXzx6QSS4Pd6Ry+SKKOwiqJ17g==} + peerDependencies: + algoliasearch: '>= 3.1 < 6' + dependencies: + '@algolia/events': 4.0.1 + algoliasearch: 4.20.0 + dev: false + + /algoliasearch@4.20.0: + resolution: {integrity: sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==} + dependencies: + '@algolia/cache-browser-local-storage': 4.20.0 + '@algolia/cache-common': 4.20.0 + '@algolia/cache-in-memory': 4.20.0 + '@algolia/client-account': 4.20.0 + '@algolia/client-analytics': 4.20.0 + '@algolia/client-common': 4.20.0 + '@algolia/client-personalization': 4.20.0 + '@algolia/client-search': 4.20.0 + '@algolia/logger-common': 4.20.0 + '@algolia/logger-console': 4.20.0 + '@algolia/requester-browser-xhr': 4.20.0 + '@algolia/requester-common': 4.20.0 + '@algolia/requester-node-http': 4.20.0 + '@algolia/transporter': 4.20.0 + dev: false + + /ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + dependencies: + string-width: 4.2.3 + dev: false /ansi-colors@4.1.1: resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} @@ -5559,6 +6929,12 @@ packages: dependencies: type-fest: 0.21.3 + /ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + dev: false + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -5566,7 +6942,6 @@ packages: /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - dev: true /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} @@ -5588,7 +6963,6 @@ packages: /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - dev: true /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -5596,7 +6970,6 @@ packages: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - dev: true /archive-type@4.0.0: resolution: {integrity: sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==} @@ -5609,11 +6982,14 @@ packages: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: false + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 - dev: true /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -5629,6 +7005,14 @@ packages: call-bind: 1.0.2 is-array-buffer: 3.0.2 + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: false + + /array-flatten@2.1.2: + resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} + dev: false + /array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true @@ -5691,7 +7075,11 @@ packages: engines: {node: '>=0.10.0'} dev: true - /assertion-error@1.1.0: + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: false + + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -5713,11 +7101,32 @@ packages: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false + /at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: false + /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} dev: false + /autoprefixer@10.4.15(postcss@8.4.14): + resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.10 + caniuse-lite: 1.0.30001527 + fraction.js: 4.3.6 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} @@ -5734,6 +7143,14 @@ packages: - debug dev: false + /axios@0.25.0: + resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} + dependencies: + follow-redirects: 1.15.2 + transitivePeerDependencies: + - debug + dev: false + /axios@1.3.4: resolution: {integrity: sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==} dependencies: @@ -5767,6 +7184,43 @@ packages: - supports-color dev: true + /babel-loader@8.3.0(@babel/core@7.22.15)(webpack@5.88.1): + resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.22.15 + find-cache-dir: 3.3.2 + loader-utils: 2.0.4 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + + /babel-plugin-apply-mdx-type-prop@1.6.22(@babel/core@7.12.9): + resolution: {integrity: sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==} + peerDependencies: + '@babel/core': ^7.11.6 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@mdx-js/util': 1.6.22 + dev: false + + /babel-plugin-dynamic-import-node@2.3.3: + resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} + dependencies: + object.assign: 4.1.4 + dev: false + + /babel-plugin-extract-import-names@1.6.22: + resolution: {integrity: sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==} + dependencies: + '@babel/helper-plugin-utils': 7.10.4 + dev: false + /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} @@ -5810,7 +7264,6 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true /babel-plugin-polyfill-corejs3@0.8.1(@babel/core@7.22.15): resolution: {integrity: sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==} @@ -5822,7 +7275,6 @@ packages: core-js-compat: 3.30.2 transitivePeerDependencies: - supports-color - dev: true /babel-plugin-polyfill-regenerator@0.5.0(@babel/core@7.22.15): resolution: {integrity: sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==} @@ -5833,7 +7285,6 @@ packages: '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.15) transitivePeerDependencies: - supports-color - dev: true /babel-plugin-transform-react-remove-prop-types@0.4.24: resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} @@ -5894,6 +7345,10 @@ packages: - supports-color dev: true + /bail@1.0.5: + resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} + dev: false + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -5903,10 +7358,18 @@ packages: safe-buffer: 5.2.1 dev: false + /base16@1.0.0: + resolution: {integrity: sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==} + dev: false + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false + /batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + dev: false + /bech32@1.1.4: resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} dev: false @@ -5927,6 +7390,10 @@ packages: engines: {node: '>=0.6'} dev: false + /big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: false + /bigint-buffer@1.1.5: resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} engines: {node: '>= 10.0.0'} @@ -5938,7 +7405,6 @@ packages: /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - dev: true /bind-decorator@1.0.11: resolution: {integrity: sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg==} @@ -5977,6 +7443,39 @@ packages: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} dev: false + /body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /bonjour-service@1.1.1: + resolution: {integrity: sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==} + dependencies: + array-flatten: 2.1.2 + dns-equal: 1.0.0 + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + dev: false + + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: false + /borsh@0.7.0: resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} dependencies: @@ -5985,6 +7484,34 @@ packages: text-encoding-utf-8: 1.0.2 dev: false + /boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + dev: false + + /boxen@6.2.1: + resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + dev: false + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -6086,7 +7613,6 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true /buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} @@ -6131,6 +7657,16 @@ packages: semver: 7.5.2 dev: false + /bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: false + + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: false + /cacheable-request@2.1.4: resolution: {integrity: sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==} dependencies: @@ -6143,6 +7679,19 @@ packages: responselike: 1.0.2 dev: false + /cacheable-request@6.1.0: + resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} + engines: {node: '>=8'} + dependencies: + clone-response: 1.0.2 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 3.0.0 + lowercase-keys: 2.0.0 + normalize-url: 4.5.1 + responselike: 1.0.2 + dev: false + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: @@ -6153,6 +7702,18 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + /camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + dependencies: + pascal-case: 3.1.2 + tslib: 2.5.2 + dev: false + + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: false + /camelcase-keys@6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} @@ -6169,7 +7730,15 @@ packages: /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - dev: true + + /caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + dependencies: + browserslist: 4.21.10 + caniuse-lite: 1.0.30001527 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + dev: false /caniuse-lite@1.0.30001527: resolution: {integrity: sha512-YkJi7RwPgWtXVSgK4lG9AHH57nSzvvOp9MesgXmw4Q7n0C3H04L0foHqfxcmSAm5AcWb8dW9AYj2tR7/5GnddQ==} @@ -6189,6 +7758,10 @@ packages: url-to-options: 1.0.1 dev: false + /ccount@1.1.0: + resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} + dev: false + /chai@4.3.7: resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} @@ -6227,6 +7800,18 @@ packages: engines: {node: '>=10'} dev: true + /character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + dev: false + + /character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + dev: false + + /character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + dev: false + /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -6234,6 +7819,30 @@ packages: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true + /cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + dev: false + + /cheerio@1.0.0-rc.12: + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} + engines: {node: '>= 6'} + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.1.0 + htmlparser2: 8.0.2 + parse5: 7.1.2 + parse5-htmlparser2-tree-adapter: 7.0.0 + dev: false + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -6247,17 +7856,18 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 - dev: true /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} - dev: true + + /ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + dev: false /ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} - dev: true /cipher-base@1.0.4: resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} @@ -6270,10 +7880,16 @@ packages: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: true + /clean-css@5.3.2: + resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} + engines: {node: '>= 10.0'} + dependencies: + source-map: 0.6.1 + dev: false + /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} - dev: true /clean-webpack-plugin@4.0.0(webpack@5.88.1): resolution: {integrity: sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==} @@ -6285,6 +7901,16 @@ packages: webpack: 5.88.1(webpack-cli@5.1.4) dev: true + /cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + dev: false + + /cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + dev: false + /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -6296,6 +7922,15 @@ packages: engines: {node: '>=6'} dev: false + /cli-table3@0.6.3: + resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + engines: {node: 10.* || >= 12.*} + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + dev: false + /cli-truncate@2.1.0: resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} engines: {node: '>=8'} @@ -6352,7 +7987,6 @@ packages: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 - dev: true /clone-response@1.0.2: resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} @@ -6379,6 +8013,10 @@ packages: engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true + /collapse-white-space@1.0.6: + resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} + dev: false + /collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} dev: true @@ -6400,9 +8038,17 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + dev: false + /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - dev: true + + /combine-promises@1.2.0: + resolution: {integrity: sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==} + engines: {node: '>=10'} + dev: false /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} @@ -6411,10 +8057,13 @@ packages: delayed-stream: 1.0.0 dev: false + /comma-separated-tokens@1.0.8: + resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} + dev: false + /commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} - dev: true /commander@11.0.0: resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} @@ -6424,9 +8073,22 @@ packages: /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + /commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: false + + /commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + dev: false + /commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: true /compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} @@ -6435,6 +8097,28 @@ packages: dot-prop: 5.3.0 dev: true + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: false + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -6445,10 +8129,36 @@ packages: proto-list: 1.2.4 dev: false + /configstore@5.0.1: + resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} + engines: {node: '>=8'} + dependencies: + dot-prop: 5.3.0 + graceful-fs: 4.2.11 + make-dir: 3.1.0 + unique-string: 2.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 4.0.0 + dev: false + /confusing-browser-globals@1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: true + /connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + dev: false + + /consola@2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + dev: false + + /content-disposition@0.5.2: + resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} + engines: {node: '>= 0.6'} + dev: false + /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -6456,6 +8166,11 @@ packages: safe-buffer: 5.2.1 dev: false + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: false + /conventional-changelog-angular@5.0.13: resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} engines: {node: '>=10'} @@ -6498,6 +8213,20 @@ packages: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true + /cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: false + + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: false + + /copy-text-to-clipboard@3.2.0: + resolution: {integrity: sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==} + engines: {node: '>=12'} + dev: false + /copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} dependencies: @@ -6517,13 +8246,21 @@ packages: schema-utils: 4.2.0 serialize-javascript: 6.0.1 webpack: 5.88.1(webpack-cli@5.1.4) - dev: true /core-js-compat@3.30.2: resolution: {integrity: sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA==} dependencies: browserslist: 4.21.10 - dev: true + + /core-js-pure@3.32.2: + resolution: {integrity: sha512-Y2rxThOuNywTjnX/PgA5vWM6CZ9QB9sz9oGeCixV8MqXZO70z/5SHzf9EeBrEBK0PN36DnEBBu9O/aGWzKuMZQ==} + requiresBuild: true + dev: false + + /core-js@3.32.2: + resolution: {integrity: sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ==} + requiresBuild: true + dev: false /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -6552,6 +8289,17 @@ packages: typescript: 4.9.5 dev: true + /cosmiconfig@6.0.0: + resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} + engines: {node: '>=8'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: false + /cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -6561,7 +8309,6 @@ packages: parse-json: 5.2.0 path-type: 4.0.0 yaml: 1.10.2 - dev: true /cosmiconfig@8.1.3: resolution: {integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==} @@ -6573,6 +8320,22 @@ packages: path-type: 4.0.0 dev: true + /cosmiconfig@8.3.6(typescript@4.9.5): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + typescript: 4.9.5 + dev: false + /cosmjs-types@0.4.1: resolution: {integrity: sha512-I7E/cHkIgoJzMNQdFF0YVqPlaTqrqKHrskuSTIqlEyxfB5Lf3WKCajSXVK2yHOfOFfSux/RxEdpMzw/eO4DIog==} dependencies: @@ -6663,19 +8426,267 @@ packages: sha3: 2.1.4 dev: false - /css-what@5.1.0: - resolution: {integrity: sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==} - engines: {node: '>= 6'} + /crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} dev: false - /cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true + /css-declaration-sorter@6.4.1(postcss@8.4.14): + resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + dependencies: + postcss: 8.4.14 dev: false - /csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + /css-declaration-sorter@6.4.1(postcss@8.4.29): + resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + dependencies: + postcss: 8.4.29 + dev: false + + /css-loader@6.8.1(webpack@5.88.1): + resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.29) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.29) + postcss-modules-scope: 3.0.0(postcss@8.4.29) + postcss-modules-values: 4.0.0(postcss@8.4.29) + postcss-value-parser: 4.2.0 + semver: 7.5.2 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + + /css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.2)(webpack@5.88.1): + resolution: {integrity: sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@parcel/css': '*' + '@swc/css': '*' + clean-css: '*' + csso: '*' + esbuild: '*' + lightningcss: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@parcel/css': + optional: true + '@swc/css': + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + lightningcss: + optional: true + dependencies: + clean-css: 5.3.2 + cssnano: 5.1.15(postcss@8.4.29) + jest-worker: 29.5.0 + postcss: 8.4.29 + schema-utils: 4.2.0 + serialize-javascript: 6.0.1 + source-map: 0.6.1 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + + /css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: false + + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + dev: false + + /css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: false + + /css-what@5.1.0: + resolution: {integrity: sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==} + engines: {node: '>= 6'} + dev: false + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: false + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /cssnano-preset-advanced@5.3.10(postcss@8.4.14): + resolution: {integrity: sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + autoprefixer: 10.4.15(postcss@8.4.14) + cssnano-preset-default: 5.2.14(postcss@8.4.14) + postcss: 8.4.14 + postcss-discard-unused: 5.1.0(postcss@8.4.14) + postcss-merge-idents: 5.1.1(postcss@8.4.14) + postcss-reduce-idents: 5.2.0(postcss@8.4.14) + postcss-zindex: 5.1.0(postcss@8.4.14) + dev: false + + /cssnano-preset-default@5.2.14(postcss@8.4.14): + resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.4.14) + cssnano-utils: 3.1.0(postcss@8.4.14) + postcss: 8.4.14 + postcss-calc: 8.2.4(postcss@8.4.14) + postcss-colormin: 5.3.1(postcss@8.4.14) + postcss-convert-values: 5.1.3(postcss@8.4.14) + postcss-discard-comments: 5.1.2(postcss@8.4.14) + postcss-discard-duplicates: 5.1.0(postcss@8.4.14) + postcss-discard-empty: 5.1.1(postcss@8.4.14) + postcss-discard-overridden: 5.1.0(postcss@8.4.14) + postcss-merge-longhand: 5.1.7(postcss@8.4.14) + postcss-merge-rules: 5.1.4(postcss@8.4.14) + postcss-minify-font-values: 5.1.0(postcss@8.4.14) + postcss-minify-gradients: 5.1.1(postcss@8.4.14) + postcss-minify-params: 5.1.4(postcss@8.4.14) + postcss-minify-selectors: 5.2.1(postcss@8.4.14) + postcss-normalize-charset: 5.1.0(postcss@8.4.14) + postcss-normalize-display-values: 5.1.0(postcss@8.4.14) + postcss-normalize-positions: 5.1.1(postcss@8.4.14) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.14) + postcss-normalize-string: 5.1.0(postcss@8.4.14) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.14) + postcss-normalize-unicode: 5.1.1(postcss@8.4.14) + postcss-normalize-url: 5.1.0(postcss@8.4.14) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.14) + postcss-ordered-values: 5.1.3(postcss@8.4.14) + postcss-reduce-initial: 5.1.2(postcss@8.4.14) + postcss-reduce-transforms: 5.1.0(postcss@8.4.14) + postcss-svgo: 5.1.0(postcss@8.4.14) + postcss-unique-selectors: 5.1.1(postcss@8.4.14) + dev: false + + /cssnano-preset-default@5.2.14(postcss@8.4.29): + resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.4.29) + cssnano-utils: 3.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-calc: 8.2.4(postcss@8.4.29) + postcss-colormin: 5.3.1(postcss@8.4.29) + postcss-convert-values: 5.1.3(postcss@8.4.29) + postcss-discard-comments: 5.1.2(postcss@8.4.29) + postcss-discard-duplicates: 5.1.0(postcss@8.4.29) + postcss-discard-empty: 5.1.1(postcss@8.4.29) + postcss-discard-overridden: 5.1.0(postcss@8.4.29) + postcss-merge-longhand: 5.1.7(postcss@8.4.29) + postcss-merge-rules: 5.1.4(postcss@8.4.29) + postcss-minify-font-values: 5.1.0(postcss@8.4.29) + postcss-minify-gradients: 5.1.1(postcss@8.4.29) + postcss-minify-params: 5.1.4(postcss@8.4.29) + postcss-minify-selectors: 5.2.1(postcss@8.4.29) + postcss-normalize-charset: 5.1.0(postcss@8.4.29) + postcss-normalize-display-values: 5.1.0(postcss@8.4.29) + postcss-normalize-positions: 5.1.1(postcss@8.4.29) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.29) + postcss-normalize-string: 5.1.0(postcss@8.4.29) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.29) + postcss-normalize-unicode: 5.1.1(postcss@8.4.29) + postcss-normalize-url: 5.1.0(postcss@8.4.29) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.29) + postcss-ordered-values: 5.1.3(postcss@8.4.29) + postcss-reduce-initial: 5.1.2(postcss@8.4.29) + postcss-reduce-transforms: 5.1.0(postcss@8.4.29) + postcss-svgo: 5.1.0(postcss@8.4.29) + postcss-unique-selectors: 5.1.1(postcss@8.4.29) + dev: false + + /cssnano-utils@3.1.0(postcss@8.4.14): + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + dev: false + + /cssnano-utils@3.1.0(postcss@8.4.29): + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: false + + /cssnano@5.1.15(postcss@8.4.14): + resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.4.14) + lilconfig: 2.1.0 + postcss: 8.4.14 + yaml: 1.10.2 + dev: false + + /cssnano@5.1.15(postcss@8.4.29): + resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.4.29) + lilconfig: 2.1.0 + postcss: 8.4.29 + yaml: 1.10.2 + dev: false + + /csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + dev: false + + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} /csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} @@ -6715,6 +8726,17 @@ packages: resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} dev: false + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: false + /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -6852,6 +8874,11 @@ packages: which-collection: 1.0.1 which-typed-array: 1.1.9 + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: false + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -6863,11 +8890,22 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + /default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + dependencies: + execa: 5.1.1 + dev: false + /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 + /defer-to-connect@1.1.3: + resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} + dev: false + /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} @@ -6892,6 +8930,20 @@ packages: rimraf: 2.7.1 dev: true + /del@6.1.1: + resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} + engines: {node: '>=10'} + dependencies: + globby: 11.1.0 + graceful-fs: 4.2.11 + is-glob: 4.0.3 + is-path-cwd: 2.2.0 + is-path-inside: 3.0.3 + p-map: 4.0.0 + rimraf: 3.0.2 + slash: 3.0.0 + dev: false + /delay@5.0.0: resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} engines: {node: '>=10'} @@ -6902,11 +8954,27 @@ packages: engines: {node: '>=0.4.0'} dev: false + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: false + /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} dev: false + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: false + + /detab@2.0.4: + resolution: {integrity: sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==} + dependencies: + repeat-string: 1.6.1 + dev: false + /detect-browser@5.3.0: resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} dev: false @@ -6925,6 +8993,31 @@ packages: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} dev: false + /detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + dev: false + + /detect-port-alt@1.1.6: + resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} + engines: {node: '>= 4.2.1'} + hasBin: true + dependencies: + address: 1.2.2 + debug: 2.6.9 + transitivePeerDependencies: + - supports-color + dev: false + + /detect-port@1.5.1: + resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} + hasBin: true + dependencies: + address: 1.2.2 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: false + /diff-sequences@29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6950,6 +9043,17 @@ packages: dependencies: path-type: 4.0.0 + /dns-equal@1.0.0: + resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} + dev: false + + /dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + dependencies: + '@leichtgewicht/ip-codec': 2.0.4 + dev: false + /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -6962,12 +9066,74 @@ packages: dependencies: esutils: 2.0.3 + /dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + dependencies: + utila: 0.4.0 + dev: false + + /dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: false + + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: false + + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: false + + /domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: false + + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: false + + /domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: false + + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: false + + /dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dependencies: + no-case: 3.0.4 + tslib: 2.5.2 + dev: false + /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} dependencies: is-obj: 2.0.0 - dev: true /dotenv@16.0.3: resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} @@ -7008,6 +9174,10 @@ packages: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} dev: false + /duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: false + /duplexify@4.1.2: resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} dependencies: @@ -7019,7 +9189,10 @@ packages: /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: false /eip1193-provider@1.0.1: resolution: {integrity: sha512-kSuqwQ26d7CzuS/t3yRXo2Su2cVH0QfvyKbr2H7Be7O5YDyIq4hQGCNTo5wRdP07bt+E2R/8nPCzey4ojBHf7g==} @@ -7057,10 +9230,24 @@ packages: /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + /emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + dev: false + + /emoticon@3.2.0: + resolution: {integrity: sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==} + dev: false + /encode-utf8@1.0.3: resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} dev: false + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: false + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: @@ -7081,17 +9268,24 @@ packages: ansi-colors: 4.1.3 dev: true + /entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: false + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: false + /envinfo@7.10.0: resolution: {integrity: sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==} engines: {node: '>=4'} hasBin: true - dev: true /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - dev: true /es-abstract@1.21.2: resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} @@ -7147,7 +9341,6 @@ packages: /es-module-lexer@1.3.0: resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} - dev: true /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} @@ -7184,6 +9377,15 @@ packages: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} + /escape-goat@2.1.1: + resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} + engines: {node: '>=8'} + dev: false + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: false + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -7472,7 +9674,6 @@ packages: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - dev: true /eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} @@ -7547,7 +9748,6 @@ packages: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - dev: true /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} @@ -7564,7 +9764,6 @@ packages: /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} - dev: true /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} @@ -7582,6 +9781,16 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + /eta@2.2.0: + resolution: {integrity: sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==} + engines: {node: '>=6.0.0'} + dev: false + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: false + /eth-block-tracker@6.1.0: resolution: {integrity: sha512-K9SY8+/xMBi4M5HHTDdxnpEqEEGjbNpzHFqvxyjMZej8InV/B+CkFRKM6W+uvrFJ7m8Zd1E0qUkseU3vdIDFYQ==} engines: {node: '>=14.0.0'} @@ -7721,6 +9930,14 @@ packages: strip-hex-prefix: 1.0.0 dev: false + /eval@0.1.8: + resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} + engines: {node: '>= 0.8'} + dependencies: + '@types/node': 18.16.18 + require-like: 0.1.2 + dev: false + /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: false @@ -7762,7 +9979,6 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: true /execa@7.1.1: resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} @@ -7795,6 +10011,45 @@ packages: jest-util: 29.5.0 dev: true + /express@4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: false + /ext-list@2.2.2: resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} engines: {node: '>=0.10.0'} @@ -7810,6 +10065,17 @@ packages: sort-keys-length: 1.0.1 dev: false + /extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + dev: false + + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: false + /extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} dev: true @@ -7863,6 +10129,12 @@ packages: resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} dev: false + /fast-url-parser@1.1.3: + resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} + dependencies: + punycode: 1.4.1 + dev: false + /fast-xml-parser@4.2.7: resolution: {integrity: sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig==} hasBin: true @@ -7873,39 +10145,89 @@ packages: /fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} - dev: true /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 + /faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + dependencies: + websocket-driver: 0.7.4 + dev: false + /fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 dev: true - /fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + /fbemitter@3.0.0: + resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} dependencies: - pend: 1.2.0 + fbjs: 3.0.5 + transitivePeerDependencies: + - encoding dev: false - /figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - dependencies: - escape-string-regexp: 1.0.5 + /fbjs-css-vars@1.0.2: + resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} dev: false - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + /fbjs@3.0.5: + resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} dependencies: - flat-cache: 3.0.4 - - /file-type@3.9.0: + cross-fetch: 3.1.6 + fbjs-css-vars: 1.0.2 + loose-envify: 1.4.0 + object-assign: 4.1.1 + promise: 7.3.1 + setimmediate: 1.0.5 + ua-parser-js: 1.0.36 + transitivePeerDependencies: + - encoding + dev: false + + /fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + dependencies: + pend: 1.2.0 + dev: false + + /feed@4.2.2: + resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} + engines: {node: '>=0.4.0'} + dependencies: + xml-js: 1.6.11 + dev: false + + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: false + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + + /file-loader@6.2.0(webpack@5.88.1): + resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + + /file-type@3.9.0: resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} engines: {node: '>=0.10.0'} dev: false @@ -7948,6 +10270,11 @@ packages: trim-repeated: 1.0.0 dev: false + /filesize@8.0.7: + resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} + engines: {node: '>= 0.4.0'} + dev: false + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -7959,6 +10286,37 @@ packages: engines: {node: '>=0.10.0'} dev: false + /finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + dev: false + + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + dev: false + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -7995,6 +10353,18 @@ packages: /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + /flux@4.0.4(react@17.0.2): + resolution: {integrity: sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==} + peerDependencies: + react: ^15.0.2 || ^16.0.0 || ^17.0.0 + dependencies: + fbemitter: 3.0.0 + fbjs: 3.0.5 + react: 17.0.2 + transitivePeerDependencies: + - encoding + dev: false + /follow-redirects@1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} @@ -8010,6 +10380,38 @@ packages: dependencies: is-callable: 1.2.7 + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.88.1): + resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.22.13 + '@types/json-schema': 7.0.12 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.3.1 + eslint: 8.48.0 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.5.3 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.5.2 + tapable: 1.1.3 + typescript: 4.9.5 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -8019,6 +10421,20 @@ packages: mime-types: 2.1.35 dev: false + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: false + + /fraction.js@4.3.6: + resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==} + dev: false + + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: false + /from2@2.3.0: resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} dependencies: @@ -8030,6 +10446,15 @@ packages: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} dev: false + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: false + /fs-extra@11.1.1: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} engines: {node: '>=14.14'} @@ -8056,6 +10481,20 @@ packages: universalify: 0.1.2 dev: true + /fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: false + + /fs-monkey@1.0.4: + resolution: {integrity: sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==} + dev: false + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -8064,7 +10503,6 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: true optional: true /function-bind@1.1.1: @@ -8107,6 +10545,10 @@ packages: engines: {node: '>=6'} dev: false + /get-own-enumerable-property-symbols@3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + dev: false + /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -8132,10 +10574,23 @@ packages: engines: {node: '>=4'} dev: false + /get-stream@4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} + dependencies: + pump: 3.0.0 + dev: false + + /get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + dev: false + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - dev: true /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} @@ -8163,6 +10618,10 @@ packages: through2: 4.0.2 dev: true + /github-slugger@1.5.0: + resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} + dev: false + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -8177,7 +10636,6 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: true /glob@7.1.7: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} @@ -8218,6 +10676,29 @@ packages: ini: 1.3.8 dev: true + /global-dirs@3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + engines: {node: '>=10'} + dependencies: + ini: 2.0.0 + dev: false + + /global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + dependencies: + global-prefix: 3.0.0 + dev: false + + /global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + dev: false + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -8306,6 +10787,25 @@ packages: url-to-options: 1.0.1 dev: false + /got@9.6.0: + resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} + engines: {node: '>=8.6'} + dependencies: + '@sindresorhus/is': 0.14.0 + '@szmarczak/http-timer': 1.1.2 + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.0 + cacheable-request: 6.1.0 + decompress-response: 3.3.0 + duplexer3: 0.1.5 + get-stream: 4.1.0 + lowercase-keys: 1.0.1 + mimic-response: 1.0.1 + p-cancelable: 1.1.0 + to-readable-stream: 1.0.0 + url-parse-lax: 3.0.0 + dev: false + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -8316,6 +10816,27 @@ packages: /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + /gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + dependencies: + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + dev: false + + /gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + dependencies: + duplexer: 0.1.2 + dev: false + + /handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + dev: false + /handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} engines: {node: '>=0.4.7'} @@ -8334,2209 +10855,3585 @@ packages: engines: {node: '>=6'} dev: true - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + /has-property-descriptors@1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.2.1 + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + /has-symbol-support-x@1.4.2: + resolution: {integrity: sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==} + dev: false + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + /has-to-string-tag-x@1.4.1: + resolution: {integrity: sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==} + dependencies: + has-symbol-support-x: 1.4.2 + dev: false + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + + /has-yarn@2.1.0: + resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} + engines: {node: '>=8'} + dev: false + + /has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + + /hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + dev: false + + /hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: false + + /hast-to-hyperscript@9.0.1: + resolution: {integrity: sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==} + dependencies: + '@types/unist': 2.0.8 + comma-separated-tokens: 1.0.8 + property-information: 5.6.0 + space-separated-tokens: 1.1.5 + style-to-object: 0.3.0 + unist-util-is: 4.1.0 + web-namespaces: 1.1.4 + dev: false + + /hast-util-from-parse5@6.0.1: + resolution: {integrity: sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==} + dependencies: + '@types/parse5': 5.0.3 + hastscript: 6.0.0 + property-information: 5.6.0 + vfile: 4.2.1 + vfile-location: 3.2.0 + web-namespaces: 1.1.4 + dev: false + + /hast-util-parse-selector@2.2.5: + resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} + dev: false + + /hast-util-raw@6.0.1: + resolution: {integrity: sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==} + dependencies: + '@types/hast': 2.3.6 + hast-util-from-parse5: 6.0.1 + hast-util-to-parse5: 6.0.0 + html-void-elements: 1.0.5 + parse5: 6.0.1 + unist-util-position: 3.1.0 + vfile: 4.2.1 + web-namespaces: 1.1.4 + xtend: 4.0.2 + zwitch: 1.0.5 + dev: false + + /hast-util-to-parse5@6.0.0: + resolution: {integrity: sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==} + dependencies: + hast-to-hyperscript: 9.0.1 + property-information: 5.6.0 + web-namespaces: 1.1.4 + xtend: 4.0.2 + zwitch: 1.0.5 + dev: false + + /hastscript@6.0.0: + resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} + dependencies: + '@types/hast': 2.3.6 + comma-separated-tokens: 1.0.8 + hast-util-parse-selector: 2.2.5 + property-information: 5.6.0 + space-separated-tokens: 1.1.5 + dev: false + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + /hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + dev: false + + /history@4.10.1: + resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} + dependencies: + '@babel/runtime': 7.22.3 + loose-envify: 1.4.0 + resolve-pathname: 3.0.0 + tiny-invariant: 1.3.1 + tiny-warning: 1.0.3 + value-equal: 1.0.1 + dev: false + + /hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: false + + /hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + dependencies: + react-is: 16.13.1 + dev: false + + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + + /hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + dev: true + + /hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + dev: false + + /html-entities@2.4.0: + resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==} + dev: false + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.2 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.19.2 + dev: false + + /html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + dev: false + + /html-void-elements@1.0.5: + resolution: {integrity: sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==} + dev: false + + /html-webpack-plugin@5.5.3(webpack@5.88.1): + resolution: {integrity: sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==} + engines: {node: '>=10.13.0'} + peerDependencies: + webpack: ^5.20.0 + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.1 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + + /htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + dev: false + + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + dev: false + + /http-cache-semantics@3.8.1: + resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==} + dev: false + + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: false + + /http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + dev: false + + /http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + dev: false + + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: false + + /http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + dev: false + + /http-proxy-middleware@2.0.6(@types/express@4.17.17): + resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + dependencies: + '@types/express': 4.17.17 + '@types/http-proxy': 1.17.12 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.5 + transitivePeerDependencies: + - debug + dev: false + + /http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.2 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + dev: false + + /human-id@1.0.2: + resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true + + /humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + dependencies: + ms: 2.1.3 + dev: false + + /husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + + /icss-utils@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.29 + dev: false + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + + /image-size@1.0.2: + resolution: {integrity: sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + queue: 6.0.2 + dev: false + + /immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + dev: false + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /import-lazy@2.1.0: + resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} + engines: {node: '>=4'} + dev: false + + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + /infima@0.2.0-alpha.43: + resolution: {integrity: sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==} + engines: {node: '>=12'} + dev: false + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: false + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + /ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + dev: false + + /inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + dev: false + + /internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.3 + side-channel: 1.0.4 + + /interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + dev: false + + /interpret@3.1.1: + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} + engines: {node: '>=10.13.0'} + + /into-stream@3.1.0: + resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==} + engines: {node: '>=4'} + dependencies: + from2: 2.3.0 + p-is-promise: 1.1.0 + dev: false + + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + dependencies: + loose-envify: 1.4.0 + + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: false + + /ipaddr.js@2.1.0: + resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} + engines: {node: '>= 10'} + dev: false + + /is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + dev: false + + /is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + dev: false + + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.10 + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + /is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: false + + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + /is-ci@2.0.0: + resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} + hasBin: true + dependencies: + ci-info: 2.0.0 + dev: false + + /is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + dependencies: + ci-info: 3.8.0 + dev: true + + /is-core-module@2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + dependencies: + has: 1.0.3 + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + + /is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + dev: false + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + /is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: false + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + /is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + dev: true + + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + dev: false + + /is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + dev: false + + /is-installed-globally@0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + dependencies: + global-dirs: 3.0.1 + is-path-inside: 3.0.3 + dev: false + + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: false + + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + + /is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: true + + /is-natural-number@4.0.1: + resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==} + dev: false + + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + + /is-npm@5.0.0: + resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} + engines: {node: '>=10'} + dev: false + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + dev: false + + /is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + /is-object@1.0.2: + resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} + dev: false + + /is-path-cwd@2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} + + /is-path-in-cwd@2.1.0: + resolution: {integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==} + engines: {node: '>=6'} + dependencies: + is-path-inside: 2.1.0 + dev: true + + /is-path-inside@2.1.0: + resolution: {integrity: sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==} + engines: {node: '>=6'} + dependencies: + path-is-inside: 1.0.2 + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + /is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + /is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + /is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + dev: false + + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + + /is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + dev: false + + /is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + dependencies: + '@types/estree': 1.0.1 + dev: true + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + + /is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + dev: false + + /is-retry-allowed@1.2.0: + resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} + engines: {node: '>=0.10.0'} + dev: false + + /is-root@2.1.0: + resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} + engines: {node: '>=6'} + dev: false + + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + + /is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + dev: false + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + + /is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + dependencies: + better-path-resolve: 1.0.0 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + + /is-text-path@1.0.1: + resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} + engines: {node: '>=0.10.0'} + dependencies: + text-extensions: 1.9.0 + dev: true + + /is-typed-array@1.1.10: + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + + /is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: false + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + + /is-whitespace-character@1.0.4: + resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} + dev: false + + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: true + + /is-word-character@1.0.4: + resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} + dev: false + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + + /is-yarn-global@0.3.0: + resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} + dev: false + + /isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + dev: false + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + /isomorphic-ws@4.0.1(ws@7.5.9): + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + dependencies: + ws: 7.5.9 + dev: false + + /isomorphic-ws@5.0.0(ws@8.12.0): + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + dependencies: + ws: 8.12.0 + dev: false + + /istanbul-lib-coverage@3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.22.15 + '@babel/parser': 7.22.15 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} + engines: {node: '>=8'} + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 3.1.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.0 + dev: true + + /isurl@1.0.0: + resolution: {integrity: sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==} + engines: {node: '>= 4'} + dependencies: + has-to-string-tag-x: 1.4.1 + is-object: 1.0.2 + dev: false + + /jayson@3.7.0: + resolution: {integrity: sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==} + engines: {node: '>=8'} + hasBin: true + dependencies: + '@types/connect': 3.4.35 + '@types/node': 12.20.55 + '@types/ws': 7.4.7 + JSONStream: 1.3.5 + commander: 2.20.3 + delay: 5.0.0 + es6-promisify: 5.0.0 + eyes: 0.1.8 + isomorphic-ws: 4.0.1(ws@7.5.9) + json-stringify-safe: 5.0.1 + lodash: 4.17.21 + uuid: 8.3.2 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /jest-changed-files@29.5.0: + resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + p-limit: 3.1.0 + dev: true + + /jest-circus@29.5.0: + resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + is-generator-fn: 2.1.0 + jest-each: 29.5.0 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + p-limit: 3.1.0 + pretty-format: 29.5.0 + pure-rand: 6.0.2 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.5.0(ts-node@10.9.1) + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.1.0 + jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + jest-util: 29.5.0 + jest-validate: 29.5.0 + prompts: 2.4.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /jest-config@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.22.15 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 + babel-jest: 29.5.0(@babel/core@7.22.15) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) + transitivePeerDependencies: + - supports-color + dev: true + + /jest-diff@29.5.0: + resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-docblock@29.4.3: + resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each@29.5.0: + resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + chalk: 4.1.2 + jest-get-type: 29.4.3 + jest-util: 29.5.0 + pretty-format: 29.5.0 + dev: true + + /jest-environment-node@29.5.0: + resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 + jest-mock: 29.5.0 + jest-util: 29.5.0 + dev: true + + /jest-get-type@29.4.3: + resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-haste-map@29.5.0: + resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/graceful-fs': 4.1.6 + '@types/node': 18.16.18 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + jest-worker: 29.5.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /jest-leak-detector@29.5.0: + resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-matcher-utils@29.5.0: + resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-message-util@29.5.0: + resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.22.13 + '@jest/types': 29.5.0 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.5.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@29.5.0: + resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 18.16.18 + jest-util: 29.5.0 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.5.0 + dev: true + + /jest-regex-util@29.4.3: + resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-resolve-dependencies@29.5.0: + resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.4.3 + jest-snapshot: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@29.5.0: + resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) + jest-util: 29.5.0 + jest-validate: 29.5.0 + resolve: 1.22.2 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + + /jest-runner@29.5.0: + resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.5.0 + '@jest/environment': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.4.3 + jest-environment-node: 29.5.0 + jest-haste-map: 29.5.0 + jest-leak-detector: 29.5.0 + jest-message-util: 29.5.0 + jest-resolve: 29.5.0 + jest-runtime: 29.5.0 + jest-util: 29.5.0 + jest-watcher: 29.5.0 + jest-worker: 29.5.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime@29.5.0: + resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/globals': 29.5.0 + '@jest/source-map': 29.4.3 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 + chalk: 4.1.2 + cjs-module-lexer: 1.2.2 + collect-v8-coverage: 1.0.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@29.5.0: + resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - get-intrinsic: 1.2.1 - - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - - /has-symbol-support-x@1.4.2: - resolution: {integrity: sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==} - dev: false + '@babel/core': 7.22.15 + '@babel/generator': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.15) + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 + '@jest/expect-utils': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/babel__traverse': 7.18.5 + '@types/prettier': 2.7.2 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.15) + chalk: 4.1.2 + expect: 29.5.0 + graceful-fs: 4.2.11 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + natural-compare: 1.4.0 + pretty-format: 29.5.0 + semver: 7.5.2 + transitivePeerDependencies: + - supports-color + dev: true - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} + /jest-util@29.5.0: + resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 18.16.18 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 - /has-to-string-tag-x@1.4.1: - resolution: {integrity: sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==} + /jest-validate@29.5.0: + resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - has-symbol-support-x: 1.4.2 - dev: false + '@jest/types': 29.5.0 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.4.3 + leven: 3.1.0 + pretty-format: 29.5.0 + dev: true - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} + /jest-watcher@29.5.0: + resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - has-symbols: 1.0.3 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.5.0 + string-length: 4.0.2 + dev: true - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} + /jest-worker@26.6.2: + resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} + engines: {node: '>= 10.13.0'} dependencies: - function-bind: 1.1.1 + '@types/node': 18.16.18 + merge-stream: 2.0.0 + supports-color: 7.2.0 + dev: true - /hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - dev: false + '@types/node': 18.16.18 + merge-stream: 2.0.0 + supports-color: 8.1.1 - /hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + /jest-worker@29.5.0: + resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - dev: false + '@types/node': 18.16.18 + jest-util: 29.5.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 - /he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): + resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.5.0(ts-node@10.9.1) + '@jest/types': 29.5.0 + import-local: 3.1.0 + jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node dev: true - /hey-listen@1.0.8: - resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + /jiti@1.20.0: + resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==} + hasBin: true dev: false - /hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + /joi@17.10.2: + resolution: {integrity: sha512-hcVhjBxRNW/is3nNLdGLIjkgXetkeGc2wyhydhz8KumG23Aerk4HPjU5zaPAMRqXQFc0xNqXTC7+zQjxr0GlKA==} dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.4 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + + /js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} dev: false - /hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: true + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true dependencies: - lru-cache: 6.0.0 - dev: true + argparse: 1.0.10 + esprima: 4.0.1 - /html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 - /http-cache-semantics@3.8.1: - resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==} - dev: false + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true - /human-id@1.0.2: - resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - dev: true + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true + /json-buffer@3.0.0: + resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} + dev: false - /human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} dev: true - /humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + /json-rpc-engine@6.1.0: + resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} + engines: {node: '>=10.0.0'} dependencies: - ms: 2.1.3 + '@metamask/safe-event-emitter': 2.0.0 + eth-rpc-errors: 4.0.2 dev: false - /husky@8.0.3: - resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} - engines: {node: '>=14'} - hasBin: true - dev: true + /json-rpc-random-id@1.0.1: + resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} + dev: false - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: false + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: false - /import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - dev: true + minimist: 1.2.8 - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 dev: true - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + /jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} - /internal-slot@1.0.5: - resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} - engines: {node: '>= 0.4'} + /jsx-ast-utils@3.3.3: + resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} + engines: {node: '>=4.0'} dependencies: - get-intrinsic: 1.2.1 - has: 1.0.3 - side-channel: 1.0.4 + array-includes: 3.1.6 + object.assign: 4.1.4 - /interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} + /keccak@3.0.3: + resolution: {integrity: sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.6.0 + readable-stream: 3.6.2 dev: false - /interpret@3.1.1: - resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} - engines: {node: '>=10.13.0'} - dev: true - - /into-stream@3.1.0: - resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==} - engines: {node: '>=4'} + /keyv@3.0.0: + resolution: {integrity: sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==} dependencies: - from2: 2.3.0 - p-is-promise: 1.1.0 + json-buffer: 3.0.0 dev: false - /invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - dependencies: - loose-envify: 1.4.0 + /keyvaluestorage-interface@1.0.0: + resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} dev: false - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - is-typed-array: 1.1.10 + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} dev: true - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + /language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + + /language-tags@1.0.5: + resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} dependencies: - has-bigints: 1.0.2 + language-subtag-registry: 0.3.22 - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + /latest-version@5.1.0: + resolution: {integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==} engines: {node: '>=8'} dependencies: - binary-extensions: 2.2.0 - dev: true + package-json: 6.5.0 + dev: false - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} + /launch-editor@2.6.0: + resolution: {integrity: sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==} dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 + picocolors: 1.0.0 + shell-quote: 1.8.1 + dev: false - /is-builtin-module@3.2.1: - resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} - dependencies: - builtin-modules: 3.3.0 - dev: true - - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - /is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true - dependencies: - ci-info: 3.8.0 - dev: true - /is-core-module@2.12.1: - resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} dependencies: - has: 1.0.3 + prelude-ls: 1.2.1 + type-check: 0.4.0 - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} + /libsodium-wrappers@0.7.11: + resolution: {integrity: sha512-SrcLtXj7BM19vUKtQuyQKiQCRJPgbpauzl3s0rSwD+60wtHqSUuqcoawlMDheCJga85nKOQwxNYQxf/CKAvs6Q==} dependencies: - has-tostringtag: 1.0.0 - - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + libsodium: 0.7.11 + dev: false - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + /libsodium@0.7.11: + resolution: {integrity: sha512-WPfJ7sS53I2s4iM58QxY3Inb83/6mjlYgcmZs7DJsvDlnmVUwNinBCi5vBT43P6bHRy01O4zsMU2CoVR6xJ40A==} + dev: false - /is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - dev: true + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} - /is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} + /link-module-alias@1.2.0: + resolution: {integrity: sha512-ahPjXepbSVKbahTB6LxR//VHm8HPfI+QQygCH+E82spBY4HR5VPJTvlhKBc9F7muVxnS6C1rRfoPOXAbWO/fyw==} + engines: {node: '> 8.0.0'} + hasBin: true dependencies: - has-tostringtag: 1.0.0 + chalk: 2.4.2 dev: false - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + /lint-staged@13.2.2: + resolution: {integrity: sha512-71gSwXKy649VrSU09s10uAT0rWCcY3aewhMaHyl2N84oBk4Xs9HgxvUp3AYu+bNsK4NrOYYxvSgg7FyGJ+jGcA==} + engines: {node: ^14.13.1 || >=16.0.0} + hasBin: true dependencies: - is-extglob: 2.1.1 - - /is-hex-prefixed@1.0.0: - resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} - engines: {node: '>=6.5.0', npm: '>=3'} - dev: false - - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: false - - /is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + chalk: 5.2.0 + cli-truncate: 3.1.0 + commander: 10.0.1 + debug: 4.3.4(supports-color@8.1.1) + execa: 7.1.1 + lilconfig: 2.1.0 + listr2: 5.0.8 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-inspect: 1.12.3 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.3.1 + transitivePeerDependencies: + - enquirer + - supports-color + dev: true - /is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + /listr2@5.0.8: + resolution: {integrity: sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==} + engines: {node: ^14.13.1 || >=16.0.0} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.20 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.3.0 + rxjs: 7.8.1 + through: 2.3.8 + wrap-ansi: 7.0.0 dev: true - /is-natural-number@4.0.1: - resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==} + /lit-element@3.3.2: + resolution: {integrity: sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ==} + dependencies: + '@lit-labs/ssr-dom-shim': 1.1.1 + '@lit/reactive-element': 1.6.1 + lit-html: 2.7.4 dev: false - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} + /lit-html@2.7.4: + resolution: {integrity: sha512-/Jw+FBpeEN+z8X6PJva5n7+0MzCVAH2yypN99qHYYkq8bI+j7I39GH+68Z/MZD6rGKDK9RpzBw7CocfmHfq6+g==} dependencies: - has-tostringtag: 1.0.0 - - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - /is-obj@2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - dev: true - - /is-object@1.0.2: - resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} + '@types/trusted-types': 2.0.3 dev: false - /is-path-cwd@2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - dev: true - - /is-path-in-cwd@2.1.0: - resolution: {integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==} - engines: {node: '>=6'} + /lit@2.7.5: + resolution: {integrity: sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ==} dependencies: - is-path-inside: 2.1.0 - dev: true + '@lit/reactive-element': 1.6.1 + lit-element: 3.3.2 + lit-html: 2.7.4 + dev: false - /is-path-inside@2.1.0: - resolution: {integrity: sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==} - engines: {node: '>=6'} + /load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} dependencies: - path-is-inside: 1.0.2 - dev: true - - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - /is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - - /is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 dev: true - /is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} + /load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} dependencies: - isobject: 3.0.1 + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 dev: true - /is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - dependencies: - '@types/estree': 1.0.1 - dev: true + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} + /loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - - /is-retry-allowed@1.2.0: - resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} - engines: {node: '>=0.10.0'} + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 dev: false - /is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + /loader-utils@3.2.1: + resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} + engines: {node: '>= 12.13.0'} + dev: false - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} dependencies: - call-bind: 1.0.2 - - /is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} + p-locate: 3.0.0 + path-exists: 3.0.0 dev: false - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} - dev: true - - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + p-locate: 4.1.0 - /is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: - better-path-resolve: 1.0.0 + p-locate: 5.0.0 + + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} dev: true - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 + /lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + dev: false - /is-text-path@1.0.1: - resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} - engines: {node: '>=0.10.0'} - dependencies: - text-extensions: 1.9.0 - dev: true + /lodash.curry@4.1.1: + resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} + dev: false - /is-typed-array@1.1.10: - resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - /is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + /lodash.escape@4.0.1: + resolution: {integrity: sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==} dev: false - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} + /lodash.flatten@4.4.0: + resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + dev: false - /is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + /lodash.flow@3.5.0: + resolution: {integrity: sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==} + dev: false - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.2 + /lodash.invokemap@4.6.0: + resolution: {integrity: sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==} + dev: false - /is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: false - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} + /lodash.isfunction@3.0.9: + resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} dev: true - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + /lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + dev: true + + /lodash.mapvalues@4.6.0: + resolution: {integrity: sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==} dev: false - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - /isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} + /lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} dev: true - /isomorphic-ws@4.0.1(ws@7.5.9): - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - dependencies: - ws: 7.5.9 - dev: false - - /isomorphic-ws@5.0.0(ws@8.12.0): - resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} - peerDependencies: - ws: '*' - dependencies: - ws: 8.12.0 + /lodash.pullall@4.2.0: + resolution: {integrity: sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==} dev: false - /istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} + /lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} dev: true - /istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - dependencies: - '@babel/core': 7.22.15 - '@babel/parser': 7.22.15 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + /lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + dev: false + + /lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true - /istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} - dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 - supports-color: 7.2.0 + /lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + /lodash.uniqby@4.7.0: + resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} + dev: false + + /lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} dev: true - /istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@8.1.1) - istanbul-lib-coverage: 3.2.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true + chalk: 4.1.2 + is-unicode-supported: 0.1.0 - /istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} - engines: {node: '>=8'} + /log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 dev: true - /isurl@1.0.0: - resolution: {integrity: sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==} - engines: {node: '>= 4'} - dependencies: - has-to-string-tag-x: 1.4.1 - is-object: 1.0.2 + /long@4.0.0: + resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} dev: false - /jayson@3.7.0: - resolution: {integrity: sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==} - engines: {node: '>=8'} - hasBin: true - dependencies: - '@types/connect': 3.4.35 - '@types/node': 12.20.55 - '@types/ws': 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.9) - json-stringify-safe: 5.0.1 - lodash: 4.17.21 - uuid: 8.3.2 - ws: 7.5.9 - transitivePeerDependencies: - - bufferutil - - utf-8-validate + /long@5.2.1: + resolution: {integrity: sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==} dev: false - /jest-changed-files@29.5.0: - resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true dependencies: - execa: 5.1.1 - p-limit: 3.1.0 - dev: true + js-tokens: 4.0.0 - /jest-circus@29.5.0: - resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /loupe@2.3.6: + resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: - '@jest/environment': 29.5.0 - '@jest/expect': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.18 - chalk: 4.1.2 - co: 4.6.0 - dedent: 0.7.0 - is-generator-fn: 2.1.0 - jest-each: 29.5.0 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - p-limit: 3.1.0 - pretty-format: 29.5.0 - pure-rand: 6.0.2 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - supports-color + get-func-name: 2.0.0 dev: true - /jest-cli@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): - resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + /lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - '@jest/core': 29.5.0(ts-node@10.9.1) - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) - jest-util: 29.5.0 - jest-validate: 29.5.0 - prompts: 2.4.2 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true + tslib: 2.5.2 + dev: false - /jest-config@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.22.15 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.18 - babel-jest: 29.5.0(@babel/core@7.22.15) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.16.18)(typescript@4.9.5) - transitivePeerDependencies: - - supports-color - dev: true + /lowercase-keys@1.0.0: + resolution: {integrity: sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==} + engines: {node: '>=0.10.0'} + dev: false - /jest-diff@29.5.0: - resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 29.4.3 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true + /lowercase-keys@1.0.1: + resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} + engines: {node: '>=0.10.0'} + dev: false - /jest-docblock@29.4.3: - resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - detect-newline: 3.1.0 - dev: true + /lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + dev: false - /jest-each@29.5.0: - resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: - '@jest/types': 29.5.0 - chalk: 4.1.2 - jest-get-type: 29.4.3 - jest-util: 29.5.0 - pretty-format: 29.5.0 + pseudomap: 1.0.2 + yallist: 2.1.2 dev: true - /jest-environment-node@29.5.0: - resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: - '@jest/environment': 29.5.0 - '@jest/fake-timers': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.18 - jest-mock: 29.5.0 - jest-util: 29.5.0 - dev: true + yallist: 3.1.1 - /jest-get-type@29.4.3: - resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 - /jest-haste-map@29.5.0: - resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: - '@jest/types': 29.5.0 - '@types/graceful-fs': 4.1.6 - '@types/node': 18.16.18 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 - jest-worker: 29.5.0 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 + sourcemap-codec: 1.4.8 dev: true - /jest-leak-detector@29.5.0: - resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} dependencies: - jest-get-type: 29.4.3 - pretty-format: 29.5.0 + '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /jest-matcher-utils@29.5.0: - resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /make-dir@1.3.0: + resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} + engines: {node: '>=4'} dependencies: - chalk: 4.1.2 - jest-diff: 29.5.0 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true + pify: 3.0.0 + dev: false - /jest-message-util@29.5.0: - resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.22.13 - '@jest/types': 29.5.0 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 29.5.0 - slash: 3.0.0 - stack-utils: 2.0.6 + semver: 6.3.1 + + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true - /jest-mock@29.5.0: - resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: - '@jest/types': 29.5.0 - '@types/node': 18.16.18 - jest-util: 29.5.0 + tmpl: 1.0.5 dev: true - /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: - jest-resolve: 29.5.0 + /map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} dev: true - /jest-regex-util@29.4.3: - resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} dev: true - /jest-resolve-dependencies@29.5.0: - resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /markdown-escapes@1.0.4: + resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} + dev: false + + /md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} dependencies: - jest-regex-util: 29.4.3 - jest-snapshot: 29.5.0 - transitivePeerDependencies: - - supports-color - dev: true + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false - /jest-resolve@29.5.0: - resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /mdast-squeeze-paragraphs@4.0.0: + resolution: {integrity: sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==} dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) - jest-util: 29.5.0 - jest-validate: 29.5.0 - resolve: 1.22.2 - resolve.exports: 2.0.2 - slash: 3.0.0 - dev: true + unist-util-remove: 2.1.0 + dev: false - /jest-runner@29.5.0: - resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /mdast-util-definitions@4.0.0: + resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==} dependencies: - '@jest/console': 29.5.0 - '@jest/environment': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.18 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.4.3 - jest-environment-node: 29.5.0 - jest-haste-map: 29.5.0 - jest-leak-detector: 29.5.0 - jest-message-util: 29.5.0 - jest-resolve: 29.5.0 - jest-runtime: 29.5.0 - jest-util: 29.5.0 - jest-watcher: 29.5.0 - jest-worker: 29.5.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - dev: true + unist-util-visit: 2.0.3 + dev: false - /jest-runtime@29.5.0: - resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /mdast-util-to-hast@10.0.1: + resolution: {integrity: sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==} dependencies: - '@jest/environment': 29.5.0 - '@jest/fake-timers': 29.5.0 - '@jest/globals': 29.5.0 - '@jest/source-map': 29.4.3 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.18 - chalk: 4.1.2 - cjs-module-lexer: 1.2.2 - collect-v8-coverage: 1.0.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-mock: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color + '@types/mdast': 3.0.12 + '@types/unist': 2.0.8 + mdast-util-definitions: 4.0.0 + mdurl: 1.0.1 + unist-builder: 2.0.3 + unist-util-generated: 1.1.6 + unist-util-position: 3.1.0 + unist-util-visit: 2.0.3 + dev: false + + /mdast-util-to-string@2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + dev: false + + /mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: false + + /mdurl@1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + dev: false + + /media-query-parser@2.0.2: + resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} + dependencies: + '@babel/runtime': 7.22.3 + dev: false + + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: false + + /memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + dependencies: + fs-monkey: 1.0.4 + dev: false + + /meow@6.1.1: + resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} + engines: {node: '>=8'} + dependencies: + '@types/minimist': 1.2.2 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 2.5.0 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.13.1 + yargs-parser: 18.1.3 dev: true - /jest-snapshot@29.5.0: - resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /meow@8.1.2: + resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} + engines: {node: '>=10'} dependencies: - '@babel/core': 7.22.15 - '@babel/generator': 7.22.15 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) - '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.15) - '@babel/traverse': 7.22.15 - '@babel/types': 7.22.15 - '@jest/expect-utils': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/babel__traverse': 7.18.5 - '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.15) - chalk: 4.1.2 - expect: 29.5.0 - graceful-fs: 4.2.11 - jest-diff: 29.5.0 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - natural-compare: 1.4.0 - pretty-format: 29.5.0 - semver: 7.5.2 - transitivePeerDependencies: - - supports-color + '@types/minimist': 1.2.2 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 dev: true - /jest-util@29.5.0: - resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + dev: false + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: false + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} dependencies: - '@jest/types': 29.5.0 - '@types/node': 18.16.18 - chalk: 4.1.2 - ci-info: 3.8.0 - graceful-fs: 4.2.11 + braces: 3.0.2 picomatch: 2.3.1 - dev: true - /jest-validate@29.5.0: - resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.4.3 - leven: 3.1.0 - pretty-format: 29.5.0 - dev: true + /mime-db@1.33.0: + resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} + engines: {node: '>= 0.6'} + dev: false - /jest-watcher@29.5.0: - resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + /mime-types@2.1.18: + resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} + engines: {node: '>= 0.6'} dependencies: - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.18 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.5.0 - string-length: 4.0.2 - dev: true + mime-db: 1.33.0 + dev: false - /jest-worker@26.6.2: - resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} - engines: {node: '>= 10.13.0'} + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} dependencies: - '@types/node': 18.16.18 - merge-stream: 2.0.0 - supports-color: 7.2.0 + mime-db: 1.52.0 + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true dev: true - /jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 18.16.18 - merge-stream: 2.0.0 - supports-color: 8.1.1 + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} dev: true - /jest-worker@29.5.0: - resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@types/node': 18.16.18 - jest-util: 29.5.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 + /mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + dev: false + + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} dev: true - /jest@29.5.0(@types/node@18.16.18)(ts-node@10.9.1): - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true + /mini-css-extract-plugin@2.7.6(webpack@5.88.1): + resolution: {integrity: sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==} + engines: {node: '>= 12.13.0'} peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + webpack: ^5.0.0 dependencies: - '@jest/core': 29.5.0(ts-node@10.9.1) - '@jest/types': 29.5.0 - import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.16.18)(ts-node@10.9.1) - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true + schema-utils: 4.2.0 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false - /js-sha3@0.8.0: - resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} dev: false - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + /minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: false - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: - argparse: 1.0.10 - esprima: 4.0.1 + brace-expansion: 1.1.11 + + /minimatch@5.0.1: + resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 dev: true - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true + /minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} dependencies: - argparse: 2.0.1 + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + dev: true - /jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + /mixme@0.5.9: + resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} + engines: {node: '>= 8.0.0'} dev: true - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} + /mocha@10.2.0: + resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==} + engines: {node: '>= 14.0.0'} hasBin: true + dependencies: + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.3 + debug: 4.3.4(supports-color@8.1.1) + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 7.2.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.0.1 + ms: 2.1.3 + nanoid: 3.3.3 + serialize-javascript: 6.0.0 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.2.1 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + dev: true - /json-buffer@3.0.0: - resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} + /motion@10.16.2: + resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} + dependencies: + '@motionone/animation': 10.15.1 + '@motionone/dom': 10.16.2 + '@motionone/svelte': 10.16.2 + '@motionone/types': 10.15.1 + '@motionone/utils': 10.15.1 + '@motionone/vue': 10.16.2 dev: false - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: true + /mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: false - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: false - /json-rpc-engine@6.1.0: - resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} - engines: {node: '>=10.0.0'} + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + /multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true dependencies: - '@metamask/safe-event-emitter': 2.0.0 - eth-rpc-errors: 4.0.2 + dns-packet: 5.6.1 + thunky: 1.1.0 dev: false - /json-rpc-random-id@1.0.1: - resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} + /multiformats@9.9.0: + resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} dev: false - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + /mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + /nanoid@3.3.3: + resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true dev: true - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: false - /json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} dev: false - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + /next@13.1.6(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==} + engines: {node: '>=14.6.0'} hasBin: true + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^6.0.0 || ^7.0.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true dependencies: - minimist: 1.2.8 - - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + '@next/env': 13.1.6 + '@swc/helpers': 0.4.14 + caniuse-lite: 1.0.30001527 + postcss: 8.4.14 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.22.15)(react@18.2.0) optionalDependencies: - graceful-fs: 4.2.11 - dev: true + '@next/swc-android-arm-eabi': 13.1.6 + '@next/swc-android-arm64': 13.1.6 + '@next/swc-darwin-arm64': 13.1.6 + '@next/swc-darwin-x64': 13.1.6 + '@next/swc-freebsd-x64': 13.1.6 + '@next/swc-linux-arm-gnueabihf': 13.1.6 + '@next/swc-linux-arm64-gnu': 13.1.6 + '@next/swc-linux-arm64-musl': 13.1.6 + '@next/swc-linux-x64-gnu': 13.1.6 + '@next/swc-linux-x64-musl': 13.1.6 + '@next/swc-win32-arm64-msvc': 13.1.6 + '@next/swc-win32-ia32-msvc': 13.1.6 + '@next/swc-win32-x64-msvc': 13.1.6 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + /no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: - universalify: 2.0.0 - optionalDependencies: - graceful-fs: 4.2.11 - - /jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} + lower-case: 2.0.2 + tslib: 2.5.2 + dev: false - /jsx-ast-utils@3.3.3: - resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} - engines: {node: '>=4.0'} - dependencies: - array-includes: 3.1.6 - object.assign: 4.1.4 + /node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + dev: false - /keccak@3.0.3: - resolution: {integrity: sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==} - engines: {node: '>=10.0.0'} - requiresBuild: true + /node-emoji@1.11.0: + resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} dependencies: - node-addon-api: 2.0.2 - node-gyp-build: 4.6.0 - readable-stream: 3.6.2 + lodash: 4.17.21 dev: false - /keyv@3.0.0: - resolution: {integrity: sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==} + /node-fetch@2.6.11: + resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true dependencies: - json-buffer: 3.0.0 + whatwg-url: 5.0.0 + + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} dev: false - /keyvaluestorage-interface@1.0.0: - resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} + /node-gyp-build@4.6.0: + resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} + hasBin: true dev: false - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: true + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - /kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.2 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 dev: true - /language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} - - /language-tags@1.0.5: - resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + /normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} dependencies: - language-subtag-registry: 0.3.22 - - /leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} + hosted-git-info: 4.1.0 + is-core-module: 2.12.1 + semver: 7.5.2 + validate-npm-package-license: 3.0.4 dev: true - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} - /libsodium-wrappers@0.7.11: - resolution: {integrity: sha512-SrcLtXj7BM19vUKtQuyQKiQCRJPgbpauzl3s0rSwD+60wtHqSUuqcoawlMDheCJga85nKOQwxNYQxf/CKAvs6Q==} + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: false + + /normalize-url@2.0.1: + resolution: {integrity: sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==} + engines: {node: '>=4'} dependencies: - libsodium: 0.7.11 + prepend-http: 2.0.0 + query-string: 5.1.1 + sort-keys: 2.0.0 dev: false - /libsodium@0.7.11: - resolution: {integrity: sha512-WPfJ7sS53I2s4iM58QxY3Inb83/6mjlYgcmZs7DJsvDlnmVUwNinBCi5vBT43P6bHRy01O4zsMU2CoVR6xJ40A==} + /normalize-url@4.5.1: + resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} + engines: {node: '>=8'} dev: false - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + /normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} - dev: true - - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true + dev: false - /link-module-alias@1.2.0: - resolution: {integrity: sha512-ahPjXepbSVKbahTB6LxR//VHm8HPfI+QQygCH+E82spBY4HR5VPJTvlhKBc9F7muVxnS6C1rRfoPOXAbWO/fyw==} - engines: {node: '> 8.0.0'} - hasBin: true + /npm-conf@1.1.3: + resolution: {integrity: sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==} + engines: {node: '>=4'} dependencies: - chalk: 2.4.2 + config-chain: 1.1.13 + pify: 3.0.0 dev: false - /lint-staged@13.2.2: - resolution: {integrity: sha512-71gSwXKy649VrSU09s10uAT0rWCcY3aewhMaHyl2N84oBk4Xs9HgxvUp3AYu+bNsK4NrOYYxvSgg7FyGJ+jGcA==} - engines: {node: ^14.13.1 || >=16.0.0} - hasBin: true + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} dependencies: - chalk: 5.2.0 - cli-truncate: 3.1.0 - commander: 10.0.1 - debug: 4.3.4(supports-color@8.1.1) - execa: 7.1.1 - lilconfig: 2.1.0 - listr2: 5.0.8 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-inspect: 1.12.3 - pidtree: 0.6.0 - string-argv: 0.3.2 - yaml: 2.3.1 - transitivePeerDependencies: - - enquirer - - supports-color - dev: true + path-key: 3.1.1 - /listr2@5.0.8: - resolution: {integrity: sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==} - engines: {node: ^14.13.1 || >=16.0.0} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true + /npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - cli-truncate: 2.1.0 - colorette: 2.0.20 - log-update: 4.0.0 - p-map: 4.0.0 - rfdc: 1.3.0 - rxjs: 7.8.1 - through: 2.3.8 - wrap-ansi: 7.0.0 + path-key: 4.0.0 dev: true - /lit-element@3.3.2: - resolution: {integrity: sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ==} - dependencies: - '@lit-labs/ssr-dom-shim': 1.1.1 - '@lit/reactive-element': 1.6.1 - lit-html: 2.7.4 + /nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} dev: false - /lit-html@2.7.4: - resolution: {integrity: sha512-/Jw+FBpeEN+z8X6PJva5n7+0MzCVAH2yypN99qHYYkq8bI+j7I39GH+68Z/MZD6rGKDK9RpzBw7CocfmHfq6+g==} + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: - '@types/trusted-types': 2.0.3 + boolbase: 1.0.0 dev: false - /lit@2.7.5: - resolution: {integrity: sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ==} + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + + /object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} dependencies: - '@lit/reactive-element': 1.6.1 - lit-element: 3.3.2 - lit-html: 2.7.4 - dev: false + call-bind: 1.0.2 + define-properties: 1.2.0 - /load-json-file@4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + /object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} dependencies: - graceful-fs: 4.2.11 - parse-json: 4.0.0 - pify: 3.0.0 - strip-bom: 3.0.0 - dev: true + call-bind: 1.0.2 + define-properties: 1.2.0 + has-symbols: 1.0.3 + object-keys: 1.1.1 - /load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} + /object.entries@1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + engines: {node: '>= 0.4'} dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - dev: true - - /loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - dev: true + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + /object.fromentries@2.0.6: + resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + engines: {node: '>= 0.4'} dependencies: - p-locate: 4.1.0 + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + /object.hasown@1.1.2: + resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: - p-locate: 5.0.0 + define-properties: 1.2.0 + es-abstract: 1.21.2 - /lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - dev: true + /object.values@1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 - /lodash.clonedeep@4.5.0: - resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + /obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} dev: false - /lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - dev: true - - /lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + /on-exit-leak-free@0.2.0: + resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} dev: false - /lodash.isfunction@3.0.9: - resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} - dev: true - - /lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - dev: true - - /lodash.kebabcase@4.1.1: - resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - dev: true + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: false - /lodash.mapvalues@4.6.0: - resolution: {integrity: sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==} + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} dev: false - /lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - dev: true + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 - /lodash.mergewith@4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 dev: true - /lodash.snakecase@4.1.1: - resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} - dev: true + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 - /lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + /opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true dev: false - /lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - dev: true - - /lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - dev: true - - /lodash.upperfirst@4.3.1: - resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} - dev: true - - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} dependencies: + bl: 4.1.0 chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.0 + is-interactive: 1.0.0 is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: false - /log-update@4.0.0: - resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} - engines: {node: '>=10'} - dependencies: - ansi-escapes: 4.3.2 - cli-cursor: 3.1.0 - slice-ansi: 4.0.0 - wrap-ansi: 6.2.0 + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + /outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} dev: true - /long@4.0.0: - resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} + /outdent@0.8.0: + resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==} dev: false - /long@5.2.1: - resolution: {integrity: sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==} + /p-cancelable@0.4.1: + resolution: {integrity: sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==} + engines: {node: '>=4'} dev: false - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + /p-cancelable@1.1.0: + resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} + engines: {node: '>=6'} + dev: false + + /p-event@2.3.1: + resolution: {integrity: sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==} + engines: {node: '>=6'} dependencies: - js-tokens: 4.0.0 + p-timeout: 2.0.1 + dev: false - /loupe@2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + /p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} dependencies: - get-func-name: 2.0.0 + p-map: 2.1.0 dev: true - /lowercase-keys@1.0.0: - resolution: {integrity: sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==} - engines: {node: '>=0.10.0'} + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} dev: false - /lowercase-keys@1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} + /p-is-promise@1.1.0: + resolution: {integrity: sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==} + engines: {node: '>=4'} dev: false - /lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - dev: true + p-try: 2.2.0 - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} dependencies: - yallist: 3.1.1 + yocto-queue: 0.1.0 - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} dependencies: - yallist: 4.0.0 + p-limit: 2.3.0 + dev: false - /magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} dependencies: - sourcemap-codec: 1.4.8 - dev: true + p-limit: 2.3.0 - /magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + p-limit: 3.1.0 + + /p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} dev: true - /make-dir@1.3.0: - resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + + /p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + dev: false + + /p-timeout@2.0.1: + resolution: {integrity: sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==} engines: {node: '>=4'} dependencies: - pify: 3.0.0 + p-finally: 1.0.0 dev: false - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + /package-json@6.5.0: + resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} engines: {node: '>=8'} dependencies: + got: 9.6.0 + registry-auth-token: 4.2.2 + registry-url: 5.1.0 semver: 6.3.1 - dev: true + dev: false - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true + /param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + dependencies: + dot-case: 3.0.4 + tslib: 2.5.2 + dev: false - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} dependencies: - tmpl: 1.0.5 - dev: true + callsites: 3.1.0 - /map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - dev: true + /parse-entities@2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + dev: false - /map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 dev: true - /md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 + '@babel/code-frame': 7.22.13 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + /parse-numeric-range@1.3.0: + resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} dev: false - /media-query-parser@2.0.2: - resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} + /parse5-htmlparser2-tree-adapter@7.0.0: + resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} dependencies: - '@babel/runtime': 7.22.3 + domhandler: 5.0.3 + parse5: 7.1.2 dev: false - /meow@6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} - engines: {node: '>=8'} - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 2.5.0 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.13.1 - yargs-parser: 18.1.3 - dev: true + /parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + dev: false - /meow@8.1.2: - resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} - engines: {node: '>=10'} + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 - dev: true - - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true + entities: 4.5.0 + dev: false - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: false - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + /pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: - braces: 3.0.2 - picomatch: 2.3.1 + no-case: 3.0.4 + tslib: 2.5.2 + dev: false - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + dev: false - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} - /mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - dev: true + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} + /path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} dev: true - /mimic-response@1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - dev: false + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true + /path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + dev: false - /minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + /path-to-regexp@1.8.0: + resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} + dependencies: + isarray: 0.0.1 dev: false - /minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + /path-to-regexp@2.2.1: + resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} dev: false - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + /path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} dependencies: - brace-expansion: 1.1.11 + pify: 3.0.0 + dev: true - /minimatch@5.0.1: - resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true - /minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} + /pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - dev: true + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: false - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + /pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + dev: false - /mixme@0.5.9: - resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} - engines: {node: '>= 8.0.0'} - dev: true + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - /mocha@10.2.0: - resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==} - engines: {node: '>= 14.0.0'} + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} hasBin: true - dependencies: - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.4(supports-color@8.1.1) - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 7.2.0 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 5.0.1 - ms: 2.1.3 - nanoid: 3.3.3 - serialize-javascript: 6.0.0 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 6.2.1 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 dev: true - /motion@10.16.2: - resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} - dependencies: - '@motionone/animation': 10.15.1 - '@motionone/dom': 10.16.2 - '@motionone/svelte': 10.16.2 - '@motionone/types': 10.15.1 - '@motionone/utils': 10.15.1 - '@motionone/vue': 10.16.2 + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + /pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: true + + /pify@5.0.0: + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} dev: false - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + /pinkie-promise@2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + dependencies: + pinkie: 2.0.4 - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + /pinkie@2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} - /multiformats@9.9.0: - resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + /pino-abstract-transport@0.5.0: + resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + dependencies: + duplexify: 4.1.2 + split2: 4.2.0 dev: false - /mute-stream@1.0.0: - resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + /pino-std-serializers@4.0.0: + resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} dev: false - /nanoid@3.3.3: - resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - - /nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + /pino@7.11.0: + resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} hasBin: true + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.2.0 + on-exit-leak-free: 0.2.0 + pino-abstract-transport: 0.5.0 + pino-std-serializers: 4.0.0 + process-warning: 1.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.1.0 + safe-stable-stringify: 2.4.3 + sonic-boom: 2.8.0 + thread-stream: 0.15.2 dev: false - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + /pirates@4.0.5: + resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + engines: {node: '>= 6'} dev: true - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + /pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + dependencies: + find-up: 3.0.0 + dev: false - /next@13.1.6(@babel/core@7.22.15)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==} - engines: {node: '>=14.6.0'} - hasBin: true + /pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + dev: false + + /postcss-calc@8.2.4(postcss@8.4.14): + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} peerDependencies: - fibers: '>= 3.1.0' - node-sass: ^6.0.0 || ^7.0.0 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - fibers: - optional: true - node-sass: - optional: true - sass: - optional: true + postcss: ^8.2.2 dependencies: - '@next/env': 13.1.6 - '@swc/helpers': 0.4.14 - caniuse-lite: 1.0.30001527 postcss: 8.4.14 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.22.15)(react@18.2.0) - optionalDependencies: - '@next/swc-android-arm-eabi': 13.1.6 - '@next/swc-android-arm64': 13.1.6 - '@next/swc-darwin-arm64': 13.1.6 - '@next/swc-darwin-x64': 13.1.6 - '@next/swc-freebsd-x64': 13.1.6 - '@next/swc-linux-arm-gnueabihf': 13.1.6 - '@next/swc-linux-arm64-gnu': 13.1.6 - '@next/swc-linux-arm64-musl': 13.1.6 - '@next/swc-linux-x64-gnu': 13.1.6 - '@next/swc-linux-x64-musl': 13.1.6 - '@next/swc-win32-arm64-msvc': 13.1.6 - '@next/swc-win32-ia32-msvc': 13.1.6 - '@next/swc-win32-x64-msvc': 13.1.6 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 dev: false - /node-addon-api@2.0.2: - resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + /postcss-calc@8.2.4(postcss@8.4.29): + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 dev: false - /node-fetch@2.6.11: - resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} - engines: {node: 4.x || >=6.0.0} + /postcss-colormin@5.3.1(postcss@8.4.14): + resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} + engines: {node: ^10 || ^12 || >=14.0} peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + postcss: ^8.2.15 dependencies: - whatwg-url: 5.0.0 - - /node-gyp-build@4.6.0: - resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} - hasBin: true + browserslist: 4.21.10 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 dev: false - /node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: true - - /node-releases@2.0.13: - resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - - /normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + /postcss-colormin@5.3.1(postcss@8.4.29): + resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.2 - semver: 5.7.1 - validate-npm-package-license: 3.0.4 - dev: true + browserslist: 4.21.10 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false - /normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} + /postcss-convert-values@5.1.3(postcss@8.4.14): + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.12.1 - semver: 7.5.2 - validate-npm-package-license: 3.0.4 - dev: true - - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true + browserslist: 4.21.10 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false - /normalize-url@2.0.1: - resolution: {integrity: sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==} - engines: {node: '>=4'} + /postcss-convert-values@5.1.3(postcss@8.4.29): + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - prepend-http: 2.0.0 - query-string: 5.1.1 - sort-keys: 2.0.0 + browserslist: 4.21.10 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 dev: false - /npm-conf@1.1.3: - resolution: {integrity: sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==} - engines: {node: '>=4'} + /postcss-discard-comments@5.1.2(postcss@8.4.14): + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - config-chain: 1.1.13 - pify: 3.0.0 + postcss: 8.4.14 dev: false - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} + /postcss-discard-comments@5.1.2(postcss@8.4.29): + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - path-key: 3.1.1 - dev: true + postcss: 8.4.29 + dev: false - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /postcss-discard-duplicates@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - path-key: 4.0.0 - dev: true - - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + postcss: 8.4.14 + dev: false - /object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + /postcss-discard-duplicates@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: false - /object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} - engines: {node: '>= 0.4'} + /postcss-discard-empty@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 + postcss: 8.4.14 + dev: false - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} + /postcss-discard-empty@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + dev: false - /object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} + /postcss-discard-overridden@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - has-symbols: 1.0.3 - object-keys: 1.1.1 + postcss: 8.4.14 + dev: false - /object.entries@1.1.6: - resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} - engines: {node: '>= 0.4'} + /postcss-discard-overridden@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + postcss: 8.4.29 + dev: false - /object.fromentries@2.0.6: - resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} - engines: {node: '>= 0.4'} + /postcss-discard-unused@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + postcss: 8.4.14 + postcss-selector-parser: 6.0.13 + dev: false - /object.hasown@1.1.2: - resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + /postcss-loader@7.3.3(postcss@8.4.14)(typescript@4.9.5)(webpack@5.88.1): + resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 dependencies: - define-properties: 1.2.0 - es-abstract: 1.21.2 + cosmiconfig: 8.3.6(typescript@4.9.5) + jiti: 1.20.0 + postcss: 8.4.14 + semver: 7.5.2 + webpack: 5.88.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - typescript + dev: false - /object.values@1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} - engines: {node: '>= 0.4'} + /postcss-merge-idents@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + cssnano-utils: 3.1.0(postcss@8.4.14) + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false - /on-exit-leak-free@0.2.0: - resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + /postcss-merge-longhand@5.1.7(postcss@8.4.14): + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1(postcss@8.4.14) dev: false - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + /postcss-merge-longhand@5.1.7(postcss@8.4.29): + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - wrappy: 1.0.2 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1(postcss@8.4.29) + dev: false - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + /postcss-merge-rules@5.1.4(postcss@8.4.14): + resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - mimic-fn: 2.1.0 + browserslist: 4.21.10 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0(postcss@8.4.14) + postcss: 8.4.14 + postcss-selector-parser: 6.0.13 + dev: false - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} + /postcss-merge-rules@5.1.4(postcss@8.4.29): + resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - mimic-fn: 4.0.0 - dev: true + browserslist: 4.21.10 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: false - /open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} + /postcss-minify-font-values@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} + /postcss-minify-font-values@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false - /ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} + /postcss-minify-gradients@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.0 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 + colord: 2.9.3 + cssnano-utils: 3.1.0(postcss@8.4.14) + postcss: 8.4.14 + postcss-value-parser: 4.2.0 dev: false - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} + /postcss-minify-gradients@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false - /outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - dev: true + /postcss-minify-params@5.1.4(postcss@8.4.14): + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + cssnano-utils: 3.1.0(postcss@8.4.14) + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false - /outdent@0.8.0: - resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==} + /postcss-minify-params@5.1.4(postcss@8.4.29): + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + cssnano-utils: 3.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 dev: false - /p-cancelable@0.4.1: - resolution: {integrity: sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==} - engines: {node: '>=4'} + /postcss-minify-selectors@5.2.1(postcss@8.4.14): + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.13 dev: false - /p-event@2.3.1: - resolution: {integrity: sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==} - engines: {node: '>=6'} + /postcss-minify-selectors@5.2.1(postcss@8.4.29): + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - p-timeout: 2.0.1 + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 dev: false - /p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} + /postcss-modules-extract-imports@3.0.0(postcss@8.4.29): + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 dependencies: - p-map: 2.1.0 - dev: true + postcss: 8.4.29 + dev: false - /p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} + /postcss-modules-local-by-default@4.0.3(postcss@8.4.29): + resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 dev: false - /p-is-promise@1.1.0: - resolution: {integrity: sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==} - engines: {node: '>=4'} + /postcss-modules-scope@3.0.0(postcss@8.4.29): + resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 dev: false - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + /postcss-modules-values@4.0.0(postcss@8.4.29): + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 dependencies: - p-try: 2.2.0 + icss-utils: 5.1.0(postcss@8.4.29) + postcss: 8.4.29 + dev: false - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + /postcss-normalize-charset@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - yocto-queue: 0.1.0 + postcss: 8.4.14 + dev: false - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + /postcss-normalize-charset@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - p-limit: 2.3.0 + postcss: 8.4.29 + dev: false - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + /postcss-normalize-display-values@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - p-limit: 3.1.0 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false - /p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - dev: true + /postcss-normalize-display-values@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false - /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} + /postcss-normalize-positions@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - aggregate-error: 3.1.0 - dev: true + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false - /p-timeout@2.0.1: - resolution: {integrity: sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==} - engines: {node: '>=4'} + /postcss-normalize-positions@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - p-finally: 1.0.0 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 dev: false - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} + /postcss-normalize-repeat-style@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + /postcss-normalize-repeat-style@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - callsites: 3.1.0 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false - /parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} + /postcss-normalize-string@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - dev: true + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + /postcss-normalize-string@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - '@babel/code-frame': 7.22.13 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: true + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} + /postcss-normalize-timing-functions@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} + /postcss-normalize-timing-functions@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false - /path-is-inside@1.0.2: - resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} - dev: true + /postcss-normalize-unicode@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + /postcss-normalize-unicode@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: true + /postcss-normalize-url@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + /postcss-normalize-url@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false - /path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} + /postcss-normalize-whitespace@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - pify: 3.0.0 - dev: true + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} + /postcss-normalize-whitespace@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false - /pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true + /postcss-ordered-values@5.1.3(postcss@8.4.14): + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 3.1.0(postcss@8.4.14) + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false - /pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} + /postcss-ordered-values@5.1.3(postcss@8.4.29): + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - create-hash: 1.2.0 - create-hmac: 1.1.7 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 + cssnano-utils: 3.1.0(postcss@8.4.29) + postcss: 8.4.29 + postcss-value-parser: 4.2.0 dev: false - /pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + /postcss-reduce-idents@5.2.0(postcss@8.4.14): + resolution: {integrity: sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 dev: false - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + /postcss-reduce-initial@5.1.2(postcss@8.4.14): + resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + caniuse-api: 3.0.0 + postcss: 8.4.14 + dev: false - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + /postcss-reduce-initial@5.1.2(postcss@8.4.29): + resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + caniuse-api: 3.0.0 + postcss: 8.4.29 + dev: false - /pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - dev: true + /postcss-reduce-transforms@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: false - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} + /postcss-reduce-transforms@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + dev: false - /pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + /postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} engines: {node: '>=4'} - - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: true - - /pify@5.0.0: - resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} - engines: {node: '>=10'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 dev: false - /pinkie-promise@2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} + /postcss-sort-media-queries@4.4.1(postcss@8.4.14): + resolution: {integrity: sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.4.16 dependencies: - pinkie: 2.0.4 + postcss: 8.4.14 + sort-css-media-queries: 2.1.0 + dev: false - /pinkie@2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} + /postcss-svgo@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + dev: false - /pino-abstract-transport@0.5.0: - resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + /postcss-svgo@5.1.0(postcss@8.4.29): + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - duplexify: 4.1.2 - split2: 4.2.0 + postcss: 8.4.29 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 dev: false - /pino-std-serializers@4.0.0: - resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + /postcss-unique-selectors@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.13 dev: false - /pino@7.11.0: - resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} - hasBin: true + /postcss-unique-selectors@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - atomic-sleep: 1.0.0 - fast-redact: 3.2.0 - on-exit-leak-free: 0.2.0 - pino-abstract-transport: 0.5.0 - pino-std-serializers: 4.0.0 - process-warning: 1.0.0 - quick-format-unescaped: 4.0.4 - real-require: 0.1.0 - safe-stable-stringify: 2.4.3 - sonic-boom: 2.8.0 - thread-stream: 0.15.2 + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 dev: false - /pirates@4.0.5: - resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} - engines: {node: '>= 6'} - dev: true + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: false - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + /postcss-zindex@5.1.0(postcss@8.4.14): + resolution: {integrity: sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - find-up: 4.1.0 - dev: true - - /pngjs@5.0.0: - resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} - engines: {node: '>=10.13.0'} + postcss: 8.4.14 dev: false /postcss@8.4.14: @@ -10548,6 +14445,15 @@ packages: source-map-js: 1.0.2 dev: false + /postcss@8.4.29: + resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + /preact@10.14.1: resolution: {integrity: sha512-4XDSnUisk3YFBb3p9WeKeH1mKoxdFUsaXcvxs9wlpYR1wax/TWJVqhwmIWbByX0h7jMEJH6Zc5J6jqc58FKaNQ==} dev: false @@ -10584,6 +14490,13 @@ packages: hasBin: true dev: true + /pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + dependencies: + lodash: 4.17.21 + renderkid: 3.0.0 + dev: false + /pretty-format@29.5.0: resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10593,6 +14506,24 @@ packages: react-is: 18.2.0 dev: true + /pretty-time@1.1.0: + resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} + engines: {node: '>=4'} + dev: false + + /prism-react-renderer@1.3.5(react@17.0.2): + resolution: {integrity: sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==} + peerDependencies: + react: '>=0.14.9' + dependencies: + react: 17.0.2 + dev: false + + /prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + dev: false + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: false @@ -10601,13 +14532,18 @@ packages: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} dev: false + /promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + dependencies: + asap: 2.0.6 + dev: false + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - dev: true /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -10616,6 +14552,12 @@ packages: object-assign: 4.1.1 react-is: 16.13.1 + /property-information@5.6.0: + resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} + dependencies: + xtend: 4.0.2 + dev: false + /proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: false @@ -10640,6 +14582,14 @@ packages: long: 4.0.0 dev: false + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + dev: false + /proxy-compare@2.5.1: resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} dev: false @@ -10652,10 +14602,32 @@ packages: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: false + + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: false + /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} + /pupa@2.1.1: + resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} + engines: {node: '>=8'} + dependencies: + escape-goat: 2.1.1 + dev: false + + /pure-color@1.3.0: + resolution: {integrity: sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==} + dev: false + /pure-rand@6.0.2: resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} dev: true @@ -10687,6 +14659,13 @@ packages: yargs: 15.4.1 dev: false + /qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: false + /qs@6.11.2: resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} engines: {node: '>=0.6'} @@ -10726,6 +14705,12 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + /queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + dependencies: + inherits: 2.0.4 + dev: false + /quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} dev: false @@ -10740,6 +14725,97 @@ packages: dependencies: safe-buffer: 5.2.1 + /range-parser@1.2.0: + resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} + engines: {node: '>= 0.6'} + dev: false + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: false + + /raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: false + + /rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + dev: false + + /react-base16-styling@0.6.0: + resolution: {integrity: sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==} + dependencies: + base16: 1.0.0 + lodash.curry: 4.1.1 + lodash.flow: 3.5.0 + pure-color: 1.3.0 + dev: false + + /react-dev-utils@12.0.1(eslint@8.48.0)(typescript@4.9.5)(webpack@5.88.1): + resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=2.7' + webpack: '>=4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/code-frame': 7.22.13 + address: 1.2.2 + browserslist: 4.21.10 + chalk: 4.1.2 + cross-spawn: 7.0.3 + detect-port-alt: 1.1.6 + escape-string-regexp: 4.0.0 + filesize: 8.0.7 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@4.9.5)(webpack@5.88.1) + global-modules: 2.0.0 + globby: 11.1.0 + gzip-size: 6.0.0 + immer: 9.0.21 + is-root: 2.1.0 + loader-utils: 3.2.1 + open: 8.4.2 + pkg-up: 3.1.0 + prompts: 2.4.2 + react-error-overlay: 6.0.11 + recursive-readdir: 2.2.3 + shell-quote: 1.8.1 + strip-ansi: 6.0.1 + text-table: 0.2.0 + typescript: 4.9.5 + webpack: 5.88.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + dev: false + + /react-dom@17.0.2(react@17.0.2): + resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} + peerDependencies: + react: 17.0.2 + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react: 17.0.2 + scheduler: 0.20.2 + /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: @@ -10750,6 +14826,27 @@ packages: scheduler: 0.23.0 dev: false + /react-error-overlay@6.0.11: + resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} + dev: false + + /react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + + /react-helmet-async@1.3.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.22.3 + invariant: 2.2.4 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-fast-compare: 3.2.2 + shallowequal: 1.1.0 + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -10757,6 +14854,39 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true + /react-json-view@1.21.3(@types/react@18.2.12)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==} + peerDependencies: + react: ^17.0.0 || ^16.3.0 || ^15.5.4 + react-dom: ^17.0.0 || ^16.3.0 || ^15.5.4 + dependencies: + flux: 4.0.4(react@17.0.2) + react: 17.0.2 + react-base16-styling: 0.6.0 + react-dom: 17.0.2(react@17.0.2) + react-lifecycles-compat: 3.0.4 + react-textarea-autosize: 8.5.3(@types/react@18.2.12)(react@17.0.2) + transitivePeerDependencies: + - '@types/react' + - encoding + dev: false + + /react-lifecycles-compat@3.0.4: + resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + dev: false + + /react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@5.5.2)(webpack@5.88.1): + resolution: {integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==} + engines: {node: '>=10.13.0'} + peerDependencies: + react-loadable: '*' + webpack: '>=4.41.1 || 5.x' + dependencies: + '@babel/runtime': 7.22.3 + react-loadable: /@docusaurus/react-loadable@5.5.2(react@17.0.2) + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + /react-remove-scroll-bar@2.3.4(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} @@ -10792,6 +14922,49 @@ packages: use-sidecar: 1.1.2(@types/react@18.2.12)(react@18.2.0) dev: false + /react-router-config@5.1.1(react-router@5.3.4)(react@17.0.2): + resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} + peerDependencies: + react: '>=15' + react-router: '>=5' + dependencies: + '@babel/runtime': 7.22.3 + react: 17.0.2 + react-router: 5.3.4(react@17.0.2) + dev: false + + /react-router-dom@5.3.4(react@17.0.2): + resolution: {integrity: sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==} + peerDependencies: + react: '>=15' + dependencies: + '@babel/runtime': 7.22.3 + history: 4.10.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 17.0.2 + react-router: 5.3.4(react@17.0.2) + tiny-invariant: 1.3.1 + tiny-warning: 1.0.3 + dev: false + + /react-router@5.3.4(react@17.0.2): + resolution: {integrity: sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==} + peerDependencies: + react: '>=15' + dependencies: + '@babel/runtime': 7.22.3 + history: 4.10.1 + hoist-non-react-statics: 3.3.2 + loose-envify: 1.4.0 + path-to-regexp: 1.8.0 + prop-types: 15.8.1 + react: 17.0.2 + react-is: 16.13.1 + tiny-invariant: 1.3.1 + tiny-warning: 1.0.3 + dev: false + /react-style-singleton@2.2.1(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} @@ -10809,6 +14982,27 @@ packages: tslib: 2.5.2 dev: false + /react-textarea-autosize@8.5.3(@types/react@18.2.12)(react@17.0.2): + resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==} + engines: {node: '>=10'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.22.3 + react: 17.0.2 + use-composed-ref: 1.3.0(react@17.0.2) + use-latest: 1.2.1(@types/react@18.2.12)(react@17.0.2) + transitivePeerDependencies: + - '@types/react' + dev: false + + /react@17.0.2: + resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} @@ -10879,7 +15073,10 @@ packages: engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - dev: true + + /reading-time@1.5.0: + resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} + dev: false /readonly-date@1.0.0: resolution: {integrity: sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==} @@ -10902,7 +15099,13 @@ packages: engines: {node: '>= 10.13.0'} dependencies: resolve: 1.22.2 - dev: true + + /recursive-readdir@2.2.3: + resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} + engines: {node: '>=6.0.0'} + dependencies: + minimatch: 3.1.2 + dev: false /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} @@ -10921,20 +15124,21 @@ packages: engines: {node: '>=4'} dependencies: regenerate: 1.4.2 - dev: true /regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - dev: true /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + dev: false + /regenerator-transform@0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: '@babel/runtime': 7.22.3 - dev: true /regexp.prototype.flags@1.5.0: resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} @@ -10954,14 +15158,100 @@ packages: regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 - dev: true + + /registry-auth-token@4.2.2: + resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} + engines: {node: '>=6.0.0'} + dependencies: + rc: 1.2.8 + dev: false + + /registry-url@5.1.0: + resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} + engines: {node: '>=8'} + dependencies: + rc: 1.2.8 + dev: false /regjsparser@0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true dependencies: jsesc: 0.5.0 - dev: true + + /relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + dev: false + + /remark-emoji@2.2.0: + resolution: {integrity: sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==} + dependencies: + emoticon: 3.2.0 + node-emoji: 1.11.0 + unist-util-visit: 2.0.3 + dev: false + + /remark-footnotes@2.0.0: + resolution: {integrity: sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==} + dev: false + + /remark-mdx@1.6.22: + resolution: {integrity: sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==} + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-proposal-object-rest-spread': 7.12.1(@babel/core@7.12.9) + '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9) + '@mdx-js/util': 1.6.22 + is-alphabetical: 1.0.4 + remark-parse: 8.0.3 + unified: 9.2.0 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-parse@8.0.3: + resolution: {integrity: sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==} + dependencies: + ccount: 1.1.0 + collapse-white-space: 1.0.6 + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + is-whitespace-character: 1.0.4 + is-word-character: 1.0.4 + markdown-escapes: 1.0.4 + parse-entities: 2.0.0 + repeat-string: 1.6.1 + state-toggle: 1.0.3 + trim: 0.0.1 + trim-trailing-lines: 1.1.4 + unherit: 1.1.3 + unist-util-remove-position: 2.0.1 + vfile-location: 3.2.0 + xtend: 4.0.2 + dev: false + + /remark-squeeze-paragraphs@4.0.0: + resolution: {integrity: sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==} + dependencies: + mdast-squeeze-paragraphs: 4.0.0 + dev: false + + /renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 6.0.1 + dev: false + + /repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + dev: false /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} @@ -10970,17 +15260,23 @@ packages: /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - dev: true + + /require-like@0.1.2: + resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} + dev: false /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: false + /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 - dev: true /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} @@ -10989,7 +15285,6 @@ packages: /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - dev: true /resolve-global@1.0.0: resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} @@ -10998,6 +15293,10 @@ packages: global-dirs: 0.1.1 dev: true + /resolve-pathname@3.0.0: + resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + dev: false + /resolve.exports@2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} @@ -11032,6 +15331,11 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: false + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -11127,6 +15431,20 @@ packages: utf-8-validate: 5.0.10 dev: false + /rtl-detect@1.0.4: + resolution: {integrity: sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==} + dev: false + + /rtlcss@3.5.0: + resolution: {integrity: sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==} + hasBin: true + dependencies: + find-up: 5.0.0 + picocolors: 1.0.0 + postcss: 8.4.14 + strip-json-comments: 3.1.1 + dev: false + /run-async@3.0.0: resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} engines: {node: '>=0.12.0'} @@ -11148,7 +15466,6 @@ packages: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: tslib: 2.5.2 - dev: true /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -11180,12 +15497,40 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + /sax@1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + dev: false + + /scheduler@0.20.2: + resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 dev: false + /schema-utils@2.7.0: + resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} + engines: {node: '>= 8.9.0'} + dependencies: + '@types/json-schema': 7.0.12 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: false + + /schema-utils@2.7.1: + resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} + engines: {node: '>= 8.9.0'} + dependencies: + '@types/json-schema': 7.0.12 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: false + /schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} @@ -11193,7 +15538,6 @@ packages: '@types/json-schema': 7.0.12 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true /schema-utils@4.2.0: resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} @@ -11203,12 +15547,15 @@ packages: ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) ajv-keywords: 5.1.0(ajv@8.12.0) - dev: true /scrypt-js@3.0.1: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} dev: false + /search-insights@2.8.2: + resolution: {integrity: sha512-PxA9M5Q2bpBelVvJ3oDZR8nuY00Z6qwOxL53wNpgzV28M/D6u9WUbImDckjLSILBF8F1hn/mgyuUaOPtjow4Qw==} + dev: false + /secp256k1@4.0.3: resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} engines: {node: '>=10.0.0'} @@ -11219,6 +15566,14 @@ packages: node-gyp-build: 4.6.0 dev: false + /section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + dev: false + /seek-bzip@1.0.6: resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==} hasBin: true @@ -11226,10 +15581,27 @@ packages: commander: 2.20.3 dev: false + /select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + dev: false + + /selfsigned@2.1.1: + resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==} + engines: {node: '>=10'} + dependencies: + node-forge: 1.3.1 + dev: false + + /semver-diff@3.1.1: + resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.1 + dev: false + /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true - dev: true /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} @@ -11242,6 +15614,27 @@ packages: dependencies: lru-cache: 6.0.0 + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: false + /serialize-javascript@4.0.0: resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} dependencies: @@ -11258,7 +15651,46 @@ packages: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} dependencies: randombytes: 2.1.0 - dev: true + + /serve-handler@6.1.5: + resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==} + dependencies: + bytes: 3.0.0 + content-disposition: 0.5.2 + fast-url-parser: 1.1.3 + mime-types: 2.1.18 + minimatch: 3.1.2 + path-is-inside: 1.0.2 + path-to-regexp: 2.2.1 + range-parser: 1.2.0 + dev: false + + /serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + dev: false + + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + dev: false /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -11267,6 +15699,14 @@ packages: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} dev: false + /setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + dev: false + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: false + /sha.js@2.4.11: resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} hasBin: true @@ -11286,7 +15726,9 @@ packages: engines: {node: '>=8'} dependencies: kind-of: 6.0.3 - dev: true + + /shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} @@ -11310,6 +15752,10 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: false + /shelljs@0.8.5: resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} engines: {node: '>=4'} @@ -11344,9 +15790,28 @@ packages: engines: {node: '>=14'} dev: false + /sirv@2.0.3: + resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.23 + mrmime: 1.0.1 + totalist: 3.0.1 + dev: false + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: true + + /sitemap@7.1.1: + resolution: {integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==} + engines: {node: '>=12.0.0', npm: '>=5.6.0'} + hasBin: true + dependencies: + '@types/node': 17.0.45 + '@types/sax': 1.2.4 + arg: 5.0.2 + sax: 1.2.4 + dev: false /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} @@ -11395,12 +15860,25 @@ packages: yargs: 15.4.1 dev: true + /sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + dev: false + /sonic-boom@2.8.0: resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} dependencies: atomic-sleep: 1.0.0 dev: false + /sort-css-media-queries@2.1.0: + resolution: {integrity: sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==} + engines: {node: '>= 6.3.0'} + dev: false + /sort-keys-length@1.0.1: resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} engines: {node: '>=0.10.0'} @@ -11439,7 +15917,11 @@ packages: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true + + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: false /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} @@ -11450,6 +15932,10 @@ packages: deprecated: Please use @jridgewell/sourcemap-codec instead dev: true + /space-separated-tokens@1.1.5: + resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} + dev: false + /spawndamnit@2.0.0: resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} dependencies: @@ -11479,6 +15965,32 @@ packages: resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} dev: true + /spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + dev: false + + /spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} @@ -11497,7 +16009,11 @@ packages: /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true + + /stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: false /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} @@ -11506,6 +16022,24 @@ packages: escape-string-regexp: 2.0.0 dev: true + /state-toggle@1.0.3: + resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} + dev: false + + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: false + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: false + + /std-env@3.4.3: + resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} + dev: false + /stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} @@ -11571,7 +16105,6 @@ packages: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - dev: true /string.prototype.matchall@4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} @@ -11618,6 +16151,15 @@ packages: dependencies: safe-buffer: 5.2.1 + /stringify-object@3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + dev: false + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -11629,7 +16171,11 @@ packages: engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 - dev: true + + /strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + dev: false /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} @@ -11649,7 +16195,6 @@ packages: /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - dev: true /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} @@ -11670,6 +16215,11 @@ packages: min-indent: 1.0.1 dev: true + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: false + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -11685,6 +16235,12 @@ packages: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: false + /style-to-object@0.3.0: + resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} + dependencies: + inline-style-parser: 0.1.1 + dev: false + /styled-jsx@5.1.1(@babel/core@7.22.15)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} @@ -11703,6 +16259,28 @@ packages: react: 18.2.0 dev: false + /stylehacks@5.1.1(postcss@8.4.14): + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.14 + postcss-selector-parser: 6.0.13 + dev: false + + /stylehacks@5.1.1(postcss@8.4.29): + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.10 + postcss: 8.4.29 + postcss-selector-parser: 6.0.13 + dev: false + /superstruct@0.14.2: resolution: {integrity: sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==} dev: false @@ -11734,6 +16312,24 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + /svg-parser@2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + dev: false + + /svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + dev: false + /symbol-observable@2.0.3: resolution: {integrity: sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==} engines: {node: '>=0.10'} @@ -11746,6 +16342,11 @@ packages: '@pkgr/utils': 2.3.1 tslib: 2.5.2 + /tapable@1.1.3: + resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} + engines: {node: '>=6'} + dev: false + /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -11790,7 +16391,6 @@ packages: serialize-javascript: 6.0.1 terser: 5.19.2 webpack: 5.88.1(webpack-cli@5.1.4) - dev: true /terser@5.19.2: resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} @@ -11801,7 +16401,6 @@ packages: acorn: 8.10.0 commander: 2.20.3 source-map-support: 0.5.21 - dev: true /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} @@ -11839,6 +16438,10 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + /thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + dev: false + /timed-out@4.0.1: resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} engines: {node: '>=0.10.0'} @@ -11850,6 +16453,14 @@ packages: globalyzer: 0.1.0 globrex: 0.1.2 + /tiny-invariant@1.3.1: + resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} + dev: false + + /tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + dev: false + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -11868,6 +16479,11 @@ packages: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} + /to-readable-stream@1.0.0: + resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} + engines: {node: '>=6'} + dev: false + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -11878,6 +16494,16 @@ packages: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} dev: false + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: false + + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: false + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -11893,6 +16519,19 @@ packages: escape-string-regexp: 1.0.5 dev: false + /trim-trailing-lines@1.1.4: + resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} + dev: false + + /trim@0.0.1: + resolution: {integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==} + deprecated: Use String.prototype.trim() instead + dev: false + + /trough@1.0.5: + resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} + dev: false + /ts-jest@29.1.0(@babel/core@7.22.15)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -12055,6 +16694,19 @@ packages: engines: {node: '>=8'} dev: true + /type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + dev: false + + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + dev: false + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: @@ -12079,6 +16731,10 @@ packages: hasBin: true dev: true + /ua-parser-js@1.0.36: + resolution: {integrity: sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw==} + dev: false + /uglify-js@3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} engines: {node: '>=0.8.0'} @@ -12108,10 +16764,16 @@ packages: through: 2.3.8 dev: false + /unherit@1.1.3: + resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} + dependencies: + inherits: 2.0.4 + xtend: 4.0.2 + dev: false + /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} - dev: true /unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} @@ -12119,17 +16781,94 @@ packages: dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 - dev: true /unicode-match-property-value-ecmascript@2.1.0: resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} engines: {node: '>=4'} - dev: true /unicode-property-aliases-ecmascript@2.1.0: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} - dev: true + + /unified@9.2.0: + resolution: {integrity: sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==} + dependencies: + '@types/unist': 2.0.8 + bail: 1.0.5 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 2.1.0 + trough: 1.0.5 + vfile: 4.2.1 + dev: false + + /unified@9.2.2: + resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} + dependencies: + '@types/unist': 2.0.8 + bail: 1.0.5 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 2.1.0 + trough: 1.0.5 + vfile: 4.2.1 + dev: false + + /unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + dependencies: + crypto-random-string: 2.0.0 + dev: false + + /unist-builder@2.0.3: + resolution: {integrity: sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==} + dev: false + + /unist-util-generated@1.1.6: + resolution: {integrity: sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==} + dev: false + + /unist-util-is@4.1.0: + resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} + dev: false + + /unist-util-position@3.1.0: + resolution: {integrity: sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==} + dev: false + + /unist-util-remove-position@2.0.1: + resolution: {integrity: sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==} + dependencies: + unist-util-visit: 2.0.3 + dev: false + + /unist-util-remove@2.1.0: + resolution: {integrity: sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==} + dependencies: + unist-util-is: 4.1.0 + dev: false + + /unist-util-stringify-position@2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + dependencies: + '@types/unist': 2.0.8 + dev: false + + /unist-util-visit-parents@3.1.1: + resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} + dependencies: + '@types/unist': 2.0.8 + unist-util-is: 4.1.0 + dev: false + + /unist-util-visit@2.0.3: + resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} + dependencies: + '@types/unist': 2.0.8 + unist-util-is: 4.1.0 + unist-util-visit-parents: 3.1.1 + dev: false /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} @@ -12140,6 +16879,11 @@ packages: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: false + /update-browserslist-db@1.0.11(browserslist@4.21.10): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true @@ -12150,11 +16894,48 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 + /update-notifier@5.1.0: + resolution: {integrity: sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==} + engines: {node: '>=10'} + dependencies: + boxen: 5.1.2 + chalk: 4.1.2 + configstore: 5.0.1 + has-yarn: 2.1.0 + import-lazy: 2.1.0 + is-ci: 2.0.0 + is-installed-globally: 0.4.0 + is-npm: 5.0.0 + is-yarn-global: 0.3.0 + latest-version: 5.1.0 + pupa: 2.1.1 + semver: 7.5.2 + semver-diff: 3.1.1 + xdg-basedir: 4.0.0 + dev: false + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 + /url-loader@4.1.1(file-loader@6.2.0)(webpack@5.88.1): + resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + file-loader: '*' + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + file-loader: + optional: true + dependencies: + file-loader: 6.2.0(webpack@5.88.1) + loader-utils: 2.0.4 + mime-types: 2.1.35 + schema-utils: 3.3.0 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + /url-parse-lax@3.0.0: resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} engines: {node: '>=4'} @@ -12182,6 +16963,41 @@ packages: tslib: 2.5.2 dev: false + /use-composed-ref@1.3.0(react@17.0.2): + resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 17.0.2 + dev: false + + /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.12)(react@17.0.2): + resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.12 + react: 17.0.2 + dev: false + + /use-latest@1.2.1(@types/react@18.2.12)(react@17.0.2): + resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.12 + react: 17.0.2 + use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.12)(react@17.0.2) + dev: false + /use-sidecar@1.1.2(@types/react@18.2.12)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} @@ -12198,6 +17014,14 @@ packages: tslib: 2.5.2 dev: false + /use-sync-external-store@1.2.0(react@17.0.2): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 17.0.2 + dev: false + /use-sync-external-store@1.2.0(react@18.2.0): resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: @@ -12227,6 +17051,19 @@ packages: which-typed-array: 1.1.9 dev: false + /utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + dev: false + + /utility-types@3.10.0: + resolution: {integrity: sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==} + engines: {node: '>= 4'} + + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: false + /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -12273,11 +17110,35 @@ packages: use-sync-external-store: 1.2.0(react@18.2.0) dev: false + /value-equal@1.0.1: + resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} + dev: false + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} dev: false + /vfile-location@3.2.0: + resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==} + dev: false + + /vfile-message@2.0.4: + resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} + dependencies: + '@types/unist': 2.0.8 + unist-util-stringify-position: 2.0.3 + dev: false + + /vfile@4.2.1: + resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} + dependencies: + '@types/unist': 2.0.8 + is-buffer: 2.0.5 + unist-util-stringify-position: 2.0.3 + vfile-message: 2.0.4 + dev: false + /viem@1.0.6(typescript@4.9.5): resolution: {integrity: sha512-NOVDREj8bWHajuP5Nw6edd0v3auuGWvLHGScmo9OOt1l7g3f1xMQxPA6JlhNmWXzoHjzzxt/5SorBn2DQ6N6Sg==} dependencies: @@ -12330,6 +17191,20 @@ packages: - zod dev: false + /wait-on@6.0.1: + resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} + engines: {node: '>=10.0.0'} + hasBin: true + dependencies: + axios: 0.25.0 + joi: 17.10.2 + lodash: 4.17.21 + minimist: 1.2.8 + rxjs: 7.8.1 + transitivePeerDependencies: + - debug + dev: false + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: @@ -12342,16 +17217,52 @@ packages: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - dev: true + + /wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + dependencies: + minimalistic-assert: 1.0.1 + dev: false /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 + /web-namespaces@1.1.4: + resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==} + dev: false + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + /webpack-bundle-analyzer@4.9.1: + resolution: {integrity: sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==} + engines: {node: '>= 10.13.0'} + hasBin: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + acorn: 8.10.0 + acorn-walk: 8.2.0 + commander: 7.2.0 + escape-string-regexp: 4.0.0 + gzip-size: 6.0.0 + is-plain-object: 5.0.0 + lodash.debounce: 4.0.8 + lodash.escape: 4.0.1 + lodash.flatten: 4.4.0 + lodash.invokemap: 4.6.0 + lodash.pullall: 4.2.0 + lodash.uniqby: 4.7.0 + opener: 1.5.2 + picocolors: 1.0.0 + sirv: 2.0.3 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + /webpack-cli@5.1.4(webpack@5.88.1): resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} engines: {node: '>=14.15.0'} @@ -12383,7 +17294,71 @@ packages: rechoir: 0.8.0 webpack: 5.88.1(webpack-cli@5.1.4) webpack-merge: 5.9.0 - dev: true + + /webpack-dev-middleware@5.3.3(webpack@5.88.1): + resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.2.0 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + + /webpack-dev-server@4.15.1(webpack@5.88.1): + resolution: {integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==} + engines: {node: '>= 12.13.0'} + hasBin: true + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + dependencies: + '@types/bonjour': 3.5.11 + '@types/connect-history-api-fallback': 1.5.1 + '@types/express': 4.17.17 + '@types/serve-index': 1.9.1 + '@types/serve-static': 1.15.2 + '@types/sockjs': 0.3.33 + '@types/ws': 8.5.5 + ansi-html-community: 0.0.8 + bonjour-service: 1.1.1 + chokidar: 3.5.3 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.18.2 + graceful-fs: 4.2.11 + html-entities: 2.4.0 + http-proxy-middleware: 2.0.6(@types/express@4.17.17) + ipaddr.js: 2.1.0 + launch-editor: 2.6.0 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.2.0 + selfsigned: 2.1.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack: 5.88.1(webpack-cli@5.1.4) + webpack-dev-middleware: 5.3.3(webpack@5.88.1) + ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: false /webpack-merge@5.9.0: resolution: {integrity: sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==} @@ -12391,12 +17366,10 @@ packages: dependencies: clone-deep: 4.0.1 wildcard: 2.0.1 - dev: true /webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - dev: true /webpack@5.88.1(webpack-cli@5.1.4): resolution: {integrity: sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==} @@ -12437,7 +17410,33 @@ packages: - '@swc/core' - esbuild - uglify-js - dev: true + + /webpackbar@5.0.2(webpack@5.88.1): + resolution: {integrity: sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==} + engines: {node: '>=12'} + peerDependencies: + webpack: 3 || 4 || 5 + dependencies: + chalk: 4.1.2 + consola: 2.15.3 + pretty-time: 1.1.0 + std-env: 3.4.3 + webpack: 5.88.1(webpack-cli@5.1.4) + dev: false + + /websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + dependencies: + http-parser-js: 0.5.8 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + dev: false + + /websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + dev: false /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -12489,7 +17488,6 @@ packages: hasBin: true dependencies: isexe: 2.0.0 - dev: true /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -12498,9 +17496,22 @@ packages: dependencies: isexe: 2.0.0 + /widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + dependencies: + string-width: 4.2.3 + dev: false + + /widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + dev: false + /wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - dev: true /wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} @@ -12525,11 +17536,28 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: false /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + /write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + dev: false + /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -12593,6 +17621,18 @@ packages: utf-8-validate: 5.0.10 dev: false + /xdg-basedir@4.0.0: + resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} + engines: {node: '>=8'} + dev: false + + /xml-js@1.6.11: + resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} + hasBin: true + dependencies: + sax: 1.2.4 + dev: false + /xstream@11.14.0: resolution: {integrity: sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==} dependencies: @@ -12626,7 +17666,6 @@ packages: /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - dev: true /yaml@2.3.1: resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} @@ -12738,3 +17777,7 @@ packages: react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) dev: false + + /zwitch@1.0.5: + resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} + dev: false diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c9494909..0de6cbe0 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,4 @@ packages: - 'examples/*' - 'packages/*' + - 'doc-site' From b4b31d43f7bcfa95a2260b62b82fec6f5a30045d Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Tue, 26 Sep 2023 11:39:36 +0800 Subject: [PATCH 263/433] Alpha (#354) * feat: add offchainauth method (#64) * feat: Add offchainauth method * feat: Compatiable old get approval method * Create ten-suits-crash.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> Co-authored-by: rrr523 * chore: [ci] release (alpha) (#66) Co-authored-by: github-actions[bot] * feat: Add Sp params (#67) * feat: Optimize get approval types and add throw error (#70) * feat: Optimize get approval types and add throw error * Create fluffy-snails-explain.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#68) Co-authored-by: github-actions[bot] * chore: Update example without greenfield-cosmos-types (#71) * fix: Return Promise (#72) * fix: Return Promise * Create strong-snails-count.md * chore: [ci] release (alpha) (#73) Co-authored-by: github-actions[bot] * fix: Create Group message (#74) * fix: Create Group message * Create young-bears-scream.md * feat: Add Storage Params API (#76) * chore: [ci] release (alpha) (#75) Co-authored-by: github-actions[bot] * Chore/group example (#77) * feat: Group API * chore: Group and Mirror example * chore: [ci] release (alpha) (#78) Co-authored-by: github-actions[bot] * chore: Update example (#79) * feat: Add query param to ListObjects API for display folder. (#80) * feat: Add query params to ListObjects API for folder * Create clean-dogs-joke.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/group (#82) * chore: Update Example * feat: Add some group API * Create sweet-feet-hide.md * chore: [ci] release (alpha) (#81) Co-authored-by: github-actions[bot] * Update objectt.ts (#83) * Update objectt.ts add missing resp params * Create cold-suns-accept.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/policy (#86) * feat: Policy API * fix: Object API name * Create pretty-bulldogs-notice.md * feat: Migrate out zkbas-js-sdk and upate the sign msg format (#85) * feat: Migrate out zkbas-js-sdk and upate the sign msg format * Create fluffy-pumas-yawn.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#84) Co-authored-by: github-actions[bot] * fix: Head Group (#96) * fix: Head Group * Create cyan-ties-cross.md * feat: Multi Send Txs (#97) * feat: Multi Send Txs * Create lovely-knives-smile.md * chore: [ci] release (alpha) (#98) Co-authored-by: github-actions[bot] * feat: Allow to have sp auth fail (#101) * feat: Allow to have sp auth fail * fix: Replace endpoint with address when auth failed * Create tidy-dodos-care.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: TS lib (#104) * feat: Sync cosmos types (#106) * chore: [ci] release (alpha) (#102) Co-authored-by: github-actions[bot] * chore: Use rainbowkit simply wallet of example (#107) * Feat/update group (#108) * feat: Update group extra api * chore: Test group api * Create quiet-planets-shop.md * chore: [ci] release (alpha) (#109) Co-authored-by: github-actions[bot] * Feat/sp listgroup (#110) * feat: Add sp.listGroup API * chore: Update Example * chore: [ci] release (alpha) (#111) Co-authored-by: github-actions[bot] * chore: Update Example (#112) * chore: Update Examples (#114) * chore(dep): Add cross-env * chore(dep): Npm script * chore: Pnpm engines * chore: Codesandbox Example (#115) * chore(docs): Update stackblitz url (#116) * refactor: CreateFoler API params (#119) * chore: [ci] release (alpha) (#120) Co-authored-by: github-actions[bot] * feat: TimeStamp format * chore: [ci] release (alpha) (#121) Co-authored-by: github-actions[bot] * Refactor/policy (#122) * refactor: Bucket policy * refactor: Bucket policy * chore: [ci] release (alpha) (#123) Co-authored-by: github-actions[bot] * chore(example): BucketPolicy (#127) * Chore/update policy example (#128) * chore(example): BucketPolicy * chore(example): BucketPolicy * Feat/gashub (#129) * feat: Add gas hub API * refactor: TypeUrl as constants * chore: [ci] release (alpha) (#130) Co-authored-by: github-actions[bot] * feat: Export queryClient (#131) * feat: Export queryClient * Create calm-birds-sleep.md * Update README.md * fix: Compatiable net error (#133) * fix: Compatiable net error * Create old-roses-play.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#132) Co-authored-by: github-actions[bot] * Test/test case (#134) * feat: Isomorphic fetch * test: Uint test and e2e test * feat: Sync Types (#136) * feat: Sync Types * Create weak-hounds-sell.md * chore: [ci] release (alpha) (#135) Co-authored-by: github-actions[bot] * Fix/sort types (#137) * feat: Sort EIP712 message field * feat: Extra field * Create happy-humans-thank.md * chore: [ci] release (alpha) (#138) Co-authored-by: github-actions[bot] * feat: Bump version (#139) * chore: [ci] release (alpha) (#140) Co-authored-by: github-actions[bot] * feat: Split approval and simulate (#141) * chore: [ci] release (alpha) (#142) Co-authored-by: github-actions[bot] * Revert "feat: Split approval and simulate" (#143) * Revert "feat: Split approval and simulate" This reverts commit 76defa7f31b7f2d4683f8ed04e8dc2786dd1ef6c. * Create dirty-parrots-hear.md * chore: [ci] release (alpha) (#144) Co-authored-by: github-actions[bot] * Chore/test case (#145) * chore(test): Remove private key from config * chore: Test CI * chore: Update rainkit version (#146) * feat: Query Lock Fee API (#147) * feat: Query Lock Fee API * Create green-avocados-jump.md * chore: [ci] release (alpha) (#148) Co-authored-by: github-actions[bot] * Update bucket.ts (#149) * Update bucket.ts throw error * Create hot-countries-begin.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#150) Co-authored-by: github-actions[bot] * fix: Return real statuscode when call metaservice (#164) * fix: Return real statuscode when call metaservice * Create kind-eyes-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#166) Co-authored-by: github-actions[bot] * feat: Upgrade types version (#167) * chore: [ci] release (alpha) (#168) Co-authored-by: github-actions[bot] * Feat/sp exit (#169) * feat: Add Virtual Group API * feat: Compatibility createBukcet and createObject API * feat: Add Migrate bucket API * Feat/batch upload (#171) * feat: Feegrant * feat: Feegrant * Create angry-horses-enjoy.md * Feat/batch upload (#174) * feat: Feegrant * feat: Feegrant * feat: Feegrant grantAllowance API * feat: CreateObject example * feat: CreateBucket example * feat: Transfer example * feat: AuthInfoBytes add feePayer and feeGranter * feat: Add Two Apis (#179) * feat: Add Two Apis * Create mean-wombats-remain.md * chore: [ci] release (alpha) (#170) Co-authored-by: github-actions[bot] * feat AuthV1 (#182) * chore: Update example * chore: Update Example * feat: V1Auth * feat: V1Auth generate * feat: V1Auth createObject Approval * Create shaggy-experts-approve.md * Feat/com new (#186) * feat: Remove GetUserBuckets API Auth * feat: Update BucketProps type * feat: Remove listObjects api auth and update response type * feat: Remove listGroup api auth * feat: Update Types * chore: [ci] release (alpha) (#183) Co-authored-by: github-actions[bot] * feat: Offchainauth timeout reduced to 2s (#187) * feat: Offchainauth timeout reduced to 2s * Create warm-planets-exercise.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#188) Co-authored-by: github-actions[bot] * Feat/auth v1 (#189) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * Create empty-pens-sing.md * chore: [ci] release (alpha) (#190) Co-authored-by: github-actions[bot] * Feat/auth v1 (#191) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * feat: API getStorageProviderInfo params update * chore: Upgrade types * feat: GetSpURLfrom bucket * feat: Remove Sp param when create object and bucket * chore: [ci] release (alpha) (#192) Co-authored-by: github-actions[bot] * feat: Change Allwance value type (#193) * chore: Test config update * feat: Change Allowance Type * chore: [ci] release (alpha) (#194) Co-authored-by: github-actions[bot] * feat: MultiTx support private key (#195) * fix: Throw sp error code and message (#197) * fix: Throw sp error code and message * Create good-bobcats-hang.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#196) Co-authored-by: github-actions[bot] * fix: No sp available error (#200) * fix: No sp available error * Create khaki-ducks-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Opt (#198) * chore: Update Example * refactor: Replace @ethereumjs/util with @ethersproject/bytes * feat: Upload Object V1 auth * fix: CreateObjectTx content-type msg * chore: [ci] release (alpha) (#201) Co-authored-by: github-actions[bot] * feat: Extend response time to 3s (#202) * feat: Extend response time to 3s * Create orange-spiders-add.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#203) Co-authored-by: github-actions[bot] * Chore/conflict (#209) * release 0.2.2 (#204) * feat: Update Types * chore: [ci] release (alpha) * Feat/query status (#42) * fix: Return types * feat: Feegrant * fix: Pubkey typeUrl * feat: Upgrade Cosmos SDK * refactor: Simply broadcast and simulate tx * feat: Support Tx by PrivateKey * feat: Replace local message with types npm * test: Test Framework * chore: Upgrade Example wagmi version, Replace ethersjs with viem * feat: Support EIP712 callback use external provider * feat: Support dynamic provider * test: Support jest test * test: Account Query * feat: Change Tx API * feat: Type Complete * chore: Complate Example in New API * fix: Rollup bundle Support Nodejs * feat: Resolute Module (IoC) * docs: Update README * chore: [ci] release (alpha) (#43) Co-authored-by: github-actions[bot] * Feat/multi msg (#49) * feat: Multi Send * feat: Compatibility multi tx message * Revert "Feat/multi msg (#49)" (#53) This reverts commit fc3dd986646624c81f3cc43bdffb02e70d170b4f. * Update WASM (#55) * feat: Update WASM * feat: Update create object tx * docs: Update doc (#56) * feat: Pre alpha (#57) * chore: [ci] release (alpha) (#58) Co-authored-by: github-actions[bot] * Update README.md * multi msg (#59) * feat: Multi Send * feat: Compatibility multi tx message * chore: [ci] release (alpha) (#62) Co-authored-by: github-actions[bot] * fix: CreateObject Msg (#65) * feat: add offchainauth method (#64) * feat: Add offchainauth method * feat: Compatiable old get approval method * Create ten-suits-crash.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> Co-authored-by: rrr523 * chore: [ci] release (alpha) (#66) Co-authored-by: github-actions[bot] * feat: Add Sp params (#67) * feat: Optimize get approval types and add throw error (#70) * feat: Optimize get approval types and add throw error * Create fluffy-snails-explain.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#68) Co-authored-by: github-actions[bot] * chore: Update example without greenfield-cosmos-types (#71) * fix: Return Promise (#72) * fix: Return Promise * Create strong-snails-count.md * chore: [ci] release (alpha) (#73) Co-authored-by: github-actions[bot] * fix: Create Group message (#74) * fix: Create Group message * Create young-bears-scream.md * feat: Add Storage Params API (#76) * chore: [ci] release (alpha) (#75) Co-authored-by: github-actions[bot] * Chore/group example (#77) * feat: Group API * chore: Group and Mirror example * chore: [ci] release (alpha) (#78) Co-authored-by: github-actions[bot] * chore: Update example (#79) * feat: Add query param to ListObjects API for display folder. (#80) * feat: Add query params to ListObjects API for folder * Create clean-dogs-joke.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/group (#82) * chore: Update Example * feat: Add some group API * Create sweet-feet-hide.md * chore: [ci] release (alpha) (#81) Co-authored-by: github-actions[bot] * Update objectt.ts (#83) * Update objectt.ts add missing resp params * Create cold-suns-accept.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Feat/policy (#86) * feat: Policy API * fix: Object API name * Create pretty-bulldogs-notice.md * feat: Migrate out zkbas-js-sdk and upate the sign msg format (#85) * feat: Migrate out zkbas-js-sdk and upate the sign msg format * Create fluffy-pumas-yawn.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#84) Co-authored-by: github-actions[bot] * fix: Head Group (#96) * fix: Head Group * Create cyan-ties-cross.md * feat: Multi Send Txs (#97) * feat: Multi Send Txs * Create lovely-knives-smile.md * chore: [ci] release (alpha) (#98) Co-authored-by: github-actions[bot] * feat: Allow to have sp auth fail (#101) * feat: Allow to have sp auth fail * fix: Replace endpoint with address when auth failed * Create tidy-dodos-care.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: TS lib (#104) * feat: Sync cosmos types (#106) * chore: [ci] release (alpha) (#102) Co-authored-by: github-actions[bot] * chore: Use rainbowkit simply wallet of example (#107) * Feat/update group (#108) * feat: Update group extra api * chore: Test group api * Create quiet-planets-shop.md * chore: [ci] release (alpha) (#109) Co-authored-by: github-actions[bot] * Feat/sp listgroup (#110) * feat: Add sp.listGroup API * chore: Update Example * chore: [ci] release (alpha) (#111) Co-authored-by: github-actions[bot] * chore: Update Example (#112) * chore: Update Examples (#114) * chore(dep): Add cross-env * chore(dep): Npm script * chore: Pnpm engines * chore: Codesandbox Example (#115) * chore(docs): Update stackblitz url (#116) * refactor: CreateFoler API params (#119) * chore: [ci] release (alpha) (#120) Co-authored-by: github-actions[bot] * feat: TimeStamp format * chore: [ci] release (alpha) (#121) Co-authored-by: github-actions[bot] * Refactor/policy (#122) * refactor: Bucket policy * refactor: Bucket policy * chore: [ci] release (alpha) (#123) Co-authored-by: github-actions[bot] * chore(example): BucketPolicy (#127) * Chore/update policy example (#128) * chore(example): BucketPolicy * chore(example): BucketPolicy * Feat/gashub (#129) * feat: Add gas hub API * refactor: TypeUrl as constants * chore: [ci] release (alpha) (#130) Co-authored-by: github-actions[bot] * feat: Export queryClient (#131) * feat: Export queryClient * Create calm-birds-sleep.md * Update README.md * fix: Compatiable net error (#133) * fix: Compatiable net error * Create old-roses-play.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#132) Co-authored-by: github-actions[bot] * Test/test case (#134) * feat: Isomorphic fetch * test: Uint test and e2e test * feat: Sync Types (#136) * feat: Sync Types * Create weak-hounds-sell.md * chore: [ci] release (alpha) (#135) Co-authored-by: github-actions[bot] * Fix/sort types (#137) * feat: Sort EIP712 message field * feat: Extra field * Create happy-humans-thank.md * chore: [ci] release (alpha) (#138) Co-authored-by: github-actions[bot] * feat: Bump version (#139) * chore: [ci] release (alpha) (#140) Co-authored-by: github-actions[bot] * feat: Split approval and simulate (#141) * chore: [ci] release (alpha) (#142) Co-authored-by: github-actions[bot] * Revert "feat: Split approval and simulate" (#143) * Revert "feat: Split approval and simulate" This reverts commit 76defa7f31b7f2d4683f8ed04e8dc2786dd1ef6c. * Create dirty-parrots-hear.md * chore: [ci] release (alpha) (#144) Co-authored-by: github-actions[bot] * Chore/test case (#145) * chore(test): Remove private key from config * chore: Test CI * chore: Update rainkit version (#146) * feat: Query Lock Fee API (#147) * feat: Query Lock Fee API * Create green-avocados-jump.md * chore: [ci] release (alpha) (#148) Co-authored-by: github-actions[bot] * Update bucket.ts (#149) * Update bucket.ts throw error * Create hot-countries-begin.md --------- Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#150) Co-authored-by: github-actions[bot] * fix: Return real statuscode when call metaservice (#164) * fix: Return real statuscode when call metaservice * Create kind-eyes-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#166) Co-authored-by: github-actions[bot] * feat: Upgrade types version (#167) * chore: [ci] release (alpha) (#168) Co-authored-by: github-actions[bot] * Feat/sp exit (#169) * feat: Add Virtual Group API * feat: Compatibility createBukcet and createObject API * feat: Add Migrate bucket API * Feat/batch upload (#171) * feat: Feegrant * feat: Feegrant * Create angry-horses-enjoy.md * Feat/batch upload (#174) * feat: Feegrant * feat: Feegrant * feat: Feegrant grantAllowance API * feat: CreateObject example * feat: CreateBucket example * feat: Transfer example * feat: AuthInfoBytes add feePayer and feeGranter * feat: Add Two Apis (#179) * feat: Add Two Apis * Create mean-wombats-remain.md * chore: [ci] release (alpha) (#170) Co-authored-by: github-actions[bot] * feat AuthV1 (#182) * chore: Update example * chore: Update Example * feat: V1Auth * feat: V1Auth generate * feat: V1Auth createObject Approval * Create shaggy-experts-approve.md * Feat/com new (#186) * feat: Remove GetUserBuckets API Auth * feat: Update BucketProps type * feat: Remove listObjects api auth and update response type * feat: Remove listGroup api auth * feat: Update Types * chore: [ci] release (alpha) (#183) Co-authored-by: github-actions[bot] * feat: Offchainauth timeout reduced to 2s (#187) * feat: Offchainauth timeout reduced to 2s * Create warm-planets-exercise.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#188) Co-authored-by: github-actions[bot] * Feat/auth v1 (#189) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * Create empty-pens-sing.md * chore: [ci] release (alpha) (#190) Co-authored-by: github-actions[bot] * Feat/auth v1 (#191) * feat: Upgrade types * chore: Update Example Account config * feat: Object create update * feat: API getStorageProviderInfo params update * chore: Upgrade types * feat: GetSpURLfrom bucket * feat: Remove Sp param when create object and bucket * chore: [ci] release (alpha) (#192) Co-authored-by: github-actions[bot] * feat: Change Allwance value type (#193) * chore: Test config update * feat: Change Allowance Type * chore: [ci] release (alpha) (#194) Co-authored-by: github-actions[bot] * feat: MultiTx support private key (#195) * fix: Throw sp error code and message (#197) * fix: Throw sp error code and message * Create good-bobcats-hang.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#196) Co-authored-by: github-actions[bot] * fix: No sp available error (#200) * fix: No sp available error * Create khaki-ducks-brake.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * Opt (#198) * chore: Update Example * refactor: Replace @ethereumjs/util with @ethersproject/bytes * feat: Upload Object V1 auth * fix: CreateObjectTx content-type msg * chore: [ci] release (alpha) (#201) Co-authored-by: github-actions[bot] * feat: Extend response time to 3s (#202) * feat: Extend response time to 3s * Create orange-spiders-add.md --------- Co-authored-by: devinxl Co-authored-by: rrr523 <59029880+rrr523@users.noreply.github.com> * chore: [ci] release (alpha) (#203) Co-authored-by: github-actions[bot] --------- Co-authored-by: github-actions[bot] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> * chore: Pre exit (#205) * chore: [ci] release (#206) Co-authored-by: github-actions[bot] * chore: Rename package (#207) * chore: [ci] release (#208) Co-authored-by: github-actions[bot] --------- Co-authored-by: github-actions[bot] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> * Feat/payment (#210) * feat: Add Payment query API * fix: Create Payment Account * fix: Payment disableRefund * chore: Update Example * chore: [ci] release (alpha) (#211) Co-authored-by: github-actions[bot] * chore: Update README link (#214) * fix: Return Types (#213) * chore: Update withdraw example params (#212) * chore: Update withdraw example params * feat: Zk crypto wasm package * chore: Nodejs example update package * chore: Add comment * chore: Update UMD name * feat: Upgrade file handle package * chore: Update OffchainAuth example * feat: New Zk package * chore: Changeset (#215) * chore: [ci] release (alpha) (#216) Co-authored-by: github-actions[bot] * Feat/group api (#217) * fix: Dynamic add and delete members string array * chore: Release zk crypto * chore: [ci] release (alpha) (#218) Co-authored-by: github-actions[bot] * chore: Release zk crypto (#219) * chore: [ci] release (alpha) (#220) Co-authored-by: github-actions[bot] * fix: Zk version bump (#221) * chore: [ci] release (alpha) (#222) Co-authored-by: github-actions[bot] * fix: DeepClone EIP712 (#223) * chore: [ci] release (alpha) (#224) Co-authored-by: github-actions[bot] * fix: Error try catch (#230) * chore: [ci] release (alpha) (#231) Co-authored-by: github-actions[bot] * Feat/auth (#232) * feat: Compatibility new payment api * feat: Compatibility updateGroupMember api * chore: Update example * feat: Feegrant api add timestamp * feat: EDDSA Sign * feat: Remove log (#234) * chore: [ci] release (alpha) (#233) Co-authored-by: github-actions[bot] * fix: Feegrant add expiration time (#235) * fix: Feegrant add expiration time * chore(example): GetAllowence support pagination * refactor (#236) * refactor: Tx * fix: Type * feat: Add Group API * feat: Update Sp API * feat: Bucket add authType * feat: and add params * fix: Types * feat: Change type * chore: [ci] release (alpha) (#237) Co-authored-by: github-actions[bot] * Fix/read quota (#238) * fix: CreateBucketApproval * feat: ReadQuota * chore(example): Update Example * chore: [ci] release (alpha) (#239) Co-authored-by: github-actions[bot] * XML response (#240) * feat: Return XML type * feat: CreateBucket Add payment address * chore: [ci] release (alpha) (#241) Co-authored-by: github-actions[bot] * fix: XMLParser force array not object (#242) * Feat/export req (#243) * fix: XMLParser force array not object * fix: XMLParser force array not object * chore: [ci] release (alpha) (#244) Co-authored-by: github-actions[bot] * feat: Export types (#245) * Export types (#247) * feat: Export types * fix: Hex number convert to string not big number * chore: [ci] release (alpha) (#246) Co-authored-by: github-actions[bot] * Feat/up and down (#248) * feat: Upload Object add AuthType * feat: Download s3 object * feat: Migrate Bucket add authType * feat: SpClient expose makeHeaders method * chore: Update constant pathj * chore: [ci] release (alpha) (#249) Co-authored-by: github-actions[bot] * Feat/xml null (#250) * feat: Add default XML value * feat: Add default XML value * chore: [ci] release (alpha) (#251) Co-authored-by: github-actions[bot] * Fix/gap time (#252) * fix: Gap time * fix: Gap time * Feat/meta (#254) * feat: GetBucketMeta * feat: Object Meta * Create curly-fishes-bow.md * chore: [ci] release (alpha) (#253) Co-authored-by: github-actions[bot] * Refactor/sp client (#255) * chore: Exact parseError * feat: Remove deps * chore: Structor * feat: Refeactor Sp Client * chore: [ci] release (alpha) (#256) Co-authored-by: github-actions[bot] * feat: Custom HTTP method (#257) * feat: Custom HTTP method * chore(example): Update * chore: [ci] release (alpha) (#258) Co-authored-by: github-actions[bot] * chore(docs): Update README (#259) * chore: Add comment (#260) * fix: Sp types (#261) * Feat/upload progress (#263) * fix: GfSpGetUserBucketsResponse Bucket types * feat: Cross fetch * chore: [ci] release (alpha) (#262) Co-authored-by: github-actions[bot] * fix: EncodePath (#264) * chore: [ci] release (alpha) (#265) Co-authored-by: github-actions[bot] * fix: Download http method (#266) * fix: Download http method (#267) * chore: [ci] release (alpha) (#268) Co-authored-by: github-actions[bot] * feat: New API getObjectPreviewUrl (#270) * chore: [ci] release (alpha) (#271) Co-authored-by: github-actions[bot] * fix: XML type align to go struct (#272) * feat: Optional endpoint param (#273) * chore: [ci] release (alpha) (#274) Co-authored-by: github-actions[bot] * fix: XML parse boolean (#275) * chore: [ci] release (alpha) (#276) Co-authored-by: github-actions[bot] * fix: Common Prefix parse as array (#277) * chore: [ci] release (alpha) (#278) Co-authored-by: github-actions[bot] * test: Parse XML test case (#279) * feat: Migrate bucket (#280) * fix: Create bucket quota params (#282) * chore: [ci] release (alpha) (#281) Co-authored-by: github-actions[bot] * feat: Replace xml2js to fast-xml-parse (#283) * Feat/update bucket info (#284) * feat: Update Bucket Info API * chore(example): Update * chore: [ci] release (alpha) (#285) Co-authored-by: github-actions[bot] * fix: EncodePath function (#286) * fix: Convert enum to number (#287) * chore: [ci] release (alpha) (#288) Co-authored-by: github-actions[bot] * feat: Add listReadRecords api * feat: ListGroups API * feat: ListObjectsByIds API * feat: ListBucketsByIds api * feat: Add verifyPermission api * feat: ListGroupsMembers * feat: ListUserGroups api * feat: Add listUserOwnedGroups api * chore: [ci] release (alpha) * feat: Sort query (#292) * feat: Sort query * Create healthy-chicken-beam.md * chore: [ci] release (alpha) (#293) Co-authored-by: github-actions[bot] * chore(exmaple): Group (#294) * docs: Update API (#295) * chore: Pre Exit (#296) * Pre exit (#297) * chore: Pre Exit * chore: Pre Exit * chore: [ci] release (#298) Co-authored-by: github-actions[bot] * chore: Pre Enter (#299) * Refactor/sp (#302) * feat: Auth expiry timestamp add default value * refactor: Sp types * fix: Expire time * feat: Upgrade TinyGo version * Refactor/sp (#305) * feat: Auth expiry timestamp add default value * refactor: Sp types * fix: Expire time * feat: Upgrade TinyGo version * refactor: Sp metainfo * chore: Update Example * chore: [ci] release (alpha) (#303) Co-authored-by: github-actions[bot] * fix: Build (#306) * chore: Update Deps (#308) * chore: [ci] release (alpha) (#307) Co-authored-by: github-actions[bot] * docs: Update README (#309) * Feat/validator (#310) * feat: EditValidator * feat: Add proposal api * refactor: TxClient * feat: Bucket listBucketsByPaymentAccount api * fix: Proposal and Validator API * feat: ListUserPaymentAccount api * chore: [ci] release (alpha) (#311) Co-authored-by: github-actions[bot] * chore: Nodejs example update * test: Test case update * chore: README update * feat: ListBuckets * fix: QueryClient and TxClient is not singleton * chore: Upgrade types * fix: PutPolicy * feat: ListObjectPolicies api * chore: [ci] release (alpha) * fix: IOC (#314) fix: All class use injectable * chore: [ci] release (alpha) (#315) Co-authored-by: github-actions[bot] * chore: Update exmaple (#316) * feat: Distribution API (#317) * chore: [ci] release (alpha) (#318) Co-authored-by: github-actions[bot] * feat: MsgSettle (#319) * feat: MsgSettle * Create fast-houses-do.md * chore: [ci] release (alpha) (#320) Co-authored-by: github-actions[bot] * chore(example): Update custom tx (#321) * chore: [ci] release (alpha) (#322) Co-authored-by: github-actions[bot] * chore: Github Action issue close (#323) * feat: Bucket headBucketExtra api (#324) * chore: [ci] release (alpha) (#325) Co-authored-by: github-actions[bot] * chore: Nodejs Example update (#326) * chore: Example Update (#327) * Chore/example (#328) * chore: Example Update * chore: Example Update * chore: Update (#329) * feat: Custom Tx (#330) * chore: [ci] release (alpha) (#331) Co-authored-by: github-actions[bot] * fix: Delete Policy (#332) * chore: [ci] release (alpha) (#333) Co-authored-by: github-actions[bot] * Feat/create app (#334) * feat: Template Init * feat: Template Init * feat: Create App Commander * chore: [ci] release (alpha) (#335) Co-authored-by: github-actions[bot] * feat: Create App Commander (#336) * chore: [ci] release (alpha) (#337) Co-authored-by: github-actions[bot] * chore: Update README (#338) * feat: Add vite template (#339) * chore: [ci] release (alpha) (#340) Co-authored-by: github-actions[bot] * release 0.2.5 (#341) chore: Pre Exit * chore: [ci] release (#342) Co-authored-by: github-actions[bot] * chore: Enter pre (#343) * chore(docs): Update README (#344) * Chore/package (#346) * chore: Update package.json * chore: Update package.json * Chore/package js sdk (#347) * chore: Update deps * chore: Update deps * chore: [ci] release (alpha) (#348) Co-authored-by: github-actions[bot] * Chore/update deps (#349) * chore: Update deps * chore: Update deps * Docs site ! (#350) * feat: Docs init * feat: Docs init * chore: Update README * docs: Update Docs * chore: Update deps * chore: Update docs * chore: Update docs * chore: Update * docs: Update * docs: Update * docs: Update * docs: Update Crosschain doc * chore: Update docs * chore: Pre exit (#351) * chore: [ci] release (#352) Co-authored-by: github-actions[bot] --------- Co-authored-by: randomx999 <84435529+randomx999@users.noreply.github.com> Co-authored-by: devinxl Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] Co-authored-by: aiden-cao <104969608+aiden-cao@users.noreply.github.com> From 76a18f1ea3dc44ea56c964003de4d9e323532405 Mon Sep 17 00:00:00 2001 From: rrr523 <59029880+rrr523@users.noreply.github.com> Date: Thu, 5 Oct 2023 15:10:46 +0800 Subject: [PATCH 264/433] feat: Custom Tx support any type! (#355) --- .changeset/wicked-pots-teach.md | 5 + examples/nextjs/package.json | 4 + .../nextjs/src/components/customtx/index.tsx | 183 +++++++++++++++++ .../nextjs/src/components/feegrant/delObj.tsx | 10 +- .../nextjs/src/components/validator/index.tsx | 102 +++++++--- packages/js-sdk/package.json | 9 +- packages/js-sdk/src/api/feegrant.ts | 2 + packages/js-sdk/src/api/proposal.ts | 38 +++- packages/js-sdk/src/api/validator.ts | 43 +++- packages/js-sdk/src/clients/txClient.ts | 19 +- packages/js-sdk/src/constants/typeUrl.ts | 1 + .../messages/cosmos/gov/MsgSubmitProposal.ts | 52 +++++ packages/js-sdk/src/messages/utils.ts | 65 ++++++ pnpm-lock.yaml | 191 ++++++++++++++++-- 14 files changed, 665 insertions(+), 59 deletions(-) create mode 100644 .changeset/wicked-pots-teach.md create mode 100644 packages/js-sdk/src/messages/cosmos/gov/MsgSubmitProposal.ts diff --git a/.changeset/wicked-pots-teach.md b/.changeset/wicked-pots-teach.md new file mode 100644 index 00000000..8f93667e --- /dev/null +++ b/.changeset/wicked-pots-teach.md @@ -0,0 +1,5 @@ +--- +'@bnb-chain/greenfield-js-sdk': patch +--- + +feat: Custom Tx support Any Type! diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 52195e38..9113c24b 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -11,11 +11,13 @@ "lint": "next lint" }, "dependencies": { + "@bnb-chain/greenfield-cosmos-types": "0.4.0-alpha.23", "@bnb-chain/greenfield-js-sdk": "workspace:*", "@bnb-chain/greenfiled-file-handle": "workspace:*", "@cosmjs/encoding": "^0.29.5", "@cosmjs/proto-signing": "^0.29.5", "@cosmjs/stargate": "^0.29.5", + "@ethersproject/bytes": "5.7.0", "@ethersproject/signing-key": "^5.7.0", "@ethersproject/wallet": "^5.7.0", "@metamask/eth-sig-util": "^5.0.2", @@ -29,6 +31,7 @@ "eslint": "^8.21.0", "eslint-config-next": "13.1.6", "evmosjs": "^0.2.17", + "lodash": "^4.17.21", "long": "^5.2.1", "next": "13.1.6", "react": "18.2.0", @@ -38,6 +41,7 @@ "wagmi": "^1.2.0" }, "devDependencies": { + "@types/lodash": "^4.14.199", "cross-env": "^7.0.3", "dotenv": "^16.0.3" } diff --git a/examples/nextjs/src/components/customtx/index.tsx b/examples/nextjs/src/components/customtx/index.tsx index 3eef067a..4008d283 100644 --- a/examples/nextjs/src/components/customtx/index.tsx +++ b/examples/nextjs/src/components/customtx/index.tsx @@ -83,6 +83,189 @@ export const CustomTx = () => { > broadcast with simulate + +
        + + ); }; diff --git a/examples/nextjs/src/components/feegrant/delObj.tsx b/examples/nextjs/src/components/feegrant/delObj.tsx index fdb22d36..ca274b6c 100644 --- a/examples/nextjs/src/components/feegrant/delObj.tsx +++ b/examples/nextjs/src/components/feegrant/delObj.tsx @@ -5,6 +5,7 @@ import { newObjectGRN, PermissionTypes, toTimestamp, + fromJsonTimestamp, } from '@bnb-chain/greenfield-js-sdk'; import { Wallet } from '@ethersproject/wallet'; import { useState } from 'react'; @@ -49,16 +50,21 @@ export const DelObj = () => { console.log('wallet', wallet.address, wallet.privateKey); setWallet(wallet); + const tempAddr = wallet.address; + // 2. allow temporary account to submit specified tx and amount const date = new Date(); date.setDate(date.getDate() + 1); const grantAllowanceTx = await client.feegrant.grantAllowance({ granter: address, - grantee: wallet.address, + grantee: tempAddr, allowedMessages: [MsgDeleteObjectTypeUrl], amount: parseEther('0.09').toString(), denom: 'BNB', expirationTime: toTimestamp(date), + // expirationTime: fromJsonTimestamp({ + // seconds: 1796428611, + // }), }); // 3. Put bucket policy so that the temporary account can create objects within this bucket @@ -72,7 +78,7 @@ export const DelObj = () => { statements: [statement], principal: { type: PermissionTypes.PrincipalType.PRINCIPAL_TYPE_GNFD_ACCOUNT, - value: wallet.address, + value: tempAddr, }, }); diff --git a/examples/nextjs/src/components/validator/index.tsx b/examples/nextjs/src/components/validator/index.tsx index 2528adf2..dbc9c4c6 100644 --- a/examples/nextjs/src/components/validator/index.tsx +++ b/examples/nextjs/src/components/validator/index.tsx @@ -2,46 +2,98 @@ import { client } from '@/client'; import { VALIDATOR_PRIVATEKEY } from '@/config/env'; import { Long } from '@bnb-chain/greenfield-js-sdk'; import { useAccount } from 'wagmi'; - +import { MsgSubmitProposal, MsgVote } from '@bnb-chain/greenfield-cosmos-types/cosmos/gov/v1/tx'; +import { + MsgCreateValidator, + MsgEditValidator, +} from '@bnb-chain/greenfield-cosmos-types/cosmos/staking/v1beta1/tx'; +import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; +import { PubKey } from '@bnb-chain/greenfield-cosmos-types/cosmos/crypto/ed25519/keys'; + +/** + * decrpred + */ export const Validator = () => { const { address, connector } = useAccount(); return ( <> - {/*

        create validator

        +

        create validator

        */} + create validator + + +
        + +
        + + ); }; diff --git a/examples/nextjs/src/components/feegrant/delObj.tsx b/examples/nextjs/src/components/feegrant/delObj.tsx index fdb22d36..ca274b6c 100644 --- a/examples/nextjs/src/components/feegrant/delObj.tsx +++ b/examples/nextjs/src/components/feegrant/delObj.tsx @@ -5,6 +5,7 @@ import { newObjectGRN, PermissionTypes, toTimestamp, + fromJsonTimestamp, } from '@bnb-chain/greenfield-js-sdk'; import { Wallet } from '@ethersproject/wallet'; import { useState } from 'react'; @@ -49,16 +50,21 @@ export const DelObj = () => { console.log('wallet', wallet.address, wallet.privateKey); setWallet(wallet); + const tempAddr = wallet.address; + // 2. allow temporary account to submit specified tx and amount const date = new Date(); date.setDate(date.getDate() + 1); const grantAllowanceTx = await client.feegrant.grantAllowance({ granter: address, - grantee: wallet.address, + grantee: tempAddr, allowedMessages: [MsgDeleteObjectTypeUrl], amount: parseEther('0.09').toString(), denom: 'BNB', expirationTime: toTimestamp(date), + // expirationTime: fromJsonTimestamp({ + // seconds: 1796428611, + // }), }); // 3. Put bucket policy so that the temporary account can create objects within this bucket @@ -72,7 +78,7 @@ export const DelObj = () => { statements: [statement], principal: { type: PermissionTypes.PrincipalType.PRINCIPAL_TYPE_GNFD_ACCOUNT, - value: wallet.address, + value: tempAddr, }, }); diff --git a/examples/nextjs/src/components/validator/index.tsx b/examples/nextjs/src/components/validator/index.tsx index 2528adf2..dbc9c4c6 100644 --- a/examples/nextjs/src/components/validator/index.tsx +++ b/examples/nextjs/src/components/validator/index.tsx @@ -2,46 +2,98 @@ import { client } from '@/client'; import { VALIDATOR_PRIVATEKEY } from '@/config/env'; import { Long } from '@bnb-chain/greenfield-js-sdk'; import { useAccount } from 'wagmi'; - +import { MsgSubmitProposal, MsgVote } from '@bnb-chain/greenfield-cosmos-types/cosmos/gov/v1/tx'; +import { + MsgCreateValidator, + MsgEditValidator, +} from '@bnb-chain/greenfield-cosmos-types/cosmos/staking/v1beta1/tx'; +import { Any } from '@bnb-chain/greenfield-cosmos-types/google/protobuf/any'; +import { PubKey } from '@bnb-chain/greenfield-cosmos-types/cosmos/crypto/ed25519/keys'; + +/** + * decrpred + */ export const Validator = () => { const { address, connector } = useAccount(); return ( <> - {/*

        create validator

        +

        create validator

        */} + create validator + + +
        + +

        >zO#isl_T zN5%O^Vf7~W`6halBynwL8^dNP|0mS4e5Ago9JpqYsX}(YX5lCzc?f5Lx1+um=VsaBM{CJgVlk>&ACX< zPTI|7FUg7D%~t!>wGYnK56s!g&D|^1jRMj#>eWLT)IZaO3hCY<|C&Gt>kwcX#%O{(X@&&s_p#a%9!Gw`*@hnf@fz@W@Q8ISMK zH68o;$AB>5B=FxS@^`zVu%;ckK5Zv$GHY$YAVeZF7q-cb@5X}9M!e?!NxajeFAP`I zE34IC@Y+g5AWaKWeXE%8#ibBe<{7}&1Klpossnzs-Cc-0QCU$lc&RWVJa^%WS#Zgi zxw;MA>S**`YW7{wH7jQ-G;vFbJFAjP@4ev1<6KGumWWOO$+IBqxL}OJ_>k*dFQkm! zvJj9lDdm}$c5PleQqrVUY6XyR^z4+Y$*MbKjIl;;n6I5cGS9VUeXptN>l7dLw1vL~ zu zVB4Z^oFMOh{0=>ct&~JCvihUdzKD?`-3cSxg;&KL$4a~Io=YVxW}B{Mv}fJtRlzi7$=*) zO3J(O+q|bCpt`);r>A&kirQzccx=+YWJN@NIrVzzjvQ}_C9+Sw|vG9x}#yf_i%m=NP71mdOv@Knn?D+mlI4x?so@eo`y7huU_^jml?nd)1ru8mSSYL_zUMg<` z&$eK0jC`&+c<-)$j<$Re>i9aodRIPw776?waD4Bjac|e69<$<2%p8f^Sf0mxOAA{9W&h@}{9WRGy0SYuq`~Eix0{Vlpyino4~)yP~m2i&b#C!B{G9 zmaENHo5R`Yw1%VIUZ0nGski3queC8QS2eiJ8_gBWl-yNJJP(&EqA0Vq-W)HtyS;(1 zGq`MTk0-ehH?rDKPp=aTwAyc6CTEL)IccZA+qr(gdmsp`LO%!;Eo1+~thBvEpO|2;&^k&V&xR`!to?xFQj1iY(J7D?ZPmMq6`x`7>4zNXeIWxLKmWLmVIv+ zX5f_2)NR*-c+_rWxj5lN(ZYDQij2|(S%&qZ-WNzEz!X{?N>tV)C+ivgsSuQlRMtwhEVsULh z2uUnu&sR5w;~&MmOC+4zE<>D2D5H-RKuxFXuuuKmEorFiBCaqb^>wHpw`} zAXf7% zK!rtIcTRM1%k?T6ZZkyvz<1wIQ00Bu5Bn+O%8l8qelm>HAn5*Gi0j0Cl8Z>qo^N?o z`!22{6}nhm)2D%QPPEM1DPCV&(six#;h=Zj0+Q~$9Z|4%XC5Yo zw-06A-VMb@9z=Jna}zc`M6?PQrn7ZW<+fHu@JSy5av^vTM-#qhLh_N7+67CY>U%0N z4?Te+1~U&AqIRT<^V-fvVOrs@4O9LL1Z;@W?kc?cMIr8w)DUVnd<0>UCLpxAU}d;{ zM8;G>iud9`{hx6X;n;a1d7xZK$hPh;O?MGwYUF@^U{HaBq5Cij`$A$y^9dbXv!tBd zX&jD9A<6_NAD~ppuj-fpM7E>v$H&xWBzd2x3{#4D@iC#j`IK#>X)2)vKHdtf1Z$&g z`ramn*#vhFB*|Rji;dAI)cf>#eqxr}Fe&%>E0(@x0~Jm$G6+~z3K_E2vIg1gR(riG zkW)5zutA>*VzMmca38XiWhQFHuz{`Kaf(!J5OSsS zkh%7{;*zGla-|PK!`AD#SQo%{ZQ#Ma&WDcP5aU8SiQ2WE#h2Qc@~mmhl&+@yu-usQ zOsmL9!#|^BNs`BQV-bU_wXmDg+~P!8>K&=Ip(NWfWmFxh<24!6h!mUxMTLxq%9;Kf zBV*%pLdq;_yME=xxlL42&?2qxWSoTrFBuoLFRVwO8YN?e_m)2eN3Vnl!)caH(RN|0 zRZ&VIe6i}l-mhF2xUxtwj&|phB&Ii<(Ix^GQ;P^n(aRdT9OKSf`nNl5dU~AEt;46r z=K<$ns&mDn8ZTLXMSEYRR>UrbwcdXTxUuwSks}m7u#6Myw;oiThUo|0mN}@X!bE~Y zk25SjE84aob*R114xAoq4%f6(WBPbRiT&yucVQSkRzH3u#hHNkjNt8h4v@z7`H$o* zB49Cxn*K43|MU<;n{$-Kmr^|JNbauEaVjp_F)WPB@GH5_$)&Y1XCV75IReW{QmxS* zJo2=8xuJ&w-k8R0-rAGSgvVZbpbpU_2 z_S5RpfP;HxM2bpKjB zshMmY6lq5qdc056mo-R%YI_rP6p3=hn>4aUo)G7I;cE8JM^5w(_DlNLuV1vkezpAm z^9%KtKOO+a9qXI4MI^i`2Y4G{9g~muN1Iy(6E06EG#Sz4$i-3d_odJ0%9Uk zauPC1a!P6{S~_wXMjCo18b$^>CKfst022!v3p*DR7aKbl0Kmh`%q`5uFTuknz%B^j z65-{R;Aa<*;u8?!6qe(Y5#kb6c|Qx=*cN4O6w~qsi>-`Yp7{xYU$_-D;tWbn~P~!NN8J2={e}?|0iRhs9>U^ zWTB>Ft*Pa#Cu86&XXLK;pMip@m!i3^j@y5_9tH+R#wKRwrsfuw);2bF_69yCHum<8 z&dx4w?ym0cp5ERn)u|M_P6`1u?9o0$Y#T1MJh$J*P* zJ31u0IHkL}WO=yfd3zT68v5t>`uiIP7n+5aSwvP^$JW~>G}|Y)+NZQTW%T%z1o)N* zxnvKz=Z(1Mk9rnO`jpN4RxAbv2Zw}(hlYno#l*zK#mB_Q#m2`cBqgP!rKhB)rKYE6 z{$3}N2_r><##ST2g4?QQ2z9mn5 z_4fA<4iAltkBv@@PfkzG%+Jm(%rCF3JU>5we}Dfw2LC@7B=8pkB(6k#{y-2U3boF7 zJ(19FL=t>Pfqs91NOUOdaSaE;kqA5r+kdD?Qpp%xmfWxO`lHEMB7|XF&Lsc-3{)c1 zZmfTZf-L+10IpPX`9hII61DDRbH!4bLXlLCR7>SbFqil&nB>yoR1A5*=<-Co@p>d? zOYAgPe$7^!{n20y za9%;v)D9<-@f#KF7tsj^NHSFY83MM6&!m z68ZTKQF3{l7t^!capf^z_?HKx!Kj8dUR=yZ?VE(5C?G*zPWSuW{#;dF*N@G^tM*cD z%3Vi`(<=7RY+dim&)Ls=MGLOX92V-LIr7R_l4HRMYo`32DCI#gs+##h2&NdDl6sSe zv!=pI%5h%U1C-c*l1mjOs-C_?=Q#%SjqAJ7tgGfnF`TVwM0RAAr2CSHA*TdRW4eEj z0@^Zyvwhzhim`2sd?-n+1fe~2ecErzPf~SUFHX|_3*;=Z5@YAe34gIk-;U?68Q;sY zHo-W`cAiW>%5gufILkc_;X<>~Oh`qG{104JF`mLgOexx?* z=W!mNa~|*a>-Buz&oitq?r|`9Sxm@PZJyZNswj#R-K{M3%X5r>bYF-=lkxK(yOi9r zOTi`gxdaQLf{4xPz1p^8MRb*(h#P0tPj*<*+rp}Z*C~MGD^pnS4dq* zP7Wz(Z@+0dPVe)(FEZK(QFFZEh?X&{M!Wo#b^_P4qce}g_LEKOoMuv}m30;$Z$_m# z;HM|K6DstY9P_TD)vo=y>d4oipk2=&y=;dqWM>LJ%es%JPiT(%__Mu^28F4=7j@HH zTx9o1xr+T9kzL9?8dcbO{c}wD&!Snq*qq0WcIi22 znOjLW=h@D@>(fK$M+B2tbS($7iu%{5_s$P8HVn=8>E80dksVd{GS10b8XwL6+O|x z(5$MK`4V|f)wQ7lA@bk|UlgnC0QAcrmDtz5QF8hNv^v|^=+e5UXqpnlCG*i;!eCVx zg=`UHHlgCxNevYRLq4r&s)DQ$8DKFGgK$A>7!MT3N1lH{z6$BZE5Ajd?7M|9K=`lg zB%r&SlkheGgewIyaVwB$Wm2hd87qv`1FI~pC%yO)a?%rIFXx^%k-eulsb~N!08P6h zgFW%1J>^l2!6x+BfD$2<&=n2yDE`bnzfm%5W%edvA}L{hWHaQoNi#f=m#$oy zLgo_+Axm&%Ea!|Cz`Tv4!rx?CMN;0To;1KO0&@K-yV%FKF0qCks_?JWl*m7@Hj_9! zK69W4IFc}?UzuL;&U%yMFU&~ej1is?uFgD7>ccHgJv$3%)DUH{ z7&5EiwJ&tDuu5L(2{m5QL;vcLMnC9qC<_H{YK`@z}9e`TWe56hR@v{j$SmAG#z zyVJYc4^d721_aqyTf@|Fa=NOh?_ah!sPGe%jsY}~0nDlw7HdRuDAxMwX$O;0@0DpR zr}+hti9{jj0)7EvnR^|UgiV;$9N-!AUyv@I6u8R>bm}YcYgUIm1(8M66Z2(H?k&;y z7E!+^H<2~M+TnmHxzJPY#~eG~Nuq|Pq20t3+1VS$Svh<+#hE@7F*5=}hHeOqpk zVa+v~3zITIJ-M1m$1r90;}mjGq8k#9!SR4>Ixx^PA85DaYdct|N>M@*i4}kDFgAJA zBgg_xe3AG$DC@X^hYJdEwU6dy{Xq3>s*L?u9>ErmZ^}Uf?C!n=ti&02^RZ~eQ_86O zpEZA|U?!yHiXnvPV+J%EfocA^>Ugowm%fIk{En%)R0(vYx#ZDzg?fUcAvX7XBzbK* z#MW|7-TG~)=Equ*1>1*SF%v)CsV!0MESk>_9I&~vWgOSp)RoS>{laBmR^;BmWnhtn z%5JR1UohKirrd1QJ_rrm0)vh^`;`D7#y=+hc`5Hpii(!}+C90lgUTNvwY@B;zf)OT zA{kLo#bRFvJ^hu)@&;AfNb&U^f$*45$;asO>ko_zz@&#H9(^mncJ+wE_(G#c&uqmN#8yvT*pzwFv8P=G?$sXTv` z(AyHW?u1{gt)xj-wXPMMO_p_FFAF8DXwzBa9Uv2ub^(=tZtmWD95%_9+A!j;!W#cx zdrGCBdL%H}y+r-Y5##_yK%1<=Xw~}MZT`;g6EYPY-TQ=}qD}9_ydaJ?NLz3F8Tz`u z;5oX!62MFJCMr>cc)b!*R&vPJ7HI$Uyzh}={sKMeSVRolO>z58=kVA;WhA&Axy@|ypJUiOkC*-C=BmFE9+bkLBohB?0}OwlCG{C`yP^Y;8<;oYql zo6)IP;%}z6_spai(_R9oNLRQmIG~x~^p6C^Ek^TY?_Mep2k!$pdq5Hd?q?4WozbMT z2Y|G(2~JqP9}1q*IA&qE92U><_FhpP1AQ|C1Dn_7nvzi+cbOU0VaY8gdq9ROK+HZA z(rgWD#tJAX3*{&v=kZ<*Eb@eCX_x!wKVp8SMo-+N*lxh_sm7Yj$J(C6+Ox$uD#STk z#<_&Vx#h%pG{SP&TKaGHv#wuOxMOGizEwn~69^P_gi}9&I2L-ZSh1KGek8B(cRFZe{m%E;|# zpFikaasp%`uK;pKA>LlTv060;^^uo1DTkTg@7 z404d`X@0O#nbaPfa>6DW+34px#YJ>;5BZT2=H|Z|%r^PQ{dPRd^Ai>V!7sZqirSqJ z2MqY{XXIozaW|eY9Up+MgWQ|AV}V6Py`)l;qD&KjxS9r&*fjaw(`*CeQ3(h&qJmT1 zJ)3D+=F4%-M^Y3_ntX>eQ z^b(`=ra3Ekv3C)GQV>At<*RX^4!dO!QX^B9U;*>mpwaK`BtQCiXD4aLT*alhg`P$ z6figeE)tN(qB!2~PYCiK>E|Ac&s+H;u?e0LN&S{raAqw^n4;(wsx{{$$DLDCd&%}u=Qm44^yPY&ktDwd2h#q(v$ zrnBUwvH1@L=QW;|%vA8cu6lv_!?t4aqF#qBraZoB$6YDR|JH8&2Y2Z!UYzqXQc#K# z9)_S@1_sR{3`C7}T1u%@f%4>1kVDx<6^B(A;+j20xR#|w9uf)w-2x;&cBXJuL`G3i z8ipb5u9Z_7mwQ?v=!(kS77zi6<-t}J;1$5lWr~}q3PqRlP~8$jUL~hfiQZ)ocZ77_ zs|Um)*bAICF_q=28Sj>({ZjeNT`{amVWH}-m0Mn3YDqb7Xr-ja88|VFXKkvw?%FG- zja;gRD!;d>#e*+0a|nRj#Nq6`s)f9a!~{n7SJ)FmxG<3|)UBfB)tg+mjragVQgyv3 z&l{_n`MjD>>aX6P`A4fpeo)Mt>?}DcE13{Yt$$EWw|f0Egk8|_CGb@6zq6X5yxOm> zQ3j5IgW1FPvRw_vFWy_VzQ5&E zcmMpoJqMTN@O$TnjV^oPS{zs3sK$^dfT^%XUydd}YC-qm#vsoopDzs>6R;FwjU*PV zg`l8uMnDmuRrw~ui)I1E_rYJ9lUl1a9f11w@X}?l2BPF5np002m_meC_`<7DAjl6u z6(T<|yrnXn*>6Ff9-s=4Io5Ilboj7IX1KS-0B zU}O+Iu{BQ*iABRZzO;9%eWd%rz(Ry;wIGIXw2hs2a84p9qq#re_+NA}y{NCfSKm&< z$uq+tLpRdAs?@0y4v-;1FrDBk5)?ve(vfb40=tZHADDQ$BzU@bC)jO^8Gp1QU??#f zNAaCio=x5^?jN8kEQQnvYFO{15+`Y{3oV%16}`tefxA|iCd}Q*h)(0@_sTPcHxb?5kJ7mz5q!wG&cgw3j#N_ zvLkswZF=xDqZU$|48_V|k=Rg@7a#-x1tTa5Zonj$nLlxkPF;Xf9j_VJOO*UT!Ml2t zj0M1|W1sbUx4++w_v`&~F*-QOnU8z-(UYGPaZPbAf>o#Q?EC$p8z0qE0aKhqm`=)k zB1JxcN*xW&#{xk-R54dR++|9uI@k*Y5F`!CM?h%;fO!ZibskWu6kH!gp-qBpya-4k zgDbF*Yt|4JRe&=Q{&d-{;<66vjssVsV1XoX1QD)p58xoe)$UBI*^GjWAu{`R<#o`@ zx58=;02yC+sV_ty3+eL$L}1|>zHlrVoQ8$-NHN?)Pph{BQ4BMtHZx`6{2=_4;^>sh z9fkxHOyMsiko>IQK_IZ~D#O#*CZ9S}hFVZ~4rXEiY1q#M8iCLLc0o|U za?&@BiSB8JYg41peb28?A_33HA7qReK3&hJB0^~l8R%{KXX*vfVobp35n1U^?}44k z*H^Di3YK^A*!^JSE1BQ(Wotu8Ii0H37&{8M_g2&CPG+Ma^od3X6jDJa6HyZt7=& zLQ(u*VZ$TNxFp5~MkWlt+Erk!B}$PZ74R>1?Y1GJz#d*ngqtQKz}HoEYr(YMP%sXV zkD>y10^kLd>=CW7PG~Bcqf8u@O5X2%4q;&!k}%$U?*J%!&iVD$Mx6~a<2$&2b+CYZ0OSKGAI~_e!vUBGEg-W)v2gwCE7YHuD~Zs;sDrxX z-D3tm>BVa+Ub~a8c2Oxvi8OK9wrd!?;ExIE^smAabRMn$jzV4{BQ9TcR$v$4s^iyt zU?V>3F=&MP0VTL|B60+vE7licH;P9)4 zFNp0ekV6W{R0m|Se*!Xw9~Ex(wQW_R8ULO$cs$?oeEaRciEbuoAPeHy=`N6i=XZVx z`AGq}{TTxj5zfZB(oW47`w7DQiJz@-wdR7ETSdU*-wDstQ;^qn{=?mV+^RcXAbOPl zT^g@1Xie(rS+(fT@8Z)bS6E)+Po=|ga4|)`eLu4zG`8qV=y!xi+sEF&P+S_rgUIE( z6J+G$QS+3|GW2TqUEbG6OcbhcA{yaj13CP9tk}7O@L_s#`EiVi=kEjKzo~xgsc8VF zLx%g_n}j7MEh4zYsm9U?SWRymm+E9nJX)CEF|9N%Gc2>3*_}z?QGc(cC%^EU1*}fkF&cnHgGMBSr6aI;YA& zyO9Y1|K)BFd%;3DnrdB<_q0gHYgx5gF^(RobNL%ow{6O(UlR+PV=4c-rED22snB(O@PsUsVdB>hGzFy3!jNrjCebVvS?E!$eM_A*Y+%n1yvsitne$K|3_Yb29v}P zT!OKvvq-Aq;mA~1ytX1i`4>3$(C8AwWFBCw$r1R=SmQDsiN5;xB%6R>mI!`*rQg4% zD1}5<=uHe&H;`y6U$@uwvdU;0L&uGtBxd?%G?O$m4V|tQ<0KrXWx{Zr!A)PsPz-M7 zluuF?-5WDVv*Z`L zB3DIAiE)!uz4G0XT6vQjI4GmkCp?RqFMA0@7g78HFNo@V7lVKn$K>`luy4il1J1CF zCKD`tFQenMT?=7Wn6yhOLEk*P>YCaR&)U}GGtatimh(5WGRN*t=~G;y&J>^Thl@5X zWpPwJOC+jpyzjF;{DQmx1+`km1h;nQ1qx@9RfFbkNmTpp;1T#CSW>ZLdenfw<3cUJe&RoEpj+sw2WySvi&OaQA_a8 zj%aB!DNf}67m_jGH~(Wx^3dJs`R(6dgSDFge8JDK=oq9IyNILX9e_?{#KDxs)5zm5 z!6AR%y@_8utH}EgR=M-I8!vv+olAk^ArNe#S)2`~UZiFpGw28sV8r zm-mmALh@cNUG^WaBGZ>Yneb5aKxuu^4KReTfb|MYWUljX84>$yczIDYM4fZf zC|+sZf&P@@IZLu-0LZ5*2g=xVI<9HU#K87V1h{Q`pL;jf*{scdg zdJ|gYsL1FI(0{}yBBH$aHZ{ccg@d6>|=7H0Xn^q{572M%aEQ;7o z50yo317ENjS(F=_j;Vh`XA7yVN#D!4D>qK(R}}joQ`{+>@Eq8@087uuBdN&SOeAd) zbP)*V+CIkguZW|u&%D;Z%+uy33kAA|R6D1$XZ7c7?n6n2B9C@2pNkp0*#Nf24-iYs zs1Cf`1>CPsFY|gN9{ym&<^H=D8(yw=&L0dVrd1m27c2Y^qE zh_SN;3(I-tfp_+MM0P?K75wud`dXVcRIAx&w7@6UmED|r%>*U7jA6ZYgzqvW+3An# zdkw*(wTeK@30Q!tEfES&n2|KnjrHL<0-LNiGx19eP|-aRH&ZUjha~_-*owy(wJ&)Y zK%pdV>jh}X4;)hZ4vC6?1uC4nN~uNc`Iys<5E({OrIJ{<@l;T8|Ifn;o=54YROOug zxtd^AJinP3Oq3c7GUS@&xr!#m6LCmw^xMP--yPXZ3CO6_&S&@46KNM$kmbv7oxVSZ zE3=k@vBH$GR9*=7e94M>7wvHar(EE zcUc0ut*PIBLci{0S>S8fG=pP}dbWWgCo^AH&3twJ$JYgk3o>9xaC5YXi9;Pz;B5vy zOSS84(z`MIMZ;Psf|h$JCy(?BT}7h%-n=-10b8b7wVmy7x1AUz0Ajv;X*7#-`f`XW z`vo8y#5rT(_<+HN|Rr~g$Ag!afv_V*5M`gVN)8#K%4@A>AxI2 z?GOrno2g`zX@eS5dy5qB081{msAyI4*n@jlAu`4;YNeY zbrl^9o?t0aI9MkL%tZ5_Yg_>PV%TMN9rJ3LHkk&5Y_e`fdAA0xTU&sPsrg|SESFFa=ZYePx{w?v^hAAk zjL^FG@Gydvu=FSyE;vrbe2nI8VRC};A|LI{(v?-}qlp{<#=EGug z9l)BtZMbb#9s8RORSmN*RVSKN!A6}pdsWugcjg$fU2l9aCDXKpOQCP7)DcNfb+QjV zI?PU#7KmUl7H1|LO9_x(HR;0Ht9@!#$e{Qbc_ZsGo(wd-0R;mnZ=;~#6R;wh=60#N z(&Al}@7+uG`2e#L?V}u3ezdxBPtkJBbpl~&_$>uAOTzPcy%np&6LvBXj~gI?UP&iz zlkmbI^6hrs6U7*XPOXr32~QSk1PcsBSbE98=G^w_Sxsp)A?m?3u&+|GXS)?A!CXJ~ zJ}1Ef(%`XQR2Cey5|-9Jl%WkbKk}C z-9hYuP0XOTl;!YJwKs(cIwvs{_FBO)T6bUfU+mpg6YE*7;>UdN2d>A^5D2cfV+Gc# zO@%3Mh-JB10~}UfM4T(pe(!m#M4+_CUrO9~{n4F3)r=V(kng%WD?oQF^<%@80EcLjRo@vOO7WHE7TwkTEgnw`N8$@z69aG&oI} zVIbrt`NIp>2iLx+4}M68W^oeuQez@b2f;b|_)2|8q=c6;bU}d@8t}eh#?D$Z#`YtRa64`cSVd zM6dZZ|GsifbH3golD`!Ll{C(ya05C>SLry{>ndXnPlWk>mAaGxPkxLN(E5Tegh#hy z;zIzB{Znu1#ol3qUfm@#68Lm_~SAuXw#vII0&Kcuf zn#uM0u~O35zOu>A>BmEB6X}H*P68B#U@>@W~q&-d$R=GZ~_1@ zn>azDJGzh)dMTzrsVt0VB;sb@b;LI-EPnx*c1E*m<5~1UI5MM_I;A$TGv_%W>Xd@t z7jL}WRLMS#uQN3xncgv=RH+#^hybJ9fc)qf)0|uuo!At0kc@o{%lV`!bV^!$3S|BX zLCfg4GO1fiTRv^z6ENDr~4BLJDG9b^f<(4nDVE@4e*vdoPDzyH7>A2y}1ZUL6{fb@zX6S74Jb)dl8H2_$ z3ge%T5FjByrOy^|NuKvt!lnPtKTmWNDtfP2rv?``3{x}jc=cULQVkS=hpdhR>NQUOAV}SA6k{q%vSuh zo;l)y31{}-K~l-3Kmh;UYPFvAw&Co0?;}ui0Jd4E;o(XH3ffn#x@Am#C0w#qQgolU z7X{d?ihrXTvc7!wb;0J_UNI`8GFknERYzDSG347{B0(yhuqO^(6~0+Flah;NQ=hOs zGs>ZmvLjd0bvGycU_<2^*{vll)upB!$0FBb;hzjlHXhmj8!dyK(MxxB{)}CUVJJGx zAy70j9>0HMOv$?PU^$N6j(|d@NoDAQ=>Lq;#q83Z?k~R)DU5k*SFcXIxHI{8=KW_I zV&nIvOO2d;W_o}o6fs73fOP=Ht&n@4U#0r9+>*`*QeuEf*(WP$%l21t!@aL5-P)_^ zXgic3hj8r@E(E5^lfuKb`crO+lFKpfhrJ|=T>;cV@V=eQ!HV!V+e_Ym#pjW5Z@HCG zX7;CH9Mdhxr+H3?7j}Q-gn6ihHI7z}1=a-1VR!oMFQx6G(;PB{6F`is>i^cbCzr+L zD`_@i{~jz+);g=nuhVkbLpNz?G=(`gm&K0PQU4rGlXJ4Pm(4nyV@n)zm!Ct%md|t6 zw?&=5-Co&SH@r2r#8WLm+fsI~%E|tCmZgyEKdAE_rG4Cv<29AdEpHbc*pgd^18`x@ zDQ=U(#bv``$+Bb9J!;dv&&4?imLs+7XSkYEXA4!~_-AidNLmG|JPK`G@}P6{m3Ofi zOZL~?^y=GklV5(B$j#U{Yct!QEM2<9zG=wdVy%hUnsMflCtT)0=}$84HC)y$BnSz~ zZYDwN0kg@OD0)`I<%sfx6gua~v8^bdRS}j1vJqRVEiA3vUR==W!I)$4ePJ=dozMgK zKL}@Y%_XABPR_x$VU|N~OD^1>- zMh~5ZS=;dKdz))Cn>&B5BY#D1T_mjgCG#g7yCxd$MA+^je0D+__lo=Wh~>^GLl2EO z=RXBIDUAvHcRc(AxBO;3|BLcE0eE=)b5K7`Njcb7^>Hnrq8+Y9CK(ee;&v;KAEm5Z zujrDJ+x>5kt-1n^Kw9ljbtKIBh`vk|74`5?8WKDf#$B>)@3SJ7|5UE-GHfNgc%mEk zblA6u%lmAn-dHu)mfGZwzCET>x=*%y!^h4mbkB>AU3P+Yj*|MX0f_D2=(@(7e*fKj z#3_PTlFsVITt)ybvR(X8?g5; zxg*V)H`uOAM(k?#+wQp0@a<@)aTTrkSdJ7EQXUXng$tr_x=23aO4)mM+tc8ivrD0$ z^%hjK;_$*{BcJp=?4Q#wuA-*5?eX zw^CN4nX-e&%Du+8P6BVy$Pa+|8-p*p=@c@`d7|K%zHa-E%B9bXX zC=|CRD4KCP%|JZjJX#@Ir}^LB(;~Qi^b2?ts^CYg@m>S>Wfu^I5)B0?pC;G_WoE;- zPGN3#{xo(R47$9hO`#qO$5y<>fA0z_LkK_+gi*|mjOvPkvob3Cs+tyoA%Z5aEv0d# zW(iqhRo%kiUd1Zy+o68&8R}1YPPntxv zT4Fih&=CflrD9OL@-i{=W4-HCt@pY7!D37B&x8H*Tjb@gcqU1o3x%U^R5YBH2N$;k zKwvhLd%}Ou0yoEmu91@46;F1DyP38n>e^0$8x{1HV^M!Y|NNNhwz&K4-}(8`J_q5G zEh_S>LA>qLiw)Lg-03MRS2V36n=M5w%_P>Fw-ld8UWNi$=r* z7V~EDbWT$+*I;-JlngJ|`G{(hP(qUaatJ9^IL?g$oK}R7@y10Sbz^Q4K)o1lLK>BZ z5rJ_5V@mMr17+B+k}%XK%ia7%VlBd8^~@*NG`I+i5B+jIT0|-e!p=l0ixU+^t3Ij* z@A^;Pfffc&GR*8geWe(}{i=bnnfvJ{h5*mtosGmBZy+tfc9DR8!LI@+YvaGyPKXcu z_j*Ei*q$TK$c+Q+`lC}oBV-YidanXiv|+^@N)2t+PdW#gR?<>xi|Q@+X^B2H0+)M} zhdd`f>?A(RsuCmPiEAbLjEOLbx2c0(=`DL`;oL>ilPXo}JF*iR9Fekfhpi`;16$k;FHI_?^SIXR`E>9GuI(B zVjG>NUAfmpt4c8wSu8q+w~0ubZ_=g-Ooj}t1ptGG_Gl&45Hr&tPoh93^yxf1vz)Kx zq5PWIi!tV}#025o=c>5LnTJpB9Dnxw82MZOzr3KYj@?$@Fl+HoRnB%^eN;K$_fNz5 zP)ns6i>7#8N*ONCP zS#S4ry`<2$7vMUx`@r~~MAhiSi^#CgJ=01Rh`8ZgQaNytrUlWu<6(@dBv7G&%9qCL zF1KG^)#(ATx&fQci%PtV>6JYKGREQGo*B-M-Rck-tBJhd#>?`qvbRNJIp_lpn1qyO z2n#%r1e8MA6Y!a)aavwi3i<6QQH#FMzD+}_Nq*#RYT_W^_jJ= zN0}~*2UJ8&o;+)86OizC*OQ#w1S)5!-WLSvo9O%Tva8uZV{fN9a-r0zg?qURR%>Jy z%9*%d5RAWTzi@AH&Kb$j=9Ub>(v;)1ygf=+L>&!?%w+-3@}alHS4W?bgm2-hoR2*0 zWu5`{X-X<{?^f6|JoT6q8GWJ6;f;dxwAB~WMG9m16dNqdMH5X*AH52wnn?0%cuBv2 zq4SN7HC---3J`JqrOsVvz+y^mbdN}KC^nObgXswiwsB2NX7>f~Y6xF9B%-M_F}k@G zmTJ^l0D>`NFSa5C#BH?l)@_E3>lnRgF zWukolnoa|lIB4Z;f_~A-sS=&Qk87%Gq2pSD!a%~>>jK`_`nlv0f@k zo64=0shWepCicaRs9SCQqX(f=t>2D2ZXGXPKaBjTGSFi7Y9M zI2l?+$G2_D-~CTe!5AvuFrgrSs+0ajAD=oMezhCud2qEGxH;IiV;CTja zFnVD5iC3eUltAsf`@9pk%<#$f7n`2fLGn}OKfB3+?NhW@MAohFnu~vbZkT{+^0z;D zagkP09gAeCuu}{d!lvi32k`2l>occt&h@7_!9wov_kZVDxO@a`xeI8U#J^bLM*r!b zmS0bQbCHO#+0Dsb-H=-n+j(3V$z%)^YFS=W7dCvesD^*h1`0;VvtMYX_MGsLA-x5w zh<{G)URNXf&eTu?`TDw)3Z!jC?BnaGLlUuOZKNYaLw z7a2C*1F!V8(^KXk{-WK)0TmBkV zDG)_^S>GT~JHEzjPOZSG(TLGWexz?*`Rs0&DfREN=I5rZD5JI!J(L{3H~&bNtbPyw zrhcQnLrc%+L6Xk%F*en5jYJI3zsq$Xd86;OGY^cWlT9BbSLmoBC~Xh}w$^spTy^0Z z2Zji`oe3EC&0(ZKd;=N%b*82VQ<#jA!3(-V{hou6tKnWkLEH0!h*?XOimA*;qZ5fC z*0k834JA5oU>D?JUs+(GfKB`Xi+1Z6y5Io5Ph{;Bl~}XDyPW; zW|%=T%<(~7!Fr{zLPbhn^^L)`ASv!rM%vW-`Kes)^QAA->mR-L-P%yyNjKbK4m5s@ zH5MgIIGHdR=X~RP&~xqU21oA%XKG55@Ty;P3{Y6@wj2Zq(7!2Q;_v+Go^xXJsuhl-t;P@dZ22Vp%*ea7h_E3(TyklJ>f*p#CdI{u7lS*Xl} zxw8=a%Gon?{)R2kse#K-G{&Puo6+Ya^U2V5l?etRhP-d0`$|pV^-%RtIpe89Eb-t5 z>#ER46L8e5*yxa0)2i3U&E1~;-Bc^rwAx3%?D!#x7SieU4 z22Wo#x*V9g#`N9It7LwPdc)#Kd(F;4P0(ndTCMC=`S+m?A4UeK@h{yVeFG)D=jgZH z`l9>wU=j9BpCAM@Xkc>vj$L5sBW0JZiR!hwF|Bl7@pEj3c4~%BF;d?r)8;o)W@g$z zn$hBiS=@!00G!#_7-Rj2`G*1cp~j3EOd_l~Q8{eSGIQpET>n`Mvw0u{0bpii>tvGZ zqCk*7i^oGPy@MAYpR-V!PUF7p+x-J^>lKg~eCK z_BAHLR}_Waknp8=1Gaf-nc20JokwC8D2KLgXjbo0v~=;8VOCmPIeelb%Y9uK9_iGMDQw+?f~qb1J=SiC>a z-dmsbVP*}fiuLW~;h4*o60s1KnhTG#2p;SUv(e__2k2yx7$tvT2)*}mEaFHv0*lqc z2i@QBvl>aU0xh)-xzN=4y-Wxa*NvmVGCcG(p~)JGveXupjTf3?wM0lDU43Q654i39 zcn@(PVrjS6c4-GQ@4GocJ5f-CpHD)4M6a}Ouaq%qII?$ed!g@R`pMDvQbv0#@eVV8$^Yax8szgMt>f_MpGP(Sn|H*^A7>dk zK1Df+N#DFWau9J`Ds%Hma=97Ix#@!>3S~%hSU-{pJI@PD-`{Ke$40IBBYPQ;Jah2H z*54Z1pn9(dyi5YKVfoYV1&_>AdEHonSJi+dJ=jU<6JEFe)V{iy$L0RgY{I}01*!W# zy{#Xp9LC8?04Ph}$U=S}PgkSvjgDIVWZJ6L_)^PsbLk7bUODldlCH>ynqpP6uQNp} z;outbgFZRE zR?KknJ^y8~iy<#Ftd0r?N zpYT5LME7=dP+{u(F{*kbwF#4YfU{PheE)04%ilF6$3QS0*F0f94NtlL-sF|s-Duv%c=pg$h1=UZ@LDLEvvLsMj^8<*2b@<6htwLneW#BEyvG10GkzRA! z!!Ie^fgcwX99k8|Ru!K2hXfd9n7?e!%3f$={xEJNkLQpkdct!gKjcE>YL4Jj&bMb} z7qUKnV1E11n7%6L{KPBc!;_KI+{4@7eV+82b7^*dD0)NxA8Si7cUa-whnC$*!4ZKk z=@m<-XiM%XmRW@Pkj2!M6{pRNOM_dYEfp){TPnMcnckkNHlLPDwp6Hxc_3+rALLC& z4N;>y8G5jn@2$OKu(k2%Xj3pK29O~#`idI@Cu8YK0i4M#^-PfRim(?i&Z@&(m@sO~ zQlRaip}@edVsTP~#rgZ-A@KOXa)4h+KECnOmTu*=os_;N@1;Q_hZYzN67o_Tb0F0( zotMj=SG{AYc+p&~b)NMS#Ek?pUZ}Qm_j9wQ(Kv1XcL&V}jbPvhqBtWerMg4_IE)v7 z{tmEvs;}1Wu!YI_w{P2%hEBoPq-Je&{hHG7VO+<}mXCjwMktg=`M}-%Esp_R{0}+W z79++j(V|4$6KtDlU3jbxmc6NMlCOXGjlsyn>kV@kFXsA&YuY&WBQ7{c4f)2y z_EJz;xBHhUKePD}y%ij>`UkakFNW(o?%o}>ps&Ckrrzt$Ud!}RE8HrSqEX-ZI>_gr zm|jQiJp?0ilJzWAHko?&B%?l+Mbdyk>rZ37bE4LN4sfCHQ3{ILLFjc^>6NdHvBpxLn*}+u)fmD$PjRB{OF8aAQ-Dev@nOqGEl#~Ro z5~715%K9cV?3O|^-0b>>;=BZKW~rk7NvWfs{iV8S&BOP72;rB81ttkJN2=!Q$ReRM zqgXb=8nQ}BpNtHInqL9DX-7-Uhi7ZhrMkI_cd!-dq`OrE(1@5A2R<|E2oSUGbmelX z-U~*~kI$+(ni2EirBZh$~1!sU78Ca)w58cA4_V z8?htYs0|g_2oS>{)Qp*#`6&IY<)ebkSu5{$=DCZLwKt@kFmoMrhSk|jr(@C`me01jjws%WF5B8TnUwD+XN|?pvoX5MJrm-gcgtrL=Z#--Z}ud6jHNnp@JYLJ3uL}RI+vkpb`UwVAv_mcFP=i{!p$jXOv2|^%hzEe; z2Khvrg0K*Wm4cxML0BZ<5TtWnJmWyp2oV#mDU1)Xa;uHxuKnqe) ziX}880g^Ch1Nxbl=LepZ3s&n^-^&T1Ok#E zg+|wSfUu6$jp%fyI(cRgFmR$r2Ur0oh#-)+#&xcBC5Q!(pwWH)6|jL7>|h&`$b=S< zKwLARKO+f2g>IxjSaWPgEF#&+mSmv^grGq+dsv5lc0rPO0RkEzgJ%h3i3kD2Daf#a z5a2*90(oU3il8lUR*IsDAi)NTV9oJ_lh&Y`BGYy$-ZBKDqzR2{J16gfr zUmM#45XChJAVpLa@`6)H0tN^u>Y!44kmwmCa*bQ7s{NWJ0$Yq38@rqg8;z1ggCX9S!u(0M?WpUP5{edh>I9u7yn#8e|MCfD( z;A7Ap*;tQA1xGJdUTxxm$)`vJ5)Y7o)VZ!hr;y=5f})jE_%?1@fhio;ZX9HqKhIvq;vq zgP2qV96%Hz58xMN3Nir_*c2fM2tf%%>>dfQn@Qnxh`G@nA90I--0>;FiQxT^d*?fa zJs0}WiC*-3j-2FMtMRV} znn{=si^xJIvXL>;$jg4ju`;*$)^nobraVCgNJvCBjb3(#{JbD&H~ZSz-gdXU2kHO+ z@hk!dw8*+&^65}lY|F7eZOB@r+GCTs1oO^y!^cF$KtRNHL3G-;Ki(jEuyo`n4|&U9 z9`kIEyG#hEwE>~LB#dpWvQ-jwzI#OFn60*Er~TvBA0GBHX)(t$Uwhl%9{0Kb_~tne z&;))S^i4lo;q9(^k({3Oq3=6pjgNKW#~%71(f#zPUw!LeANz$Bo#<;^K)Q3pk)h}Q zf}Vf;z#kv=VEcQ^fxPkHuE!z3#yzAk1SEh9cSYn3;0!aO3%&3R1%f{g zf(^m&00=PLk$Z;4w;7kCaLr8uGp54K@d?9qt87wtvNk6V*=-t>+Ja5g642Yyb}w>(FTm(GaWVgApMUG9ltI9`g_#*N_(VL*(3$B0F&*Bhn&;kmMLq z08j22KN2Ks;tj|n3MhdBCIS-gqZ;8u{W>T!SdkBjF(ys17t66Btp{9Sk`{UKA9Yb6 z?T{xi5^O{U3~zE44S0$kBQf&>{dw5DB19;4v1LGBU&E zCc#Fh8fX_As4P+OAUU%si7_H&GZ*o34xy4ObMqG)(;$XXF?~}sR}&U9Q}DiWG96Pk z&9W^+P=P=%E|0J-qZ0{F@&FdV10bRV070zcW>6l04@e;@>OjQwU=J|n5vXh~4&VtK zAxTJw6nyIdRx(h&Gdvyc1rR~39$~@=q6EaTN>t|noWK$E6Ay|L8y$fFUcf!21q`!O ztRmqNnBXyI6Ddi76Yuc|A^{ahfe%DX1|DGn%)$;1;12&z!Hf0)5Def$J1q}WVGmqU z{aQdf>t@0-GbwKp2{e>L7l03o^A>w?79H|7`w>WgQYwLTA9Yhn`!Fp(b08=)G0AdB zhm#?|Q7SnTOVv+0x0FlEh9YcZF61OogvtrP0z}9IF%*L_90M{&<1b8uAmsA_$ka?3 z0o`^(FKP%(aU(NifDBs0K-UBa(!vR*Vg%vYn(OLhYvrD5@T4zECB;rqcM1|@i)s`Tf zq=Yi6K(P4;V583WZ3PfB+KU zM4$)=AmB_;VPo~fQC@%nZIM=k^ej!0G#|1kk+oNW6=!)+7L9WaZLwK}b4u6HIC=9* zfzxQ2b6S&DX+J^~93Ub{W~RiI5k9FDrq)LI1-Ve+Us6FtZsq{$C8^?5FtKE62OkcQ;;EfmRSEbcFVF8f%ZxN7BiKz>Z%S}mlk-Hwpt^iaN@`UoY2AdYvK210oSqHYL6Wr|n*B=;rJFmA_^0QLZd$Wd||V{{CsF#C2Dc~UZO zRbeW}a$+ZA8X!Sa!2)(le+^&}I-xP8M`H!n0P5x>NJMj`%R-%UBj%TOVy7y1)h7$$ zLebD>1w<`dQ9yL}bvyV1VN-Uw5iI{_k{4|^N+(oi+m9_r6KR9jg|~Dfz{r_MPDfam~(h=`nOt@3MZX}BQ1q&mrHhKfXn`8G4I$9Fo>e0NcWSO|Iyvp3Z+C)IF^ zPGmwd#xiY0L@3sO$MGWCs1u3OB0A_07)L@Cm_M?ZhtRPb_oFwnau**HGJW$72Epn33mlBCd(c>>>fAtRS{GVR-2Pd})|k4TuY3 zl8b12w`m|oNqbu|i8LY%A*W~k@T`HXg z0uPG0oNKBe_$t?`x3Ajp02mq}B>EsI+8`|82rQGCH=3j2Fesn-ccodRr&%KY3(5j) z1HLN;EWij#K@vm^yOe6X)`gQpX1|Ic)lym#R=TBMx|L~*z%s+6k*l32Y`!XNt%f?l znj;l-i? z6Ye0KTRxn-sNi!U)UDqF4&NSP;TmottUKM-E#e3+<2DWy$>S3>3hD7 z8^4zsx#tqwU=Ny?+a)Rxx6NYbY(?$z8^IHt=#a5XQ*Z138^9+}|GqBl#!jVZ<-iqO z!#6zG7`(w>&*uLiJi1dZNzy3 z1K-=le;mlG&%>it#*MA}o|6XUQv8|@*_N&bcYG#-T*{}M%Asb+i5$d@T=}T&$OTaR zzI@BQ9L%{q%%Qv{svOPJT+L$z#-+2!NuuuP4$e(Z1__GJ>-?Y0T$9$E&->iZh4HRk z_|4}$%!Ti2dPUCj9LYsIum9Z9A05)G7^H)D&4mMqS#cJ;+NPB#*tznLNp5klV++kv=fni(Q(jo!rY^!L9un zv3<-h9n*ue>h%oAVNJ>E=AuXN<=*o!)5z-wz()I~d&y zp5YxT;U6C2b#vhxp5iYl;x8WKcQeo{p5tpS<3AqcSy10Qp5!e)7O3z zJAC7tp6YEr>aQN_S8VC4p6eeZ>%SiC^=a$7p6sP>?cQ)bjv259aSj35DeV|HBRHAE z9_s(mUPzl}?8{#7*{&_;J}PJP9N%M)@uMMU)f0n-b#akMi#71+KI@J4F`s7amE7O; zp5po5S8-L3<8UWulV+iE^C|Qq+fW_do>3jLCv_Jf&#{C{*YUG{@QYF?OTP;%vhzn@ zSqph@n6t@`4X-U0Fwb%D zU;pS^wwZ}v@H*G<|89bXR)bYoCRzA*-`(ATzvG3Uf{T+5fs-E6xlE-QHlr~GOaow ztJbYtxiakfH7mogUCWw1i#Dy=wQSqEeG50P+_`k?+8yvSuimj^jVgU8^5N5wNhcQd zi#V`CiG@d^M9Mhf)29&uFI;SyB4xf0rG`|hH?-){q)VGVjXJgJ)u*W*hFTf1)6Po) z3r(3cvek@JDaIWOmVj8k#D(8IjyySXvdWt~e?FJB^pa68Y98B^GiJqwq0%Ov9s72W z;5Sz7=-BVz&wrI#rQDumM~0wbPrr{pzyAIF`}=2|QGE7I1d?}+)dm$)LtX#(+H6Ph z##~##d1YL2#X*N*hRzA3VTT@O_#bNU_4Xid<1Lh(WwKRQVt^?AWukdeLFV0y^=%}P zg&$qy5rHsTNLz?P4oPH@MjnZzO)lCvpmm?kR^N!-!I;~34z=jpZ^mgg;Q)MX_2q|R zj+qvRWS)tpTS?|MB4ZCCMjxEC9oE>Jg~eH?d~>e27-T9kNn?DuJ&Dv&4c)kAqKYoc zXrqqSbfAjqIXUNny=u>ahYzsqzV_Ns5)+ys+Xdod+w_K)+KFB#F`f)Z#){D znTbmpcCf)11?aG{4)<1BjMaAbaJ6kROKh(Je++WSB9FY_!Wo|&F~bcLJaAwN8_XiY zpK7@;nCF(7CPHT&lopE>npu%p2>)E&RX~%tWvV`N3G=^B157e$%-)x2Y`9I$Q`J## z&2`sae|=N9G7sHvx$L5abI$o{#WUJR8^AW)1GMes(LZx&mC$$Zoz>g)20gdjb(j5g z;c0>GlgIdJ%_K^UXN@)Dl21-~<rrI}86lxZZ%5)%NM9r=Bn1 zb~A09=!Va(rscNZj(hI9?_RlenU8B%=VpBldfaQBS1Z$N>&ukhOyeu}>7~yd`*jVO zzB%pMZ^e7}-hU5%_~Q5XJMeW0Ul#Gj%Rc!awD`FIBAD(m?7rz4@7meZhgB|2}BI5Q=bwBrIXb z%4ewHH840UJQD{;*Dlk&&UhKTAPuGGI-=Q3EMSV@2MuS!APRAaL@XlJP&hNWEYM~x z>|apywZZ7&4QSV^A?aB6w)+X~b$QF+54UH;Fp6=EWGw$9OOTjEEt#!}PHfur09UjM zKJSJ|)8ZD7vOgbw@o8r4qaXhW$O5739d&LW0UkS^+c38T7%?oGmLS+8} ziOEcAa+8un;}R3OMoT(PdZH|4?Kp|bRH|~7i}Iu)hxbbLnNm!ooTV+#!pdCga+kc6 zjw{b6OBUYJRKXmkEqjT~WGZu+G#TV4Sy;(LM$?$otfr}$iOpkOs zoaF4#AkT@;bgFZm>};ny-wDrn%5$FdtfxKiiO+oMbD#X|r$7G*(0~e5b4r|~=OXmX zaw>G8Y}uwm9}3Y;c9UkoIjArhiqVY5C88Yds7L>cIMG7(t8?lqrbbVC(vPZir7RWT zFGX5WSY8yRG_9#tT8h)0>eO~Gg()KsdNXg@bf~x7sZo!LRFU;`jTMsRglb0As46t6 zRIRF2TZzPkGI5&evyfE3%FwHdb*yCN&r(JDNv?u*t<)^5Ti*&-(wvp8bgk=K;)>V2 z>J?I16{=nTy4Jl4cCds!AOigg*u)aGu#9aiUgxUV$o|!_l&$PlA^TUvW~i2u{g7op z3tF9G)~+uc6RGsrSqz1CwXEf6NIP5F55+dMV%p`OT8rDB%Fu&%bfnT;lM(ve z5w*jmOL1?@lc=0TX3J%dUbNdd>cH2#Cb<=Yf|aa3CChq&;;w1?RF3uCw} zlw%NP#KVzneGAMcW0IFAHRLgi8N1&RbG9^-<~HXjMPLq!Zf?UdIcN9AN{$nbJ_B7K zJ66axCUbWAgrW(9IWUH{u%V1bNXh?lwuck6U*KSuFVSH+(p$a@<*p)`8Bu9do$`}@ zN1dG#8>rN&4pvo+QWUYlx>u1x$aY*apBeFrRwi+iuo|WjMz@L2f^IF8lIs~eMW#=b zqP4DPt!PfA5W`Szo!l}@GL3`tpRMcX0u_6;$>y)U$!#e>LAOe~>P^wSP16QjTgqOITj;KQ zo5_!tQxJFpM!_M$~+h*L)20M%ee5`@ZSU>@{d(bNjq_VI3*p89Xu#2J_ zPd$9NQJ4CZAsMvQU7dNb)4E+cz9)R++vpi9GrrSqEraJN<(*OXwPx-nNzJ)ErdH3~ zZIp05#fJ0hAry}d{`bnlOzEMoHOW)2@6C5x@#f<#=Ozx}DBACdb*u1$E$`lrS6x%# zkvFY$QRiJQH{a<1K*KgOBWL7SeubW>mw}q@$9?P;F%XC; z8)z{pQ-Ac;Y#qoQZl^enVR8tTAZ%x2_D67L$AT(DffIOvOZGAlf4kKB$Q~0op>gi2#TRdK4|EPrI;q7 zh>EEQAf#xDtyuqCstAj*C>o6DinVwgvWSbhxD&K!i@msYx(JNH2ot>Mi^X_K!ibE? zXoH7kjLmo)0|kxID2>xdjn!z4*NBbTsEymmjos*t?WBXwD2~cVj^)USDr8dP_=Dxh zj>$-j3S=(nsE(c1j`awP?-)+;D34FWUKlcI+2)J(D3G#l30-6 zL^CYukNqesYgjZkV<_i^M+%4)o%oVLiHIQyRERZ_+q01lraEVsG-v2H4+ckP=!rr} zm3l~&uyp@n`}i*n8D*DdMUPiuQieg1r!?V+VO5Eia2S)6)IbPjmSn<}R%d`5B0D;R zLsL{eG}&2c$(LlfmXoB9rJ|Lpl9b3NJ3(`pQzSF=@;032hkXf|_E(T>8JLv$Lne8b zVwr7;$(Z+oLtSKvktv!3H<@l(nWp(cCh2%{DI9f)m+ezFsyT(DNt*{&nn87%Bc+$i zk&&zUl|ETLkcT&9A)D)1o5zV;_?R}iX_?wnoSB(?O}S@#1C@%IUAt*ldkBK{6=F%U zEJ~(aGQuo)5@^WjR`dmP3dV{QX`0N*K-<%sbJ;^b89x>=pB@B9Gg6A5hITJO8DS_B z<=Oue{xu%O;Sm9LpaWu_gGC}lHyu~WL=5Df5o&qGS%{woUodDOC1zwRrlBxmV)ON4 z9m;Mp!e@>FZ+F5Tno(m5Dp-+2WF=!BGg=TyR-z$lV#?W`x%r-2XP+H8Ir!ITxt4x5 z_bVFVW%5UN;&&(-LvD5EZxVxD-%=y)H(eD`e=fRLLRe^Sb|?vVlP?!@auzOoMxX47 zn-ls|8wZ-bh@sT+9?-UHJ_dyfqG)nDYqDmdu~v7WwsWQTYY`Z5oYEsH=7m~XR(2L= zd}?}8@};|hY@`-#=;fFODWN<{p=|1m{5fEsH)89dZb!E#A^Let*m?|iBKwAPNeBOb zdt#`Fs#oaMCbRc(WH%XIIBv5NN7E)DC8efoI*;@iq!XiZN_rxcQhvpnq<5BuO9ytS z>UTLusBiaYbcZMa3aeFxDYM#nwg;v+rXU0(F1|*5yxOZ48JIB@timcehqrq%qJG0h zB{&GLm0~io#(AJBdjOVq8@3}ihCGIrt&in?s>dDP`g=v@uI~pc4p)4=s+*NLQ|o$` z!&-ig8Z7ZqtAc{DoI-aXC<(pM?te#Z)_Ci;Jlwsa2*vBPnx!ZVmX3s!r$j1mZJ3o|iBRxlnYhbpEryEb=XH*YBz zo-4RyEqb-*ska{Lwlny#HP~Sg12Hi}HWX#HI!jV-skSv$LRM=UjALA5D29g`xQQq> zbBI=uD^3zRxfLrynwuJ!+ns**gsa=RfrvSv8@kN1v(Qw!ru(|NdsKD%I|Hal_d>e2 z+g`d$yh#<4GPzZhiJihbPQ~lIJ9WIsi;(iNyv%D&&x^e+6}_VCnMY~8ij}?L>roKe zGt4Qu--}Y>tG*Gny=PmynT3=TNmuJjzuVNl206O3%LJi#lO!2aXF8JtTH9Kls6Q&2UMPlcPlr7zNJ!apU# zkW|8%%EH&H!7rRj1#C@G2fWjpyrGi6SgDVqd&4OVFF$O@VNw#a|4@VJyaDOvYtw#%GMi-^j(o1ZDDa z#aZmeSp3F3OT}=!NOerbkMy{1ImgXg#D5G(GCWRgOrdCcm^fPO;yN3rO12y$-;cgw2ZSu+{@2QLccsq1*ptV zoW~*@#ZWxOSggdOY{l0+$~gQt+3d{FY|etTo>Fzd!c5B4Tgv}y&D=b??^|*598L9H zP3Nr7=q$TZwZHNUCKKDl0^Kt)l(SpKv!QH31dYe#yw4B)JxA<{J3NjMZPDN(&3#DG zn|je5%{v*5zG>*uBb_@S9n!OT&VaBAr|<*^@C2u@3V=Y;mLt(89h&F73IQ+yfS?M1 zFaZIu3N!tH{cO`5ZO(we3XdQF47mxuw|^F0xq|?#0069j0A77xWUZjSWYS^%ZTz{NEAgM48=$V+ zy7r-C2x_4JcGtNB*Q`L-_tl??y^3J1*S7exQVO;52A)R-ftC$xILg^YcVsszASov( ztv9Igr-X_f*Nx34Ar_-7L!(KCF)8TTotMs&P1zRfq|Cacs|PMdQM5xEYD{W&h8CrY z`nU2&rR`y*)jC~*4K|C-+CRai7c->D8nd{Tg<;0q0q8SRjoaX>+trGs&o&iwS|WBD zr}(<7^v0-%;iu`wDJlDE!e$#d=CZky2#cKv)7}3Q$Q`M>7P8F7D+?>&I!CE%9Ns<~ zqZwN zZRd30z2K8ItO}#7F9&j|opai;ta|pJXLhpsI&aa|g7Oh+*Batrv)^&u-zJ_D+nVAp zYaj`mAWa%`U#qnAdZshpij_UDSW@9Cu6p*W#49 zUn%i;@S;IKDgWv<{{PFr3cszc|o)HmTByJIOxvyO`4Bs+K}TctI7gttTI zbsjbk{;U{Ic>lGn`z7qd_iFbYF4X#1!W(BT#wq2ek}~cjS32 z4roo|F2d4l4r;rD~4(xnYW}B_;cWZKkEAKWg*|qrWMP0ej-5Nlb zxx0>pyR+X)&D4*;3QgYb(ek;>*o^sZ)6op@v*_0i9CgWS#mS~Zy5z#{;p>0sXHYP6?1@ZGr z0Vc3|> z&#!{n8CGcf(?2bskEZe1!@S@7>BSa{zxAyN^nUO9F?9EV|M=pM7gu)q;a?`q?|{?~ z|Cek1+RUCUtSSWv_d$Pc>|g)&c%S|NF<^j!0|E&gFktWi0f7S-3M6QN;X#B76E>7M zfIvot3>$s~8B*j(k|j-^M43`$$OA21zJwW5=1iJ3ZQjJ0Q|C^eJ$?QJ8dT^|qD74! zMVeIUQl?FvK7|@p>eQPCtX{>6m4L^U4YzVVx%K1Mu4T=3jVN*BLx*auvW>Wvphtoj zA0Bi&*RD&vcGb4@2zYDDvxN;GMy!(RV#bXfKZYDx@?^@DEnmi*IdfLdSH+$soAR^4 z(TPo?T}TiiSc(e|a$URH?nk|`C9)+Q_##A?95t%0cv|>y;wCj8N1j~ya^}sQKZhP& zI?m3WOLq;e@#}WjtgrtU2R}Rf%F=zupGTiw;B@xw-M@z)U;cdh^JqRdyuQ+_Km`{p3_k}SgfK!0C#0}K3opblLk&0NutN_&1TjPrMha|E{BacK9ItgJ!DZBD!oA{4Kz|oCmkP)((^)>>P|HCJ7C2( z&Ru=?<+tA;;oXl$S!cz!V1p6!H(`YrW>_~yt4SusTp(NU|z1#R|>8+&Y zg2^qJ23xJ@o2O1$=$DS3jO9iL=Gs3=eVcMO^1vRCqm5ktnWQ)6!iuNZmQLzzs)+85 zqS*T5i#z|AzN(vQzf~r>?WZN68{cqbfmis=uioPoK-jW7h_0>cF9KxMR zLOgLw7Y{qo$kCphr7&|}4Z+!&-cGf(tg@cy!PH{9dhEML5OeFJKL70SO}{>S&zDAB zu$SZ_oci1E_jh#5(GMT|w_dkfUfg#z|Fti0;L{)Xpcg%ZNbY6&X&k*ovOtY64kI36 z9s^TSxtOr+d-~g+{-UP2z_HCW3M63&wc;7xfiNyC6buaarWyt2<#K=Njnm|ZwbkIy zhYJ5wAN3BXLhii~ZYO+U?ci6$6pqe=2|OMHGZ+@Fc;$d#gQ681$TkOpB#Tz8AqIWJ zJq@aDdU^vO@3ben5f(3v@MB+U;MhZ&s1S~Cqn_LXIJot>rhg$E+z$o0ue>Ocj&e*R z009G>KCW&pw(;N!JwrhaP7!$sjGX^=6GSrprh%ArSrD1$L=SEeB3&$F<=TcoreSiC zIc#IyXxN{)q;HnoIi35kMz^=|u#Ex~Vjdq!5gz(-kjLa!?_znx&mFRavwY?CN~gd` zUe1Y0)t&^2#A~JW0%u4?P z*SJJw%94q@d?XuZC>XqT?t7x6<^YX}OolS6pZ9Fd{~~(LBi_@HL!8Ski^#%BzOzZ( zw4@lvBDqmsWQy(-RX0O2#gdNBqh`a*b(z?vt;5gX?i!C&UBz7ROAVlSx-RD zk(U!qOAVpfP^LEPje%5MA|V+~W%?45NfaP9)$&pUaZ{z|9BFr|=*h1(@RL}1 zRSCDPG|mvP zcm1604Xb)v!I^HA30!P%2S-EU*|mlCAbHqsF6T+PK?Yv8gkH;Ps7o zS^L0pl6IW{HYZnGWk|}rm$8a%3WMuA;rnSeLfZA&elJ}ERG*<^5*bDr01XFm6NVQAKKph@LtLKnJScouY`Z)IpkH`=LyR&=EO)<;U`CVQX0NpRHBlY zN%ISjqRe!T`;J0l5{dbWXHPKw@#R)JKgSgx5>(* zC-t<7oi!IJ_`rEn^|X7PD^wS}ND{;w-DF)nhR-@B2flcRSY#~vhBe+bzj^Cs_uv-e zJJkt~roaQ1^49YTZV(HXtPKA0jek6j5p@1dmZ7v z_?Leg&R>%HwXaO>y>UJB*F*Ei&tB^}e?DKLpZmm@o%sI?`hEDD9(>^kPBfUWyz~{1 z8`-P=`|I~6TY?k)_Ok~47Fj!8+Kq4PzrR4M2EYImzyTz{0yMw_M8E`8zy&0~^7B9S zBd^kfpy_kG+&d*N5<8@mKkAFVu5$=T5xm=rKg)x_9}&M3Jh=v>nEbN3;3&8cB*C|% zJKa0GigTHy5;_WuJ=|--`>VmPG&EX# zAX|jETg)_F6h=P_zOGTjQv}AB8pdU$GhPfC41z{7>6v8AGiJ0#Gjql{OdeM>MP#JL zDZ9pSGIA_OZtTWsOh+kW$9iP4>foY13>a>-!-@EeP?^U# zv&VrPvi#VrfGNjq3`jL2$c9`o&fp?aLdb+f$Awf!hs4M)(~2j`CWxWPinK_9%*c^! zs*SWTeLS3xOsSA$NRo8PV=_sl>d22#$(8@S7HrgPh2Sok`{O*7iyf$(9EC1%#SHat(aj<&WuYmlpxR) z&DSI(fD<&aypEjgM#uz4*woEKlTAJAOVyM^Z4A!H+|A-lrrwk@w}eM|d6MDGP2+@4 zXKBTeQO>ty&Xr`%SB%c>T$brvOd9`t6u1n|zzk2~A|h)xV5;{Om$VL*i=saM5By5-CMi_Db)(>I#soebr!P zibJg=#Ph1f8@NGC)*-Y%n;StIgh2om)@elwVl7sa0xb#5zN^te>uaZ(us|qmRFS0C za(xy()v{|^AZzTc=-3^mt#?G$uPSH3d|ZS_92Vb(*O*Kl2_Nc2&B zMc5BJI}h})uM04P^{j-|Se=N~%)~vegQMLjRi`;TRAr0An=6bZ z(v4+Vn&?>2`&f&GK2rZ>Rz~uox=FpM!`X{$*`Bqn2l>^28`wbf*`m!M{94eVEmNcQ zS!)$qm6cGYZQ6x340&|8vXoku&BW8(Qjf~oo;5?R=~}P-+KqKu+Y{Td6|%C`*t4xk zwOul{P1tHP#3!AemCHF4)a>O{=ABF7@ZOcGQ<({0@l{^Q)yC&V9`w~- zM{&+$L;v;1+PqxLMcZMql8_r<`K4a+{f_LkVEav98o^EX zT_M=0J$(YyD+;hp$|M#7!7Iu~4<4)Z>O>GOCldyv9@{8y8moMg;6laE?d6Yh>D%L_ z$~Iir*21v^>nb58tCBKe{t}~cf(Q?$i%hy8B1U3%GBE@5R4IP28^%%!mP_5`N58yD z1)g2jqKm(y;vxpc#tEcpR@dKASu?r%}q?5q9J7^zyL+o8#8Q<4S(YCr)En-sC6lj5xmH81}Bsp^fe; z^j%zRX-umXG4l%HP$C=u$}2ezvNd+&l4BlBPGkT>WLmB|;^Qv4&{?xHh(%52 z2HjicEno~@W!bG4`CME9)rEm3yFtX9 zkI?D>Eyle}GCDSm_C2ZhWsrYH54o<_x^}|5hEMX-YtOo9@Z9LNR4VrDUYP{8g)Z#- z$U4MM>;|MrDSIN~XtmD{l!z1%!lrA?K5WfCPZh+>-UZx8J?*BkYt`Ot&UNizWIL;t zLhRdC+TPBWz3tkKZF3@>%=T@Y2JYZK7KM)KlWyqaj?S}HZY7JT^Mmfyrr+sSvtIu? z=5xAk7tCh!8sZreuiG^=mtV(t@gGOf5zk)@=HW}qv9m(z7RP0JmAbvsWS{0r zTNd*%8Y|L%Y+HWhZ*nbt@^VJ8a(2e@LY|lnJ29e`WTYA-4bNJ3cp? zAR?`zHtIwFu+Y*D@IiDmsq-tp^HO2>lsal;{%IkAR|wDM&wlY=x|O{jRxp}AYMSH;YQ|hCq|oCm-Sf} z^2z0AT*t>)4r+R~j$BsMO$Iz)4eAV<_VlWvzeaWkIxnvT31-LZODC0Q1~)nuC3y|7 zUH9}F@pWv~4|TF;P@;D0h4*78=lG8I_>TwqkS`HSG5F;H;xQJb;nQ-45B1L#=_CK{^oTESRFC%? zRAGqs3fjXMT>XdS^;@7O7Lu-%uqu!#Q7Un{K>YhGvj^g??&Ub+y_^>zd zqj$CP=<$2|d(lX6y|2%)UqMW|@xTsz-zEIouJCUJN(-NC$*1qe|8Ks3HF!=F%CCIO zr*Ig(a0vJO&(F)y_t4P?@5eX&Fhl*{HvHB1k=Bpy*N6SglYQf){o2R1+uu#~*8P&< z{oc?0-!G8hFV5j7{>nCf*hK#1AME94e$03N%!U5fZ2sv-w(9>E&Fjbh;?Vx>m;UbG zv+tKo?sw+q4iAuR6ZA(!@+VB+uO!$784uK%^SeU=QxNtyU%fny2Ge7JI3RE!!GZ=4 z9yFlvz(Rxq8ybY@a3aNu5hV^(XdvN6iyl9MM2ImY$&w~dqD-lBCCipBU&4$jb0*E2 zHe+hcsZ${V0t0>m4Jvdf(V|9=B2B7vDbt}npF$k~wP(|+K?xl2nG~zmjY%0=4J#Dv z)~sQeLZjF2MejDg&#qm$Wu2f$gAXrW=~L3*%Nr%jH7@4A zKCu$i3Rke{xkm%P9`3t-N51fDbM;?-0|5A!Y4N>fpjrq9Cs1i$X(W@WA*`$*+b+^-Z<55|qc<8+~B~t1Um)u-Wc@-RJuJy!WeLsa+R9=^v zcA1K8w#8vq^S$Ppo3(LyXPqj_=OCR#(Mc7V^F9AKTY?c8Mp}Pv{n?R?ei~F)kYLTV zpOK7q6dF)wZaU{fm^w%xLvCG`P*D9Pdgz?_&DWxH83M-KSpF$0&|sRPX=Y>XXMJo2;_SGTT^`-W6)4w9{6FWoS`tSto#}0XQaZQ--Npn&}PbE0?6= z#wBiV5?Cj&q^%oop{lLMXtYLYBprRgIf|oyU~y{ZVHxTQmqKXz)-S)dl33Tl275~B z!=W~3@PV!xeB5jK!q-*8#&tZ{UCbpM@WGkFm*8uNX1tnz2fIw-qc4BF@x*3X9COP& zHrun$KLZ_fvd?OyCACK*-I~!;WqYR6?56*=n^57NmZoS9!~1Su=o;&^)4q1?wXgJE z^)1*b1NHT9s9w1i8o(bKd8FHOj~X|7qUz_|uW<`lFW;@+-D9wLoAu_fh{9d3 z-iIT8Ys!HS{OUq|EB-0ms6Gzq-6UJiv(TfHUb^Y0*F<#D_a@ys($-#O^sHXDd$FZk zUnSAgtf|d#?H3pHUc6zG{gizLP+U#7EjB;`41;@ccXxLU8r&_o2G`*3?ry z?l!mt%RK)7dvf1>w{F#&shK)e=k)H~d#|3V>F&LjcVM77N>^1Ybe6k@Bx-BR5rv-s zn_jc#r=@dv{4Ta%#HRK(tLV%E&UZ79GAX?_Md>^n)O)z>mA9zL+55AWcbm@h!jVEH zaLr)NW!)?XlF$xVGM2!PdilZX)ci}L@j69gJI$h{ zw(>9d4f`JyezcRk7u2`RCex}fpl`mMBD7T?PMVZNs$U97);%hOsPYs?1+sApL6B#B zM$Za5Ei5Sd+ADc@K7x*q!+2gweuU#B{2mBB7XJRE91tF~;HNXx%l>|b)Y>QUbQ!ac zyXQh6&v@f<)Qt~b> zLi`=HYnQU;Qu4=$m+m>EA+p3Z7UR)vJQHoooE(ixn*Veru3;$9Re(yCoxRq?ge7Zf zU2Ah$vQ#g{I<87qPDJt#wMD99ra=42<;6)RR*x%-Qzgp$tC^ZoPKZ;r9>t@_0m%J; zF6mq3srp;$?+_+7vo1P8r$-8s|3l;(tFc4&7Xxp-Vc_Kc3S8w<)Y07byTM|Hi| z`P+`L0-(ldfXK5-{J45S;Lw;vApji8@mO>!0@fgMxT!Irb9mBLY4)O_2N5s*Dg_QLuu8< zZ6SAeR7$2-oY-cZhr8ru4zur>jp0ywYxna;?YG8>Et}2OK*A3!fk?L7umjvbA^I#q zq{mBdWIX-oxhx^{426~jO?~*AEMXO9JE%cCgJe@x-}!BKF^aU<$qiVebk9xZQh0{g za#>@nZg&axct-f9ln6Go_K0D5hxk9SB}Cam%(Cuy21E_ml74&dQ;YMCs{(0flGpd? zO`p=$HrdiTyY?uAc_vIg-OhB`9R1ZE@=bp^VJ|?kI|lsKo{ltdRRMyJrNuieBP=*d@Q6<2P5I{5GF(geQNAh$@y!>y zrOF7tNzqryj$uhO7fORqH3#sivbi|jjNP!0n-AU8bSbJSvCa%(`Ij-ZU24bJrJveZ z7Ob48JY9Y1462q^bQ9ckg6+UIy55UJJ*i)lwJCL(Q&+EFYTE?WF5YQ4HcqjdTUv7{ zy;p4N(`8%K*x)Z|Szm%0qV?GVWu!|XC*BHghb^8=u!Hlx(;2s+8*WSBt1#h?jf+yF zu1ixTy((F1x&e=#iZmU`12{ECcK1G`Hw?+e%UZtnsj>8 z|FQ5;89#R6TlLz1`qc5;nCh+&(s@j`SNNOzU^rH{a*s$enYSI+!f;LCOlOO2%B7|$ z_}0hzi*#1qVK;T$!NqwQKEJBLCzk{@{e$0|$t!!g`0|1L47ywVTX_uEcDLD^CWd^= z^_X`*dWaNDSUdU@vq=0*ZOV*hiPsfl>-6UY-Ssmx=iTX2dxC`SxGy@E)KD%_bqM!q zA2oZJE}z@jy-)WpruH;Y3DdprIZ?yUai+kFNtw`$(eQ6B5?_m<$#<0Z@&H^SdD z0xAF7`5v%#vjF7s=W{k5Jo1oilg!38C*YaX2xd0z`5yngDeq-$<86p|w4P{&btCsx z@9#lo{@~`tivERYPK}e^fuah8GaIJR=%Wx0ES;fc{d#-M8dBo+7?Hu4l~K(~{)4ZP zb@iwF;*CcA{J+cF(3M7L_yyASMo4T!Qx&U06a*Nb^m>P;&^xB5cD4>?blLhA`Zoxk zj5pA}8{_7xpwktgAL=)H8bd6?ckmlXVG@k-=(h0aP>@5V308NA;C~VH7cAB5pr+z| zf-xcaB!2@oCbdo{AuG(4lnpp3Amt;Ir8J=^)!y?BJr33+7c!xeil=ZcOhZ`+OP_&x zukJ`J^!v6;tE8>F9YX1hLz=ovuZlxAUbuy){-w^uwVjONv@rFT3G;5c`;T2;<6S27 zy{~_ESzFTkt|eF&HJPyY*vU}XJ{b_AY_RF_RfKAJLqLm(gC6DFf@ zK-?GW(d1E*dnPgylPiX7vYJU6m@xJfu}BpQkAG?&EwBhD_%o9(nMlE8VaAWX%mSa; z%4yhkZ)yRzA^+E4I449w%2al@*g$0$gq6;vv|jH-P}Myn-9e(L15knaqC`h&z_=S& zL6PrCAfKpSFuGG2v+%N^-+e-yKe(&vMfpkSKyDoE_MWg5nOMcc2z(9q)8{kF!}jGCFUL)^sjo-EJZ4 z2s&?1bl1S-5bc?QSj;$7)FRb3-}u=8)h+K+hK2mIp-yD+gs3jE9Fak+w8ePoM|+DY z)^*rI$~98L7FQ#P!=fSbr`#35mIGVv2RAe1R3pu)LuWE0!(Hv=ketiPn>ZHVt-q(OmAZdibveAsIFqAyK2Ok^V9(9fh? zyY%>smT*U#WZZMo)ENzMK@A10@O$2&+WeX_Sozm}g*=UtzQ>Nva zry1YqD(H498t9fvDl6#>tH$Y)W9WW3@BP@VOz5txKGdsuK1~y)tEJknML#A*K@ zX|QaiJ&qtXPpvrXTE%Ib)lwfnGQo?S8VYTAvWZU|PMPukQP!*$x{N_N^WoGKK7uZkY6xC8^SkevD$HJDgG}eb>22vO1rr z$?p!evE(|&YOx(RCxNunM8)d1!&9Gf;!S>Jj2JubW{L^t%faZ!3OTjtY2Uc(%WVr> zOX)bD)?q|j1Cy+pUj-*JtfE zR>2#)cAKZ*%^SO|XYdw`{dVFP>4nM)6~bw+P&4b}rH8yZC7OeSviY0LT~(U{or?o| z0Z$LHzn`g6AM`>~=?^O}P8;k~tu78N7{5D{&Kk(iXC5AM+Am*h zLok_YcuDO~TkNksUS7E^pH-^NY@Wr&VvgBoj~?1uM>3k~kc=|^xKm}kHgR~cX7<8! zz$dLO#5?H+Zr%1A&AC}!q*}QfTs|~7ymUCgePhP=Wv+(4d|ADG+jYnqy2Kr3lAitg z7se3^iKXje;T8V^0(69-zkze+8$;@_0%Cr|Af9a|Pd80ZXm}adt$E zx|f}3@X zS9HzFdySFigx`5hFmUbh!|6oCiE!Sw_XvsyjfQ2`EnCgqwl)*-#}Cl`#vqN7ln zUhN&G#(jSn7fytF7FZPe)-+bN=}R)(p=;+|GTUgkM#jqq+6gq?phnKdTcByKSh~6h>9?Rt&uAANkrfDhmn)ybi)?1O=D}MP*E{8^%TQ)DaJ6_l(2%Eotw9p*` zLX$|Di}H;HEykUcOPwgOD*+A}w~MjxULGtN0Vi{w#9AY><{hu0s}MXPrOTbd&su4A zd4Z)mvCccWHQRn(4l?~ap&%lmTMj;?CZ0K0)u=i}W+WwqOxDXLNgPh`GGkt(`~G`2 zjoS+ef-D94drc%}HEvE;Bz$#gPV3kbUU?TGgk}}*#-8S4jk0E;pl|xjby{gS+OV10 zdG~C;nGg$H@V5%kySuYIx~RE->s)cfc(l`fbaQ!3G;U4Aba#(> z^e9_)rFto|F!AWS$E~BoDs$xS|MKWJJ|R zqp2BS6Xr|s=erB{_uFM}c8_5BKO<7D9>Wj8rXHc66+<+KUDsAZY&^oJ-)Shd|P0iw4#|5IoEYQTF(5FXyYl9#M8t>7FlL)9V-i&ie3M0|CAwbmh^cf zW-o)484PR*3-L2bE%MCC+VT5*lQy?AyUXOXiVW1w30r&0Z*@!yBg~1zi;gln_AC3P zKKz94RV-YTDUOhZz#HSWH37wtLeFs^_gwaqtmJcONs@M~O~qI}Rs2-RFDd5o&JL=` z=W4ICswy)GNSeB~S@-zdfKy*ktAv+XhRyT| zov2#YhNIEcyX?)&OrSk_?31CTcbo8Ti?~#4UV5B;MOzg=YofQqWXFOQ~D z1e!Nr7587KV7sdy1QLJw!~@)>$pu|&yF$_o*ndykf{OCj%e3!IM#U zC!+eEVs_6+36g0Xg;;-ugW1u_0H^GI+S`y{qX(yiAuPGS#rg{-2fsz{tbK9FH_7Zi z{}#6zwLO+;o-gk5Fl0HQl(1zOVYc)Zyw$Cc{TjExzL2!OQIT^eyY0!w-Lrq>8>u0*l~uFsw%=OhZ8y{oS%Kx)MJ-z`>y)rDxIoz&EATsw z`g6J`ahBJK@xVSEadUqARB5^sl-sR#>~}sP1e3%tj!rv-{xh23=MU1K5gPpG1BS!k z;w1~eyDiISOFi{SLz~nK^hN55fa*Q>pMm~A-s1%8Y;o>+WXQ+^lhJBDWSm&AEl}$s_EKTN3vQW(8b~>DI zPqO@+CmaZm#h3h5rARt~N~0s$O0Dd30TriXfVD=IX1&EiM~aPRtzn-vm}jwQpxiP8 zokiZoZakGuF_EI8#YiEPl~spBwv}n5#aVhd1wxRHW*sac%>XW!OX72AsH+C8fXtd17wn=Dja_rJf^_nqNbm1u#Rk* zD;P|IL7+NO)IPsgF581k-cU_?(f}rh47Me+$^Z31R-0rUW0;#{bC_58#o4)AKf><+ zzPp>9EifuZE=wrOO2I1-GZtG6$3dP9B*(17jFP`A1m*THHMT$hxRQ2WNkvg(K||Z_o?4zghI2&m^S6aXU8i3fOZuKMm|wI5CF2)W zycrjlO%oKqte9s#b1qxD@7I5^sHk3CwWZH{LpCJjH0>jG{(5Je$saTMZbpY z;BMW0Cq{GA^8`%0@$Gu(+$23Qsq~GF8Jo zClIJ}T%dcitGy70E@y!^s)sdV59o*U=bh=8j60)HPc{1&Ts z;|Ptaw;V+3-*lC@-^AdQgZwN|F~pv?em4hb@!2SL0@Th+MtnmbV%BtNeOTfAw&C{u zQ=WA{gFg4={C8(=dAIq5&wrQ4HGbM(sRwcUss9#uk(sLmHjR5!mjBLuiKwxTcAXvR z-1KQg=JLNJpqCToIoOFK)_@#l#kKUseQ0%5Qj^T9q!{*WMc*Z=@I4lv+ygdYM}=RI zLD?E9^rZDZk$`*_*Roz&()-wFYW)g5KUGr9^Jf0BXF;Yg22g($*`x(AW8N7;O&ozL zlN}uP#S7q_(#55n>VmeOjsEttGr|u$l1A?#!N!&M!(ksnF<9-Q5PT*52y_Y!EHHv~ zDHCV3ua^=yC)Lt&uiCCY6piZ4M*)ywU+GImAkRc1qhNPn%Q;bs3y`9*tEM11C&c;Q z#p3+@lR~UY=Y@f`i&x7NKng$YW#_X4$1f(zA;lUKqfJ4H>LM#_pO`cOZAP-fIVvl8 z>1gk{Yft4l5+#BbQwYi0r`uT0{GGu{rY3Lzt0og4U*3?^eOF>3^kIC~NJ*2Ffs%sv zd#`L}eL$P~7*->Vs3lWka8y$9F&U4@&a`Ug`s)FApKONF$0X4~4$Vyb_K7QAl{n4w zPuTZ}Ls&xbF|e|R0wpI>=9|a9J9kII8Ei_@4 zQ29x2dIFWH5_2Ju54&J0I`<$KVV_(~*{vWgh(GdT>}o~UeDp~XUoC?PQ1S_@WKIGu zFXJM)%vAoQ#C}!nea$k6ljy5*M5cO4?o@d{@}6n|zQzIPLIp|6sYd-Ncjb5V3hnz- z&9eu!8f~l}=A2cKg_h@`vfPwvJ0cw&@3t?kQz6pVB&Ne8E3b&&VTq(h5bhiNx{b#+SejE_7_wV)P$7B^4_=z(m^46R8_aN_Pcy zn2C8euB5LmBT7VciT*fq=ul~_q-`pQej8caQGM<xv|+pcZX)cV9gPhNTHr={ zyDcl#dkA6R?Igbo+4N4wj&QWFI>LqTV?P~IlH6RUV8QQae8^B`@{={X;K#<^lvU>7 zGDwbdDNc%(6nZD)Ox-zWW^`DouVO>>HxSsN)}U3f=s}IU4JODwNBBh%dt0!@Y5BhO z9Sl`-lc39TS_#gzfKLb#2M9WE{R%qc2Lq=DFdQyp`Dl(Yg?nW*p#>S4W%MLxbxZmjQQXXFYlC zU#84W2rFN*1SXb4vE{7Zl~C4tJFvN2laE6ewRPdZ?Xj&;p9PEAc0-_VHhC+@!6naI z^!Cg08JQWiFRG8_>&0W!hg`>yv$^fGq(y6-PuIF5{D#q~e}={suOrC`_lO`(!<55L zadCuGB!)SovboL}SzV@oL*<%{Ke=SQ&jHTXr(aIFE;*M1M|6*#YxucDQ7)lJlHAWT z3AwH%%x}lS?j4WcF9eb;Lr*kXpBL(Lzg4?Go={kNwubg(RLA94({njtyCC?f1w;OVIfjW|{!#-tH6UUG|Oqxq7eXE@ANxupZ0#w4jy~`X|>* zTEh7{w!E7`Bjh>2y=Sn1*tc6g?75md{hdcWg(_s~<%$^crj6=n@#W{MnXvFPJ1T$i zXWG@v`{>cXKQ3R8L1Q|Xx2bVV9<}$+m*;<(cV|({9c$S>f?)7i?kM6RiE)oL)DMZ} zf2rbO=#_VvKrQf&uIazu_(0I|)0uT*fY5}~;U0mB}k?f9m22EeI9eEJMe91nZ{S*gVll6`fWAHQ9!Ed4$H^atp} zH7atoEXvuw{Ey%5WGwIl%E%+iTjQXO*_gN4c*G^;zv#+vf-s<`T4>3ud&C6LS>5Rc z2-P2i$R5uY8jnI*$G00F;W~}_b_I)7|AIXOB$(N_QASnVYY)D{P+`S_X2N8@Km%Ly zE1;ohIANc~V@b|nNf!YUzGHjNe6Vu@JI(}=Ik9=w`h@M2&H`s#0*(3aZj2`WH*{j5Y-4usT7cxm%H}vu&Me__fDnbGdnj<#L$Vw&nmautRyJtVepA0k5?pkH+kr)rym&|+(IR-ly*qs?QZFCe4a znxPSm5{_4u;h~mMm{?mLaBPc}>#6QRw!$)&?)s`q500hRbf$w0P|^=l{Xt?zuvHHD zCEhZq%w`J`lweV$U;!{Gqq{HkCX6y)XVbXBsiD=~MW1~SkP;T4ffIW~K zR%3Yx{LfeNLqGwVV^tW782t~x)s@B7xlLnZQVsCJ`m+)7h`5; zk-ruDW4qWj_>+%e`2pjdx`16%NHTUQPC!ftZFmO0&8~ikVW1x70TcW2{X?&SXB$ zFLo()78;+`?!S26k2qtg+B9p1a9a3bX&KMZhH+{?R%@wz(@eS7J}A-f#nh=-(9zK- ziCxf&Z`R4X*EzctmW$FIN-0WDQOil0hl)MZ2~inY80muCYoH7=uBl1_8s|5Igb4S! zr$z+_ZE?z)^ije3L7b{BF>4o5GEi#4H*B;&C4|4RQ~g!fFF`UwP%`?R65sD?fck}F z?Dli4xKF$ymmZsh<&7aN_5=f$uAO8v)jp@t;xw?4`$A(-$jq!BePNhhQRSD}=SBUA zW^Ii{jVnu?X*KbU-ClfCix~wAT{t1UMrN!=6|V54Em|2b48srcY;d@ zzxI=VR_=FkxJWv=SO?Zy*MFnX{K7Sw*jtRjdZrp=(5-SD zGuvB2|Gtd5IOaFEK(gEaN5j}(T=Ic}7Q%(+@1`>W2{s>5{MB2UL)<@x2?8ol|(gWY|ZM=KY% zc(Dbmov|p~xGj#bpUX%*rU#hS5s-$;EawG3&o?0+%mFuk_(eb#M;LWPvPjbwA<1iP z#%rfpWM8AZCCz3`OvKw=z!#SG9{cCRq^l>l?2Edue5~DCDp$*bbdBBDofgJ!oC3^0 zzCS07CMM#M-4qBS^`X<7gVO@sDfO7sb=kEhKYA!^wgz=-1k|PltMJ$;w7oNih2-o7 zwUYJ*uxwHMcEtpe@=HCLDDsdI7hiK`Y3`oZ+KU%q3>b zi@fGTYH9Qr&Q!4bnPO~xWb784X5k%Yl$ci%c>$?~NGQcvP+Y-#ddr434Xy<_*NB`_B&|{oCz-tiM0b zE+FyV;=K>IoPqd(yMO%rr?db44Tp6FCjyO*6+daUGZycw-(s$5p`Zcxe=Ng7RY1YM zzyB2wT1GYwA!%MoWpOprFAm{ODeZyP%m1a>cl&S%b%e&C53mydw)I~ImyzwC$i9d5 zpP0S}^uII*2L#DD2gA{%@GG<#(M0~Iu)@EGHTZw#i;<08Q0m>oe+<9-`A^E;z5S;L zr_}a;vi9G2{=b9sA1?sJ@0#M%BruAu*)UE$WqpWc7^If`+INu`@bCe2h>!w@7UvbM+Y0f_&YlO8)&?D2KP>oFVcthZ*+{t`)dC`xcCQg z|9`kZ`Ue-szdDcpuSC|r&ktCrfcHec_Y4CQZ1^96Qw+5PJpvW>eg_#DnSg-c6Db8L z1r<3Z4HXSN10^->zlQbxVWcKwp`>FYXB41gVx?u`{nt1tXxW))`DmH>=vX;eDFrym zS=l++xp+Bw_<8vSsMsV)S-w#7>(X(n((q|>@{4its8R`;@QTXv%V^MwT5wC6bANUh zCu3Bk=6BMPD(&kdJViYyvlJci{KdLL^$027y z|LwELCv^#Yc~No$SxR$BLJK9DZ~EjWMr=M`X~iTYC8T7eWMpOK6{VFl6qMCe)iu<= zXnoPr*3r|K(6Ep*aMCw4QZ)W%U}U25)z?Dgvz?rwiHM`IshPRuSBtM!RyMYF4vzMY zPR_31zPWq2d3bpF_|U6Iv5JSVsDubw*RebI$VrAud-{~a+ zS!B~VRP#C28hP~+ZScZvXd}$nvz&y=eF%%ZDZYzpM~msFYltL%acvTj8ss$`;Wr+0 z$Jx`7I#W>sYs=@zwk7Em7k>HKZ5`KTpVIF9^Sk_biu_=ndS8)NUy0UgyTj#}LGYqO zW>f@AQ#gKp7DGo2WoHUkeT;5tkaI_}-ApXONFLuv5$|###X=e9Y$eBX1?OfX&raH> zyF#MfDvrZ8zUM~zcVXa>9MSPyvw=$S{vXO?btI;XWaM`WbN9&75;z-0J31u6KWpHBt#y@wl9>k2RM4PWV8l z429LFf(VaDtt{e10z!#_4>jxMEj|UIP#}OraKD|(z!+iJH_I6HidJcIe%B|!rdn$@ z8R`*4Y&BkMwFAe7Sha{42AVfV5|N}c?exR32|SIp)&Ev5^68ZU(S!`(a=+dghhK{c zTk|~L6Ld44ZNlV=`ZFT`xf^UikW9iJedgTh{SNyZpun>O9x(m(a^am-J<#B7JW%S} z#=Ujemxc3p@pt&%*|HUtGTK=Ji4=2hIE2P1=rbHPD_?1;PP5@jtmm6OQD;xh+6zl( zMx*a@jqZ{$qh^4{#Wj|pkE>l{ULdj%1))P9>7$?1{Fa-Ar2-h8|m5^I~=j29nP8=8HH6+q9rP12pfaPu64G@uzk zv!BrQhJ6495PQu20!3w|735}|L1=?65b;7K#DPekl{3GKW@e_fdq(JG-D;Qj2I|r}W6#?aCs}K>0!A?j@pfW(U(#<^L~(2zQH2kcgT8XDBANks z7qOI4Z~#86O3Qlb#CfYD@T3d8bmR1ubOY%bO zVFN`JqKkUDUX}HJ39WrCiQ$H05mgdCBq4R|y17mrv zM9&NpQLEn#3cak`{Aw>xI0InJpJM=P7t3#rg`E*4lzJ(2>*Kf$(+7ToP*51A0i{JX ze6=vyw`RTG0HWi4AJ*uj2)hu37IGrR33nB%>IOyFJ`}sPPHbGj z%?a8wkoxQ(BB5hjkb%N${UHOn=!Zc7UgaSCo#U_~Oc5p~hQ5!6;rfzVZKyc?%Ao*9 zVzKb)I7Y%?#1}^d97uY6h@JXgm?)tMS{zOMg)eFlLO}tFDee$UFj@t~`;H=*MxKF`cjB;MSR#zb#|+rj-+{2IL~y-qaDRD?l6OEQScRaF3Qz!I zxj;Dfb0D0Y#;JTpB$i&P8m=gMqM=(bu5g=Ex(1oCke*{4%&2iJQty6x{`v@YT0|h@ zihPK0@P?E}IOP5OGE1J&xhYNkE(jL+j(qK+E82f53N_=trIun1>a-3~KLtHQc^NbBk{4rt$>###3O%PE^MG=2mDX3B%`;hJT_ zUaogQM~I3L0^P0I0KroR?+i?%BE_X&XFtT@Q~hFva)6aG)@@9R|zxZF9KzP!2>y zuQW=u05fmWS*T59OM0kT$3oVT5uLe><3v7YeEV?N_XVX^eY1sXrFC;8WjL&(D&jTo zQ5;7UG^K&3xi%Bd9d$-q%`;rG>U01@XyAv>>!$d#0q_jSq=-mxq|m|2Hxdsjz~FOy zj*owgZ2zPWP&BiBTT5q6o004Y`opwNP1Ksd+c_%dytW1|9W6i;V{_*Vp4ygh5Wb7v zg)t(nMD*nD-ufaNc>Y52_Au7rzcc|Y(WSDlEX~)w6CWmA>|Nw0^G;rukib1pZ~+lP zG=+VZJN#690BZjuq3{=!N&G_Eoer?gVvY0KCMPbz4F(Q72Z#l@l8sT6-^!#>fCz&> ze8xHxQfS)rg>&7d(1_{8@{BJP7Cb#&9w~1m!DmLKI3dA^S)?^V@%uwSs(i#y3uSNV zh@Ne~|FK=MohiO9uKPU7wNrd|Gk$g!?(9CJa-FmXHN&cC2gd4UjR?-!l@snXE_-wz zDc}h~NuNXuq$olJ#fL#0e0S@OxYK^qIYI7ooAa|>oC_M+f(I6VHhh@hnFJPRsm+wQ-OYE!9kgu;*iCadTk^YH z`u0NNe`o2>9q0kZ_P^Ei4{-sgv?|3QxWD!KU8H%^EomY2!SBWcr1GJq;uXv|(I~!t zrz!tVfA~p0AH~Ylrsj@WFCI?*3Semt;3*Fh7!3e^4TPEbPM!YUR3n(uBbbH88>R0< zPCRN`D{@#JtQ8w)+%Z)L#AQZ&>8 zS27sDUfqOhwkU0g8~P-LW;o52Q3f>}#q;x=oscH z6A*wa8RWqo5{_XP9%0uQAx>hyRt8LZ4EqZE-J!?`p&sruNbnE@!0wBD-HxnVmZgPb zmyg#*tcNq>v8`H;8m0=*(_(IriK<$TEV_G z^4<9Yq1XO^@Ri|0TQ!%L(cT4NP@JIYn~i0tt?}byu+U=nMzO>LV&NKNX$xZ|dSmsq z;;yuyHjJzhprOSb;Ye8G&_(0nd1IaL<6xj+WLV&?5EIZ(K+mIbA3fuN2?>a_-mM78 z>~&CR^)T1l@e>}2f7KmnXuWYrBI%zJDHD*zSYpsbq0M2E=pno|JiLrJ5)ym8sB(2l zVtD9D9LZ9&Xe&?=(ivoC-1z&-QSx{xs=O)cACf>ui5eLxI_)WXD=7v~DMomyCcLR; z+NlyZLyxP-zR?_^Q(gN_(zw@RCYo~{L zriW*wN4BSbr%j7}N{`3ONaW2(*3L-v%t+73$ZXHZUdhOP%E-sdEac5B*3K;T%q-8y ztZdKxv65Nylv#(D)xew8q@C5`nbnq&)zO~SwUX8Il=aSF$t|5moFF1bOX8Qns?tv} z2t&9QNhknRQWftK5RGSjEu_bu#WoV7OQoX!fsVroTa2ENhun`(?1kULM%c`nU(jD9 zSeccYNIP3lq6|Z|qMnDPLyP7`rOStl{fvXoR&2ya`qQ}>ku)DGlyuayqy?{7yHe5m zu-NdFKq?4F`=bIvFbN%9uA+6G1snEP^g`uI(hEpN`HX1U%ov4aN7>Yea%3}(>gz&6 z)ry;p;)0uU{Bg=Gj!G%>;vGDy^6!-J@D(|DR^;2RC_9yP&mamBn2`c~3>eA|mCDck zlt!#DAd*tl8}_tS%Fq2J`p*P9#!$VPxt#1JTM_Rk??H-2RYhJz3z=vnMw&l#pcF+A zw()CRd#hvWfndiPmu=8tWX;Sh@MN3B+KoPZn05`57&HxZQntF*seRb_DrrjW?^Wy6 zn|HfXVYga3v|9tWh6~KE!xcpUPget=0G{y($J0P><@&{s=x$dvcxYDO_?r5UR-^=I zR*vvXPuU>SI$qYYUXJ)b9d(pW4G*qF9FP|f(F+JvmF3w>Z|MkZ)IqbF1}Z9}^G={q zBB9B8V+?DfF+^c7WfimV*KyilDDqQFuYvfpvcUN?ZX!*%tWA;xXs;e#x9QFJ^-aKn z7JQW!vg;80c1)P6n?|G`BM-B3X>D-XL9FhHai zJBla_(FCwK3LZza^Q0Ge0%}Ac1$0jUT|v$+@d))V09HoGd1^z1u2-H0y2ZnHPgKL#b$*?O zQ;vrRBf%U!_Yr4zS#H-j1;Brs2DW8&JbHJ~pI6(|!Jp?N0HOQP75cy;HHzCccU8TN z$Y{LTK>n^K8^?~`(T(;|}yWn90fvFS2EXc#C zANolIT1;#Q_UX{VAlXBJ{6U5DK_#3%t2%^aZ}{Un1aNPR#Ys2*POru!a4&0sMi+`= z8t6{gstg54&Kj@q2`%}7P{aj8Gue+8*nyA${LTOZA&t+k0*jDgTF$UM2+(??f&J&5 zC6m1{to^1{2uFM^qxYL0#CP{Mvqt84*l>6?Tr3KD}V+On38>+1Pj!mMZc^2!GQyS zp!k7f+tiFnv|QU??&p1A@7j}XIK-3o9fg_(!f6=e3G$5rn1tV`w&MtaGcc@!WBik# zomn+{&__sDeZzXsl)yN^vDQsw?$MTqj%W&pXrArYFLm8Hk&PY@|2#Nr;3|8nT@Olz zNJq4KhA;+=SFeiZb+F-wJ59__K7x5b?<{8hJU!7oFG`~zQ6J6O{HENn_1GAm%FGUf z_T%^n%nn?47SIVa^GUG7oPB~$Z-Po6%FynY+Xm3X7kC~3VtE5agO_{GCX1qg$J3o; zRfBq>Low$yslF?+Nc9oj%Q1p;Ir=O4j17e-jUIM`V@POWzN>jLD+mQk6ofONoj&CN zc(3g~%W1eL?^zW_&^wFLdh`;^2Cyh+u+Q!{8(|+Y?2JRsXu9lDQ0H7EQERGC&DD83 z3dE+%oM9P3bQU18S?{~y&ImduX)hH-J7Zi?j~e?iIlfrAVp%Vr4pjH&~?4 z-HahzR}I+5SZj9h-JSQ%pc6Xa-vIGWj(z+w*2!;8&ag?TxQynsX?3xcj$FkHvF%28 zI_}PHvj62}BNSiAZygugwrG14{dY0;@3yb&iRA^J-JNqdAm)bmTQ*2&j8)4%L`RE&?QliYA*UDK0;{?E_W}7$feQ0nXeV(RBmk+edXb zw*@ze749lt?oVF(pnbvc+k*t)zSh4W%i4A&sMe3$gGcxmfVVy`(4`Y3SpO_{DX8%Qn!FB-IQE00H+DU@O(@}|IQtiN-wVBN6+!7B z5DLZ_3A(?wnqoR()c=J58b+E0#_a|4D=wk2HbKz%WsVqq5aRGk_|9dB^tT-aU|$9O zMfvX$D%#=CH^aX43&`K^vM>(N^;!Uk95Uoj9_0Ba#K8&jiVA{*15#*BZ;J+hz+y6^ zsp}OFN263K)|%OsjK<@%pI=t`oJpm6*OWCdQ!F8PqEut{en3e+omIayS$pnKF`M_> zMb|L}YNs3cL1YKdDK@82HigNY?)s}*xk`zW#%aK*#t-dg`-9bmGtD~Vp;$`Y#dGZ@ ztA!f#wMDRQo72HmiSE*cewXL{#lhOrrD1O%0F_E_`O0`O0*l#VefipSG=cJSsou(s z`D6yC!(n!sh~;#_9`H}LYwyV{#)o(V#ms}#(i-~lTu9FIuJszau{hz?bb-TsM-a|e zUwlscnK8TB!!bVY!Jt}iW=Vq=vfH&ejk!(6wKk{CEpHs|zn-nmcZB}Ju5UghuD2yy zrh`4XJU$E8zO}-i*L^RZt{Rm@9`s`++QgX~&Qm0)W)J`hjm}86%gjbTsiJ@sT1T^7T4Nm{W{k-qcaZeXL zI!eqrf5o$(PBGj5kUd~GOh}!GCWraB7E8jwY!=7)p-e()k_MsjQjT5T)=p|Ed(ue? zgErCW*WQCo^)M%+t%|G=b(4$qQ?CSzJhMEUDj9^MSs-puj3DNwUj!?7zE8qtux^Zw z6fpl;9yVpJ2qcBH(4@ znn?|AjoV>uMPy6`WOa+=|dcesO9&!lgQ_^H$8?2`WI&=XLx! zzqu<1)Fx{vhP-jGiCGSa7chwl4}E+y{T6OzbfdY>knKU+hjBx6?lAXi=ZJym%^@xrxfEw@&N6~oLO z*1Y;2;zsTA=_jRo!(+VB{n+$iu+gc*QQ<@C%VpNrA2OB=iSzE1U6RAJPQ3)~uTG=n zX+F;5^sTSXlk7`AE>rxEuP)Q#IKHm4^4xE(^J<#D-xhV<-@YxA+kACfwP}5GTX$LV zb>H-Ud~@Fp!twLijam|P+fUN;^E}LQ|Lb{Nl;-DkTGjg3>%4Kv&-*~Z=Wb5Z|81zyJL0YQ44j?3zKAEoWksG61Q$|JyasDOZ$MyOfZ;+imFCPk5eiKD@qpi*z} z@Ih_jp}by3%p%d$X6fyjhm^ywI)!-OsPMU@T6oGvE$?*+(R?hEzZ9L7x)^WPwM8Ou z(}KU0{bUx7~N>jU0^+21PdFL@dBhS_11t`~FPMVQJQ*x}3>RPG7l(y6ekiTAFT zN-ZPI6L+r?LuuH}EdUSYWGeI@eX z8kzkD#Z=Mfs>;fRYyquPTZf{bZZVu=_DPD>Y|-^kGn8fc4P_Rs>)mw{YGE(Es~jG= zzH@c#Wt;sLQ~pZs(pg0PVNXk}OTTBi`weMm@(tDgz;dpK$d_lk8!V!BW?Al(oy_BX z;P_dSpT9U0dc5y_qyBL?Uq=U`T=@czwKb1eUiqGxO7O5-aZBsd_nH1@FiW15 zssmP)srI634lY4WL(WcRE;#isI-C%buM9~R9`xN_wS6%6=*HD*9)%N+4%Li?1nw+w z=E#S)JTX73>3FDKXRG8*w948{YkuvC9PhWi5}eqC0a0AaXU@OVJk69&-G0Ew%M#yI5oMplqFz3nwWEaK+VZ;CB|L!6 z)2d$^DdNe(>-O%y1{9>b-a5Rj_q_b`AL3=JZ#It%_376=I&Ksy*pA>Tn8!Ny;Saf& zHs52UMZg?S9aXGO1*8}J@r1k>l{%go6yw^6i~RFK>T1;ci_B!EhkGxiB!N8_sp}mo z>81cN0f2sU#Jy>iMae@z&xJZS5xve)z%iibA`j7PW^?ux>PJ8krwiTqL|D)#fj~Xs zZi5RfJ!31^y`P+l^tSPGdYkuk`@8u275|N&<0V4d6uI->*NXh!ME-qTW$lI1pWc_O z4GyA<*WT0VoE>jrmnrI1zsF0?oi6YQ%&gB}_GkSs$^ZcHkuk+j1jPSur}z-H(+pEW zT|@iSIRi~iO%2_P8hRHE3=Pj3m}p(JG`axQfm-XC+Uj4r${5UFuyJA-ImUK(Os~0{ zJ0Q&A-VD!!F*3jG7HI2z`(%p$jHB^wmUmJM@Rn{ zLjUJ{IF3KPn%}~N7tLj*-i&+J)7Os{vC_mUCZTm#b=7~$b+mP?n*)x1T2# zo}c%~vUUb9Jz=OFmdK%wmT%KI)qDXfp>NKL%}sTBlf5|5N%b|w;TjrFz|6{}H=sj$ z?QSLYo9e6!m?mfzeC#+_r~OqxZV{{1eRZ42q^LU@#s5**{)gLSoAvZpnJ$6Nk@waW zetoTvFYP>?zV+}qTib-KY`*^sTSb4n4{{helZBJxDy9WqB5OLYW7&%xazU9l>{EOi zG7+EgO7G0%Ld1gY(E?WYm1r0&m~6(2^K8sef332WAunjvUjnuOFdi(&!l7lyV0|Mk z0te?Kt$xi>jnyT{Rg<%xOje^_%jrd)mHk;NdmKxTv09u;89d$MrLF_gsV2O6z^k!n zJgfdmtZq_!k(JY56~)Xq7*Cj@oa$3aLZZ&FB(n&$Og_+ADa}~G$`wW9nO1c72*Y;u z5CWS2kd$-V9(YU3-)$vNRAHM{VLaf0fEO896xj^e^sb6=1?OcIrkZWcX|^66MjpCo zELlDAB&RBar6RcoWyaHQf?Jczm-m$;M@1PT>N=y4h*|}MsvjK#uUyMD(|@<$RmJ(+ z`B9$9yY~xjXA%1;IFh7)O2ubTT|CxHu5@vNe+@4%Wq%Rt(k~xtX;~ zBsX0!pmY6aqmS|zPK@wh-e_Pf{{1SNb$x*oml%^#n}4t8@82UI2o+TECxM9MbF5Tr zP6pZs`3q~XRJ|0DWldwsE-_pahhBfa+G7h6OAs0WLT2@Qxc`cjN}8!Cv3D6S@yVG= zet_9H2e@&0=$W$2jYR;3Fzl|vClz||z>{WX{7K?Zcr?aPe2jLrJ$rRUGggzUHfF4O zlqL|`*PCPVliUaF=}U4ZMrUzs(#sT#UI04UaPN-n&l${lzKxV-SP!fE25O<~KC_5M zzb3>L2L1bmNkqWv9OgF-HetdfN=C__i$`(Xw?7snO_o`MXJPA}Tj}bdJ#0#-;RH-$ zCR)K$g#!UFYn`~-wzhQY#uk8oy)paw_FZ*pFxmz5mh>{vlL^@K>Yl-`oUz1mtqRN6 zK2E=KXS&MS3OPA}p1<-&yF~N`Ek^?wPkFjch5pOR(cq3>1=H8djWY2VsWKFcTm#cf zc3N}j!LK5Ki{(WYt1-0XHkpkMz@M1FI6z*A#PIt~{53?NTsr zCCtKVA}x2j405^B%3*jSt7H3#MpC7Xm(|j;bl~``y0spTlrWKy(h)zxp=Yp+mD|Yi*EBwfmX0nV^;%^)Ycu zw~n}IT@xiw@jds|_d4EnYz5U}FZtdv?R+)%EVC)$^7lJG!{%C;gIh+le9uW3&U9Ao zwBP{izFy8V3nrp%)wSR6J{WPD9k^LrA>!w%?K}HntEIi7Z}(GhZdCz3vZw+}B?B;Crsy^HKXu zf?M^6k4mH_Y0-d`D_skU^)oMES$=LF_m@>qIQG^AZ3YY_xSl;p?SS%~y@y|)70BLi z80dNEWf<{sJWZ!=>%qe)x2}(4e7}dbmK(ENZcQ(J-5qp@(sVo5`PD>Ow8i^FRm$P; zXZcS3o)njd_g)yTu#`IXk81hji*i=yxq>IzKAfeTa(25RW-uW3_w198JYI`R(<5Gg z1IyY~?;86$zQBnFglY5Mzsl0_Hul{q{KMl!_mR=8sgFm$0<#y^?wp*Swr|~RiRHb& zW}@4x{UIp$E!Ujl7x=7)(t6oTb(iyR9jEnlw%YI1c>VnyI!+y}M%ISY9ojmd6O+Ez z2>Ckw?hEa*5^ZxZjdcBR;qBYO_otrX)iy(%|9oQRuj`jc-o$a_&lca*8F*CfJXGgA zHG~0$xdzJK+9|Z->D{ObFoR8MvZ#v$!jqcQiAANJ>@0=O5{oR;%w2rvaIX6A}yR|~1&_AVf zVa0a0WB%v|@=fQ5-M^RH4v&7K_`4Q4uIwH6N&VfxDI4+^_OOD4QLHvdG(hM|X#NE` z0N*0xZs;NkU{t(CZd2hWFS0PHLjf0v5p;)(Z&~QBoB%kQ&uI8yu5=P$2LK4)^FI7g zs6{$pvMTi=7dFW>?d)-figKAFq!F?wr}_$kmBb@bYQTe8j%z zr})*m8E{L{0mVT=48#YFvO6u7yBG{cQ!B!|EUuG85bR=ZzwaW#zTVu}xijD5^ay?1MT}3D6jgE(6mIuRRDP`pa}Ih`lzWKa9$LX;HaH?*JA_rNu-G+3!fyC?w>rGN>Csp2ewTuB%)0N4 zh`mdHm{;z)&VHxn?j0eD@4M{qoVHLtyGV~ce~lS0z_i;prMpo#(Oz)$JstNSUwzux zqH#cv(_T>xzwg3AB3@4;QwCYxDA&*5^idk{{~L@mGxre>A$*&{EPVCF>G+b&<3kWA z3z%zTaICEeVcZf~;+*2<%05l23blowe( z+i;AQgHJw~ajGLqZN*89mJDr8KJI@^-;K1~jc3hq;25hqM@ncIjNHE zsnWBlviqrEi8OirGzG^rrO-4;PMT_an)+-SelSEsBK@p>x|U}H}x<=1u z0O@vvgc(taqp-(?TVhm|JS2X*EWNvVlkV)96&I$L3%C^j(%fq$^S(VjewZzhr#w}jxmmo@xpCze#HSceKN-PDpt`xAV?V9O`%eTA*q2GOxgQ!pn9MW^j-Xr9|3Q%PU zV`f=TC<)HL3oGH?d&t~TIzfLhD?}%O85kQdQ21QsfuzHO7jVB{oQZXgq<+W5u04;F zdU1{eiIZ7Hf?he_RLBI&q(7~Qg&T&Z_^?#1SLBU8y6lSbKIQV1#_klR}e+|U#|7##7BqU{%a`N)?3ku04 zrDgw-iEI8xCT?bA;w45VPV8Q1sLua26AujyGcxhpx0Bo3|3_qEMh<32D_;`$R}NOQ zl_aDPiMm#)nP}Uysids@0yb8*0vxyPnUac>q7*W|tQ=cKX+#$lH?>jIQ_k5^pFQvC z?R(Mxa$t})G(7U^^)OozEBPN&dxB+lZhqnY+zeJHiISL{%DKXk(m~B5{-Dx_>Ihpa zyP3a<+xUZ&zek^!udUb!beeVXF&VYk$tkd6fujFub5nV8nS8;OZokaa6!eTaRcWf( zI5t5RNu1tQdFHDaDVzLPo~d-QJg;6FMAKx+R31qno|f;^y7sTC5Hru-fmB7a8~IgX zJ1`Y9`L5GB#fwB9X?8u~M*;l{#SON{16d+VpmLjBJoWVEftA3mcI=w@OG83DNcl2S zT)P3SB3MEAo7RHARskx^_te{g_M^e#5OKr!h4i!%Ol(B}D8gZ9w%K={>oZh=>5MqL zt5$LE)3%=gRQugBwjlpc?v}}KZOg8;MNv$J6g4Q|SRrcA=MyMq5R&n~m>i4YvZ4Fq z_$)|XEIc+EZa6TH0k9Z@Hq&(pvc09uXxrd}lbK{Lh<}ok|KadiP6Sen;gZHcO=Esd zg%ru3iV{x^UI?AW^OV=FppU`klar;9c#N)WsN7dw`RM$9SP5R(30EA?j#}*JGOD?Y z7Bte+6nk{Pb@gkW|3G`{Bd}b>tpH^SR17z-@s@PrqZlxb-IfG~vDrpAyx}+@(92qy zsN;_iGI(`~Dcs^E#~lUOAD|04R#X+p3fBh%FJ=*aFqP~Z9x*~)obHAC2A(r9HFqR7 zd}`QVIW2?GeF{}fRgG(^HP}5Lz?q(S9|{wPKyiOOF|dkOH^^zX3VmBZvD&{bMQ(pP`PHKkLRs- zQb9;={{qH#U2XWd=!Uy_jS%V7MiB=nvvnj9eaqmdVy^7g2RV9Fl_sn7W6Fc-cBekF z^Pm1jj1}5Oqa19&WBrR4O@GzIbfKQODW~BP{7X*%X9R4*Iz_UnLDJ#ds+{?iqsP@J zu&+3aMX!%xxNM<|znEA2l5kg0&+-w}u{V4&hLEZe(zkEqu)9Q6*^WOtC z;}dTE-*4+biS?e*XLA4ECY2hVS=IEzV6vS#rPHuW_zaBeoNp~|tM5hnzD<4t^Dhon zI-rSDW+STOc)l>9$biu%^$qijeLb1R^z7$ro#OaE5B84sR_ZVQ#VJ42`|^78^*+3{S@3TTnFc?@_hFATfNgX&Q2{t;k}d=O^-ar;g5arz8ECj;&od`rfiXhm6EIl6CYIfJ zP%7`lF<@dfYa29fX+1X18N9^Gzd;9zX}DQjRwx2*(1*mTex?(JF$%tom)t@H6Yuhr zYhW#H-10Rgy|14X8k6H|3v@?yBR}OXowGFKp{3&N`aoaZ(MsEbcb|L_-aj4MuJwSz zqW{TN;gw2JzA%o(teF;fcnOy)?j&15q``|>j^GRQN8#vfi4IAsEqTL zWHgPudIid=te`HPBBoHw!4E87#yCAHv};=VK&4~ul-RNI-IcVGV~WYVV8W~bs|35M zUSk<+CjFCx4Fk+^isz(es4)gMJuDa#G;<;d%Pqc4i{j1!+_YS%dX5a z)ZX_Q8%(?;DCcGWdv{zmrhD9#>K-3KUB(9-o-^NUxcY|zE_-~E7lC3^E+so(L`}Wa z5pBAXw06BZY|56*YsR6Mc<$2SJ2R*-hx2!zd&?xnl&#>9xbyej*~Ujsb8%N&`lETl zsSC>&O4^CyCc;qy?^kbTcNo5|3vN?O@Ho)QnII0F64z9GpnrqKQ2YwWhzt~6>gTi} zSuywbidty&#;6MMk0+OW#1Oo0+n(=1-TTZ$N)-Vyw5rP&ymUHMv2Umgge( zuz>~i*X??k|DvF5!})?hI8>&-15x!s8qao%%zQw$V+M~Y8-8&V^}F}D`o}_r6%@cC z4B0;Uhli+<;y5;>*OMc1is$?<2{C~^sOi~m@5`p2nNA{rluI%`>Ujr~22)!hC%-Ol z`0P(LB)8OfMGkPoW5oo?JDMtG-)q}b^i99`Vo+KxFC78<#P|WW}s;wiyoZW9VwuGkLLRP zhwMW4uh&1L4#UOQzBabhAN>pz`LhVTLhU>H{ywPU(c&DO+OKT8NpS8;xM;g52|f`8}WzueVg1^>#yy+49-QvQ{L$42TNwR9eR z_ZJK8DUjWy%*!)!@Zm5c5+|4DioEjIR`3x_I_@l$7aaxsQRS%zzH}%NO@($b+5b)L z6uTgpeGIFv_=IGX)R89bFiZM3P&|xlhQ=D^UlT&pUrfJdC1!d3Kmv@$!et&%b9*eB5tRe)gBwfqSyL@6T#T1oNI? zvqn_qMnt{&gNt|XK5q+ut{ce@iJlOMK#QU9#PA-m=y7bg5G7QG62q$(DM61xaqx;D zqvhc-dtxyw4l#1Da1KaJt$E~AaMbVVa1H8lv;pbj(QX8J5nX2T1P9nd!^F(0v^RTfBMMYuU7&K?o(F%t)YM9Ujv zgb|o)GjZ<7@ID80oLJmKNURbfQk)ta1=qu@L@^6cL=Rs9iDvwYXE;Pz=%MxK z_-JGTZxfoz5t~X2jiVq>>>+D<;-2B+lBp5%%TWy!{4iZGn--qh6W2+Nah(Z&mL0%5 z6LW@&9i@h@TVT&n5;B3ui4(f$`soD!86-t4v6mi4-AjIy7GFS(!HMCX&qN}T5ppw$ zFClS*$eD~&$7H|>=r-&{k{)|#It_@|0>)H@Mt*nT zwZRh)Xt`Nf)Kitb8ji@??5NMmsTq}d#T6NK`*D|M!$_8CtdM-rUQ#=jkTsj%yO}<@ z7uU6#mxs)2vB#apQ`m=ZbwSitnuy%Nvw9bCf)=D1qdb*i{ris4O{sP;zmwWP!6(%c=B~@^LAr zPpLsisVufM;YBG_vW#n`bbgWL8h}kv1E2_CyQXp1zE1PQ_ zylhZ50F;ewBM@&;nPFv~(7~H*#Rk1mnLk&#`?zwBSedq3S>{y5@wOsFzDgHSRWn!h zhO>%AfHg;wwR)|pHLQAwgFLiE0c=px2-Q83HKVAiA-U=lN!I78HNzb>{m>dkV?d5m z$SZ@|Nvpz+gNqXawL?y|3v;!pA+-rC$6Ps*l^<4WzlPOib8(#qumJ#U=ZQrtlJ&!3 zl^4Mkfj$-2Q7&5@^^;+h$ze|%4*)5{^{gW`3043olnqu@W(Q@1_MqBVxxWqtez1t% zqvW^j-W76gP?ZEt!KD|gq@{Hq-@KXI2u>JmC>rWX$wc68|0Y!%RBa4Dm9NVB2yB!a z(Nl7$HqZ{|XwSon7kpRFzc?RRyI*^N%b(hhYK6y@!=pd!h7VXaolz}39*i0!{FQyeHA#mZic!Xp6S(TKGnbhu~qwo4JA~K5(tT$!>t8YL3D@{6+pz7VTh`sa z^R17ha=t@yBlk1L5|S5a&0>0q+g=^xc_q~Lv~5!6v{b^Lc(afMCU_>rcNLQ`&&w+C zKT(zL|B0%|{U=p{{J%$4LjENf{69o0iT_3_|DWb5|27={MO9)kaq;Y`Hj>!Hq&OW| za+-~1Qbrmnhe1?wFx)n$3rn$i*!(zhNo;vp9XhX|zNwjrJ!{k4(b?7gU#ZFfTOKRp z+UWTBD9hBl>6zJglXLG`Mp-|6{<8Gp)u-uKQ=RyPB+j24*w*Ik#NW*uFRS7YejX?P z(fsTHTa=4s`^A<~VI$COLS>he*1jr#k~LOb=RbGkLlbkDydlMp)K(rSTKlVe3{M7+ z=5_>i%!xS3^`qG3Y=}6paBngbsgN&Hc&J9~OF##Myu6&pBa!fmGPzS3hqyBpg~qp4H{N18D0YB$;HYFt#PImV}zad@6#+~%9z_7cEvXzu5fz%tcev34n!*{Jq9#R=yW_CJBz||3 zr6m1A(r3acNdU8u>N+`_(`>y5<2uf!N+)APedw^a#n;~lCnT53gbGP~7*VIZXdHDEDBp5-gCvi~_S-PN)e! zmxL18Y!sAXQ9qV?+&M-%?gAQzC3|XeseT>ROfN*k?>ENY@&%lpU0YktGy#8-uWjWs zc|avZNUo{v_r{tDn%-*fXTwYy_*7PuRIO2Se7MO9OJ9dq+ecNIYFqr?TQYEqhH?Kf zbH2GheLy;7eRB}3ta`chTc(vX^9=4XG81kwr95o-*g!TI)pv z^>Ab8J?^WoW1*;KtfrJ&t-^`lmjrlhu4~X(kz8pnT5adSz^R+u=oT)Y(VAxOtNdq! zrX0L3H_Tc;HaK_ET!=Y%-cu@}X_VyeW6Wk<*2BsQe{KYOZ+M2P^}56W&Am|mAkuF- z_{XryY`!gE>uY|^kO; z(YN!Bzvq8^^EoGXC}0_})qIks_I&u=B>}leXP4!k$uOH&!0v4`yDLTw1Kbl4$D40{ zzU)Fm)xB15}hK5Y%B&-#%s9Qf>p);Qko zRU99Osfj7r7H4KQCCHX)B40BmWC`!(T{6W;t=9|Ok;ZUaQ!nXyUnMwMyHE54DI@*4 z&^BYz>>QRf6UhL5$pzP816&e+{6;DZ+<_Tx$~8SMm=ZsRx_uUklT@fb2J_X7@L=z~ zAZJbh9wnB%^&B*$?E!^qmp;e+VVDp3H~~3VG#oJmyfI)a@KmdZ>-La!VUC@^viE}A zXSj_eB8@Y@zn{;j9VZIuwe%MzGZ}fmGLYXO!TO(^R$H;iUbP}(Z7K|=hivaCG)hP- zxadoBS_-H#$!gO}PO7ht>@Znbd=b8TDkPh=m*mQL?A_&^eWK@o;O!!#$K@ftX(uDI zY$6R`2-~9QP=HFM>YlKRcO9;>m~Cf*Phns`sa9u|QZblva)qy0u?NPdM~Fd-7tretFXsJ0B5->ur^={aQi_8 ze9-D$nnGG?a+fP2=9g2RA1^joDPvh~b+7 z2f+4F>^3Nj;`WocYR2`YBqxivQP5_z^#eZ_-`r72vXK>Iar-7f>$=Zx7P}h{xZ&2f zo*jrZpyPZ_vg($yz`wSRzP~TW6(0LSDXWcSrm9q{>^wJjQy?;MO`r1-tI{M&aHspH z+|~#VY}Ctfbo3C#bn6|n)Lu^=QrYQB>*7N#YOQ9@rDORq;igd^D93MoGzZU9bg70h zr@JNe!fqo_vELuDv*~ohe*NWvbWIZn#m>%%tVKI3KTx&_Z4eM(!N@POTP!$52B2n* zH)aMkUdih{GWsI3OT7R!e`w9|lry$$~a?6RCrOjU_%k(b}8*XFJ9P z;wLSHp)uT0)I*746dMn74412ufD*gM_I&tL0PIX=yX%;ExD8Is!^dU{&l|!8C2yt{r8Z>Iz3%KjDG3_$Cyy#zwLtE z_92OuEq@1@Rm)xT$^Wnmu=xg4mMa_l=0@LG0ROfNI$iYL+eS+yMgzXTlKDO#%CHMY zcb^@)2zk8>)9pDQc-;4;z%cqs*JrUedz8V*b?$rHp9DYd4LkqcBI#~?QGOHp&GYXs zGJiMSux)=d@0oPzmF_i%H({y3qwR)}&~IK>4(H}?i#KSKEb ze3m-i%Mts#;gRy^tKsp!U-Z#dMN#n72=l?ro4+5PTsiuLl@_4^26wmx6YeEO3)kAQ z?_GKH*QDm7;8TRz0WTB)zxDCYQb@dd?o;~X<~xS~s_mF7@RtQ>cseqFH}Y7S=S>4j zMU$J2%JXw2iW>qHf<*5)aDAKRTHHm%F2?*(j#5sIVS=OAFwy(UG8{M*HU#kn%k^Cs z^*aP~=mkpCh|vKabJqyO7P!Wq)k9;5v4*fH6Ig80MwAIK>O3h{0~uu^9?eRP*_r0D zqw_S3#VF9YG>|b$GjS6AoMH&BOM9`(f*1pM{5cx%5-fIM5Zz#bkb`i$Qlft=qff%H ze;i`JE62%`qI^l%5DG>@9P5Cx{%brs4t-F~=*hi@#&9BO`CpqZDXy zw`cHW9PyfaxI^Wr^AKDbB^o1+!HQ#fXQJPNk$#Xzn0UgbMMCTh;fWrvYHC6}7}p8J zcvEm4^ynTO;U+w4lkt{?CH5iXRORp?NIr^dLOYVri53;4hrIwvsuIULA)_7X_|Md1 z{bjLusvi0|Fiv`phYpPU2umE^;~AJi;YAZFu&!$e&@+0nGcsumff1%Bo}*)n=_%U| z1UiIRHIw|2LgdYfE*QfxuO$JgW&dW2WBj8%&S zUl_2QnjTHXZ{vtGWR^ZGBV0cozLy~Hm_QOwT>&OCSw=4or2BIoC*NpKca+FM+v9`1 z)4#*B^=Mh&VWc>E^l5yS_iX6d)vU`yIh?DR+O+s?SS}Qw!B$DUq#tKRO1?}>Xj;X{ zz;a{tlj0n6gK|jz_zdA3JZB~8DkO&{0XfM+a~FDReB@5zjpZNhj~6 zICB!RyrWFovB@eKriknVi^6eg+#IQJ4UguR;FhNpCeGw-NZ@bLFlv_B7bS3ucDU-C zd_YzHEq&t7YSxiN);-SDND{UdMmU2nKsq4C?F!FAczbE_^N_+SYSMB$(GXs|t6MCd zTO6rUg5O6y^)5DY%z#|Y7s1D)LNl}_;zY#BI$XyfPw_+r$rAYkjJ{8_P!&WnFjzoR zg|RQ0=2|jdoFhr&7NiqFNXCt-fMIdurQCvqY@81%ZM+wM-jdtKhxk&U{F+m_Zw~fm z*b{`;KX$=`;Sy7>1fN_3KZaf4Q~E%!Vk!6^y8xV15ys^fWkA9Bpw+}FRo5tl4$5l| z3XaP%QL-{EEIj#uBBxbJ%B_5tU7j^}Gxwm992Sb5t4tHEDi5oQ)U7JZ4WZ0c)l~&o zbyS_(tYRFsvJX zij$$nz*03IRCRzvZ&L${D3%gyUmSMA*6pxN!9dmf#hy%bL0I;_MEM9H4H*67rHJ-UDQy$v_kutfg#`X@{ z;wsgO607hC;r+f=_pvp?<*>zlzSZxrxa7-&dm*iRxviaTtyd3Q!wg&I4B7&}wRP^Y zxE!*CcDBV^H$_&rL^~e`g>W;<}Y2` zBBb;<8((bLo_^5o?t{7+-Xt8}F3{Fe8QWIid^5nYR7|3vXYmQmE=vLzm+(90(6Xzq zvZLZ4o9Gx&pV0g?yj^&nN(}Gxe2I^yljP=#@4`!1aow^`TwexD?$JoE5vkW(Gn8hP z(?b!DONAG;S3VK8%1Itd@2@14R(F1ProgIVs$qneLor{o35M{V&(q}g>gR-!=l85T zQyZIX0RY>cPb_wZ3E_~;y!ON{_!GsN-q#H;rr-q@mU+*C{Wb=9D?`cmNxf#4T{wxC zGDejpu+j}=vSMhuN>$E{ju-Z;+2sBDH=WcY->?e}ji(M9?V+w5>}cWDVtc(li(6@% zBL&a#NrBQ?=l0PODp>~-y+<=0*IrQ+U%kwuC1mgC-x%sGckJ8VqcQuok2wz%OgBq( zKILC*){`zvxk>mnn@=6;;k#c{lAmTNLF1GdT>eJ;N_r7L)Op2#7UxuKF`NGrm-A$# zU)hFWb-#e99^#|e*_+?I6F9)0&|upz5Ciz{F3y!k|ub^E2-jKC+ClE-o#9T^#)~J34K}*-A)E`I*cai=(#YBpzZmAKZ$j?E-(m@fne-2vvMC;*7Pj8~i zX+|^S!h{>+H;1_%iMH56lp#znBI@)Q1FfFOC33({*?oSK}7N#AWQ zgJ$}8S-korB#qUVVDEE0D=Kjp*1w=|R#=$u=mh{PXG5T=d1iCo?#5t1+JtSp1%=1X zf~pZzqI*-4>1$}8=MY~ldk-PVOuyc~+%^?DCG1hdAtws#))O?SAwJzxkn6xn)RvDV zM*iC2hHJ?2nSkhFZi_F|BveYRi)_0)cD}uJ>Bz@7;wV;w4pSxxGD)eWf8);dC`k;N>%g{i1#!oApE%M6^r%|oB zJyGj0D@k@{IY|vSW;qd!)FSAK2rvdzSw07-v|d7qv$6ZNkZV)KQ=fztqE%Jp1e%ut za-3H|>VhvMi461vwE&{FmNYy#-b~yDG>u9EzUNs+SWVWmOXsaOz7}n)W$Fn0_Km_W z4Q2&t8WJIs%PB)0l|bzC1f? z7x^it$KSPQc-p$1D25~7nr8zlF7Lj9u|BY(h+c0n$ag;N_bWoRKh>f; zcV<1Ud!@d(PG*f2f<1jeFU$UrID973L4{F_p!)0EGJ=b{;$f76RSpK(BLO7G!+Bf-nPV``s-+5fY9RF?+3ow*> zoA>a+-t5oPku7Q|wB-Y?;bPRqjuTUckgNZor>p0TIZ$4JL0;Z~jrsn=Nvz=yiN0|4 z&u?FwET_N8`GFRHMP}E;bxaN=2F?4+teaDLw_l~WjlFnp&b*w_B>`2Hax=M;e_gFy zqTU;1B`24rA-rRG4`fs(D;L~Tg^7f^viqmXm3&o~XH=*}%bZPv8ejCqCBQ`^b>GI2ElztP9M~{C3r&x0U9lQsdDJY(@ zKm&R&DaKApUZGf?!>*LIe?Yj|^pj`>Gl@sMg#FDm+AdFTahU}8*fG%$Ai5xjW@QZN*aKnn_LkqA+_-|3F5blraWX)P2fg zbGC%dijpRkZUMC6dYhq|k2(D&yWdf?B+K&CHQ5KhYcFtZ{j<|z5Mxa9im(e>fi1~f z(D_&<$qDJWC7mnYC=<4!tbBzPIUIc5Kc8M%aGV5yT%N%AjVD}e&N5lT&_BCKU6~h%0)Nd^ppNO7F!vsf z94SR@-kxH3uvPM0po)&6&jsS=P3LeeFRB^wnxXxapujQJ=cED@T?Il{-_{1er!C(# z=H5`m7%i18dh>;j{tD6&$8ZK~T(htP-`KrxTqW)>(Z3F56-D*11vIc$21DaTaRA`h z)`)Zj8QSvdtFp`?6Hj1VV^+`?0sFh7&m^I&HhZtQd4#(yP&b>)G81`8x-p!AJ?z=0 zeH>b@%nIsm8fQFfechy9S{D9hDZP~M6LdH?g?tBC$EUGtH85Y1bZa_6T=Q`roBR9^ zbyBRkej-LsMh10`dI}ua7Cs}T5d5^;Wi3CWW29jytF<)~t5@t~YbqVXsqNn%`D-3` zWFQZ`ve6sOV&uwHw9^B$)li>fJnXggr1_(&k1zWa<8+o^HA#*cM<*{bnbnY0Z0wkw zK>lxfG)y?p@hCjXH4tuVyqR|HE%lcNWh;0_YZkRa{Db=$g5EyzauM%ZR`S7|2+kA%E@LYc$A`@o4#lV5#X z%$1lJ7wKH5f#cfprwhDqDSrVJury2_)Zs}EW|3%k_ySyR9L zq>+EDLf}1)5BBCfaP?o~-@E>CdB$Ry{4x#oCe9=@kGtJYE>`RRx65;SJHujld1>Ha zB8QK!>OXc`*t~bDt51KHFVmam(D>c@kIR!19yt6##^U0i#J^x>yY!`U++J4(JihVOr(td zB40Vuw|R5$uJiAXvP#FA*NMk7^M8L+-<&^VcjfSdm+5W~|FeylH{l--qxNW5o^9#h ziTLt1YJV){+4h&y;VaHX-)k#gZnrUx3^^Ph3@Ep&X2|hBX)&V75b0vbgAajkqx|HyDYo z(}Q!|8&nYe?&vuKFuhL3#+Osvq)u*MU4@fkN~Fzdj$=ZL(kKy-yS=^c(l!DlDx zXIqD+=F^BtmT{Tw`SFcsV>z>QXVW|Mv-};2+v2%1_>?lvSZ#d*^D5(nP0p%AMwEEY zC2vgVZ1jp{((Rd~_1Qu-NNSTE`ujevN53dzFYXFGEkq>)1L4Ebb6@F`U+-tK>gg9{#z=R4&`h0r`PKTH77&{3~d`M4Po+W(174ogdidRL8b`(oXEGQ>DO_`F|4_zijU&^ktGUFCHAz^eXrt_31c7K;w51ZWA_iNwu!>BaiC4$V6ah0@H_A9ec|3idAl9-XNKc$Pg1ryQ{kba6 z_>?uxl-CPYAag79xv;@ueqoHA7K1bfegcV7;=?E^bTo#`5I09j=8BB%pd@TlGMp+q z#46LQOtLyE^K&Eb=T<(Psw^?6%B`S~oxIC(tE#w=4Ez+)R@ER`{b0JPjv&++R!ubs zV&EsCtmt%`+P6L-MZCFsx82R{Lw z<=gr`tPMFL6Bh1w5!`xltS!3pm})IW#TZi69U4G7EdXc>VT4LbXzG(}CmvGM46k6V zTkr|ZK653VV&zI6(eZl8+N!90WO+_!B?wafIJ;5&u%+Nzd-q^lS%Pa2zEsk(ppW6V zUyWmKPfuD!6u|SJR#&0*b0A)wzHy!H3H3#WSGvNRyms(t@f-!N5(KVntKXs*!!cicOOiou==t_{*5UTnEjQ;oIkJ-R zd#NWlb5Q>md+!<51ibcJ(n;t=X^H|;0-^#U)k2lf6j32y!%DT#LkXmiLI@Cg=p91u z5SoS}U12ElxDR&x2EWS}*9D2q%08L;IdD1HTUwh(s0QpK8ei^t=F9r7q`P+ZZ#RnBdd(-Pr2k}LoEGL;qovltmBP5*~_O=KhpEncoNn@1u zCyr4n9T87QQiZvQPZQoo*EK&{4t_(99|(?-N=i8GA0B(RG>Nm;B-i)mSlP*4hS;SR z0|iI2Luy}bB3&f89p9zc8I9{9w$;CmNea7?L~1^rjVF*r@}v9Y!xKB}EXSL30dGfq zIz8L1YD0R4P4%89m2xhzxL#!V#|7$7+=ZE8jGj&TpBZAAU}#`A{ttB8f3u_duS6}% z|6`&SPp`i_s{iYv7JSHmGot!GA!_;G4NCjhE$z>aN<6$@521xp~sOl6Tr zO;6+5fG1Dt8mFdmlT0)?kVi~G!KO-wmKHWc^}m)DKCnIylGF6eKP)XmrYcz3P^5;j zu{hn*!ggqBVXKW|i-}|FXkz=PrG;JBi0`kZh3&7UMO;#N9P-1)m?f1LR_aDDYt z8P228X%MESH70b8MlHHqv+7M?!p+oAwlB&N#5e`rV%7BAUrV$K=ZW`?^_$-(&vA(J zR_1-oo9*Sr<-cy+{fSjfvs=3TYF1{Qy+UJVsw48$nGaDNukgo}S)@E_nKc5rpHc z14*LgXmj-DUOCM!@PL(KX>&3Su76-7>tQi1SuCkHd5T{_U()UNqWZfiw)CxWfj74; zc|E6M9B1Pla`I*qTviND_$)NGN8eg3lbcJ1@+b{j-*SUKm6PQvGjK(k`GA>BX>hQt zXXikgl#jeXwm|>~(tz){)6d@Qc#ez~{Y-x%pOL}wFNEB*Fck&q7%}PsfsEPd%r~vf zM}|jUhIZtZH`)xx)$ zNzCaL%1ql2*(8r?(cIf!vkS$(emfdPF-Z;*tpcJFdM)T+iG*oMrP2(EGZAMCmS9C< zxQ?Q;0pnd%sxOa#mfIUb|_1)VA z5!cpXIH&2!J|$n<8b(-n5>zUrTik;QEFo#OvEws#M=Ck% zP-XRL3b94Dd+}3wb_M;_pEjiQ=7V)s{S=#-!*MLqB7uM(U7XE(gMCKl_Sc=RUbpmDICEU)`pm075#i7cUeYNl74T15{W8Str8 zhOG5XM#i(IfYkX<+aPJA%={$tSv$kegnlaf)mQ2X`AtEG`clUlWf{sO~uQ)}*&{(KmD&8;q7Q+pxVNH%9l;mcm;l%2n~r_a zFw(UA9tQ2nJmLJP@rT{_OE*-!jGUF)&wgcd=!Tnn=0YQT6)< zVuLeo7uacnY-Yd31-E7k9h1j#1Dq_3`KKNGIuy(!$VHUdEtiR4kBAGEw2@&Aa_CunQi$o z|MtNJGTqX0J4bR|j#oTOzi76vRB!##1M>pg;jW?T>R(KH2m_Y!1gnt#U&YXO1@||* zhO0)aO5ogucI>9KX0eS@oO$6R;cm!Md{w&ZBao%Y4y~fOpx~l06VI(aM*eZ?OIn%u zGb2;Z{>Y6=vU!n{W8_emtYP_hV#1R%ez_lqTA9^!ngycMm|f{Fa2b`~91y3+r^PlY zxzEo?cJ8#()P}1nKZ?0MF8{D#yIDu0(`lSLx98t4)LxG$^3JS}{+6)WFmGPsJDga# zayG6u%Jb|-o9X@R(#_Xf?@9tTyC0AxqhBwT-IQPl#*7TrT-rA;MGDhDj+sM^9O4BB z5O)7boYq#e$oo=^`tlio5v_`|sI*?gY+4|3s}+O^#v1lK($Cp?s}xp7IMy&NG)8Ma z|Gq5DyXVUnh0QjdwwvKtvl*#lHsKd|$|H;1W@NRuJ1w5wjEpmTnrlF()83cIx~hCt z@Y@F6;i(|Cn>}OR+v;|>$`Q?JF{@Uu*=>K#J)y>wLG7`ef|r#6<6^^{Rso4&e9c{v z<>$3e|j&X^$U)fS? zhHUORXI1Pj*~n>++MECQad-TSUD3`cKlf0;?#?&92emz4ir2%(#J^nT^>^DY{C-e- z?DPEh0JTpK&AqF3l~;&Z-w$~%cfDVZF5L;NZ@aMaqqqh(naErB>EY{_J*kN+fp4_N zt{4C4O+4`l*XvWh7UpIxcWJnMh%)K@(xTlxVVzXtp9%ctjkJc%$DZ&@m3#2DD_47~ zGDm$y*omv;AYiiP1*N$6bziXe#UEzpE_eL=yf)O5v^9LKZsj(w_rvo$+pXTec6_cM zT->?5du-z36#ttS8Q%2+D{Y>k>Tp22|5@3)i~x5gT)>x24D4X3_0TEP`kniNt(AZ?!Z$W z;K%~K#724Ye$H2q?7L&_I>UxgfcQSd2FBVWl50GlsH0pqf{r`*p6qbq+VcJBjgo`} z<>$Jud3oQNM?RscT0VA7j|;j0aJvOYYSVlp?44KuPFKM9Ifp%3X|r5K?{4u z%DSCl$2o6#HwbzAX}Dd6U^8YPk5qdfZFgafb25S;*=oE^$sQ*5As^WYx{S{+s1s5k zAuS+u8-zfPCH#8kgQ8(8gkW;Q_@OP;-)gu@2%%f#1uu<&_r`=79$-t!ug*VnIyZ*$(3lj+muI&@C;eY+NL^iPCgSi)h42pGb6NB;C@I z?htuaG*X3bX<2Zm>st6?4lONjh9WNpU(lgjTI8S6buFj7{#aUKqfI))uhCm0d5`J3 z7B|bo)`+}U3}oTNU3zOI{vka&ve*y#PpuI*&A7wXh-RFyW2}vGEWI_dTNMQnd?dFJ zM{kXAZaaRyX(eD4h8Z~^h56ijs`(Ia{LpiYM30RW9E~@GZsqp2uV^$t!l#d zy&3Y6I-kcE`B<;~IbmGkOKgiz8m&!!j!dkNzr^C1`O;9N_-O)B)o3b1%``IVq z9WeEQ6~he%h8q?Pc0(yUwW;G}NztrMO9ClsR;f4Ap6&Uh0Zbx!e*~$T+o=p~Mlk-I2zs z_JIETKf!1F>@Oh0#zKbjPNtApe5q$Wqz%j71xtV;X{h1=TwCmm=-Z-&-%1 z*|Q!QpHQ4nk+DrsGs%)Sd3v%g>+NmCS;@ek8iGv0;*1clNH9#6&KauvLK3pKDA~_` zq?8;@qx)P;)pAB^ZBw`47uxL`p&{~MvWRy`e;ZkT>t#5HU*_vVdwi|ItG2t6 z;@nKVUrcSn^1Oq~ue!E#5EE>p=V@W4a;}E)bOEG8o z%3xl~T;h9owcUG@m@#NeibZrF61u6w}Xr(SO&?@o^PZSWGdlj(eI3H;Ch&i~}z_Sk<{Z~I@Lz*5WI{e4~oebe0gmC3ALinrlI~^h1UilriFY@j5kyQ&_OC4R zrTotk*O5AVT)xCny>hFr+KRc}w4gsDE+_nrN1Z}ILvZV;w93H|u78fWDv!;?0`Jx$ zJ$|eMD=kK)ovne3yWT{*67-e7Bd$DLImd_-&h>7(L8z22UcSwWS5Fb(>nc@Yb(IIG z8^k3v__(=hVf1Z*H6Obq@KvMI>Z49VL`T%=Lx#}(tK9W+LM`_v)3^^6Z<1^VbIyA4 z#{1hn(tm5qf#e~Ymrb>B2qC3JlCK1o0A;V<%_23;C`uL_xT=BK&r}jwcrcSH_kHHL zDJ%l#viO(Ryq4=*s(izVv>FTq~gCbfaG>^DG;64XRXJJ8kY(2!C;>eKjnN>!l zNC@lEZ(nD80U0<{Pe)oP>K2?uK>ih9^8wdU0S5^rhO+gTz($Tc+=y8xSngFx0Qhw^ zee5KE^joJAru%6UvU)?%$H8(rlnh1*rSxVVXuM7BB0o1vLrDO5E8|hg4F7QeV4e=%6I#$E2CruhRzV?WQeU~({|*7DK$>E zXDduJOwZi$6o`PcoAH&w4|4dAJnyss%n^3K? zyOYK)D&xr+fvj{Ym0;izsFc{psGn!K;J$UXtj}a%>OON5)qoXcW|u3W`J}s&8wobA zlCUa(&-NQ%xdc8;Jp7_QiON~%AsjKs4LgOHFTc}#oRP`d=%S|csn!P@W4z;an`~*N9^=$w@Js8Pt-l4orAX}Sa%f6C*JJ-6_$fetKV)S4 zzPFMr7oYRKHvHH82bH^J9d5}XX)JPJU0?u@hy1a7Y9`)wJomrI`sog?0UY2g^PQkq z=c(UJI)dtsblzqx5Bd%mzKjEW_cW#%Z>dDId<8yYXE^_nedFtEDLy904yFt~LqmgO zUc6YX<h9_{o3rZ(+ zg*1dkIG!J1beOXl$H7L!Kq>FADSlat__rKu_OCFMFA{oGmePhu{%nJjr@2d+Zhv;O zcT=T8kJtm$e_IN~JZY9uE<>4}rLVc{ERP-7!_Ao7BU!m}6j^n<)8_fDVNaUBvi&s_ zzX3ftuOd?C26BtYz1gholxApbpb}T|Q!vcQ7zb<;@HS>30AnXRExIi3VL4?}2RK-^y~Srn{!IXwzcAUG{Vm%?WCs+GMdQvXou()BAlVXD&!pBz`M= zNYymN(LI;w zn0@Ml+qAJ!HntMquLTdzuhoc%!&M{=il1`c7^LzDDH^<+m9`!m9j^Y8=->L$Eu0!8 zri5%o5+C+(L9Ob|HUA<6UN`#vRn-KWin&JfbqT)MHFU4EZ` zB+?l|`kE`ufA1$5YrJ56xaJBFj=J8sT(!0{N?&tT(PdEH54gwa3?VhVVa4al?j)Td z>`>ob2=4X&9&}%*lfLGfd%ZXN^ZpmI4x2{W0~|yZwVUaHRw)nUSQSR@h2acOwZ3Fv zqB8AFe1CoZNk2h1wPkOx_l;)yL%>G(ldYjS9~w5Wd6kO=Do`;Q*bNVuGlCyuFwK6KwvT?U;i9Lc^dlXX23BL>NzCvtV4hq1u;F0eg#24C!ua^ zVVr2#5pNzpksyRaAg=?;#R1_4z|GjB)k)7a=7X+kpn1tCD;%0c)+{SU2ZIC0u=EuY z?&l^}mxA*lqtnjgF&-F)tq1uyjuH_xh!I}_4b%i{Deyo zLZ1eH*#VAd!;?23m~;f99YVTALPh407>jU4C{}@tnzlyQP(rhzA*=1-9h9K=0Q?w^ zcuNGoi$e|qaG))Whz44GK2*#Y)VdYEtwCh7!3pMt64C1N@j*+o1NwJ9(Y}i&@sxfJjin9PdNMCbtSk;+W`CGd&QVxoy zwTf-6i?HiOBW%etb;ZkKx}P{aUb2_GcXIni@9TCc6MeELkmnFzgMCt59kBCtkQJaP>}=RfxAsm#1_{@i^wW z>^~=7#lBU~{HjlKWS>f`ygOFHAENT`H0w=#wTE-nr>^Sf+Tt&FL9W_0p1U>Y{c3y@ zYoxp@l>2L*a#HYP2W50dgTCg%6bM}5tGPm?M0#hG#$|75p#>lricaWX+u0$ec>sqj zm4qrKL``@|MZ_JRhnx(LoNMi>VtG0M^TXK{X|uf~8fM^>fhGF$57w|Y#n=(+0>!70QdnFV<>79R zrinRVaq=i?LDX_?{nBo(t`;IkBL^mr7%|3s`$P^prb)S%=9^Lq>tF3@S5_=VBf)WP z8W}3%2L!li%NIbXreaz(rA5dk{KzPQgG+0KhP&ukC%Q~dCKE3mC*^FnNXCa10=3i{ zV%cJwed?Qo*{bQIx&5&R+K!3bT|qD(!rM;N;8tsOL2{*NYS%VgFdloflgcFDU_4IN z+0J0>Y?}v>uHLQZ_MyfvB!Rd*6$;-v+-A5q$-*$na&hvloO&adSkq!2u2mEzokU&n zq3SJQSO}yiNyHuzWX4`(DdaWSza3MD^j%K28ELQYh$+p(6pSPdmR3KlYN#!I^Ldi_ z;!=gqY1Ye=%@5F>15@eCjy*A&+#N{-pW2o>(XJz1-aqdIf8+|g6rYsuPu9S7#<@5) zMg|A9xrE4RcGMJlVS1``;v60(mY?2bC_C2q`}EsmPSNSkoi~yaZo0gC+K}8WAAi+2 z-9IletuxWsv1PR39oo0;s!7ZC@$L?v#B9wLorR>i<JSNV4=qxrf2l4U$^{@=qgj+*|#7#IJEF>X|UZ!5&@tgb}wU6}R;+r2Sn z)0I&?5^f{ui}g^RsUr62v7l!(|IMHk-xJU11j_c&W`7}L>Pk0gHLxLs>-7~eB7I6( z#sd5psd30at6YdaAHO3NA#EHXd6H*JUp1x=F9|tE4|NU7S?CM7h}`&b%P_C>aVSAW zTCXTll;eP-lll8dKAdT;^PKc=3;ooQ=|Fz%5QL4dOx1+p)mZsHOBj zfcP^cu_ut=4)3YZVFRBai$g?FsQeN3q!80%dYQsfSHPG|XBSn$B9rt!n^gJZ5YhD9 z6Ml&ue0KuQ@>#N2m<-fq%RnFDR(Z# ze`8@T^^_rYz+;5pmd9&UCc*r9naAAY2NHZ4x`J|imb!x9e*J7>*H=GZ)17vmDtB*`pQ()UHC+~HQ>hn9GL)Xw6*N>-a%6#9xvU+$6|pZYOZyG(u<1H?5a^w%8>PlqPjTgsN(8z7bu@vc0Z_Xd@b(-JXe7Zz(ewl2=es$Au+< zGD|hIa;|1PF~+e+$*eU~c;C6;Zeqp@7cXi3EUJE!rT$Qh-z3O#UAkfSv&o06M;bM-(aH($Qg)fJGZYb_xqyG!4?s@@=Y5h=Ez77

      >zO#isl_T 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