diff --git a/.github/workflows/guardian-prover-health-check-ui-preview.yml b/.github/workflows/guardian-prover-health-check-ui-preview.yml deleted file mode 100644 index 073ccf1219..0000000000 --- a/.github/workflows/guardian-prover-health-check-ui-preview.yml +++ /dev/null @@ -1,33 +0,0 @@ -env: - VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} - VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_GUARDIAN_PROVER_HEALTH_CHECK_UI }} - -on: - push: - branches-ignore: - - main - - release-please-* - paths: - - "packages/guardian-prover-health-check-ui/**" - -jobs: - Deploy-Preview: - runs-on: [taiko-runner] - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Install pnpm dependencies - uses: ./.github/actions/install-pnpm-dependencies - - - name: Install Vercel CLI - run: pnpm add --global vercel@latest - - - name: Pull Vercel Environment Information - run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }} - - - name: Build Project Artifacts - run: vercel build --token=${{ secrets.VERCEL_TOKEN }} - - - name: Deploy Project Artifacts to Vercel - run: vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }} diff --git a/.github/workflows/guardian-prover-health-check-ui-production.yml b/.github/workflows/guardian-prover-health-check-ui-production.yml deleted file mode 100644 index 13b90307d4..0000000000 --- a/.github/workflows/guardian-prover-health-check-ui-production.yml +++ /dev/null @@ -1,30 +0,0 @@ -env: - VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} - VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID_GUARDIAN_PROVER_HEALTH_CHECK_UI }} - -on: - push: - tags: - - "guardian-prover-health-check-ui-*" - -jobs: - Deploy-Production: - runs-on: [taiko-runner] - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Install pnpm dependencies - uses: ./.github/actions/install-pnpm-dependencies - - - name: Install Vercel CLI - run: pnpm add --global vercel@latest - - - name: Pull Vercel Environment Information - run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} - - - name: Build Project Artifacts - run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }} - - - name: Deploy Project Artifacts to Vercel - run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }} diff --git a/.github/workflows/guardian-ui-deploy.yml b/.github/workflows/guardian-ui-deploy.yml new file mode 100644 index 0000000000..d1ae9a1380 --- /dev/null +++ b/.github/workflows/guardian-ui-deploy.yml @@ -0,0 +1,43 @@ +name: Build and Deploy Guardians UI to Vercel + +on: + workflow_call: + inputs: + environment: + type: string + required: true + flags: + type: string + required: true + vercel_org_id: + type: string + required: true + vercel_project_id: + type: string + required: true + +env: + VERCEL_ORG_ID: ${{ inputs.vercel_org_id }} + VERCEL_PROJECT_ID: ${{ inputs.vercel_project_id }} + +jobs: + build-deploy: + runs-on: [taiko-runner] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install pnpm dependencies + uses: ./.github/actions/install-pnpm-dependencies + + - name: Install Vercel CLI + run: pnpm add --global vercel@latest + + - name: Pull Vercel Environment Information + run: vercel pull --yes --environment=${{ inputs.environment }} --token=${{ secrets.VERCEL_TOKEN }} + + - name: Build Project Artifacts + run: vercel build ${{ inputs.flags }} --token=${{ secrets.VERCEL_TOKEN }} + + - name: Deploy Project Artifacts to Vercel + run: vercel deploy --prebuilt ${{ inputs.flags }} --token=${{ secrets.VERCEL_TOKEN }} diff --git a/.github/workflows/guardian-ui.yml b/.github/workflows/guardian-ui.yml new file mode 100644 index 0000000000..675e26cc51 --- /dev/null +++ b/.github/workflows/guardian-ui.yml @@ -0,0 +1,37 @@ +name: Guardian UI CI/CD + +on: + push: + branches-ignore: + - release-please-* + paths: + - "packages/guardian-prover-health-check-ui/**" + +jobs: + # Deployment name follow the pattern: deploy___ + deploy_guardian-ui_hekla_preview: + if: ${{ !github.ref_name == 'main' }} + uses: ./.github/workflows/guardian-ui-deploy.yml + with: + environment: "preview" + flags: "" + vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} + vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_GUARDIAN_PROVER_HEALTH_CHECK_UI_HEKLA }} + + deploy_guardian-ui_devnet_preview: + if: ${{ !github.ref_name == 'main' }} + uses: ./.github/workflows/guardian-ui-deploy.yml + with: + environment: "preview" + flags: "" + vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} + vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_GUARDIAN_PROVER_HEALTH_CHECK_UI_INTERNAL }} + + deploy_guardian-ui_hekla_production: + if: ${{ github.ref_name == 'main' && startsWith(github.ref, 'refs/tags/guardian-prover-health-check-ui-') }} + uses: ./.github/workflows/guardian-ui-deploy.yml + with: + environment: "production" + flags: "--prod" + vercel_org_id: ${{ secrets.VERCEL_ORG_ID }} + vercel_project_id: ${{ secrets.VERCEL_PROJECT_ID_GUARDIAN_PROVER_HEALTH_CHECK_UI_HEKLA }} diff --git a/.github/workflows/protocol.yml b/.github/workflows/protocol.yml index f4bc0f3e87..be8be7510c 100644 --- a/.github/workflows/protocol.yml +++ b/.github/workflows/protocol.yml @@ -12,6 +12,9 @@ on: jobs: build: runs-on: [taiko-runner] + permissions: + # Give the necessary permissions for stefanzweifel/git-auto-commit-action. + contents: write steps: - name: Cancel previous runs uses: styfle/cancel-workflow-action@0.12.1 @@ -35,24 +38,28 @@ jobs: working-directory: ./packages/protocol run: forge fmt --check - - name: Unit Tests + - name: Unit tests working-directory: ./packages/protocol run: pnpm clean && pnpm test - - name: Generate Genesis + - name: Generate contract layout table working-directory: ./packages/protocol - run: pnpm test:genesis + run: pnpm layout + + - name: Commit contract layout table + uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_message: "Add contract layout table" - # TODO: CompilerError: Stack too deep - # - name: Test Coverage - # working-directory: ./packages/protocol - # run: pnpm test:coverage + - name: Generate genesis + working-directory: ./packages/protocol + run: pnpm test:genesis - - name: Run snapshot (foundry) + - name: Run snapshot (Foundry) working-directory: ./packages/protocol run: pnpm snapshot - - name: Deploy L1 Contracts + - name: Deploy L1 contracts working-directory: ./packages/protocol run: | anvil --hardfork cancun & @@ -60,9 +67,3 @@ jobs: sleep 1 done pnpm test:deploy - - # - name: Upload coverage to Codecov - # uses: codecov/codecov-action@v3 - # with: - # directory: ./packages/protocol/coverage - # flags: protocol diff --git a/.github/workflows/slither.yml b/.github/workflows/slither.yml deleted file mode 100644 index c4554d24ff..0000000000 --- a/.github/workflows/slither.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: Slither Analysis - -on: - workflow_dispatch: - pull_request: - paths: - - "packages/protocol/**" - push: - branches: - - main - -jobs: - analyze: - runs-on: [taiko-runner] - steps: - - uses: actions/checkout@v4 - - - name: Install pnpm dependencies - uses: ./.github/actions/install-pnpm-dependencies - - # Workaround to prevent slither-action from trying to install deps with `package.json`, - # and since there is no lockfile it defaults `npm install` which fails because we use pnpm. - # See: https://github.com/crytic/slither-action/issues/44#issuecomment-1931104731 - - name: Remove package.json - run: rm packages/protocol/package.json - - - name: Run Slither - uses: crytic/slither-action@v0.3.1 - id: slither - with: - target: packages/protocol - sarif: results.sarif - fail-on: config - slither-config: packages/protocol/slither.config.json - slither-args: --triage-database packages/protocol/slither.db.json - - - name: Upload SARIF file - uses: github/codeql-action/upload-sarif@v3 - with: - sarif_file: ${{ steps.slither.outputs.sarif }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b5229ae635..5c6e590f4d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,7 +16,7 @@ Here are some ways you can contribute: Please comment on the issue that you're interested in working on. Also, check out the [coding standards](#coding-standards) and [documentation standards](#documentation-standards) before you start working on the pull request. -Once the pull request is merged to one of Taiko's GitHub repositories (you can see which repositories here: [2024 Taiko Contributor GitPOAP](https://www.gitpoap.io/gp/1092)), you will be automatically awarded a Taiko Contributor GitPOAP. Opening a good new issue (not a spam issue) is also eligible for a GitPOAP, just leave a comment and we will manually invoke a GitHub bot that will send the GitPOAP. +Once the pull request is merged to one of Taiko's GitHub repositories (you can see which repositories here: [2024 Taiko Contributor GitPOAP](https://www.gitpoap.io/gp/1092)), you should be automatically awarded a Taiko Contributor GitPOAP, unless the repo has not been configured with GitPOAP. ## Coding standards diff --git a/Dockerfile b/Dockerfile index 67e3abdafe..a1d52db69d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,8 @@ +ARG PACKAGE=eventindexer + FROM golang:1.21.0 as builder -ARG PACKAGE=eventindexer +ARG PACKAGE RUN apt install git curl @@ -12,16 +14,17 @@ COPY . . RUN go mod download -WORKDIR /taiko-mono/packages/$PACKAGE +WORKDIR /taiko-mono/packages/${PACKAGE} -RUN CGO_ENABLED=0 GOOS=linux go build -o /taiko-mono/packages/$PACKAGE/bin/${PACKAGE} /taiko-mono/packages/$PACKAGE/cmd/main.go +RUN CGO_ENABLED=0 GOOS=linux go build -o /taiko-mono/packages/${PACKAGE}/bin/${PACKAGE} /taiko-mono/packages/${PACKAGE}/cmd/main.go FROM alpine:latest ARG PACKAGE +ENV PACKAGE=${PACKAGE} RUN apk add --no-cache ca-certificates -COPY --from=builder /taiko-mono/packages/$PACKAGE/bin/$PACKAGE /usr/local/bin/ +COPY --from=builder /taiko-mono/packages/${PACKAGE}/bin/${PACKAGE} /usr/local/bin/ -ENTRYPOINT ["$PACKAGE"] \ No newline at end of file +ENTRYPOINT /usr/local/bin/${PACKAGE} \ No newline at end of file diff --git a/packages/bridge-ui/.env.example b/packages/bridge-ui/.env.example index e7105a3e28..a17db64715 100644 --- a/packages/bridge-ui/.env.example +++ b/packages/bridge-ui/.env.example @@ -38,3 +38,7 @@ export PUBLIC_SLOW_L1_BRIDGING_WARNING=false # Fees export PUBLIC_FEE_MULTIPLIER= + +# APIs +export MORALIS_PROJECT_ID="" +export MORALIS_API_KEY="" diff --git a/packages/bridge-ui/.eslintignore b/packages/bridge-ui/.eslintignore index c26e640c61..1c8b757654 100644 --- a/packages/bridge-ui/.eslintignore +++ b/packages/bridge-ui/.eslintignore @@ -18,3 +18,5 @@ package-lock.json yarn.lock src/generated/* + +.vercel/** diff --git a/packages/bridge-ui/.prettierignore b/packages/bridge-ui/.prettierignore index d31e3142a9..7f5b867429 100644 --- a/packages/bridge-ui/.prettierignore +++ b/packages/bridge-ui/.prettierignore @@ -16,3 +16,4 @@ CHANGELOG.md pnpm-lock.yaml package-lock.json yarn.lock +.vercel/** \ No newline at end of file diff --git a/packages/bridge-ui/package.json b/packages/bridge-ui/package.json index 437e6fb6c1..50b984eab5 100644 --- a/packages/bridge-ui/package.json +++ b/packages/bridge-ui/package.json @@ -23,18 +23,18 @@ "devDependencies": { "@playwright/test": "^1.43.1", "@sveltejs/adapter-auto": "^3.2.0", - "@sveltejs/adapter-static": "^2.0.3", - "@sveltejs/kit": "^1.30.4", + "@sveltejs/kit": "^2.5.7", + "@sveltejs/vite-plugin-svelte": "^3.1.0", "@types/debug": "^4.1.12", "@types/object-hash": "^3.0.6", - "@typescript-eslint/eslint-plugin": "^7.4.0", - "@typescript-eslint/parser": "^7.7.0", + "@typescript-eslint/eslint-plugin": "^7.8.0", + "@typescript-eslint/parser": "^7.8.0", "@vitest/coverage-v8": "^1.4.0", "@wagmi/cli": "^2.1.4", "abitype": "^1.0.2", "ajv": "^8.12.0", "autoprefixer": "^10.4.18", - "daisyui": "^4.7.2", + "daisyui": "^4.10.3", "dotenv": "^16.4.5", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", @@ -45,23 +45,24 @@ "lokijs": "^1.5.12", "postcss": "^8.4.38", "prettier": "^3.2.5", - "prettier-plugin-svelte": "^3.2.2", - "svelte": "^4.2.12", - "svelte-check": "^3.6.9", + "prettier-plugin-svelte": "^3.2.3", + "svelte": "^4.2.15", + "svelte-check": "^3.7.1", "tailwindcss": "^3.4.3", "ts-morph": "^19.0.0", "tslib": "^2.6.2", "typescript": "^5.4.3", - "vite": "^4.5.3", + "vite": "^5.2.10", "vite-tsconfig-paths": "^4.3.2", - "vitest": "^0.32.4", + "vitest": "^1.5.3", "vitest-fetch-mock": "^0.2.2", "vitest-mock-extended": "1.3.1" }, "type": "module", "dependencies": { - "@wagmi/connectors": "^4.1.18", - "@wagmi/core": "^2.8.0", + "@moralisweb3/common-evm-utils": "^2.26.1", + "@wagmi/connectors": "^4.3.1", + "@wagmi/core": "^2.8.1", "@walletconnect/ethereum-provider": "^2.12.2", "@walletconnect/modal": "^2.6.2", "@web3modal/wagmi": "^4.1.11", @@ -70,8 +71,9 @@ "buffer": "^6.0.3", "debug": "^4.3.4", "events": "^3.3.0", + "moralis": "^2.26.1", "object-hash": "^3.0.0", - "svelte-i18n": "^3.7.4", + "svelte-i18n": "^4.0.0", "viem": "^2.9.29" } } diff --git a/packages/bridge-ui/src/app.config.ts b/packages/bridge-ui/src/app.config.ts index 65fe1b198e..364ba33e1e 100644 --- a/packages/bridge-ui/src/app.config.ts +++ b/packages/bridge-ui/src/app.config.ts @@ -49,3 +49,10 @@ export const ipfsConfig = { gatewayTimeout: 200, overallTimeout: 5000, }; + +export const moralisApiConfig = { + limit: 10, + format: 'decimal', + excludeSpam: true, + mediaItems: false, +}; diff --git a/packages/bridge-ui/src/components/Bridge/NFTBridgeComponents/ImportStep/ImportStep.svelte b/packages/bridge-ui/src/components/Bridge/NFTBridgeComponents/ImportStep/ImportStep.svelte index 08d594af9a..56a8fc13a7 100644 --- a/packages/bridge-ui/src/components/Bridge/NFTBridgeComponents/ImportStep/ImportStep.svelte +++ b/packages/bridge-ui/src/components/Bridge/NFTBridgeComponents/ImportStep/ImportStep.svelte @@ -16,18 +16,26 @@ import { selectedImportMethod } from './state'; let foundNFTs: NFT[] = []; + + // States + let scanning = false; let canProceed = false; export let validating = false; - const scanForNFTs = async () => { + const nextPage = async () => { + await scanForNFTs(false); + }; + + const scanForNFTs = async (refresh: boolean) => { scanning = true; $selectedNFTs = []; const accountAddress = $account?.address; const srcChainId = $srcChain?.id; const destChainId = $destChain?.id; if (!accountAddress || !srcChainId || !destChainId) return; - const nftsFromAPIs = await fetchNFTs(accountAddress, srcChainId); + const nftsFromAPIs = await fetchNFTs({ address: accountAddress, chainId: srcChainId, refresh }); + foundNFTs = nftsFromAPIs.nfts; scanning = false; @@ -47,9 +55,6 @@ reset(); }; - // States - let scanning = false; - $: canImport = ($account?.isConnected && $srcChain?.id && $destChain && !scanning) || false; $: { @@ -74,9 +79,9 @@ {#if $selectedImportMethod === ImportMethod.MANUAL} {:else if $selectedImportMethod === ImportMethod.SCAN} - + scanForNFTs(true)} {nextPage} bind:foundNFTs bind:canProceed /> {:else} - + scanForNFTs(false)} /> {/if} diff --git a/packages/bridge-ui/src/components/Bridge/NFTBridgeComponents/ImportStep/ScannedImport.svelte b/packages/bridge-ui/src/components/Bridge/NFTBridgeComponents/ImportStep/ScannedImport.svelte index 3743a9a6c5..0c6e44c149 100644 --- a/packages/bridge-ui/src/components/Bridge/NFTBridgeComponents/ImportStep/ScannedImport.svelte +++ b/packages/bridge-ui/src/components/Bridge/NFTBridgeComponents/ImportStep/ScannedImport.svelte @@ -6,7 +6,7 @@ import { enteredAmount, selectedNFTs, tokenBalance } from '$components/Bridge/state'; import { ImportMethod } from '$components/Bridge/types'; import { ActionButton, Button } from '$components/Button'; - import { IconFlipper } from '$components/Icon'; + import { Icon, IconFlipper } from '$components/Icon'; import RotatingIcon from '$components/Icon/RotatingIcon.svelte'; import { NFTDisplay } from '$components/NFTs'; import { NFTView } from '$components/NFTs/types'; @@ -14,7 +14,8 @@ import { selectedImportMethod } from './state'; - export let scanForNFTs: () => Promise; + export let refresh: () => Promise; + export let nextPage: () => Promise; export let foundNFTs: NFT[] = []; @@ -22,12 +23,28 @@ let nftView: NFTView = NFTView.LIST; let scanning = false; + let hasMoreNFTs = true; let tokenAmountInput: TokenAmountInput; - function onScanClick() { + let previousNFTs: NFT[] = []; + const handleNextPage = () => { + previousNFTs = foundNFTs; scanning = true; - scanForNFTs().finally(() => { + + nextPage().finally(() => { + scanning = false; + }); + + if (previousNFTs.length === foundNFTs.length) { + hasMoreNFTs = false; + } + }; + + function onRefreshClick() { + scanning = true; + hasMoreNFTs = true; + refresh().finally(() => { scanning = false; }); } @@ -81,7 +98,7 @@ type="neutral" shape="circle" class="bg-neutral rounded-full w-[28px] h-[28px] border-none" - on:click={onScanClick}> + on:click={onRefreshClick}> @@ -97,6 +114,21 @@
+
+ +
{#if nftHasAmount} diff --git a/packages/bridge-ui/src/components/NotificationToast/NotificationToast.svelte b/packages/bridge-ui/src/components/NotificationToast/NotificationToast.svelte index 9e94935627..34e7f0c8f8 100644 --- a/packages/bridge-ui/src/components/NotificationToast/NotificationToast.svelte +++ b/packages/bridge-ui/src/components/NotificationToast/NotificationToast.svelte @@ -73,9 +73,8 @@ diff --git a/packages/bridge-ui/src/i18n/en.json b/packages/bridge-ui/src/i18n/en.json index 0ec330ce52..eea6937a31 100644 --- a/packages/bridge-ui/src/i18n/en.json +++ b/packages/bridge-ui/src/i18n/en.json @@ -361,7 +361,9 @@ }, "paginator": { "of": "of", - "page": "Page" + "page": "Page", + "more": "Fetch more...", + "everything_loaded": "Everything loaded" }, "paused_modal": { "description": "The bridge is currently not available. Follow our official communication channels for more information. ", diff --git a/packages/bridge-ui/src/libs/bridge/fetchNFTs.ts b/packages/bridge-ui/src/libs/bridge/fetchNFTs.ts index af2a75504c..781b89643e 100644 --- a/packages/bridge-ui/src/libs/bridge/fetchNFTs.ts +++ b/packages/bridge-ui/src/libs/bridge/fetchNFTs.ts @@ -1,35 +1,86 @@ import type { Address } from 'viem'; +import { isL2Chain } from '$libs/chain'; import { eventIndexerApiServices } from '$libs/eventIndexer/initEventIndexer'; import { type NFT, TokenType } from '$libs/token'; -import { checkOwnershipOfNFTs } from '$libs/token/checkOwnership'; import { fetchNFTImageUrl } from '$libs/token/fetchNFTImageUrl'; import { getTokenWithInfoFromAddress } from '$libs/token/getTokenWithInfoFromAddress'; import { getLogger } from '$libs/util/logger'; +import type { FetchNftArgs } from '$nftAPI/infrastructure/types/common'; const log = getLogger('bridge:fetchNFTs'); -function deduplicateNFTs(nftArrays: NFT[][]): NFT[] { - const nftMap: Map = new Map(); - nftArrays.flat().forEach((nft) => { - Object.entries(nft.addresses).forEach(([chainID, address]) => { - const uniqueKey = `${address}-${chainID}-${nft.tokenId}`; - - if (!nftMap.has(uniqueKey)) { - nftMap.set(uniqueKey, nft); - } - }); +export const fetchNFTs = async ({ + address: userAddress, + chainId: srcChainId, + refresh, +}: FetchNftArgs): Promise<{ nfts: NFT[]; error: Error | null }> => { + let nfts: NFT[] = []; + try { + if (isL2Chain(srcChainId)) { + // Todo: replace with a third party service once available + // right now we have to use our own indexer for L2 + nfts = await fetchL2NFTs({ userAddress, srcChainId, refresh }); + } else { + nfts = await fetchL1NFTs({ userAddress, srcChainId, refresh }); + } + + const promises = Promise.all( + nfts.map(async (nft: NFT) => { + const nftWithImage = await fetchNFTImageUrl(nft); + return nftWithImage; + }), + ); + + const nftsWithImage = await promises; + nfts = nftsWithImage; + return { nfts, error: null }; + } catch (error) { + console.error('Fetch error:', error); + return { nfts: [], error: new Error('') }; + } +}; + +const fetchL1NFTs = async ({ + userAddress, + srcChainId, + refresh, +}: { + userAddress: Address; + srcChainId: number; + refresh: boolean; +}) => { + log('fetching L1 NFTs', { userAddress, srcChainId, refresh }); + const moralisResponse = await fetch('/api/nft', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ address: userAddress, chainId: srcChainId, refresh }), }); - return Array.from(nftMap.values()); -} -export async function fetchNFTs( - userAddress: Address, - srcChainId: number, -): Promise<{ nfts: NFT[]; error: Error | null }> { - let error: Error | null = null; + if (moralisResponse.ok) { + const responseData = await moralisResponse.json(); + log('cursor', responseData); + const { nfts } = responseData; - // Fetch from all indexers + return nfts; + } else { + console.error('HTTP error:', moralisResponse.statusText); + return { nfts: [], error: new Error(moralisResponse.statusText) }; + } +}; + +const fetchL2NFTs = async ({ + userAddress, + srcChainId, + refresh, +}: { + userAddress: Address; + srcChainId: number; + refresh: boolean; +}) => { + log('fetching L2 NFTs', { userAddress, srcChainId, refresh }); const indexerPromises: Promise[] = eventIndexerApiServices.map(async (eventIndexerApiService) => { const { items: result } = await eventIndexerApiService.getAllNftsByAddressFromAPI(userAddress, BigInt(srcChainId), { page: 0, @@ -60,36 +111,22 @@ export async function fetchNFTs( nftArrays = await Promise.all(indexerPromises); } catch (e) { log('error fetching nfts from indexer services', e); - error = e as Error; + throw e; } + return deduplicateNFTs(nftArrays); +}; - // Deduplicate based on address and chainID - const deduplicatedNfts = deduplicateNFTs(nftArrays); - - // Fetch image for each NFT - const promises = Promise.all( - deduplicatedNfts.map(async (nft) => { - const nftWithImage = await fetchNFTImageUrl(nft); - return nftWithImage; - }), - ); - const nftsWithImage = await promises; +// Deduplicate based on address and chainID +function deduplicateNFTs(nftArrays: NFT[][]): NFT[] { + const nftMap: Map = new Map(); + nftArrays.flat().forEach((nft) => { + Object.entries(nft.addresses).forEach(([chainID, address]) => { + const uniqueKey = `${address}-${chainID}-${nft.tokenId}`; - // Double check the ownership - const ownsAllNfts = await checkOwnershipOfNFTs(nftsWithImage, userAddress, srcChainId); - log(`user ${userAddress} owns all NFTs:`, ownsAllNfts); - // filter out the NFTs that the user doesn't own - const filteredNfts = nftsWithImage.filter((nft) => { - const isOwned = ownsAllNfts.successfulOwnershipChecks.find((result) => result.tokenId === nft.tokenId); - return isOwned; + if (!nftMap.has(uniqueKey)) { + nftMap.set(uniqueKey, nft); + } + }); }); - - if (filteredNfts.length !== nftsWithImage.length) { - //TODO: handle this case differently? maybe show a warning to the user? - log(`found ${nftsWithImage.length - filteredNfts.length} tokens that the user doesn't own`); - } - - log(`found ${filteredNfts.length} unique NFTs from all indexers`, filteredNfts); - - return { nfts: filteredNfts, error }; + return Array.from(nftMap.values()); } diff --git a/packages/bridge-ui/src/libs/nft/domain/interfaces/INFTRepository.ts b/packages/bridge-ui/src/libs/nft/domain/interfaces/INFTRepository.ts new file mode 100644 index 0000000000..89f833a083 --- /dev/null +++ b/packages/bridge-ui/src/libs/nft/domain/interfaces/INFTRepository.ts @@ -0,0 +1,6 @@ +import type { NFT } from '$nftAPI/domain/models/NFT'; +import type { FetchNftArgs } from '$nftAPI/infrastructure/types/common'; + +export interface INFTRepository { + findByAddress({ address, chainId, refresh }: FetchNftArgs): Promise; +} diff --git a/packages/bridge-ui/src/libs/nft/domain/models/NFT.ts b/packages/bridge-ui/src/libs/nft/domain/models/NFT.ts new file mode 100644 index 0000000000..29347d961e --- /dev/null +++ b/packages/bridge-ui/src/libs/nft/domain/models/NFT.ts @@ -0,0 +1,17 @@ +import type { Address } from 'viem'; + +import type { NFTMetadata, TokenType } from '$libs/token'; + +export interface NFT { + type: TokenType; + name: string; + symbol: string; + addresses: Record; + owner: Address; + imported?: boolean; + mintable?: boolean; + balance: string | number; + tokenId: number | string; + uri?: string; + metadata?: NFTMetadata; +} diff --git a/packages/bridge-ui/src/libs/nft/domain/services/NFTService.ts b/packages/bridge-ui/src/libs/nft/domain/services/NFTService.ts new file mode 100644 index 0000000000..d4171cd1e9 --- /dev/null +++ b/packages/bridge-ui/src/libs/nft/domain/services/NFTService.ts @@ -0,0 +1,20 @@ +import type { Address } from 'viem'; + +import type { INFTRepository } from '../interfaces/INFTRepository'; +import type { NFT } from '../models/NFT'; + +export class NFTService { + constructor(private repository: INFTRepository) {} + + async fetchNFTsByAddress({ + address, + chainId, + refresh, + }: { + address: Address; + chainId: number; + refresh: boolean; + }): Promise { + return await this.repository.findByAddress({ address, chainId, refresh }); + } +} diff --git a/packages/bridge-ui/src/libs/nft/infrastructure/api/MoralisNFTRepository.server.ts b/packages/bridge-ui/src/libs/nft/infrastructure/api/MoralisNFTRepository.server.ts new file mode 100644 index 0000000000..442500a6b4 --- /dev/null +++ b/packages/bridge-ui/src/libs/nft/infrastructure/api/MoralisNFTRepository.server.ts @@ -0,0 +1,88 @@ +import Moralis from 'moralis'; +import { type Address, zeroAddress } from 'viem'; + +import { moralisApiConfig } from '$config'; +import { MORALIS_API_KEY } from '$env/static/private'; +import type { INFTRepository } from '$nftAPI/domain/interfaces/INFTRepository'; +import type { NFT } from '$nftAPI/domain/models/NFT'; +import { mapToNFTFromMoralis } from '$nftAPI/infrastructure/mappers/nft/MoralisNFTMapper'; +import type { NFTApiData } from '$nftAPI/infrastructure/types/moralis'; + +import type { FetchNftArgs } from '../types/common'; + +class MoralisNFTRepository implements INFTRepository { + private static instance: MoralisNFTRepository; + private static isInitialized = false; + + private cursor: string; + private lastFetchedAddress: Address; + private hasFetchedAll: boolean; + private nfts: NFT[] = []; + + private constructor() { + if (!MoralisNFTRepository.isInitialized) { + Moralis.start({ apiKey: MORALIS_API_KEY }) + .then(() => { + MoralisNFTRepository.isInitialized = true; + }) + .catch(console.error); + } + + this.cursor = ''; + this.lastFetchedAddress = zeroAddress; + this.hasFetchedAll = false; + } + + public static getInstance(): MoralisNFTRepository { + if (!MoralisNFTRepository.instance) { + MoralisNFTRepository.instance = new MoralisNFTRepository(); + } + return MoralisNFTRepository.instance; + } + + async findByAddress({ address, chainId, refresh = false }: FetchNftArgs): Promise { + this.lastFetchedAddress = address; + if (refresh) { + this.reset(); + } + if (this.hasFetchedAll) { + return this.nfts; + } + + try { + const response = await Moralis.EvmApi.nft.getWalletNFTs({ + cursor: this.getCursor(address, refresh), + chain: chainId, + excludeSpam: moralisApiConfig.excludeSpam, + mediaItems: moralisApiConfig.mediaItems, + address: address, + limit: moralisApiConfig.limit, + }); + + this.cursor = response.pagination.cursor || ''; + this.hasFetchedAll = !this.cursor; // If there is no cursor, we have fetched all NFTs + + const mappedData = response.result.map((nft) => mapToNFTFromMoralis(nft as unknown as NFTApiData, chainId)); + this.nfts = [...this.nfts, ...mappedData]; + return this.nfts; + } catch (e) { + console.error('Failed to fetch NFTs from Moralis:', e); + return []; + } + } + + private reset(): void { + this.cursor = ''; + this.hasFetchedAll = false; + this.nfts = []; + } + + private getCursor(address: Address, refresh: boolean): string { + if (this.lastFetchedAddress !== address || refresh) { + return ''; + } + return this.cursor || ''; + } +} + +export default MoralisNFTRepository.getInstance(); diff --git a/packages/bridge-ui/src/libs/nft/infrastructure/mappers/nft/MoralisNFTMapper.ts b/packages/bridge-ui/src/libs/nft/infrastructure/mappers/nft/MoralisNFTMapper.ts new file mode 100644 index 0000000000..15ebabafdb --- /dev/null +++ b/packages/bridge-ui/src/libs/nft/infrastructure/mappers/nft/MoralisNFTMapper.ts @@ -0,0 +1,20 @@ +import type { Address } from 'viem'; + +import type { TokenType } from '$libs/token'; +import type { NFT } from '$nftAPI/domain/models/NFT'; +import type { NFTApiData } from '$nftAPI/infrastructure/types/moralis'; + +export function mapToNFTFromMoralis(apiData: NFTApiData, chainId: number): NFT { + return { + tokenId: apiData.tokenId, + uri: apiData.tokenUri, + owner: apiData.ownerOf as Address, + name: apiData.name, + symbol: apiData.symbol, + type: apiData.contractType as TokenType, + balance: apiData.amount, + addresses: { + [chainId]: apiData.tokenAddress as Address, + }, + }; +} diff --git a/packages/bridge-ui/src/libs/nft/infrastructure/types/common.ts b/packages/bridge-ui/src/libs/nft/infrastructure/types/common.ts new file mode 100644 index 0000000000..d22d3bd57b --- /dev/null +++ b/packages/bridge-ui/src/libs/nft/infrastructure/types/common.ts @@ -0,0 +1,7 @@ +import type { Address } from 'viem'; + +export type FetchNftArgs = { + address: Address; + chainId: number; + refresh: boolean; +}; diff --git a/packages/bridge-ui/src/libs/nft/infrastructure/types/moralis.ts b/packages/bridge-ui/src/libs/nft/infrastructure/types/moralis.ts new file mode 100644 index 0000000000..848e078a6c --- /dev/null +++ b/packages/bridge-ui/src/libs/nft/infrastructure/types/moralis.ts @@ -0,0 +1,21 @@ +import type { LimitNumberError } from 'ajv/dist/vocabularies/validation/limitNumber'; +import type { Address } from 'viem'; + +export interface NFTApiData { + tokenId: string | number; + contractType: string; + chain: LimitNumberError; + tokenUri: string; + tokenAddress: Address; + tokenHash: string; + metadata: string; + name: string; + symbol: string; + ownerOf: Address; + blockNumberMinted: bigint; + blockNumber: bigint; + lastMetadataSync: Date; + lastTokenUriSync: Date; + amount: number | string; + possibleSpam: boolean; +} diff --git a/packages/bridge-ui/src/routes/api/nft/+server.ts b/packages/bridge-ui/src/routes/api/nft/+server.ts new file mode 100644 index 0000000000..5b750397bf --- /dev/null +++ b/packages/bridge-ui/src/routes/api/nft/+server.ts @@ -0,0 +1,29 @@ +import type { RequestHandler } from '@sveltejs/kit'; + +import { NFTService } from '$nftAPI/domain/services/NFTService'; +import moralisRepository from '$nftAPI/infrastructure/api/MoralisNFTRepository.server'; + +const nftService = new NFTService(moralisRepository); + +export const POST: RequestHandler = async ({ request }) => { + try { + const { address, chainId, refresh } = await request.json(); + + const nfts = await nftService.fetchNFTsByAddress({ address, chainId, refresh }); + + return new Response(JSON.stringify({ nfts }), { + status: 200, + headers: { + 'Content-Type': 'application/json', + }, + }); + } catch (error) { + console.error('Failed to fetch NFTs:', error); + return new Response(JSON.stringify({ error: 'Failed to retrieve NFT data' }), { + status: 500, + headers: { + 'Content-Type': 'application/json', + }, + }); + } +}; diff --git a/packages/bridge-ui/src/tests/setup.ts b/packages/bridge-ui/src/tests/setup.ts index ab8a24193d..50de5addc4 100644 --- a/packages/bridge-ui/src/tests/setup.ts +++ b/packages/bridge-ui/src/tests/setup.ts @@ -3,3 +3,32 @@ import dotenv from 'dotenv'; dotenv.config({ path: './.env.test' }); vi.mock('@wagmi/core'); + +// Source: https://github.com/vitest-dev/vitest/issues/4043#issuecomment-1905172846 +// This snippet is needed in order to support Uint8Array with vitest and jsdom. +if (process.env.VITEST === 'true') { + class ESBuildAndJSDOMCompatibleTextEncoder extends TextEncoder { + constructor() { + super(); + } + + encode(input: string) { + if (typeof input !== 'string') { + throw new TypeError('`input` must be a string'); + } + + const decodedURI = decodeURIComponent(encodeURIComponent(input)); + const arr = new Uint8Array(decodedURI.length); + const chars = decodedURI.split(''); + for (let i = 0; i < chars.length; i++) { + arr[i] = decodedURI[i].charCodeAt(0); + } + return arr; + } + } + + Object.defineProperty(global, 'TextEncoder', { + value: ESBuildAndJSDOMCompatibleTextEncoder, + writable: true, + }); +} diff --git a/packages/bridge-ui/svelte.config.js b/packages/bridge-ui/svelte.config.js index 4d177cd46f..e2427361c0 100644 --- a/packages/bridge-ui/svelte.config.js +++ b/packages/bridge-ui/svelte.config.js @@ -1,5 +1,5 @@ -import adapter from '@sveltejs/adapter-static'; -import { vitePreprocess } from '@sveltejs/kit/vite'; +import adapter from '@sveltejs/adapter-auto'; +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; /** @type {import('@sveltejs/kit').Config} */ const config = { diff --git a/packages/bridge-ui/tsconfig.json b/packages/bridge-ui/tsconfig.json index fd05dc9b2f..cda36531bc 100644 --- a/packages/bridge-ui/tsconfig.json +++ b/packages/bridge-ui/tsconfig.json @@ -23,6 +23,7 @@ "$chainConfig": ["./src/generated/chainConfig.ts"], "$relayerConfig": ["./src/generated/relayerConfig.ts"], "$customToken": ["./src/generated/customTokenConfig.ts"], + "$nftAPI/*": ["./src/libs/nft/*"], "$mocks": ["./src/tests/mocks/index.ts"] }, diff --git a/packages/bridge-ui/vercel.json b/packages/bridge-ui/vercel.json deleted file mode 100644 index 2124409429..0000000000 --- a/packages/bridge-ui/vercel.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "routes": [ - { - "src": "/[^.]+", - "dest": "/", - "status": 200 - } - ] -} diff --git a/packages/bridge-ui/vite.config.ts b/packages/bridge-ui/vite.config.ts index cb57f47f96..75b4124d13 100644 --- a/packages/bridge-ui/vite.config.ts +++ b/packages/bridge-ui/vite.config.ts @@ -1,7 +1,7 @@ import { sveltekit } from '@sveltejs/kit/vite'; import dotenv from 'dotenv'; +import { defineConfig } from 'vite'; import tsconfigPaths from 'vite-tsconfig-paths'; -import { defineProject } from 'vitest/dist/config'; import { generateBridgeConfig } from './scripts/vite-plugins/generateBridgeConfig'; import { generateChainConfig } from './scripts/vite-plugins/generateChainConfig'; @@ -13,7 +13,7 @@ if (process.env.NODE_ENV === 'test') { dotenv.config({ path: './.env.test' }); } -export default defineProject({ +export default defineConfig({ build: { sourcemap: true, }, diff --git a/packages/eventindexer/indexer/filter.go b/packages/eventindexer/indexer/filter.go index fe3f861e66..d7849d3efe 100644 --- a/packages/eventindexer/indexer/filter.go +++ b/packages/eventindexer/indexer/filter.go @@ -36,7 +36,7 @@ func filterFunc( err = i.saveTransitionProvedEvents(ctx, chainID, transitionProvedEvents) if err != nil { - return errors.Wrap(err, "i.saveBlockProvenEvents") + return errors.Wrap(err, "i.saveTransitionProvedEvents") } return nil @@ -198,17 +198,14 @@ func (i *Indexer) filter( ctx context.Context, filter FilterFunc, ) error { - header, err := i.ethClient.HeaderByNumber(ctx, nil) + endBlockID, err := i.ethClient.BlockNumber(ctx) if err != nil { - return errors.Wrap(err, "i.ethClient.HeaderByNumber") + return errors.Wrap(err, "i.ethClient.BlockNumber") } - // the end block is the latest header. - endBlockID := header.Number.Uint64() - slog.Info("getting batch of events", "startBlock", i.latestIndexedBlockNumber, - "endBlock", header.Number.Int64(), + "endBlock", endBlockID, "batchSize", i.blockBatchSize, ) diff --git a/packages/eventindexer/indexer/index_nft_transfers.go b/packages/eventindexer/indexer/index_nft_transfers.go index 385d7441e5..d27a35fdce 100644 --- a/packages/eventindexer/indexer/index_nft_transfers.go +++ b/packages/eventindexer/indexer/index_nft_transfers.go @@ -116,35 +116,34 @@ func (i *Indexer) saveERC721Transfer(ctx context.Context, chainID *big.Int, vLog ) // increment To address's balance - - _, err := i.nftBalanceRepo.IncreaseBalance(ctx, eventindexer.UpdateNFTBalanceOpts{ + // decrement From address's balance + increaseOpts := eventindexer.UpdateNFTBalanceOpts{ ChainID: chainID.Int64(), Address: to, TokenID: tokenID, ContractAddress: vLog.Address.Hex(), ContractType: "ERC721", Amount: 1, // ERC721 is always 1 - }) - if err != nil { - return err } + decreaseOpts := eventindexer.UpdateNFTBalanceOpts{} - // decrement From address's balance // ignore zero address since that is usually the "mint" if from != ZeroAddress.Hex() { - _, err = i.nftBalanceRepo.SubtractBalance(ctx, eventindexer.UpdateNFTBalanceOpts{ + decreaseOpts = eventindexer.UpdateNFTBalanceOpts{ ChainID: chainID.Int64(), Address: from, TokenID: tokenID, ContractAddress: vLog.Address.Hex(), ContractType: "ERC721", Amount: 1, // ERC721 is always 1 - }) - if err != nil { - return err } } + _, _, err := i.nftBalanceRepo.IncreaseAndDecreaseBalancesInTx(ctx, increaseOpts, decreaseOpts) + if err != nil { + return err + } + return nil } @@ -178,7 +177,7 @@ func (i *Indexer) saveERC1155Transfer(ctx context.Context, chainID *big.Int, vLo } transfers = append(transfers, t) - } else if vLog.Topics[0].Hex() != transferBatchSignatureHash.Hex() { + } else if vLog.Topics[0].Hex() == transferBatchSignatureHash.Hex() { var t []transfer err = erc1155ABI.UnpackIntoInterface(&t, "TransferBatch", []byte(vLog.Data)) @@ -200,32 +199,32 @@ func (i *Indexer) saveERC1155Transfer(ctx context.Context, chainID *big.Int, vLo // increment To address's balance for _, transfer := range transfers { - _, err = i.nftBalanceRepo.IncreaseBalance(ctx, eventindexer.UpdateNFTBalanceOpts{ + increaseOpts := eventindexer.UpdateNFTBalanceOpts{ ChainID: chainID.Int64(), Address: to, TokenID: transfer.ID.Int64(), ContractAddress: vLog.Address.Hex(), ContractType: "ERC1155", Amount: transfer.Amount.Int64(), - }) - if err != nil { - return err } + decreaseOpts := eventindexer.UpdateNFTBalanceOpts{} if from != ZeroAddress.Hex() { // decrement From address's balance - _, err = i.nftBalanceRepo.SubtractBalance(ctx, eventindexer.UpdateNFTBalanceOpts{ + decreaseOpts = eventindexer.UpdateNFTBalanceOpts{ ChainID: chainID.Int64(), Address: from, TokenID: transfer.ID.Int64(), ContractAddress: vLog.Address.Hex(), ContractType: "ERC1155", Amount: transfer.Amount.Int64(), - }) - if err != nil { - return err } } + + _, _, err = i.nftBalanceRepo.IncreaseAndDecreaseBalancesInTx(ctx, increaseOpts, decreaseOpts) + if err != nil { + return err + } } return nil diff --git a/packages/eventindexer/nft_balance.go b/packages/eventindexer/nft_balance.go index 9b1651a49b..1497b32d6e 100644 --- a/packages/eventindexer/nft_balance.go +++ b/packages/eventindexer/nft_balance.go @@ -30,8 +30,11 @@ type UpdateNFTBalanceOpts struct { // NFTBalanceRepository is used to interact with nft balances in the store type NFTBalanceRepository interface { - SubtractBalance(ctx context.Context, opts UpdateNFTBalanceOpts) (*NFTBalance, error) - IncreaseBalance(ctx context.Context, opts UpdateNFTBalanceOpts) (*NFTBalance, error) + IncreaseAndDecreaseBalancesInTx( + ctx context.Context, + increaseOpts UpdateNFTBalanceOpts, + decreaseOpts UpdateNFTBalanceOpts, + ) (increasedBalance *NFTBalance, decreasedBalance *NFTBalance, err error) FindByAddress(ctx context.Context, req *http.Request, address string, diff --git a/packages/eventindexer/pkg/mock/nft_balance_repository.go b/packages/eventindexer/pkg/mock/nft_balance_repository.go index 4b55cae4b7..a043371a5d 100644 --- a/packages/eventindexer/pkg/mock/nft_balance_repository.go +++ b/packages/eventindexer/pkg/mock/nft_balance_repository.go @@ -16,18 +16,12 @@ func NewNFTBalanceRepository() *NFTBalanceRepository { return &NFTBalanceRepository{} } -func (r *NFTBalanceRepository) SubtractBalance( +func (r *NFTBalanceRepository) IncreaseAndDecreaseBalancesInTx( ctx context.Context, - opts eventindexer.UpdateNFTBalanceOpts, -) (*eventindexer.NFTBalance, error) { - return nil, nil -} - -func (r *NFTBalanceRepository) IncreaseBalance( - ctx context.Context, - opts eventindexer.UpdateNFTBalanceOpts, -) (*eventindexer.NFTBalance, error) { - return nil, nil + increaseOpts eventindexer.UpdateNFTBalanceOpts, + decreaseOpts eventindexer.UpdateNFTBalanceOpts, +) (increasedBalance *eventindexer.NFTBalance, decreasedBalance *eventindexer.NFTBalance, err error) { + return nil, nil, nil } func (r *NFTBalanceRepository) FindByAddress(ctx context.Context, diff --git a/packages/eventindexer/pkg/repo/nft_balance.go b/packages/eventindexer/pkg/repo/nft_balance.go index c3ec5e381d..ccd6df691b 100644 --- a/packages/eventindexer/pkg/repo/nft_balance.go +++ b/packages/eventindexer/pkg/repo/nft_balance.go @@ -24,8 +24,9 @@ func NewNFTBalanceRepository(db eventindexer.DB) (*NFTBalanceRepository, error) }, nil } -func (r *NFTBalanceRepository) IncreaseBalance( +func (r *NFTBalanceRepository) increaseBalanceInDB( ctx context.Context, + db *gorm.DB, opts eventindexer.UpdateNFTBalanceOpts, ) (*eventindexer.NFTBalance, error) { b := &eventindexer.NFTBalance{ @@ -34,11 +35,9 @@ func (r *NFTBalanceRepository) IncreaseBalance( Address: opts.Address, ContractType: opts.ContractType, ChainID: opts.ChainID, - Amount: 0, } - err := r.db. - GormDB(). + err := db. Where("contract_address = ?", opts.ContractAddress). Where("token_id = ?", opts.TokenID). Where("address = ?", opts.Address). @@ -55,15 +54,16 @@ func (r *NFTBalanceRepository) IncreaseBalance( b.Amount += opts.Amount // update the row to reflect new balance - if err := r.db.GormDB().Save(b).Error; err != nil { + if err := db.Save(b).Error; err != nil { return nil, errors.Wrap(err, "r.db.Save") } return b, nil } -func (r *NFTBalanceRepository) SubtractBalance( +func (r *NFTBalanceRepository) decreaseBalanceInDB( ctx context.Context, + db *gorm.DB, opts eventindexer.UpdateNFTBalanceOpts, ) (*eventindexer.NFTBalance, error) { b := &eventindexer.NFTBalance{ @@ -74,8 +74,7 @@ func (r *NFTBalanceRepository) SubtractBalance( ChainID: opts.ChainID, } - err := r.db. - GormDB(). + err := db. Where("contract_address = ?", opts.ContractAddress). Where("token_id = ?", opts.TokenID). Where("address = ?", opts.Address). @@ -86,7 +85,7 @@ func (r *NFTBalanceRepository) SubtractBalance( if err != gorm.ErrRecordNotFound { return nil, errors.Wrap(err, "r.db.gormDB.First") } else { - // cant subtract a balance if user never had this balance, indexing issue + // cant decrease a balance if user never had this balance, indexing issue return nil, nil } } @@ -95,12 +94,12 @@ func (r *NFTBalanceRepository) SubtractBalance( // we can just delete the row, this user has no more of this NFT if b.Amount == 0 { - if err := r.db.GormDB().Delete(b).Error; err != nil { + if err := db.Delete(b).Error; err != nil { return nil, errors.Wrap(err, "r.db.Delete") } } else { // update the row instead to reflect new balance - if err := r.db.GormDB().Save(b).Error; err != nil { + if err := db.Save(b).Error; err != nil { return nil, errors.Wrap(err, "r.db.Save") } } @@ -108,6 +107,30 @@ func (r *NFTBalanceRepository) SubtractBalance( return b, nil } +func (r *NFTBalanceRepository) IncreaseAndDecreaseBalancesInTx( + ctx context.Context, + increaseOpts eventindexer.UpdateNFTBalanceOpts, + decreaseOpts eventindexer.UpdateNFTBalanceOpts, +) (increasedBalance *eventindexer.NFTBalance, decreasedBalance *eventindexer.NFTBalance, err error) { + err = r.db.GormDB().Transaction(func(tx *gorm.DB) (err error) { + increasedBalance, err = r.increaseBalanceInDB(ctx, tx, increaseOpts) + if err != nil { + return err + } + + if decreaseOpts.Amount != 0 { + decreasedBalance, err = r.decreaseBalanceInDB(ctx, tx, decreaseOpts) + } + + return err + }) + if err != nil { + return nil, nil, errors.Wrap(err, "r.db.Transaction") + } + + return increasedBalance, decreasedBalance, nil +} + func (r *NFTBalanceRepository) FindByAddress(ctx context.Context, req *http.Request, address string, diff --git a/packages/eventindexer/pkg/repo/nft_balance_test.go b/packages/eventindexer/pkg/repo/nft_balance_test.go index 15416b29b0..86d04be860 100644 --- a/packages/eventindexer/pkg/repo/nft_balance_test.go +++ b/packages/eventindexer/pkg/repo/nft_balance_test.go @@ -39,7 +39,7 @@ func Test_NewNFTBalanceRepo(t *testing.T) { } } -func TestIntegration_NFTBalance_Increase(t *testing.T) { +func TestIntegration_NFTBalance_Increase_And_Decrease(t *testing.T) { db, close, err := testMysql(t) assert.Equal(t, nil, err) @@ -48,43 +48,7 @@ func TestIntegration_NFTBalance_Increase(t *testing.T) { nftBalanceRepo, err := NewNFTBalanceRepository(db) assert.Equal(t, nil, err) - tests := []struct { - name string - opts eventindexer.UpdateNFTBalanceOpts - wantErr error - }{ - { - "success", - eventindexer.UpdateNFTBalanceOpts{ - ChainID: 1, - Address: "0x123", - TokenID: 1, - ContractAddress: "0x123", - ContractType: "ERC721", - Amount: 1, - }, - nil, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - _, err := nftBalanceRepo.IncreaseBalance(context.Background(), tt.opts) - assert.Equal(t, tt.wantErr, err) - }) - } -} - -func TestIntegration_NFTBalance_Decrease(t *testing.T) { - db, close, err := testMysql(t) - assert.Equal(t, nil, err) - - defer close() - - nftBalanceRepo, err := NewNFTBalanceRepository(db) - assert.Equal(t, nil, err) - - bal1, err := nftBalanceRepo.IncreaseBalance(context.Background(), + bal1, _, err := nftBalanceRepo.IncreaseAndDecreaseBalancesInTx(context.Background(), eventindexer.UpdateNFTBalanceOpts{ ChainID: 1, Address: "0x123", @@ -92,11 +56,11 @@ func TestIntegration_NFTBalance_Decrease(t *testing.T) { ContractAddress: "0x123", ContractType: "ERC721", Amount: 1, - }) + }, eventindexer.UpdateNFTBalanceOpts{}) assert.Equal(t, nil, err) assert.NotNil(t, bal1) - bal2, err := nftBalanceRepo.IncreaseBalance(context.Background(), + bal2, _, err := nftBalanceRepo.IncreaseAndDecreaseBalancesInTx(context.Background(), eventindexer.UpdateNFTBalanceOpts{ ChainID: 1, Address: "0x123", @@ -104,17 +68,26 @@ func TestIntegration_NFTBalance_Decrease(t *testing.T) { ContractAddress: "0x123456", ContractType: "ERC721", Amount: 2, - }) + }, eventindexer.UpdateNFTBalanceOpts{}) assert.Equal(t, nil, err) assert.NotNil(t, bal2) tests := []struct { - name string - opts eventindexer.UpdateNFTBalanceOpts - wantErr error + name string + increaseOpts eventindexer.UpdateNFTBalanceOpts + decreaseOpts eventindexer.UpdateNFTBalanceOpts + wantErr error }{ { "success", + eventindexer.UpdateNFTBalanceOpts{ + ChainID: 1, + Address: "0x123", + TokenID: 1, + ContractAddress: "0x123456789", + ContractType: "ERC721", + Amount: 1, + }, eventindexer.UpdateNFTBalanceOpts{ ChainID: 1, Address: "0x123", @@ -127,6 +100,14 @@ func TestIntegration_NFTBalance_Decrease(t *testing.T) { }, { "one left", + eventindexer.UpdateNFTBalanceOpts{ + ChainID: 1, + Address: "0x123", + TokenID: 1, + ContractAddress: "0x123456789", + ContractType: "ERC721", + Amount: 1, + }, eventindexer.UpdateNFTBalanceOpts{ ChainID: 1, Address: "0x123", @@ -141,7 +122,7 @@ func TestIntegration_NFTBalance_Decrease(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - _, err := nftBalanceRepo.SubtractBalance(context.Background(), tt.opts) + _, _, err := nftBalanceRepo.IncreaseAndDecreaseBalancesInTx(context.Background(), tt.increaseOpts, tt.decreaseOpts) assert.Equal(t, tt.wantErr, err) }) } diff --git a/packages/guardian-prover-health-check-ui/package.json b/packages/guardian-prover-health-check-ui/package.json index fcebc6ed5f..f2a34ab032 100644 --- a/packages/guardian-prover-health-check-ui/package.json +++ b/packages/guardian-prover-health-check-ui/package.json @@ -2,9 +2,6 @@ "name": "guardian-prover-health-check-ui", "version": "0.1.0", "private": true, - "engines": { - "node": "^20.0.0" - }, "scripts": { "dev": "vite dev", "build": "vite build", @@ -37,7 +34,7 @@ "prettier": "^3.2.5", "prettier-plugin-svelte": "^3.2.2", "svelte": "^4.2.13", - "svelte-check": "^3.6.9", + "svelte-check": "^3.7.1", "tailwindcss": "^3.4.3", "tslib": "^2.6.2", "typescript": "^5.4.3", diff --git a/packages/guardian-prover-health-check-ui/src/app.config.ts b/packages/guardian-prover-health-check-ui/src/app.config.ts new file mode 100644 index 0000000000..8a3f22b0a3 --- /dev/null +++ b/packages/guardian-prover-health-check-ui/src/app.config.ts @@ -0,0 +1 @@ +export const configuredNetworks = ['hekla', 'devnet'] diff --git a/packages/guardian-prover-health-check-ui/src/components/GuardianProver/GuardianProverTableRow.svelte b/packages/guardian-prover-health-check-ui/src/components/GuardianProver/GuardianProverTableRow.svelte index 5fdd1b040a..f2c6770dee 100644 --- a/packages/guardian-prover-health-check-ui/src/components/GuardianProver/GuardianProverTableRow.svelte +++ b/packages/guardian-prover-health-check-ui/src/components/GuardianProver/GuardianProverTableRow.svelte @@ -72,7 +72,12 @@ {$loading ? 'collapse-close' : ''} bg-base-200" > - +
{#if $loading} diff --git a/packages/guardian-prover-health-check-ui/src/components/Overview/Overview.svelte b/packages/guardian-prover-health-check-ui/src/components/Overview/Overview.svelte index 3c58e5f665..83ed8165fe 100644 --- a/packages/guardian-prover-health-check-ui/src/components/Overview/Overview.svelte +++ b/packages/guardian-prover-health-check-ui/src/components/Overview/Overview.svelte @@ -20,7 +20,7 @@ const openDetails = (guardianProver: Guardian) => { $selectedGuardianProver = guardianProver; - goto(guardianProver.id.toString()); + goto(guardianProver.address); }; onMount(async () => { @@ -39,7 +39,7 @@
- {#each dataToDisplay as guardianProver (guardianProver.id)} + {#each dataToDisplay as guardianProver (guardianProver.address)} openDetails(guardianProver)} diff --git a/packages/guardian-prover-health-check-ui/src/lib/api/guardianProverApiCalls.ts b/packages/guardian-prover-health-check-ui/src/lib/api/guardianProverApiCalls.ts index c8f7404cfa..be92a97dfd 100644 --- a/packages/guardian-prover-health-check-ui/src/lib/api/guardianProverApiCalls.ts +++ b/packages/guardian-prover-health-check-ui/src/lib/api/guardianProverApiCalls.ts @@ -13,16 +13,17 @@ import type { UptimeResponse } from '$lib/types'; import axios from 'axios'; +import type { Address } from 'viem'; export async function fetchGuardianProverHealthChecksFromApi( baseURL: string, page: number, size: number, - guardianProverId?: number + guardianProverAddress?: Address ): Promise> { let url; - if (guardianProverId) { - url = `${baseURL}/${healthCheckRoute}/${guardianProverId}`; + if (guardianProverAddress) { + url = `${baseURL}/${healthCheckRoute}/${guardianProverAddress}`; } else { url = `${baseURL}/${healthCheckRoute}`; } @@ -39,9 +40,9 @@ export async function fetchGuardianProverHealthChecksFromApi( export async function fetchLatestGuardianProverHealthCheckFromApi( baseURL: string, - guardianProverId: number + guardianProverAddress: Address ): Promise { - const url = `${baseURL}/${livenessRoute}/${guardianProverId}`; + const url = `${baseURL}/${livenessRoute}/${guardianProverAddress}`; const resp = await axios.get(url); @@ -50,25 +51,25 @@ export async function fetchLatestGuardianProverHealthCheckFromApi( export async function fetchUptimeFromApi( baseURL: string, - guardianProverId: number + guardianProverAddress: Address ): Promise { - const url = `${baseURL}/${uptimeRoute}/${guardianProverId}`; + const url = `${baseURL}/${uptimeRoute}/${guardianProverAddress}`; const resp = await axios.get(url); return resp.data.uptime; } -export async function fetchStartupDataFromApi(baseURL: string, guardianProverId: number) { - const url = `${baseURL}/${mostRecentStartupRoute}/${guardianProverId}`; +export async function fetchStartupDataFromApi(baseURL: string, guardianProverAddress: Address) { + const url = `${baseURL}/${mostRecentStartupRoute}/${guardianProverAddress}`; const resp = await axios.get(url); return resp.data; } -export async function fetchNodeInfoFromApi(baseURL: string, guardianProverId: number) { - const url = `${baseURL}/${nodeInfoRoute}/${guardianProverId}`; +export async function fetchNodeInfoFromApi(baseURL: string, guardianProverAddress: Address) { + const url = `${baseURL}/${nodeInfoRoute}/${guardianProverAddress}`; const resp = await axios.get(url); diff --git a/packages/guardian-prover-health-check-ui/src/lib/dataFetcher.ts b/packages/guardian-prover-health-check-ui/src/lib/dataFetcher.ts index 965511a4c1..dfd0a31e1c 100644 --- a/packages/guardian-prover-health-check-ui/src/lib/dataFetcher.ts +++ b/packages/guardian-prover-health-check-ui/src/lib/dataFetcher.ts @@ -86,7 +86,7 @@ async function initializeGuardians() { const guardiansMap = await loadGuardians(); const rawGuardians: Guardian[] = Object.entries(guardiansMap).map(([address, name], index) => ({ name: name, - address: address, + address: address as Address, id: index + 1, // add +1 as guardian contract numbers starts at 1 latestHealthCheck: null, alive: GuardianProverStatus.UNKNOWN, @@ -108,25 +108,28 @@ async function fetchGuardians() { totalGuardianProvers.set(existingGuardians?.length); const guardianFetchPromises = existingGuardians.map(async (newGuardian) => { - const guardian = existingGuardians.find((g) => g.id === newGuardian.id) || { + const guardian = existingGuardians.find((g) => g.address === newGuardian.address) || { ...newGuardian, - latestHealthCheck: null, - uptime: 0, - balance: '0', alive: GuardianProverStatus.UNKNOWN }; + console.log('fetching guardian info for', guardian.address, guardian.id); guardian.name = await getPseudonym(guardian.address); + console.log("getting balance for", guardian.name, guardian.id, guardian.address); + const [status, uptime, balance] = await Promise.all([ fetchLatestGuardianProverHealthCheckFromApi( import.meta.env.VITE_GUARDIAN_PROVER_API_URL, - guardian.id + guardian.address ), - fetchUptimeFromApi(import.meta.env.VITE_GUARDIAN_PROVER_API_URL, guardian.id), + fetchUptimeFromApi(import.meta.env.VITE_GUARDIAN_PROVER_API_URL, guardian.address), publicClient.getBalance({ address: guardian.address as Address }) + ]); + guardian.balance = formatEther(balance); + console.log('balance', guardian.name, guardian.balance); guardian.latestHealthCheck = status; guardian.uptime = Math.min(uptime, 100); @@ -137,6 +140,8 @@ async function fetchGuardians() { const updatedGuardians = await Promise.all(guardianFetchPromises); guardianProvers.set(updatedGuardians); lastGuardianFetchTimestamp.set(Date.now()); + console.log('updatedGuardians', updatedGuardians); + } async function fetchSignedBlockStats() { @@ -183,14 +188,15 @@ async function fetchStats(): Promise { const guardians = get(guardianProvers); const updatedGuardiansPromises = guardians.map(async (guardian) => { + console.log('fetching stats for', guardian.address) const startupDataFetch = fetchStartupDataFromApi( import.meta.env.VITE_GUARDIAN_PROVER_API_URL, - guardian.id + guardian.address ); const nodeInfoFetch = fetchNodeInfoFromApi( import.meta.env.VITE_GUARDIAN_PROVER_API_URL, - guardian.id + guardian.address ); const [startupData, nodeInfo] = await Promise.all([startupDataFetch, nodeInfoFetch]); @@ -204,7 +210,6 @@ async function fetchStats(): Promise { revision: startupData.revision }; - console.log('versions', versions); const blockInfo: BlockInfo = { latestL1BlockNumber: nodeInfo.latestL1BlockNumber, diff --git a/packages/guardian-prover-health-check-ui/src/lib/guardianProver/loadConfiguredGuardians.ts b/packages/guardian-prover-health-check-ui/src/lib/guardianProver/loadConfiguredGuardians.ts index c3c4e72a68..59794e826c 100644 --- a/packages/guardian-prover-health-check-ui/src/lib/guardianProver/loadConfiguredGuardians.ts +++ b/packages/guardian-prover-health-check-ui/src/lib/guardianProver/loadConfiguredGuardians.ts @@ -1,11 +1,15 @@ +import { configuredNetworks } from "$config"; + export async function loadGuardians(): Promise<{ [address: string]: string }> { - const network = import.meta.env.VITE_NETWORK_CONFIG; - if (!network) - throw new Error('Network not configured. Please set VITE_NETWORK_CONFIG in .env file.'); - const path = `/config/${network}/guardians.json`; - const response = await fetch(path); - if (!response.ok) { - throw new Error(`Failed to load ${path}: ${response.statusText}`); - } - return response.json(); + const network = import.meta.env.VITE_NETWORK_CONFIG; + if (!network) { + throw new Error('Network not configured. Please set VITE_NETWORK_CONFIG in .env file. Currently supported networks: ' + configuredNetworks.join(', ')); + } + const path = `/config/${network}/guardians.json`; + const response = await fetch(path); + if (!response.ok) { + throw new Error(`Failed to load ${path}: ${response.statusText}`); + } + return response.json(); } + diff --git a/packages/guardian-prover-health-check-ui/src/lib/types.ts b/packages/guardian-prover-health-check-ui/src/lib/types.ts index 1bed52aa47..cfc507752d 100644 --- a/packages/guardian-prover-health-check-ui/src/lib/types.ts +++ b/packages/guardian-prover-health-check-ui/src/lib/types.ts @@ -1,3 +1,5 @@ +import type { Address } from "viem"; + export type SignedBlock = { blockHash: string; signature: string; @@ -63,7 +65,7 @@ export type PageResponse = { export type Guardian = { name: string; - address: string; + address: Address; id: number; latestHealthCheck: HealthCheck; alive: GuardianProverStatus; diff --git a/packages/guardian-prover-health-check-ui/src/routes/[slug]/+page.svelte b/packages/guardian-prover-health-check-ui/src/routes/[slug]/+page.svelte index b5d18817ee..272c874920 100644 --- a/packages/guardian-prover-health-check-ui/src/routes/[slug]/+page.svelte +++ b/packages/guardian-prover-health-check-ui/src/routes/[slug]/+page.svelte @@ -14,12 +14,12 @@ $: if (get(guardianProvers)) { selected = $guardianProvers.find( - (guardianProver) => Number(guardianProver.id) === parseInt(data.slug) + (guardianProver) => Number(guardianProver.address) === parseInt(data.slug) ); } else { refreshData().then(() => { get(guardianProvers).map((prover) => { - if (Number(prover.id) === parseInt(data.slug)) { + if (prover.address === data.slug) { selected = prover; selectedGuardianProver.set(selected); } diff --git a/packages/guardian-prover-health-check-ui/static/config/devnet/guardians.json b/packages/guardian-prover-health-check-ui/static/config/devnet/guardians.json new file mode 100644 index 0000000000..7a0f00fc8d --- /dev/null +++ b/packages/guardian-prover-health-check-ui/static/config/devnet/guardians.json @@ -0,0 +1,11 @@ +{ + "0x90F79bf6EB2c4f870365E785982E1f101E93b906": "Internal 1", + "0x7D86687F980A56b832e9378952B738b614A99dc6": "Internal 2", + "0x11e8F3eA3C6FcF12EcfF2722d75CEFC539c51a1C": "Internal 3", + "0x9eAF5590f2c84912A08de97FA28d0529361Deb9E": "Internal 4", + "0x1003ff39d25F2Ab16dBCc18EcE05a9B6154f65F4": "Internal 5", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8": "Internal 6", + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266": "Internal 7", + "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65": "Internal 8", + "0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f": "Internal 9" +} diff --git a/packages/protocol/contract_layout.md b/packages/protocol/contract_layout.md new file mode 100644 index 0000000000..08d8a74d7a --- /dev/null +++ b/packages/protocol/contract_layout.md @@ -0,0 +1,562 @@ +## TaikoL1 +| Name | Type | Slot | Offset | Bytes | Contract | +|----------------|------------------------|------|--------|-------|----------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/L1/TaikoL1.sol:TaikoL1 | +| _initializing | bool | 0 | 1 | 1 | contracts/L1/TaikoL1.sol:TaikoL1 | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/L1/TaikoL1.sol:TaikoL1 | +| _owner | address | 51 | 0 | 20 | contracts/L1/TaikoL1.sol:TaikoL1 | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/L1/TaikoL1.sol:TaikoL1 | +| _pendingOwner | address | 101 | 0 | 20 | contracts/L1/TaikoL1.sol:TaikoL1 | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/L1/TaikoL1.sol:TaikoL1 | +| addressManager | address | 151 | 0 | 20 | contracts/L1/TaikoL1.sol:TaikoL1 | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/L1/TaikoL1.sol:TaikoL1 | +| __reentry | uint8 | 201 | 0 | 1 | contracts/L1/TaikoL1.sol:TaikoL1 | +| __paused | uint8 | 201 | 1 | 1 | contracts/L1/TaikoL1.sol:TaikoL1 | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/L1/TaikoL1.sol:TaikoL1 | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/L1/TaikoL1.sol:TaikoL1 | +| state | struct TaikoData.State | 251 | 0 | 1600 | contracts/L1/TaikoL1.sol:TaikoL1 | +| __gap | uint256[50] | 301 | 0 | 1600 | contracts/L1/TaikoL1.sol:TaikoL1 | + +## TaikoL2 +| Name | Type | Slot | Offset | Bytes | Contract | +|-----------------|-----------------------------|------|--------|-------|----------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/L2/TaikoL2.sol:TaikoL2 | +| _initializing | bool | 0 | 1 | 1 | contracts/L2/TaikoL2.sol:TaikoL2 | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/L2/TaikoL2.sol:TaikoL2 | +| _owner | address | 51 | 0 | 20 | contracts/L2/TaikoL2.sol:TaikoL2 | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/L2/TaikoL2.sol:TaikoL2 | +| _pendingOwner | address | 101 | 0 | 20 | contracts/L2/TaikoL2.sol:TaikoL2 | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/L2/TaikoL2.sol:TaikoL2 | +| addressManager | address | 151 | 0 | 20 | contracts/L2/TaikoL2.sol:TaikoL2 | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/L2/TaikoL2.sol:TaikoL2 | +| __reentry | uint8 | 201 | 0 | 1 | contracts/L2/TaikoL2.sol:TaikoL2 | +| __paused | uint8 | 201 | 1 | 1 | contracts/L2/TaikoL2.sol:TaikoL2 | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/L2/TaikoL2.sol:TaikoL2 | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/L2/TaikoL2.sol:TaikoL2 | +| l2Hashes | mapping(uint256 => bytes32) | 251 | 0 | 32 | contracts/L2/TaikoL2.sol:TaikoL2 | +| publicInputHash | bytes32 | 252 | 0 | 32 | contracts/L2/TaikoL2.sol:TaikoL2 | +| gasExcess | uint64 | 253 | 0 | 8 | contracts/L2/TaikoL2.sol:TaikoL2 | +| lastSyncedBlock | uint64 | 253 | 8 | 8 | contracts/L2/TaikoL2.sol:TaikoL2 | +| __deprecated1 | uint64 | 253 | 16 | 8 | contracts/L2/TaikoL2.sol:TaikoL2 | +| __deprecated2 | uint64 | 253 | 24 | 8 | contracts/L2/TaikoL2.sol:TaikoL2 | +| l1ChainId | uint64 | 254 | 0 | 8 | contracts/L2/TaikoL2.sol:TaikoL2 | +| __gap | uint256[46] | 255 | 0 | 1472 | contracts/L2/TaikoL2.sol:TaikoL2 | + +## SignalService +| Name | Type | Slot | Offset | Bytes | Contract | +|----------------|-----------------------------------------------|------|--------|-------|--------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/signal/SignalService.sol:SignalService | +| _initializing | bool | 0 | 1 | 1 | contracts/signal/SignalService.sol:SignalService | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/signal/SignalService.sol:SignalService | +| _owner | address | 51 | 0 | 20 | contracts/signal/SignalService.sol:SignalService | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/signal/SignalService.sol:SignalService | +| _pendingOwner | address | 101 | 0 | 20 | contracts/signal/SignalService.sol:SignalService | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/signal/SignalService.sol:SignalService | +| addressManager | address | 151 | 0 | 20 | contracts/signal/SignalService.sol:SignalService | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/signal/SignalService.sol:SignalService | +| __reentry | uint8 | 201 | 0 | 1 | contracts/signal/SignalService.sol:SignalService | +| __paused | uint8 | 201 | 1 | 1 | contracts/signal/SignalService.sol:SignalService | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/signal/SignalService.sol:SignalService | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/signal/SignalService.sol:SignalService | +| topBlockId | mapping(uint64 => mapping(bytes32 => uint64)) | 251 | 0 | 32 | contracts/signal/SignalService.sol:SignalService | +| isAuthorized | mapping(address => bool) | 252 | 0 | 32 | contracts/signal/SignalService.sol:SignalService | +| __gap | uint256[48] | 253 | 0 | 1536 | contracts/signal/SignalService.sol:SignalService | + +## Bridge +| Name | Type | Slot | Offset | Bytes | Contract | +|----------------|-----------------------------------------|------|--------|-------|------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/bridge/Bridge.sol:Bridge | +| _initializing | bool | 0 | 1 | 1 | contracts/bridge/Bridge.sol:Bridge | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/bridge/Bridge.sol:Bridge | +| _owner | address | 51 | 0 | 20 | contracts/bridge/Bridge.sol:Bridge | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/bridge/Bridge.sol:Bridge | +| _pendingOwner | address | 101 | 0 | 20 | contracts/bridge/Bridge.sol:Bridge | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/bridge/Bridge.sol:Bridge | +| addressManager | address | 151 | 0 | 20 | contracts/bridge/Bridge.sol:Bridge | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/bridge/Bridge.sol:Bridge | +| __reentry | uint8 | 201 | 0 | 1 | contracts/bridge/Bridge.sol:Bridge | +| __paused | uint8 | 201 | 1 | 1 | contracts/bridge/Bridge.sol:Bridge | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/bridge/Bridge.sol:Bridge | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/bridge/Bridge.sol:Bridge | +| __reserved1 | uint64 | 251 | 0 | 8 | contracts/bridge/Bridge.sol:Bridge | +| nextMessageId | uint64 | 251 | 8 | 8 | contracts/bridge/Bridge.sol:Bridge | +| messageStatus | mapping(bytes32 => enum IBridge.Status) | 252 | 0 | 32 | contracts/bridge/Bridge.sol:Bridge | +| __ctx | struct IBridge.Context | 253 | 0 | 64 | contracts/bridge/Bridge.sol:Bridge | +| __reserved2 | uint256 | 255 | 0 | 32 | contracts/bridge/Bridge.sol:Bridge | +| __reserved3 | uint256 | 256 | 0 | 32 | contracts/bridge/Bridge.sol:Bridge | +| __gap | uint256[44] | 257 | 0 | 1408 | contracts/bridge/Bridge.sol:Bridge | + +## DelegateOwner +| Name | Type | Slot | Offset | Bytes | Contract | +|----------------|-------------|------|--------|-------|----------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/L2/DelegateOwner.sol:DelegateOwner | +| _initializing | bool | 0 | 1 | 1 | contracts/L2/DelegateOwner.sol:DelegateOwner | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/L2/DelegateOwner.sol:DelegateOwner | +| _owner | address | 51 | 0 | 20 | contracts/L2/DelegateOwner.sol:DelegateOwner | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/L2/DelegateOwner.sol:DelegateOwner | +| _pendingOwner | address | 101 | 0 | 20 | contracts/L2/DelegateOwner.sol:DelegateOwner | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/L2/DelegateOwner.sol:DelegateOwner | +| addressManager | address | 151 | 0 | 20 | contracts/L2/DelegateOwner.sol:DelegateOwner | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/L2/DelegateOwner.sol:DelegateOwner | +| __reentry | uint8 | 201 | 0 | 1 | contracts/L2/DelegateOwner.sol:DelegateOwner | +| __paused | uint8 | 201 | 1 | 1 | contracts/L2/DelegateOwner.sol:DelegateOwner | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/L2/DelegateOwner.sol:DelegateOwner | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/L2/DelegateOwner.sol:DelegateOwner | +| l1ChainId | uint64 | 251 | 0 | 8 | contracts/L2/DelegateOwner.sol:DelegateOwner | +| nextTxId | uint64 | 251 | 8 | 8 | contracts/L2/DelegateOwner.sol:DelegateOwner | +| realOwner | address | 252 | 0 | 20 | contracts/L2/DelegateOwner.sol:DelegateOwner | +| __gap | uint256[48] | 253 | 0 | 1536 | contracts/L2/DelegateOwner.sol:DelegateOwner | + +## GuardianProver +| Name | Type | Slot | Offset | Bytes | Contract | +|----------------|------------------------------------------------|------|--------|-------|--------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| _initializing | bool | 0 | 1 | 1 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| _owner | address | 51 | 0 | 20 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| _pendingOwner | address | 101 | 0 | 20 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| addressManager | address | 151 | 0 | 20 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| __reentry | uint8 | 201 | 0 | 1 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| __paused | uint8 | 201 | 1 | 1 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| guardianIds | mapping(address => uint256) | 251 | 0 | 32 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| _approvals | mapping(uint32 => mapping(bytes32 => uint256)) | 252 | 0 | 32 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| guardians | address[] | 253 | 0 | 32 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| version | uint32 | 254 | 0 | 4 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| minGuardians | uint32 | 254 | 4 | 4 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| __gap | uint256[46] | 255 | 0 | 1472 | contracts/L1/provers/GuardianProver.sol:GuardianProver | +| __gap | uint256[50] | 301 | 0 | 1600 | contracts/L1/provers/GuardianProver.sol:GuardianProver | + +## TaikoToken +| Name | Type | Slot | Offset | Bytes | Contract | +|-----------------------------------------------------|---------------------------------------------------------------|------|--------|-------|-----------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/tko/TaikoToken.sol:TaikoToken | +| _initializing | bool | 0 | 1 | 1 | contracts/tko/TaikoToken.sol:TaikoToken | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/tko/TaikoToken.sol:TaikoToken | +| _owner | address | 51 | 0 | 20 | contracts/tko/TaikoToken.sol:TaikoToken | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/tko/TaikoToken.sol:TaikoToken | +| _pendingOwner | address | 101 | 0 | 20 | contracts/tko/TaikoToken.sol:TaikoToken | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/tko/TaikoToken.sol:TaikoToken | +| addressManager | address | 151 | 0 | 20 | contracts/tko/TaikoToken.sol:TaikoToken | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/tko/TaikoToken.sol:TaikoToken | +| __reentry | uint8 | 201 | 0 | 1 | contracts/tko/TaikoToken.sol:TaikoToken | +| __paused | uint8 | 201 | 1 | 1 | contracts/tko/TaikoToken.sol:TaikoToken | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/tko/TaikoToken.sol:TaikoToken | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/tko/TaikoToken.sol:TaikoToken | +| __slots_previously_used_by_ERC20SnapshotUpgradeable | uint256[50] | 251 | 0 | 1600 | contracts/tko/TaikoToken.sol:TaikoToken | +| _balances | mapping(address => uint256) | 301 | 0 | 32 | contracts/tko/TaikoToken.sol:TaikoToken | +| _allowances | mapping(address => mapping(address => uint256)) | 302 | 0 | 32 | contracts/tko/TaikoToken.sol:TaikoToken | +| _totalSupply | uint256 | 303 | 0 | 32 | contracts/tko/TaikoToken.sol:TaikoToken | +| _name | string | 304 | 0 | 32 | contracts/tko/TaikoToken.sol:TaikoToken | +| _symbol | string | 305 | 0 | 32 | contracts/tko/TaikoToken.sol:TaikoToken | +| __gap | uint256[45] | 306 | 0 | 1440 | contracts/tko/TaikoToken.sol:TaikoToken | +| _hashedName | bytes32 | 351 | 0 | 32 | contracts/tko/TaikoToken.sol:TaikoToken | +| _hashedVersion | bytes32 | 352 | 0 | 32 | contracts/tko/TaikoToken.sol:TaikoToken | +| _name | string | 353 | 0 | 32 | contracts/tko/TaikoToken.sol:TaikoToken | +| _version | string | 354 | 0 | 32 | contracts/tko/TaikoToken.sol:TaikoToken | +| __gap | uint256[48] | 355 | 0 | 1536 | contracts/tko/TaikoToken.sol:TaikoToken | +| _nonces | mapping(address => struct CountersUpgradeable.Counter) | 403 | 0 | 32 | contracts/tko/TaikoToken.sol:TaikoToken | +| _PERMIT_TYPEHASH_DEPRECATED_SLOT | bytes32 | 404 | 0 | 32 | contracts/tko/TaikoToken.sol:TaikoToken | +| __gap | uint256[49] | 405 | 0 | 1568 | contracts/tko/TaikoToken.sol:TaikoToken | +| _delegates | mapping(address => address) | 454 | 0 | 32 | contracts/tko/TaikoToken.sol:TaikoToken | +| _checkpoints | mapping(address => struct ERC20VotesUpgradeable.Checkpoint[]) | 455 | 0 | 32 | contracts/tko/TaikoToken.sol:TaikoToken | +| _totalSupplyCheckpoints | struct ERC20VotesUpgradeable.Checkpoint[] | 456 | 0 | 32 | contracts/tko/TaikoToken.sol:TaikoToken | +| __gap | uint256[47] | 457 | 0 | 1504 | contracts/tko/TaikoToken.sol:TaikoToken | +| __gap | uint256[50] | 504 | 0 | 1600 | contracts/tko/TaikoToken.sol:TaikoToken | + +## BridgedTaikoToken +| Name | Type | Slot | Offset | Bytes | Contract | +|-----------------------------------------------------|---------------------------------------------------------------|------|--------|-------|-------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| _initializing | bool | 0 | 1 | 1 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| _owner | address | 51 | 0 | 20 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| _pendingOwner | address | 101 | 0 | 20 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| addressManager | address | 151 | 0 | 20 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| __reentry | uint8 | 201 | 0 | 1 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| __paused | uint8 | 201 | 1 | 1 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| __slots_previously_used_by_ERC20SnapshotUpgradeable | uint256[50] | 251 | 0 | 1600 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| _balances | mapping(address => uint256) | 301 | 0 | 32 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| _allowances | mapping(address => mapping(address => uint256)) | 302 | 0 | 32 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| _totalSupply | uint256 | 303 | 0 | 32 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| _name | string | 304 | 0 | 32 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| _symbol | string | 305 | 0 | 32 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| __gap | uint256[45] | 306 | 0 | 1440 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| _hashedName | bytes32 | 351 | 0 | 32 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| _hashedVersion | bytes32 | 352 | 0 | 32 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| _name | string | 353 | 0 | 32 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| _version | string | 354 | 0 | 32 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| __gap | uint256[48] | 355 | 0 | 1536 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| _nonces | mapping(address => struct CountersUpgradeable.Counter) | 403 | 0 | 32 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| _PERMIT_TYPEHASH_DEPRECATED_SLOT | bytes32 | 404 | 0 | 32 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| __gap | uint256[49] | 405 | 0 | 1568 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| _delegates | mapping(address => address) | 454 | 0 | 32 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| _checkpoints | mapping(address => struct ERC20VotesUpgradeable.Checkpoint[]) | 455 | 0 | 32 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| _totalSupplyCheckpoints | struct ERC20VotesUpgradeable.Checkpoint[] | 456 | 0 | 32 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| __gap | uint256[47] | 457 | 0 | 1504 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | +| __gap | uint256[50] | 504 | 0 | 1600 | contracts/tko/BridgedTaikoToken.sol:BridgedTaikoToken | + +## ERC20Vault +| Name | Type | Slot | Offset | Bytes | Contract | +|--------------------|------------------------------------------------------|------|--------|-------|------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| _initializing | bool | 0 | 1 | 1 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| _owner | address | 51 | 0 | 20 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| _pendingOwner | address | 101 | 0 | 20 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| addressManager | address | 151 | 0 | 20 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| __reentry | uint8 | 201 | 0 | 1 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| __paused | uint8 | 201 | 1 | 1 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| __gap | uint256[50] | 251 | 0 | 1600 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| bridgedToCanonical | mapping(address => struct ERC20Vault.CanonicalERC20) | 301 | 0 | 32 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| canonicalToBridged | mapping(uint256 => mapping(address => address)) | 302 | 0 | 32 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| btokenBlacklist | mapping(address => bool) | 303 | 0 | 32 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| lastMigrationStart | mapping(uint256 => mapping(address => uint256)) | 304 | 0 | 32 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | +| __gap | uint256[46] | 305 | 0 | 1472 | contracts/tokenvault/ERC20Vault.sol:ERC20Vault | + +## ERC721Vault +| Name | Type | Slot | Offset | Bytes | Contract | +|--------------------|------------------------------------------------------|------|--------|-------|--------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | +| _initializing | bool | 0 | 1 | 1 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | +| _owner | address | 51 | 0 | 20 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | +| _pendingOwner | address | 101 | 0 | 20 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | +| addressManager | address | 151 | 0 | 20 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | +| __reentry | uint8 | 201 | 0 | 1 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | +| __paused | uint8 | 201 | 1 | 1 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | +| __gap | uint256[50] | 251 | 0 | 1600 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | +| bridgedToCanonical | mapping(address => struct BaseNFTVault.CanonicalNFT) | 301 | 0 | 32 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | +| canonicalToBridged | mapping(uint256 => mapping(address => address)) | 302 | 0 | 32 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | +| __gap | uint256[48] | 303 | 0 | 1536 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | +| __gap | uint256[50] | 351 | 0 | 1600 | contracts/tokenvault/ERC721Vault.sol:ERC721Vault | + +## ERC1155Vault +| Name | Type | Slot | Offset | Bytes | Contract | +|--------------------|------------------------------------------------------|------|--------|-------|----------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| _initializing | bool | 0 | 1 | 1 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| _owner | address | 51 | 0 | 20 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| _pendingOwner | address | 101 | 0 | 20 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| addressManager | address | 151 | 0 | 20 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| __reentry | uint8 | 201 | 0 | 1 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| __paused | uint8 | 201 | 1 | 1 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| __gap | uint256[50] | 251 | 0 | 1600 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| bridgedToCanonical | mapping(address => struct BaseNFTVault.CanonicalNFT) | 301 | 0 | 32 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| canonicalToBridged | mapping(uint256 => mapping(address => address)) | 302 | 0 | 32 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| __gap | uint256[48] | 303 | 0 | 1536 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| __gap | uint256[50] | 351 | 0 | 1600 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| __gap | uint256[50] | 401 | 0 | 1600 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | +| __gap | uint256[50] | 451 | 0 | 1600 | contracts/tokenvault/ERC1155Vault.sol:ERC1155Vault | + +## BridgedERC20 +| Name | Type | Slot | Offset | Bytes | Contract | +|------------------|-------------------------------------------------|------|--------|-------|----------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| _initializing | bool | 0 | 1 | 1 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| _owner | address | 51 | 0 | 20 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| _pendingOwner | address | 101 | 0 | 20 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| addressManager | address | 151 | 0 | 20 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| __reentry | uint8 | 201 | 0 | 1 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| __paused | uint8 | 201 | 1 | 1 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| _balances | mapping(address => uint256) | 251 | 0 | 32 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| _allowances | mapping(address => mapping(address => uint256)) | 252 | 0 | 32 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| _totalSupply | uint256 | 253 | 0 | 32 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| _name | string | 254 | 0 | 32 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| _symbol | string | 255 | 0 | 32 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| __gap | uint256[45] | 256 | 0 | 1440 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| srcToken | address | 301 | 0 | 20 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| __srcDecimals | uint8 | 301 | 20 | 1 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| srcChainId | uint256 | 302 | 0 | 32 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| migratingAddress | address | 303 | 0 | 20 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| migratingInbound | bool | 303 | 20 | 1 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | +| __gap | uint256[47] | 304 | 0 | 1504 | contracts/tokenvault/BridgedERC20.sol:BridgedERC20 | + +## BridgedERC721 +| Name | Type | Slot | Offset | Bytes | Contract | +|--------------------|----------------------------------------------|------|--------|-------|------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| _initializing | bool | 0 | 1 | 1 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| _owner | address | 51 | 0 | 20 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| _pendingOwner | address | 101 | 0 | 20 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| addressManager | address | 151 | 0 | 20 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| __reentry | uint8 | 201 | 0 | 1 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| __paused | uint8 | 201 | 1 | 1 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| __gap | uint256[50] | 251 | 0 | 1600 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| _name | string | 301 | 0 | 32 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| _symbol | string | 302 | 0 | 32 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| _owners | mapping(uint256 => address) | 303 | 0 | 32 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| _balances | mapping(address => uint256) | 304 | 0 | 32 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| _tokenApprovals | mapping(uint256 => address) | 305 | 0 | 32 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| _operatorApprovals | mapping(address => mapping(address => bool)) | 306 | 0 | 32 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| __gap | uint256[44] | 307 | 0 | 1408 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| srcToken | address | 351 | 0 | 20 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| srcChainId | uint256 | 352 | 0 | 32 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | +| __gap | uint256[48] | 353 | 0 | 1536 | contracts/tokenvault/BridgedERC721.sol:BridgedERC721 | + +## BridgedERC1155 +| Name | Type | Slot | Offset | Bytes | Contract | +|--------------------|-------------------------------------------------|------|--------|-------|--------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| _initializing | bool | 0 | 1 | 1 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| _owner | address | 51 | 0 | 20 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| _pendingOwner | address | 101 | 0 | 20 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| addressManager | address | 151 | 0 | 20 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| __reentry | uint8 | 201 | 0 | 1 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| __paused | uint8 | 201 | 1 | 1 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| __gap | uint256[50] | 251 | 0 | 1600 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| _balances | mapping(uint256 => mapping(address => uint256)) | 301 | 0 | 32 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| _operatorApprovals | mapping(address => mapping(address => bool)) | 302 | 0 | 32 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| _uri | string | 303 | 0 | 32 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| __gap | uint256[47] | 304 | 0 | 1504 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| srcToken | address | 351 | 0 | 20 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| srcChainId | uint256 | 352 | 0 | 32 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| symbol | string | 353 | 0 | 32 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| name | string | 354 | 0 | 32 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | +| __gap | uint256[46] | 355 | 0 | 1472 | contracts/tokenvault/BridgedERC1155.sol:BridgedERC1155 | + +## AssignmentHook +| Name | Type | Slot | Offset | Bytes | Contract | +|----------------|-------------|------|--------|-------|------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/L1/hooks/AssignmentHook.sol:AssignmentHook | +| _initializing | bool | 0 | 1 | 1 | contracts/L1/hooks/AssignmentHook.sol:AssignmentHook | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/L1/hooks/AssignmentHook.sol:AssignmentHook | +| _owner | address | 51 | 0 | 20 | contracts/L1/hooks/AssignmentHook.sol:AssignmentHook | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/L1/hooks/AssignmentHook.sol:AssignmentHook | +| _pendingOwner | address | 101 | 0 | 20 | contracts/L1/hooks/AssignmentHook.sol:AssignmentHook | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/L1/hooks/AssignmentHook.sol:AssignmentHook | +| addressManager | address | 151 | 0 | 20 | contracts/L1/hooks/AssignmentHook.sol:AssignmentHook | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/L1/hooks/AssignmentHook.sol:AssignmentHook | +| __reentry | uint8 | 201 | 0 | 1 | contracts/L1/hooks/AssignmentHook.sol:AssignmentHook | +| __paused | uint8 | 201 | 1 | 1 | contracts/L1/hooks/AssignmentHook.sol:AssignmentHook | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/L1/hooks/AssignmentHook.sol:AssignmentHook | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/L1/hooks/AssignmentHook.sol:AssignmentHook | +| __gap | uint256[50] | 251 | 0 | 1600 | contracts/L1/hooks/AssignmentHook.sol:AssignmentHook | + +## DevnetTierProvider +| Name | Type | Slot | Offset | Bytes | Contract | +|----------------|-------------|------|--------|-------|--------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/L1/tiers/DevnetTierProvider.sol:DevnetTierProvider | +| _initializing | bool | 0 | 1 | 1 | contracts/L1/tiers/DevnetTierProvider.sol:DevnetTierProvider | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/L1/tiers/DevnetTierProvider.sol:DevnetTierProvider | +| _owner | address | 51 | 0 | 20 | contracts/L1/tiers/DevnetTierProvider.sol:DevnetTierProvider | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/L1/tiers/DevnetTierProvider.sol:DevnetTierProvider | +| _pendingOwner | address | 101 | 0 | 20 | contracts/L1/tiers/DevnetTierProvider.sol:DevnetTierProvider | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/L1/tiers/DevnetTierProvider.sol:DevnetTierProvider | +| addressManager | address | 151 | 0 | 20 | contracts/L1/tiers/DevnetTierProvider.sol:DevnetTierProvider | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/L1/tiers/DevnetTierProvider.sol:DevnetTierProvider | +| __reentry | uint8 | 201 | 0 | 1 | contracts/L1/tiers/DevnetTierProvider.sol:DevnetTierProvider | +| __paused | uint8 | 201 | 1 | 1 | contracts/L1/tiers/DevnetTierProvider.sol:DevnetTierProvider | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/L1/tiers/DevnetTierProvider.sol:DevnetTierProvider | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/L1/tiers/DevnetTierProvider.sol:DevnetTierProvider | +| __gap | uint256[50] | 251 | 0 | 1600 | contracts/L1/tiers/DevnetTierProvider.sol:DevnetTierProvider | + +## TierProviderV1 +| Name | Type | Slot | Offset | Bytes | Contract | +|----------------|-------------|------|--------|-------|------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/L1/tiers/TierProviderV1.sol:TierProviderV1 | +| _initializing | bool | 0 | 1 | 1 | contracts/L1/tiers/TierProviderV1.sol:TierProviderV1 | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/L1/tiers/TierProviderV1.sol:TierProviderV1 | +| _owner | address | 51 | 0 | 20 | contracts/L1/tiers/TierProviderV1.sol:TierProviderV1 | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/L1/tiers/TierProviderV1.sol:TierProviderV1 | +| _pendingOwner | address | 101 | 0 | 20 | contracts/L1/tiers/TierProviderV1.sol:TierProviderV1 | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/L1/tiers/TierProviderV1.sol:TierProviderV1 | +| addressManager | address | 151 | 0 | 20 | contracts/L1/tiers/TierProviderV1.sol:TierProviderV1 | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/L1/tiers/TierProviderV1.sol:TierProviderV1 | +| __reentry | uint8 | 201 | 0 | 1 | contracts/L1/tiers/TierProviderV1.sol:TierProviderV1 | +| __paused | uint8 | 201 | 1 | 1 | contracts/L1/tiers/TierProviderV1.sol:TierProviderV1 | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/L1/tiers/TierProviderV1.sol:TierProviderV1 | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/L1/tiers/TierProviderV1.sol:TierProviderV1 | +| __gap | uint256[50] | 251 | 0 | 1600 | contracts/L1/tiers/TierProviderV1.sol:TierProviderV1 | + +## TierProviderV2 +| Name | Type | Slot | Offset | Bytes | Contract | +|----------------|-------------|------|--------|-------|------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/L1/tiers/TierProviderV2.sol:TierProviderV2 | +| _initializing | bool | 0 | 1 | 1 | contracts/L1/tiers/TierProviderV2.sol:TierProviderV2 | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/L1/tiers/TierProviderV2.sol:TierProviderV2 | +| _owner | address | 51 | 0 | 20 | contracts/L1/tiers/TierProviderV2.sol:TierProviderV2 | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/L1/tiers/TierProviderV2.sol:TierProviderV2 | +| _pendingOwner | address | 101 | 0 | 20 | contracts/L1/tiers/TierProviderV2.sol:TierProviderV2 | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/L1/tiers/TierProviderV2.sol:TierProviderV2 | +| addressManager | address | 151 | 0 | 20 | contracts/L1/tiers/TierProviderV2.sol:TierProviderV2 | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/L1/tiers/TierProviderV2.sol:TierProviderV2 | +| __reentry | uint8 | 201 | 0 | 1 | contracts/L1/tiers/TierProviderV2.sol:TierProviderV2 | +| __paused | uint8 | 201 | 1 | 1 | contracts/L1/tiers/TierProviderV2.sol:TierProviderV2 | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/L1/tiers/TierProviderV2.sol:TierProviderV2 | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/L1/tiers/TierProviderV2.sol:TierProviderV2 | +| __gap | uint256[50] | 251 | 0 | 1600 | contracts/L1/tiers/TierProviderV2.sol:TierProviderV2 | + +## TierProviderV3 +| Name | Type | Slot | Offset | Bytes | Contract | +|----------------|-------------|------|--------|-------|------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/L1/tiers/TierProviderV3.sol:TierProviderV3 | +| _initializing | bool | 0 | 1 | 1 | contracts/L1/tiers/TierProviderV3.sol:TierProviderV3 | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/L1/tiers/TierProviderV3.sol:TierProviderV3 | +| _owner | address | 51 | 0 | 20 | contracts/L1/tiers/TierProviderV3.sol:TierProviderV3 | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/L1/tiers/TierProviderV3.sol:TierProviderV3 | +| _pendingOwner | address | 101 | 0 | 20 | contracts/L1/tiers/TierProviderV3.sol:TierProviderV3 | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/L1/tiers/TierProviderV3.sol:TierProviderV3 | +| addressManager | address | 151 | 0 | 20 | contracts/L1/tiers/TierProviderV3.sol:TierProviderV3 | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/L1/tiers/TierProviderV3.sol:TierProviderV3 | +| __reentry | uint8 | 201 | 0 | 1 | contracts/L1/tiers/TierProviderV3.sol:TierProviderV3 | +| __paused | uint8 | 201 | 1 | 1 | contracts/L1/tiers/TierProviderV3.sol:TierProviderV3 | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/L1/tiers/TierProviderV3.sol:TierProviderV3 | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/L1/tiers/TierProviderV3.sol:TierProviderV3 | +| __gap | uint256[50] | 251 | 0 | 1600 | contracts/L1/tiers/TierProviderV3.sol:TierProviderV3 | + +## ERC20Airdrop +| Name | Type | Slot | Offset | Bytes | Contract | +|----------------|--------------------------|------|--------|-------|------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| _initializing | bool | 0 | 1 | 1 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| _owner | address | 51 | 0 | 20 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| _pendingOwner | address | 101 | 0 | 20 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| addressManager | address | 151 | 0 | 20 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| __reentry | uint8 | 201 | 0 | 1 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| __paused | uint8 | 201 | 1 | 1 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| isClaimed | mapping(bytes32 => bool) | 251 | 0 | 32 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| merkleRoot | bytes32 | 252 | 0 | 32 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| claimStart | uint64 | 253 | 0 | 8 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| claimEnd | uint64 | 253 | 8 | 8 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| __gap | uint256[47] | 254 | 0 | 1504 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| token | address | 301 | 0 | 20 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| vault | address | 302 | 0 | 20 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | +| __gap | uint256[48] | 303 | 0 | 1536 | contracts/team/airdrop/ERC20Airdrop.sol:ERC20Airdrop | + +## AutomataDcapV3Attestation +| Name | Type | Slot | Offset | Bytes | Contract | +|--------------------------|-------------------------------------------------|------|--------|-------|----------------------------------------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| _initializing | bool | 0 | 1 | 1 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| _owner | address | 51 | 0 | 20 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| _pendingOwner | address | 101 | 0 | 20 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| addressManager | address | 151 | 0 | 20 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| __reentry | uint8 | 201 | 0 | 1 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| __paused | uint8 | 201 | 1 | 1 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| sigVerifyLib | contract ISigVerifyLib | 251 | 0 | 20 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| pemCertLib | contract IPEMCertChainLib | 252 | 0 | 20 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| _checkLocalEnclaveReport | bool | 252 | 20 | 1 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| _trustedUserMrEnclave | mapping(bytes32 => bool) | 253 | 0 | 32 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| _trustedUserMrSigner | mapping(bytes32 => bool) | 254 | 0 | 32 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| _serialNumIsRevoked | mapping(uint256 => mapping(bytes => bool)) | 255 | 0 | 32 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| tcbInfo | mapping(string => struct TCBInfoStruct.TCBInfo) | 256 | 0 | 32 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| qeIdentity | struct EnclaveIdStruct.EnclaveId | 257 | 0 | 128 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | +| __gap | uint256[39] | 261 | 0 | 1248 | contracts/automata-attestation/AutomataDcapV3Attestation.sol:AutomataDcapV3Attestation | + +## SgxVerifier +| Name | Type | Slot | Offset | Bytes | Contract | +|-------------------|-------------------------------------------------|------|--------|-------|-------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/verifiers/SgxVerifier.sol:SgxVerifier | +| _initializing | bool | 0 | 1 | 1 | contracts/verifiers/SgxVerifier.sol:SgxVerifier | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/verifiers/SgxVerifier.sol:SgxVerifier | +| _owner | address | 51 | 0 | 20 | contracts/verifiers/SgxVerifier.sol:SgxVerifier | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/verifiers/SgxVerifier.sol:SgxVerifier | +| _pendingOwner | address | 101 | 0 | 20 | contracts/verifiers/SgxVerifier.sol:SgxVerifier | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/verifiers/SgxVerifier.sol:SgxVerifier | +| addressManager | address | 151 | 0 | 20 | contracts/verifiers/SgxVerifier.sol:SgxVerifier | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/verifiers/SgxVerifier.sol:SgxVerifier | +| __reentry | uint8 | 201 | 0 | 1 | contracts/verifiers/SgxVerifier.sol:SgxVerifier | +| __paused | uint8 | 201 | 1 | 1 | contracts/verifiers/SgxVerifier.sol:SgxVerifier | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/verifiers/SgxVerifier.sol:SgxVerifier | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/verifiers/SgxVerifier.sol:SgxVerifier | +| nextInstanceId | uint256 | 251 | 0 | 32 | contracts/verifiers/SgxVerifier.sol:SgxVerifier | +| instances | mapping(uint256 => struct SgxVerifier.Instance) | 252 | 0 | 32 | contracts/verifiers/SgxVerifier.sol:SgxVerifier | +| addressRegistered | mapping(address => bool) | 253 | 0 | 32 | contracts/verifiers/SgxVerifier.sol:SgxVerifier | +| __gap | uint256[47] | 254 | 0 | 1504 | contracts/verifiers/SgxVerifier.sol:SgxVerifier | + +## RiscZeroVerifier +| Name | Type | Slot | Offset | Bytes | Contract | +|-----------------|-----------------------------------|------|--------|-------|-----------------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/verifiers/RiscZeroVerifier.sol:RiscZeroVerifier | +| _initializing | bool | 0 | 1 | 1 | contracts/verifiers/RiscZeroVerifier.sol:RiscZeroVerifier | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/verifiers/RiscZeroVerifier.sol:RiscZeroVerifier | +| _owner | address | 51 | 0 | 20 | contracts/verifiers/RiscZeroVerifier.sol:RiscZeroVerifier | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/verifiers/RiscZeroVerifier.sol:RiscZeroVerifier | +| _pendingOwner | address | 101 | 0 | 20 | contracts/verifiers/RiscZeroVerifier.sol:RiscZeroVerifier | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/verifiers/RiscZeroVerifier.sol:RiscZeroVerifier | +| addressManager | address | 151 | 0 | 20 | contracts/verifiers/RiscZeroVerifier.sol:RiscZeroVerifier | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/verifiers/RiscZeroVerifier.sol:RiscZeroVerifier | +| __reentry | uint8 | 201 | 0 | 1 | contracts/verifiers/RiscZeroVerifier.sol:RiscZeroVerifier | +| __paused | uint8 | 201 | 1 | 1 | contracts/verifiers/RiscZeroVerifier.sol:RiscZeroVerifier | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/verifiers/RiscZeroVerifier.sol:RiscZeroVerifier | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/verifiers/RiscZeroVerifier.sol:RiscZeroVerifier | +| receiptVerifier | contract IRiscZeroReceiptVerifier | 251 | 0 | 20 | contracts/verifiers/RiscZeroVerifier.sol:RiscZeroVerifier | +| isImageTrusted | mapping(bytes32 => bool) | 252 | 0 | 32 | contracts/verifiers/RiscZeroVerifier.sol:RiscZeroVerifier | +| __gap | uint256[48] | 253 | 0 | 1536 | contracts/verifiers/RiscZeroVerifier.sol:RiscZeroVerifier | + +## QuotaManager +| Name | Type | Slot | Offset | Bytes | Contract | +|----------------|-----------------------------------------------|------|--------|-------|------------------------------------------------| +| _initialized | uint8 | 0 | 0 | 1 | contracts/bridge/QuotaManager.sol:QuotaManager | +| _initializing | bool | 0 | 1 | 1 | contracts/bridge/QuotaManager.sol:QuotaManager | +| __gap | uint256[50] | 1 | 0 | 1600 | contracts/bridge/QuotaManager.sol:QuotaManager | +| _owner | address | 51 | 0 | 20 | contracts/bridge/QuotaManager.sol:QuotaManager | +| __gap | uint256[49] | 52 | 0 | 1568 | contracts/bridge/QuotaManager.sol:QuotaManager | +| _pendingOwner | address | 101 | 0 | 20 | contracts/bridge/QuotaManager.sol:QuotaManager | +| __gap | uint256[49] | 102 | 0 | 1568 | contracts/bridge/QuotaManager.sol:QuotaManager | +| addressManager | address | 151 | 0 | 20 | contracts/bridge/QuotaManager.sol:QuotaManager | +| __gap | uint256[49] | 152 | 0 | 1568 | contracts/bridge/QuotaManager.sol:QuotaManager | +| __reentry | uint8 | 201 | 0 | 1 | contracts/bridge/QuotaManager.sol:QuotaManager | +| __paused | uint8 | 201 | 1 | 1 | contracts/bridge/QuotaManager.sol:QuotaManager | +| lastUnpausedAt | uint64 | 201 | 2 | 8 | contracts/bridge/QuotaManager.sol:QuotaManager | +| __gap | uint256[49] | 202 | 0 | 1568 | contracts/bridge/QuotaManager.sol:QuotaManager | +| tokenQuota | mapping(address => struct QuotaManager.Quota) | 251 | 0 | 32 | contracts/bridge/QuotaManager.sol:QuotaManager | +| quotaPeriod | uint24 | 252 | 0 | 3 | contracts/bridge/QuotaManager.sol:QuotaManager | +| __gap | uint256[48] | 253 | 0 | 1536 | contracts/bridge/QuotaManager.sol:QuotaManager | + diff --git a/packages/protocol/contracts/L1/TaikoEvents.sol b/packages/protocol/contracts/L1/TaikoEvents.sol index 60b877443e..454c621f3e 100644 --- a/packages/protocol/contracts/L1/TaikoEvents.sol +++ b/packages/protocol/contracts/L1/TaikoEvents.sol @@ -76,9 +76,4 @@ abstract contract TaikoEvents { /// @dev Emitted when proving has been paused /// @param paused True if paused, false if unpaused. event ProvingPaused(bool paused); - - /// @dev Emitted when an Ethereum deposit is made. - /// @param deposit The Ethereum deposit information including recipient, - /// amount, and ID. - event EthDeposited(TaikoData.EthDeposit deposit); } diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index 8268e6ad2c..bfa78a7baf 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -36,7 +36,7 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents, TaikoErrors { /// @dev Allows for receiving Ether from Hooks receive() external payable { - if (!_inNonReentrant()) revert L1_RECEIVE_DISABLED(); + if (!inNonReentrant()) revert L1_RECEIVE_DISABLED(); } /// @notice Initializes the contract. diff --git a/packages/protocol/contracts/L1/TaikoToken.sol b/packages/protocol/contracts/L1/TaikoToken.sol deleted file mode 100644 index 996834c64e..0000000000 --- a/packages/protocol/contracts/L1/TaikoToken.sol +++ /dev/null @@ -1,97 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.24; - -import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol"; -import "../common/EssentialContract.sol"; -import "../common/LibStrings.sol"; - -/// @notice TaikoToken was `EssentialContract, ERC20SnapshotUpgradeable, ERC20VotesUpgradeable`. -/// We use this contract to take 50 more slots to remove `ERC20SnapshotUpgradeable` from the parent -/// contract list. -/// We can simplify the code since we no longer need to maintain upgradability with Hekla. -// solhint-disable contract-name-camelcase -abstract contract EssentialContract_ is EssentialContract { - // solhint-disable var-name-mixedcase - uint256[50] private __slots_previously_used_by_ERC20SnapshotUpgradeable; -} - -/// @title TaikoToken -/// @notice The TaikoToken (TKO), in the protocol is used for prover collateral -/// in the form of bonds. It is an ERC20 token with 18 decimal places of -/// precision. -/// @dev Labeled in AddressResolver as "taiko_token" -/// @custom:security-contact security@taiko.xyz -contract TaikoToken is EssentialContract_, ERC20VotesUpgradeable { - uint256[50] private __gap; - - error TKO_INVALID_ADDR(); - - /// @notice Initializes the contract. - /// @param _owner The owner of this contract. msg.sender will be used if this value is zero. - /// @param _name The name of the token. - /// @param _symbol The symbol of the token. - /// @param _recipient The address to receive initial token minting. - function init( - address _owner, - string calldata _name, - string calldata _symbol, - address _recipient - ) - public - initializer - { - __Essential_init(_owner); - __Context_init_unchained(); - __ERC20_init(_name, _symbol); - __ERC20Votes_init(); - __ERC20Permit_init(_name); - - // Mint 1 billion tokens - _mint(_recipient, 1_000_000_000 ether); - } - - /// @notice Burns tokens from the specified address. - /// @param _from The address to burn tokens from. - /// @param _amount The amount of tokens to burn. - function burn(address _from, uint256 _amount) public onlyOwner { - return _burn(_from, _amount); - } - - /// @notice Transfers tokens to a specified address. - /// @param _to The address to transfer tokens to. - /// @param _amount The amount of tokens to transfer. - /// @return A boolean indicating whether the transfer was successful or not. - function transfer(address _to, uint256 _amount) public override returns (bool) { - if (_to == address(this)) revert TKO_INVALID_ADDR(); - return super.transfer(_to, _amount); - } - - /// @notice Transfers tokens from one address to another. - /// @param _from The address to transfer tokens from. - /// @param _to The address to transfer tokens to. - /// @param _amount The amount of tokens to transfer. - /// @return A boolean indicating whether the transfer was successful or not. - function transferFrom( - address _from, - address _to, - uint256 _amount - ) - public - override - returns (bool) - { - if (_to == address(this)) revert TKO_INVALID_ADDR(); - return super.transferFrom(_from, _to, _amount); - } - - function clock() public view override returns (uint48) { - return SafeCastUpgradeable.toUint48(block.timestamp); - } - - // solhint-disable-next-line func-name-mixedcase - function CLOCK_MODE() public pure override returns (string memory) { - // See https://eips.ethereum.org/EIPS/eip-6372 - return "mode=timestamp"; - } -} diff --git a/packages/protocol/contracts/L2/DelegateOwner.sol b/packages/protocol/contracts/L2/DelegateOwner.sol index 5b79d7dc9a..b6d7fb6906 100644 --- a/packages/protocol/contracts/L2/DelegateOwner.sol +++ b/packages/protocol/contracts/L2/DelegateOwner.sol @@ -36,7 +36,6 @@ contract DelegateOwner is EssentialContract, IMessageInvocable { error DO_INVALID_TX_ID(); error DO_PERMISSION_DENIED(); error DO_TX_REVERTED(); - error DO_UNSUPPORTED(); /// @notice Initializes the contract. /// @param _realOwner The real owner on L1 that can send a cross-chain message to invoke @@ -93,7 +92,5 @@ contract DelegateOwner is EssentialContract, IMessageInvocable { emit OwnershipAccepted(target); } - function _authorizePause(address, bool) internal pure override { - revert DO_UNSUPPORTED(); - } + function _authorizePause(address, bool) internal pure override notImplemented { } } diff --git a/packages/protocol/contracts/L2/Lib1559Math.sol b/packages/protocol/contracts/L2/Lib1559Math.sol index 8904ad8512..4b5316c28f 100644 --- a/packages/protocol/contracts/L2/Lib1559Math.sol +++ b/packages/protocol/contracts/L2/Lib1559Math.sol @@ -17,7 +17,6 @@ library Lib1559Math { function calc1559BaseFee( uint32 _gasTargetPerL1Block, uint8 _adjustmentQuotient, - uint64 _gasExcessMinValue, uint64 _gasExcess, uint64 _gasIssuance, uint32 _parentGasUsed @@ -30,7 +29,7 @@ library Lib1559Math { // value as this has already happened uint256 excess = uint256(_gasExcess) + _parentGasUsed; excess = excess > _gasIssuance ? excess - _gasIssuance : 1; - gasExcess_ = uint64(excess.min(type(uint64).max).max(_gasExcessMinValue)); + gasExcess_ = uint64(excess.min(type(uint64).max)); // The base fee per gas used by this block is the spot price at the // bonding curve, regardless the actual amount of gas used by this @@ -56,11 +55,7 @@ library Lib1559Math { if (_adjustmentFactor == 0) { revert EIP1559_INVALID_PARAMS(); } - - // Note that `/ _adjustmentFactor` can be removed which will make basefee increment faster. - // Alternatively, a larger initial value can be used for `_gasExcess`. - return _ethQty(_gasExcess, _adjustmentFactor) / LibFixedPointMath.SCALING_FACTOR - / _adjustmentFactor; + return _ethQty(_gasExcess, _adjustmentFactor) / LibFixedPointMath.SCALING_FACTOR; } /// @dev exp(gas_qty / TARGET / ADJUSTMENT_QUOTIENT) diff --git a/packages/protocol/contracts/L2/LibL2Config.sol b/packages/protocol/contracts/L2/LibL2Config.sol index b3309829cd..70af37013b 100644 --- a/packages/protocol/contracts/L2/LibL2Config.sol +++ b/packages/protocol/contracts/L2/LibL2Config.sol @@ -6,7 +6,6 @@ library LibL2Config { struct Config { uint32 gasTargetPerL1Block; uint8 basefeeAdjustmentQuotient; - uint64 gasExcessMinValue; } /// @notice Returns EIP1559 related configurations. @@ -17,8 +16,5 @@ library LibL2Config { // We need to monitor L2 state growth and lower this value when necessary. config_.gasTargetPerL1Block = 60_000_000; config_.basefeeAdjustmentQuotient = 8; - - // This value is picked to make the min base fee be 0.01gwei - config_.gasExcessMinValue = 17_331_548_325; } } diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index e0d36a4f97..896376c1bd 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -40,11 +40,8 @@ contract TaikoL2 is EssentialContract { /// @notice The last synced L1 block height. uint64 public lastSyncedBlock; - /// @notice The parent block's timestamp. - uint64 public parentTimestamp; - - /// @notice The current block's timestamp. - uint64 private __currentBlockTimestamp; + uint64 private __deprecated1; // was parentTimestamp + uint64 private __deprecated2; // was __currentBlockTimestamp /// @notice The L1's chain ID. uint64 public l1ChainId; @@ -100,7 +97,6 @@ contract TaikoL2 is EssentialContract { l1ChainId = _l1ChainId; gasExcess = _gasExcess; (publicInputHash,) = _calcPublicInputHash(block.number); - __currentBlockTimestamp = uint64(block.timestamp); } /// @notice Anchors the latest L1 block details to L2 for cross-layer @@ -163,9 +159,6 @@ contract TaikoL2 is EssentialContract { bytes32 _parentHash = blockhash(parentId); l2Hashes[parentId] = _parentHash; publicInputHash = publicInputHashNew; - - parentTimestamp = __currentBlockTimestamp; - __currentBlockTimestamp = uint64(block.timestamp); gasExcess = _gasExcess; emit Anchored(_parentHash, _gasExcess); @@ -211,7 +204,6 @@ contract TaikoL2 is EssentialContract { (basefee_, gasExcess_) = Lib1559Math.calc1559BaseFee( config.gasTargetPerL1Block, config.basefeeAdjustmentQuotient, - config.gasExcessMinValue, gasExcess, gasIssuance, _parentGasUsed diff --git a/packages/protocol/contracts/bridge/Bridge.sol b/packages/protocol/contracts/bridge/Bridge.sol index 30da04d472..e5330d4db8 100644 --- a/packages/protocol/contracts/bridge/Bridge.sol +++ b/packages/protocol/contracts/bridge/Bridge.sol @@ -7,6 +7,7 @@ import "../libs/LibAddress.sol"; import "../libs/LibMath.sol"; import "../signal/ISignalService.sol"; import "./IBridge.sol"; +import "./IQuotaManager.sol"; /// @title Bridge /// @notice See the documentation for {IBridge}. @@ -93,6 +94,16 @@ contract Bridge is EssentialContract, IBridge { _; } + modifier diffChain(uint64 _chainId) { + if (_chainId == 0 || _chainId == block.chainid) revert B_INVALID_CHAINID(); + _; + } + + modifier nonZeroAddr(address _addr) { + if (_addr == address(0)) revert B_INVALID_USER(); + _; + } + /// @notice Function to receive Ether. receive() external payable { } @@ -115,15 +126,13 @@ contract Bridge is EssentialContract, IBridge { external payable override + nonZeroAddr(_message.srcOwner) + nonZeroAddr(_message.destOwner) + diffChain(_message.destChainId) whenNotPaused nonReentrant returns (bytes32 msgHash_, Message memory message_) { - // Ensure the message owner is not null. - if (_message.srcOwner == address(0) || _message.destOwner == address(0)) { - revert B_INVALID_USER(); - } - if (_message.gasLimit == 0) { if (_message.fee != 0) revert B_INVALID_FEE(); } else if (_invocationGasLimit(_message, false) == 0) { @@ -135,11 +144,9 @@ contract Bridge is EssentialContract, IBridge { // Verify destination chain and to address. if (!destChainEnabled) revert B_INVALID_CHAINID(); - if (_message.destChainId == block.chainid) revert B_INVALID_CHAINID(); // Ensure the sent value matches the expected amount. - uint256 expectedAmount = _message.value + _message.fee; - if (expectedAmount != msg.value) revert B_INVALID_VALUE(); + if (_message.value + _message.fee != msg.value) revert B_INVALID_VALUE(); message_ = _message; @@ -160,8 +167,9 @@ contract Bridge is EssentialContract, IBridge { bytes calldata _proof ) external - whenNotPaused sameChain(_message.srcChainId) + diffChain(_message.destChainId) + whenNotPaused nonReentrant { bytes32 msgHash = hashMessage(_message); @@ -173,12 +181,12 @@ contract Bridge is EssentialContract, IBridge { revert B_MESSAGE_NOT_SENT(); } - (bool received,) = _proveSignalReceived( + _proveSignalReceived( signalService, signalForFailedMessage(msgHash), _message.destChainId, _proof ); - if (!received) revert B_SIGNAL_NOT_RECEIVED(); _updateMessageStatus(msgHash, Status.RECALLED); + _consumeEtherQuota(_message.value); // Execute the recall logic based on the contract's support for the // IRecallableSender interface @@ -206,8 +214,9 @@ contract Bridge is EssentialContract, IBridge { bytes calldata _proof ) external - whenNotPaused sameChain(_message.destChainId) + diffChain(_message.srcChainId) + whenNotPaused nonReentrant { uint256 gasStart = gasleft(); @@ -219,29 +228,27 @@ contract Bridge is EssentialContract, IBridge { bytes32 msgHash = hashMessage(_message); _checkStatus(msgHash, Status.NEW); + _consumeEtherQuota(_message.value + _message.fee); address signalService = resolve(LibStrings.B_SIGNAL_SERVICE, false); ProcessingStats memory stats; - bool received; - - (received, stats.numCacheOps) = + stats.numCacheOps = _proveSignalReceived(signalService, msgHash, _message.srcChainId, _proof); - if (!received) revert B_SIGNAL_NOT_RECEIVED(); uint256 refundAmount; - if ( - _message.to == address(0) || _message.to == address(this) - || _message.to == signalService - ) { + if (_unableToInvokeMessageCall(_message, signalService)) { // Handle special addresses that don't require actual invocation but // mark message as DONE refundAmount = _message.value; _updateMessageStatus(msgHash, Status.DONE); } else { - Status status = _invokeMessageCall( - _message, msgHash, _invocationGasLimit(_message, true) - ) ? Status.DONE : Status.RETRIABLE; + uint256 gasLimit = msg.sender == _message.destOwner + ? gasleft() // ignore _message.gasLimit + : _invocationGasLimit(_message, true); + + Status status = + _invokeMessageCall(_message, msgHash, gasLimit) ? Status.DONE : Status.RETRIABLE; _updateMessageStatus(msgHash, status); } @@ -276,12 +283,14 @@ contract Bridge is EssentialContract, IBridge { bool _isLastAttempt ) external - whenNotPaused sameChain(_message.destChainId) + diffChain(_message.srcChainId) + whenNotPaused nonReentrant { bytes32 msgHash = hashMessage(_message); _checkStatus(msgHash, Status.RETRIABLE); + _consumeEtherQuota(_message.value); uint256 invocationGasLimit; if (msg.sender != _message.destOwner) { @@ -309,8 +318,9 @@ contract Bridge is EssentialContract, IBridge { /// @inheritdoc IBridge function failMessage(Message calldata _message) external - whenNotPaused sameChain(_message.destChainId) + diffChain(_message.srcChainId) + whenNotPaused nonReentrant { if (msg.sender != _message.destOwner) revert B_PERMISSION_DENIED(); @@ -387,7 +397,7 @@ contract Bridge is EssentialContract, IBridge { view returns (bool enabled_, address destBridge_) { - destBridge_ = resolve(_chainId, "bridge", true); + destBridge_ = resolve(_chainId, LibStrings.B_BRIDGE, true); enabled_ = destBridge_ != address(0); } @@ -454,12 +464,6 @@ contract Bridge is EssentialContract, IBridge { if (_gasLimit == 0) return false; - if ( - _message.data.length >= 4 // msg can be empty - && bytes4(_message.data) != IMessageInvocable.onMessageInvocation.selector - && _message.to.isContract() - ) return false; - _storeContext(_msgHash, _message.from, _message.srcChainId); success_ = _message.to.sendEther(_message.value, _gasLimit, _message.data); _resetContext(); @@ -526,7 +530,6 @@ contract Bridge is EssentialContract, IBridge { /// @param _signal The signal. /// @param _chainId The ID of the chain the signal is stored on. /// @param _proof The merkle inclusion proof. - /// @return success_ true if the message was received. /// @return numCacheOps_ Num of cached items function _proveSignalReceived( address _signalService, @@ -535,15 +538,14 @@ contract Bridge is EssentialContract, IBridge { bytes calldata _proof ) private - returns (bool success_, uint32 numCacheOps_) + returns (uint32 numCacheOps_) { try ISignalService(_signalService).proveSignalReceived( - _chainId, resolve(_chainId, "bridge", false), _signal, _proof + _chainId, resolve(_chainId, LibStrings.B_BRIDGE, false), _signal, _proof ) returns (uint256 numCacheOps) { numCacheOps_ = uint32(numCacheOps); - success_ = true; } catch { - success_ = false; + revert B_SIGNAL_NOT_RECEIVED(); } } @@ -565,7 +567,7 @@ contract Bridge is EssentialContract, IBridge { returns (bool) { try ISignalService(_signalService).verifySignalReceived( - _chainId, resolve(_chainId, "bridge", false), _signal, _proof + _chainId, resolve(_chainId, LibStrings.B_BRIDGE, false), _signal, _proof ) { return true; } catch { @@ -594,4 +596,28 @@ contract Bridge is EssentialContract, IBridge { function _checkStatus(bytes32 _msgHash, Status _expectedStatus) private view { if (messageStatus[_msgHash] != _expectedStatus) revert B_INVALID_STATUS(); } + + function _consumeEtherQuota(uint256 _amount) private { + address quotaManager = resolve(LibStrings.B_QUOTA_MANAGER, true); + if (quotaManager != address(0)) { + IQuotaManager(quotaManager).consumeQuota(address(0), _amount); + } + } + + function _unableToInvokeMessageCall( + Message calldata _message, + address _signalService + ) + internal + view + returns (bool) + { + if (_message.to == address(0)) return true; + if (_message.to == address(this)) return true; + if (_message.to == _signalService) return true; + + return _message.data.length >= 4 + && bytes4(_message.data) != IMessageInvocable.onMessageInvocation.selector + && _message.to.isContract(); + } } diff --git a/packages/protocol/contracts/bridge/IQuotaManager.sol b/packages/protocol/contracts/bridge/IQuotaManager.sol new file mode 100644 index 0000000000..8b2381ae8e --- /dev/null +++ b/packages/protocol/contracts/bridge/IQuotaManager.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +/// @title IQuotaManager +/// @custom:security-contact security@taiko.xyz +interface IQuotaManager { + /// @notice Consumes a specific amount of quota for a given address. + /// This function must revert if available quota is smaller than the given amount of quota. + /// @param _token The token address. Ether is represented with address(0). + /// @param _amount The amount of quota to consume. + function consumeQuota(address _token, uint256 _amount) external; +} diff --git a/packages/protocol/contracts/bridge/QuotaManager.sol b/packages/protocol/contracts/bridge/QuotaManager.sol new file mode 100644 index 0000000000..133e5cdfb5 --- /dev/null +++ b/packages/protocol/contracts/bridge/QuotaManager.sol @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "../common/EssentialContract.sol"; +import "../common/LibStrings.sol"; +import "../libs/LibMath.sol"; +import "./IQuotaManager.sol"; + +/// @title QuotaManager +/// @dev An implementation of IQuotaManager for Ether and ERC20 tokens. +/// @custom:security-contact security@taiko.xyz +contract QuotaManager is EssentialContract, IQuotaManager { + using LibMath for uint256; + + struct Quota { + uint48 updatedAt; + uint104 quota; + uint104 available; + } + + mapping(address token => Quota tokenLimit) public tokenQuota; + uint24 public quotaPeriod; + + uint256[48] private __gap; + + event QuotaUpdated(address indexed token, uint256 oldQuota, uint256 newQuota); + + error QM_INVALID_PARAM(); + error QM_OUT_OF_QUOTA(); + + /// @notice Initializes the contract. + /// @param _owner The owner of this contract. msg.sender will be used if this value is zero. + /// @param _addressManager The address of the {AddressManager} contract. + /// @param _quotaPeriod The time required to restore all quota. + function init( + address _owner, + address _addressManager, + uint24 _quotaPeriod + ) + external + initializer + { + if (_quotaPeriod == 0) revert QM_INVALID_PARAM(); + + __Essential_init(_owner, _addressManager); + quotaPeriod = _quotaPeriod; + } + + /// @notice Updates the daily quota for a given address. + /// @param _token The token address with Ether represented by address(0). + /// @param _quota The new daily quota. + function updateQuota(address _token, uint104 _quota) external onlyOwner whenNotPaused { + if (_quota == tokenQuota[_token].quota) revert QM_INVALID_PARAM(); + + emit QuotaUpdated(_token, tokenQuota[_token].quota, _quota); + tokenQuota[_token].quota = _quota; + } + + /// @inheritdoc IQuotaManager + function consumeQuota( + address _token, + uint256 _amount + ) + external + whenNotPaused + onlyFromNamedEither(LibStrings.B_BRIDGE, LibStrings.B_ERC20_VAULT) + { + uint256 available = availableQuota(_token, 0); + if (available == type(uint256).max) return; + if (available < _amount) revert QM_OUT_OF_QUOTA(); + + unchecked { + available -= _amount; + } + tokenQuota[_token].available = uint104(available); + tokenQuota[_token].updatedAt = uint48(block.timestamp); + } + + /// @notice Returns the available quota for a given token. + /// @param _token The token address with Ether represented by address(0). + /// @param _leap Amount of seconds in the future. + /// @return The available quota. + function availableQuota(address _token, uint256 _leap) public view returns (uint256) { + Quota memory q = tokenQuota[_token]; + if (q.quota == 0) return type(uint256).max; + if (q.updatedAt == 0) return q.quota; + + uint256 issuance = q.quota * (block.timestamp + _leap - q.updatedAt) / quotaPeriod; + return (issuance + q.available).min(q.quota); + } +} diff --git a/packages/protocol/contracts/common/AddressManager.sol b/packages/protocol/contracts/common/AddressManager.sol index 0ca026f27b..dd89bea96b 100644 --- a/packages/protocol/contracts/common/AddressManager.sol +++ b/packages/protocol/contracts/common/AddressManager.sol @@ -22,7 +22,6 @@ contract AddressManager is EssentialContract, IAddressManager { ); error AM_ADDRESS_ALREADY_SET(); - error AM_PAUSE_UNSUPPORTED(); /// @notice Initializes the contract. /// @param _owner The owner of this contract. msg.sender will be used if this value is zero. @@ -54,7 +53,5 @@ contract AddressManager is EssentialContract, IAddressManager { return __addresses[_chainId][_name]; } - function _authorizePause(address, bool) internal pure override { - revert AM_PAUSE_UNSUPPORTED(); - } + function _authorizePause(address, bool) internal pure override notImplemented { } } diff --git a/packages/protocol/contracts/common/AddressResolver.sol b/packages/protocol/contracts/common/AddressResolver.sol index 4eb1b8513a..27f88b2a22 100644 --- a/packages/protocol/contracts/common/AddressResolver.sol +++ b/packages/protocol/contracts/common/AddressResolver.sol @@ -26,6 +26,17 @@ abstract contract AddressResolver is IAddressResolver, Initializable { _; } + /// @dev Modifier that ensures the caller is a resolved address to either _name1 or _name2 + /// name. + /// @param _name1 The first name to check against. + /// @param _name2 The second name to check against. + modifier onlyFromNamedEither(bytes32 _name1, bytes32 _name2) { + if (msg.sender != resolve(_name1, true) && msg.sender != resolve(_name2, true)) { + revert RESOLVER_DENIED(); + } + _; + } + /// @custom:oz-upgrades-unsafe-allow constructor constructor() { _disableInitializers(); diff --git a/packages/protocol/contracts/common/EssentialContract.sol b/packages/protocol/contracts/common/EssentialContract.sol index 8e4d000f9d..0206fb585a 100644 --- a/packages/protocol/contracts/common/EssentialContract.sol +++ b/packages/protocol/contracts/common/EssentialContract.sol @@ -39,6 +39,7 @@ abstract contract EssentialContract is UUPSUpgradeable, Ownable2StepUpgradeable, error REENTRANT_CALL(); error INVALID_PAUSE_STATUS(); error ZERO_ADDR_MANAGER(); + error FUNC_NOT_IMPLEMENTED(); /// @dev Modifier that ensures the caller is the owner or resolved address of a given name. /// @param _name The name to check against. @@ -47,6 +48,11 @@ abstract contract EssentialContract is UUPSUpgradeable, Ownable2StepUpgradeable, _; } + modifier notImplemented() { + revert FUNC_NOT_IMPLEMENTED(); + _; + } + modifier nonReentrant() { if (_loadReentryLock() == _TRUE) revert REENTRANT_CALL(); _storeReentryLock(_TRUE); @@ -91,16 +97,21 @@ abstract contract EssentialContract is UUPSUpgradeable, Ownable2StepUpgradeable, return __paused == _TRUE; } + function inNonReentrant() public view returns (bool) { + return _loadReentryLock() == _TRUE; + } + /// @notice Initializes the contract. /// @param _owner The owner of this contract. msg.sender will be used if this value is zero. /// @param _addressManager The address of the {AddressManager} contract. - function __Essential_init(address _owner, address _addressManager) internal onlyInitializing { + function __Essential_init(address _owner, address _addressManager) internal { if (_addressManager == address(0)) revert ZERO_ADDR_MANAGER(); __Essential_init(_owner); __AddressResolver_init(_addressManager); } - function __Essential_init(address _owner) internal virtual { + function __Essential_init(address _owner) internal virtual onlyInitializing { + __Context_init(); _transferOwnership(_owner == address(0) ? msg.sender : _owner); __paused = _FALSE; } @@ -141,8 +152,4 @@ abstract contract EssentialContract is UUPSUpgradeable, Ownable2StepUpgradeable, reentry_ = __reentry; } } - - function _inNonReentrant() internal view returns (bool) { - return _loadReentryLock() == _TRUE; - } } diff --git a/packages/protocol/contracts/common/LibStrings.sol b/packages/protocol/contracts/common/LibStrings.sol index a5fb5b3b38..6d7e738d09 100644 --- a/packages/protocol/contracts/common/LibStrings.sol +++ b/packages/protocol/contracts/common/LibStrings.sol @@ -4,31 +4,31 @@ pragma solidity 0.8.24; /// @title LibStrings /// @custom:security-contact security@taiko.xyz library LibStrings { - bytes32 internal constant B_CHAIN_WATCHDOG = bytes32("chain_watchdog"); - bytes32 internal constant B_WITHDRAWER = bytes32("withdrawer"); - bytes32 internal constant B_PROPOSER = bytes32("proposer"); - bytes32 internal constant B_PROPOSER_ONE = bytes32("proposer_one"); - bytes32 internal constant B_SIGNAL_SERVICE = bytes32("signal_service"); - bytes32 internal constant B_TAIKO_TOKEN = bytes32("taiko_token"); - bytes32 internal constant B_TAIKO = bytes32("taiko"); + bytes32 internal constant B_AUTOMATA_DCAP_ATTESTATION = bytes32("automata_dcap_attestation"); bytes32 internal constant B_BRIDGE = bytes32("bridge"); - bytes32 internal constant B_ERC20_VAULT = bytes32("erc20_vault"); + bytes32 internal constant B_BRIDGE_WATCHDOG = bytes32("bridge_watchdog"); + bytes32 internal constant B_BRIDGED_ERC1155 = bytes32("bridged_erc1155"); bytes32 internal constant B_BRIDGED_ERC20 = bytes32("bridged_erc20"); + bytes32 internal constant B_BRIDGED_ERC721 = bytes32("bridged_erc721"); + bytes32 internal constant B_CHAIN_WATCHDOG = bytes32("chain_watchdog"); bytes32 internal constant B_ERC1155_VAULT = bytes32("erc1155_vault"); - bytes32 internal constant B_BRIDGED_ERC1155 = bytes32("bridged_erc1155"); + bytes32 internal constant B_ERC20_VAULT = bytes32("erc20_vault"); bytes32 internal constant B_ERC721_VAULT = bytes32("erc721_vault"); - bytes32 internal constant B_BRIDGED_ERC721 = bytes32("bridged_erc721"); - bytes32 internal constant B_BRIDGE_WATCHDOG = bytes32("bridge_watchdog"); + bytes32 internal constant B_PROPOSER = bytes32("proposer"); + bytes32 internal constant B_PROPOSER_ONE = bytes32("proposer_one"); + bytes32 internal constant B_PROVER_ASSIGNMENT = bytes32("PROVER_ASSIGNMENT"); + bytes32 internal constant B_QUOTA_MANAGER = bytes32("quota_manager"); bytes32 internal constant B_SGX_WATCHDOG = bytes32("sgx_watchdog"); + bytes32 internal constant B_SIGNAL_SERVICE = bytes32("signal_service"); + bytes32 internal constant B_TAIKO = bytes32("taiko"); + bytes32 internal constant B_TAIKO_TOKEN = bytes32("taiko_token"); + bytes32 internal constant B_TIER_GUARDIAN = bytes32("tier_guardian"); + bytes32 internal constant B_TIER_GUARDIAN_MINORITY = bytes32("tier_guardian_minority"); bytes32 internal constant B_TIER_PROVIDER = bytes32("tier_provider"); bytes32 internal constant B_TIER_SGX = bytes32("tier_sgx"); bytes32 internal constant B_TIER_SGX_ZKVM = bytes32("tier_sgx_zkvm"); - bytes32 internal constant B_TIER_GUARDIAN_MINORITY = bytes32("tier_guardian_minority"); - bytes32 internal constant B_TIER_GUARDIAN = bytes32("tier_guardian"); - bytes32 internal constant B_AUTOMATA_DCAP_ATTESTATION = bytes32("automata_dcap_attestation"); - bytes32 internal constant B_PROVER_ASSIGNMENT = bytes32("PROVER_ASSIGNMENT"); + bytes32 internal constant B_WITHDRAWER = bytes32("withdrawer"); bytes32 internal constant H_RETURN_LIVENESS_BOND = keccak256("RETURN_LIVENESS_BOND"); - bytes32 internal constant H_STATE_ROOT = keccak256("STATE_ROOT"); bytes32 internal constant H_SIGNAL_ROOT = keccak256("SIGNAL_ROOT"); - string internal constant S_SIGNAL = "SIGNAL"; + bytes32 internal constant H_STATE_ROOT = keccak256("STATE_ROOT"); } diff --git a/packages/protocol/contracts/libs/Lib4844.sol b/packages/protocol/contracts/libs/Lib4844.sol deleted file mode 100644 index a5c89ddf9c..0000000000 --- a/packages/protocol/contracts/libs/Lib4844.sol +++ /dev/null @@ -1,61 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.24; - -/// @title Lib4844 -/// @notice A library for handling EIP-4844 blobs -/// @dev `solc contracts/libs/Lib4844.sol --ir > contracts/libs/Lib4844.yul` -/// @custom:security-contact security@taiko.xyz -library Lib4844 { - /// @notice The address of the point evaluation precompile - address private constant POINT_EVALUATION_PRECOMPILE_ADDRESS = address(0x0A); - - /// @notice The number of field elements per blob - uint32 private constant FIELD_ELEMENTS_PER_BLOB = 4096; - - /// @notice The modulus of the BLS curve - uint256 private constant BLS_MODULUS = - 52_435_875_175_126_190_479_447_740_508_185_965_837_690_552_500_527_637_822_603_658_699_938_581_184_513; - - error EVAL_FAILED_1(); - error EVAL_FAILED_2(); - error POINT_X_TOO_LARGE(); - error POINT_Y_TOO_LARGE(); - - /// @notice Evaluates the 4844 point using the precompile. - /// @param _blobHash The versioned hash - /// @param _x The evaluation point - /// @param _y The expected output - /// @param _commitment The input kzg point - /// @param _pointProof The quotient kzg - function evaluatePoint( - bytes32 _blobHash, - uint256 _x, - uint256 _y, - bytes1[48] memory _commitment, - bytes1[48] memory _pointProof - ) - internal - view - { - if (_x >= BLS_MODULUS) revert POINT_X_TOO_LARGE(); - if (_y >= BLS_MODULUS) revert POINT_Y_TOO_LARGE(); - - (bool ok, bytes memory ret) = POINT_EVALUATION_PRECOMPILE_ADDRESS.staticcall( - abi.encodePacked(_blobHash, _x, _y, _commitment, _pointProof) - ); - - if (!ok) revert EVAL_FAILED_1(); - - if (ret.length != 64) revert EVAL_FAILED_2(); - - bytes32 first; - bytes32 second; - assembly { - first := mload(add(ret, 32)) - second := mload(add(ret, 64)) - } - if (uint256(first) != FIELD_ELEMENTS_PER_BLOB || uint256(second) != BLS_MODULUS) { - revert EVAL_FAILED_2(); - } - } -} diff --git a/packages/protocol/contracts/libs/LibBytes.sol b/packages/protocol/contracts/libs/LibBytes.sol new file mode 100644 index 0000000000..283cdb6b52 --- /dev/null +++ b/packages/protocol/contracts/libs/LibBytes.sol @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +library LibBytes { + // Taken from: + // https://github.com/0xPolygonHermez/zkevm-contracts/blob/main/contracts/PolygonZkEVMBridge.sol#L835-L860 + /// @notice Function to convert returned data to string + /// returns 'NOT_VALID_ENCODING' as fallback value. + function toString(bytes memory _data) internal pure returns (string memory) { + if (_data.length >= 64) { + return abi.decode(_data, (string)); + } else if (_data.length == 32) { + // Since the strings on bytes32 are encoded left-right, check the first zero in the data + uint256 nonZeroBytes; + while (nonZeroBytes < 32 && _data[nonZeroBytes] != 0) { + ++nonZeroBytes; + } + + // If the first one is 0, we do not handle the encoding + if (nonZeroBytes == 0) return ""; + + // Create a byte array with nonZeroBytes length + bytes memory bytesArray = new bytes(nonZeroBytes); + for (uint256 i; i < nonZeroBytes; ++i) { + bytesArray[i] = _data[i]; + } + return string(bytesArray); + } else { + return ""; + } + } +} diff --git a/packages/protocol/contracts/libs/LibNetwork.sol b/packages/protocol/contracts/libs/LibNetwork.sol index 46c3a18c9e..b4c3f651ec 100644 --- a/packages/protocol/contracts/libs/LibNetwork.sol +++ b/packages/protocol/contracts/libs/LibNetwork.sol @@ -41,7 +41,7 @@ library LibNetwork { /// @param _chainId The chain ID. /// @return true if the chain ID represents an internal Taiko devnet's base layer, false /// otherwise. - function isTaikoDevnetL1(uint256 _chainId) internal pure returns (bool) { + function isTaikoDevnet(uint256 _chainId) internal pure returns (bool) { return _chainId >= 32_300 && _chainId <= 32_400; } @@ -51,6 +51,6 @@ library LibNetwork { /// @return true if the chain supports Dencun hardfork, false otherwise. function isDencunSupported(uint256 _chainId) internal pure returns (bool) { return _chainId == LibNetwork.MAINNET || _chainId == LibNetwork.HOLESKY - || _chainId == LibNetwork.SEPOLIA || isTaikoDevnetL1(_chainId); + || _chainId == LibNetwork.SEPOLIA || isTaikoDevnet(_chainId); } } diff --git a/packages/protocol/contracts/signal/ISignalService.sol b/packages/protocol/contracts/signal/ISignalService.sol index 04c1866003..d461f6a8fb 100644 --- a/packages/protocol/contracts/signal/ISignalService.sol +++ b/packages/protocol/contracts/signal/ISignalService.sol @@ -67,8 +67,8 @@ interface ISignalService { /// @notice Emitted when an address is authorized or deauthorized. /// @param addr The address to be authorized or deauthorized. - /// @param authrized True if authorized, false otherwise. - event Authorized(address indexed addr, bool authrized); + /// @param authorized True if authorized, false otherwise. + event Authorized(address indexed addr, bool authorized); /// @notice Send a signal (message) by setting the storage slot to a value of 1. /// @param _signal The signal (message) to send. diff --git a/packages/protocol/contracts/signal/SignalService.sol b/packages/protocol/contracts/signal/SignalService.sol index 22c9ccdb6d..19d01d09ba 100644 --- a/packages/protocol/contracts/signal/SignalService.sol +++ b/packages/protocol/contracts/signal/SignalService.sol @@ -40,9 +40,8 @@ contract SignalService is EssentialContract, ISignalService { error SS_INVALID_VALUE(); error SS_SIGNAL_NOT_FOUND(); error SS_UNAUTHORIZED(); - error SS_UNSUPPORTED(); - modifier validSender(address _app) { + modifier nonZeroApp(address _app) { if (_app == address(0)) revert SS_INVALID_SENDER(); _; } @@ -191,7 +190,7 @@ contract SignalService is EssentialContract, ISignalService { pure returns (bytes32) { - return keccak256(abi.encodePacked(LibStrings.S_SIGNAL, _chainId, _app, _signal)); + return keccak256(abi.encodePacked("SIGNAL", _chainId, _app, _signal)); } function _verifyHopProof( @@ -205,7 +204,7 @@ contract SignalService is EssentialContract, ISignalService { internal view virtual - validSender(_app) + nonZeroApp(_app) nonZeroValue(_signal) nonZeroValue(_value) returns (bytes32) @@ -220,9 +219,7 @@ contract SignalService is EssentialContract, ISignalService { ); } - function _authorizePause(address, bool) internal pure override { - revert SS_UNSUPPORTED(); - } + function _authorizePause(address, bool) internal pure override notImplemented { } function _syncChainData( uint64 _chainId, @@ -248,7 +245,7 @@ contract SignalService is EssentialContract, ISignalService { bytes32 _value ) private - validSender(_app) + nonZeroApp(_app) nonZeroValue(_signal) nonZeroValue(_value) returns (bytes32 slot_) @@ -290,7 +287,7 @@ contract SignalService is EssentialContract, ISignalService { ) private view - validSender(_app) + nonZeroApp(_app) nonZeroValue(_signal) returns (bytes32 value_) { @@ -309,7 +306,7 @@ contract SignalService is EssentialContract, ISignalService { ) private view - validSender(_app) + nonZeroApp(_app) nonZeroValue(_signal) returns (CacheAction[] memory actions) { @@ -326,7 +323,8 @@ contract SignalService is EssentialContract, ISignalService { address app = _app; bytes32 signal = _signal; bytes32 value = _signal; - address signalService = resolve(chainId, "signal_service", false); + address signalService = resolve(chainId, LibStrings.B_SIGNAL_SERVICE, false); + if (signalService == address(this)) revert SS_INVALID_MID_HOP_CHAINID(); HopProof memory hop; bytes32 signalRoot; @@ -351,7 +349,8 @@ contract SignalService is EssentialContract, ISignalService { if (hop.chainId == 0 || hop.chainId == block.chainid) { revert SS_INVALID_MID_HOP_CHAINID(); } - signalService = resolve(hop.chainId, "signal_service", false); + signalService = resolve(hop.chainId, LibStrings.B_SIGNAL_SERVICE, false); + if (signalService == address(this)) revert SS_INVALID_MID_HOP_CHAINID(); } isFullProof = hop.accountProof.length != 0; diff --git a/packages/protocol/contracts/team/airdrop/ERC20Airdrop2.sol b/packages/protocol/contracts/team/airdrop/ERC20Airdrop2.sol deleted file mode 100644 index 066d270300..0000000000 --- a/packages/protocol/contracts/team/airdrop/ERC20Airdrop2.sol +++ /dev/null @@ -1,129 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.24; - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "../../libs/LibMath.sol"; -import "./MerkleClaimable.sol"; - -/// @title ERC20Airdrop2 -/// @notice Contract for managing Taiko token airdrop for eligible users, but the -/// withdrawal is not immediate and is subject to a withdrawal window. -/// @custom:security-contact security@taiko.xyz -contract ERC20Airdrop2 is MerkleClaimable { - using LibMath for uint256; - using SafeERC20 for IERC20; - - uint256 public constant WITHDRAWAL_GRACE_PERIOD = 30 days; - - /// @notice The address of the token contract. - address public token; - - /// @notice The address of the vault contract. - address public vault; - - /// @notice Length of the withdrawal window. - uint64 public withdrawalWindow; - - /// @notice Represents the token amount for which the user has claimed. - mapping(address addr => uint256 amountClaimed) public claimedAmount; - - /// @notice Represents the already withdrawn amount. - mapping(address addr => uint256 amountWithdrawn) public withdrawnAmount; - - uint256[46] private __gap; - - /// @notice Event emitted when a user withdraws their tokens. - /// @param user The address of the user. - /// @param amount The amount of tokens withdrawn. - event Withdrawn(address user, uint256 amount); - - error WITHDRAWALS_NOT_ONGOING(); - - modifier ongoingWithdrawals() { - if ( - claimEnd > block.timestamp - || claimEnd + withdrawalWindow + WITHDRAWAL_GRACE_PERIOD < block.timestamp - ) { - revert WITHDRAWALS_NOT_ONGOING(); - } - _; - } - - /// @notice Initializes the contract. - /// @param _owner The owner of this contract. - /// @param _claimStart The start time of the claim period. - /// @param _claimEnd The end time of the claim period. - /// @param _merkleRoot The merkle root. - /// @param _token The address of the token contract. - /// @param _vault The address of the vault contract. - /// @param _withdrawalWindow The length of the withdrawal window. - function init( - address _owner, - uint64 _claimStart, - uint64 _claimEnd, - bytes32 _merkleRoot, - address _token, - address _vault, - uint64 _withdrawalWindow - ) - external - initializer - { - __Essential_init(_owner); - __MerkleClaimable_init(_claimStart, _claimEnd, _merkleRoot); - - token = _token; - vault = _vault; - withdrawalWindow = _withdrawalWindow; - } - - /// @notice Claims the airdrop for the user. - /// @param user The address of the user. - /// @param amount The amount of tokens to claim. - /// @param proof The merkle proof. - function claim(address user, uint256 amount, bytes32[] calldata proof) external nonReentrant { - // Check if this can be claimed - _verifyClaim(abi.encode(user, amount), proof); - - // Assign the tokens - claimedAmount[user] += amount; - } - - /// @notice External withdraw function - /// @param user User address - function withdraw(address user) external ongoingWithdrawals nonReentrant { - (, uint256 amount) = getBalance(user); - withdrawnAmount[user] += amount; - IERC20(token).safeTransferFrom(vault, user, amount); - - emit Withdrawn(user, amount); - } - - /// @notice Getter for the balance and withdrawal amount per given user - /// The 2nd airdrop is subject to an unlock period. User has to claim his - /// tokens (within claimStart and claimEnd), but not immediately - /// withdrawable. With a time of X (withdrawalWindow) it becomes fully - /// withdrawable - and unlocks linearly. - /// @param user User address - /// @return balance The balance the user successfully claimed - /// @return withdrawableAmount The amount available to withdraw - function getBalance(address user) - public - view - returns (uint256 balance, uint256 withdrawableAmount) - { - balance = claimedAmount[user]; - // If balance is 0 then there is no balance and withdrawable amount - if (balance == 0) return (0, 0); - // Balance might be positive before end of claiming (claimEnd - if claimed already) but - // withdrawable is 0. - if (block.timestamp < claimEnd) return (balance, 0); - - // Hard cap timestamp - so range cannot go over - to get more allocation over time. - uint256 timeBasedAllowance = balance - * (block.timestamp.min(claimEnd + withdrawalWindow) - claimEnd) / withdrawalWindow; - - withdrawableAmount = timeBasedAllowance - withdrawnAmount[user]; - } -} diff --git a/packages/protocol/contracts/thirdparty/optimism/rlp/RLPReader.sol b/packages/protocol/contracts/thirdparty/optimism/rlp/RLPReader.sol index 6c5d73b703..9164b7490e 100644 --- a/packages/protocol/contracts/thirdparty/optimism/rlp/RLPReader.sol +++ b/packages/protocol/contracts/thirdparty/optimism/rlp/RLPReader.sol @@ -5,7 +5,7 @@ pragma solidity 0.8.24; /// @title RLPReader /// @notice RLPReader is a library for parsing RLP-encoded byte arrays into Solidity types. Adapted /// from Solidity-RLP (https://github.com/hamdiallam/Solidity-RLP) by Hamdi Allam with -/// various tweaks to improve readability. +/// various tweaks to improve readability. (A shout-out to Optimism !) library RLPReader { /// @notice Custom pointer type to avoid confusion between pointers and uint256s. type MemoryPointer is uint256; diff --git a/packages/protocol/contracts/thirdparty/optimism/rlp/RLPWriter.sol b/packages/protocol/contracts/thirdparty/optimism/rlp/RLPWriter.sol index af2928eaf2..f6eb0bf54a 100644 --- a/packages/protocol/contracts/thirdparty/optimism/rlp/RLPWriter.sol +++ b/packages/protocol/contracts/thirdparty/optimism/rlp/RLPWriter.sol @@ -5,7 +5,7 @@ pragma solidity 0.8.24; /// @title RLPWriter /// @author RLPWriter is a library for encoding Solidity types to RLP bytes. Adapted from Bakaoh's /// RLPEncode library (https://github.com/bakaoh/solidity-rlp-encode) with minor -/// modifications to improve legibility. +/// modifications to improve legibility. (A shout-out to Optimism !) library RLPWriter { /// @notice RLP encodes a byte string. /// @param _in The byte string to encode. diff --git a/packages/protocol/contracts/tko/BridgedTaikoToken.sol b/packages/protocol/contracts/tko/BridgedTaikoToken.sol new file mode 100644 index 0000000000..7d760037ab --- /dev/null +++ b/packages/protocol/contracts/tko/BridgedTaikoToken.sol @@ -0,0 +1,59 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "../tokenvault/IBridgedERC20.sol"; +import "./TaikoTokenBase.sol"; + +/// @title BridgedTaikoToken +/// @notice The TaikoToken on L2 to support checkpoints and voting. For testnets, we do not need to +/// use this contract. +/// @custom:security-contact security@taiko.xyz +contract BridgedTaikoToken is TaikoTokenBase, IBridgedERC20 { + /// @notice Initializes the contract. + /// @param _owner The owner of this contract. msg.sender will be used if this value is zero. + /// @param _addressManager The address manager address. + function init(address _owner, address _addressManager) external initializer { + __Essential_init(_owner, _addressManager); + __ERC20_init("Taiko Token", "TKO"); + __ERC20Votes_init(); + __ERC20Permit_init("Taiko Token"); + } + + function mint( + address _account, + uint256 _amount + ) + external + override + whenNotPaused + onlyFromOwnerOrNamed(LibStrings.B_ERC20_VAULT) + nonReentrant + { + _mint(_account, _amount); + } + + function burn(uint256 _amount) + external + override + whenNotPaused + onlyFromOwnerOrNamed(LibStrings.B_ERC20_VAULT) + nonReentrant + { + _burn(msg.sender, _amount); + } + + function owner() public view override(IBridgedERC20, OwnableUpgradeable) returns (address) { + return OwnableUpgradeable.owner(); + } + + /// @notice Gets the canonical token's address and chain ID. + /// @return The canonical token's address. + /// @return The canonical token's chain ID. + function canonical() public pure returns (address, uint256) { + // 0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800 is the TKO's mainnet address, + // 1 is the Ethereum's network id. + return (0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800, 1); + } + + function changeMigrationStatus(address, bool) public pure notImplemented { } +} diff --git a/packages/protocol/contracts/tko/TaikoToken.sol b/packages/protocol/contracts/tko/TaikoToken.sol new file mode 100644 index 0000000000..ea52dcc83f --- /dev/null +++ b/packages/protocol/contracts/tko/TaikoToken.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "./TaikoTokenBase.sol"; + +/// @title TaikoToken +/// @notice The TaikoToken (TKO), in the protocol is used for prover collateral +/// in the form of bonds. It is an ERC20 token with 18 decimal places of precision. +/// @dev Labeled in AddressResolver as "taiko_token" +/// @dev On Ethereum, this contract is deployed behind a proxy at +/// 0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800 (token.taiko.eth) +/// @custom:security-contact security@taiko.xyz +contract TaikoToken is TaikoTokenBase { + /// @notice Initializes the contract. + /// @param _owner The owner of this contract. msg.sender will be used if this value is zero. + /// @param _recipient The address to receive initial token minting. + function init(address _owner, address _recipient) public initializer { + __Essential_init(_owner); + __ERC20_init("Taiko Token", "TKO"); + __ERC20Votes_init(); + __ERC20Permit_init("Taiko Token"); + // Mint 1 billion tokens + _mint(_recipient, 1_000_000_000 ether); + } +} diff --git a/packages/protocol/contracts/tko/TaikoTokenBase.sol b/packages/protocol/contracts/tko/TaikoTokenBase.sol new file mode 100644 index 0000000000..7aa13f7e3e --- /dev/null +++ b/packages/protocol/contracts/tko/TaikoTokenBase.sol @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol"; +import "../common/EssentialContract.sol"; +import "../common/LibStrings.sol"; + +/// @notice TaikoToken was `EssentialContract, ERC20SnapshotUpgradeable, ERC20VotesUpgradeable`. +/// We use this contract to take 50 more slots to remove `ERC20SnapshotUpgradeable` from the parent +/// contract list. +/// We can simplify the code since we no longer need to maintain upgradability with Hekla. +abstract contract TaikoTokenBase0 is EssentialContract { + // solhint-disable var-name-mixedcase + uint256[50] private __slots_previously_used_by_ERC20SnapshotUpgradeable; +} + +/// @title TaikoTokenBase +/// @notice The base contract for both the canonical and the bridged Taiko token. +/// @custom:security-contact security@taiko.xyz +abstract contract TaikoTokenBase is TaikoTokenBase0, ERC20VotesUpgradeable { + uint256[50] private __gap; + + function clock() public view override returns (uint48) { + return SafeCastUpgradeable.toUint48(block.timestamp); + } + + // solhint-disable-next-line func-name-mixedcase + function CLOCK_MODE() public pure override returns (string memory) { + // See https://eips.ethereum.org/EIPS/eip-6372 + return "mode=timestamp"; + } +} diff --git a/packages/protocol/contracts/tokenvault/BaseNFTVault.sol b/packages/protocol/contracts/tokenvault/BaseNFTVault.sol index 7619abe9f8..43df4bef14 100644 --- a/packages/protocol/contracts/tokenvault/BaseNFTVault.sol +++ b/packages/protocol/contracts/tokenvault/BaseNFTVault.sol @@ -121,7 +121,6 @@ abstract contract BaseNFTVault is BaseVault { error VAULT_INVALID_TOKEN(); error VAULT_INVALID_AMOUNT(); - error VAULT_INVALID_TO(); error VAULT_INTERFACE_NOT_SUPPORTED(); error VAULT_TOKEN_ARRAY_MISMATCH(); error VAULT_MAX_TOKEN_PER_TXN_EXCEEDED(); diff --git a/packages/protocol/contracts/tokenvault/BaseVault.sol b/packages/protocol/contracts/tokenvault/BaseVault.sol index 82544c706e..c37f0b8d46 100644 --- a/packages/protocol/contracts/tokenvault/BaseVault.sol +++ b/packages/protocol/contracts/tokenvault/BaseVault.sol @@ -6,6 +6,17 @@ import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import "../bridge/IBridge.sol"; import "../common/EssentialContract.sol"; import "../common/LibStrings.sol"; +import "../libs/LibBytes.sol"; + +/// @title INameSymbol +/// @notice Interface for contracts that provide name() and symbol() +/// functions. These functions may not be part of the official interface but are +/// used by some contracts. +/// @custom:security-contact security@taiko.xyz +interface INameSymbol { + function name() external view returns (string memory); + function symbol() external view returns (string memory); +} /// @title BaseVault /// @notice This abstract contract provides a base implementation for vaults. @@ -16,26 +27,20 @@ abstract contract BaseVault is IMessageInvocable, IERC165Upgradeable { - bytes4 internal constant IERC165_INTERFACE_ID = bytes4(keccak256("supportsInterface(bytes4)")); + using LibBytes for bytes; uint256[50] private __gap; + error VAULT_INVALID_TO_ADDR(); error VAULT_PERMISSION_DENIED(); - modifier onlyFromBridge() { - if (msg.sender != resolve(LibStrings.B_BRIDGE, false)) { - revert VAULT_PERMISSION_DENIED(); - } - _; - } - /// @notice Checks if the contract supports the given interface. /// @param _interfaceId The interface identifier. /// @return true if the contract supports the interface, false otherwise. - function supportsInterface(bytes4 _interfaceId) public pure virtual override returns (bool) { + function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) { return _interfaceId == type(IRecallableSender).interfaceId || _interfaceId == type(IMessageInvocable).interfaceId - || _interfaceId == IERC165_INTERFACE_ID; + || _interfaceId == type(IERC165Upgradeable).interfaceId; } /// @notice Returns the name of the vault. @@ -45,7 +50,7 @@ abstract contract BaseVault is function checkProcessMessageContext() internal view - onlyFromBridge + onlyFromNamed(LibStrings.B_BRIDGE) returns (IBridge.Context memory ctx_) { ctx_ = IBridge(msg.sender).context(); @@ -56,10 +61,26 @@ abstract contract BaseVault is function checkRecallMessageContext() internal view - onlyFromBridge + onlyFromNamed(LibStrings.B_BRIDGE) returns (IBridge.Context memory ctx_) { ctx_ = IBridge(msg.sender).context(); if (ctx_.from != msg.sender) revert VAULT_PERMISSION_DENIED(); } + + function checkToAddress(address _to) internal view { + if (_to == address(0) || _to == address(this)) revert VAULT_INVALID_TO_ADDR(); + } + + function safeSymbol(address _token) internal view returns (string memory symbol_) { + (bool success, bytes memory data) = + address(_token).staticcall(abi.encodeCall(INameSymbol.symbol, ())); + return success ? data.toString() : ""; + } + + function safeName(address _token) internal view returns (string memory) { + (bool success, bytes memory data) = + address(_token).staticcall(abi.encodeCall(INameSymbol.name, ())); + return success ? data.toString() : ""; + } } diff --git a/packages/protocol/contracts/tokenvault/BridgedERC1155.sol b/packages/protocol/contracts/tokenvault/BridgedERC1155.sol index 70e70689d3..62b19080b8 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC1155.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC1155.sol @@ -17,14 +17,15 @@ contract BridgedERC1155 is EssentialContract, ERC1155Upgradeable { uint256 public srcChainId; /// @dev Symbol of the bridged token. - string private __symbol; + string public symbol; /// @dev Name of the bridged token. - string private __name; + string public name; uint256[46] private __gap; - error BTOKEN_CANNOT_RECEIVE(); + error BTOKEN_INVALID_PARAMS(); + error BTOKEN_INVALID_TO_ADDR(); /// @notice Initializes the contract. /// @param _owner The owner of this contract. msg.sender will be used if this value is zero. @@ -56,25 +57,8 @@ contract BridgedERC1155 is EssentialContract, ERC1155Upgradeable { srcToken = _srcToken; srcChainId = _srcChainId; - __symbol = _symbol; - __name = _name; - } - - /// @dev Mints tokens. - /// @param _to Address to receive the minted tokens. - /// @param _tokenId ID of the token to mint. - /// @param _amount Amount of tokens to mint. - function mint( - address _to, - uint256 _tokenId, - uint256 _amount - ) - public - whenNotPaused - onlyFromNamed(LibStrings.B_ERC1155_VAULT) - nonReentrant - { - _mint(_to, _tokenId, _amount, ""); + symbol = _symbol; + name = _name; } /// @dev Mints tokens. @@ -83,10 +67,10 @@ contract BridgedERC1155 is EssentialContract, ERC1155Upgradeable { /// @param _amounts Amount of tokens to mint. function mintBatch( address _to, - uint256[] memory _tokenIds, - uint256[] memory _amounts + uint256[] calldata _tokenIds, + uint256[] calldata _amounts ) - public + external whenNotPaused onlyFromNamed(LibStrings.B_ERC1155_VAULT) nonReentrant @@ -94,55 +78,43 @@ contract BridgedERC1155 is EssentialContract, ERC1155Upgradeable { _mintBatch(_to, _tokenIds, _amounts, ""); } - /// @dev Burns tokens. + /// @dev Batch burns tokens. /// @param _account Address from which tokens are burned. - /// @param _tokenId ID of the token to burn. - /// @param _amount Amount of tokens to burn. - function burn( + /// @param _ids Array of IDs of the tokens to burn. + /// @param _amounts Amount of tokens to burn respectively. + function burnBatch( address _account, - uint256 _tokenId, - uint256 _amount + uint256[] calldata _ids, + uint256[] calldata _amounts ) - public + external whenNotPaused onlyFromNamed(LibStrings.B_ERC1155_VAULT) nonReentrant { - _burn(_account, _tokenId, _amount); - } - - /// @notice Gets the name of the bridged token. - /// @return The name. - function name() public view returns (string memory) { - return LibBridgedToken.buildName(__name, srcChainId); - } - - /// @notice Gets the symbol of the bridged token. - /// @return The symbol. - function symbol() public view returns (string memory) { - return LibBridgedToken.buildSymbol(__symbol); + _burnBatch(_account, _ids, _amounts); } /// @notice Gets the canonical token's address and chain ID. /// @return The canonical token's address. /// @return The canonical token's chain ID. - function canonical() external view returns (address, uint256) { + function canonical() public view returns (address, uint256) { return (srcToken, srcChainId); } function _beforeTokenTransfer( - address, /*_operator*/ - address, /*_from*/ + address _operator, + address _from, address _to, - uint256[] memory, /*_ids*/ - uint256[] memory, /*_amounts*/ - bytes memory /*_data*/ + uint256[] memory _ids, + uint256[] memory _amounts, + bytes memory _data ) internal - view override + whenNotPaused { - if (_to == address(this)) revert BTOKEN_CANNOT_RECEIVE(); - if (paused()) revert INVALID_PAUSE_STATUS(); + LibBridgedToken.checkToAddress(_to); + super._beforeTokenTransfer(_operator, _from, _to, _ids, _amounts, _data); } } diff --git a/packages/protocol/contracts/tokenvault/BridgedERC20.sol b/packages/protocol/contracts/tokenvault/BridgedERC20.sol index 7133e0c253..7f5db217ce 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC20.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC20.sol @@ -1,39 +1,54 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.24; -import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; +import "../common/EssentialContract.sol"; +import "../common/LibStrings.sol"; +import "./IBridgedERC20.sol"; import "./LibBridgedToken.sol"; -import "./BridgedERC20Base.sol"; - -/// @notice BridgedERC20 was `BridgedERC20Base, ERC20SnapshotUpgradeable, ERC20VotesUpgradeable`. -/// We use this contract to take 50 more slots to remove `ERC20SnapshotUpgradeable` from the parent -/// contract list. -/// We can simplify the code since we no longer need to maintain upgradability with Hekla. -// solhint-disable contract-name-camelcase -abstract contract BridgedERC20Base_ is BridgedERC20Base { - // solhint-disable var-name-mixedcase - uint256[50] private __slots_previously_used_by_ERC20SnapshotUpgradeable; -} /// @title BridgedERC20 /// @notice An upgradeable ERC20 contract that represents tokens bridged from /// another chain. /// @custom:security-contact security@taiko.xyz -contract BridgedERC20 is BridgedERC20Base_, ERC20VotesUpgradeable { +contract BridgedERC20 is EssentialContract, IBridgedERC20, ERC20Upgradeable { /// @dev Slot 1. address public srcToken; - uint8 private __srcDecimals; + uint8 public __srcDecimals; /// @dev Slot 2. uint256 public srcChainId; /// @dev Slot 3. - address private __deprecated1; + /// @notice The address of the contract to migrate tokens to or from. + address public migratingAddress; + + /// @notice If true, signals migrating 'to', false if migrating 'from'. + bool public migratingInbound; uint256[47] private __gap; - error BTOKEN_CANNOT_RECEIVE(); + /// @notice Emitted when the migration status is changed. + /// @param addr The address migrating 'to' or 'from'. + /// @param inbound If false then signals migrating 'from', true if migrating 'into'. + event MigrationStatusChanged(address addr, bool inbound); + + /// @notice Emitted when tokens are migrated to the new bridged token. + /// @param migratedTo The address of the bridged token. + /// @param account The address of the account. + /// @param amount The amount of tokens migrated. + event MigratedTo(address indexed migratedTo, address indexed account, uint256 amount); + + /// @notice Emitted when tokens are migrated from the old bridged token. + /// @param migratedFrom The address of the bridged token. + /// @param account The address of the account. + /// @param amount The amount of tokens migrated. + event MigratedFrom(address indexed migratedFrom, address indexed account, uint256 amount); + + error BTOKEN_INVALID_PARAMS(); + error BTOKEN_INVALID_TO_ADDR(); + error BTOKEN_MINT_DISALLOWED(); /// @notice Initializes the contract. /// @param _owner The owner of this contract. msg.sender will be used if this value is zero. @@ -59,8 +74,6 @@ contract BridgedERC20 is BridgedERC20Base_, ERC20VotesUpgradeable { LibBridgedToken.validateInputs(_srcToken, _srcChainId, _symbol, _name); __Essential_init(_owner, _addressManager); __ERC20_init(_name, _symbol); - __ERC20Votes_init(); - __ERC20Permit_init(_name); // Set contract properties srcToken = _srcToken; @@ -68,16 +81,63 @@ contract BridgedERC20 is BridgedERC20Base_, ERC20VotesUpgradeable { __srcDecimals = _decimals; } - /// @notice Gets the name of the token. - /// @return The name. - function name() public view override returns (string memory) { - return LibBridgedToken.buildName(super.name(), srcChainId); + /// @notice Start or stop migration to/from a specified contract. + /// @param _migratingAddress The address migrating 'to' or 'from'. + /// @param _migratingInbound If false then signals migrating 'from', true if migrating 'into'. + function changeMigrationStatus( + address _migratingAddress, + bool _migratingInbound + ) + external + whenNotPaused + onlyFromNamed(LibStrings.B_ERC20_VAULT) + nonReentrant + { + if (_migratingAddress == migratingAddress && _migratingInbound == migratingInbound) { + revert BTOKEN_INVALID_PARAMS(); + } + + migratingAddress = _migratingAddress; + migratingInbound = _migratingInbound; + emit MigrationStatusChanged(_migratingAddress, _migratingInbound); + } + + /// @notice Mints tokens to the specified account. + /// @param _account The address of the account to receive the tokens. + /// @param _amount The amount of tokens to mint. + function mint(address _account, uint256 _amount) external whenNotPaused nonReentrant { + // mint is disabled while migrating outbound. + if (isMigratingOut()) revert BTOKEN_MINT_DISALLOWED(); + + address _migratingAddress = migratingAddress; + if (msg.sender == _migratingAddress) { + // Inbound migration + emit MigratedFrom(_migratingAddress, _account, _amount); + } else { + // Bridging from vault + _authorizedMintBurn(msg.sender); + } + + _mint(_account, _amount); } - /// @notice Gets the symbol of the bridged token. - /// @return The symbol. - function symbol() public view override returns (string memory) { - return LibBridgedToken.buildSymbol(super.symbol()); + /// @notice Burns tokens in case of 'migrating out' from msg.sender (EOA) or from the ERC20Vault + /// if bridging back to canonical token. + /// @param _amount The amount of tokens to burn. + function burn(uint256 _amount) external whenNotPaused nonReentrant { + if (isMigratingOut()) { + // Outbound migration + address _migratingAddress = migratingAddress; + emit MigratedTo(_migratingAddress, msg.sender, _amount); + // Ask the new bridged token to mint token for the user. + IBridgedERC20(_migratingAddress).mint(msg.sender, _amount); + } else { + // When user wants to burn tokens only during 'migrating out' phase is possible. If + // ERC20Vault burns the tokens, that will go through the burn(amount) function. + _authorizedMintBurn(msg.sender); + } + + _burn(msg.sender, _amount); } /// @notice Gets the number of decimal places of the token. @@ -89,43 +149,35 @@ contract BridgedERC20 is BridgedERC20Base_, ERC20VotesUpgradeable { /// @notice Gets the canonical token's address and chain ID. /// @return The canonical token's address. /// @return The canonical token's chain ID. - function canonical() external view returns (address, uint256) { + function canonical() public view returns (address, uint256) { return (srcToken, srcChainId); } - function clock() public view override returns (uint48) { - return SafeCastUpgradeable.toUint48(block.timestamp); + /// @notice Returns the owner. + /// @return The address of the owner. + function owner() public view override(IBridgedERC20, OwnableUpgradeable) returns (address) { + return OwnableUpgradeable.owner(); } - // solhint-disable-next-line func-name-mixedcase - function CLOCK_MODE() public pure override returns (string memory) { - // See https://eips.ethereum.org/EIPS/eip-6372 - return "mode=timestamp"; + function isMigratingOut() public view returns (bool) { + return migratingAddress != address(0) && !migratingInbound; } - function _beforeTokenTransfer(address _from, address _to, uint256 _amount) internal override { - if (_to == address(this)) revert BTOKEN_CANNOT_RECEIVE(); - if (paused()) revert INVALID_PAUSE_STATUS(); - return super._beforeTokenTransfer(_from, _to, _amount); - } - - function _mint( + function _beforeTokenTransfer( + address _from, address _to, uint256 _amount ) internal - override(BridgedERC20Base, ERC20VotesUpgradeable) + override + whenNotPaused { - return super._mint(_to, _amount); + LibBridgedToken.checkToAddress(_to); + return super._beforeTokenTransfer(_from, _to, _amount); } - function _burn( - address _from, - uint256 _amount - ) - internal - override(BridgedERC20Base, ERC20VotesUpgradeable) - { - return super._burn(_from, _amount); - } + function _authorizedMintBurn(address addr) + private + onlyFromOwnerOrNamed(LibStrings.B_ERC20_VAULT) + { } } diff --git a/packages/protocol/contracts/tokenvault/BridgedERC20Base.sol b/packages/protocol/contracts/tokenvault/BridgedERC20Base.sol deleted file mode 100644 index b5bccfbf29..0000000000 --- a/packages/protocol/contracts/tokenvault/BridgedERC20Base.sol +++ /dev/null @@ -1,105 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.24; - -import "../common/EssentialContract.sol"; -import "../common/LibStrings.sol"; -import "./IBridgedERC20.sol"; - -/// @title BridgedERC20Base -/// @custom:security-contact security@taiko.xyz -abstract contract BridgedERC20Base is EssentialContract, IBridgedERC20 { - /// @notice The address of the contract to migrate tokens to or from. - address public migratingAddress; - - /// @notice If true, signals migrating 'to', false if migrating 'from'. - bool public migratingInbound; - - uint256[49] private __gap; - - /// @notice Emitted when the migration status is changed. - /// @param addr The address migrating 'to' or 'from'. - /// @param inbound If false then signals migrating 'from', true if migrating 'into'. - event MigrationStatusChanged(address addr, bool inbound); - - /// @notice Emitted when tokens are migrated to or from the bridged token. - /// @param fromToken The address of the bridged token. - /// @param account The address of the account. - /// @param amount The amount of tokens migrated. - event MigratedTo(address indexed fromToken, address indexed account, uint256 amount); - - error BB_PERMISSION_DENIED(); - error BB_INVALID_PARAMS(); - error BB_MINT_DISALLOWED(); - - /// @notice Start or stop migration to/from a specified contract. - /// @param _migratingAddress The address migrating 'to' or 'from'. - /// @param _migratingInbound If false then signals migrating 'from', true if migrating 'into'. - function changeMigrationStatus( - address _migratingAddress, - bool _migratingInbound - ) - external - whenNotPaused - onlyFromOwnerOrNamed(LibStrings.B_ERC20_VAULT) - nonReentrant - { - if (_migratingAddress == migratingAddress && _migratingInbound == migratingInbound) { - revert BB_INVALID_PARAMS(); - } - - migratingAddress = _migratingAddress; - migratingInbound = _migratingInbound; - emit MigrationStatusChanged(_migratingAddress, _migratingInbound); - } - - /// @notice Mints tokens to the specified account. - /// @param _account The address of the account to receive the tokens. - /// @param _amount The amount of tokens to mint. - function mint(address _account, uint256 _amount) external whenNotPaused nonReentrant { - // mint is disabled while migrating outbound. - if (_isMigratingOut()) revert BB_MINT_DISALLOWED(); - - address _migratingAddress = migratingAddress; - if (msg.sender == _migratingAddress) { - // Inbound migration - emit MigratedTo(_migratingAddress, _account, _amount); - } else if (msg.sender != resolve(LibStrings.B_ERC20_VAULT, true)) { - // Bridging from vault - revert BB_PERMISSION_DENIED(); - } - - _mint(_account, _amount); - } - - /// @notice Burns tokens in case of 'migrating out' from msg.sender (EOA) or from the ERC20Vault - /// if bridging back to canonical token. - /// @param _amount The amount of tokens to burn. - function burn(uint256 _amount) external whenNotPaused nonReentrant { - if (_isMigratingOut()) { - // Outbound migration - emit MigratedTo(migratingAddress, msg.sender, _amount); - // Ask the new bridged token to mint token for the user. - IBridgedERC20(migratingAddress).mint(msg.sender, _amount); - } else if (msg.sender != resolve(LibStrings.B_ERC20_VAULT, true)) { - // When user wants to burn tokens only during 'migrating out' phase is possible. If - // ERC20Vault burns the tokens, that will go through the burn(amount) function. - revert RESOLVER_DENIED(); - } - - _burn(msg.sender, _amount); - } - - /// @notice Returns the owner. - /// @return The address of the owner. - function owner() public view override(IBridgedERC20, OwnableUpgradeable) returns (address) { - return super.owner(); - } - - function _mint(address _account, uint256 _amount) internal virtual; - - function _burn(address _from, uint256 _amount) internal virtual; - - function _isMigratingOut() private view returns (bool) { - return migratingAddress != address(0) && !migratingInbound; - } -} diff --git a/packages/protocol/contracts/tokenvault/BridgedERC721.sol b/packages/protocol/contracts/tokenvault/BridgedERC721.sol index 3d9eb0c196..afca5a3209 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC721.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC721.sol @@ -18,7 +18,8 @@ contract BridgedERC721 is EssentialContract, ERC721Upgradeable { uint256[48] private __gap; - error BTOKEN_CANNOT_RECEIVE(); + error BTOKEN_INVALID_PARAMS(); + error BTOKEN_INVALID_TO_ADDR(); error BTOKEN_INVALID_BURN(); /// @notice Initializes the contract. @@ -82,18 +83,6 @@ contract BridgedERC721 is EssentialContract, ERC721Upgradeable { _burn(_tokenId); } - /// @notice Gets the name of the token. - /// @return The name. - function name() public view override returns (string memory) { - return LibBridgedToken.buildName(super.name(), srcChainId); - } - - /// @notice Gets the symbol of the bridged token. - /// @return The symbol. - function symbol() public view override returns (string memory) { - return LibBridgedToken.buildSymbol(super.symbol()); - } - /// @notice Gets the source token and source chain ID being bridged. /// @return The source token's address. /// @return The source token's chain ID. @@ -114,21 +103,21 @@ contract BridgedERC721 is EssentialContract, ERC721Upgradeable { /// @notice Gets the canonical token's address and chain ID. /// @return The canonical token's address. /// @return The canonical token's chain ID. - function canonical() external view returns (address, uint256) { + function canonical() public view returns (address, uint256) { return (srcToken, srcChainId); } function _beforeTokenTransfer( - address, /*_from*/ + address _from, address _to, - uint256, /*_firstTokenId*/ - uint256 /*_batchSize*/ + uint256 _firstTokenId, + uint256 _batchSize ) internal - view override + whenNotPaused { - if (_to == address(this)) revert BTOKEN_CANNOT_RECEIVE(); - if (paused()) revert INVALID_PAUSE_STATUS(); + LibBridgedToken.checkToAddress(_to); + super._beforeTokenTransfer(_from, _to, _firstTokenId, _batchSize); } } diff --git a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol index 9ca7f1314d..4a264c54a2 100644 --- a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol @@ -4,22 +4,10 @@ pragma solidity 0.8.24; import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC1155/utils/ERC1155ReceiverUpgradeable.sol"; import "../libs/LibAddress.sol"; +import "../common/LibStrings.sol"; import "./BaseNFTVault.sol"; import "./BridgedERC1155.sol"; -/// @title IERC1155NameAndSymbol -/// @notice Interface for ERC1155 contracts that provide name() and symbol() -/// functions. These functions may not be part of the official interface but are -/// used by some contracts. -/// @custom:security-contact security@taiko.xyz -interface IERC1155NameAndSymbol { - /// @notice Returns the name of the token. - function name() external view returns (string memory); - - /// @notice Returns the symbol of the token. - function symbol() external view returns (string memory); -} - /// @title ERC1155Vault /// @dev Labeled in AddressResolver as "erc1155_vault" /// @notice This vault holds all ERC1155 tokens that users have deposited. @@ -35,7 +23,7 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { /// @param _addressManager The address of the {AddressManager} contract. function init(address _owner, address _addressManager) external initializer { __Essential_init(_owner, _addressManager); - __ERC1155Receiver_init_unchained(); + __ERC1155Receiver_init(); } /// @notice Transfers ERC1155 tokens to this vault and sends a message to /// the destination chain so the user can receive the same (bridged) tokens @@ -110,7 +98,7 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { // Don't allow sending to disallowed addresses. // Don't send the tokens back to `from` because `from` is on the source chain. - if (to == address(0) || to == address(this)) revert VAULT_INVALID_TO(); + checkToAddress(to); // Transfer the ETH and the tokens to the `to` address address token = _transferTokens(ctoken, to, tokenIds, amounts); @@ -192,21 +180,22 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { } /// @dev See {BaseVault-supportsInterface}. - /// @param interfaceId The interface identifier. + /// @param _interfaceId The interface identifier. /// @return true if supports, else otherwise. - function supportsInterface(bytes4 interfaceId) + function supportsInterface(bytes4 _interfaceId) public - pure + view override(BaseVault, ERC1155ReceiverUpgradeable) returns (bool) { - return interfaceId == type(ERC1155ReceiverUpgradeable).interfaceId - || BaseVault.supportsInterface(interfaceId); + // Here we cannot user `super.supportsInterface(_interfaceId)` + return BaseVault.supportsInterface(_interfaceId) + || ERC1155ReceiverUpgradeable.supportsInterface(_interfaceId); } /// @inheritdoc BaseVault function name() public pure override returns (bytes32) { - return "erc1155_vault"; + return LibStrings.B_ERC1155_VAULT; } /// @dev Transfers ERC1155 tokens to the `to` address. @@ -249,33 +238,23 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { CanonicalNFT storage _ctoken = bridgedToCanonical[_op.token]; if (_ctoken.addr != address(0)) { ctoken_ = _ctoken; - for (uint256 i; i < _op.tokenIds.length; ++i) { - BridgedERC1155(_op.token).burn(msg.sender, _op.tokenIds[i], _op.amounts[i]); - } + BridgedERC1155(_op.token).burnBatch(msg.sender, _op.tokenIds, _op.amounts); } else { // is a ctoken token, meaning, it lives on this chain ctoken_ = CanonicalNFT({ chainId: uint64(block.chainid), addr: _op.token, - symbol: "", - name: "" + symbol: safeSymbol(_op.token), + name: safeName(_op.token) + }); + + IERC1155(_op.token).safeBatchTransferFrom({ + from: msg.sender, + to: address(this), + ids: _op.tokenIds, + amounts: _op.amounts, + data: "" }); - IERC1155NameAndSymbol t = IERC1155NameAndSymbol(_op.token); - try t.name() returns (string memory _name) { - ctoken_.name = _name; - } catch { } - try t.symbol() returns (string memory _symbol) { - ctoken_.symbol = _symbol; - } catch { } - for (uint256 i; i < _op.tokenIds.length; ++i) { - IERC1155(_op.token).safeTransferFrom({ - from: msg.sender, - to: address(this), - id: _op.tokenIds[i], - amount: _op.amounts[i], - data: "" - }); - } } } msgData_ = abi.encodeCall( diff --git a/packages/protocol/contracts/tokenvault/ERC20Vault.sol b/packages/protocol/contracts/tokenvault/ERC20Vault.sol index aa8033a1ca..bdac051b2c 100644 --- a/packages/protocol/contracts/tokenvault/ERC20Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC20Vault.sol @@ -4,6 +4,8 @@ pragma solidity 0.8.24; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "../bridge/IQuotaManager.sol"; +import "../common/LibStrings.sol"; import "../libs/LibAddress.sol"; import "./BridgedERC20.sol"; import "./BaseVault.sol"; @@ -18,6 +20,8 @@ contract ERC20Vault is BaseVault { using LibAddress for address; using SafeERC20 for IERC20; + uint256 public constant MIN_MIGRATION_DELAY = 90 days; + /// @dev Represents a canonical ERC20 token. struct CanonicalERC20 { uint64 chainId; @@ -49,7 +53,11 @@ contract ERC20Vault is BaseVault { /// @notice Mappings from bridged tokens to their blacklist status. mapping(address btoken => bool blacklisted) public btokenBlacklist; - uint256[47] private __gap; + /// @notice Mappings from ctoken to its last migration timestamp. + mapping(uint256 chainId => mapping(address ctoken => uint256 timestamp)) public + lastMigrationStart; + + uint256[46] private __gap; /// @notice Emitted when a new bridged token is deployed. /// @param srcChainId The chain ID of the canonical token. @@ -136,8 +144,7 @@ contract ERC20Vault is BaseVault { error VAULT_INVALID_TOKEN(); error VAULT_INVALID_AMOUNT(); error VAULT_INVALID_NEW_BTOKEN(); - error VAULT_INVALID_TO(); - error VAULT_NOT_SAME_OWNER(); + error VAULT_LAST_MIGRATION_TOO_CLOSE(); /// @notice Initializes the contract. /// @param _owner The owner of this contract. msg.sender will be used if this value is zero. @@ -165,8 +172,9 @@ contract ERC20Vault is BaseVault { if (btokenBlacklist[_btokenNew]) revert VAULT_BTOKEN_BLACKLISTED(); - if (IBridgedERC20(_btokenNew).owner() != owner()) { - revert VAULT_NOT_SAME_OWNER(); + uint256 _lastMigrationStart = lastMigrationStart[_ctoken.chainId][_ctoken.addr]; + if (block.timestamp < _lastMigrationStart + MIN_MIGRATION_DELAY) { + revert VAULT_LAST_MIGRATION_TOO_CLOSE(); } btokenOld_ = canonicalToBridged[_ctoken.chainId][_ctoken.addr]; @@ -175,11 +183,9 @@ contract ERC20Vault is BaseVault { CanonicalERC20 memory ctoken = bridgedToCanonical[btokenOld_]; // The ctoken must match the saved one. - if ( - ctoken.decimals != _ctoken.decimals - || keccak256(bytes(ctoken.symbol)) != keccak256(bytes(_ctoken.symbol)) - || keccak256(bytes(ctoken.name)) != keccak256(bytes(_ctoken.name)) - ) revert VAULT_CTOKEN_MISMATCH(); + if (keccak256(abi.encode(_ctoken)) != keccak256(abi.encode(ctoken))) { + revert VAULT_CTOKEN_MISMATCH(); + } delete bridgedToCanonical[btokenOld_]; btokenBlacklist[btokenOld_] = true; @@ -191,6 +197,7 @@ contract ERC20Vault is BaseVault { bridgedToCanonical[_btokenNew] = _ctoken; canonicalToBridged[_ctoken.chainId][_ctoken.addr] = _btokenNew; + lastMigrationStart[_ctoken.chainId][_ctoken.addr] = block.timestamp; emit BridgedTokenChanged({ srcChainId: _ctoken.chainId, @@ -261,7 +268,7 @@ contract ERC20Vault is BaseVault { // Don't allow sending to disallowed addresses. // Don't send the tokens back to `from` because `from` is on the source chain. - if (to == address(0) || to == address(this)) revert VAULT_INVALID_TO(); + checkToAddress(to); // Transfer the ETH and the tokens to the `to` address address token = _transferTokens(ctoken, to, amount); @@ -311,7 +318,7 @@ contract ERC20Vault is BaseVault { /// @inheritdoc BaseVault function name() public pure override returns (bytes32) { - return "erc20_vault"; + return LibStrings.B_ERC20_VAULT; } function _transferTokens( @@ -331,6 +338,8 @@ contract ERC20Vault is BaseVault { // check. IBridgedERC20(token_).mint(_to, _amount); } + + _consumeTokenQuota(token_, _amount); } /// @dev Handles the message on the source chain and returns the encoded @@ -358,24 +367,11 @@ contract ERC20Vault is BaseVault { ctoken_ = CanonicalERC20({ chainId: uint64(block.chainid), addr: _op.token, - decimals: 0, - symbol: "", - name: "" + decimals: _safeDecimals(_op.token), + symbol: safeSymbol(_op.token), + name: safeName(_op.token) }); - // Try fill in the boilerplate values, but use try-catch because functions below are - // ERC20-optional only. - IERC20Metadata meta = IERC20Metadata(_op.token); - try meta.decimals() returns (uint8 _decimals) { - ctoken_.decimals = _decimals; - } catch { } - try meta.name() returns (string memory _name) { - ctoken_.name = _name; - } catch { } - try meta.symbol() returns (string memory _symbol) { - ctoken_.symbol = _symbol; - } catch { } - // Query the balance then query it again to get the actual amount of // token transferred into this address, this is more accurate than // simply using `amount` -- some contract may deduct a fee from the @@ -437,4 +433,17 @@ contract ERC20Vault is BaseVault { ctokenDecimal: ctoken.decimals }); } + + function _consumeTokenQuota(address _token, uint256 _amount) private { + address quotaManager = resolve(LibStrings.B_QUOTA_MANAGER, true); + if (quotaManager != address(0)) { + IQuotaManager(quotaManager).consumeQuota(_token, _amount); + } + } + + function _safeDecimals(address _token) private view returns (uint8) { + (bool success, bytes memory data) = + address(_token).staticcall(abi.encodeCall(IERC20Metadata.decimals, ())); + return success && data.length == 32 ? abi.decode(data, (uint8)) : 18; + } } diff --git a/packages/protocol/contracts/tokenvault/ERC721Vault.sol b/packages/protocol/contracts/tokenvault/ERC721Vault.sol index 4726849dd5..f5673b6801 100644 --- a/packages/protocol/contracts/tokenvault/ERC721Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC721Vault.sol @@ -4,6 +4,7 @@ pragma solidity 0.8.24; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; import "../libs/LibAddress.sol"; +import "../common/LibStrings.sol"; import "./BaseNFTVault.sol"; import "./BridgedERC721.sol"; @@ -92,7 +93,7 @@ contract ERC721Vault is BaseNFTVault, IERC721Receiver { // Don't allow sending to disallowed addresses. // Don't send the tokens back to `from` because `from` is on the source chain. - if (to == address(0) || to == address(this)) revert VAULT_INVALID_TO(); + checkToAddress(to); // Transfer the ETH and the tokens to the `to` address address token = _transferTokens(ctoken, to, tokenIds); @@ -158,7 +159,7 @@ contract ERC721Vault is BaseNFTVault, IERC721Receiver { /// @inheritdoc BaseVault function name() public pure override returns (bytes32) { - return "erc721_vault"; + return LibStrings.B_ERC721_VAULT; } function _transferTokens( @@ -199,26 +200,17 @@ contract ERC721Vault is BaseNFTVault, IERC721Receiver { BridgedERC721(_op.token).burn(msg.sender, _op.tokenIds[i]); } } else { - ERC721Upgradeable t = ERC721Upgradeable(_op.token); - ctoken_ = CanonicalNFT({ chainId: uint64(block.chainid), addr: _op.token, - symbol: "", - name: "" + symbol: safeSymbol(_op.token), + name: safeName(_op.token) }); - // Try fill in the boilerplate values, but use try-catch because functions below are - // ERC20-optional only. - try t.name() returns (string memory _name) { - ctoken_.name = _name; - } catch { } - try t.symbol() returns (string memory _symbol) { - ctoken_.symbol = _symbol; - } catch { } - for (uint256 i; i < _op.tokenIds.length; ++i) { - t.safeTransferFrom(msg.sender, address(this), _op.tokenIds[i]); + ERC721Upgradeable(_op.token).safeTransferFrom( + msg.sender, address(this), _op.tokenIds[i] + ); } } } diff --git a/packages/protocol/contracts/tokenvault/LibBridgedToken.sol b/packages/protocol/contracts/tokenvault/LibBridgedToken.sol index de28a1c165..eaf099c6c9 100644 --- a/packages/protocol/contracts/tokenvault/LibBridgedToken.sol +++ b/packages/protocol/contracts/tokenvault/LibBridgedToken.sol @@ -7,6 +7,7 @@ import "@openzeppelin/contracts/utils/Strings.sol"; /// @custom:security-contact security@taiko.xyz library LibBridgedToken { error BTOKEN_INVALID_PARAMS(); + error BTOKEN_INVALID_TO_ADDR(); function validateInputs(address _srcToken, uint256 _srcChainId) internal view { if (_srcToken == address(0) || _srcChainId == 0 || _srcChainId == block.chainid) { @@ -29,25 +30,8 @@ library LibBridgedToken { } } - function buildName( - string memory _name, - uint256 _srcChainId - ) - internal - pure - returns (string memory) - { - if (bytes(_name).length == 0) { - return ""; - } else { - return - string.concat("Bridged ", _name, unicode" (â­€", Strings.toString(_srcChainId), ")"); - } - } - - function buildSymbol(string memory _symbol) internal pure returns (string memory) { - if (bytes(_symbol).length == 0) return ""; - else return string.concat(_symbol, ".t"); + function checkToAddress(address _to) internal view { + if (_to == address(this)) revert BTOKEN_INVALID_TO_ADDR(); } function buildURI( diff --git a/packages/protocol/contracts/verifiers/SgxVerifier.sol b/packages/protocol/contracts/verifiers/SgxVerifier.sol index 8dda57ec6c..a59eb0aaee 100644 --- a/packages/protocol/contracts/verifiers/SgxVerifier.sol +++ b/packages/protocol/contracts/verifiers/SgxVerifier.sol @@ -64,7 +64,7 @@ contract SgxVerifier is EssentialContract, IVerifier { /// instance, this value is zero address. /// @param validSince The time since the instance is valid. event InstanceAdded( - uint256 indexed id, address indexed instance, address replaced, uint256 validSince + uint256 indexed id, address indexed instance, address indexed replaced, uint256 validSince ); /// @notice Emitted when an SGX instance is deleted from the registry. diff --git a/packages/protocol/deployments/gen-layouts.sh b/packages/protocol/deployments/gen-layouts.sh new file mode 100755 index 0000000000..fefa3e3370 --- /dev/null +++ b/packages/protocol/deployments/gen-layouts.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# Define the list of contracts to inspect +contracts=( + "TaikoL1" + "TaikoL2" + "SignalService" + "Bridge" + "DelegateOwner" + "GuardianProver" + "TaikoToken" + "BridgedTaikoToken" + "ERC20Vault" + "ERC721Vault" + "ERC1155Vault" + "BridgedERC20" + "BridgedERC721" + "BridgedERC1155" + "AssignmentHook" + "DevnetTierProvider" + "TierProviderV1" + "TierProviderV2" + "TierProviderV3" + "ERC20Airdrop" + "AutomataDcapV3Attestation" + "SgxVerifier" + "RiscZeroVerifier" + "QuotaManager" +) + +# Empty the output file initially +output_file="contract_layout.md" +> $output_file + +# Loop over each contract +for contract in "${contracts[@]}"; do + # Run forge inspect and append to the file + # Ensure correct concatenation of the command without commas + echo "forge inspect ${contract} storagelayout --pretty >> $output_file" + + echo "## ${contract}" >> $output_file + forge inspect ${contract} storagelayout --pretty >> $output_file + echo "" >> $output_file +done diff --git a/packages/protocol/deployments/mainnet-contract-logs.md b/packages/protocol/deployments/mainnet-contract-logs.md new file mode 100644 index 0000000000..a249e990ea --- /dev/null +++ b/packages/protocol/deployments/mainnet-contract-logs.md @@ -0,0 +1,249 @@ +# Taiko Mainnet Contract Logs + +## Notes + +1. Code used on mainnet must correspond to a commit on the main branch of the official repo: https://github.com/taikoxyz/taiko-mono. + +## L1 Contracts + +### shared_address_manager + +- proxy: `0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa` +- impl: `0x9cA1Ab10c9fAc5153F8b78E67f03aAa69C9c6A15` +- owner: `0x56706F118e42AE069F20c5636141B844D1324AE1` +- pendingOwner: `admin.taiko.eth` +- todo: + - admin.taiko.eth to accept the owner +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### taiko_token + +- ens: `token.taiko.eth` +- proxy: `0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800` +- impl: `0x9ae1a067f9655dd0511390e3d70bb25933ae61eb` +- owner: `labs.taiko.eth` +- logs: + - deployed on April 25, 2024 at commit `2f6d3c62e` + +### signal_service + +- proxy: `0x9e0a24964e5397B566c1ed39258e21aB5E35C77C` +- impl: `0xE1d91bAE44B70bD66e8b688B8421fD62dcC33c72` +- owner: `0x56706F118e42AE069F20c5636141B844D1324AE1` +- pendingOwner: `admin.taiko.eth` +- todo: + - admin.taiko.eth to accept the owner +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### bridge + +- proxy: `0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC` +- impl: `0x91d593d34f2E1904cDCe3D5290a74563F87bCF6f` +- owner: `0x56706F118e42AE069F20c5636141B844D1324AE1` +- pendingOwner: `admin.taiko.eth` +- todo: + - admin.taiko.eth to accept the owner +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### erc20_vault + +- proxy: `0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab` +- impl: `0x15D9F7e12aEa18DAEF5c651fBf97567CAd4a4BEc` +- owner: `admin.taiko.eth` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### erc721_vault + +- proxy: `0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa` +- impl: `0xEC04849E7722Fd69797a155796Db75aC8F94f692` +- owner: `admin.taiko.eth` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### erc1155_vault + +- proxy: `0xaf145913EA4a56BE22E120ED9C24589659881702` +- impl: `0x7748dA086A2e6EDd8Db97eD236840910013c6396` +- owner: `admin.taiko.eth` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### bridged_erc20 + +- impl: `0xcc5d488073FA918cBbd73B9A523F3858C4de7372` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### bridged_erc721 + +- impl: `0xc4096E9ff1526Bd1840B65e9f45695135aC12De7` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### bridged_erc1155 + +- impl: `0x39E4C1214e733639d059979079A151911e42791d` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### rollup_address_manager + +- proxy: `0x579f40D0BE111b823962043702cabe6Aaa290780` +- impl: `0xd912aB787624c9eb96a37e658e9596e114360440` +- pendingOwner: `admin.taiko.eth` +- todo: + - admin.taiko.eth to accept the owner +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### taikoL1 + +- proxy: `0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a` +- impl: `0x99Ba70E62cab0cB983e66F72330fBDDC11d85501` +- owner: `admin.taiko.eth` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### assignmentHook + +- proxy: `0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6` +- impl: `0x4f664222C3fF6207558A745648B568D095dDA170` +- owner: `admin.taiko.eth` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### tierProvider + +- proxy: `0x33879cDF01121dc7bCe011b461e64d791aE931F2` +- impl: `0xf8254fd073063C35811577877f840548e77fD52E` +- owner: `admin.taiko.eth` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### tier_sgx + +- proxy: `0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81` +- impl: `0x3f54067EF5d8B414Bdb1945cdF482BD158Aad175` +- owner: `admin.taiko.eth` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### guardian_prover_minority + +- proxy: `0x579A8d63a2Db646284CBFE31FE5082c9989E985c` +- impl: `0x717DC5E3814591790BcB1fD9259eEdA7c14ce9CF` +- owner: `admin.taiko.eth` +- todo: + - admin.taiko.eth to accept the owner +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### guardian_prover + +- proxy: `0xE3D777143Ea25A6E031d1e921F396750885f43aC` +- impl: `0x717DC5E3814591790BcB1fD9259eEdA7c14ce9CF` +- owner: `admin.taiko.eth` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### p256_verifier + +- impl: `0x11A9ebA17EbF92b40fcf9a640Ebbc47Db6fBeab0` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### sig_verify_lib + +- impl: `0x47bB416ee947fE4a4b655011aF7d6E3A1B80E6e9` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### pem_cert_chain_lib + +- impl: `0x02772b7B3a5Bea0141C993Dbb8D0733C19F46169` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### automata_dcap_attestation + +- proxy: `0x8d7C954960a36a7596d7eA4945dDf891967ca8A3` +- impl: `0xEE8FC1dbb8D345f5bF35dFb939C6f9EdC5fCDAFc` +- owner: `admin.taiko.eth` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +## L2 Contracts + +### bridge + +- proxy: `0x1670000000000000000000000000000000000001` +- impl: `0x0167000000000000000000000000000000000001` +- owner: `0xf8ff2AF0DC1D5BA4811f22aCb02936A1529fd2Be` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### erc20_vault + +- proxy: `0x1670000000000000000000000000000000000002` +- impl: `0x0167000000000000000000000000000000000002` +- owner: `0xf8ff2AF0DC1D5BA4811f22aCb02936A1529fd2Be` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### erc721_vault + +- proxy: `0x1670000000000000000000000000000000000003` +- impl: `0x0167000000000000000000000000000000000003` +- owner: `0xf8ff2AF0DC1D5BA4811f22aCb02936A1529fd2Be` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### erc1155_vault + +- proxy: `0x1670000000000000000000000000000000000004` +- impl: `0x0167000000000000000000000000000000000004` +- owner: `0xf8ff2AF0DC1D5BA4811f22aCb02936A1529fd2Be` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### signal_service + +- proxy: `0x1670000000000000000000000000000000000005` +- impl: `0x0167000000000000000000000000000000000005` +- owner: `0xf8ff2AF0DC1D5BA4811f22aCb02936A1529fd2Be` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### shared_address_manager + +- proxy: `0x1670000000000000000000000000000000000006` +- impl: `0x0167000000000000000000000000000000000006` +- owner: `0xf8ff2AF0DC1D5BA4811f22aCb02936A1529fd2Be` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### taikoL2 + +- proxy: `0x1670000000000000000000000000000000010001` +- impl: `0x0167000000000000000000000000000000010001` +- owner: `0xf8ff2AF0DC1D5BA4811f22aCb02936A1529fd2Be` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +### rollup_address_manager + +- proxy: `0x1670000000000000000000000000000000010002` +- impl: `0x0167000000000000000000000000000000010002` +- owner: `0xf8ff2AF0DC1D5BA4811f22aCb02936A1529fd2Be` +- logs: + - deployed on May 1, 2024 at commit `56dddf2b6` + +## Other EOAs/Contracts + +- `davidcai.eth`:`0x56706F118e42AE069F20c5636141B844D1324AE1` +- `admin.taiko.eth`: `0x9CBeE534B5D8a6280e01a14844Ee8aF350399C7F` +- `labs.taiko.eth`: `0xB73b0FC4C0Cfc73cF6e034Af6f6b42Ebe6c8b49D` diff --git a/packages/protocol/docs/how_taiko_proves_blocks.md b/packages/protocol/docs/how_taiko_proves_blocks.md index 0c5d1c3e3e..1d1dd7dcf0 100644 --- a/packages/protocol/docs/how_taiko_proves_blocks.md +++ b/packages/protocol/docs/how_taiko_proves_blocks.md @@ -109,7 +109,7 @@ struct BlockMetadata { The following [**block level variables**](https://docs.soliditylang.org/en/latest/units-and-global-variables.html) are accessible to the EVM, but their values are not part of the MPT so we need a different way to verify their correctness. - `blockhash(uint blockNumber) returns (bytes32)`: hash of the given block when `blocknumber` is one of the 256 most recent blocks; otherwise returns zero -- `block.basefee` (`uint`): current block's base fee ([EIP-3198](https://eips.ethereum.org/EIPS/eip-3198) and [modified EIP-1559](./L2EIP1559.md)) +- `block.basefee` (`uint`): current block's base fee ([EIP-3198](https://eips.ethereum.org/EIPS/eip-3198) and [modified EIP-1559](eip1559_on_l2.md)) - `block.chainid` (`uint`): current chain id - `block.coinbase` (`address payable`): current block miner's address - `block.prevrandao` (`uint`): alias for `block.prevrandao` ([EIP-4399](https://eips.ethereum.org/EIPS/eip-4399)) diff --git a/packages/protocol/foundry.toml b/packages/protocol/foundry.toml index 9d30ec43e5..9e3b3b0465 100644 --- a/packages/protocol/foundry.toml +++ b/packages/protocol/foundry.toml @@ -35,7 +35,8 @@ fs_permissions = [ # 2394: Transient storage warning # 3860: Contract initcode size is xxx bytes and exceeds 49152 bytes # 5574: Contract code size is xxx bytes and exceeds 24576 byte -ignored_error_codes = [2394, 3860, 5574] +# 5740: Unreachable code +ignored_error_codes = [2394, 3860, 5574, 5740] [fuzz] runs = 200 diff --git a/packages/protocol/package.json b/packages/protocol/package.json index fc2efea3ef..3ea6509764 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -6,6 +6,7 @@ "buildMerkle": "ts-node ./utils/airdrop/buildMerkleTree.ts ./utils/airdrop/airdrop_db/example_claimList.json", "clean": "rm -rf abis cache* && forge clean", "compile": "forge build --build-info --extra-output storage-layout", + "layout": "./deployments/gen-layouts.sh", "test:deploy": "./script/download_solc.sh && ./script/test_deploy_on_l1.sh", "eslint": "pnpm exec eslint --fix --ignore-path .eslintignore --ext .js,.ts .", "fmt:sol": "forge fmt", diff --git a/packages/protocol/script/DeployL1QuotaManager.s.sol b/packages/protocol/script/DeployL1QuotaManager.s.sol new file mode 100644 index 0000000000..3fb752002a --- /dev/null +++ b/packages/protocol/script/DeployL1QuotaManager.s.sol @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "../test/DeployCapability.sol"; +import "../contracts/bridge/QuotaManager.sol"; + +contract DeployL1QuotaManager is DeployCapability { + uint256 public privateKey = vm.envUint("PRIVATE_KEY"); + // MAINNET_SECURITY_COUNCIL: council.taiko.eth (0x7C50d60743D3FCe5a39FdbF687AFbAe5acFF49Fd) + address public addressManager = vm.envAddress("L1_ROLLUP_ADDRESS_MANAGER"); + address public owner = vm.envAddress("OWNER"); + + modifier broadcast() { + require(privateKey != 0, "invalid private key"); + vm.startBroadcast(); + _; + vm.stopBroadcast(); + } + + function run() external broadcast { + // Deploy the QuotaManager contract with a 15 minute quota period + QuotaManager qm = QuotaManager( + deployProxy({ + name: "quota_manager", + impl: address(new QuotaManager()), + data: abi.encodeCall(QuotaManager.init, (owner, addressManager, 15 minutes)) + }) + ); + + // L2-to-L1 Ether per 15 minutes: 500 Ether + qm.updateQuota(address(0), 250 ether); + + // L2-to-L1 TKO per 15 minutes: 100_000 (0.01% total supply) + qm.updateQuota(0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800, 100_000 ether); + } +} diff --git a/packages/protocol/script/DeployOnL1.s.sol b/packages/protocol/script/DeployOnL1.s.sol index bd2b26ef86..fe0577c4d5 100644 --- a/packages/protocol/script/DeployOnL1.s.sol +++ b/packages/protocol/script/DeployOnL1.s.sol @@ -4,7 +4,7 @@ pragma solidity 0.8.24; import "@openzeppelin/contracts/utils/Strings.sol"; import "../contracts/common/LibStrings.sol"; -import "../contracts/L1/TaikoToken.sol"; +import "../contracts/tko/TaikoToken.sol"; import "../contracts/L1/TaikoL1.sol"; import "../contracts/L1/provers/GuardianProver.sol"; import "../contracts/L1/tiers/DevnetTierProvider.sol"; @@ -151,13 +151,7 @@ contract DeployOnL1 is DeployCapability { name: "taiko_token", impl: address(new TaikoToken()), data: abi.encodeCall( - TaikoToken.init, - ( - owner, - vm.envString("TAIKO_TOKEN_NAME"), - vm.envString("TAIKO_TOKEN_SYMBOL"), - vm.envAddress("TAIKO_TOKEN_PREMINT_RECIPIENT") - ) + TaikoToken.init, (owner, vm.envAddress("TAIKO_TOKEN_PREMINT_RECIPIENT")) ), registerTo: sharedAddressManager }); diff --git a/packages/protocol/script/DeployTaikoToken.s.sol b/packages/protocol/script/DeployTaikoToken.s.sol index 4d7aa815a9..1279aa5527 100644 --- a/packages/protocol/script/DeployTaikoToken.s.sol +++ b/packages/protocol/script/DeployTaikoToken.s.sol @@ -2,14 +2,12 @@ pragma solidity 0.8.24; import "../test/DeployCapability.sol"; -import "../contracts/L1/TaikoToken.sol"; +import "../contracts/tko/TaikoToken.sol"; contract DeployTaikoToken is DeployCapability { uint256 public privateKey = vm.envUint("PRIVATE_KEY"); // MAINNET_SECURITY_COUNCIL: council.taiko.eth (0x7C50d60743D3FCe5a39FdbF687AFbAe5acFF49Fd) address public securityCouncil = vm.envAddress("SECURITY_COUNCIL"); - string public tokenName = vm.envString("TAIKO_TOKEN_NAME"); - string public tokenSymbol = vm.envString("TAIKO_TOKEN_SYMBOL"); address public premintRecipient = vm.envAddress("TAIKO_TOKEN_PREMINT_RECIPIENT"); modifier broadcast() { @@ -24,9 +22,7 @@ contract DeployTaikoToken is DeployCapability { deployProxy({ name: "taiko_token", impl: address(new TaikoToken()), - data: abi.encodeCall( - TaikoToken.init, (securityCouncil, tokenName, tokenSymbol, premintRecipient) - ) + data: abi.encodeCall(TaikoToken.init, (securityCouncil, premintRecipient)) }); } } diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol index efda9e1550..6fc17d757d 100644 --- a/packages/protocol/test/L1/TaikoL1.t.sol +++ b/packages/protocol/test/L1/TaikoL1.t.sol @@ -177,15 +177,6 @@ contract TaikoL1Test is TaikoL1TestBase { proposeBlock(Alice, Bob, 1_000_000, 1024); } - function test_burn() external { - uint256 balanceBeforeBurn = tko.balanceOf(address(this)); - vm.prank(tko.owner(), tko.owner()); - tko.burn(address(this), 1 ether); - uint256 balanceAfterBurn = tko.balanceOf(address(this)); - - assertEq(balanceBeforeBurn - 1 ether, balanceAfterBurn); - } - function test_getTierIds() external { uint16[] memory tiers = cp.getTierIds(); assertEq(tiers[0], LibTiers.TIER_OPTIMISTIC); diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index dc5a3c4a68..592e3be9ad 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -115,9 +115,7 @@ abstract contract TaikoL1TestBase is TaikoTest { deployProxy({ name: "taiko_token", impl: address(new TaikoToken()), - data: abi.encodeCall( - TaikoToken.init, (address(0), "Taiko Token", "TTKOk", address(this)) - ), + data: abi.encodeCall(TaikoToken.init, (address(0), address(this))), registerTo: address(addressManager) }) ); diff --git a/packages/protocol/test/L2/Lib1559Math.t.sol b/packages/protocol/test/L2/Lib1559Math.t.sol index 84605c7506..a4d275d26b 100644 --- a/packages/protocol/test/L2/Lib1559Math.t.sol +++ b/packages/protocol/test/L2/Lib1559Math.t.sol @@ -6,42 +6,33 @@ import "../TaikoTest.sol"; contract TestLib1559Math is TaikoTest { using LibMath for uint256; - function test_eip1559_math() external { + function test_eip1559_math() external pure { LibL2Config.Config memory config = LibL2Config.get(); uint256 adjustmentFactor = config.gasTargetPerL1Block * config.basefeeAdjustmentQuotient; uint256 baseFee; uint256 i; - - baseFee = Lib1559Math.basefee(config.gasExcessMinValue, adjustmentFactor); - assertEq(baseFee, 0.01 gwei); // 0.01gwei - console2.log("gasExcessMinValue:", config.gasExcessMinValue, "min base fee:", baseFee); - - for (; baseFee < 0.1 gwei; ++i) { - baseFee = Lib1559Math.basefee(config.gasTargetPerL1Block * i, adjustmentFactor); - console2.log("base fee:", i, baseFee); - } - - // base fee will reach 1 gwei if gasExcess > 18540000000 - console2.log("base fee will reach 0.1 gwei if gasExcess >", config.gasTargetPerL1Block * i); - assertEq(i, 309); - - for (; baseFee < 1 gwei; ++i) { - baseFee = Lib1559Math.basefee(config.gasTargetPerL1Block * i, adjustmentFactor); - console2.log("base fee:", i, baseFee); + uint256 target = 0.01 gwei; + + for (uint256 k; k < 5; ++k) { + for (; baseFee < target; ++i) { + baseFee = Lib1559Math.basefee(config.gasTargetPerL1Block * i, adjustmentFactor); + } + console2.log("base fee:", baseFee); + console2.log(" gasExcess:", config.gasTargetPerL1Block * i); + console2.log(" i:", i); + target *= 10; } + } - // base fee will reach 10 gwei if gasExcess > 19620000000 - console2.log("base fee will reach 1 gwei if gasExcess >", config.gasTargetPerL1Block * i); - assertEq(i, 327); + function test_eip1559_math_max() external pure { + LibL2Config.Config memory config = LibL2Config.get(); + uint256 adjustmentFactor = config.gasTargetPerL1Block * config.basefeeAdjustmentQuotient; - for (; baseFee < 10 gwei; ++i) { - baseFee = Lib1559Math.basefee(config.gasTargetPerL1Block * i, adjustmentFactor); - console2.log("base fee:", i, baseFee); - } + uint256 gasExcess = type(uint64).max; + uint256 baseFee = Lib1559Math.basefee(gasExcess, adjustmentFactor); - // base fee will reach 10 gwei if gasExcess > 20760000000 - console2.log("base fee will reach 1 gwei if gasExcess >", config.gasTargetPerL1Block * i); - assertEq(i, 346); + console2.log("base fee (gwei):", baseFee / 1 gwei); + console2.log(" gasExcess:", gasExcess); } } diff --git a/packages/protocol/test/L2/TaikoL2.t.sol b/packages/protocol/test/L2/TaikoL2.t.sol index 7a3971ec92..eadb14a6f3 100644 --- a/packages/protocol/test/L2/TaikoL2.t.sol +++ b/packages/protocol/test/L2/TaikoL2.t.sol @@ -55,9 +55,7 @@ contract TestTaikoL2 is TaikoTest { ) ); - L2.setConfigAndExcess( - LibL2Config.Config(gasTarget, quotient, uint64(gasTarget) * 300), gasExcess - ); + L2.setConfigAndExcess(LibL2Config.Config(gasTarget, quotient), gasExcess); ss.authorize(address(L2), true); @@ -71,7 +69,7 @@ contract TestTaikoL2 is TaikoTest { // calling anchor in the same block more than once should fail function test_L2_AnchorTx_revert_in_same_block() external { - vm.fee(40_253_331); + vm.fee(1); vm.prank(L2.GOLDEN_TOUCH_ADDRESS()); _anchor(BLOCK_GAS_LIMIT); diff --git a/packages/protocol/test/L2/TaikoL2NoFeeCheck.t.sol b/packages/protocol/test/L2/TaikoL2NoFeeCheck.t.sol index 9bdd5c3b74..8b21fbaf56 100644 --- a/packages/protocol/test/L2/TaikoL2NoFeeCheck.t.sol +++ b/packages/protocol/test/L2/TaikoL2NoFeeCheck.t.sol @@ -55,9 +55,7 @@ contract TestTaikoL2NoFeeCheck is TaikoTest { ) ); - L2.setConfigAndExcess( - LibL2Config.Config(gasTarget, quotient, uint64(gasTarget) * 300), gasExcess - ); + L2.setConfigAndExcess(LibL2Config.Config(gasTarget, quotient), gasExcess); ss.authorize(address(L2), true); diff --git a/packages/protocol/test/TaikoTest.sol b/packages/protocol/test/TaikoTest.sol index b533f28b70..9465758a26 100644 --- a/packages/protocol/test/TaikoTest.sol +++ b/packages/protocol/test/TaikoTest.sol @@ -10,18 +10,18 @@ import "../contracts/tokenvault/ERC20Vault.sol"; import "../contracts/tokenvault/ERC721Vault.sol"; import "../contracts/tokenvault/ERC1155Vault.sol"; -import "../contracts/L1/TaikoToken.sol"; +import "../contracts/tko/TaikoToken.sol"; import "../contracts/L1/TaikoL1.sol"; import "../contracts/verifiers/SgxVerifier.sol"; import "../contracts/verifiers/RiscZeroVerifier.sol"; import "../contracts/L1/tiers/TierProviderV1.sol"; import "../contracts/L1/hooks/AssignmentHook.sol"; import "../contracts/L1/provers/GuardianProver.sol"; +import "../contracts/bridge/QuotaManager.sol"; import "../contracts/L2/DelegateOwner.sol"; import "../contracts/team/airdrop/ERC20Airdrop.sol"; -import "../contracts/team/airdrop/ERC20Airdrop2.sol"; import "../test/common/erc20/FreeMintERC20.sol"; import "../test/L2/TaikoL2EIP1559Configurable.sol"; diff --git a/packages/protocol/test/bridge/Bridge2.t.sol b/packages/protocol/test/bridge/Bridge2.t.sol new file mode 100644 index 0000000000..95d01427a8 --- /dev/null +++ b/packages/protocol/test/bridge/Bridge2.t.sol @@ -0,0 +1,83 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "../TaikoTest.sol"; + +contract BridgeTest2 is TaikoTest { + bytes public constant fakeProof = ""; + + address public owner; + uint64 public remoteChainId; + address public remoteBridge; + + AddressManager public addressManager; + SignalService public signalService; + Bridge public bridge; + + modifier transactedBy(address addr) { + vm.deal(addr, 100 ether); + vm.startPrank(addr); + + _; + vm.stopPrank(); + } + + modifier assertSameTotalBalance() { + uint256 totalBalance = getBalanceForAccounts(); + _; + uint256 totalBalance2 = getBalanceForAccounts(); + assertEq(totalBalance2, totalBalance); + assertEq(address(signalService).balance, 0); + } + + modifier dealEther(address addr) { + vm.deal(addr, 100 ether); + _; + } + + function setUp() public dealEther(owner) { + owner = vm.addr(0x1000); + remoteChainId = uint64(block.chainid + 1); + remoteBridge = vm.addr(0x2000); + + vm.startPrank(owner); + + addressManager = AddressManager( + deployProxy({ + name: "address_manager", + impl: address(new AddressManager()), + data: abi.encodeCall(AddressManager.init, (address(0))) + }) + ); + + signalService = SkipProofCheckSignal( + deployProxy({ + name: "signal_service", + impl: address(new SkipProofCheckSignal()), + data: abi.encodeCall(SignalService.init, (address(0), address(addressManager))), + registerTo: address(addressManager) + }) + ); + + bridge = Bridge( + payable( + deployProxy({ + name: "bridge", + impl: address(new Bridge()), + data: abi.encodeCall(Bridge.init, (address(0), address(addressManager))), + registerTo: address(addressManager) + }) + ) + ); + + vm.deal(address(bridge), 10_000 ether); + + addressManager.setAddress(remoteChainId, "bridge", remoteBridge); + vm.stopPrank(); + } + + function getBalanceForAccounts() public view returns (uint256) { + return Alice.balance + Bob.balance + Carol.balance + David.balance + address(bridge).balance + + owner.balance; + } +} diff --git a/packages/protocol/test/bridge/Bridge2_failMessage.t.sol b/packages/protocol/test/bridge/Bridge2_failMessage.t.sol new file mode 100644 index 0000000000..6ac17268f6 --- /dev/null +++ b/packages/protocol/test/bridge/Bridge2_failMessage.t.sol @@ -0,0 +1,84 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "./Bridge2.t.sol"; + +contract BridgeTest2_failMessage is BridgeTest2 { + function test_bridge2_failMessage_not_by_destOwner() + public + transactedBy(Carol) + assertSameTotalBalance + { + IBridge.Message memory message; + message.destChainId = uint64(block.chainid); + message.srcChainId = remoteChainId; + message.gasLimit = 1_000_000; + message.fee = 1000; + message.value = 2 ether; + message.destOwner = Alice; + message.to = Bob; + + vm.expectRevert(Bridge.B_PERMISSION_DENIED.selector); + bridge.failMessage(message); + } + + function test_bridge2_failMessage_by_destOwner__message_retriable() + public + dealEther(Alice) + dealEther(Carol) + assertSameTotalBalance + { + IBridge.Message memory message; + + message.destChainId = uint64(block.chainid); + message.srcChainId = remoteChainId; + + message.fee = 0; + message.value = 2 ether; + message.destOwner = Alice; + message.to = David; + message.gasLimit = bridge.getMessageMinGasLimit(0) - 1; + + vm.expectRevert(Bridge.B_INVALID_STATUS.selector); + vm.prank(Alice); + bridge.failMessage(message); + + vm.prank(Carol); + bridge.processMessage(message, fakeProof); + bytes32 hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.RETRIABLE); + + vm.prank(Alice); + bridge.failMessage(message); + hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.FAILED); + + vm.expectRevert(Bridge.B_INVALID_STATUS.selector); + vm.prank(Alice); + bridge.failMessage(message); + } + + function test_bridge2_failMessage_by_destOwner__message_processed() + public + transactedBy(Alice) + assertSameTotalBalance + { + IBridge.Message memory message; + + message.destChainId = uint64(block.chainid); + message.srcChainId = remoteChainId; + + message.gasLimit = 0; + message.fee = 1_000_000; + message.value = 2 ether; + message.destOwner = Alice; + message.to = David; + + bridge.processMessage(message, fakeProof); + bytes32 hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.DONE); + + vm.expectRevert(Bridge.B_INVALID_STATUS.selector); + bridge.failMessage(message); + } +} diff --git a/packages/protocol/test/bridge/Bridge2_processMessage.t.sol b/packages/protocol/test/bridge/Bridge2_processMessage.t.sol new file mode 100644 index 0000000000..a2ed2d62a6 --- /dev/null +++ b/packages/protocol/test/bridge/Bridge2_processMessage.t.sol @@ -0,0 +1,384 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "./Bridge2.t.sol"; + +contract Target is IMessageInvocable { + uint256 public receivedEther; + IBridge private bridge; + IBridge.Context public ctx; + + constructor(IBridge _bridge) { + bridge = _bridge; + } + + function onMessageInvocation(bytes calldata) external payable { + ctx = bridge.context(); + receivedEther += msg.value; + } + + function anotherFunc(bytes calldata) external payable { + receivedEther += msg.value; + } + + fallback() external payable { + ctx = bridge.context(); + receivedEther += msg.value; + } + + receive() external payable { } +} + +contract BridgeTest2_processMessage is BridgeTest2 { + function test_bridge2_processMessage_basic() public dealEther(Alice) assertSameTotalBalance { + vm.startPrank(Alice); + + IBridge.Message memory message; + + vm.expectRevert(Bridge.B_INVALID_CHAINID.selector); + bridge.processMessage(message, fakeProof); + + message.destChainId = uint64(block.chainid); + vm.expectRevert(Bridge.B_INVALID_CHAINID.selector); + bridge.processMessage(message, fakeProof); + + message.srcChainId = uint64(block.chainid); + vm.expectRevert(Bridge.B_INVALID_CHAINID.selector); + bridge.processMessage(message, fakeProof); + + message.srcChainId = remoteChainId + 1; + vm.expectRevert(Bridge.B_PERMISSION_DENIED.selector); + bridge.processMessage(message, fakeProof); + + message.srcChainId = remoteChainId; + vm.expectRevert(); // RESOLVER_ZERO_ADDR src bridge not registered + bridge.processMessage(message, fakeProof); + + message.gasLimit = 1_000_000; + bytes32 hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.NEW); + + bridge.processMessage(message, fakeProof); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.DONE); + + vm.stopPrank(); + + vm.prank(owner); + addressManager.setAddress(message.srcChainId, "bridge", address(0)); + + vm.startPrank(Alice); + + message.id += 1; + vm.expectRevert(); // RESOLVER_ZERO_ADDR src bridge not registered + bridge.processMessage(message, fakeProof); + + vm.stopPrank(); + } + + function test_bridge2_processMessage__special_to_address__0_fee__nonezero_gaslimit() + public + transactedBy(Carol) + assertSameTotalBalance + { + IBridge.Message memory message; + + message.destChainId = uint64(block.chainid); + message.srcChainId = remoteChainId; + + message.gasLimit = 1_000_000; + message.fee = 0; + message.value = 2 ether; + vm.expectRevert(LibAddress.ETH_TRANSFER_FAILED.selector); + bridge.processMessage(message, fakeProof); + + message.destOwner = Alice; + uint256 aliceBalance = Alice.balance; + bridge.processMessage(message, fakeProof); + assertEq(Alice.balance, aliceBalance + 2 ether); + + message.to = address(bridge); + aliceBalance = Alice.balance; + bridge.processMessage(message, fakeProof); + assertEq(Alice.balance, aliceBalance + 2 ether); + + message.to = address(signalService); + aliceBalance = Alice.balance; + bridge.processMessage(message, fakeProof); + assertEq(Alice.balance, aliceBalance + 2 ether); + + bytes32 hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.DONE); + } + + function test_bridge2_processMessage__special_to_address__0_fee__0_gaslimit() + public + dealEther(Alice) + dealEther(Bob) + assertSameTotalBalance + { + vm.startPrank(Alice); + + IBridge.Message memory message; + + message.destChainId = uint64(block.chainid); + message.srcChainId = remoteChainId; + + message.gasLimit = 0; + message.fee = 0; + message.value = 2 ether; + vm.expectRevert(Bridge.B_PERMISSION_DENIED.selector); + bridge.processMessage(message, fakeProof); + + message.destOwner = Alice; + uint256 aliceBalance = Alice.balance; + bridge.processMessage(message, fakeProof); + assertEq(Alice.balance, aliceBalance + 2 ether); + + message.to = address(bridge); + aliceBalance = Alice.balance; + bridge.processMessage(message, fakeProof); + assertEq(Alice.balance, aliceBalance + 2 ether); + + message.to = address(signalService); + aliceBalance = Alice.balance; + bridge.processMessage(message, fakeProof); + assertEq(Alice.balance, aliceBalance + 2 ether); + + bytes32 hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.DONE); + + vm.stopPrank(); + + message.value = 3 ether; + + vm.prank(Bob); + vm.expectRevert(Bridge.B_PERMISSION_DENIED.selector); + bridge.processMessage(message, fakeProof); + + hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.NEW); + } + + function test_bridge2_processMessage__special_to_address__nonezero_fee__nonezero_gaslimit() + public + transactedBy(Alice) + assertSameTotalBalance + { + IBridge.Message memory message; + + message.destChainId = uint64(block.chainid); + message.srcChainId = remoteChainId; + + message.gasLimit = 1; + message.fee = 5_000_000; + message.value = 2 ether; + message.destOwner = Bob; + + uint256 bobBalance = Bob.balance; + uint256 aliceBalance = Alice.balance; + + bridge.processMessage(message, fakeProof); + + assertEq(Bob.balance, bobBalance + 2 ether); + assertEq(Alice.balance, aliceBalance + 5_000_000); + + bytes32 hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.DONE); + + message.gasLimit = 10_000_000; + bobBalance = Bob.balance; + aliceBalance = Alice.balance; + + bridge.processMessage(message, fakeProof); + assertTrue(Bob.balance > bobBalance + 2 ether); + assertTrue(Alice.balance < aliceBalance + 5_000_000); + } + + function test_bridge2_processMessage__special_to_address__nonezero_fee__0_gaslimit() + public + transactedBy(Alice) + assertSameTotalBalance + { + IBridge.Message memory message; + + message.destChainId = uint64(block.chainid); + message.srcChainId = remoteChainId; + + message.gasLimit = 0; + message.fee = 5_000_000; + message.value = 2 ether; + message.destOwner = Alice; + + uint256 aliceBalance = Alice.balance; + + bridge.processMessage(message, fakeProof); + + assertEq(Alice.balance, aliceBalance + 2 ether + 5_000_000); + + bytes32 hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.DONE); + } + + function test_bridge2_processMessage__eoa_address__0_fee__nonezero_gaslimit() + public + transactedBy(Carol) + assertSameTotalBalance + { + IBridge.Message memory message; + + message.destChainId = uint64(block.chainid); + message.srcChainId = remoteChainId; + + message.gasLimit = 1_000_000; + message.fee = 0; + message.value = 2 ether; + message.destOwner = Alice; + message.to = David; + + uint256 aliceBalance = Alice.balance; + uint256 davidBalance = David.balance; + + bridge.processMessage(message, fakeProof); + bytes32 hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.DONE); + + assertEq(Alice.balance, aliceBalance); + assertEq(David.balance, davidBalance + 2 ether); + } + + function test_bridge2_processMessage__eoa_to_address__0_fee__0_gaslimit() + public + transactedBy(Alice) + assertSameTotalBalance + { + IBridge.Message memory message; + + message.destChainId = uint64(block.chainid); + message.srcChainId = remoteChainId; + + message.gasLimit = 0; + message.fee = 0; + message.value = 2 ether; + message.destOwner = Alice; + message.to = David; + + uint256 davidBalance = David.balance; + + bridge.processMessage(message, fakeProof); + bytes32 hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.DONE); + + assertEq(David.balance, davidBalance + 2 ether); + } + + function test_bridge2_processMessage__eoa_to_address__nonezero_fee__nonezero_gaslimit() + public + transactedBy(Carol) + assertSameTotalBalance + { + IBridge.Message memory message; + + message.destChainId = uint64(block.chainid); + message.srcChainId = remoteChainId; + + message.gasLimit = 1_000_000; + message.fee = 5_000_000; + message.value = 2 ether; + message.destOwner = Alice; + message.to = David; + + uint256 aliceBalance = Alice.balance; + uint256 davidBalance = David.balance; + + bridge.processMessage(message, fakeProof); + bytes32 hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.DONE); + + assertEq(David.balance, davidBalance + 2 ether); + assertTrue(Alice.balance > aliceBalance); + assertTrue(Alice.balance < aliceBalance + 5_000_000); + } + + function test_bridge2_processMessage__eoa_to_address__nonezero_fee__0_gaslimit() + public + transactedBy(Alice) + assertSameTotalBalance + { + IBridge.Message memory message; + + message.destChainId = uint64(block.chainid); + message.srcChainId = remoteChainId; + + message.gasLimit = 0; + message.fee = 1_000_000; + message.value = 2 ether; + message.destOwner = Alice; + message.to = David; + + uint256 davidBalance = David.balance; + + bridge.processMessage(message, fakeProof); + bytes32 hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.DONE); + + assertEq(David.balance, davidBalance + 2 ether); + } + + function test_bridge2_processMessage__special_invocation() public transactedBy(Carol) { + Target target = new Target(bridge); + + uint256 totalBalance = getBalanceForAccounts() + address(target).balance; + IBridge.Message memory message; + + message.destChainId = uint64(block.chainid); + message.srcChainId = remoteChainId; + + message.gasLimit = 1_000_000; + message.fee = 0; + message.value = 2 ether; + message.destOwner = Alice; + message.to = address(target); + message.data = abi.encodeCall(Target.anotherFunc, ("")); + + uint256 aliceBalance = Alice.balance; + bridge.processMessage(message, fakeProof); + bytes32 hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.DONE); + assertEq(Alice.balance, aliceBalance + 2 ether); + assertEq(target.receivedEther(), 0 ether); + + message.data = "1"; + bridge.processMessage(message, fakeProof); + hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.DONE); + assertEq(target.receivedEther(), 2 ether); + + (bytes32 msgHash, address from, uint64 srcChainId) = target.ctx(); + assertEq(msgHash, hash); + assertEq(from, message.from); + assertEq(srcChainId, message.srcChainId); + + message.to = Bob; + message.data = "something else"; + + bridge.processMessage(message, fakeProof); + hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.DONE); + assertEq(Bob.balance, 2 ether); + + message.to = address(target); + message.data = abi.encodeCall(Target.onMessageInvocation, ("")); + bridge.processMessage(message, fakeProof); + hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.DONE); + assertEq(target.receivedEther(), 4 ether); + + (msgHash, from, srcChainId) = target.ctx(); + assertEq(msgHash, hash); + assertEq(from, message.from); + assertEq(srcChainId, message.srcChainId); + + uint256 totalBalance2 = getBalanceForAccounts() + address(target).balance; + assertEq(totalBalance2, totalBalance); + } +} diff --git a/packages/protocol/test/bridge/Bridge2_recallMessage.t.sol b/packages/protocol/test/bridge/Bridge2_recallMessage.t.sol new file mode 100644 index 0000000000..f23095f082 --- /dev/null +++ b/packages/protocol/test/bridge/Bridge2_recallMessage.t.sol @@ -0,0 +1,113 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "./Bridge2.t.sol"; + +contract TestRecallableSender is IRecallableSender, IERC165 { + IBridge private bridge; + IBridge.Context public ctx; + + constructor(IBridge _bridge) { + bridge = _bridge; + } + + function supportsInterface(bytes4 _interfaceId) public view virtual override returns (bool) { + return _interfaceId == type(IRecallableSender).interfaceId + || _interfaceId == type(IERC165Upgradeable).interfaceId; + } + + function onMessageRecalled(IBridge.Message calldata, bytes32) external payable { + ctx = bridge.context(); + } +} + +contract BridgeTest2_recallMessage is BridgeTest2 { + function test_bridge2_recallMessage_basic() public transactedBy(Carol) assertSameTotalBalance { + IBridge.Message memory message; + message.srcOwner = Alice; + message.destOwner = Bob; + message.destChainId = remoteChainId; + message.value = 1 ether; + + vm.expectRevert(Bridge.B_INVALID_CHAINID.selector); + bridge.recallMessage(message, fakeProof); + + message.srcChainId = uint64(block.chainid); + vm.expectRevert(Bridge.B_MESSAGE_NOT_SENT.selector); + bridge.recallMessage(message, fakeProof); + + uint256 aliceBalance = Alice.balance; + uint256 carolBalance = Carol.balance; + uint256 bridgeBalance = address(bridge).balance; + + (, IBridge.Message memory m) = bridge.sendMessage{ value: 1 ether }(message); + assertEq(Alice.balance, aliceBalance); + assertEq(Carol.balance, carolBalance - 1 ether); + assertEq(address(bridge).balance, bridgeBalance + 1 ether); + + bridge.recallMessage(m, fakeProof); + bytes32 hash = bridge.hashMessage(m); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.RECALLED); + + assertEq(Alice.balance, aliceBalance + 1 ether); + assertEq(Carol.balance, carolBalance - 1 ether); + assertEq(address(bridge).balance, bridgeBalance); + + // recall the same message again + vm.expectRevert(Bridge.B_INVALID_STATUS.selector); + bridge.recallMessage(m, fakeProof); + } + + function test_bridge2_recallMessage_missing_local_signal_service() + public + dealEther(Carol) + assertSameTotalBalance + { + IBridge.Message memory message; + message.srcOwner = Alice; + message.destOwner = Bob; + message.destChainId = remoteChainId; + message.value = 1 ether; + message.srcChainId = uint64(block.chainid); + + vm.prank(Carol); + (, IBridge.Message memory m) = bridge.sendMessage{ value: 1 ether }(message); + + vm.prank(owner); + addressManager.setAddress(uint64(block.chainid), "signal_service", address(0)); + + vm.prank(Carol); + vm.expectRevert(); + bridge.recallMessage(m, fakeProof); + } + + function test_bridge2_recallMessage_callable_sender() public dealEther(Carol) { + TestRecallableSender callableSender = new TestRecallableSender(bridge); + vm.deal(address(callableSender), 100 ether); + + uint256 totalBalance = getBalanceForAccounts() + address(callableSender).balance; + + IBridge.Message memory message; + message.srcOwner = Alice; + message.destOwner = Bob; + message.destChainId = remoteChainId; + message.value = 1 ether; + message.srcChainId = uint64(block.chainid); + + vm.prank(address(callableSender)); + (bytes32 mhash, IBridge.Message memory m) = bridge.sendMessage{ value: 1 ether }(message); + + vm.prank(address(callableSender)); + bridge.recallMessage(m, fakeProof); + bytes32 hash = bridge.hashMessage(m); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.RECALLED); + + (bytes32 msgHash, address from, uint64 srcChainId) = callableSender.ctx(); + assertEq(msgHash, mhash); + assertEq(from, address(bridge)); + assertEq(srcChainId, block.chainid); + + uint256 totalBalance2 = getBalanceForAccounts() + address(callableSender).balance; + assertEq(totalBalance2, totalBalance); + } +} diff --git a/packages/protocol/test/bridge/Bridge2_retryMessage.t.sol b/packages/protocol/test/bridge/Bridge2_retryMessage.t.sol new file mode 100644 index 0000000000..b450bc0565 --- /dev/null +++ b/packages/protocol/test/bridge/Bridge2_retryMessage.t.sol @@ -0,0 +1,97 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "./Bridge2.t.sol"; + +contract Target is IMessageInvocable { + bool public toFail; + + function onMessageInvocation(bytes calldata) external payable { + if (toFail) revert("failed"); + } + + function setToFail(bool fail) external { + toFail = fail; + } +} + +contract BridgeTest2_retryMessage is BridgeTest2 { + function test_bridge2_retryMessage_1() + public + dealEther(Alice) + dealEther(Carol) + assertSameTotalBalance + { + Target target = new Target(); + target.setToFail(true); + + IBridge.Message memory message; + + message.destChainId = uint64(block.chainid); + message.srcChainId = remoteChainId; + + message.fee = 0; + message.value = 2 ether; + message.destOwner = Alice; + message.to = address(target); + message.data = abi.encodeCall(Target.onMessageInvocation, ("hello")); + message.gasLimit = 1_000_000; + + vm.prank(Carol); + bridge.processMessage(message, fakeProof); + bytes32 hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.RETRIABLE); + + vm.expectRevert(Bridge.B_PERMISSION_DENIED.selector); + vm.prank(Carol); + bridge.retryMessage(message, true); + + vm.expectRevert(Bridge.B_RETRY_FAILED.selector); + vm.prank(Carol); + bridge.retryMessage(message, false); + + vm.expectRevert(Bridge.B_RETRY_FAILED.selector); + vm.prank(Alice); + bridge.retryMessage(message, false); + + vm.prank(Alice); + bridge.retryMessage(message, true); + + hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.FAILED); + } + + function test_bridge2_retryMessage_2() public dealEther(Alice) dealEther(Carol) { + Target target = new Target(); + target.setToFail(true); + + uint256 totalBalance = getBalanceForAccounts() + address(target).balance; + IBridge.Message memory message; + + message.destChainId = uint64(block.chainid); + message.srcChainId = remoteChainId; + + message.fee = 0; + message.value = 2 ether; + message.destOwner = Alice; + message.to = address(target); + message.data = abi.encodeCall(Target.onMessageInvocation, ("hello")); + message.gasLimit = 1_000_000; + + vm.prank(Carol); + bridge.processMessage(message, fakeProof); + bytes32 hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.RETRIABLE); + + target.setToFail(false); + + vm.prank(Alice); + bridge.retryMessage(message, false); + + hash = bridge.hashMessage(message); + assertTrue(bridge.messageStatus(hash) == IBridge.Status.DONE); + + uint256 totalBalance2 = getBalanceForAccounts() + address(target).balance; + assertEq(totalBalance2, totalBalance); + } +} diff --git a/packages/protocol/test/bridge/Bridge2_sendMessage.t.sol b/packages/protocol/test/bridge/Bridge2_sendMessage.t.sol new file mode 100644 index 0000000000..8e5f560738 --- /dev/null +++ b/packages/protocol/test/bridge/Bridge2_sendMessage.t.sol @@ -0,0 +1,118 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "./Bridge2.t.sol"; + +contract BridgeTest2_sendMessage is BridgeTest2 { + function test_bridge2_sendMessage_invalid_message() + public + transactedBy(Carol) + assertSameTotalBalance + { + // init an all-zero message + IBridge.Message memory message; + + vm.expectRevert(Bridge.B_INVALID_USER.selector); + bridge.sendMessage(message); + + message.srcOwner = Alice; + vm.expectRevert(Bridge.B_INVALID_USER.selector); + bridge.sendMessage(message); + + message.destOwner = Bob; + vm.expectRevert(Bridge.B_INVALID_CHAINID.selector); + bridge.sendMessage(message); + + message.destChainId = remoteChainId + 1; + vm.expectRevert(Bridge.B_INVALID_CHAINID.selector); + bridge.sendMessage(message); + + message.destChainId = uint64(block.chainid); + vm.expectRevert(Bridge.B_INVALID_CHAINID.selector); + bridge.sendMessage(message); + + // an bridge has been registered for remoteChainId + message.destChainId = remoteChainId; + bridge.sendMessage(message); // id = 0 + + message.value = 10_000_000; + message.gasLimit = 20_000_000; + message.fee = 30_000_000; + vm.expectRevert(Bridge.B_INVALID_VALUE.selector); + + message.data = "hello"; + bridge.sendMessage(message); + + (bytes32 mhash, IBridge.Message memory m) = bridge.sendMessage{ value: 40_000_000 }(message); + assertEq(m.id, 1); + assertEq(m.srcOwner, Alice); // Not Carol + assertEq(m.srcChainId, block.chainid); + assertEq(mhash, bridge.hashMessage(m)); + + m.id = 0; + m.from = address(0); + m.srcChainId = 0; + assertEq(keccak256(abi.encode(message)), keccak256(abi.encode(m))); + + (bytes32 mhash2, IBridge.Message memory m2) = + bridge.sendMessage{ value: 40_000_000 }(message); + + assertEq(m2.id, 2); + assertTrue(mhash2 != mhash); + } + + function test_bridge2_sendMessage_invocationGasLimit() + public + transactedBy(Carol) + assertSameTotalBalance + { + IBridge.Message memory message; + message.srcOwner = Alice; + message.destOwner = Bob; + message.destChainId = remoteChainId; + message.fee = 1; + vm.expectRevert(Bridge.B_INVALID_FEE.selector); + bridge.sendMessage(message); + + uint32 minGasLimit = bridge.getMessageMinGasLimit(message.data.length); + console2.log("minGasLimit:", minGasLimit); + + message.gasLimit = minGasLimit - 1; + vm.expectRevert(Bridge.B_INVALID_GAS_LIMIT.selector); + bridge.sendMessage(message); + + message.gasLimit = minGasLimit; + vm.expectRevert(Bridge.B_INVALID_GAS_LIMIT.selector); + bridge.sendMessage(message); + + message.gasLimit = minGasLimit + 1; + vm.expectRevert(Bridge.B_INVALID_VALUE.selector); + bridge.sendMessage(message); + + bridge.sendMessage{ value: message.fee }(message); + + message.fee = 0; + bridge.sendMessage(message); + } + + function test_bridge2_sendMessage_missing_local_signal_service() + public + dealEther(Alice) + assertSameTotalBalance + { + IBridge.Message memory message; + message.srcOwner = Alice; + message.destOwner = Bob; + message.destChainId = remoteChainId; + + vm.prank(Alice); + bridge.sendMessage(message); + + vm.prank(owner); + addressManager.setAddress(uint64(block.chainid), "signal_service", address(0)); + + vm.prank(Alice); + vm.expectRevert(); + bridge.sendMessage(message); + } +} diff --git a/packages/protocol/test/bridge/QuotaManager.t.sol b/packages/protocol/test/bridge/QuotaManager.t.sol new file mode 100644 index 0000000000..be308c6e09 --- /dev/null +++ b/packages/protocol/test/bridge/QuotaManager.t.sol @@ -0,0 +1,74 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.24; + +import "../TaikoTest.sol"; + +contract QuotaManagerTest is TaikoTest { + AddressManager public am; + QuotaManager public qm; + + address bridge = vm.addr(0x100); + + function setUp() public { + vm.startPrank(Alice); // The owner + vm.deal(Alice, 100 ether); + + am = AddressManager( + deployProxy({ + name: "address_manager", + impl: address(new AddressManager()), + data: abi.encodeCall(AddressManager.init, (address(0))) + }) + ); + + am.setAddress(uint64(block.chainid), LibStrings.B_BRIDGE, bridge); + + qm = QuotaManager( + payable( + deployProxy({ + name: "quota_manager", + impl: address(new QuotaManager()), + data: abi.encodeCall(QuotaManager.init, (address(0), address(am), 24 hours)) + }) + ) + ); + + vm.stopPrank(); + } + + function test_quota_manager_consume_configged() public { + address Ether = address(0); + assertEq(qm.availableQuota(Ether, 0), type(uint256).max); + + vm.expectRevert(); + qm.updateQuota(Ether, 10 ether); + + vm.prank(Alice); + qm.updateQuota(Ether, 10 ether); + assertEq(qm.availableQuota(address(0), 0), 10 ether); + + vm.expectRevert(AddressResolver.RESOLVER_DENIED.selector); + qm.consumeQuota(Ether, 5 ether); + + vm.prank(bridge); + qm.consumeQuota(Ether, 6 ether); + assertEq(qm.availableQuota(Ether, 0), 4 ether); + + assertEq(qm.availableQuota(Ether, 3 hours), 4 ether + 10 ether * 3 / 24); + + vm.warp(block.timestamp + 3 hours); + assertEq(qm.availableQuota(Ether, 0), 4 ether + 10 ether * 3 / 24); + + vm.warp(block.timestamp + 24 hours); + assertEq(qm.availableQuota(Ether, 0), 10 ether); + } + + function test_quota_manager_consume_unconfigged() public { + address token = address(999); + assertEq(qm.availableQuota(token, 0), type(uint256).max); + + vm.prank(bridge); + qm.consumeQuota(token, 6 ether); + assertEq(qm.availableQuota(token, 0), type(uint256).max); + } +} diff --git a/packages/protocol/test/team/airdrop/ERC20Airdrop2.t.sol b/packages/protocol/test/team/airdrop/ERC20Airdrop2.t.sol deleted file mode 100644 index ddd1578447..0000000000 --- a/packages/protocol/test/team/airdrop/ERC20Airdrop2.t.sol +++ /dev/null @@ -1,156 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.24; - -import "../../TaikoTest.sol"; - -contract MyERC20 is ERC20 { - constructor(address owner) ERC20("Taiko Token", "TKO") { - _mint(owner, 1_000_000_000e18); - } -} - -contract MockERC20Airdrop2 is ERC20Airdrop2 { - function _verifyMerkleProof( - bytes32[] calldata, /*proof*/ - bytes32, /*merkleRoot*/ - bytes32 /*value*/ - ) - internal - pure - override - returns (bool) - { - return true; - } -} - -contract TestERC20Airdrop2 is TaikoTest { - address public owner = randAddress(); - - bytes32 public constant merkleRoot = bytes32(uint256(1)); - bytes32[] public merkleProof; - uint64 public claimStart; - uint64 public claimEnd; - - ERC20 token; - ERC20Airdrop2 airdrop2; - - function setUp() public { - claimStart = uint64(block.timestamp + 10); - claimEnd = uint64(block.timestamp + 10_000); - merkleProof = new bytes32[](3); - - token = new MyERC20(address(owner)); - - airdrop2 = ERC20Airdrop2( - deployProxy({ - name: "MockERC20Airdrop", - impl: address(new MockERC20Airdrop2()), - data: abi.encodeCall( - ERC20Airdrop2.init, - (address(0), claimStart, claimEnd, merkleRoot, address(token), owner, 10 days) - ) - }) - ); - - vm.prank(owner, owner); - MyERC20(address(token)).approve(address(airdrop2), 1_000_000_000e18); - vm.roll(block.number + 1); - } - - function test_withdraw_for_airdrop2_withdraw_daily() public { - vm.warp(uint64(block.timestamp + 11)); - - vm.prank(Alice, Alice); - airdrop2.claim(Alice, 100, merkleProof); - - // Try withdraw but not started yet - vm.expectRevert(ERC20Airdrop2.WITHDRAWALS_NOT_ONGOING.selector); - airdrop2.withdraw(Alice); - - // Roll one day after another, for 10 days and see the 100 allowance be withdrawn all and no - // more left for the 11th day - uint256 i = 1; - uint256 balance; - uint256 withdrawable; - for (i = 1; i < 11; i++) { - vm.roll(block.number + 200); - vm.warp(claimEnd + (i * 1 days)); - - (balance, withdrawable) = airdrop2.getBalance(Alice); - - assertEq(balance, 100); - assertEq(withdrawable, 10); - - airdrop2.withdraw(Alice); - // Check Alice balance - assertEq(token.balanceOf(Alice), (i * 10)); - } - - // On the 10th day (midnight), Alice has no claims left - vm.roll(block.number + 200); - vm.warp(claimEnd + (10 days)); - - (balance, withdrawable) = airdrop2.getBalance(Alice); - - assertEq(balance, 100); - assertEq(withdrawable, 0); - - // No effect - airdrop2.withdraw(Alice); - // Check Alice balance - assertEq(token.balanceOf(Alice), 100); - } - - function test_withdraw_for_airdrop2_withdraw_at_the_end() public { - vm.warp(uint64(block.timestamp + 11)); - - vm.prank(Alice, Alice); - airdrop2.claim(Alice, 100, merkleProof); - - // Try withdraw but not started yet - vm.expectRevert(ERC20Airdrop2.WITHDRAWALS_NOT_ONGOING.selector); - airdrop2.withdraw(Alice); - - // Roll 10 day after - vm.roll(block.number + 200); - vm.warp(claimEnd + 10 days); - - (uint256 balance, uint256 withdrawable) = airdrop2.getBalance(Alice); - - assertEq(balance, 100); - assertEq(withdrawable, 100); - - airdrop2.withdraw(Alice); - - // Check Alice balance - assertEq(token.balanceOf(Alice), 100); - } - - function test_withdraw_for_airdrop2_but_out_of_withdrawal_window() public { - vm.warp(uint64(block.timestamp + 11)); - - vm.prank(Alice, Alice); - airdrop2.claim(Alice, 100, merkleProof); - - // Try withdraw but not started yet - vm.expectRevert(ERC20Airdrop2.WITHDRAWALS_NOT_ONGOING.selector); - airdrop2.withdraw(Alice); - - // Roll 31 day after - vm.roll(block.number + 200); - vm.warp(claimEnd + 10 days + 30 days + 1); // withdrawal window + grace period + 1sec - - (uint256 balance, uint256 withdrawable) = airdrop2.getBalance(Alice); - - // Balance and withdrawable is 100,100 --> bc. it is out of withdrawal window - assertEq(balance, 100); - assertEq(withdrawable, 100); - - vm.expectRevert(ERC20Airdrop2.WITHDRAWALS_NOT_ONGOING.selector); - airdrop2.withdraw(Alice); - - // Check Alice balance - assertEq(token.balanceOf(Alice), 0); - } -} diff --git a/packages/protocol/test/tokenvault/BridgedERC20.t.sol b/packages/protocol/test/tokenvault/BridgedERC20.t.sol index 689a995db4..6c92727d8c 100644 --- a/packages/protocol/test/tokenvault/BridgedERC20.t.sol +++ b/packages/protocol/test/tokenvault/BridgedERC20.t.sol @@ -24,15 +24,6 @@ contract TestBridgedERC20 is TaikoTest { vm.expectRevert(); btoken.changeMigrationStatus(Emma, false); - vm.startPrank(owner); - btoken.changeMigrationStatus(Emma, false); - btoken.changeMigrationStatus(address(0), false); - btoken.changeMigrationStatus(address(0), true); - btoken.changeMigrationStatus(Emma, true); - vm.expectRevert(); - btoken.changeMigrationStatus(Emma, true); - vm.stopPrank(); - vm.startPrank(vault); btoken.changeMigrationStatus(Frank, false); btoken.changeMigrationStatus(address(0), false); @@ -58,8 +49,7 @@ contract TestBridgedERC20 is TaikoTest { assertEq(btoken.balanceOf(Bob), 1000); vm.stopPrank(); - // Owner cannot burn/mint - vm.expectRevert(); + // Owner can burn/mint vm.prank(owner, owner); btoken.mint(Bob, 1000); } @@ -103,18 +93,17 @@ contract TestBridgedERC20 is TaikoTest { newToken.mint(Bob, 10); vm.prank(owner); - vm.expectRevert(); newToken.mint(Bob, 10); vm.prank(vault); newToken.mint(Bob, 15); - assertEq(newToken.balanceOf(Bob), 225); + assertEq(newToken.balanceOf(Bob), 235); // Vault can only burn if it owns the tokens vm.prank(vault); vm.expectRevert(); newToken.burn(25); - assertEq(newToken.balanceOf(Bob), 225); + assertEq(newToken.balanceOf(Bob), 235); // Imitate current bridge-back operation, as Bob gave approval (for bridging back) and then // ERC20Vault does the "transfer and burn" @@ -128,7 +117,7 @@ contract TestBridgedERC20 is TaikoTest { vm.prank(vault); newToken.burn(25); - assertEq(newToken.balanceOf(Bob), 200); + assertEq(newToken.balanceOf(Bob), 210); } function deployBridgedToken(string memory name) internal returns (BridgedERC20) { diff --git a/packages/protocol/test/tokenvault/ERC20Vault.t.sol b/packages/protocol/test/tokenvault/ERC20Vault.t.sol index 81ba2482c7..af8ed079c9 100644 --- a/packages/protocol/test/tokenvault/ERC20Vault.t.sol +++ b/packages/protocol/test/tokenvault/ERC20Vault.t.sol @@ -97,9 +97,7 @@ contract TestERC20Vault is TaikoTest { deployProxy({ name: "taiko_token", impl: address(new TaikoToken()), - data: abi.encodeCall( - TaikoToken.init, (address(0), "Taiko Token", "TTKOk", address(this)) - ) + data: abi.encodeCall(TaikoToken.init, (address(0), address(this))) }) ); @@ -366,8 +364,8 @@ contract TestERC20Vault is TaikoTest { assertEq(bridgedAddressAfter != address(0), true); BridgedERC20 bridgedERC20 = BridgedERC20(bridgedAddressAfter); - assertEq(bridgedERC20.name(), unicode"Bridged ERC20 (â­€31337)"); - assertEq(bridgedERC20.symbol(), unicode"ERC20.t"); + assertEq(bridgedERC20.name(), "ERC20"); + assertEq(bridgedERC20.symbol(), "ERC20"); assertEq(bridgedERC20.balanceOf(Bob), amount); } diff --git a/packages/relayer/pkg/http/get_recommended_processing_fees.go b/packages/relayer/pkg/http/get_recommended_processing_fees.go index 0fd733f7e1..63887d8766 100644 --- a/packages/relayer/pkg/http/get_recommended_processing_fees.go +++ b/packages/relayer/pkg/http/get_recommended_processing_fees.go @@ -76,7 +76,7 @@ const ( Layer2 layer = iota ) -// getBlockInfoResponse +// GetRecommendedProcessingFees // // returns block info for the chains // diff --git a/packages/relayer/pkg/proof/types.go b/packages/relayer/pkg/proof/types.go index 457e55d584..0a90df91ab 100644 --- a/packages/relayer/pkg/proof/types.go +++ b/packages/relayer/pkg/proof/types.go @@ -35,7 +35,7 @@ func (q *Bytes) UnmarshalText(input []byte) error { type Slice [][]byte -// MarshalText implements encoding.TextMarshaler +// MarshalJSON implements encoding.TextMarshaler func (s Slice) MarshalJSON() ([]byte, error) { bs := make([]hexutil.Bytes, len(s)) for i, b := range s { @@ -45,7 +45,7 @@ func (s Slice) MarshalJSON() ([]byte, error) { return json.Marshal(bs) } -// UnmarshalText implements encoding.TextUnmarshaler. +// UnmarshalJSON implements encoding.TextUnmarshaler. func (s *Slice) UnmarshalJSON(data []byte) error { var bs []hexutil.Bytes if err := json.Unmarshal(data, &bs); err != nil { diff --git a/packages/relayer/processor/process_message.go b/packages/relayer/processor/process_message.go index bc609f8a01..0ce7b430b6 100644 --- a/packages/relayer/processor/process_message.go +++ b/packages/relayer/processor/process_message.go @@ -98,15 +98,11 @@ func (p *Processor) processMessage( return false, msgBody.TimesRetried, err } - receipt, err := p.sendProcessMessageCall(ctx, msgBody.Event, encodedSignalProof) + _, err = p.sendProcessMessageCall(ctx, msgBody.Event, encodedSignalProof) if err != nil { return false, msgBody.TimesRetried, err } - if receipt.Status != types.ReceiptStatusSuccessful { - return false, msgBody.TimesRetried, err - } - messageStatus, err := p.destBridge.MessageStatus(&bind.CallOpts{ Context: ctx, }, msgBody.Event.MsgHash) @@ -412,6 +408,9 @@ func (p *Processor) sendProcessMessageCall( if receipt.Status != types.ReceiptStatusSuccessful { relayer.MessageSentEventsProcessedReverted.Inc() + slog.Warn("Transaction reverted", "txHash", hex.EncodeToString(receipt.TxHash.Bytes()), + "srcTxHash", event.Raw.TxHash.Hex(), + "status", receipt.Status) return nil, errTxReverted } diff --git a/packages/taikoon-ui/package.json b/packages/taikoon-ui/package.json index ddba8f43c3..abbb4b70cf 100644 --- a/packages/taikoon-ui/package.json +++ b/packages/taikoon-ui/package.json @@ -37,7 +37,7 @@ "prettier-plugin-svelte": "^3.1.2", "raw-body": "^2.5.2", "svelte": "^4.2.7", - "svelte-check": "^3.6.0", + "svelte-check": "^3.7.1", "svelte-copy": "^1.4.2", "svelte-i18n": "^4.0.0", "svelte-scrolling": "^1.4.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8919ea805f..4702da6113 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,27 +21,30 @@ importers: packages/bridge-ui: dependencies: + '@moralisweb3/common-evm-utils': + specifier: ^2.26.1 + version: 2.26.1(debug@4.3.4) '@wagmi/connectors': - specifier: ^4.1.18 - version: 4.1.18(@wagmi/core@2.8.0)(react-native@0.73.4)(react@18.2.0)(typescript@5.4.3)(viem@2.9.29) + specifier: ^4.3.1 + version: 4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) '@wagmi/core': - specifier: ^2.8.0 - version: 2.8.0(react@18.2.0)(typescript@5.4.3)(viem@2.9.29) + specifier: ^2.8.1 + version: 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) '@walletconnect/ethereum-provider': specifier: ^2.12.2 - version: 2.12.2(react@18.2.0) + version: 2.12.2(react@18.3.1) '@walletconnect/modal': specifier: ^2.6.2 - version: 2.6.2(react@18.2.0) + version: 2.6.2(react@18.3.1) '@web3modal/wagmi': specifier: ^4.1.11 - version: 4.1.11(@wagmi/connectors@4.1.18)(@wagmi/core@2.8.0)(react@18.2.0)(viem@2.9.29) + version: 4.1.11(@wagmi/connectors@4.3.3)(@wagmi/core@2.9.1)(react@18.3.1)(viem@2.9.31) '@zerodevx/svelte-toast': specifier: ^0.9.5 - version: 0.9.5(svelte@4.2.12) + version: 0.9.5(svelte@4.2.15) axios: specifier: ^1.6.7 - version: 1.6.7(debug@4.3.4) + version: 1.6.8(debug@4.3.4) buffer: specifier: ^6.0.3 version: 6.0.3 @@ -51,28 +54,31 @@ importers: events: specifier: ^3.3.0 version: 3.3.0 + moralis: + specifier: ^2.26.1 + version: 2.26.1(debug@4.3.4) object-hash: specifier: ^3.0.0 version: 3.0.0 svelte-i18n: - specifier: ^3.7.4 - version: 3.7.4(svelte@4.2.12) + specifier: ^4.0.0 + version: 4.0.0(svelte@4.2.15) viem: specifier: ^2.9.29 - version: 2.9.29(typescript@5.4.3)(zod@3.22.4) + version: 2.9.31(typescript@5.4.5)(zod@3.23.6) devDependencies: '@playwright/test': specifier: ^1.43.1 version: 1.43.1 '@sveltejs/adapter-auto': specifier: ^3.2.0 - version: 3.2.0(@sveltejs/kit@1.30.4) - '@sveltejs/adapter-static': - specifier: ^2.0.3 - version: 2.0.3(@sveltejs/kit@1.30.4) + version: 3.2.0(@sveltejs/kit@2.5.7) '@sveltejs/kit': - specifier: ^1.30.4 - version: 1.30.4(svelte@4.2.12)(vite@4.5.3) + specifier: ^2.5.7 + version: 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11) + '@sveltejs/vite-plugin-svelte': + specifier: ^3.1.0 + version: 3.1.0(svelte@4.2.15)(vite@5.2.11) '@types/debug': specifier: ^4.1.12 version: 4.1.12 @@ -80,44 +86,44 @@ importers: specifier: ^3.0.6 version: 3.0.6 '@typescript-eslint/eslint-plugin': - specifier: ^7.4.0 - version: 7.4.0(@typescript-eslint/parser@7.7.0)(eslint@8.56.0)(typescript@5.4.3) + specifier: ^7.8.0 + version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: ^7.7.0 - version: 7.7.0(eslint@8.56.0)(typescript@5.4.3) + specifier: ^7.8.0 + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) '@vitest/coverage-v8': specifier: ^1.4.0 - version: 1.4.0(vitest@0.32.4) + version: 1.6.0(vitest@1.6.0) '@wagmi/cli': specifier: ^2.1.4 - version: 2.1.4(typescript@5.4.3) + version: 2.1.4(typescript@5.4.5) abitype: specifier: ^1.0.2 - version: 1.0.2(typescript@5.4.3) + version: 1.0.2(typescript@5.4.5) ajv: specifier: ^8.12.0 - version: 8.12.0 + version: 8.13.0 autoprefixer: specifier: ^10.4.18 - version: 10.4.18(postcss@8.4.38) + version: 10.4.19(postcss@8.4.38) daisyui: - specifier: ^4.7.2 - version: 4.7.2(postcss@8.4.38) + specifier: ^4.10.3 + version: 4.10.5(postcss@8.4.38) dotenv: specifier: ^16.4.5 version: 16.4.5 eslint: specifier: ^8.56.0 - version: 8.56.0 + version: 8.57.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.56.0) + version: 9.1.0(eslint@8.57.0) eslint-plugin-simple-import-sort: specifier: ^12.0.0 - version: 12.0.0(eslint@8.56.0) + version: 12.1.0(eslint@8.57.0) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.38.0(eslint@8.56.0)(svelte@4.2.12) + version: 2.38.0(eslint@8.57.0)(svelte@4.2.15) ethereum-address: specifier: ^0.0.4 version: 0.0.4 @@ -134,14 +140,14 @@ importers: specifier: ^3.2.5 version: 3.2.5 prettier-plugin-svelte: - specifier: ^3.2.2 - version: 3.2.2(prettier@3.2.5)(svelte@4.2.12) + specifier: ^3.2.3 + version: 3.2.3(prettier@3.2.5)(svelte@4.2.15) svelte: - specifier: ^4.2.12 - version: 4.2.12 + specifier: ^4.2.15 + version: 4.2.15 svelte-check: - specifier: ^3.6.9 - version: 3.6.9(@babel/core@7.23.9)(postcss@8.4.38)(svelte@4.2.12) + specifier: ^3.7.1 + version: 3.7.1(@babel/core@7.24.5)(postcss@8.4.38)(svelte@4.2.15) tailwindcss: specifier: ^3.4.3 version: 3.4.3 @@ -153,22 +159,22 @@ importers: version: 2.6.2 typescript: specifier: ^5.4.3 - version: 5.4.3 + version: 5.4.5 vite: - specifier: ^4.5.3 - version: 4.5.3(@types/node@20.12.7) + specifier: ^5.2.10 + version: 5.2.11(@types/node@20.12.8) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.4.3)(vite@4.5.3) + version: 4.3.2(typescript@5.4.5)(vite@5.2.11) vitest: - specifier: ^0.32.4 - version: 0.32.4(jsdom@24.0.0) + specifier: ^1.5.3 + version: 1.6.0(jsdom@24.0.0) vitest-fetch-mock: specifier: ^0.2.2 - version: 0.2.2(vitest@0.32.4) + version: 0.2.2(vitest@1.6.0) vitest-mock-extended: specifier: 1.3.1 - version: 1.3.1(typescript@5.4.3)(vitest@0.32.4) + version: 1.3.1(typescript@5.4.5)(vitest@1.6.0) packages/eventindexer: {} @@ -180,53 +186,53 @@ importers: dependencies: '@wagmi/core': specifier: ^2.8.0 - version: 2.8.0(react@18.2.0)(typescript@5.4.3)(viem@2.9.29) + version: 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) axios: specifier: ^1.6.7 - version: 1.6.7(debug@4.3.4) + version: 1.6.8(debug@4.3.4) svelte-i18n: specifier: ^4.0.0 - version: 4.0.0(svelte@4.2.13) + version: 4.0.0(svelte@4.2.15) viem: specifier: ^2.9.29 - version: 2.9.29(typescript@5.4.3)(zod@3.22.4) + version: 2.9.31(typescript@5.4.5)(zod@3.23.6) devDependencies: '@playwright/test': specifier: ^1.43.1 version: 1.43.1 '@sveltejs/adapter-auto': specifier: ^3.2.0 - version: 3.2.0(@sveltejs/kit@2.5.5) + version: 3.2.0(@sveltejs/kit@2.5.7) '@sveltejs/kit': specifier: ^2.5.5 - version: 2.5.5(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.13)(vite@4.5.3) + version: 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@4.5.3) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.0 - version: 3.1.0(svelte@4.2.13)(vite@4.5.3) + version: 3.1.0(svelte@4.2.15)(vite@4.5.3) '@tailwindcss/nesting': specifier: 0.0.0-insiders.565cd3e version: 0.0.0-insiders.565cd3e(postcss@8.4.38) '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.4.0(@typescript-eslint/parser@7.7.0)(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.7.0(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) autoprefixer: specifier: ^10.4.18 - version: 10.4.18(postcss@8.4.38) + version: 10.4.19(postcss@8.4.38) daisyui: specifier: ^4.10.1 - version: 4.10.1(postcss@8.4.38) + version: 4.10.5(postcss@8.4.38) eslint: specifier: ^8.56.0 - version: 8.56.0 + version: 8.57.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.56.0) + version: 9.1.0(eslint@8.57.0) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.38.0(eslint@8.56.0)(svelte@4.2.13) + version: 2.38.0(eslint@8.57.0)(svelte@4.2.15) postcss: specifier: ^8.4.38 version: 8.4.38 @@ -235,19 +241,19 @@ importers: version: 16.1.0(postcss@8.4.38) postcss-nesting: specifier: ^12.1.0 - version: 12.1.0(postcss@8.4.38) + version: 12.1.2(postcss@8.4.38) prettier: specifier: ^3.2.5 version: 3.2.5 prettier-plugin-svelte: specifier: ^3.2.2 - version: 3.2.2(prettier@3.2.5)(svelte@4.2.13) + version: 3.2.3(prettier@3.2.5)(svelte@4.2.15) svelte: specifier: ^4.2.13 - version: 4.2.13 + version: 4.2.15 svelte-check: - specifier: ^3.6.9 - version: 3.6.9(@babel/core@7.23.9)(postcss@8.4.38)(svelte@4.2.13) + specifier: ^3.7.1 + version: 3.7.1(@babel/core@7.24.5)(postcss@8.4.38)(svelte@4.2.15) tailwindcss: specifier: ^3.4.3 version: 3.4.3 @@ -256,16 +262,16 @@ importers: version: 2.6.2 typescript: specifier: ^5.4.3 - version: 5.4.3 + version: 5.4.5 vite: specifier: ^4.5.3 - version: 4.5.3(@types/node@20.12.7) + version: 4.5.3 vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.4.3)(vite@4.5.3) + version: 4.3.2(typescript@5.4.5)(vite@4.5.3) vitest: specifier: ^1.5.0 - version: 1.5.0 + version: 1.6.0(jsdom@24.0.0) packages/protocol: dependencies: @@ -293,34 +299,34 @@ importers: devDependencies: '@types/node': specifier: ^20.11.30 - version: 20.12.7 + version: 20.12.8 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.4.0(@typescript-eslint/parser@7.7.0)(eslint@8.55.0)(typescript@5.4.3) + version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.7.0(eslint@8.55.0)(typescript@5.4.3) + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) eslint: specifier: ^8.51.0 - version: 8.55.0 + version: 8.57.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.55.0) + version: 9.1.0(eslint@8.57.0) eslint-config-standard: specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.55.0) + version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.57.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.29.0(@typescript-eslint/parser@7.7.0)(eslint@8.55.0) + version: 2.29.1(@typescript-eslint/parser@7.8.0)(eslint@8.57.0) eslint-plugin-node: specifier: ^11.1.0 - version: 11.1.0(eslint@8.55.0) + version: 11.1.0(eslint@8.57.0) eslint-plugin-prettier: specifier: ^5.1.3 - version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.55.0)(prettier@3.2.5) + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) eslint-plugin-promise: specifier: ^6.1.1 - version: 6.1.1(eslint@8.55.0) + version: 6.1.1(eslint@8.57.0) ethers: specifier: ^5.7.2 version: 5.7.2 @@ -329,13 +335,13 @@ importers: version: 0.8.24 solhint: specifier: ^4.5.4 - version: 4.5.4(typescript@5.4.3) + version: 4.5.4(typescript@5.4.5) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.12.7)(typescript@5.4.3) + version: 10.9.2(@types/node@20.12.8)(typescript@5.4.5) typescript: specifier: ^5.2.2 - version: 5.4.3 + version: 5.4.5 packages/relayer: {} @@ -365,34 +371,34 @@ importers: devDependencies: '@types/node': specifier: ^20.11.30 - version: 20.12.7 + version: 20.12.8 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.4.0(@typescript-eslint/parser@7.7.0)(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.7.0(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) eslint: specifier: ^8.51.0 - version: 8.56.0 + version: 8.57.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.56.0) + version: 9.1.0(eslint@8.57.0) eslint-config-standard: specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.56.0) + version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.57.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.29.0(@typescript-eslint/parser@7.7.0)(eslint@8.56.0) + version: 2.29.1(@typescript-eslint/parser@7.8.0)(eslint@8.57.0) eslint-plugin-node: specifier: ^11.1.0 - version: 11.1.0(eslint@8.56.0) + version: 11.1.0(eslint@8.57.0) eslint-plugin-prettier: specifier: ^5.1.3 - version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5) + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) eslint-plugin-promise: specifier: ^6.1.1 - version: 6.1.1(eslint@8.56.0) + version: 6.1.1(eslint@8.57.0) ethers: specifier: ^5.7.2 version: 5.7.2 @@ -401,13 +407,13 @@ importers: version: 0.8.24 solhint: specifier: ^4.5.4 - version: 4.5.4(typescript@5.4.3) + version: 4.5.4(typescript@5.4.5) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.12.7)(typescript@5.4.3) + version: 10.9.2(@types/node@20.12.8)(typescript@5.4.5) typescript: specifier: ^5.2.2 - version: 5.4.3 + version: 5.4.5 packages/taikoon: dependencies: @@ -453,34 +459,34 @@ importers: devDependencies: '@types/node': specifier: ^20.11.30 - version: 20.12.7 + version: 20.12.8 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.4.0(@typescript-eslint/parser@7.7.0)(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.7.0 - version: 7.7.0(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) eslint: specifier: ^8.51.0 - version: 8.56.0 + version: 8.57.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.56.0) + version: 9.1.0(eslint@8.57.0) eslint-config-standard: specifier: ^17.1.0 - version: 17.1.0(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.56.0) + version: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.57.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.29.0(@typescript-eslint/parser@7.7.0)(eslint@8.56.0) + version: 2.29.1(@typescript-eslint/parser@7.8.0)(eslint@8.57.0) eslint-plugin-node: specifier: ^11.1.0 - version: 11.1.0(eslint@8.56.0) + version: 11.1.0(eslint@8.57.0) eslint-plugin-prettier: specifier: ^5.1.3 - version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5) + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) eslint-plugin-promise: specifier: ^6.1.1 - version: 6.1.1(eslint@8.56.0) + version: 6.1.1(eslint@8.57.0) ethers: specifier: ^5.7.2 version: 5.7.2 @@ -489,13 +495,13 @@ importers: version: 0.8.24 solhint: specifier: ^4.5.4 - version: 4.5.4(typescript@5.4.3) + version: 4.5.4(typescript@5.4.5) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.12.7)(typescript@5.4.3) + version: 10.9.2(@types/node@20.12.8)(typescript@5.4.5) typescript: specifier: ^5.2.2 - version: 5.4.3 + version: 5.4.5 packages/taikoon-ui: dependencies: @@ -504,13 +510,13 @@ importers: version: 1.0.6 '@wagmi/cli': specifier: ^2.1.4 - version: 2.1.4(typescript@5.4.3) + version: 2.1.4(typescript@5.4.5) '@wagmi/connectors': specifier: ^4.1.18 - version: 4.1.18(@wagmi/core@2.8.0)(react-native@0.73.4)(react@18.2.0)(typescript@5.4.3)(viem@2.9.29) + version: 4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) '@wagmi/core': specifier: ^2.8.0 - version: 2.8.0(react@18.2.0)(typescript@5.4.3)(viem@2.9.29) + version: 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) '@web3modal/common': specifier: ^4.1.1 version: 4.1.11 @@ -519,19 +525,19 @@ importers: version: 4.1.11 '@web3modal/wagmi': specifier: ^4.1.1 - version: 4.1.11(@wagmi/connectors@4.1.18)(@wagmi/core@2.8.0)(react@18.2.0)(viem@2.9.29) + version: 4.1.11(@wagmi/connectors@4.3.3)(@wagmi/core@2.9.1)(react@18.3.1)(viem@2.9.31) '@zerodevx/svelte-toast': specifier: ^0.9.5 - version: 0.9.5(svelte@4.2.13) + version: 0.9.5(svelte@4.2.15) autoprefixer: specifier: ^10.4.19 version: 10.4.19(postcss@8.4.38) daisyui: specifier: ^4.10.1 - version: 4.10.1(postcss@8.4.38) + version: 4.10.5(postcss@8.4.38) dayjs: specifier: ^1.11.10 - version: 1.11.10 + version: 1.11.11 debug: specifier: ^4.3.4 version: 4.3.4 @@ -549,53 +555,53 @@ importers: version: 3.4.3 viem: specifier: ^2.9.29 - version: 2.9.29(typescript@5.4.3)(zod@3.22.4) + version: 2.9.31(typescript@5.4.5)(zod@3.23.6) devDependencies: '@chromatic-com/storybook': specifier: ^1.3.1 - version: 1.3.3(react@18.2.0) + version: 1.3.3(react@18.3.1) '@playwright/test': specifier: ^1.28.1 version: 1.43.1 '@sveltejs/adapter-auto': specifier: ^3.0.0 - version: 3.2.0(@sveltejs/kit@2.5.5) + version: 3.2.0(@sveltejs/kit@2.5.7) '@sveltejs/kit': specifier: ^2.0.0 - version: 2.5.5(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.13)(vite@5.1.3) + version: 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11) '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 - version: 3.1.0(svelte@4.2.13)(vite@5.1.3) + version: 3.1.0(svelte@4.2.15)(vite@5.2.11) '@types/eslint': specifier: ^8.56.0 version: 8.56.10 '@types/node': specifier: ^20.12.7 - version: 20.12.7 + version: 20.12.8 '@typescript-eslint/eslint-plugin': specifier: ^7.0.0 - version: 7.4.0(@typescript-eslint/parser@7.7.0)(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.0.0 - version: 7.7.0(eslint@8.56.0)(typescript@5.4.3) + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) convert-csv-to-json: specifier: ^2.44.0 version: 2.46.0 eslint: specifier: ^8.56.0 - version: 8.56.0 + version: 8.57.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.56.0) + version: 9.1.0(eslint@8.57.0) eslint-plugin-simple-import-sort: specifier: ^12.0.0 - version: 12.0.0(eslint@8.56.0) + version: 12.1.0(eslint@8.57.0) eslint-plugin-storybook: specifier: ^0.8.0 - version: 0.8.0(eslint@8.56.0)(typescript@5.4.3) + version: 0.8.0(eslint@8.57.0)(typescript@5.4.5) eslint-plugin-svelte: specifier: ^2.38.0 - version: 2.38.0(eslint@8.56.0)(svelte@4.2.13) + version: 2.38.0(eslint@8.57.0)(svelte@4.2.15) p-map: specifier: ^7.0.2 version: 7.0.2 @@ -604,25 +610,25 @@ importers: version: 3.2.5 prettier-plugin-svelte: specifier: ^3.1.2 - version: 3.2.2(prettier@3.2.5)(svelte@4.2.13) + version: 3.2.3(prettier@3.2.5)(svelte@4.2.15) raw-body: specifier: ^2.5.2 version: 2.5.2 svelte: specifier: ^4.2.7 - version: 4.2.13 + version: 4.2.15 svelte-check: - specifier: ^3.6.0 - version: 3.6.9(@babel/core@7.23.9)(postcss@8.4.38)(svelte@4.2.13) + specifier: ^3.7.1 + version: 3.7.1(@babel/core@7.24.5)(postcss@8.4.38)(svelte@4.2.15) svelte-copy: specifier: ^1.4.2 - version: 1.4.2(svelte@4.2.13) + version: 1.4.2(svelte@4.2.15) svelte-i18n: specifier: ^4.0.0 - version: 4.0.0(svelte@4.2.13) + version: 4.0.0(svelte@4.2.15) svelte-scrolling: specifier: ^1.4.0 - version: 1.4.0(svelte@4.2.13) + version: 1.4.0(svelte@4.2.15) tailwindcss-image-rendering: specifier: ^1.0.2 version: 1.0.2 @@ -631,27 +637,22 @@ importers: version: 2.6.2 typescript: specifier: ^5.0.0 - version: 5.4.3 + version: 5.4.5 vite: specifier: ^5.0.3 - version: 5.1.3(@types/node@20.12.7) + version: 5.2.11(@types/node@20.12.8) vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.4.3)(vite@5.1.3) + version: 4.3.2(typescript@5.4.5)(vite@5.2.11) vitest: specifier: ^1.2.0 - version: 1.5.0(@types/node@20.12.7) + version: 1.6.0(@types/node@20.12.8) which: specifier: ^4.0.0 version: 4.0.0 packages: - /@aashutoshrathi/word-wrap@1.2.6: - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - dev: true - /@adraffy/ens-normalize@1.10.0: resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} @@ -659,38 +660,38 @@ packages: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - /@babel/code-frame@7.23.5: - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + /@babel/code-frame@7.24.2: + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 + '@babel/highlight': 7.24.5 + picocolors: 1.0.0 - /@babel/compat-data@7.23.5: - resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + /@babel/compat-data@7.24.4: + resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} engines: {node: '>=6.9.0'} - /@babel/core@7.23.9: - resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} + /@babel/core@7.24.5: + resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.5 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helpers': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helpers': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -699,12 +700,12 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator@7.23.6: - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + /@babel/generator@7.24.5: + resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 - '@jridgewell/gen-mapping': 0.3.3 + '@babel/types': 7.24.5 + '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 @@ -712,64 +713,64 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 dev: false /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 dev: false /@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/compat-data': 7.24.4 '@babel/helper-validator-option': 7.23.5 browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.23.10(@babel/core@7.23.9): - resolution: {integrity: sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==} + /@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.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-member-expression-to-functions': 7.24.5 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-split-export-declaration': 7.24.5 semver: 6.3.1 dev: false - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.9): + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.5): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 dev: false - /@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.23.9): - resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} + /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.5): + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.5 debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.8 @@ -785,1247 +786,1270 @@ packages: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 + '@babel/template': 7.24.0 + '@babel/types': 7.24.5 /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 - /@babel/helper-member-expression-to-functions@7.23.0: - resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + /@babel/helper-member-expression-to-functions@7.24.5: + resolution: {integrity: sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 dev: false - /@babel/helper-module-imports@7.22.15: - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + /@babel/helper-module-imports@7.24.3: + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + /@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.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 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.24.5 + '@babel/helper-split-export-declaration': 7.24.5 + '@babel/helper-validator-identifier': 7.24.5 /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 dev: false - /@babel/helper-plugin-utils@7.22.5: - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + /@babel/helper-plugin-utils@7.24.5: + resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==} engines: {node: '>=6.9.0'} dev: false - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.9): + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.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.9 + '@babel/core': 7.24.5 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.22.20 + '@babel/helper-wrap-function': 7.24.5 dev: false - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.9): - resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.24.5 '@babel/helper-optimise-call-expression': 7.22.5 dev: false - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + /@babel/helper-simple-access@7.24.5: + resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.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.23.9 + '@babel/types': 7.24.5 dev: false - /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + /@babel/helper-split-export-declaration@7.24.5: + resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 - /@babel/helper-string-parser@7.23.4: - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + /@babel/helper-string-parser@7.24.1: + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} engines: {node: '>=6.9.0'} - requiresBuild: true - /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + /@babel/helper-validator-identifier@7.24.5: + resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} 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.22.20: - resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + /@babel/helper-wrap-function@7.24.5: + resolution: {integrity: sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 + '@babel/template': 7.24.0 + '@babel/types': 7.24.5 dev: false - /@babel/helpers@7.23.9: - resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} + /@babel/helpers@7.24.5: + resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 transitivePeerDependencies: - supports-color - /@babel/highlight@7.23.4: - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + /@babel/highlight@7.24.5: + resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.24.5 chalk: 2.4.2 js-tokens: 4.0.0 + picocolors: 1.0.0 - /@babel/parser@7.23.9: - resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} + /@babel/parser@7.24.5: + resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 + + /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.5 + dev: false - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) dev: false - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.9): - resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.23.9): + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.24.5): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} 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-async-generator-functions instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.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.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) dev: false - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.9): + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.5): 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.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + dev: false + + /@babel/plugin-proposal-export-default-from@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-+0hrgGGV3xyYIjOrD/bUZk/iUwOIGuoANfRfVg1cPhYBxF+TIXSEcc42DqzBICmWsnAQ+SfKedY0bj8QD+LuMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.5) dev: false - /@babel/plugin-proposal-export-default-from@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==} + /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.24.5): + resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} 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-logical-assignment-operators instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) dev: false - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9): + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.5): 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.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) dev: false - /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.23.9): + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.24.5): 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.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) dev: false - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.9): + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.5): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} 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-object-rest-spread instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.5 '@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.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) dev: false - /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.23.9): + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.24.5): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} 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-catch-binding instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) dev: false - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9): + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.5): 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.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) dev: false - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 dev: false - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.9): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.5): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.9): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.5): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.9): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.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.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-export-default-from@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==} + /@babel/plugin-syntax-export-default-from@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-cNXSxv9eTkGUtd0PsNMK8Yx5xeScxfpWOUAxE+ZPAXXEcAMOC3fk7LRdXq5fvpra2pLx2p1YtkAhpUbB2SwaRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==} + /@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} + /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} + /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.9): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.5): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.9): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.5): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.9): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.5): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.9): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.5): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.9): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.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.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.9): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.5): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} + /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.23.9): - resolution: {integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==} + /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.5): + resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.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.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) dev: false - /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} + /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@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.9) + '@babel/core': 7.24.5 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) dev: false - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} + /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} + /@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} + /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} + /@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.5): + resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) dev: false - /@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.9): - resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} + /@babel/plugin-transform-classes@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) - '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) + '@babel/helper-split-export-declaration': 7.24.5 globals: 11.12.0 dev: false - /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} + /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.23.9 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/template': 7.24.0 dev: false - /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} + /@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} + /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} + /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} + /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) dev: false - /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} + /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} + /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) dev: false - /@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==} + /@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) dev: false - /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.9): - resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} + /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: false - /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} + /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} + /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) dev: false - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} + /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} + /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) dev: false - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} + /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} + /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-simple-access': 7.24.5 dev: false - /@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.23.9): - resolution: {integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==} + /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-identifier': 7.24.5 dev: false - /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} + /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.9): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.5): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} + /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} + /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) dev: false - /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} + /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) dev: false - /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} + /@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@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.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) dev: false - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} + /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) dev: false - /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} + /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) dev: false - /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} + /@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) dev: false - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} + /@babel/plugin-transform-parameters@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} + /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} + /@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) dev: false - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} + /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} + /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} + /@babel/plugin-transform-react-jsx-self@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-RtCJoUO2oYrYwFPtR1/jkoBEcFuI1ae9a9IMxeyAVa3a1Ap4AnxmyIKG2b2FaJKqkidw/0cxRbWN+HOs6ZWd1w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} + /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.9): + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.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.9 + '@babel/core': 7.24.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.9) - '@babel/types': 7.23.9 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) + '@babel/types': 7.24.5 dev: false - /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} + /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 regenerator-transform: 0.15.2 dev: false - /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-runtime@7.23.9(@babel/core@7.23.9): - resolution: {integrity: sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==} + /@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.5): + resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.9) - babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.9) - babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.5 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} + /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} + /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: false - /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} + /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} + /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} + /@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.9): - resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} + /@babel/plugin-transform-typescript@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5) dev: false - /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} + /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} + /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} + /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} + /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 dev: false - /@babel/preset-env@7.23.9(@babel/core@7.23.9): - resolution: {integrity: sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==} + /@babel/preset-env@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.5 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.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.9) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.23.9) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.23.9) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.9) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.9) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.23.9) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.9) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.9) - babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.9) - babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.9) - babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.9) - core-js-compat: 3.36.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.5) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.5) + '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.5) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.5) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) + core-js-compat: 3.37.0 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /@babel/preset-flow@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==} + /@babel/preset-flow@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5) dev: false - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.9): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.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.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.23.9 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/types': 7.24.5 esutils: 2.0.3 dev: false - /@babel/preset-typescript@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} + /@babel/preset-typescript@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9) + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5) dev: false - /@babel/register@7.23.7(@babel/core@7.23.9): + /@babel/register@7.23.7(@babel/core@7.24.5): resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -2037,44 +2061,44 @@ packages: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: false - /@babel/runtime@7.23.9: - resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} + /@babel/runtime@7.24.5: + resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 dev: false - /@babel/template@7.23.9: - resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} + /@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.23.9 - '@babel/types': 7.23.9 + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 - /@babel/traverse@7.23.9: - resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} + /@babel/traverse@7.24.5: + resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.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.9 - '@babel/types': 7.23.9 + '@babel/helper-split-export-declaration': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types@7.23.9: - resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} + /@babel/types@7.24.5: + resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-string-parser': 7.24.1 + '@babel/helper-validator-identifier': 7.24.5 to-fast-properties: 2.0.0 /@bcoe/v8-coverage@0.2.3: @@ -2091,14 +2115,14 @@ packages: '@chainsafe/is-ip': 2.0.2 dev: false - /@chromatic-com/storybook@1.3.3(react@18.2.0): + /@chromatic-com/storybook@1.3.3(react@18.3.1): resolution: {integrity: sha512-1y9r691T5vVGDZ0HY3YrCXUnvtrT2YrhDuvDZSvYSNUVpM/Imz6i1dnNMKb3eoI1qRsH55mI4zCt+Iq94NLedQ==} engines: {node: '>=16.0.0', yarn: '>=1.22.18'} dependencies: chromatic: 11.3.0 filesize: 10.1.1 jsonfile: 6.1.0 - react-confetti: 6.1.0(react@18.2.0) + react-confetti: 6.1.0(react@18.3.1) strip-ansi: 7.1.0 transitivePeerDependencies: - '@chromatic-com/cypress' @@ -2116,7 +2140,7 @@ packages: eth-json-rpc-filters: 6.0.1 eventemitter3: 5.0.1 keccak: 3.0.4 - preact: 10.19.5 + preact: 10.21.0 sha.js: 2.4.11 transitivePeerDependencies: - supports-color @@ -2129,22 +2153,22 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.0.15): + /@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.0.16): resolution: {integrity: sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss-selector-parser: ^6.0.13 dependencies: - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: true - /@csstools/selector-specificity@3.0.2(postcss-selector-parser@6.0.15): - resolution: {integrity: sha512-RpHaZ1h9LE7aALeQXmXrJkRG84ZxIsctEN2biEUmFyKpzFM3zZ35eUMcIzZFsw/2olQE6v69+esEqU2f1MKycg==} + /@csstools/selector-specificity@3.0.3(postcss-selector-parser@6.0.16): + resolution: {integrity: sha512-KEPNw4+WW5AVEIyzC80rTbWEUatTW2lXpN8+8ILC8PiPeWPjwUzrPZDIOZ2wwqDmeqOYTdSGyL3+vE5GC3FB3Q==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss-selector-parser: ^6.0.13 dependencies: - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: true /@emnapi/runtime@1.1.1: @@ -2155,120 +2179,6 @@ packages: dev: false optional: true - /@emotion/babel-plugin@11.11.0: - resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} - dependencies: - '@babel/helper-module-imports': 7.22.15 - '@babel/runtime': 7.23.9 - '@emotion/hash': 0.9.1 - '@emotion/memoize': 0.8.1 - '@emotion/serialize': 1.1.3 - babel-plugin-macros: 3.1.0 - convert-source-map: 1.9.0 - escape-string-regexp: 4.0.0 - find-root: 1.1.0 - source-map: 0.5.7 - stylis: 4.2.0 - dev: false - - /@emotion/cache@11.11.0: - resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} - dependencies: - '@emotion/memoize': 0.8.1 - '@emotion/sheet': 1.2.2 - '@emotion/utils': 1.2.1 - '@emotion/weak-memoize': 0.3.1 - stylis: 4.2.0 - dev: false - - /@emotion/hash@0.9.1: - resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} - dev: false - - /@emotion/is-prop-valid@1.2.1: - resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} - dependencies: - '@emotion/memoize': 0.8.1 - dev: false - - /@emotion/memoize@0.8.1: - resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} - dev: false - - /@emotion/react@11.11.3(react@18.2.0): - resolution: {integrity: sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==} - peerDependencies: - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.9 - '@emotion/babel-plugin': 11.11.0 - '@emotion/cache': 11.11.0 - '@emotion/serialize': 1.1.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@emotion/utils': 1.2.1 - '@emotion/weak-memoize': 0.3.1 - hoist-non-react-statics: 3.3.2 - react: 18.2.0 - dev: false - - /@emotion/serialize@1.1.3: - resolution: {integrity: sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==} - dependencies: - '@emotion/hash': 0.9.1 - '@emotion/memoize': 0.8.1 - '@emotion/unitless': 0.8.1 - '@emotion/utils': 1.2.1 - csstype: 3.1.3 - dev: false - - /@emotion/sheet@1.2.2: - resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} - dev: false - - /@emotion/styled@11.11.0(@emotion/react@11.11.3)(react@18.2.0): - resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} - peerDependencies: - '@emotion/react': ^11.0.0-rc.0 - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.23.9 - '@emotion/babel-plugin': 11.11.0 - '@emotion/is-prop-valid': 1.2.1 - '@emotion/react': 11.11.3(react@18.2.0) - '@emotion/serialize': 1.1.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@emotion/utils': 1.2.1 - react: 18.2.0 - dev: false - - /@emotion/unitless@0.8.1: - resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} - dev: false - - /@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0): - resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} - peerDependencies: - react: '>=16.8.0' - dependencies: - react: 18.2.0 - dev: false - - /@emotion/utils@1.2.1: - resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} - dev: false - - /@emotion/weak-memoize@0.3.1: - resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} - dev: false - /@esbuild/aix-ppc64@0.19.12: resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} @@ -2277,6 +2187,15 @@ packages: requiresBuild: true optional: true + /@esbuild/aix-ppc64@0.20.2: + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm64@0.18.20: resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -2294,6 +2213,15 @@ packages: requiresBuild: true optional: true + /@esbuild/android-arm64@0.20.2: + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.18.20: resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -2311,6 +2239,15 @@ packages: requiresBuild: true optional: true + /@esbuild/android-arm@0.20.2: + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64@0.18.20: resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -2328,6 +2265,15 @@ packages: requiresBuild: true optional: true + /@esbuild/android-x64@0.20.2: + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64@0.18.20: resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -2345,6 +2291,15 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-arm64@0.20.2: + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64@0.18.20: resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -2362,6 +2317,15 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-x64@0.20.2: + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64@0.18.20: resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -2379,6 +2343,15 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-arm64@0.20.2: + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64@0.18.20: resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -2396,6 +2369,15 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-x64@0.20.2: + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64@0.18.20: resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -2413,6 +2395,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm64@0.20.2: + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm@0.18.20: resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -2430,6 +2421,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm@0.20.2: + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32@0.18.20: resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -2447,6 +2447,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ia32@0.20.2: + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.18.20: resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -2464,6 +2473,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-loong64@0.20.2: + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el@0.18.20: resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -2481,6 +2499,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-mips64el@0.20.2: + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64@0.18.20: resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -2498,6 +2525,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ppc64@0.20.2: + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64@0.18.20: resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -2515,6 +2551,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-riscv64@0.20.2: + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x@0.18.20: resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -2532,6 +2577,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-s390x@0.20.2: + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64@0.18.20: resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} @@ -2549,6 +2603,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-x64@0.20.2: + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64@0.18.20: resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -2566,6 +2629,15 @@ packages: requiresBuild: true optional: true + /@esbuild/netbsd-x64@0.20.2: + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64@0.18.20: resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -2583,6 +2655,15 @@ packages: requiresBuild: true optional: true + /@esbuild/openbsd-x64@0.20.2: + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64@0.18.20: resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -2600,6 +2681,15 @@ packages: requiresBuild: true optional: true + /@esbuild/sunos-x64@0.20.2: + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64@0.18.20: resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -2617,6 +2707,15 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-arm64@0.20.2: + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32@0.18.20: resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -2634,6 +2733,15 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-ia32@0.20.2: + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64@0.18.20: resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -2651,23 +2759,22 @@ packages: requiresBuild: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.55.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.55.0 - eslint-visitor-keys: 3.4.3 + /@esbuild/win32-x64@0.20.2: + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.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.56.0 + eslint: 8.57.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2693,13 +2800,8 @@ packages: - supports-color dev: true - /@eslint/js@8.55.0: - resolution: {integrity: sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@eslint/js@8.56.0: - resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -2942,7 +3044,6 @@ packages: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 hash.js: 1.1.7 - dev: true /@ethersproject/signing-key@5.7.0: resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} @@ -3032,15 +3133,9 @@ packages: '@ethersproject/strings': 5.7.0 dev: true - /@fastify/busboy@2.1.0: - resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + /@fastify/busboy@2.1.1: + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - - /@formatjs/ecma402-abstract@1.11.4: - resolution: {integrity: sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==} - dependencies: - '@formatjs/intl-localematcher': 0.2.25 - tslib: 2.6.2 dev: false /@formatjs/ecma402-abstract@1.18.2: @@ -3049,25 +3144,11 @@ packages: '@formatjs/intl-localematcher': 0.5.4 tslib: 2.6.2 - /@formatjs/fast-memoize@1.2.1: - resolution: {integrity: sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==} - dependencies: - tslib: 2.6.2 - dev: false - /@formatjs/fast-memoize@2.2.0: resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} dependencies: tslib: 2.6.2 - /@formatjs/icu-messageformat-parser@2.1.0: - resolution: {integrity: sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==} - dependencies: - '@formatjs/ecma402-abstract': 1.11.4 - '@formatjs/icu-skeleton-parser': 1.3.6 - tslib: 2.6.2 - dev: false - /@formatjs/icu-messageformat-parser@2.7.6: resolution: {integrity: sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==} dependencies: @@ -3075,25 +3156,12 @@ packages: '@formatjs/icu-skeleton-parser': 1.8.0 tslib: 2.6.2 - /@formatjs/icu-skeleton-parser@1.3.6: - resolution: {integrity: sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==} - dependencies: - '@formatjs/ecma402-abstract': 1.11.4 - tslib: 2.6.2 - dev: false - /@formatjs/icu-skeleton-parser@1.8.0: resolution: {integrity: sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==} dependencies: '@formatjs/ecma402-abstract': 1.18.2 tslib: 2.6.2 - /@formatjs/intl-localematcher@0.2.25: - resolution: {integrity: sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==} - dependencies: - tslib: 2.6.2 - dev: false - /@formatjs/intl-localematcher@0.5.4: resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} dependencies: @@ -3109,22 +3177,11 @@ packages: '@hapi/hoek': 9.3.0 dev: false - /@humanwhocodes/config-array@0.11.13: - resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - /@humanwhocodes/config-array@0.11.14: resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.2 + '@humanwhocodes/object-schema': 2.0.3 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -3136,12 +3193,8 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.1: - resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} - dev: true - - /@humanwhocodes/object-schema@2.0.2: - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} dev: true /@img/sharp-darwin-arm64@0.33.3: @@ -3332,10 +3385,6 @@ packages: dev: false optional: true - /@ioredis/commands@1.2.0: - resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} - dev: false - /@ipld/dag-cbor@9.2.0: resolution: {integrity: sha512-N14oMy0q4gM6OuZkIpisKe0JBSjf1Jb39VI+7jMLiWX9124u1Z3Fdj/Tag1NA0cVxxqWDh0CqsjcVfOKtelPDA==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} @@ -3393,7 +3442,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.7 + '@types/node': 20.12.8 jest-mock: 29.7.0 dev: false @@ -3403,7 +3452,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.12.7 + '@types/node': 20.12.8 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -3421,7 +3470,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.7 + '@types/node': 20.12.8 '@types/yargs': 15.0.19 chalk: 4.1.2 dev: false @@ -3433,16 +3482,16 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.7 + '@types/node': 20.12.8 '@types/yargs': 17.0.32 chalk: 4.1.2 dev: false - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/set-array': 1.1.2 + '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 @@ -3450,26 +3499,20 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - /@jridgewell/source-map@0.3.5: - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} dependencies: - '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 dev: false /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.22: - resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - /@jridgewell/trace-mapping@0.3.25: resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: @@ -3532,8 +3575,8 @@ packages: uint8arraylist: 2.4.8 dev: false - /@libp2p/interface@1.3.0: - resolution: {integrity: sha512-K72Km0Co1Z+pXpggWuoAvUUbvwZYvjCcywrHj2Ym3jt2anTE3hzL4rlZrrkzA0YhNTRFRiZ04dnu6WMXT5/4+A==} + /@libp2p/interface@1.3.1: + resolution: {integrity: sha512-KJoYP6biAgIHUU3pxaixaaYCvIHZshzXetxfoNigadAZ3hCGuwpdFhk7IABEaI3RgadOOYUwW3MXPbL+cxnXVQ==} dependencies: '@multiformats/multiaddr': 12.2.1 it-pushable: 3.2.3 @@ -3583,7 +3626,6 @@ packages: /@lit/reactive-element@2.0.4: resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==} - requiresBuild: true dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 dev: false @@ -3592,31 +3634,42 @@ packages: resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} engines: {node: '>=14.0.0'} dependencies: - '@metamask/json-rpc-engine': 7.3.2 - '@metamask/safe-event-emitter': 3.0.0 + '@metamask/json-rpc-engine': 7.3.3 + '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 5.0.2 transitivePeerDependencies: - supports-color dev: false - /@metamask/json-rpc-engine@7.3.2: - resolution: {integrity: sha512-dVjBPlni4CoiBpESVqrxh6k4OR14w6GRXKSSXHFuITjuhALE42gNCkXTpL4cjNeOBUgTba3eGe5EI8cyc2QLRg==} + /@metamask/json-rpc-engine@7.3.3: + resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} engines: {node: '>=16.0.0'} dependencies: - '@metamask/rpc-errors': 6.1.0 - '@metamask/safe-event-emitter': 3.0.0 - '@metamask/utils': 8.3.0 + '@metamask/rpc-errors': 6.2.1 + '@metamask/safe-event-emitter': 3.1.1 + '@metamask/utils': 8.4.0 transitivePeerDependencies: - supports-color dev: false - /@metamask/object-multiplex@1.3.0: - resolution: {integrity: sha512-czcQeVYdSNtabd+NcYQnrM69MciiJyd1qvKH8WM2Id3C0ZiUUX5Xa/MK+/VUk633DBhVOwdNzAKIQ33lGyA+eQ==} - engines: {node: '>=12.0.0'} + /@metamask/json-rpc-middleware-stream@6.0.2: + resolution: {integrity: sha512-jtyx3PRfc1kqoLpYveIVQNwsxYKefc64/LCl9h9Da1m3nUKEvypbYuXSIwi237qvOjKmNHQKsDOZg6f4uBf62Q==} + engines: {node: '>=16.0.0'} + dependencies: + '@metamask/json-rpc-engine': 7.3.3 + '@metamask/safe-event-emitter': 3.1.1 + '@metamask/utils': 8.4.0 + readable-stream: 3.6.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@metamask/object-multiplex@2.0.0: + resolution: {integrity: sha512-+ItrieVZie3j2LfYE0QkdW3dsEMfMEp419IGx1zyeLqjRZ14iQUPRO0H6CGgfAAoC0x6k2PfCAGRwJUA9BMrqA==} + engines: {node: ^16.20 || ^18.16 || >=20} dependencies: - end-of-stream: 1.4.4 once: 1.4.0 - readable-stream: 2.3.8 + readable-stream: 3.6.2 dev: false /@metamask/onboarding@1.0.1: @@ -3625,39 +3678,31 @@ packages: bowser: 2.11.0 dev: false - /@metamask/post-message-stream@6.2.0: - resolution: {integrity: sha512-WunZ0bruClF862mvbKQGETn5SM0XKGmocPMQR1Ew6sYix9/FDzeoZnoI8RkXk01E+70FCdxhTE/r8kk5SFOuTw==} - engines: {node: '>=14.0.0'} - dependencies: - '@metamask/utils': 5.0.2 - readable-stream: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: false - - /@metamask/providers@10.2.1: - resolution: {integrity: sha512-p2TXw2a1Nb8czntDGfeIYQnk4LLVbd5vlcb3GY//lylYlKdSqp+uUTegCvxiFblRDOT68jsY8Ib1VEEzVUOolA==} - engines: {node: '>=14.0.0'} + /@metamask/providers@15.0.0: + resolution: {integrity: sha512-FXvL1NQNl6I7fMOJTfQYcBlBZ33vSlm6w80cMpmn8sJh0Lb7wcBpe02UwBsNlARnI+Qsr26XeDs6WHUHQh8CuA==} + engines: {node: ^18.18 || >=20} dependencies: - '@metamask/object-multiplex': 1.3.0 - '@metamask/safe-event-emitter': 2.0.0 - '@types/chrome': 0.0.136 + '@metamask/json-rpc-engine': 7.3.3 + '@metamask/json-rpc-middleware-stream': 6.0.2 + '@metamask/object-multiplex': 2.0.0 + '@metamask/rpc-errors': 6.2.1 + '@metamask/safe-event-emitter': 3.1.1 + '@metamask/utils': 8.4.0 detect-browser: 5.3.0 - eth-rpc-errors: 4.0.3 - extension-port-stream: 2.1.1 - fast-deep-equal: 2.0.1 + extension-port-stream: 3.0.0 + fast-deep-equal: 3.1.3 is-stream: 2.0.1 - json-rpc-engine: 6.1.0 - json-rpc-middleware-stream: 4.2.3 - pump: 3.0.0 - webextension-polyfill-ts: 0.25.0 + readable-stream: 3.6.2 + webextension-polyfill: 0.10.0 + transitivePeerDependencies: + - supports-color dev: false - /@metamask/rpc-errors@6.1.0: - resolution: {integrity: sha512-JQElKxai26FpDyRKO/yH732wI+BV90i1u6pOuDOpdADSbppB2g1pPh3AGST1zkZqEE9eIKIUw8UdBQ4rp3VTSg==} + /@metamask/rpc-errors@6.2.1: + resolution: {integrity: sha512-VTgWkjWLzb0nupkFl1duQi9Mk8TGT9rsdnQg6DeRrYEFxtFOh0IF8nAwxM/4GWqDl6uIB06lqUBgUrAVWl62Bw==} engines: {node: '>=16.0.0'} dependencies: - '@metamask/utils': 8.3.0 + '@metamask/utils': 8.4.0 fast-safe-stringify: 2.1.1 transitivePeerDependencies: - supports-color @@ -3667,85 +3712,102 @@ packages: resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} dev: false - /@metamask/safe-event-emitter@3.0.0: - resolution: {integrity: sha512-j6Z47VOmVyGMlnKXZmL0fyvWfEYtKWCA9yGZkU3FCsGZUT5lHGmvaV9JA5F2Y+010y7+ROtR3WMXIkvl/nVzqQ==} + /@metamask/safe-event-emitter@3.1.1: + resolution: {integrity: sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw==} engines: {node: '>=12.0.0'} dev: false - /@metamask/sdk-communication-layer@0.14.3: - resolution: {integrity: sha512-yjSbj8y7fFbQXv2HBzUX6D9C8BimkCYP6BDV7hdw53W8b/GlYCtXVxUFajQ9tuO1xPTRjR/xt/dkdr2aCi6WGw==} + /@metamask/sdk-communication-layer@0.18.5(cross-fetch@4.0.0)(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5): + resolution: {integrity: sha512-WMf9oJa3rAimjCXMAaaRVFPD0Q6dfZR0r9037KCpD5g9SlVh+TeMISfdQCEKAyhXP3d4CGxmp/Kib8C3mn2YLw==} + peerDependencies: + cross-fetch: ^3.1.5 + eciesjs: ^0.3.16 + eventemitter2: ^6.4.7 + readable-stream: ^3.6.2 + socket.io-client: ^4.5.1 dependencies: bufferutil: 4.0.8 - cross-fetch: 3.1.8 + cross-fetch: 4.0.0 date-fns: 2.30.0 + debug: 4.3.4 eciesjs: 0.3.18 eventemitter2: 6.4.9 - socket.io-client: 4.7.4(bufferutil@4.0.8)(utf-8-validate@6.0.3) + readable-stream: 3.6.2 + socket.io-client: 4.7.5 utf-8-validate: 6.0.3 uuid: 8.3.2 transitivePeerDependencies: - - encoding - supports-color dev: false - /@metamask/sdk-install-modal-web@0.14.1(react-native@0.73.4): - resolution: {integrity: sha512-emT8HKbnfVwGhPxyUfMja6DWzvtJvDEBQxqCVx93H0HsyrrOzOC43iGCAosslw6o5h7gOfRKLqWmK8V7jQAS2Q==} + /@metamask/sdk-install-modal-web@0.18.5(i18next@22.5.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1): + resolution: {integrity: sha512-Wygc0dgr1PwIA/Sg9WW9QWAsQr4G2GV6iveXt2xw8VKW/9cRORWqYukH1NZLr71hBKzi9AKYBU54Tk5Dfg41zg==} + peerDependencies: + i18next: 22.5.1 + react: ^18.2.0 + react-dom: ^18.2.0 + react-i18next: ^13.2.2 + react-native: '*' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + react-native: + optional: true dependencies: - '@emotion/react': 11.11.3(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(react@18.2.0) i18next: 22.5.1 qr-code-styling: 1.6.0-rc.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-i18next: 13.5.0(i18next@22.5.1)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - react-native + react: 18.3.1 + react-i18next: 13.5.0(i18next@22.5.1)(react-native@0.74.1)(react@18.3.1) + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.3.1) dev: false - /@metamask/sdk@0.14.3(react-native@0.73.4)(react@18.2.0): - resolution: {integrity: sha512-BYLs//nY2wioVSih78gOQI6sLIYY3vWkwVqXGYUgkBV+bi49bv+9S0m+hZ2cwiRaxfMYtKs0KvhAQ8weiYwDrg==} + /@metamask/sdk@0.18.6(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1): + resolution: {integrity: sha512-ZT8e4BrcWrm44apLb412WR0fDsgeaS8UlI1c0wKRUPu1w/UntpXuUVO+EaY8WDlnOPAiAsjyqWKey64/DfvbXQ==} peerDependencies: + '@react-native-async-storage/async-storage': ^1.19.6 react: ^18.2.0 + react-dom: ^18.2.0 react-native: '*' peerDependenciesMeta: + '@react-native-async-storage/async-storage': + optional: true react: optional: true + react-dom: + optional: true react-native: optional: true dependencies: '@metamask/onboarding': 1.0.1 - '@metamask/post-message-stream': 6.2.0 - '@metamask/providers': 10.2.1 - '@metamask/sdk-communication-layer': 0.14.3 - '@metamask/sdk-install-modal-web': 0.14.1(react-native@0.73.4) - '@react-native-async-storage/async-storage': 1.22.0(react-native@0.73.4) + '@metamask/providers': 15.0.0 + '@metamask/sdk-communication-layer': 0.18.5(cross-fetch@4.0.0)(eciesjs@0.3.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5) + '@metamask/sdk-install-modal-web': 0.18.5(i18next@22.5.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1) '@types/dom-screen-wake-lock': 1.0.3 bowser: 2.11.0 cross-fetch: 4.0.0 + debug: 4.3.4 eciesjs: 0.3.18 eth-rpc-errors: 4.0.3 eventemitter2: 6.4.9 - extension-port-stream: 2.1.1 i18next: 22.5.1 - i18next-browser-languagedetector: 7.2.0 + i18next-browser-languagedetector: 7.1.0 obj-multiplex: 1.0.0 pump: 3.0.0 qrcode-terminal-nooctal: 0.12.1 - react: 18.2.0 - react-i18next: 13.5.0(i18next@22.5.1)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0) - react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9)(react@18.2.0) - react-native-webview: 11.26.1(react-native@0.73.4)(react@18.2.0) - readable-stream: 2.3.8 + react: 18.3.1 + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.3.1) + react-native-webview: 11.26.1(react-native@0.74.1)(react@18.3.1) + readable-stream: 3.6.2 rollup-plugin-visualizer: 5.12.0 - socket.io-client: 4.7.4(bufferutil@4.0.8)(utf-8-validate@6.0.3) + socket.io-client: 4.7.5 util: 0.12.5 uuid: 8.3.2 transitivePeerDependencies: - - '@types/react' - bufferutil - encoding - - react-dom + - react-i18next - rollup - supports-color - utf-8-validate @@ -3759,77 +3821,217 @@ packages: '@types/debug': 4.1.12 debug: 4.3.4 semver: 7.6.0 - superstruct: 1.0.3 + superstruct: 1.0.4 transitivePeerDependencies: - supports-color dev: false - /@metamask/utils@8.3.0: - resolution: {integrity: sha512-WFVcMPEkKKRCJ8DDkZUTVbLlpwgRn98F4VM/WzN89HM8PmHMnCyk/oG0AmK/seOxtik7uC7Bbi2YBC5Z5XB2zw==} + /@metamask/utils@8.4.0: + resolution: {integrity: sha512-dbIc3C7alOe0agCuBHM1h71UaEaEqOk2W8rAtEn8QGz4haH2Qq7MoK6i7v2guzvkJVVh79c+QCzIqphC3KvrJg==} engines: {node: '>=16.0.0'} dependencies: '@ethereumjs/tx': 4.2.0 - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.6 '@types/debug': 4.1.12 debug: 4.3.4 - pony-cause: 2.1.10 + pony-cause: 2.1.11 semver: 7.6.0 - superstruct: 1.0.3 + superstruct: 1.0.4 + uuid: 9.0.1 transitivePeerDependencies: - supports-color dev: false - /@motionone/animation@10.16.3: - resolution: {integrity: sha512-QUGWpLbMFLhyqKlngjZhjtxM8IqiJQjLK0DF+XOF6od9nhSvlaeEpOY/UMCRVcZn/9Tr2rZO22EkuCIjYdI74g==} + /@moralisweb3/api-utils@2.26.1(debug@4.3.4): + resolution: {integrity: sha512-xG2rEvv7MEGiLwz6YkHeWnRToP9xiwtzdesgpYcbOMfEhO0dOF5NMhey9F4NS3l4p+ei8liLQAmFRUehyojbWg==} + dependencies: + '@moralisweb3/common-core': 2.26.1(debug@4.3.4) + '@moralisweb3/common-evm-utils': 2.26.1(debug@4.3.4) + axios: 1.6.8(debug@4.3.4) + transitivePeerDependencies: + - debug + dev: false + + /@moralisweb3/aptos-api@2.26.1(debug@4.3.4): + resolution: {integrity: sha512-LClXb88MtC8kAkuWgJ5PlvjBnY9wCd3fBMa+FbOvIlKgMDHjNizDzFCVAX/f6lF884/XBzpxq0QyoFcvYx0RFQ==} + dependencies: + '@moralisweb3/api-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-aptos-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-core': 2.26.1(debug@4.3.4) + transitivePeerDependencies: + - debug + dev: false + + /@moralisweb3/auth@2.26.1(debug@4.3.4): + resolution: {integrity: sha512-PUIm67hPOI0ThyUJ851Bq0i1Y0A7cFSR7wILwM0Ye1W1IOoygAI2Ls7Zyy9HK9aRUV3J1Sqek49azjNfmXQ0QA==} + dependencies: + '@moralisweb3/api-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-aptos-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-auth-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-core': 2.26.1(debug@4.3.4) + '@moralisweb3/common-evm-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-sol-utils': 2.26.1(debug@4.3.4) + transitivePeerDependencies: + - debug + dev: false + + /@moralisweb3/common-aptos-utils@2.26.1(debug@4.3.4): + resolution: {integrity: sha512-02c4zgksBzlM9zZgeDLvPQ/+yDjVAWRnkbXP2Hnow19PSIqUJb/RkHclqm3+623tH4JJwgbqei3wrQZigNQAWg==} + dependencies: + '@moralisweb3/common-core': 2.26.1(debug@4.3.4) + '@noble/hashes': 1.4.0 + transitivePeerDependencies: + - debug + dev: false + + /@moralisweb3/common-auth-utils@2.26.1(debug@4.3.4): + resolution: {integrity: sha512-g2FrjZKqjxitd4aDbJjdIwLXDYYa8a3sMRL31jynyblIfz2OTXJ5YZj86n8aENY+1t8BOcLwixzsRHRDiHnbog==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@moralisweb3/common-aptos-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-core': 2.26.1(debug@4.3.4) + '@moralisweb3/common-evm-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-sol-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/streams-typings': 1.0.7 + transitivePeerDependencies: + - debug + dev: false + + /@moralisweb3/common-core@2.26.1(debug@4.3.4): + resolution: {integrity: sha512-HbsSjBZuicoKyJxlWNl0YV6YolGQ0bWT2jbPwMGvLrtbeeRTT3rE2IrIh9nSe7z9pWVvXfU3t+4oXkisY+8dJg==} + dependencies: + axios: 1.6.8(debug@4.3.4) + transitivePeerDependencies: + - debug + dev: false + + /@moralisweb3/common-evm-utils@2.26.1(debug@4.3.4): + resolution: {integrity: sha512-Gr4qJmGhr5ixSeysg4CjZBZexeTzHqPYPE1YuaGAmD4dmW2OMpN2mRwXYnJmKNtML45XfTy4bCfeoTER7xBCWA==} + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@moralisweb3/common-core': 2.26.1(debug@4.3.4) + transitivePeerDependencies: + - debug + dev: false + + /@moralisweb3/common-sol-utils@2.26.1(debug@4.3.4): + resolution: {integrity: sha512-68VaTLpTvWljzaWsb7bHd7IOPHraT5pqfQG/rs5pOZQ846/nWe8bWzCT619aKAiS54WEhkg3lgqE58mISiTmCw==} dependencies: - '@motionone/easing': 10.16.3 - '@motionone/types': 10.16.3 - '@motionone/utils': 10.16.3 + '@moralisweb3/common-core': 2.26.1(debug@4.3.4) + bn.js: 5.2.1 + bs58: 5.0.0 + buffer: 6.0.3 + transitivePeerDependencies: + - debug + dev: false + + /@moralisweb3/common-streams-utils@2.26.1(debug@4.3.4): + resolution: {integrity: sha512-dhUrGoeBW1xfokQNRhr7AfejEBA/jOwIp3uyaw19M1eQcw0v+ekhgWvglSEDp0Fp3AouZFUAgkX1pOz/BziuCw==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@moralisweb3/common-aptos-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-core': 2.26.1(debug@4.3.4) + '@moralisweb3/common-evm-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/streams-typings': 1.0.7 + transitivePeerDependencies: + - debug + dev: false + + /@moralisweb3/evm-api@2.26.1(debug@4.3.4): + resolution: {integrity: sha512-1A92tQsM/K9wMVpciziPmy8s258en+KN9CIIBNj+6AqXS+yjvd6Fbh//0ZGpKmsBu862ULfb8EnrmeYQBoSEbw==} + dependencies: + '@moralisweb3/api-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-core': 2.26.1(debug@4.3.4) + '@moralisweb3/common-evm-utils': 2.26.1(debug@4.3.4) + transitivePeerDependencies: + - debug + dev: false + + /@moralisweb3/sol-api@2.26.1(debug@4.3.4): + resolution: {integrity: sha512-Wvpg8soLyb5DRR2R/v3ociFVI4I4EH1SsCU7Ah53tfmX/gDl5qs9FFdOMR/gYhS0vZXFN0f2jW+6I9ml1A9bDw==} + dependencies: + '@moralisweb3/api-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-core': 2.26.1(debug@4.3.4) + '@moralisweb3/common-sol-utils': 2.26.1(debug@4.3.4) + transitivePeerDependencies: + - debug + dev: false + + /@moralisweb3/streams-typings@1.0.7: + resolution: {integrity: sha512-ShbVqil0KLOTyTjO6z9JewPcVVE3S6kzkQFnW2flGBRsGdKucpkUdOx1HijOLoaikz/9gH92n+lzTvRFIj0AoA==} + dev: false + + /@moralisweb3/streams@2.26.1(debug@4.3.4): + resolution: {integrity: sha512-YyF3w8jKYw06ihKSi7LsG2L7FmOXDZarufQdYFhFFlNflprJG+ENorAp8NX9CfSoPzbLkF5NTDug22lehNqWTA==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@moralisweb3/api-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-core': 2.26.1(debug@4.3.4) + '@moralisweb3/common-evm-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-streams-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/streams-typings': 1.0.7 + ethereumjs-util: 7.1.5 + web3-eth-abi: 1.10.4 + transitivePeerDependencies: + - debug + dev: false + + /@motionone/animation@10.17.0: + resolution: {integrity: sha512-ANfIN9+iq1kGgsZxs+Nz96uiNcPLGTXwfNo2Xz/fcJXniPYpaz/Uyrfa+7I5BPLxCP82sh7quVDudf1GABqHbg==} + dependencies: + '@motionone/easing': 10.17.0 + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 tslib: 2.6.2 dev: false - /@motionone/dom@10.16.4: - resolution: {integrity: sha512-HPHlVo/030qpRj9R8fgY50KTN4Ko30moWRTA3L3imrsRBmob93cTYmodln49HYFbQm01lFF7X523OkKY0DX6UA==} + /@motionone/dom@10.17.0: + resolution: {integrity: sha512-cMm33swRlCX/qOPHWGbIlCl0K9Uwi6X5RiL8Ma6OrlJ/TP7Q+Np5GE4xcZkFptysFjMTi4zcZzpnNQGQ5D6M0Q==} dependencies: - '@motionone/animation': 10.16.3 - '@motionone/generators': 10.16.4 - '@motionone/types': 10.16.3 - '@motionone/utils': 10.16.3 + '@motionone/animation': 10.17.0 + '@motionone/generators': 10.17.0 + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 hey-listen: 1.0.8 tslib: 2.6.2 dev: false - /@motionone/easing@10.16.3: - resolution: {integrity: sha512-HWTMZbTmZojzwEuKT/xCdvoMPXjYSyQvuVM6jmM0yoGU6BWzsmYMeB4bn38UFf618fJCNtP9XeC/zxtKWfbr0w==} + /@motionone/easing@10.17.0: + resolution: {integrity: sha512-Bxe2wSuLu/qxqW4rBFS5m9tMLOw+QBh8v5A7Z5k4Ul4sTj5jAOfZG5R0bn5ywmk+Fs92Ij1feZ5pmC4TeXA8Tg==} dependencies: - '@motionone/utils': 10.16.3 + '@motionone/utils': 10.17.0 tslib: 2.6.2 dev: false - /@motionone/generators@10.16.4: - resolution: {integrity: sha512-geFZ3w0Rm0ZXXpctWsSf3REGywmLLujEjxPYpBR0j+ymYwof0xbV6S5kGqqsDKgyWKVWpUInqQYvQfL6fRbXeg==} + /@motionone/generators@10.17.0: + resolution: {integrity: sha512-T6Uo5bDHrZWhIfxG/2Aut7qyWQyJIWehk6OB4qNvr/jwA/SRmixwbd7SOrxZi1z5rH3LIeFFBKK1xHnSbGPZSQ==} dependencies: - '@motionone/types': 10.16.3 - '@motionone/utils': 10.16.3 + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 tslib: 2.6.2 dev: false /@motionone/svelte@10.16.4: resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} dependencies: - '@motionone/dom': 10.16.4 + '@motionone/dom': 10.17.0 tslib: 2.6.2 dev: false - /@motionone/types@10.16.3: - resolution: {integrity: sha512-W4jkEGFifDq73DlaZs3HUfamV2t1wM35zN/zX7Q79LfZ2sc6C0R1baUHZmqc/K5F3vSw3PavgQ6HyHLd/MXcWg==} + /@motionone/types@10.17.0: + resolution: {integrity: sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA==} dev: false - /@motionone/utils@10.16.3: - resolution: {integrity: sha512-WNWDksJIxQkaI9p9Z9z0+K27xdqISGNFy1SsWVGaiedTHq0iaT6iZujby8fT/ZnZxj1EOaxJtSfUPCFNU5CRoA==} + /@motionone/utils@10.17.0: + resolution: {integrity: sha512-bGwrki4896apMWIj9yp5rAS2m0xyhxblg6gTB/leWDPt+pb410W8lYWsxyurX+DH+gO1zsQsfx2su/c1/LtTpg==} dependencies: - '@motionone/types': 10.16.3 + '@motionone/types': 10.17.0 hey-listen: 1.0.8 tslib: 2.6.2 dev: false @@ -3838,7 +4040,7 @@ packages: resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion dependencies: - '@motionone/dom': 10.16.4 + '@motionone/dom': 10.17.0 tslib: 2.6.2 dev: false @@ -3879,19 +4081,13 @@ packages: dependencies: '@chainsafe/is-ip': 2.0.2 '@chainsafe/netmask': 2.0.0 - '@libp2p/interface': 1.3.0 + '@libp2p/interface': 1.3.1 '@multiformats/dns': 1.0.6 multiformats: 13.1.0 uint8-varint: 2.0.4 uint8arrays: 5.0.3 dev: false - /@noble/curves@1.1.0: - resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} - dependencies: - '@noble/hashes': 1.3.1 - dev: false - /@noble/curves@1.2.0: resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} dependencies: @@ -3907,11 +4103,6 @@ packages: 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'} - dev: false - /@noble/hashes@1.3.2: resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} engines: {node: '>= 16'} @@ -3919,6 +4110,12 @@ packages: /@noble/hashes@1.3.3: resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} 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==} @@ -3969,8 +4166,8 @@ packages: ethereum-cryptography: 1.2.0 dev: false - /@parcel/watcher-android-arm64@2.4.0: - resolution: {integrity: sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA==} + /@parcel/watcher-android-arm64@2.4.1: + resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] @@ -3978,8 +4175,8 @@ packages: dev: false optional: true - /@parcel/watcher-darwin-arm64@2.4.0: - resolution: {integrity: sha512-T/At5pansFuQ8VJLRx0C6C87cgfqIYhW2N/kBfLCUvDhCah0EnLLwaD/6MW3ux+rpgkpQAnMELOCTKlbwncwiA==} + /@parcel/watcher-darwin-arm64@2.4.1: + resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] @@ -3987,8 +4184,8 @@ packages: dev: false optional: true - /@parcel/watcher-darwin-x64@2.4.0: - resolution: {integrity: sha512-vZMv9jl+szz5YLsSqEGCMSllBl1gU1snfbRL5ysJU03MEa6gkVy9OMcvXV1j4g0++jHEcvzhs3Z3LpeEbVmY6Q==} + /@parcel/watcher-darwin-x64@2.4.1: + resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] @@ -3996,8 +4193,8 @@ packages: dev: false optional: true - /@parcel/watcher-freebsd-x64@2.4.0: - resolution: {integrity: sha512-dHTRMIplPDT1M0+BkXjtMN+qLtqq24sLDUhmU+UxxLP2TEY2k8GIoqIJiVrGWGomdWsy5IO27aDV1vWyQ6gfHA==} + /@parcel/watcher-freebsd-x64@2.4.1: + resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] @@ -4005,8 +4202,8 @@ packages: dev: false optional: true - /@parcel/watcher-linux-arm-glibc@2.4.0: - resolution: {integrity: sha512-9NQXD+qk46RwATNC3/UB7HWurscY18CnAPMTFcI9Y8CTbtm63/eex1SNt+BHFinEQuLBjaZwR2Lp+n7pmEJPpQ==} + /@parcel/watcher-linux-arm-glibc@2.4.1: + resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] @@ -4014,8 +4211,8 @@ packages: dev: false optional: true - /@parcel/watcher-linux-arm64-glibc@2.4.0: - resolution: {integrity: sha512-QuJTAQdsd7PFW9jNGaV9Pw+ZMWV9wKThEzzlY3Lhnnwy7iW23qtQFPql8iEaSFMCVI5StNNmONUopk+MFKpiKg==} + /@parcel/watcher-linux-arm64-glibc@2.4.1: + resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] @@ -4023,8 +4220,8 @@ packages: dev: false optional: true - /@parcel/watcher-linux-arm64-musl@2.4.0: - resolution: {integrity: sha512-oyN+uA9xcTDo/45bwsd6TFHa7Lc7hKujyMlvwrCLvSckvWogndCEoVYFNfZ6JJ2KNL/6fFiGPcbjp8jJmEh5Ng==} + /@parcel/watcher-linux-arm64-musl@2.4.1: + resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] @@ -4032,8 +4229,8 @@ packages: dev: false optional: true - /@parcel/watcher-linux-x64-glibc@2.4.0: - resolution: {integrity: sha512-KphV8awJmxU3q52JQvJot0QMu07CIyEjV+2Tb2ZtbucEgqyRcxOBDMsqp1JNq5nuDXtcCC0uHQICeiEz38dPBQ==} + /@parcel/watcher-linux-x64-glibc@2.4.1: + resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] @@ -4041,8 +4238,8 @@ packages: dev: false optional: true - /@parcel/watcher-linux-x64-musl@2.4.0: - resolution: {integrity: sha512-7jzcOonpXNWcSijPpKD5IbC6xC7yTibjJw9jviVzZostYLGxbz8LDJLUnLzLzhASPlPGgpeKLtFUMjAAzM+gSA==} + /@parcel/watcher-linux-x64-musl@2.4.1: + resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] @@ -4050,19 +4247,18 @@ packages: dev: false optional: true - /@parcel/watcher-wasm@2.4.0: - resolution: {integrity: sha512-MNgQ4WCbBybqQ97KwR/hqJGYTg3+s8qHpgIyFWB2qJOBvoJWbXuJGmm4ZkPLq2bMaANqCZqrXwmKYagZTkMKZA==} + /@parcel/watcher-wasm@2.4.1: + resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} engines: {node: '>= 10.0.0'} dependencies: is-glob: 4.0.3 micromatch: 4.0.5 - napi-wasm: 1.1.0 dev: false bundledDependencies: - napi-wasm - /@parcel/watcher-win32-arm64@2.4.0: - resolution: {integrity: sha512-NOej2lqlq8bQNYhUMnOD0nwvNql8ToQF+1Zhi9ULZoG+XTtJ9hNnCFfyICxoZLXor4bBPTOnzs/aVVoefYnjIg==} + /@parcel/watcher-win32-arm64@2.4.1: + resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] @@ -4070,8 +4266,8 @@ packages: dev: false optional: true - /@parcel/watcher-win32-ia32@2.4.0: - resolution: {integrity: sha512-IO/nM+K2YD/iwjWAfHFMBPz4Zqn6qBDqZxY4j2n9s+4+OuTSRM/y/irksnuqcspom5DjkSeF9d0YbO+qpys+JA==} + /@parcel/watcher-win32-ia32@2.4.1: + resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] @@ -4079,8 +4275,8 @@ packages: dev: false optional: true - /@parcel/watcher-win32-x64@2.4.0: - resolution: {integrity: sha512-pAUyUVjfFjWaf/pShmJpJmNxZhbMvJASUpdes9jL6bTEJ+gDxPRSpXTIemNyNsb9AtbiGXs9XduP1reThmd+dA==} + /@parcel/watcher-win32-x64@2.4.1: + resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] @@ -4088,8 +4284,8 @@ packages: dev: false optional: true - /@parcel/watcher@2.4.0: - resolution: {integrity: sha512-XJLGVL0DEclX5pcWa2N9SX1jCGTDd8l972biNooLFtjneuGqodupPQh6XseXIBBeVIMaaJ7bTcs3qGvXwsp4vg==} + /@parcel/watcher@2.4.1: + resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} engines: {node: '>= 10.0.0'} dependencies: detect-libc: 1.0.3 @@ -4097,18 +4293,18 @@ packages: micromatch: 4.0.5 node-addon-api: 7.1.0 optionalDependencies: - '@parcel/watcher-android-arm64': 2.4.0 - '@parcel/watcher-darwin-arm64': 2.4.0 - '@parcel/watcher-darwin-x64': 2.4.0 - '@parcel/watcher-freebsd-x64': 2.4.0 - '@parcel/watcher-linux-arm-glibc': 2.4.0 - '@parcel/watcher-linux-arm64-glibc': 2.4.0 - '@parcel/watcher-linux-arm64-musl': 2.4.0 - '@parcel/watcher-linux-x64-glibc': 2.4.0 - '@parcel/watcher-linux-x64-musl': 2.4.0 - '@parcel/watcher-win32-arm64': 2.4.0 - '@parcel/watcher-win32-ia32': 2.4.0 - '@parcel/watcher-win32-x64': 2.4.0 + '@parcel/watcher-android-arm64': 2.4.1 + '@parcel/watcher-darwin-arm64': 2.4.1 + '@parcel/watcher-darwin-x64': 2.4.1 + '@parcel/watcher-freebsd-x64': 2.4.1 + '@parcel/watcher-linux-arm-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-musl': 2.4.1 + '@parcel/watcher-linux-x64-glibc': 2.4.1 + '@parcel/watcher-linux-x64-musl': 2.4.1 + '@parcel/watcher-win32-arm64': 2.4.1 + '@parcel/watcher-win32-ia32': 2.4.1 + '@parcel/watcher-win32-x64': 2.4.1 dev: false /@pkgjs/parseargs@0.11.0: @@ -4117,16 +4313,9 @@ packages: requiresBuild: true optional: true - /@pkgr/utils@2.4.2: - resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + /@pkgr/core@0.1.1: + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dependencies: - cross-spawn: 7.0.3 - fast-glob: 3.3.2 - is-glob: 4.0.3 - open: 9.1.0 - picocolors: 1.0.0 - tslib: 2.6.2 dev: true /@playwright/test@1.43.1: @@ -4158,8 +4347,8 @@ packages: config-chain: 1.1.13 dev: true - /@polka/url@1.0.0-next.24: - resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + /@polka/url@1.0.0-next.25: + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} dev: true /@protobufjs/aspromise@1.1.2: @@ -4205,124 +4394,119 @@ packages: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} dev: false - /@react-native-async-storage/async-storage@1.22.0(react-native@0.73.4): - resolution: {integrity: sha512-b5KD010iiZnot86RbAaHpLuHwmPW2qA3SSN/OSZhd1kBoINEQEVBuv+uFtcaTxAhX27bT0wd13GOb2IOSDUXSA==} - peerDependencies: - react-native: ^0.0.0-0 || >=0.60 <1.0 - dependencies: - merge-options: 3.0.4 - react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9)(react@18.2.0) - dev: false - - /@react-native-community/cli-clean@12.3.2: - resolution: {integrity: sha512-90k2hCX0ddSFPT7EN7h5SZj0XZPXP0+y/++v262hssoey3nhurwF57NGWN0XAR0o9BSW7+mBfeInfabzDraO6A==} + /@react-native-community/cli-clean@13.6.6: + resolution: {integrity: sha512-cBwJTwl0NyeA4nyMxbhkWZhxtILYkbU3TW3k8AXLg+iGphe0zikYMGB3T+haTvTc6alTyEFwPbimk9bGIqkjAQ==} dependencies: - '@react-native-community/cli-tools': 12.3.2 + '@react-native-community/cli-tools': 13.6.6 chalk: 4.1.2 execa: 5.1.1 + fast-glob: 3.3.2 transitivePeerDependencies: - encoding dev: false - /@react-native-community/cli-config@12.3.2: - resolution: {integrity: sha512-UUCzDjQgvAVL/57rL7eOuFUhd+d+6qfM7V8uOegQFeFEmSmvUUDLYoXpBa5vAK9JgQtSqMBJ1Shmwao+/oElxQ==} + /@react-native-community/cli-config@13.6.6: + resolution: {integrity: sha512-mbG425zCKr8JZhv/j11382arezwS/70juWMsn8j2lmrGTrP1cUdW0MF15CCIFtJsqyK3Qs+FTmqttRpq81QfSg==} dependencies: - '@react-native-community/cli-tools': 12.3.2 + '@react-native-community/cli-tools': 13.6.6 chalk: 4.1.2 cosmiconfig: 5.2.1 deepmerge: 4.3.1 - glob: 7.2.3 - joi: 17.12.1 + fast-glob: 3.3.2 + joi: 17.13.1 transitivePeerDependencies: - encoding dev: false - /@react-native-community/cli-debugger-ui@12.3.2: - resolution: {integrity: sha512-nSWQUL+51J682DlfcC1bjkUbQbGvHCC25jpqTwHIjmmVjYCX1uHuhPSqQKgPNdvtfOkrkACxczd7kVMmetxY2Q==} + /@react-native-community/cli-debugger-ui@13.6.6: + resolution: {integrity: sha512-Vv9u6eS4vKSDAvdhA0OiQHoA7y39fiPIgJ6biT32tN4avHDtxlc6TWZGiqv7g98SBvDWvoVAmdPLcRf3kU+c8g==} dependencies: serve-static: 1.15.0 transitivePeerDependencies: - supports-color dev: false - /@react-native-community/cli-doctor@12.3.2: - resolution: {integrity: sha512-GrAabdY4qtBX49knHFvEAdLtCjkmndjTeqhYO6BhsbAeKOtspcLT/0WRgdLIaKODRa61ADNB3K5Zm4dU0QrZOg==} + /@react-native-community/cli-doctor@13.6.6: + resolution: {integrity: sha512-TWZb5g6EmQe2Ua2TEWNmyaEayvlWH4GmdD9ZC+p8EpKFpB1NpDGMK6sXbpb42TDvwZg5s4TDRplK0PBEA/SVDg==} dependencies: - '@react-native-community/cli-config': 12.3.2 - '@react-native-community/cli-platform-android': 12.3.2 - '@react-native-community/cli-platform-ios': 12.3.2 - '@react-native-community/cli-tools': 12.3.2 + '@react-native-community/cli-config': 13.6.6 + '@react-native-community/cli-platform-android': 13.6.6 + '@react-native-community/cli-platform-apple': 13.6.6 + '@react-native-community/cli-platform-ios': 13.6.6 + '@react-native-community/cli-tools': 13.6.6 chalk: 4.1.2 command-exists: 1.2.9 deepmerge: 4.3.1 - envinfo: 7.11.1 + envinfo: 7.13.0 execa: 5.1.1 hermes-profile-transformer: 0.0.6 - ip: 1.1.9 node-stream-zip: 1.15.0 ora: 5.4.1 semver: 7.6.0 strip-ansi: 5.2.0 wcwidth: 1.0.1 - yaml: 2.3.4 + yaml: 2.4.2 transitivePeerDependencies: - encoding dev: false - /@react-native-community/cli-hermes@12.3.2: - resolution: {integrity: sha512-SL6F9O8ghp4ESBFH2YAPLtIN39jdnvGBKnK4FGKpDCjtB3DnUmDsGFlH46S+GGt5M6VzfG2eeKEOKf3pZ6jUzA==} + /@react-native-community/cli-hermes@13.6.6: + resolution: {integrity: sha512-La5Ie+NGaRl3klei6WxKoOxmCUSGGxpOk6vU5pEGf0/O7ky+Ay0io+zXYUZqlNMi/cGpO7ZUijakBYOB/uyuFg==} dependencies: - '@react-native-community/cli-platform-android': 12.3.2 - '@react-native-community/cli-tools': 12.3.2 + '@react-native-community/cli-platform-android': 13.6.6 + '@react-native-community/cli-tools': 13.6.6 chalk: 4.1.2 hermes-profile-transformer: 0.0.6 - ip: 1.1.9 transitivePeerDependencies: - encoding dev: false - /@react-native-community/cli-platform-android@12.3.2: - resolution: {integrity: sha512-MZ5nO8yi/N+Fj2i9BJcJ9C/ez+9/Ir7lQt49DWRo9YDmzye66mYLr/P2l/qxsixllbbDi7BXrlLpxaEhMrDopg==} + /@react-native-community/cli-platform-android@13.6.6: + resolution: {integrity: sha512-/tMwkBeNxh84syiSwNlYtmUz/Ppc+HfKtdopL/5RB+fd3SV1/5/NPNjMlyLNgFKnpxvKCInQ7dnl6jGHJjeHjg==} dependencies: - '@react-native-community/cli-tools': 12.3.2 + '@react-native-community/cli-tools': 13.6.6 chalk: 4.1.2 execa: 5.1.1 - fast-xml-parser: 4.3.4 - glob: 7.2.3 + fast-glob: 3.3.2 + fast-xml-parser: 4.3.6 logkitty: 0.7.1 transitivePeerDependencies: - encoding dev: false - /@react-native-community/cli-platform-ios@12.3.2: - resolution: {integrity: sha512-OcWEAbkev1IL6SUiQnM6DQdsvfsKZhRZtoBNSj9MfdmwotVZSOEZJ+IjZ1FR9ChvMWayO9ns/o8LgoQxr1ZXeg==} + /@react-native-community/cli-platform-apple@13.6.6: + resolution: {integrity: sha512-bOmSSwoqNNT3AmCRZXEMYKz1Jf1l2F86Nhs7qBcXdY/sGiJ+Flng564LOqvdAlVLTbkgz47KjNKCS2pP4Jg0Mg==} dependencies: - '@react-native-community/cli-tools': 12.3.2 + '@react-native-community/cli-tools': 13.6.6 chalk: 4.1.2 execa: 5.1.1 - fast-xml-parser: 4.3.4 - glob: 7.2.3 + fast-glob: 3.3.2 + fast-xml-parser: 4.3.6 ora: 5.4.1 transitivePeerDependencies: - encoding dev: false - /@react-native-community/cli-plugin-metro@12.3.2: - resolution: {integrity: sha512-FpFBwu+d2E7KRhYPTkKvQsWb2/JKsJv+t1tcqgQkn+oByhp+qGyXBobFB8/R3yYvRRDCSDhS+atWTJzk9TjM8g==} + /@react-native-community/cli-platform-ios@13.6.6: + resolution: {integrity: sha512-vjDnRwhlSN5ryqKTas6/DPkxuouuyFBAqAROH4FR1cspTbn6v78JTZKDmtQy9JMMo7N5vZj1kASU5vbFep9IOQ==} + dependencies: + '@react-native-community/cli-platform-apple': 13.6.6 + transitivePeerDependencies: + - encoding dev: false - /@react-native-community/cli-server-api@12.3.2: - resolution: {integrity: sha512-iwa7EO9XFA/OjI5pPLLpI/6mFVqv8L73kNck3CNOJIUCCveGXBKK0VMyOkXaf/BYnihgQrXh+x5cxbDbggr7+Q==} + /@react-native-community/cli-server-api@13.6.6: + resolution: {integrity: sha512-ZtCXxoFlM7oDv3iZ3wsrT3SamhtUJuIkX2WePLPlN5bcbq7zimbPm2lHyicNJtpcGQ5ymsgpUWPCNZsWQhXBqQ==} dependencies: - '@react-native-community/cli-debugger-ui': 12.3.2 - '@react-native-community/cli-tools': 12.3.2 + '@react-native-community/cli-debugger-ui': 13.6.6 + '@react-native-community/cli-tools': 13.6.6 compression: 1.7.4 connect: 3.7.0 errorhandler: 1.5.1 nocache: 3.0.4 pretty-format: 26.6.2 serve-static: 1.15.0 - ws: 7.5.9 + ws: 6.2.2 transitivePeerDependencies: - bufferutil - encoding @@ -4330,11 +4514,12 @@ packages: - utf-8-validate dev: false - /@react-native-community/cli-tools@12.3.2: - resolution: {integrity: sha512-nDH7vuEicHI2TI0jac/DjT3fr977iWXRdgVAqPZFFczlbs7A8GQvEdGnZ1G8dqRUmg+kptw0e4hwczAOG89JzQ==} + /@react-native-community/cli-tools@13.6.6: + resolution: {integrity: sha512-ptOnn4AJczY5njvbdK91k4hcYazDnGtEPrqIwEI+k/CTBHNdb27Rsm2OZ7ye6f7otLBqF8gj/hK6QzJs8CEMgw==} dependencies: appdirsjs: 1.2.7 chalk: 4.1.2 + execa: 5.1.1 find-up: 5.0.0 mime: 2.6.0 node-fetch: 2.7.0 @@ -4347,26 +4532,25 @@ packages: - encoding dev: false - /@react-native-community/cli-types@12.3.2: - resolution: {integrity: sha512-9D0UEFqLW8JmS16mjHJxUJWX8E+zJddrHILSH8AJHZ0NNHv4u2DXKdb0wFLMobFxGNxPT+VSOjc60fGvXzWHog==} + /@react-native-community/cli-types@13.6.6: + resolution: {integrity: sha512-733iaYzlmvNK7XYbnWlMjdE+2k0hlTBJW071af/xb6Bs+hbJqBP9c03FZuYH2hFFwDDntwj05bkri/P7VgSxug==} dependencies: - joi: 17.12.1 + joi: 17.13.1 dev: false - /@react-native-community/cli@12.3.2: - resolution: {integrity: sha512-WgoUWwLDcf/G1Su2COUUVs3RzAwnV/vUTdISSpAUGgSc57mPabaAoUctKTnfYEhCnE3j02k3VtaVPwCAFRO3TQ==} + /@react-native-community/cli@13.6.6: + resolution: {integrity: sha512-IqclB7VQ84ye8Fcs89HOpOscY4284VZg2pojHNl8H0Lzd4DadXJWQoxC7zWm8v2f8eyeX2kdhxp2ETD5tceIgA==} engines: {node: '>=18'} hasBin: true dependencies: - '@react-native-community/cli-clean': 12.3.2 - '@react-native-community/cli-config': 12.3.2 - '@react-native-community/cli-debugger-ui': 12.3.2 - '@react-native-community/cli-doctor': 12.3.2 - '@react-native-community/cli-hermes': 12.3.2 - '@react-native-community/cli-plugin-metro': 12.3.2 - '@react-native-community/cli-server-api': 12.3.2 - '@react-native-community/cli-tools': 12.3.2 - '@react-native-community/cli-types': 12.3.2 + '@react-native-community/cli-clean': 13.6.6 + '@react-native-community/cli-config': 13.6.6 + '@react-native-community/cli-debugger-ui': 13.6.6 + '@react-native-community/cli-doctor': 13.6.6 + '@react-native-community/cli-hermes': 13.6.6 + '@react-native-community/cli-server-api': 13.6.6 + '@react-native-community/cli-tools': 13.6.6 + '@react-native-community/cli-types': 13.6.6 chalk: 4.1.2 commander: 9.5.0 deepmerge: 4.3.1 @@ -4383,106 +4567,108 @@ packages: - utf-8-validate dev: false - /@react-native/assets-registry@0.73.1: - resolution: {integrity: sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg==} + /@react-native/assets-registry@0.74.83: + resolution: {integrity: sha512-2vkLMVnp+YTZYTNSDIBZojSsjz8sl5PscP3j4GcV6idD8V978SZfwFlk8K0ti0BzRs11mzL0Pj17km597S/eTQ==} engines: {node: '>=18'} dev: false - /@react-native/babel-plugin-codegen@0.73.4(@babel/preset-env@7.23.9): - resolution: {integrity: sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ==} + /@react-native/babel-plugin-codegen@0.74.83(@babel/preset-env@7.24.5): + resolution: {integrity: sha512-+S0st3t4Ro00bi9gjT1jnK8qTFOU+CwmziA7U9odKyWrCoRJrgmrvogq/Dr1YXlpFxexiGIupGut1VHxr+fxJA==} engines: {node: '>=18'} dependencies: - '@react-native/codegen': 0.73.3(@babel/preset-env@7.23.9) + '@react-native/codegen': 0.74.83(@babel/preset-env@7.24.5) transitivePeerDependencies: - '@babel/preset-env' - supports-color dev: false - /@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9): - resolution: {integrity: sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA==} + /@react-native/babel-preset@0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5): + resolution: {integrity: sha512-KJuu3XyVh3qgyUer+rEqh9a/JoUxsDOzkJNfRpDyXiAyjDRoVch60X/Xa/NcEQ93iCVHAWs0yQ+XGNGIBCYE6g==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.23.9) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-export-default-from': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.9) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.9) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.9) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-runtime': 7.23.9(@babel/core@7.23.9) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.9) - '@babel/template': 7.23.9 - '@react-native/babel-plugin-codegen': 0.73.4(@babel/preset-env@7.23.9) - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.23.9) - react-refresh: 0.14.0 + '@babel/core': 7.24.5 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.24.5) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-export-default-from': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.24.5) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.5) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.5) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5) + '@babel/template': 7.24.0 + '@react-native/babel-plugin-codegen': 0.74.83(@babel/preset-env@7.24.5) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.24.5) + react-refresh: 0.14.2 transitivePeerDependencies: - '@babel/preset-env' - supports-color dev: false - /@react-native/codegen@0.73.3(@babel/preset-env@7.23.9): - resolution: {integrity: sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg==} + /@react-native/codegen@0.74.83(@babel/preset-env@7.24.5): + resolution: {integrity: sha512-GgvgHS3Aa2J8/mp1uC/zU8HuTh8ZT5jz7a4mVMWPw7+rGyv70Ba8uOVBq6UH2Q08o617IATYc+0HfyzAfm4n0w==} engines: {node: '>=18'} peerDependencies: '@babel/preset-env': ^7.1.6 dependencies: - '@babel/parser': 7.23.9 - '@babel/preset-env': 7.23.9(@babel/core@7.23.9) - flow-parser: 0.206.0 + '@babel/parser': 7.24.5 + '@babel/preset-env': 7.24.5(@babel/core@7.24.5) glob: 7.2.3 + hermes-parser: 0.19.1 invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.23.9) + jscodeshift: 0.14.0(@babel/preset-env@7.24.5) mkdirp: 0.5.6 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color dev: false - /@react-native/community-cli-plugin@0.73.16(@babel/core@7.23.9)(@babel/preset-env@7.23.9): - resolution: {integrity: sha512-eNH3v3qJJF6f0n/Dck90qfC9gVOR4coAXMTdYECO33GfgjTi+73vf/SBqlXw9HICH/RNZYGPM3wca4FRF7TYeQ==} + /@react-native/community-cli-plugin@0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5): + resolution: {integrity: sha512-7GAFjFOg1mFSj8bnFNQS4u8u7+QtrEeflUIDVZGEfBZQ3wMNI5ycBzbBGycsZYiq00Xvoc6eKFC7kvIaqeJpUQ==} engines: {node: '>=18'} dependencies: - '@react-native-community/cli-server-api': 12.3.2 - '@react-native-community/cli-tools': 12.3.2 - '@react-native/dev-middleware': 0.73.7 - '@react-native/metro-babel-transformer': 0.73.15(@babel/core@7.23.9)(@babel/preset-env@7.23.9) + '@react-native-community/cli-server-api': 13.6.6 + '@react-native-community/cli-tools': 13.6.6 + '@react-native/dev-middleware': 0.74.83 + '@react-native/metro-babel-transformer': 0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5) chalk: 4.1.2 execa: 5.1.1 - metro: 0.80.6 - metro-config: 0.80.6 - metro-core: 0.80.6 + metro: 0.80.9 + metro-config: 0.80.9 + metro-core: 0.80.9 node-fetch: 2.7.0 + querystring: 0.2.1 readline: 1.3.0 transitivePeerDependencies: - '@babel/core' @@ -4493,178 +4679,227 @@ packages: - utf-8-validate dev: false - /@react-native/debugger-frontend@0.73.3: - resolution: {integrity: sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw==} + /@react-native/debugger-frontend@0.74.83: + resolution: {integrity: sha512-RGQlVUegBRxAUF9c1ss1ssaHZh6CO+7awgtI9sDeU0PzDZY/40ImoPD5m0o0SI6nXoVzbPtcMGzU+VO590pRfA==} engines: {node: '>=18'} dev: false - /@react-native/dev-middleware@0.73.7: - resolution: {integrity: sha512-BZXpn+qKp/dNdr4+TkZxXDttfx8YobDh8MFHsMk9usouLm22pKgFIPkGBV0X8Do4LBkFNPGtrnsKkWk/yuUXKg==} + /@react-native/dev-middleware@0.74.83: + resolution: {integrity: sha512-UH8iriqnf7N4Hpi20D7M2FdvSANwTVStwFCSD7VMU9agJX88Yk0D1T6Meh2RMhUu4kY2bv8sTkNRm7LmxvZqgA==} engines: {node: '>=18'} dependencies: '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.73.3 + '@react-native/debugger-frontend': 0.74.83 + '@rnx-kit/chromium-edge-launcher': 1.0.0 chrome-launcher: 0.15.2 - chromium-edge-launcher: 1.0.0 connect: 3.7.0 debug: 2.6.9 node-fetch: 2.7.0 + nullthrows: 1.1.1 open: 7.4.2 + selfsigned: 2.4.1 serve-static: 1.15.0 temp-dir: 2.0.0 + ws: 6.2.2 transitivePeerDependencies: + - bufferutil - encoding - supports-color + - utf-8-validate dev: false - /@react-native/gradle-plugin@0.73.4: - resolution: {integrity: sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg==} + /@react-native/gradle-plugin@0.74.83: + resolution: {integrity: sha512-Pw2BWVyOHoBuJVKxGVYF6/GSZRf6+v1Ygc+ULGz5t20N8qzRWPa2fRZWqoxsN7TkNLPsECYY8gooOl7okOcPAQ==} engines: {node: '>=18'} dev: false - /@react-native/js-polyfills@0.73.1: - resolution: {integrity: sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g==} + /@react-native/js-polyfills@0.74.83: + resolution: {integrity: sha512-/t74n8r6wFhw4JEoOj3bN71N1NDLqaawB75uKAsSjeCwIR9AfCxlzZG0etsXtOexkY9KMeZIQ7YwRPqUdNXuqw==} engines: {node: '>=18'} dev: false - /@react-native/metro-babel-transformer@0.73.15(@babel/core@7.23.9)(@babel/preset-env@7.23.9): - resolution: {integrity: sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw==} + /@react-native/metro-babel-transformer@0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5): + resolution: {integrity: sha512-hGdx5N8diu8y+GW/ED39vTZa9Jx1di2ZZ0aapbhH4egN1agIAusj5jXTccfNBwwWF93aJ5oVbRzfteZgjbutKg==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' dependencies: - '@babel/core': 7.23.9 - '@react-native/babel-preset': 0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9) - hermes-parser: 0.15.0 + '@babel/core': 7.24.5 + '@react-native/babel-preset': 0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5) + hermes-parser: 0.19.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' - supports-color dev: false - /@react-native/normalize-colors@0.73.2: - resolution: {integrity: sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w==} + /@react-native/normalize-colors@0.74.83: + resolution: {integrity: sha512-jhCY95gRDE44qYawWVvhTjTplW1g+JtKTKM3f8xYT1dJtJ8QWv+gqEtKcfmOHfDkSDaMKG0AGBaDTSK8GXLH8Q==} dev: false - /@react-native/virtualized-lists@0.73.4(react-native@0.73.4): - resolution: {integrity: sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog==} + /@react-native/virtualized-lists@0.74.83(react-native@0.74.1)(react@18.3.1): + resolution: {integrity: sha512-rmaLeE34rj7py4FxTod7iMTC7BAsm+HrGA8WxYmEJeyTV7WSaxAkosKoYBz8038mOiwnG9VwA/7FrB6bEQvn1A==} engines: {node: '>=18'} peerDependencies: + '@types/react': ^18.2.6 + react: '*' react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true dependencies: invariant: 2.2.4 nullthrows: 1.1.1 - react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9)(react@18.2.0) + react: 18.3.1 + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.3.1) + dev: false + + /@rnx-kit/chromium-edge-launcher@1.0.0: + resolution: {integrity: sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==} + engines: {node: '>=14.15'} + dependencies: + '@types/node': 18.19.31 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + mkdirp: 1.0.4 + rimraf: 3.0.2 + transitivePeerDependencies: + - supports-color dev: false - /@rollup/rollup-android-arm-eabi@4.12.0: - resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==} + /@rollup/rollup-android-arm-eabi@4.17.2: + resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.12.0: - resolution: {integrity: sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==} + /@rollup/rollup-android-arm64@4.17.2: + resolution: {integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.12.0: - resolution: {integrity: sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==} + /@rollup/rollup-darwin-arm64@4.17.2: + resolution: {integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.12.0: - resolution: {integrity: sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==} + /@rollup/rollup-darwin-x64@4.17.2: + resolution: {integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.12.0: - resolution: {integrity: sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==} + /@rollup/rollup-linux-arm-gnueabihf@4.17.2: + resolution: {integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-musleabihf@4.17.2: + resolution: {integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.12.0: - resolution: {integrity: sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==} + /@rollup/rollup-linux-arm64-gnu@4.17.2: + resolution: {integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.12.0: - resolution: {integrity: sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==} + /@rollup/rollup-linux-arm64-musl@4.17.2: + resolution: {integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.12.0: - resolution: {integrity: sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==} + /@rollup/rollup-linux-powerpc64le-gnu@4.17.2: + resolution: {integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.17.2: + resolution: {integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==} cpu: [riscv64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.12.0: - resolution: {integrity: sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==} + /@rollup/rollup-linux-s390x-gnu@4.17.2: + resolution: {integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.17.2: + resolution: {integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.12.0: - resolution: {integrity: sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==} + /@rollup/rollup-linux-x64-musl@4.17.2: + resolution: {integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.12.0: - resolution: {integrity: sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==} + /@rollup/rollup-win32-arm64-msvc@4.17.2: + resolution: {integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.12.0: - resolution: {integrity: sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==} + /@rollup/rollup-win32-ia32-msvc@4.17.2: + resolution: {integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.12.0: - resolution: {integrity: sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==} + /@rollup/rollup-win32-x64-msvc@4.17.2: + resolution: {integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /@safe-global/safe-apps-provider@0.18.1(typescript@5.4.3): + /@safe-global/safe-apps-provider@0.18.1(typescript@5.4.5): resolution: {integrity: sha512-V4a05A3EgJcriqtDoJklDz1BOinWhC6P0hjUSxshA4KOZM7rGPCTto/usXs09zr1vvL28evl/NldSTv97j2bmg==} dependencies: - '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.4.3) + '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.4.5) events: 3.3.0 transitivePeerDependencies: - bufferutil @@ -4673,11 +4908,11 @@ packages: - zod dev: false - /@safe-global/safe-apps-sdk@8.1.0(typescript@5.4.3): + /@safe-global/safe-apps-sdk@8.1.0(typescript@5.4.5): resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.15.0 - viem: 1.21.4(typescript@5.4.3) + '@safe-global/safe-gateway-typescript-sdk': 3.21.1 + viem: 1.21.4(typescript@5.4.5) transitivePeerDependencies: - bufferutil - typescript @@ -4685,63 +4920,55 @@ packages: - zod dev: false - /@safe-global/safe-gateway-typescript-sdk@3.15.0: - resolution: {integrity: sha512-zAzhPgUwzdp89ZrZwCAOImUyAQMQE0LQKcK4vLO5eMbfAcNOxz5g4eVdBRBRa+kVXxjyW5wii58ZlGaYUVBa7g==} + /@safe-global/safe-gateway-typescript-sdk@3.21.1: + resolution: {integrity: sha512-7nakIjcRSs6781LkizYpIfXh1DYlkUDqyALciqz/BjFU/S97sVjZdL4cuKsG9NEarytE+f6p0Qbq2Bo1aocVUA==} engines: {node: '>=16'} dev: false - /@scure/base@1.1.5: - resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} + /@scure/base@1.1.6: + resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} /@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.5 - dev: false - - /@scure/bip32@1.3.1: - resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} - dependencies: - '@noble/curves': 1.1.0 - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@scure/base': 1.1.6 dev: false /@scure/bip32@1.3.2: resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} dependencies: '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.6 /@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 + '@scure/base': 1.1.6 dev: false /@scure/bip39@1.1.1: resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} dependencies: '@noble/hashes': 1.2.0 - '@scure/base': 1.1.5 + '@scure/base': 1.1.6 dev: false /@scure/bip39@1.2.1: resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} dependencies: - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.6 /@scure/bip39@1.2.2: resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} dependencies: '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@scure/base': 1.1.6 dev: false /@sideway/address@4.1.5: @@ -4778,8 +5005,8 @@ packages: '@sinonjs/commons': 3.0.1 dev: false - /@socket.io/component-emitter@3.1.0: - resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + /@socket.io/component-emitter@3.1.2: + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} dev: false /@solidity-parser/parser@0.18.0: @@ -4908,63 +5135,18 @@ packages: lodash: 4.17.21 dev: true - /@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@1.30.4): - resolution: {integrity: sha512-She5nKT47kwHE18v9NMe6pbJcvULr82u0V3yZ0ej3n1laWKGgkgdEABE9/ak5iDPs93LqsBkuIo51kkwCLBjJA==} - peerDependencies: - '@sveltejs/kit': ^2.0.0 - dependencies: - '@sveltejs/kit': 1.30.4(svelte@4.2.12)(vite@4.5.3) - import-meta-resolve: 4.0.0 - dev: true - - /@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.5): + /@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.7): resolution: {integrity: sha512-She5nKT47kwHE18v9NMe6pbJcvULr82u0V3yZ0ej3n1laWKGgkgdEABE9/ak5iDPs93LqsBkuIo51kkwCLBjJA==} peerDependencies: '@sveltejs/kit': ^2.0.0 dependencies: - '@sveltejs/kit': 2.5.5(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.13)(vite@5.1.3) - import-meta-resolve: 4.0.0 - dev: true - - /@sveltejs/adapter-static@2.0.3(@sveltejs/kit@1.30.4): - resolution: {integrity: sha512-VUqTfXsxYGugCpMqQv1U0LIdbR3S5nBkMMDmpjGVJyM6Q2jHVMFtdWJCkeHMySc6mZxJ+0eZK3T7IgmUCDrcUQ==} - peerDependencies: - '@sveltejs/kit': ^1.5.0 - dependencies: - '@sveltejs/kit': 1.30.4(svelte@4.2.12)(vite@4.5.3) + '@sveltejs/kit': 2.5.7(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11) + import-meta-resolve: 4.1.0 dev: true - /@sveltejs/kit@1.30.4(svelte@4.2.12)(vite@4.5.3): - resolution: {integrity: sha512-JSQIQT6XvdchCRQEm7BABxPC56WP5RYVONAi+09S8tmzeP43fBsRlr95bFmsTQM2RHBldfgQk+jgdnsKI75daA==} - engines: {node: ^16.14 || >=18} - hasBin: true - requiresBuild: true - peerDependencies: - svelte: ^3.54.0 || ^4.0.0-next.0 || ^5.0.0-next.0 - vite: ^4.0.0 - dependencies: - '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.2.12)(vite@4.5.3) - '@types/cookie': 0.5.4 - cookie: 0.5.0 - devalue: 4.3.2 - esm-env: 1.0.0 - kleur: 4.1.5 - magic-string: 0.30.7 - mrmime: 1.0.1 - sade: 1.8.1 - set-cookie-parser: 2.6.0 - sirv: 2.0.4 - svelte: 4.2.12 - tiny-glob: 0.2.9 - undici: 5.28.3 - vite: 4.5.3(@types/node@20.12.7) - transitivePeerDependencies: - - supports-color - dev: true - - /@sveltejs/kit@2.5.5(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.13)(vite@4.5.3): - resolution: {integrity: sha512-ULe3PB00q4+wYRL+IS5FDPsCEVnhEITofm7b9Yz8malcH3r1SAnW/JJ6T13hIMeu8QNRIuVQWo+P4+2VklbnLQ==} - engines: {node: '>=18.13'} + /@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@4.5.3): + resolution: {integrity: sha512-6uedTzrb7nQrw6HALxnPrPaXdIN2jJJTzTIl96Z3P5NiG+OAfpdPbrWrvkJ3GN4CfWqrmU4dJqwMMRMTD/C7ow==} + engines: {node: '>=18.13'} hasBin: true requiresBuild: true peerDependencies: @@ -4972,25 +5154,25 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.3 dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.13)(vite@4.5.3) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@4.5.3) '@types/cookie': 0.6.0 cookie: 0.6.0 - devalue: 4.3.2 + devalue: 5.0.0 esm-env: 1.0.0 - import-meta-resolve: 4.0.0 + import-meta-resolve: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.7 + magic-string: 0.30.10 mrmime: 2.0.0 sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.4 - svelte: 4.2.13 + svelte: 4.2.15 tiny-glob: 0.2.9 - vite: 4.5.3(@types/node@20.12.7) + vite: 4.5.3 dev: true - /@sveltejs/kit@2.5.5(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.13)(vite@5.1.3): - resolution: {integrity: sha512-ULe3PB00q4+wYRL+IS5FDPsCEVnhEITofm7b9Yz8malcH3r1SAnW/JJ6T13hIMeu8QNRIuVQWo+P4+2VklbnLQ==} + /@sveltejs/kit@2.5.7(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11): + resolution: {integrity: sha512-6uedTzrb7nQrw6HALxnPrPaXdIN2jJJTzTIl96Z3P5NiG+OAfpdPbrWrvkJ3GN4CfWqrmU4dJqwMMRMTD/C7ow==} engines: {node: '>=18.13'} hasBin: true requiresBuild: true @@ -4999,127 +5181,91 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.3 dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.13)(vite@5.1.3) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11) '@types/cookie': 0.6.0 cookie: 0.6.0 - devalue: 4.3.2 + devalue: 5.0.0 esm-env: 1.0.0 - import-meta-resolve: 4.0.0 + import-meta-resolve: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.9 + magic-string: 0.30.10 mrmime: 2.0.0 sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.4 - svelte: 4.2.13 + svelte: 4.2.15 tiny-glob: 0.2.9 - vite: 5.1.3(@types/node@20.12.7) - dev: true - - /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.5.3)(svelte@4.2.12)(vite@4.5.3): - resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==} - engines: {node: ^14.18.0 || >= 16} - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^2.2.0 - svelte: ^3.54.0 || ^4.0.0 - vite: ^4.0.0 - dependencies: - '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.2.12)(vite@4.5.3) - debug: 4.3.4 - svelte: 4.2.12 - vite: 4.5.3(@types/node@20.12.7) - transitivePeerDependencies: - - supports-color + vite: 5.2.11(@types/node@20.12.8) dev: true - /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.13)(vite@4.5.3): - resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} + /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@4.5.3): + resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} engines: {node: ^18.0.0 || >=20} peerDependencies: '@sveltejs/vite-plugin-svelte': ^3.0.0 svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.13)(vite@4.5.3) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@4.5.3) debug: 4.3.4 - svelte: 4.2.13 - vite: 4.5.3(@types/node@20.12.7) + svelte: 4.2.15 + vite: 4.5.3 transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.13)(vite@5.1.3): - resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} + /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11): + resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} engines: {node: ^18.0.0 || >=20} peerDependencies: '@sveltejs/vite-plugin-svelte': ^3.0.0 svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.13)(vite@5.1.3) - debug: 4.3.4 - svelte: 4.2.13 - vite: 5.1.3(@types/node@20.12.7) - transitivePeerDependencies: - - supports-color - dev: true - - /@sveltejs/vite-plugin-svelte@2.5.3(svelte@4.2.12)(vite@4.5.3): - resolution: {integrity: sha512-erhNtXxE5/6xGZz/M9eXsmI7Pxa6MS7jyTy06zN3Ck++ldrppOnOlJwHHTsMC7DHDQdgUp4NAc4cDNQ9eGdB/w==} - engines: {node: ^14.18.0 || >= 16} - peerDependencies: - svelte: ^3.54.0 || ^4.0.0 || ^5.0.0-next.0 - vite: ^4.0.0 - dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.5.3)(svelte@4.2.12)(vite@4.5.3) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.15)(vite@5.2.11) debug: 4.3.4 - deepmerge: 4.3.1 - kleur: 4.1.5 - magic-string: 0.30.9 - svelte: 4.2.12 - svelte-hmr: 0.15.3(svelte@4.2.12) - vite: 4.5.3(@types/node@20.12.7) - vitefu: 0.2.5(vite@4.5.3) + svelte: 4.2.15 + vite: 5.2.11(@types/node@20.12.8) transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@4.5.3): + /@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@4.5.3): resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} engines: {node: ^18.0.0 || >=20} peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.13)(vite@4.5.3) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@4.5.3) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.9 - svelte: 4.2.13 - svelte-hmr: 0.16.0(svelte@4.2.13) - vite: 4.5.3(@types/node@20.12.7) + magic-string: 0.30.10 + svelte: 4.2.15 + svelte-hmr: 0.16.0(svelte@4.2.15) + vite: 4.5.3 vitefu: 0.2.5(vite@4.5.3) transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.13)(vite@5.1.3): + /@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.15)(vite@5.2.11): resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} engines: {node: ^18.0.0 || >=20} peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.13)(vite@5.1.3) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.15)(vite@5.2.11) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.9 - svelte: 4.2.13 - svelte-hmr: 0.16.0(svelte@4.2.13) - vite: 5.1.3(@types/node@20.12.7) - vitefu: 0.2.5(vite@5.1.3) + magic-string: 0.30.10 + svelte: 4.2.15 + svelte-hmr: 0.16.0(svelte@4.2.15) + vite: 5.2.11(@types/node@20.12.8) + vitefu: 0.2.5(vite@5.2.11) transitivePeerDependencies: - supports-color dev: true @@ -5149,8 +5295,8 @@ packages: path-browserify: 1.0.1 dev: true - /@tsconfig/node10@1.0.9: - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + /@tsconfig/node10@1.0.11: + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} dev: true /@tsconfig/node12@1.0.11: @@ -5165,27 +5311,12 @@ packages: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} dev: true - /@types/chai-subset@1.3.5: - resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} - dependencies: - '@types/chai': 4.3.11 - dev: true - - /@types/chai@4.3.11: - resolution: {integrity: sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==} - dev: true - - /@types/chrome@0.0.136: - resolution: {integrity: sha512-XDEiRhLkMd+SB7Iw3ZUIj/fov3wLd4HyTdLltVszkgl1dBfc3Rb7oPMVZ2Mz2TLqnF7Ow+StbR8E7r9lqpb4DA==} + /@types/bn.js@5.1.5: + resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} dependencies: - '@types/filesystem': 0.0.35 - '@types/har-format': 1.2.15 + '@types/node': 20.12.8 dev: false - /@types/cookie@0.5.4: - resolution: {integrity: sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==} - dev: true - /@types/cookie@0.6.0: resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} dev: true @@ -5198,7 +5329,7 @@ packages: /@types/dns-packet@5.6.5: resolution: {integrity: sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q==} dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.8 dev: false /@types/dom-screen-wake-lock@1.0.3: @@ -5215,26 +5346,13 @@ packages: /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - /@types/filesystem@0.0.35: - resolution: {integrity: sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ==} - dependencies: - '@types/filewriter': 0.0.33 - dev: false - - /@types/filewriter@0.0.33: - resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==} - dev: false - - /@types/har-format@1.2.15: - resolution: {integrity: sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==} - dev: false - /@types/http-cache-semantics@4.0.4: resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} dev: true /@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.3: resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} @@ -5263,14 +5381,20 @@ packages: /@types/ms@0.7.34: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + /@types/node-forge@1.3.11: + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + dependencies: + '@types/node': 20.12.8 + dev: false + /@types/node@18.19.31: resolution: {integrity: sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==} dependencies: undici-types: 5.26.5 dev: false - /@types/node@20.12.7: - resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} + /@types/node@20.12.8: + resolution: {integrity: sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w==} dependencies: undici-types: 5.26.5 @@ -5278,8 +5402,10 @@ packages: resolution: {integrity: sha512-fOBV8C1FIu2ELinoILQ+ApxcUKz4ngq+IWUYrxSGjXzzjUALijilampwkMgEtJ+h2njAW3pi853QpzNVCHB73w==} dev: true - /@types/parse-json@4.0.2: - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + /@types/pbkdf2@3.1.2: + resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} + dependencies: + '@types/node': 20.12.8 dev: false /@types/pug@2.0.10: @@ -5289,11 +5415,11 @@ packages: /@types/secp256k1@4.0.6: resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.8 dev: false - /@types/semver@7.5.7: - resolution: {integrity: sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==} + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: true /@types/stack-utils@2.0.3: @@ -5320,37 +5446,8 @@ packages: '@types/yargs-parser': 21.0.3 dev: false - /@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.7.0)(eslint@8.55.0)(typescript@5.4.3): - resolution: {integrity: sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.7.0(eslint@8.55.0)(typescript@5.4.3) - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/type-utils': 7.4.0(eslint@8.55.0)(typescript@5.4.3) - '@typescript-eslint/utils': 7.4.0(eslint@8.55.0)(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 7.4.0 - debug: 4.3.4 - eslint: 8.55.0 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare: 1.4.0 - semver: 7.6.0 - ts-api-utils: 1.2.1(typescript@5.4.3) - typescript: 5.4.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.7.0)(eslint@8.56.0)(typescript@5.4.3): - resolution: {integrity: sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==} + /@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -5361,46 +5458,25 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.7.0(eslint@8.56.0)(typescript@5.4.3) - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/type-utils': 7.4.0(eslint@8.56.0)(typescript@5.4.3) - '@typescript-eslint/utils': 7.4.0(eslint@8.56.0)(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 7.4.0 + '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.8.0 + '@typescript-eslint/type-utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.8.0 debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - typescript: 5.4.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@7.7.0(eslint@8.55.0)(typescript@5.4.3): - resolution: {integrity: sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 7.7.0 - debug: 4.3.4 - eslint: 8.55.0 - typescript: 5.4.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@7.7.0(eslint@8.56.0)(typescript@5.4.3): - resolution: {integrity: sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==} + /@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -5409,13 +5485,13 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/scope-manager': 7.8.0 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.8.0 debug: 4.3.4 - eslint: 8.56.0 - typescript: 5.4.3 + eslint: 8.57.0 + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true @@ -5428,44 +5504,16 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@7.4.0: - resolution: {integrity: sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==} - engines: {node: ^18.18.0 || >=20.0.0} - dependencies: - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/visitor-keys': 7.4.0 - dev: true - - /@typescript-eslint/scope-manager@7.7.0: - resolution: {integrity: sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==} - engines: {node: ^18.18.0 || >=20.0.0} - dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 - dev: true - - /@typescript-eslint/type-utils@7.4.0(eslint@8.55.0)(typescript@5.4.3): - resolution: {integrity: sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==} + /@typescript-eslint/scope-manager@7.8.0: + resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==} engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) - '@typescript-eslint/utils': 7.4.0(eslint@8.55.0)(typescript@5.4.3) - debug: 4.3.4 - eslint: 8.55.0 - ts-api-utils: 1.2.1(typescript@5.4.3) - typescript: 5.4.3 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/visitor-keys': 7.8.0 dev: true - /@typescript-eslint/type-utils@7.4.0(eslint@8.56.0)(typescript@5.4.3): - resolution: {integrity: sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==} + /@typescript-eslint/type-utils@7.8.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -5474,12 +5522,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) - '@typescript-eslint/utils': 7.4.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) debug: 4.3.4 - eslint: 8.56.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - typescript: 5.4.3 + eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true @@ -5489,17 +5537,12 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@7.4.0: - resolution: {integrity: sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==} - engines: {node: ^18.18.0 || >=20.0.0} - dev: true - - /@typescript-eslint/types@7.7.0: - resolution: {integrity: sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==} + /@typescript-eslint/types@7.8.0: + resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==} engines: {node: ^18.18.0 || >=20.0.0} dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.3): + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -5514,36 +5557,14 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.0 - tsutils: 3.21.0(typescript@5.4.3) - typescript: 5.4.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@7.4.0(typescript@5.4.3): - resolution: {integrity: sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/visitor-keys': 7.4.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - typescript: 5.4.3 + tsutils: 3.21.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@7.7.0(typescript@5.4.3): - resolution: {integrity: sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==} + /@typescript-eslint/typescript-estree@7.8.0(typescript@5.4.5): + resolution: {integrity: sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -5551,32 +5572,32 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/visitor-keys': 7.8.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.3) - typescript: 5.4.3 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.4.3): + /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.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.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.7 + '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.3) - eslint: 8.56.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) + eslint: 8.57.0 eslint-scope: 5.1.1 semver: 7.6.0 transitivePeerDependencies: @@ -5584,38 +5605,19 @@ packages: - typescript dev: true - /@typescript-eslint/utils@7.4.0(eslint@8.55.0)(typescript@5.4.3): - resolution: {integrity: sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.7 - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) - eslint: 8.55.0 - semver: 7.6.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/utils@7.4.0(eslint@8.56.0)(typescript@5.4.3): - resolution: {integrity: sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==} + /@typescript-eslint/utils@7.8.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.7 - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.3) - eslint: 8.56.0 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.8.0 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) + eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: - supports-color @@ -5630,19 +5632,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@7.4.0: - resolution: {integrity: sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==} - engines: {node: ^18.18.0 || >=20.0.0} - dependencies: - '@typescript-eslint/types': 7.4.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@typescript-eslint/visitor-keys@7.7.0: - resolution: {integrity: sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==} + /@typescript-eslint/visitor-keys@7.8.0: + resolution: {integrity: sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/types': 7.8.0 eslint-visitor-keys: 3.4.3 dev: true @@ -5650,100 +5644,61 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vitest/coverage-v8@1.4.0(vitest@0.32.4): - resolution: {integrity: sha512-4hDGyH1SvKpgZnIByr9LhGgCEuF9DKM34IBLCC/fVfy24Z3+PZ+Ii9hsVBsHvY1umM1aGPEjceRkzxCfcQ10wg==} + /@vitest/coverage-v8@1.6.0(vitest@1.6.0): + resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} peerDependencies: - vitest: 1.4.0 + vitest: 1.6.0 dependencies: - '@ampproject/remapping': 2.2.1 + '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 debug: 4.3.4 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.4 istanbul-reports: 3.1.7 - magic-string: 0.30.7 - magicast: 0.3.3 + magic-string: 0.30.10 + magicast: 0.3.4 picocolors: 1.0.0 std-env: 3.7.0 - strip-literal: 2.0.0 + strip-literal: 2.1.0 test-exclude: 6.0.0 - v8-to-istanbul: 9.2.0 - vitest: 0.32.4(jsdom@24.0.0) + vitest: 1.6.0(jsdom@24.0.0) transitivePeerDependencies: - supports-color dev: true - /@vitest/expect@0.32.4: - resolution: {integrity: sha512-m7EPUqmGIwIeoU763N+ivkFjTzbaBn0n9evsTOcde03ugy2avPs3kZbYmw3DkcH1j5mxhMhdamJkLQ6dM1bk/A==} - dependencies: - '@vitest/spy': 0.32.4 - '@vitest/utils': 0.32.4 - chai: 4.4.1 - dev: true - - /@vitest/expect@1.5.0: - resolution: {integrity: sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==} + /@vitest/expect@1.6.0: + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} dependencies: - '@vitest/spy': 1.5.0 - '@vitest/utils': 1.5.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 chai: 4.4.1 dev: true - /@vitest/runner@0.32.4: - resolution: {integrity: sha512-cHOVCkiRazobgdKLnczmz2oaKK9GJOw6ZyRcaPdssO1ej+wzHVIkWiCiNacb3TTYPdzMddYkCgMjZ4r8C0JFCw==} + /@vitest/runner@1.6.0: + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} dependencies: - '@vitest/utils': 0.32.4 - p-limit: 4.0.0 - pathe: 1.1.2 - dev: true - - /@vitest/runner@1.5.0: - resolution: {integrity: sha512-7HWwdxXP5yDoe7DTpbif9l6ZmDwCzcSIK38kTSIt6CFEpMjX4EpCgT6wUmS0xTXqMI6E/ONmfgRKmaujpabjZQ==} - dependencies: - '@vitest/utils': 1.5.0 + '@vitest/utils': 1.6.0 p-limit: 5.0.0 pathe: 1.1.2 dev: true - /@vitest/snapshot@0.32.4: - resolution: {integrity: sha512-IRpyqn9t14uqsFlVI2d7DFMImGMs1Q9218of40bdQQgMePwVdmix33yMNnebXcTzDU5eiV3eUsoxxH5v0x/IQA==} - dependencies: - magic-string: 0.30.9 - pathe: 1.1.2 - pretty-format: 29.7.0 - dev: true - - /@vitest/snapshot@1.5.0: - resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==} + /@vitest/snapshot@1.6.0: + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} dependencies: - magic-string: 0.30.9 + magic-string: 0.30.10 pathe: 1.1.2 pretty-format: 29.7.0 dev: true - /@vitest/spy@0.32.4: - resolution: {integrity: sha512-oA7rCOqVOOpE6rEoXuCOADX7Lla1LIa4hljI2MSccbpec54q+oifhziZIJXxlE/CvI2E+ElhBHzVu0VEvJGQKQ==} - dependencies: - tinyspy: 2.2.0 - dev: true - - /@vitest/spy@1.5.0: - resolution: {integrity: sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==} - dependencies: - tinyspy: 2.2.0 - dev: true - - /@vitest/utils@0.32.4: - resolution: {integrity: sha512-Gwnl8dhd1uJ+HXrYyV0eRqfmk9ek1ASE/LWfTCuWMw+d07ogHqp4hEAV28NiecimK6UY9DpSEPh+pXBA5gtTBg==} + /@vitest/spy@1.6.0: + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} dependencies: - diff-sequences: 29.6.3 - loupe: 2.3.7 - pretty-format: 29.7.0 + tinyspy: 2.2.1 dev: true - /@vitest/utils@1.5.0: - resolution: {integrity: sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==} + /@vitest/utils@1.6.0: + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 @@ -5751,7 +5706,7 @@ packages: pretty-format: 29.7.0 dev: true - /@wagmi/cli@2.1.4(typescript@5.4.3): + /@wagmi/cli@2.1.4(typescript@5.4.5): resolution: {integrity: sha512-vamvEo/GeBjFxb5oZCvby4YZDOrK/RqD+tcWb5X0pqmJDyWbN2Mkv9DYTtVB+OtfVUzFKciN/8Vhw8luMtOJbw==} hasBin: true peerDependencies: @@ -5760,8 +5715,8 @@ packages: typescript: optional: true dependencies: - abitype: 0.9.10(typescript@5.4.3)(zod@3.22.4) - bundle-require: 4.0.2(esbuild@0.19.12) + abitype: 0.9.10(typescript@5.4.5)(zod@3.23.6) + bundle-require: 4.1.0(esbuild@0.19.12) cac: 6.7.14 change-case: 4.1.2 chokidar: 3.6.0 @@ -5777,17 +5732,17 @@ packages: pathe: 1.1.2 picocolors: 1.0.0 prettier: 3.2.5 - typescript: 5.4.3 - viem: 2.9.29(typescript@5.4.3)(zod@3.22.4) - zod: 3.22.4 + typescript: 5.4.5 + viem: 2.9.31(typescript@5.4.5)(zod@3.23.6) + zod: 3.23.6 transitivePeerDependencies: - bufferutil - utf-8-validate - /@wagmi/connectors@4.1.18(@wagmi/core@2.8.0)(react-native@0.73.4)(react@18.2.0)(typescript@5.4.3)(viem@2.9.29): - resolution: {integrity: sha512-K/iLH/Z8jwvgPAYESU/uCQtQBvcIR1Jrqk+t2uCDSxew/tYtkOo2yOjtaPuOb+xJ5OrMGg+0tVHhGChYXry9Ow==} + /@wagmi/connectors@4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.9.31): + resolution: {integrity: sha512-6u/HbWlIS2MI5lxBYbsqNZIQT4sBleFt8rhzH7mJBrHH6v95LmeZZ3qZFpWdopx4bQ6maNEZOIJnCLhv7k37DQ==} peerDependencies: - '@wagmi/core': 2.6.9 + '@wagmi/core': 2.9.1 typescript: '>=5.0.4' viem: 2.x peerDependenciesMeta: @@ -5795,14 +5750,14 @@ packages: optional: true dependencies: '@coinbase/wallet-sdk': 3.9.1 - '@metamask/sdk': 0.14.3(react-native@0.73.4)(react@18.2.0) - '@safe-global/safe-apps-provider': 0.18.1(typescript@5.4.3) - '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.4.3) - '@wagmi/core': 2.8.0(react@18.2.0)(typescript@5.4.3)(viem@2.9.29) - '@walletconnect/ethereum-provider': 2.11.2(react@18.2.0) - '@walletconnect/modal': 2.6.2(react@18.2.0) - typescript: 5.4.3 - viem: 2.9.29(typescript@5.4.3)(zod@3.22.4) + '@metamask/sdk': 0.18.6(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1) + '@safe-global/safe-apps-provider': 0.18.1(typescript@5.4.5) + '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.4.5) + '@wagmi/core': 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) + '@walletconnect/ethereum-provider': 2.11.2(react@18.3.1) + '@walletconnect/modal': 2.6.2(react@18.3.1) + typescript: 5.4.5 + viem: 2.9.31(typescript@5.4.5)(zod@3.23.6) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -5819,17 +5774,20 @@ packages: - '@vercel/kv' - bufferutil - encoding + - ioredis - react - react-dom + - react-i18next - react-native - rollup - supports-color + - uWebSockets.js - utf-8-validate - zod dev: false - /@wagmi/core@2.8.0(react@18.2.0)(typescript@5.4.3)(viem@2.9.29): - resolution: {integrity: sha512-u0CWfbpdv2T3jE1yZQPwxvLlUVMymMoy73g6UE4XYNilF+EjdYu43EjWNvvB9lJcfSyYk6/VdKNHxJ2G+iBxYw==} + /@wagmi/core@2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.9.31): + resolution: {integrity: sha512-VUILlj0qFmZEa9XpNsYhIaQe3jsJdFGSRSbn+xsvGBo+yZpNxQXuaLo3+ntuv1kTFdw8Qzk17fLGy2U9a0XFdA==} peerDependencies: '@tanstack/query-core': '>=5.0.0' typescript: '>=5.0.4' @@ -5841,10 +5799,10 @@ packages: optional: true dependencies: eventemitter3: 5.0.1 - mipd: 0.0.5(typescript@5.4.3) - typescript: 5.4.3 - viem: 2.9.29(typescript@5.4.3)(zod@3.22.4) - zustand: 4.4.1(react@18.2.0) + mipd: 0.0.5(typescript@5.4.5) + typescript: 5.4.5 + viem: 2.9.31(typescript@5.4.5)(zod@3.23.6) + zustand: 4.4.1(react@18.3.1) transitivePeerDependencies: - '@types/react' - bufferutil @@ -5864,7 +5822,7 @@ packages: '@walletconnect/jsonrpc-ws-connection': 1.0.14 '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 - '@walletconnect/relay-api': 1.0.9 + '@walletconnect/relay-api': 1.0.10 '@walletconnect/relay-auth': 1.0.4 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 @@ -5889,7 +5847,8 @@ packages: - '@vercel/kv' - bufferutil - encoding - - supports-color + - ioredis + - uWebSockets.js - utf-8-validate dev: false @@ -5903,7 +5862,7 @@ packages: '@walletconnect/jsonrpc-ws-connection': 1.0.14 '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 - '@walletconnect/relay-api': 1.0.9 + '@walletconnect/relay-api': 1.0.10 '@walletconnect/relay-auth': 1.0.4 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 @@ -5928,7 +5887,8 @@ packages: - '@vercel/kv' - bufferutil - encoding - - supports-color + - ioredis + - uWebSockets.js - utf-8-validate dev: false @@ -5938,14 +5898,14 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/ethereum-provider@2.11.2(react@18.2.0): + /@walletconnect/ethereum-provider@2.11.2(react@18.3.1): resolution: {integrity: sha512-BUDqee0Uy2rCZVkW5Ao3q6Ado/3fePYnFdryVF+YL6bPhj+xQZ5OfKodl+uvs7Rwq++O5wTX2RqOTzpW7+v+Mg==} 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/modal': 2.6.2(react@18.2.0) + '@walletconnect/modal': 2.6.2(react@18.3.1) '@walletconnect/sign-client': 2.11.2 '@walletconnect/types': 2.11.2 '@walletconnect/universal-provider': 2.11.2 @@ -5967,19 +5927,20 @@ packages: - '@vercel/kv' - bufferutil - encoding + - ioredis - react - - supports-color + - uWebSockets.js - utf-8-validate dev: false - /@walletconnect/ethereum-provider@2.12.2(react@18.2.0): + /@walletconnect/ethereum-provider@2.12.2(react@18.3.1): resolution: {integrity: sha512-vBl2zCnNm2iPaomJdr5YT16cT7aa8cH2WFs6879XPngU5i7HXS3bU6TamhyhKKl13sdIfifmCkCC+RWn5GdPMw==} 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/modal': 2.6.2(react@18.2.0) + '@walletconnect/modal': 2.6.2(react@18.3.1) '@walletconnect/sign-client': 2.12.2 '@walletconnect/types': 2.12.2 '@walletconnect/universal-provider': 2.12.2 @@ -6001,8 +5962,9 @@ packages: - '@vercel/kv' - bufferutil - encoding + - ioredis - react - - supports-color + - uWebSockets.js - utf-8-validate dev: false @@ -6077,7 +6039,7 @@ packages: dependencies: '@walletconnect/safe-json': 1.0.2 idb-keyval: 6.2.1 - unstorage: 1.10.1(idb-keyval@6.2.1) + unstorage: 1.10.2(idb-keyval@6.2.1) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -6090,7 +6052,8 @@ packages: - '@planetscale/database' - '@upstash/redis' - '@vercel/kv' - - supports-color + - ioredis + - uWebSockets.js dev: false /@walletconnect/logger@2.1.2: @@ -6100,19 +6063,19 @@ packages: pino: 7.11.0 dev: false - /@walletconnect/modal-core@2.6.2(react@18.2.0): + /@walletconnect/modal-core@2.6.2(react@18.3.1): resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} dependencies: - valtio: 1.11.2(react@18.2.0) + valtio: 1.11.2(react@18.3.1) transitivePeerDependencies: - '@types/react' - react dev: false - /@walletconnect/modal-ui@2.6.2(react@18.2.0): + /@walletconnect/modal-ui@2.6.2(react@18.3.1): resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==} dependencies: - '@walletconnect/modal-core': 2.6.2(react@18.2.0) + '@walletconnect/modal-core': 2.6.2(react@18.3.1) lit: 2.8.0 motion: 10.16.2 qrcode: 1.5.3 @@ -6121,21 +6084,20 @@ packages: - react dev: false - /@walletconnect/modal@2.6.2(react@18.2.0): + /@walletconnect/modal@2.6.2(react@18.3.1): resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} dependencies: - '@walletconnect/modal-core': 2.6.2(react@18.2.0) - '@walletconnect/modal-ui': 2.6.2(react@18.2.0) + '@walletconnect/modal-core': 2.6.2(react@18.3.1) + '@walletconnect/modal-ui': 2.6.2(react@18.3.1) transitivePeerDependencies: - '@types/react' - react dev: false - /@walletconnect/relay-api@1.0.9: - resolution: {integrity: sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==} + /@walletconnect/relay-api@1.0.10: + resolution: {integrity: sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw==} dependencies: '@walletconnect/jsonrpc-types': 1.0.3 - tslib: 1.14.1 dev: false /@walletconnect/relay-auth@1.0.4: @@ -6182,7 +6144,8 @@ packages: - '@vercel/kv' - bufferutil - encoding - - supports-color + - ioredis + - uWebSockets.js - utf-8-validate dev: false @@ -6213,7 +6176,8 @@ packages: - '@vercel/kv' - bufferutil - encoding - - supports-color + - ioredis + - uWebSockets.js - utf-8-validate dev: false @@ -6245,7 +6209,8 @@ packages: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/kv' - - supports-color + - ioredis + - uWebSockets.js dev: false /@walletconnect/types@2.12.2: @@ -6270,7 +6235,8 @@ packages: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/kv' - - supports-color + - ioredis + - uWebSockets.js dev: false /@walletconnect/universal-provider@2.11.2: @@ -6300,7 +6266,8 @@ packages: - '@vercel/kv' - bufferutil - encoding - - supports-color + - ioredis + - uWebSockets.js - utf-8-validate dev: false @@ -6331,7 +6298,8 @@ packages: - '@vercel/kv' - bufferutil - encoding - - supports-color + - ioredis + - uWebSockets.js - utf-8-validate dev: false @@ -6343,7 +6311,7 @@ packages: '@stablelib/random': 1.0.2 '@stablelib/sha256': 1.0.1 '@stablelib/x25519': 1.0.3 - '@walletconnect/relay-api': 1.0.9 + '@walletconnect/relay-api': 1.0.10 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.11.2 @@ -6365,7 +6333,8 @@ packages: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/kv' - - supports-color + - ioredis + - uWebSockets.js dev: false /@walletconnect/utils@2.12.2: @@ -6376,7 +6345,7 @@ packages: '@stablelib/random': 1.0.2 '@stablelib/sha256': 1.0.1 '@stablelib/x25519': 1.0.3 - '@walletconnect/relay-api': 1.0.9 + '@walletconnect/relay-api': 1.0.10 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.12.2 @@ -6398,7 +6367,8 @@ packages: - '@react-native-async-storage/async-storage' - '@upstash/redis' - '@vercel/kv' - - supports-color + - ioredis + - uWebSockets.js dev: false /@walletconnect/window-getters@1.0.1: @@ -6421,12 +6391,12 @@ packages: dayjs: 1.11.10 dev: false - /@web3modal/core@4.1.11(react@18.2.0): + /@web3modal/core@4.1.11(react@18.3.1): resolution: {integrity: sha512-e475IIWywEtgH1CCB2Pl1C/wgPu0NzAvtTMOPSGNoHsw1ID2n6j/o4CURQb2HJjOoYQjTKKVkzXa44vFh2p9xw==} dependencies: '@web3modal/common': 4.1.11 '@web3modal/wallet': 4.1.11 - valtio: 1.11.2(react@18.2.0) + valtio: 1.11.2(react@18.3.1) transitivePeerDependencies: - '@types/react' - react @@ -6438,7 +6408,7 @@ packages: buffer: 6.0.3 dev: false - /@web3modal/scaffold-react@4.1.11(react@18.2.0): + /@web3modal/scaffold-react@4.1.11(react@18.3.1): resolution: {integrity: sha512-vouJHj77ZNKvR/Uyb3Hfc2UFSA4ZrrHmA0vbioCbgIh+V1rYT5XcAZDEu4AAo1qJ5NBRU1pkClVwAmQuWGY43w==} peerDependencies: react: '>=17' @@ -6449,24 +6419,24 @@ packages: react-dom: optional: true dependencies: - '@web3modal/scaffold': 4.1.11(react@18.2.0) - react: 18.2.0 + '@web3modal/scaffold': 4.1.11(react@18.3.1) + react: 18.3.1 transitivePeerDependencies: - '@types/react' dev: false - /@web3modal/scaffold-utils@4.1.11(react@18.2.0): + /@web3modal/scaffold-utils@4.1.11(react@18.3.1): resolution: {integrity: sha512-nsS9yK5tp1N/VfecLLPc8H/dGJCzn0jElWjRS92VfGPhOSiEh5PIrPyCl9o6wUZsp4fH1YUsoSY2EFpPsuCWgw==} dependencies: - '@web3modal/core': 4.1.11(react@18.2.0) + '@web3modal/core': 4.1.11(react@18.3.1) '@web3modal/polyfills': 4.1.11 - valtio: 1.11.2(react@18.2.0) + valtio: 1.11.2(react@18.3.1) transitivePeerDependencies: - '@types/react' - react dev: false - /@web3modal/scaffold-vue@4.1.11(react@18.2.0): + /@web3modal/scaffold-vue@4.1.11(react@18.3.1): resolution: {integrity: sha512-PmIfD2TlKkZZa6V0sqwDtZ7t62BEk5JjCHd380QaZwGTbPEwS99leTWLKBTaxAPShK2p7+aj2Txss63wIXLRFg==} peerDependencies: vue: '>=3' @@ -6474,18 +6444,18 @@ packages: vue: optional: true dependencies: - '@web3modal/scaffold': 4.1.11(react@18.2.0) + '@web3modal/scaffold': 4.1.11(react@18.3.1) transitivePeerDependencies: - '@types/react' - react dev: false - /@web3modal/scaffold@4.1.11(react@18.2.0): + /@web3modal/scaffold@4.1.11(react@18.3.1): resolution: {integrity: sha512-n8bP3cJNQxV8OD3s8bSj8QDbZvjn8a1Ui81jo2a3rIxOUAlD/cKRM8ivmNxiUdBMae8GP5CLiWtkIptmSLw40Q==} dependencies: '@web3modal/common': 4.1.11 - '@web3modal/core': 4.1.11(react@18.2.0) - '@web3modal/siwe': 4.1.11(react@18.2.0) + '@web3modal/core': 4.1.11(react@18.3.1) + '@web3modal/siwe': 4.1.11(react@18.3.1) '@web3modal/ui': 4.1.11 '@web3modal/wallet': 4.1.11 lit: 3.1.0 @@ -6494,13 +6464,13 @@ packages: - react dev: false - /@web3modal/siwe@4.1.11(react@18.2.0): + /@web3modal/siwe@4.1.11(react@18.3.1): resolution: {integrity: sha512-gndcNA351mkAR0wUsO4dLS9CbpcFo+AQ2CUXF0Jx83DwaBStCVsX3yllfnYKh/gpVetF3B48mRUt9TTTJJ79dA==} dependencies: - '@web3modal/core': 4.1.11(react@18.2.0) - '@web3modal/scaffold-utils': 4.1.11(react@18.2.0) + '@web3modal/core': 4.1.11(react@18.3.1) + '@web3modal/scaffold-utils': 4.1.11(react@18.3.1) lit: 3.1.0 - valtio: 1.11.2(react@18.2.0) + valtio: 1.11.2(react@18.3.1) transitivePeerDependencies: - '@types/react' - react @@ -6513,7 +6483,7 @@ packages: qrcode: 1.5.3 dev: false - /@web3modal/wagmi@4.1.11(@wagmi/connectors@4.1.18)(@wagmi/core@2.8.0)(react@18.2.0)(viem@2.9.29): + /@web3modal/wagmi@4.1.11(@wagmi/connectors@4.3.3)(@wagmi/core@2.9.1)(react@18.3.1)(viem@2.9.31): resolution: {integrity: sha512-VoXV9idD0yV7jx0F2Xk722VXqQNCDKqDc+LR8WsuOU64TiTLJx9UDQpNcoigbC3bYCi/4Cpw41iSGgs7utbgyQ==} peerDependencies: '@wagmi/connectors': '>=4.0.0' @@ -6530,16 +6500,16 @@ packages: vue: optional: true dependencies: - '@wagmi/connectors': 4.1.18(@wagmi/core@2.8.0)(react-native@0.73.4)(react@18.2.0)(typescript@5.4.3)(viem@2.9.29) - '@wagmi/core': 2.8.0(react@18.2.0)(typescript@5.4.3)(viem@2.9.29) + '@wagmi/connectors': 4.3.3(@wagmi/core@2.9.1)(react-i18next@13.5.0)(react-native@0.74.1)(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) + '@wagmi/core': 2.9.1(react@18.3.1)(typescript@5.4.5)(viem@2.9.31) '@web3modal/polyfills': 4.1.11 - '@web3modal/scaffold': 4.1.11(react@18.2.0) - '@web3modal/scaffold-react': 4.1.11(react@18.2.0) - '@web3modal/scaffold-utils': 4.1.11(react@18.2.0) - '@web3modal/scaffold-vue': 4.1.11(react@18.2.0) - '@web3modal/siwe': 4.1.11(react@18.2.0) - react: 18.2.0 - viem: 2.9.29(typescript@5.4.3)(zod@3.22.4) + '@web3modal/scaffold': 4.1.11(react@18.3.1) + '@web3modal/scaffold-react': 4.1.11(react@18.3.1) + '@web3modal/scaffold-utils': 4.1.11(react@18.3.1) + '@web3modal/scaffold-vue': 4.1.11(react@18.3.1) + '@web3modal/siwe': 4.1.11(react@18.3.1) + react: 18.3.1 + viem: 2.9.31(typescript@5.4.5)(zod@3.23.6) transitivePeerDependencies: - '@types/react' dev: false @@ -6551,23 +6521,15 @@ packages: zod: 3.22.4 dev: false - /@zerodevx/svelte-toast@0.9.5(svelte@4.2.12): - resolution: {integrity: sha512-JLeB/oRdJfT+dz9A5bgd3Z7TuQnBQbeUtXrGIrNWMGqWbabpepBF2KxtWVhL2qtxpRqhae2f6NAOzH7xs4jUSw==} - peerDependencies: - svelte: ^3.57.0 || ^4.0.0 - dependencies: - svelte: 4.2.12 - dev: false - - /@zerodevx/svelte-toast@0.9.5(svelte@4.2.13): + /@zerodevx/svelte-toast@0.9.5(svelte@4.2.15): resolution: {integrity: sha512-JLeB/oRdJfT+dz9A5bgd3Z7TuQnBQbeUtXrGIrNWMGqWbabpepBF2KxtWVhL2qtxpRqhae2f6NAOzH7xs4jUSw==} peerDependencies: svelte: ^3.57.0 || ^4.0.0 dependencies: - svelte: 4.2.13 + svelte: 4.2.15 dev: false - /abitype@0.9.10(typescript@5.4.3)(zod@3.22.4): + /abitype@0.9.10(typescript@5.4.5)(zod@3.23.6): resolution: {integrity: sha512-FIS7U4n7qwAT58KibwYig5iFG4K61rbhAqaQh/UWj8v1Y8mjX3F8TC9gd8cz9yT1TYel9f8nS5NO5kZp2RW0jQ==} peerDependencies: typescript: '>=5.0.4' @@ -6578,10 +6540,10 @@ packages: zod: optional: true dependencies: - typescript: 5.4.3 - zod: 3.22.4 + typescript: 5.4.5 + zod: 3.23.6 - /abitype@0.9.8(typescript@5.4.3): + /abitype@0.9.8(typescript@5.4.5): resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} peerDependencies: typescript: '>=5.0.4' @@ -6592,10 +6554,10 @@ packages: zod: optional: true dependencies: - typescript: 5.4.3 + typescript: 5.4.5 dev: false - /abitype@1.0.0(typescript@5.4.3)(zod@3.22.4): + /abitype@1.0.0(typescript@5.4.5)(zod@3.23.6): resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} peerDependencies: typescript: '>=5.0.4' @@ -6606,10 +6568,10 @@ packages: zod: optional: true dependencies: - typescript: 5.4.3 - zod: 3.22.4 + typescript: 5.4.5 + zod: 3.23.6 - /abitype@1.0.2(typescript@5.4.3): + /abitype@1.0.2(typescript@5.4.5): resolution: {integrity: sha512-aFt4k2H+eiAKy/zxtnORa9iIb10BMBeWL18l8v4+QuwYEBXPxxjSB1bFZCzQmKPoj8m7j68K705l3uY+E2gAjg==} peerDependencies: typescript: '>=5.0.4' @@ -6620,7 +6582,7 @@ packages: zod: optional: true dependencies: - typescript: 5.4.3 + typescript: 5.4.5 dev: true /abort-controller@3.0.0: @@ -6660,8 +6622,8 @@ packages: resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} dev: true - /agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + /agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} dependencies: debug: 4.3.4 @@ -6678,8 +6640,8 @@ packages: uri-js: 4.4.1 dev: true - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + /ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -6732,8 +6694,8 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - /antlr4@4.13.1: - resolution: {integrity: sha512-kiXTspaRYvnIArgE97z5YVVf/cDVQABr3abFRR6mE7yesLMkgu4ujuyV/sgxafQ8wgve0DJQUJ38Z8tkgA2izA==} + /antlr4@4.13.1-patch-1: + resolution: {integrity: sha512-OjFLWWLzDMV9rdFhpvroCWR4ooktNg9/nvVYSA5z28wuVpU36QUNuioR1XLnQtcjVlf8npjyz593PxnU/f/Cow==} engines: {node: '>=16'} dev: true @@ -6777,20 +6739,22 @@ packages: dependencies: dequal: 2.0.3 - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 - is-array-buffer: 3.0.2 + is-array-buffer: 3.0.4 dev: true - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 dev: true @@ -6800,15 +6764,16 @@ packages: engines: {node: '>=8'} dev: true - /array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + /array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.4 dev: true /array.prototype.flat@1.3.2: @@ -6817,7 +6782,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 dev: true @@ -6827,21 +6792,22 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 dev: true - /arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 + array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-errors: 1.3.0 get-intrinsic: 1.2.4 - is-array-buffer: 3.0.2 - is-shared-array-buffer: 1.0.2 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 dev: true /asap@2.0.6: @@ -6891,22 +6857,6 @@ packages: engines: {node: '>=8.0.0'} dev: false - /autoprefixer@10.4.18(postcss@8.4.38): - resolution: {integrity: sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001593 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - dev: true - /autoprefixer@10.4.19(postcss@8.4.38): resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} engines: {node: ^10 || ^12 || >=14} @@ -6915,22 +6865,23 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001614 + caniuse-lite: 1.0.30001615 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 postcss: 8.4.38 postcss-value-parser: 4.2.0 - dev: false - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 - /axios@1.6.7(debug@4.3.4): - resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} + /axios@1.6.8(debug@4.3.4): + resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} dependencies: - follow-redirects: 1.15.5(debug@4.3.4) + follow-redirects: 1.15.6(debug@4.3.4) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -6942,63 +6893,54 @@ packages: dependencies: dequal: 2.0.3 - /babel-core@7.0.0-bridge.0(@babel/core@7.23.9): + /babel-core@7.0.0-bridge.0(@babel/core@7.24.5): resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - dev: false - - /babel-plugin-macros@3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} - engines: {node: '>=10', npm: '>=6'} - dependencies: - '@babel/runtime': 7.23.9 - cosmiconfig: 7.1.0 - resolve: 1.22.8 + '@babel/core': 7.24.5 dev: false - /babel-plugin-polyfill-corejs2@0.4.8(@babel/core@7.23.9): - resolution: {integrity: sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==} + /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.5): + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.5 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.23.9): - resolution: {integrity: sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==} + /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.5): + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) - core-js-compat: 3.36.0 + '@babel/core': 7.24.5 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) + core-js-compat: 3.37.0 transitivePeerDependencies: - supports-color dev: false - /babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.23.9): - resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} + /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.5): + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) transitivePeerDependencies: - supports-color dev: false - /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.23.9): + /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.24.5): resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} dependencies: - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) transitivePeerDependencies: - '@babel/core' dev: false @@ -7006,6 +6948,16 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + /base-x@3.0.9: + resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /base-x@4.0.0: + resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + dev: false + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -7013,17 +6965,12 @@ packages: resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} dev: true - /big-integer@1.6.52: - resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} - engines: {node: '>=0.6'} - dev: true - /bignumber.js@9.1.2: resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} dev: false - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} /bl@4.1.0: @@ -7041,10 +6988,14 @@ packages: inherits: 2.0.4 readable-stream: 3.6.2 + /blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + dev: false + /blob-to-it@2.0.6: resolution: {integrity: sha512-xveo/z3QNilIJgCZAjzvx2uWWVHE4JzOy7eMp45zkuBsmwZMgjfhn2h/+BsZPaByVFa3u1W/OBUleNiqgMtVpQ==} dependencies: - browser-readablestream-to-it: 2.0.6 + browser-readablestream-to-it: 2.0.7 dev: false /bn.js@4.11.6: @@ -7061,13 +7012,6 @@ packages: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} dev: false - /bplist-parser@0.2.0: - resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} - engines: {node: '>= 5.10.0'} - dependencies: - big-integer: 1.6.52 - dev: true - /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -7092,8 +7036,19 @@ packages: resolution: {integrity: sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==} dev: false - /browser-readablestream-to-it@2.0.6: - resolution: {integrity: sha512-csJm66U/gTC6VHjeaOaziK6Y6ENdrzlNLdXnsdnvGX+3hGvedkxTyiMk2WbgKR8F15ACxDLJhDuE/cmovLPBQQ==} + /browser-readablestream-to-it@2.0.7: + resolution: {integrity: sha512-g1Aznml3HmqTLSXylZhGwdfnAa67+vlNAYhT9ROJZkAxY7yYmWusND10olvCMPe4sVhZyVwn5tPkRzOg85kBEg==} + dev: false + + /browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 dev: false /browserslist@4.23.0: @@ -7101,10 +7056,30 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001593 - electron-to-chromium: 1.4.676 + caniuse-lite: 1.0.30001615 + electron-to-chromium: 1.4.756 node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) + update-browserslist-db: 1.0.15(browserslist@4.23.0) + + /bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + dependencies: + base-x: 3.0.9 + dev: false + + /bs58@5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + dependencies: + base-x: 4.0.0 + dev: false + + /bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + dependencies: + bs58: 4.0.1 + create-hash: 1.2.0 + safe-buffer: 5.2.1 + dev: false /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -7124,6 +7099,10 @@ packages: resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} dev: false + /buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: false + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -7142,7 +7121,7 @@ packages: engines: {node: '>=6.14.2'} requiresBuild: true dependencies: - node-gyp-build: 4.8.0 + node-gyp-build: 4.8.1 dev: false /builtin-modules@3.3.0: @@ -7150,21 +7129,14 @@ packages: engines: {node: '>=6'} dev: true - /builtins@5.0.1: - resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + /builtins@5.1.0: + resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} dependencies: semver: 7.6.0 dev: true - /bundle-name@3.0.0: - resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} - engines: {node: '>=12'} - dependencies: - run-applescript: 5.0.0 - dev: true - - /bundle-require@4.0.2(esbuild@0.19.12): - resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==} + /bundle-require@4.1.0(esbuild@0.19.12): + resolution: {integrity: sha512-FeArRFM+ziGkRViKRnSTbHZc35dgmR9yNog05Kn0+ItI59pOAISGvnnIwW1WgFZQW59IxD9QpJnUPkdIPfZuXg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.17' @@ -7200,7 +7172,7 @@ packages: http-cache-semantics: 4.1.1 keyv: 4.5.4 mimic-response: 4.0.0 - normalize-url: 8.0.0 + normalize-url: 8.0.1 responselike: 3.0.0 dev: true @@ -7212,7 +7184,7 @@ packages: es-errors: 1.3.0 function-bind: 1.1.2 get-intrinsic: 1.2.4 - set-function-length: 1.2.1 + set-function-length: 1.2.2 /caller-callsite@2.0.0: resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} @@ -7236,6 +7208,7 @@ packages: /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + dev: true /camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} @@ -7257,12 +7230,8 @@ packages: engines: {node: '>=10'} dev: false - /caniuse-lite@1.0.30001593: - resolution: {integrity: sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==} - - /caniuse-lite@1.0.30001614: - resolution: {integrity: sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==} - dev: false + /caniuse-lite@1.0.30001615: + resolution: {integrity: sha512-1IpazM5G3r38meiae0bHRnPhz+CBQ3ZLqbQMtrg+AsTPKAXgW38JNsXkyZ+v8waCsDmPq87lmfun5Q2AGysNEQ==} /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -7362,23 +7331,10 @@ packages: engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@types/node': 20.12.7 - escape-string-regexp: 4.0.0 - is-wsl: 2.2.0 - lighthouse-logger: 1.4.2 - transitivePeerDependencies: - - supports-color - dev: false - - /chromium-edge-launcher@1.0.0: - resolution: {integrity: sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==} - dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.8 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 - mkdirp: 1.0.4 - rimraf: 3.0.2 transitivePeerDependencies: - supports-color dev: false @@ -7392,18 +7348,25 @@ packages: engines: {node: '>=8'} dev: false + /cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + /citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} dependencies: consola: 3.2.3 dev: false - /cli-color@2.0.3: - resolution: {integrity: sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==} + /cli-color@2.0.4: + resolution: {integrity: sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==} engines: {node: '>=0.10'} dependencies: - d: 1.0.1 - es5-ext: 0.10.62 + d: 1.0.2 + es5-ext: 0.10.64 es6-iterator: 2.0.3 memoizee: 0.4.15 timers-ext: 0.1.7 @@ -7469,11 +7432,6 @@ packages: engines: {node: '>=6'} dev: false - /cluster-key-slot@1.1.2: - resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} - engines: {node: '>=0.10.0'} - dev: false - /code-block-writer@12.0.0: resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} dev: true @@ -7584,6 +7542,9 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + /confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + /config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} dependencies: @@ -7618,29 +7579,20 @@ packages: /convert-csv-to-json@2.46.0: resolution: {integrity: sha512-Q7PjRjhECa5nBUEGbsKXvB8YaygVUesF/sYnaoCPTWoiwJEDCbLd2CcFDE1y80Q347IaTQukCQSCP2fR5IW+5g==} - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: false - /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - /cookie-es@1.0.0: - resolution: {integrity: sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==} + /cookie-es@1.1.0: + resolution: {integrity: sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==} dev: false - /cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - dev: true - /cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} dev: true - /core-js-compat@3.36.0: - resolution: {integrity: sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==} + /core-js-compat@3.37.0: + resolution: {integrity: sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==} dependencies: browserslist: 4.23.0 dev: false @@ -7659,18 +7611,7 @@ packages: parse-json: 4.0.0 dev: false - /cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - dev: false - - /cosmiconfig@8.3.6(typescript@5.4.3): + /cosmiconfig@8.3.6(typescript@5.4.5): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -7683,7 +7624,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 5.4.3 + typescript: 5.4.5 dev: true /crc-32@1.2.2: @@ -7692,6 +7633,27 @@ packages: hasBin: true dev: false + /create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + 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==} + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + 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==} dev: true @@ -7719,8 +7681,13 @@ packages: shebang-command: 2.0.0 which: 2.0.2 - /crossws@0.1.1: - resolution: {integrity: sha512-c9c/o7bS3OjsdpSkvexpka0JNlesBF2JU9B2V1yNsYGwRbAafxhJQ7VI9b48D5bpONz/oxbPGMzBojy9sXoQIQ==} + /crossws@0.2.4: + resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} + peerDependencies: + uWebSockets.js: '*' + peerDependenciesMeta: + uWebSockets.js: + optional: true dev: false /crypto-js@3.3.0: @@ -7756,20 +7723,16 @@ packages: rrweb-cssom: 0.6.0 dev: true - /csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - requiresBuild: true - dev: false - /culori@3.3.0: resolution: {integrity: sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - /d@1.0.1: - resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + /d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} dependencies: - es5-ext: 0.10.62 - type: 1.2.0 + es5-ext: 0.10.64 + type: 2.7.2 /dag-jose@4.0.0: resolution: {integrity: sha512-tw595L3UYoOUT9dSJPbBEG/qpRpw24kRZxa5SLRnlnr+g5L7O8oEs1d3W5TiVA1oJZbthVsf0Vi3zFN66qcEBA==} @@ -7778,19 +7741,8 @@ packages: multiformats: 11.0.2 dev: false - /daisyui@4.10.1(postcss@8.4.38): - resolution: {integrity: sha512-Ds0Z0Fv+Xf6ZEqV4Q5JIOeKfg83xxnww0Lzid0V94vPtlQ0yYmucEa33zSctsX2VEgBALtmk5zVEqd59pnUbuQ==} - engines: {node: '>=16.9.0'} - dependencies: - css-selector-tokenizer: 0.8.0 - culori: 3.3.0 - picocolors: 1.0.0 - postcss-js: 4.0.1(postcss@8.4.38) - transitivePeerDependencies: - - postcss - - /daisyui@4.7.2(postcss@8.4.38): - resolution: {integrity: sha512-9UCss12Zmyk/22u+JbkVrHHxOzFOyY17HuqP5LeswI4hclbj6qbjJTovdj2zRy8cCH6/n6Wh0lTLjriGnyGh0g==} + /daisyui@4.10.5(postcss@8.4.38): + resolution: {integrity: sha512-eOFUo5yEg0WV+3VK2C/+/XN1WH/OhFV4HzrMG5etAzcnB2hPg3aoR7gF1ZUpIv+b5MglLuAVMgub0rv660EgZg==} engines: {node: '>=16.9.0'} dependencies: css-selector-tokenizer: 0.8.0 @@ -7799,7 +7751,6 @@ packages: postcss-js: 4.0.1(postcss@8.4.38) transitivePeerDependencies: - postcss - dev: true /data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} @@ -7809,11 +7760,38 @@ packages: whatwg-url: 14.0.0 dev: true + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + /date-fns@2.30.0: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 dev: false /dayjs@1.10.1: @@ -7824,6 +7802,10 @@ packages: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} dev: false + /dayjs@1.11.11: + resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} + dev: false + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -7901,24 +7883,6 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - /default-browser-id@3.0.0: - resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} - engines: {node: '>=12'} - dependencies: - bplist-parser: 0.2.0 - untildify: 4.0.0 - dev: true - - /default-browser@4.0.0: - resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} - engines: {node: '>=14.16'} - dependencies: - bundle-name: 3.0.0 - default-browser-id: 3.0.0 - execa: 7.2.0 - titleize: 3.0.0 - dev: true - /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: @@ -7942,11 +7906,6 @@ packages: engines: {node: '>=8'} dev: false - /define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} - dev: true - /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -7968,24 +7927,10 @@ packages: resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} dev: false - /denque@2.1.0: - resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} - engines: {node: '>=0.10'} - dev: false - /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} - /deprecated-react-native-prop-types@5.0.0: - resolution: {integrity: sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ==} - engines: {node: '>=18'} - dependencies: - '@react-native/normalize-colors': 0.73.2 - invariant: 2.2.4 - prop-types: 15.8.1 - dev: false - /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -8019,8 +7964,8 @@ packages: engines: {node: '>=8'} dev: false - /devalue@4.3.2: - resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} + /devalue@5.0.0: + resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} dev: true /didyoumean@1.2.2: @@ -8053,9 +7998,9 @@ packages: resolution: {integrity: sha512-zjRYFhq+CsxPAouQWzOsxNMvEN+SHisjzhX8EMxd2Y0EG3thvn6wXQgMJLnTDImkhe4jhLbOQpXtL10nALBOSA==} dependencies: debug: 4.3.4 - native-fetch: 4.0.2(undici@5.28.3) + native-fetch: 4.0.2(undici@5.28.4) receptacle: 1.3.2 - undici: 5.28.3 + undici: 5.28.4 transitivePeerDependencies: - supports-color dev: false @@ -8095,13 +8040,13 @@ packages: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} - /duplexify@4.1.2: - resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} + /duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 3.6.2 - stream-shift: 1.0.1 + stream-shift: 1.0.3 dev: false /eastasianwidth@0.2.0: @@ -8126,8 +8071,8 @@ packages: encoding: 0.1.13 dev: false - /electron-to-chromium@1.4.676: - resolution: {integrity: sha512-uHt4FB8SeYdhcOsj2ix/C39S7sPSNFJpzShjxGOm1KdF4MHyGqGi389+T5cErsodsijojXilYaHIKKqJfqh7uQ==} + /electron-to-chromium@1.4.756: + resolution: {integrity: sha512-RJKZ9+vEBMeiPAvKNWyZjuYyUqMndcP1f335oHqn3BEQbs2NFtVrnK5+6Xg5wSM9TknNNpWghGDUCKGYF+xWXw==} /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -8140,6 +8085,18 @@ packages: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 + /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 + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -8167,13 +8124,13 @@ packages: once: 1.4.0 dev: false - /engine.io-client@6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.3): + /engine.io-client@6.5.3: resolution: {integrity: sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==} dependencies: - '@socket.io/component-emitter': 3.1.0 + '@socket.io/component-emitter': 3.1.2 debug: 4.3.4 engine.io-parser: 5.2.2 - ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + ws: 8.11.0 xmlhttprequest-ssl: 2.0.0 transitivePeerDependencies: - bufferutil @@ -8191,8 +8148,8 @@ packages: engines: {node: '>=0.12'} dev: true - /envinfo@7.11.1: - resolution: {integrity: sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==} + /envinfo@7.13.0: + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} engines: {node: '>=4'} hasBin: true dev: false @@ -8220,49 +8177,56 @@ packages: escape-html: 1.0.3 dev: false - /es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 call-bind: 1.0.7 - es-set-tostringtag: 2.0.2 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 get-intrinsic: 1.2.4 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.1 - internal-slot: 1.0.6 - is-array-buffer: 3.0.2 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 is-callable: 1.2.7 - is-negative-zero: 2.0.2 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 is-string: 1.0.7 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 is-weakref: 1.0.2 object-inspect: 1.13.1 object-keys: 1.1.1 object.assign: 4.1.5 - regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.0.1 - 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 - typed-array-length: 1.0.4 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 unbox-primitive: 1.0.2 - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 dev: true /es-define-property@1.0.0: @@ -8275,19 +8239,26 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - /es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + dev: true + + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.4 - has-tostringtag: 1.0.0 - hasown: 2.0.1 + has-tostringtag: 1.0.2 + hasown: 2.0.2 dev: true /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - hasown: 2.0.1 + hasown: 2.0.2 dev: true /es-to-primitive@1.2.1: @@ -8299,39 +8270,41 @@ packages: is-symbol: 1.0.4 dev: true - /es5-ext@0.10.62: - resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} + /es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} engines: {node: '>=0.10'} requiresBuild: true dependencies: es6-iterator: 2.0.3 - es6-symbol: 3.1.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 next-tick: 1.1.0 /es6-iterator@2.0.3: resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} dependencies: - d: 1.0.1 - es5-ext: 0.10.62 - es6-symbol: 3.1.3 + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 /es6-promise@3.3.1: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} dev: true - /es6-symbol@3.1.3: - resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + /es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} dependencies: - d: 1.0.1 + d: 1.0.2 ext: 1.7.0 /es6-weak-map@2.0.3: resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} dependencies: - d: 1.0.1 - es5-ext: 0.10.62 + d: 1.0.2 + es5-ext: 0.10.64 es6-iterator: 2.0.3 - es6-symbol: 3.1.3 + es6-symbol: 3.1.4 /esbuild@0.18.20: resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} @@ -8393,6 +8366,37 @@ packages: '@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-x64': 0.19.12 + /esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + dev: true + /escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -8414,68 +8418,26 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-compat-utils@0.1.2(eslint@8.55.0): - resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' - dependencies: - eslint: 8.55.0 - dev: true - - /eslint-compat-utils@0.1.2(eslint@8.56.0): - resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' - dependencies: - eslint: 8.56.0 - dev: true - - /eslint-compat-utils@0.5.0(eslint@8.56.0): + /eslint-compat-utils@0.5.0(eslint@8.57.0): resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 8.56.0 + eslint: 8.57.0 semver: 7.6.0 dev: true - /eslint-config-prettier@9.1.0(eslint@8.55.0): - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 8.55.0 - dev: true - - /eslint-config-prettier@9.1.0(eslint@8.56.0): + /eslint-config-prettier@9.1.0(eslint@8.57.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.56.0 - dev: true - - /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.55.0): - resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} - engines: {node: '>=12.0.0'} - peerDependencies: - eslint: ^8.0.1 - eslint-plugin-import: ^2.25.2 - eslint-plugin-n: '^15.0.0 || ^16.0.0 ' - eslint-plugin-promise: ^6.0.0 - dependencies: - eslint: 8.55.0 - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@7.7.0)(eslint@8.55.0) - eslint-plugin-n: 16.6.2(eslint@8.55.0) - eslint-plugin-promise: 6.1.1(eslint@8.55.0) + eslint: 8.57.0 dev: true - /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.56.0): + /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.57.0): resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} engines: {node: '>=12.0.0'} peerDependencies: @@ -8484,10 +8446,10 @@ packages: eslint-plugin-n: '^15.0.0 || ^16.0.0 ' eslint-plugin-promise: ^6.0.0 dependencies: - eslint: 8.56.0 - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@7.7.0)(eslint@8.56.0) - eslint-plugin-n: 16.6.2(eslint@8.56.0) - eslint-plugin-promise: 6.1.1(eslint@8.56.0) + eslint: 8.57.0 + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.0)(eslint@8.57.0) + eslint-plugin-n: 16.6.2(eslint@8.57.0) + eslint-plugin-promise: 6.1.1(eslint@8.57.0) dev: true /eslint-import-resolver-node@0.3.9: @@ -8500,37 +8462,8 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.7.0)(eslint-import-resolver-node@0.3.9)(eslint@8.55.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': 7.7.0(eslint@8.55.0)(typescript@5.4.3) - debug: 3.2.7 - eslint: 8.55.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.7.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.8.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -8550,97 +8483,39 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.7.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) debug: 3.2.7 - eslint: 8.56.0 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.5.0(eslint@8.55.0): - resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '>=8' - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) - '@eslint-community/regexpp': 4.10.0 - eslint: 8.55.0 - eslint-compat-utils: 0.1.2(eslint@8.55.0) - dev: true - - /eslint-plugin-es-x@7.5.0(eslint@8.56.0): - resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} + /eslint-plugin-es-x@7.6.0(eslint@8.57.0): + resolution: {integrity: sha512-I0AmeNgevgaTR7y2lrVCJmGYF0rjoznpDvqV/kIkZSZbZ8Rw3eu4cGlvBBULScfkSOCzqKbff5LR4CNrV7mZHA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 - eslint: 8.56.0 - eslint-compat-utils: 0.1.2(eslint@8.56.0) - dev: true - - /eslint-plugin-es@3.0.1(eslint@8.55.0): - resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=4.19.1' - dependencies: - eslint: 8.55.0 - eslint-utils: 2.1.0 - regexpp: 3.2.0 + eslint: 8.57.0 + eslint-compat-utils: 0.5.0(eslint@8.57.0) dev: true - /eslint-plugin-es@3.0.1(eslint@8.56.0): + /eslint-plugin-es@3.0.1(eslint@8.57.0): resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=4.19.1' dependencies: - eslint: 8.56.0 + eslint: 8.57.0 eslint-utils: 2.1.0 regexpp: 3.2.0 dev: true - /eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.7.0)(eslint@8.55.0): - resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} - 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': 7.7.0(eslint@8.55.0)(typescript@5.4.3) - 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.55.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.0)(eslint-import-resolver-node@0.3.9)(eslint@8.55.0) - hasown: 2.0.1 - is-core-module: 2.13.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 - 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.29.0(@typescript-eslint/parser@7.7.0)(eslint@8.56.0): - resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.8.0)(eslint@8.57.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -8649,62 +8524,42 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.7.0(eslint@8.56.0)(typescript@5.4.3) - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.3 + '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.56.0 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) - hasown: 2.0.1 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.8.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + hasown: 2.0.2 is-core-module: 2.13.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.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 semver: 6.3.1 - tsconfig-paths: 3.14.2 + tsconfig-paths: 3.15.0 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color dev: true - /eslint-plugin-n@16.6.2(eslint@8.55.0): - resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - eslint: '>=7.0.0' - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) - builtins: 5.0.1 - eslint: 8.55.0 - eslint-plugin-es-x: 7.5.0(eslint@8.55.0) - get-tsconfig: 4.7.2 - globals: 13.24.0 - ignore: 5.3.1 - is-builtin-module: 3.2.1 - is-core-module: 2.13.1 - minimatch: 3.1.2 - resolve: 1.22.8 - semver: 7.6.0 - dev: true - - /eslint-plugin-n@16.6.2(eslint@8.56.0): + /eslint-plugin-n@16.6.2(eslint@8.57.0): resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - builtins: 5.0.1 - eslint: 8.56.0 - eslint-plugin-es-x: 7.5.0(eslint@8.56.0) - get-tsconfig: 4.7.2 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + builtins: 5.1.0 + eslint: 8.57.0 + eslint-plugin-es-x: 7.6.0(eslint@8.57.0) + get-tsconfig: 4.7.3 globals: 13.24.0 ignore: 5.3.1 is-builtin-module: 3.2.1 @@ -8714,29 +8569,14 @@ packages: semver: 7.6.0 dev: true - /eslint-plugin-node@11.1.0(eslint@8.55.0): - resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=5.16.0' - dependencies: - eslint: 8.55.0 - eslint-plugin-es: 3.0.1(eslint@8.55.0) - eslint-utils: 2.1.0 - ignore: 5.3.1 - minimatch: 3.1.2 - resolve: 1.22.8 - semver: 6.3.1 - dev: true - - /eslint-plugin-node@11.1.0(eslint@8.56.0): + /eslint-plugin-node@11.1.0(eslint@8.57.0): resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=5.16.0' dependencies: - eslint: 8.56.0 - eslint-plugin-es: 3.0.1(eslint@8.56.0) + eslint: 8.57.0 + eslint-plugin-es: 3.0.1(eslint@8.57.0) eslint-utils: 2.1.0 ignore: 5.3.1 minimatch: 3.1.2 @@ -8744,7 +8584,7 @@ packages: semver: 6.3.1 dev: true - /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.55.0)(prettier@3.2.5): + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5): resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -8758,69 +8598,39 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.55.0 - eslint-config-prettier: 9.1.0(eslint@8.55.0) + eslint: 8.57.0 + eslint-config-prettier: 9.1.0(eslint@8.57.0) prettier: 3.2.5 prettier-linter-helpers: 1.0.0 - synckit: 0.8.6 + synckit: 0.8.8 dev: true - /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5): - resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - dependencies: - eslint: 8.56.0 - eslint-config-prettier: 9.1.0(eslint@8.56.0) - prettier: 3.2.5 - prettier-linter-helpers: 1.0.0 - synckit: 0.8.6 - dev: true - - /eslint-plugin-promise@6.1.1(eslint@8.55.0): - resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - dependencies: - eslint: 8.55.0 - dev: true - - /eslint-plugin-promise@6.1.1(eslint@8.56.0): + /eslint-plugin-promise@6.1.1(eslint@8.57.0): resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.56.0 + eslint: 8.57.0 dev: true - /eslint-plugin-simple-import-sort@12.0.0(eslint@8.56.0): - resolution: {integrity: sha512-8o0dVEdAkYap0Cn5kNeklaKcT1nUsa3LITWEuFk3nJifOoD+5JQGoyDUW2W/iPWwBsNBJpyJS9y4je/BgxLcyQ==} + /eslint-plugin-simple-import-sort@12.1.0(eslint@8.57.0): + resolution: {integrity: sha512-Y2fqAfC11TcG/WP3TrI1Gi3p3nc8XJyEOJYHyEPEGI/UAgNx6akxxlX74p7SbAQdLcgASKhj8M0GKvH3vq/+ig==} peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 8.56.0 + eslint: 8.57.0 dev: true - /eslint-plugin-storybook@0.8.0(eslint@8.56.0)(typescript@5.4.3): + /eslint-plugin-storybook@0.8.0(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==} engines: {node: '>= 18'} peerDependencies: eslint: '>=6' dependencies: '@storybook/csf': 0.0.1 - '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.4.3) - eslint: 8.56.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 requireindex: 1.2.0 ts-dedent: 2.2.0 transitivePeerDependencies: @@ -8828,36 +8638,7 @@ packages: - typescript dev: true - /eslint-plugin-svelte@2.38.0(eslint@8.56.0)(svelte@4.2.12): - resolution: {integrity: sha512-IwwxhHzitx3dr0/xo0z4jjDlb2AAHBPKt+juMyKKGTLlKi1rZfA4qixMwnveU20/JTHyipM6keX4Vr7LZFYc9g==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.112 - peerDependenciesMeta: - svelte: - optional: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - '@jridgewell/sourcemap-codec': 1.4.15 - debug: 4.3.4 - eslint: 8.56.0 - eslint-compat-utils: 0.5.0(eslint@8.56.0) - esutils: 2.0.3 - known-css-properties: 0.30.0 - postcss: 8.4.38 - postcss-load-config: 3.1.4(postcss@8.4.38) - postcss-safe-parser: 6.0.0(postcss@8.4.38) - postcss-selector-parser: 6.0.16 - semver: 7.6.0 - svelte: 4.2.12 - svelte-eslint-parser: 0.35.0(svelte@4.2.12) - transitivePeerDependencies: - - supports-color - - ts-node - dev: true - - /eslint-plugin-svelte@2.38.0(eslint@8.56.0)(svelte@4.2.13): + /eslint-plugin-svelte@2.38.0(eslint@8.57.0)(svelte@4.2.15): resolution: {integrity: sha512-IwwxhHzitx3dr0/xo0z4jjDlb2AAHBPKt+juMyKKGTLlKi1rZfA4qixMwnveU20/JTHyipM6keX4Vr7LZFYc9g==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: @@ -8867,11 +8648,11 @@ packages: svelte: optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@jridgewell/sourcemap-codec': 1.4.15 debug: 4.3.4 - eslint: 8.56.0 - eslint-compat-utils: 0.5.0(eslint@8.56.0) + eslint: 8.57.0 + eslint-compat-utils: 0.5.0(eslint@8.57.0) esutils: 2.0.3 known-css-properties: 0.30.0 postcss: 8.4.38 @@ -8879,8 +8660,8 @@ packages: postcss-safe-parser: 6.0.0(postcss@8.4.38) postcss-selector-parser: 6.0.16 semver: 7.6.0 - svelte: 4.2.13 - svelte-eslint-parser: 0.35.0(svelte@4.2.13) + svelte: 4.2.15 + svelte-eslint-parser: 0.35.0(svelte@4.2.15) transitivePeerDependencies: - supports-color - ts-node @@ -8913,68 +8694,21 @@ packages: resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} engines: {node: '>=4'} 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} - dev: true - - /eslint@8.55.0: - resolution: {integrity: sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.55.0 - '@humanwhocodes/config-array': 0.11.13 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - 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.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 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.23.0 - graphemer: 1.4.0 - ignore: 5.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - 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.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color + + /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} dev: true - /eslint@8.56.0: - resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.56.0 + '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -9006,7 +8740,7 @@ packages: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: @@ -9017,6 +8751,15 @@ packages: resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} dev: true + /esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.2 + /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -9078,7 +8821,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@metamask/eth-json-rpc-provider': 1.0.1 - '@metamask/safe-event-emitter': 3.0.0 + '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 5.0.2 json-rpc-random-id: 1.0.1 pify: 3.0.0 @@ -9090,7 +8833,7 @@ packages: resolution: {integrity: sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==} engines: {node: '>=14.0.0'} dependencies: - '@metamask/safe-event-emitter': 3.0.0 + '@metamask/safe-event-emitter': 3.1.1 async-mutex: 0.2.6 eth-query: 2.1.2 json-rpc-engine: 6.1.0 @@ -9117,10 +8860,30 @@ packages: crypto-js: 3.3.0 dev: true - /ethereum-bloom-filters@1.0.10: - resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} + /ethereum-bloom-filters@1.1.0: + resolution: {integrity: sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw==} dependencies: - js-sha3: 0.8.0 + '@noble/hashes': 1.4.0 + dev: false + + /ethereum-cryptography@0.1.3: + resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + dependencies: + '@types/pbkdf2': 3.1.2 + '@types/secp256k1': 4.0.6 + blakejs: 1.2.1 + browserify-aes: 1.2.0 + bs58check: 2.1.2 + create-hash: 1.2.0 + create-hmac: 1.1.7 + hash.js: 1.1.7 + keccak: 3.0.4 + pbkdf2: 3.1.2 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + scrypt-js: 3.0.1 + secp256k1: 4.0.3 + setimmediate: 1.0.5 dev: false /ethereum-cryptography@1.2.0: @@ -9132,15 +8895,6 @@ packages: '@scure/bip39': 1.1.1 dev: false - /ethereum-cryptography@2.1.2: - resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==} - dependencies: - '@noble/curves': 1.1.0 - '@noble/hashes': 1.3.1 - '@scure/bip32': 1.3.1 - '@scure/bip39': 1.2.1 - dev: false - /ethereum-cryptography@2.1.3: resolution: {integrity: sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==} dependencies: @@ -9150,6 +8904,17 @@ packages: '@scure/bip39': 1.2.2 dev: false + /ethereumjs-util@7.1.5: + resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} + engines: {node: '>=10.0.0'} + dependencies: + '@types/bn.js': 5.1.5 + bn.js: 5.2.1 + create-hash: 1.2.0 + ethereum-cryptography: 0.1.3 + rlp: 2.2.7 + dev: false + /ethers@5.7.2: resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} dependencies: @@ -9199,8 +8964,8 @@ packages: /event-emitter@0.3.5: resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} dependencies: - d: 1.0.1 - es5-ext: 0.10.62 + d: 1.0.2 + es5-ext: 0.10.64 /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} @@ -9220,6 +8985,13 @@ packages: engines: {node: '>=0.8.x'} dev: false + /evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + dev: false + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -9233,21 +9005,7 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - - /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 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.2.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - dev: true + dev: false /execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} @@ -9258,7 +9016,7 @@ packages: human-signals: 5.0.0 is-stream: 3.0.0 merge-stream: 2.0.0 - npm-run-path: 5.2.0 + npm-run-path: 5.3.0 onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 @@ -9268,20 +9026,16 @@ packages: dependencies: type: 2.7.2 - /extension-port-stream@2.1.1: - resolution: {integrity: sha512-qknp5o5rj2J9CRKfVB8KJr+uXQlrojNZzdESUPhKYLXf97TPcGf6qWWKmpsNNtUyOdzFhab1ON0jzouNxHHvow==} + /extension-port-stream@3.0.0: + resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} engines: {node: '>=12.0.0'} dependencies: + readable-stream: 3.6.2 webextension-polyfill: 0.10.0 dev: false - /fast-deep-equal@2.0.1: - resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} - dev: false - /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} @@ -9309,8 +9063,8 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fast-redact@3.3.0: - resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} + /fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} engines: {node: '>=6'} dev: false @@ -9318,8 +9072,8 @@ packages: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} dev: false - /fast-xml-parser@4.3.4: - resolution: {integrity: sha512-utnwm92SyozgA3hhH2I8qldf2lBqm6qHOICawRNRFu1qMe3+oqr+GcXjGqTmXTMGE5T4eC03kr/rlh5C1IRdZA==} + /fast-xml-parser@4.3.6: + resolution: {integrity: sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==} hasBin: true dependencies: strnum: 1.0.5 @@ -9386,10 +9140,6 @@ packages: pkg-dir: 3.0.0 dev: false - /find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - dev: false - /find-up@3.0.0: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} @@ -9423,7 +9173,7 @@ packages: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flatted: 3.2.9 + flatted: 3.3.1 keyv: 4.5.4 rimraf: 3.0.2 dev: true @@ -9435,21 +9185,21 @@ packages: is-buffer: 2.0.5 dev: true - /flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} dev: true /flow-enums-runtime@0.0.6: resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} dev: false - /flow-parser@0.206.0: - resolution: {integrity: sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==} + /flow-parser@0.235.1: + resolution: {integrity: sha512-s04193L4JE+ntEcQXbD6jxRRlyj9QXcgEl2W6xSjH4l9x4b0eHoCHfbYHjqf9LdZFUiM5LhgpiqsvLj/AyOyYQ==} engines: {node: '>=0.4.0'} dev: false - /follow-redirects@1.15.5(debug@4.3.4): - resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + /follow-redirects@1.15.6(debug@4.3.4): + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -9536,7 +9286,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 functions-have-names: 1.2.3 dev: true @@ -9570,7 +9320,7 @@ packages: function-bind: 1.1.2 has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.1 + hasown: 2.0.2 /get-iterator@1.0.2: resolution: {integrity: sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==} @@ -9588,16 +9338,17 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 + es-errors: 1.3.0 get-intrinsic: 1.2.4 dev: true - /get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + /get-tsconfig@4.7.3: + resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} dependencies: resolve-pkg-maps: 1.0.0 dev: true @@ -9614,16 +9365,16 @@ packages: dependencies: is-glob: 4.0.3 - /glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + /glob@10.3.12: + resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 minimatch: 9.0.4 - minipass: 7.0.4 - path-scurry: 1.10.1 + minipass: 7.1.0 + path-scurry: 1.10.2 /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} @@ -9642,7 +9393,7 @@ packages: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 5.0.1 + minimatch: 5.1.6 once: 1.4.0 dev: true @@ -9650,13 +9401,6 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals@13.23.0: - resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - /globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} @@ -9664,11 +9408,12 @@ packages: type-fest: 0.20.2 dev: true - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + /globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 + gopd: 1.0.1 dev: true /globalyzer@0.1.0: @@ -9732,18 +9477,21 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true - /h3@1.10.2: - resolution: {integrity: sha512-r1iNNcFGL4G9pL3lgYxwX0O2ZmqdKqhILAJsnlw5icn5I1QHnADM4TgVdYRtHUqy+NntVpHIEFwnw/XCbebICg==} + /h3@1.11.1: + resolution: {integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==} dependencies: - cookie-es: 1.0.0 + cookie-es: 1.1.0 + crossws: 0.2.4 defu: 6.1.4 destr: 2.0.3 - iron-webcrypto: 1.0.0 + iron-webcrypto: 1.1.1 ohash: 1.1.3 - radix3: 1.1.0 - ufo: 1.4.0 + radix3: 1.1.2 + ufo: 1.5.3 uncrypto: 0.1.3 unenv: 1.9.0 + transitivePeerDependencies: + - uWebSockets.js dev: false /has-bigints@1.0.2: @@ -9771,12 +9519,21 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + /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: @@ -9787,8 +9544,8 @@ packages: resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} dev: false - /hasown@2.0.1: - resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 @@ -9799,18 +9556,12 @@ packages: capital-case: 1.0.4 tslib: 2.6.2 - /hermes-estree@0.15.0: - resolution: {integrity: sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ==} - dev: false - /hermes-estree@0.19.1: resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} dev: false - /hermes-parser@0.15.0: - resolution: {integrity: sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==} - dependencies: - hermes-estree: 0.15.0 + /hermes-estree@0.20.1: + resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==} dev: false /hermes-parser@0.19.1: @@ -9819,6 +9570,12 @@ packages: hermes-estree: 0.19.1 dev: false + /hermes-parser@0.20.1: + resolution: {integrity: sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==} + dependencies: + hermes-estree: 0.20.1 + dev: false + /hermes-profile-transformer@0.0.6: resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} engines: {node: '>=8'} @@ -9837,12 +9594,6 @@ packages: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - /hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - dependencies: - react-is: 16.13.1 - dev: false - /html-encoding-sniffer@4.0.0: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} @@ -9878,7 +9629,7 @@ packages: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} dependencies: - agent-base: 7.1.0 + agent-base: 7.1.1 debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -9901,7 +9652,7 @@ packages: resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} engines: {node: '>= 14'} dependencies: - agent-base: 7.1.0 + agent-base: 7.1.1 debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -9910,26 +9661,22 @@ packages: /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 + dev: false /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - /i18next-browser-languagedetector@7.2.0: - resolution: {integrity: sha512-U00DbDtFIYD3wkWsr2aVGfXGAj2TgnELzOX9qv8bT0aJtvPV9CRO77h+vgmHFBMe7LAxdwvT/7VkCWGya6L3tA==} + /i18next-browser-languagedetector@7.1.0: + resolution: {integrity: sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 dev: false /i18next@22.5.1: resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 dev: false /iconv-lite@0.4.24: @@ -9952,11 +9699,6 @@ packages: /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - /ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} - engines: {node: '>= 4'} - dev: true - /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} @@ -9983,9 +9725,10 @@ packages: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + dev: true - /import-meta-resolve@4.0.0: - resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} + /import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} dev: true /imurmurhash@0.1.4: @@ -10030,13 +9773,13 @@ packages: resolution: {integrity: sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w==} dev: false - /internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.4 - hasown: 2.0.1 - side-channel: 1.0.4 + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 dev: true /intl-messageformat@10.5.11: @@ -10047,42 +9790,12 @@ packages: '@formatjs/icu-messageformat-parser': 2.7.6 tslib: 2.6.2 - /intl-messageformat@9.13.0: - resolution: {integrity: sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==} - dependencies: - '@formatjs/ecma402-abstract': 1.11.4 - '@formatjs/fast-memoize': 1.2.1 - '@formatjs/icu-messageformat-parser': 2.1.0 - tslib: 2.6.2 - dev: false - /invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: loose-envify: 1.4.0 dev: false - /ioredis@5.3.2: - resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==} - engines: {node: '>=12.22.0'} - dependencies: - '@ioredis/commands': 1.2.0 - cluster-key-slot: 1.1.2 - debug: 4.3.4 - denque: 2.1.0 - lodash.defaults: 4.2.0 - lodash.isarguments: 3.1.0 - redis-errors: 1.2.0 - redis-parser: 3.0.0 - standard-as-callback: 2.1.0 - transitivePeerDependencies: - - supports-color - dev: false - - /ip@1.1.9: - resolution: {integrity: sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==} - dev: false - /ipfs-core-types@0.14.1: resolution: {integrity: sha512-4ujF8NlM9bYi2I6AIqPP9wfGGX0x/gRCkMoFdOQfxxrFg6HcAdfS+0/irK8mp4e7znOHWReOHeWqCGw+dAPwsw==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} @@ -10112,7 +9825,7 @@ packages: '@multiformats/multiaddr-to-uri': 9.0.8 any-signal: 3.0.1 blob-to-it: 2.0.6 - browser-readablestream-to-it: 2.0.6 + browser-readablestream-to-it: 2.0.7 err-code: 3.0.1 ipfs-core-types: 0.14.1 ipfs-unixfs: 9.0.1 @@ -10193,8 +9906,8 @@ packages: - encoding dev: false - /iron-webcrypto@1.0.0: - resolution: {integrity: sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==} + /iron-webcrypto@1.1.1: + resolution: {integrity: sha512-5xGwQUWHQSy039rFr+5q/zOmj7GP0Ypzvo34Ep+61bPIhaLduEDp/PvLGlU3awD2mzWUR0weN2vJ1mILydFPEg==} dev: false /is-arguments@1.1.1: @@ -10202,15 +9915,15 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: false - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - is-typed-array: 1.1.12 dev: true /is-arrayish@0.2.1: @@ -10230,14 +9943,14 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: - binary-extensions: 2.2.0 + binary-extensions: 2.3.0 /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-buffer@2.0.5: @@ -10259,13 +9972,20 @@ packages: /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: - hasown: 2.0.1 + hasown: 2.0.2 + + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + dependencies: + is-typed-array: 1.1.13 + dev: true /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-directory@0.3.1: @@ -10277,11 +9997,13 @@ packages: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true + dev: false /is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true + dev: false /is-electron@2.2.2: resolution: {integrity: sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==} @@ -10304,7 +10026,7 @@ packages: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: false /is-glob@4.0.3: @@ -10324,6 +10046,7 @@ packages: hasBin: true dependencies: is-docker: 3.0.0 + dev: false /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} @@ -10334,8 +10057,8 @@ packages: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} dev: true @@ -10343,7 +10066,7 @@ packages: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-number@7.0.0: @@ -10384,11 +10107,12 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 dev: true @@ -10396,6 +10120,7 @@ packages: /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + dev: false /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} @@ -10405,7 +10130,7 @@ packages: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-symbol@1.0.4: @@ -10415,11 +10140,11 @@ packages: has-symbols: 1.0.3 dev: true - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} @@ -10446,6 +10171,7 @@ packages: engines: {node: '>=8'} dependencies: is-docker: 2.2.1 + dev: false /is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} @@ -10614,7 +10340,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.7 + '@types/node': 20.12.8 jest-mock: 29.7.0 jest-util: 29.7.0 dev: false @@ -10628,7 +10354,7 @@ packages: 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.23.5 + '@babel/code-frame': 7.24.2 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -10644,7 +10370,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.7 + '@types/node': 20.12.8 jest-util: 29.7.0 dev: false @@ -10653,7 +10379,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.7 + '@types/node': 20.12.8 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -10676,7 +10402,7 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.8 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -10686,8 +10412,8 @@ packages: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true - /joi@17.12.1: - resolution: {integrity: sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ==} + /joi@17.13.1: + resolution: {integrity: sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==} dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -10702,8 +10428,8 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-tokens@8.0.3: - resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} + /js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} dev: true /js-yaml@3.14.1: @@ -10729,25 +10455,25 @@ packages: resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} dev: false - /jscodeshift@0.14.0(@babel/preset-env@7.23.9): + /jscodeshift@0.14.0(@babel/preset-env@7.24.5): resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} hasBin: true peerDependencies: '@babel/preset-env': ^7.1.6 dependencies: - '@babel/core': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/preset-env': 7.23.9(@babel/core@7.23.9) - '@babel/preset-flow': 7.23.3(@babel/core@7.23.9) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.9) - '@babel/register': 7.23.7(@babel/core@7.23.9) - babel-core: 7.0.0-bridge.0(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) + '@babel/preset-env': 7.24.5(@babel/core@7.24.5) + '@babel/preset-flow': 7.24.1(@babel/core@7.24.5) + '@babel/preset-typescript': 7.24.1(@babel/core@7.24.5) + '@babel/register': 7.23.7(@babel/core@7.24.5) + babel-core: 7.0.0-bridge.0(@babel/core@7.24.5) chalk: 4.1.2 - flow-parser: 0.206.0 + flow-parser: 0.235.1 graceful-fs: 4.2.11 micromatch: 4.0.5 neo-async: 2.6.2 @@ -10776,18 +10502,18 @@ packages: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.4 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.7 + nwsapi: 2.2.9 parse5: 7.1.2 rrweb-cssom: 0.6.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 4.1.3 + tough-cookie: 4.1.4 w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - ws: 8.16.0 + ws: 8.17.0 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -10815,6 +10541,7 @@ packages: /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==} @@ -10824,15 +10551,6 @@ packages: eth-rpc-errors: 4.0.3 dev: false - /json-rpc-middleware-stream@4.2.3: - resolution: {integrity: sha512-4iFb0yffm5vo3eFKDbQgke9o17XBcLQ2c3sONrXSbcOLzP8LTojqo8hRGVgtJShhm5q4ZDSNq039fAx9o65E1w==} - engines: {node: '>=14.0.0'} - dependencies: - '@metamask/safe-event-emitter': 3.0.0 - json-rpc-engine: 6.1.0 - readable-stream: 2.3.8 - dev: false - /json-rpc-random-id@1.0.1: resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} dev: false @@ -10861,9 +10579,6 @@ packages: engines: {node: '>=6'} hasBin: true - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: @@ -10883,7 +10598,7 @@ packages: requiresBuild: true dependencies: node-addon-api: 2.0.2 - node-gyp-build: 4.8.0 + node-gyp-build: 4.8.1 readable-stream: 3.6.2 dev: false @@ -11035,28 +10750,30 @@ packages: /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /listhen@1.6.0: - resolution: {integrity: sha512-z0RcEXVX5oTpY1bO02SKoTU/kmZSrFSngNNzHRM6KICR17PTq7ANush6AE6ztGJwJD4RLpBrVHd9GnV51J7s3w==} + /listhen@1.7.2: + resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} hasBin: true dependencies: - '@parcel/watcher': 2.4.0 - '@parcel/watcher-wasm': 2.4.0 + '@parcel/watcher': 2.4.1 + '@parcel/watcher-wasm': 2.4.1 citty: 0.1.6 clipboardy: 4.0.0 consola: 3.2.3 - crossws: 0.1.1 + crossws: 0.2.4 defu: 6.1.4 get-port-please: 3.1.2 - h3: 1.10.2 + h3: 1.11.1 http-shutdown: 1.2.2 jiti: 1.21.0 - mlly: 1.5.0 + mlly: 1.7.0 node-forge: 1.3.1 pathe: 1.1.2 std-env: 3.7.0 - ufo: 1.4.0 + ufo: 1.5.3 untun: 0.1.3 uqr: 0.1.2 + transitivePeerDependencies: + - uWebSockets.js dev: false /lit-element@3.3.3: @@ -11067,13 +10784,12 @@ packages: lit-html: 2.8.0 dev: false - /lit-element@4.0.4: - resolution: {integrity: sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==} - requiresBuild: true + /lit-element@4.0.5: + resolution: {integrity: sha512-iTWskWZEtn9SyEf4aBG6rKT8GABZMrTWop1+jopsEOgEcugcXJGKuX5bEbkq9qfzY+XB4MAgCaSPwnNpdsNQ3Q==} dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 '@lit/reactive-element': 2.0.4 - lit-html: 3.1.2 + lit-html: 3.1.3 dev: false /lit-html@2.8.0: @@ -11082,9 +10798,8 @@ packages: '@types/trusted-types': 2.0.7 dev: false - /lit-html@3.1.2: - resolution: {integrity: sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==} - requiresBuild: true + /lit-html@3.1.3: + resolution: {integrity: sha512-FwIbqDD8O/8lM4vUZ4KvQZjPPNx7V1VhT7vmRB8RBAO0AU6wuTVdoXiu2CivVjEGdugvcbPNBLtPE1y0ifplHA==} dependencies: '@types/trusted-types': 2.0.7 dev: false @@ -11101,25 +10816,20 @@ packages: resolution: {integrity: sha512-rzo/hmUqX8zmOdamDAeydfjsGXbbdtAFqMhmocnh2j9aDYqbu0fjXygjCa0T99Od9VQ/2itwaGrjZz/ZELVl7w==} dependencies: '@lit/reactive-element': 2.0.4 - lit-element: 4.0.4 - lit-html: 3.1.2 + lit-element: 4.0.5 + lit-html: 3.1.3 dev: false /load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - /local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - dev: true - /local-pkg@0.5.0: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} dependencies: - mlly: 1.5.0 - pkg-types: 1.0.3 + mlly: 1.7.0 + pkg-types: 1.1.0 dev: true /locate-character@3.0.0: @@ -11156,14 +10866,6 @@ packages: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: false - /lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - dev: false - - /lodash.isarguments@3.1.0: - resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} - dev: false - /lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} dev: false @@ -11204,7 +10906,7 @@ packages: hasBin: true dependencies: ansi-fragments: 0.2.1 - dayjs: 1.11.10 + dayjs: 1.11.11 yargs: 15.4.1 dev: false @@ -11238,8 +10940,8 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + /lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} engines: {node: 14 || >=16.14} /lru-cache@5.1.1: @@ -11256,25 +10958,18 @@ packages: /lru-queue@0.1.0: resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} dependencies: - es5-ext: 0.10.62 - - /magic-string@0.30.7: - resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + es5-ext: 0.10.64 - /magic-string@0.30.9: - resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} - engines: {node: '>=12'} + /magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - /magicast@0.3.3: - resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} + /magicast@0.3.4: + resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} dependencies: - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 source-map-js: 1.2.0 dev: true @@ -11307,6 +11002,14 @@ packages: resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} dev: false + /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 + dev: false + /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} @@ -11317,8 +11020,8 @@ packages: /memoizee@0.4.15: resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} dependencies: - d: 1.0.1 - es5-ext: 0.10.62 + d: 1.0.2 + es5-ext: 0.10.64 es6-weak-map: 2.0.3 event-emitter: 0.3.5 is-promise: 2.2.2 @@ -11353,44 +11056,44 @@ packages: buffer-reverse: 1.0.1 crypto-js: 4.2.0 treeify: 1.1.0 - web3-utils: 1.10.3 + web3-utils: 1.10.4 dev: false - /metro-babel-transformer@0.80.6: - resolution: {integrity: sha512-ssuoVC4OzqaOt3LpwfUbDfBlFGRu9v1Yf2JJnKPz0ROYHNjSBws4aUesqQQ/Ea8DbiH7TK4j4cJmm+XjdHmgqA==} + /metro-babel-transformer@0.80.9: + resolution: {integrity: sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ==} engines: {node: '>=18'} dependencies: - '@babel/core': 7.23.9 - hermes-parser: 0.19.1 + '@babel/core': 7.24.5 + hermes-parser: 0.20.1 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color dev: false - /metro-cache-key@0.80.6: - resolution: {integrity: sha512-DFmjQacC8m/S3HpELklLMWkPGP/fZPX3BSgjd0xQvwIvWyFwk8Nn/lfp/uWdEVDtDSIr64/anXU5uWohGwlWXw==} + /metro-cache-key@0.80.9: + resolution: {integrity: sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg==} engines: {node: '>=18'} dev: false - /metro-cache@0.80.6: - resolution: {integrity: sha512-NP81pHSPkzs+iNlpVkJqijrpcd6lfuDAunYH9/Rn8oLNz0yLfkl8lt+xOdUU4IkFt3oVcTBEFCnzAzv4B8YhyA==} + /metro-cache@0.80.9: + resolution: {integrity: sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w==} engines: {node: '>=18'} dependencies: - metro-core: 0.80.6 + metro-core: 0.80.9 rimraf: 3.0.2 dev: false - /metro-config@0.80.6: - resolution: {integrity: sha512-vHYYvJpRTWYbmvqlR7i04xQpZCHJ6yfZ/xIcPdz2ssbdJGGJbiT1Aar9wr8RAhsccSxdJgfE5B1DB8Mo+DnhIg==} + /metro-config@0.80.9: + resolution: {integrity: sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg==} engines: {node: '>=18'} dependencies: connect: 3.7.0 cosmiconfig: 5.2.1 jest-validate: 29.7.0 - metro: 0.80.6 - metro-cache: 0.80.6 - metro-core: 0.80.6 - metro-runtime: 0.80.6 + metro: 0.80.9 + metro-cache: 0.80.9 + metro-core: 0.80.9 + metro-runtime: 0.80.9 transitivePeerDependencies: - bufferutil - encoding @@ -11398,16 +11101,16 @@ packages: - utf-8-validate dev: false - /metro-core@0.80.6: - resolution: {integrity: sha512-fn4rryTUAwzFJWj7VIPDH4CcW/q7MV4oGobqR6NsuxZoIGYrVpK7pBasumu5YbCqifuErMs5s23BhmrDNeZURw==} + /metro-core@0.80.9: + resolution: {integrity: sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg==} engines: {node: '>=18'} dependencies: lodash.throttle: 4.1.1 - metro-resolver: 0.80.6 + metro-resolver: 0.80.9 dev: false - /metro-file-map@0.80.6: - resolution: {integrity: sha512-S3CUqvpXpc+q3q+hCEWvFKhVqgq0VmXdZQDF6u7ue86E2elq1XLnfLOt9JSpwyhpMQRyysjSCnd/Yh6GZMNHoQ==} + /metro-file-map@0.80.9: + resolution: {integrity: sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ==} engines: {node: '>=18'} dependencies: anymatch: 3.1.3 @@ -11426,48 +11129,48 @@ packages: - supports-color dev: false - /metro-minify-terser@0.80.6: - resolution: {integrity: sha512-83eZaH2+B+jP92KuodPqXknzwmiboKAuZY4doRfTEEXAG57pNVNN6cqSRJlwDnmaTBKRffxoncBXbYqHQgulgg==} + /metro-minify-terser@0.80.9: + resolution: {integrity: sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A==} engines: {node: '>=18'} dependencies: - terser: 5.27.2 + terser: 5.31.0 dev: false - /metro-resolver@0.80.6: - resolution: {integrity: sha512-R7trfglG4zY4X9XyM9cvuffAhQ9W1reWoahr1jdEWa6rOI8PyM0qXjcsb8l+fsOQhdSiVlkKcYAmkyrs1S/zrA==} + /metro-resolver@0.80.9: + resolution: {integrity: sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w==} engines: {node: '>=18'} dev: false - /metro-runtime@0.80.6: - resolution: {integrity: sha512-21GQVd0pp2nACoK0C2PL8mBsEhIFUFFntYrWRlYNHtPQoqDzddrPEIgkyaABGXGued+dZoBlFQl+LASlmmfkvw==} + /metro-runtime@0.80.9: + resolution: {integrity: sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg==} engines: {node: '>=18'} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 dev: false - /metro-source-map@0.80.6: - resolution: {integrity: sha512-lqDuSLctWy9Qccu4Zl0YB1PzItpsqcKGb1nK0aDY+lzJ26X65OCib2VzHlj+xj7e4PiIKOfsvDCczCBz4cnxdg==} + /metro-source-map@0.80.9: + resolution: {integrity: sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw==} engines: {node: '>=18'} dependencies: - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 invariant: 2.2.4 - metro-symbolicate: 0.80.6 + metro-symbolicate: 0.80.9 nullthrows: 1.1.1 - ob1: 0.80.6 + ob1: 0.80.9 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: - supports-color dev: false - /metro-symbolicate@0.80.6: - resolution: {integrity: sha512-SGwKeBi+lK7NmM5+EcW6DyRRa9HmGSvH0LJtlT4XoRMbpxzsLYs0qUEA+olD96pOIP+ta7I8S30nQr2ttqgO8A==} + /metro-symbolicate@0.80.9: + resolution: {integrity: sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA==} engines: {node: '>=18'} hasBin: true dependencies: invariant: 2.2.4 - metro-source-map: 0.80.6 + metro-source-map: 0.80.9 nullthrows: 1.1.1 source-map: 0.5.7 through2: 2.0.5 @@ -11476,34 +11179,34 @@ packages: - supports-color dev: false - /metro-transform-plugins@0.80.6: - resolution: {integrity: sha512-e04tdTC5Fy1vOQrTTXb5biao0t7nR/h+b1IaBTlM5UaHaAJZr658uVOoZhkRxKjbhF2mIwJ/8DdorD2CA15BCg==} + /metro-transform-plugins@0.80.9: + resolution: {integrity: sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg==} engines: {node: '>=18'} dependencies: - '@babel/core': 7.23.9 - '@babel/generator': 7.23.6 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color dev: false - /metro-transform-worker@0.80.6: - resolution: {integrity: sha512-jV+VgCLiCj5jQadW/h09qJaqDreL6XcBRY52STCoz2xWn6WWLLMB5nXzQtvFNPmnIOps+Xu8+d5hiPcBNOhYmA==} + /metro-transform-worker@0.80.9: + resolution: {integrity: sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ==} engines: {node: '>=18'} dependencies: - '@babel/core': 7.23.9 - '@babel/generator': 7.23.6 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 - metro: 0.80.6 - metro-babel-transformer: 0.80.6 - metro-cache: 0.80.6 - metro-cache-key: 0.80.6 - metro-minify-terser: 0.80.6 - metro-source-map: 0.80.6 - metro-transform-plugins: 0.80.6 + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + metro: 0.80.9 + metro-babel-transformer: 0.80.9 + metro-cache: 0.80.9 + metro-cache-key: 0.80.9 + metro-minify-terser: 0.80.9 + metro-source-map: 0.80.9 + metro-transform-plugins: 0.80.9 nullthrows: 1.1.1 transitivePeerDependencies: - bufferutil @@ -11512,18 +11215,18 @@ packages: - utf-8-validate dev: false - /metro@0.80.6: - resolution: {integrity: sha512-f6Nhnht9TxVRP6zdBq9J2jNdeDBxRmJFnjxhQS1GeCpokBvI6fTXq+wHTLz5jZA+75fwbkPSzBxBJzQa6xi0AQ==} + /metro@0.80.9: + resolution: {integrity: sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg==} engines: {node: '>=18'} hasBin: true dependencies: - '@babel/code-frame': 7.23.5 - '@babel/core': 7.23.9 - '@babel/generator': 7.23.6 - '@babel/parser': 7.23.9 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/code-frame': 7.24.2 + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 accepts: 1.3.8 chalk: 4.1.2 ci-info: 2.0.0 @@ -11532,24 +11235,24 @@ packages: denodeify: 1.2.1 error-stack-parser: 2.1.4 graceful-fs: 4.2.11 - hermes-parser: 0.19.1 + hermes-parser: 0.20.1 image-size: 1.1.1 invariant: 2.2.4 jest-worker: 29.7.0 jsc-safe-url: 0.2.4 lodash.throttle: 4.1.1 - metro-babel-transformer: 0.80.6 - metro-cache: 0.80.6 - metro-cache-key: 0.80.6 - metro-config: 0.80.6 - metro-core: 0.80.6 - metro-file-map: 0.80.6 - metro-resolver: 0.80.6 - metro-runtime: 0.80.6 - metro-source-map: 0.80.6 - metro-symbolicate: 0.80.6 - metro-transform-plugins: 0.80.6 - metro-transform-worker: 0.80.6 + metro-babel-transformer: 0.80.9 + metro-cache: 0.80.9 + metro-cache-key: 0.80.9 + metro-config: 0.80.9 + metro-core: 0.80.9 + metro-file-map: 0.80.9 + metro-resolver: 0.80.9 + metro-runtime: 0.80.9 + metro-source-map: 0.80.9 + metro-symbolicate: 0.80.9 + metro-transform-plugins: 0.80.9 + metro-transform-worker: 0.80.9 mime-types: 2.1.35 node-fetch: 2.7.0 nullthrows: 1.1.1 @@ -11645,8 +11348,8 @@ packages: dependencies: brace-expansion: 1.1.11 - /minimatch@5.0.1: - resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 @@ -11659,13 +11362,6 @@ packages: brace-expansion: 2.0.1 dev: true - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: true - /minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} @@ -11675,11 +11371,11 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + /minipass@7.1.0: + resolution: {integrity: sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==} engines: {node: '>=16 || 14 >=14.17'} - /mipd@0.0.5(typescript@5.4.3): + /mipd@0.0.5(typescript@5.4.5): resolution: {integrity: sha512-gbKA784D2WKb5H/GtqEv+Ofd1S9Zj+Z/PGDIl1u1QAbswkxD28BQ5bSXQxkeBzPBABg1iDSbiwGG1XqlOxRspA==} peerDependencies: typescript: '>=5.0.4' @@ -11687,8 +11383,8 @@ packages: typescript: optional: true dependencies: - typescript: 5.4.3 - viem: 1.21.4(typescript@5.4.3) + typescript: 5.4.5 + viem: 1.21.4(typescript@5.4.5) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -11713,22 +11409,42 @@ packages: hasBin: true dev: true - /mlly@1.5.0: - resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} + /mlly@1.7.0: + resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} dependencies: acorn: 8.11.3 pathe: 1.1.2 - pkg-types: 1.0.3 - ufo: 1.4.0 + pkg-types: 1.1.0 + ufo: 1.5.3 + + /moralis@2.26.1(debug@4.3.4): + resolution: {integrity: sha512-6aY1D/ZJwpys3H1tKhxbuRvnHXTOK07uqPrBQS2OPbCyxYjW33NFJPJXiLRXsmpDjFM+xq6vYRKrQSy5Zf4yog==} + dependencies: + '@moralisweb3/api-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/aptos-api': 2.26.1(debug@4.3.4) + '@moralisweb3/auth': 2.26.1(debug@4.3.4) + '@moralisweb3/common-aptos-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-auth-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-core': 2.26.1(debug@4.3.4) + '@moralisweb3/common-evm-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-sol-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/common-streams-utils': 2.26.1(debug@4.3.4) + '@moralisweb3/evm-api': 2.26.1(debug@4.3.4) + '@moralisweb3/sol-api': 2.26.1(debug@4.3.4) + '@moralisweb3/streams': 2.26.1(debug@4.3.4) + '@moralisweb3/streams-typings': 1.0.7 + transitivePeerDependencies: + - debug + dev: false /motion@10.16.2: resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} dependencies: - '@motionone/animation': 10.16.3 - '@motionone/dom': 10.16.4 + '@motionone/animation': 10.17.0 + '@motionone/dom': 10.17.0 '@motionone/svelte': 10.16.4 - '@motionone/types': 10.16.3 - '@motionone/utils': 10.16.3 + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 '@motionone/vue': 10.16.4 dev: false @@ -11736,11 +11452,6 @@ packages: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - /mrmime@1.0.1: - resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} - engines: {node: '>=10'} - dev: true - /mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} @@ -11792,10 +11503,6 @@ packages: hasBin: true dev: false - /napi-wasm@1.1.0: - resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==} - dev: false - /native-fetch@3.0.0(node-fetch@2.7.0): resolution: {integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==} peerDependencies: @@ -11804,12 +11511,12 @@ packages: node-fetch: 2.7.0 dev: false - /native-fetch@4.0.2(undici@5.28.3): + /native-fetch@4.0.2(undici@5.28.4): resolution: {integrity: sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg==} peerDependencies: undici: '*' dependencies: - undici: 5.28.3 + undici: 5.28.4 dev: false /natural-compare@1.4.0: @@ -11863,8 +11570,8 @@ packages: minimatch: 3.1.2 dev: false - /node-fetch-native@1.6.2: - resolution: {integrity: sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w==} + /node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} dev: false /node-fetch@2.7.0: @@ -11883,8 +11590,8 @@ packages: engines: {node: '>= 6.13.0'} dev: false - /node-gyp-build@4.8.0: - resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} + /node-gyp-build@4.8.1: + resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} hasBin: true dev: false @@ -11908,8 +11615,8 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} - /normalize-url@8.0.0: - resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} + /normalize-url@8.0.1: + resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} engines: {node: '>=14.16'} dev: true @@ -11918,9 +11625,10 @@ packages: engines: {node: '>=8'} dependencies: path-key: 3.1.1 + dev: false - /npm-run-path@5.2.0: - resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 @@ -11937,12 +11645,12 @@ packages: strip-hex-prefix: 1.0.0 dev: false - /nwsapi@2.2.7: - resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + /nwsapi@2.2.9: + resolution: {integrity: sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==} dev: true - /ob1@0.80.6: - resolution: {integrity: sha512-nlLGZPMQ/kbmkdIb5yvVzep1jKUII2x6ehNsHpgy71jpnJMW7V+KsB3AjYI2Ajb7UqMAMNjlssg6FUodrEMYzg==} + /ob1@0.80.9: + resolution: {integrity: sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA==} engines: {node: '>=18'} dev: false @@ -11981,39 +11689,40 @@ packages: object-keys: 1.1.1 dev: true - /object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 dev: true - /object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + /object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.4 + es-abstract: 1.23.3 dev: true - /object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + /object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 dev: true - /ofetch@1.3.3: - resolution: {integrity: sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==} + /ofetch@1.3.4: + resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} dependencies: destr: 2.0.3 - node-fetch-native: 1.6.2 - ufo: 1.4.0 + node-fetch-native: 1.6.4 + ufo: 1.5.3 dev: false /ohash@1.1.3: @@ -12084,26 +11793,16 @@ packages: is-wsl: 2.2.0 dev: false - /open@9.1.0: - resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} - engines: {node: '>=14.16'} - dependencies: - default-browser: 4.0.0 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - is-wsl: 2.2.0 - dev: true - - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 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.5 dev: true /ora@5.4.1: @@ -12258,6 +11957,7 @@ packages: engines: {node: '>=6'} dependencies: callsites: 3.1.0 + dev: true /parse-duration@1.1.0: resolution: {integrity: sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ==} @@ -12275,10 +11975,11 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + dev: true /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} @@ -12335,12 +12036,12 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + /path-scurry@1.10.2: + resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 + lru-cache: 10.2.2 + minipass: 7.1.0 /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -12353,6 +12054,17 @@ packages: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true + /pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + 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 + dev: false + /periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} dependencies: @@ -12389,7 +12101,7 @@ packages: /pino-abstract-transport@0.5.0: resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} dependencies: - duplexify: 4.1.2 + duplexify: 4.1.3 split2: 4.2.0 dev: false @@ -12402,7 +12114,7 @@ packages: hasBin: true dependencies: atomic-sleep: 1.0.0 - fast-redact: 3.3.0 + fast-redact: 3.5.0 on-exit-leak-free: 0.2.0 pino-abstract-transport: 0.5.0 pino-std-serializers: 4.0.0 @@ -12425,11 +12137,11 @@ packages: find-up: 3.0.0 dev: false - /pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + /pkg-types@1.1.0: + resolution: {integrity: sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==} dependencies: - jsonc-parser: 3.2.0 - mlly: 1.5.0 + confbox: 0.1.7 + mlly: 1.7.0 pathe: 1.1.2 /playwright-core@1.43.1: @@ -12458,11 +12170,15 @@ packages: engines: {node: '>=10.13.0'} dev: false - /pony-cause@2.1.10: - resolution: {integrity: sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==} + /pony-cause@2.1.11: + resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} engines: {node: '>=12.0.0'} dev: false + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + /postcss-import@15.1.0(postcss@8.4.38): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} @@ -12526,7 +12242,7 @@ packages: dependencies: lilconfig: 3.1.1 postcss: 8.4.38 - yaml: 2.3.4 + yaml: 2.4.2 /postcss-nested@5.0.6(postcss@8.4.38): resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} @@ -12547,16 +12263,16 @@ packages: postcss: 8.4.38 postcss-selector-parser: 6.0.16 - /postcss-nesting@12.1.0(postcss@8.4.38): - resolution: {integrity: sha512-QOYnosaZ+mlP6plQrAxFw09UUp2Sgtxj1BVHN+rSVbtV0Yx48zRt9/9F/ZOoxOKBBEsaJk2MYhhVRjeRRw5yuw==} + /postcss-nesting@12.1.2(postcss@8.4.38): + resolution: {integrity: sha512-FUmTHGDNundodutB4PUBxt/EPuhgtpk8FJGRsBhOuy+6FnkR2A8RZWIsyyy6XmhvX2DZQQWIkvu+HB4IbJm+Ew==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.0.15) - '@csstools/selector-specificity': 3.0.2(postcss-selector-parser@6.0.15) + '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.0.16) + '@csstools/selector-specificity': 3.0.3(postcss-selector-parser@6.0.16) postcss: 8.4.38 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: true /postcss-safe-parser@6.0.0(postcss@8.4.38): @@ -12577,13 +12293,6 @@ packages: postcss: 8.4.38 dev: true - /postcss-selector-parser@6.0.15: - resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} - engines: {node: '>=4'} - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - /postcss-selector-parser@6.0.16: resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} engines: {node: '>=4'} @@ -12602,8 +12311,8 @@ packages: picocolors: 1.0.0 source-map-js: 1.2.0 - /preact@10.19.5: - resolution: {integrity: sha512-OPELkDmSVbKjbFqF9tgvOowiiQ9TmsJljIzXRyNE8nGiis94pwv1siF78rQkAP1Q1738Ce6pellRg/Ns/CtHqQ==} + /preact@10.21.0: + resolution: {integrity: sha512-aQAIxtzWEwH8ou+OovWVSVNlFImL7xUCwJX3YMqA3U8iKCNC34999fFOnWjYNsylgfPgMexpbk7WYOLtKr/mxg==} dev: false /prelude-ls@1.2.1: @@ -12618,24 +12327,14 @@ packages: fast-diff: 1.3.0 dev: true - /prettier-plugin-svelte@3.2.2(prettier@3.2.5)(svelte@4.2.12): - resolution: {integrity: sha512-ZzzE/wMuf48/1+Lf2Ffko0uDa6pyCfgHV6+uAhtg2U0AAXGrhCSW88vEJNAkAxW5qyrFY1y1zZ4J8TgHrjW++Q==} - peerDependencies: - prettier: ^3.0.0 - svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 - dependencies: - prettier: 3.2.5 - svelte: 4.2.12 - dev: true - - /prettier-plugin-svelte@3.2.2(prettier@3.2.5)(svelte@4.2.13): - resolution: {integrity: sha512-ZzzE/wMuf48/1+Lf2Ffko0uDa6pyCfgHV6+uAhtg2U0AAXGrhCSW88vEJNAkAxW5qyrFY1y1zZ4J8TgHrjW++Q==} + /prettier-plugin-svelte@3.2.3(prettier@3.2.5)(svelte@4.2.15): + resolution: {integrity: sha512-wJq8RunyFlWco6U0WJV5wNCM7zpBFakS76UBSbmzMGpncpK98NZABaE+s7n8/APDCEVNHXC5Mpq+MLebQtsRlg==} peerDependencies: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 dependencies: prettier: 3.2.5 - svelte: 4.2.13 + svelte: 4.2.15 dev: true /prettier@2.8.8: @@ -12667,11 +12366,7 @@ packages: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 - react-is: 18.2.0 - - /process-nextick-args@1.0.7: - resolution: {integrity: sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==} - dev: false + react-is: 18.3.1 /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -12700,14 +12395,6 @@ packages: sisteransi: 1.0.5 dev: false - /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 - dev: false - /proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: true @@ -12727,13 +12414,12 @@ packages: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.12.7 + '@types/node': 20.12.8 long: 5.2.3 dev: false /proxy-compare@2.5.1: resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} - requiresBuild: true dev: false /proxy-from-env@1.1.0: @@ -12792,6 +12478,12 @@ packages: strict-uri-encode: 2.0.0 dev: false + /querystring@0.2.1: + resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + dev: false + /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true @@ -12814,8 +12506,8 @@ packages: engines: {node: '>=10'} dev: true - /radix3@1.1.0: - resolution: {integrity: sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==} + /radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} dev: false /randombytes@2.1.0: @@ -12849,18 +12541,18 @@ packages: strip-json-comments: 2.0.1 dev: true - /react-confetti@6.1.0(react@18.2.0): + /react-confetti@6.1.0(react@18.3.1): resolution: {integrity: sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw==} engines: {node: '>=10.18'} peerDependencies: react: ^16.3.0 || ^17.0.1 || ^18.0.0 dependencies: - react: 18.2.0 + react: 18.3.1 tween-functions: 1.2.0 dev: true - /react-devtools-core@4.28.5: - resolution: {integrity: sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==} + /react-devtools-core@5.1.0: + resolution: {integrity: sha512-NRtLBqYVLrIY+lOa2oTpFiAhI7Hru0AUXI0tP9neCyaPPAzlZyeH0i+VZ0shIyRTJbpvyqbD/uCsewA2hpfZHw==} dependencies: shell-quote: 1.8.1 ws: 7.5.9 @@ -12869,18 +12561,7 @@ packages: - utf-8-validate dev: false - /react-dom@18.2.0(react@18.2.0): - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - requiresBuild: true - peerDependencies: - react: ^18.2.0 - dependencies: - loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.0 - dev: false - - /react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0): + /react-i18next@13.5.0(i18next@22.5.1)(react-native@0.74.1)(react@18.3.1): resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==} peerDependencies: i18next: '>= 23.2.3' @@ -12893,24 +12574,19 @@ packages: react-native: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 html-parse-stringify: 3.0.1 i18next: 22.5.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9)(react@18.2.0) - dev: false - - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react: 18.3.1 + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.3.1) dev: false /react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: false - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + /react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} /react-native-fetch-api@3.0.0: resolution: {integrity: sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA==} @@ -12918,7 +12594,7 @@ packages: p-defer: 3.0.0 dev: false - /react-native-webview@11.26.1(react-native@0.73.4)(react@18.2.0): + /react-native-webview@11.26.1(react-native@0.74.1)(react@18.3.1): resolution: {integrity: sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw==} peerDependencies: react: '*' @@ -12926,50 +12602,53 @@ packages: dependencies: escape-string-regexp: 2.0.0 invariant: 2.2.4 - react: 18.2.0 - react-native: 0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9)(react@18.2.0) + react: 18.3.1 + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.3.1) dev: false - /react-native@0.73.4(@babel/core@7.23.9)(@babel/preset-env@7.23.9)(react@18.2.0): - resolution: {integrity: sha512-VtS+Yr6OOTIuJGDECIYWzNU8QpJjASQYvMtfa/Hvm/2/h5GdB6W9H9TOmh13x07Lj4AOhNMx3XSsz6TdrO4jIg==} + /react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.3.1): + resolution: {integrity: sha512-0H2XpmghwOtfPpM2LKqHIN7gxy+7G/r1hwJHKLV6uoyXGC/gCojRtoo5NqyKrWpFC8cqyT6wTYCLuG7CxEKilg==} engines: {node: '>=18'} hasBin: true peerDependencies: + '@types/react': ^18.2.6 react: 18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 12.3.2 - '@react-native-community/cli-platform-android': 12.3.2 - '@react-native-community/cli-platform-ios': 12.3.2 - '@react-native/assets-registry': 0.73.1 - '@react-native/codegen': 0.73.3(@babel/preset-env@7.23.9) - '@react-native/community-cli-plugin': 0.73.16(@babel/core@7.23.9)(@babel/preset-env@7.23.9) - '@react-native/gradle-plugin': 0.73.4 - '@react-native/js-polyfills': 0.73.1 - '@react-native/normalize-colors': 0.73.2 - '@react-native/virtualized-lists': 0.73.4(react-native@0.73.4) + '@react-native-community/cli': 13.6.6 + '@react-native-community/cli-platform-android': 13.6.6 + '@react-native-community/cli-platform-ios': 13.6.6 + '@react-native/assets-registry': 0.74.83 + '@react-native/codegen': 0.74.83(@babel/preset-env@7.24.5) + '@react-native/community-cli-plugin': 0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5) + '@react-native/gradle-plugin': 0.74.83 + '@react-native/js-polyfills': 0.74.83 + '@react-native/normalize-colors': 0.74.83 + '@react-native/virtualized-lists': 0.74.83(react-native@0.74.1)(react@18.3.1) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 base64-js: 1.5.1 chalk: 4.1.2 - deprecated-react-native-prop-types: 5.0.0 event-target-shim: 5.0.1 flow-enums-runtime: 0.0.6 invariant: 2.2.4 jest-environment-node: 29.7.0 jsc-android: 250231.0.0 memoize-one: 5.2.1 - metro-runtime: 0.80.6 - metro-source-map: 0.80.6 + metro-runtime: 0.80.9 + metro-source-map: 0.80.9 mkdirp: 0.5.6 nullthrows: 1.1.1 pretty-format: 26.6.2 promise: 8.3.0 - react: 18.2.0 - react-devtools-core: 4.28.5 - react-refresh: 0.14.0 - react-shallow-renderer: 16.15.0(react@18.2.0) + react: 18.3.1 + react-devtools-core: 5.1.0 + react-refresh: 0.14.2 + react-shallow-renderer: 16.15.0(react@18.3.1) regenerator-runtime: 0.13.11 scheduler: 0.24.0-canary-efb381bbf-20230505 stacktrace-parser: 0.1.10 @@ -12985,23 +12664,23 @@ packages: - utf-8-validate dev: false - /react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + /react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} dev: false - /react-shallow-renderer@16.15.0(react@18.2.0): + /react-shallow-renderer@16.15.0(react@18.3.1): resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: object-assign: 4.1.1 - react: 18.2.0 - react-is: 18.2.0 + react: 18.3.1 + react-is: 18.3.1 dev: false - /react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + /react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 @@ -13011,18 +12690,6 @@ packages: dependencies: pify: 2.3.0 - /readable-stream@2.3.3: - resolution: {integrity: sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 1.0.7 - safe-buffer: 5.1.2 - string_decoder: 1.0.3 - util-deprecate: 1.0.2 - dev: false - /readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: @@ -13074,18 +12741,6 @@ packages: ms: 2.1.3 dev: false - /redis-errors@1.2.0: - resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} - engines: {node: '>=4'} - dev: false - - /redis-parser@3.0.0: - resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} - engines: {node: '>=4'} - dependencies: - redis-errors: 1.2.0 - dev: false - /regenerate-unicode-properties@10.1.1: resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} engines: {node: '>=4'} @@ -13108,16 +12763,17 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 dev: false - /regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - set-function-name: 2.0.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 dev: true /regexpp@3.2.0: @@ -13193,6 +12849,7 @@ packages: /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + dev: true /resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -13256,6 +12913,20 @@ packages: dependencies: glob: 7.2.3 + /ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: false + + /rlp@2.2.7: + resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + hasBin: true + dependencies: + bn.js: 5.2.1 + dev: false + /rollup-plugin-visualizer@5.12.0: resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} engines: {node: '>=14'} @@ -13280,26 +12951,29 @@ packages: fsevents: 2.3.3 dev: true - /rollup@4.12.0: - resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==} + /rollup@4.17.2: + resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.12.0 - '@rollup/rollup-android-arm64': 4.12.0 - '@rollup/rollup-darwin-arm64': 4.12.0 - '@rollup/rollup-darwin-x64': 4.12.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.12.0 - '@rollup/rollup-linux-arm64-gnu': 4.12.0 - '@rollup/rollup-linux-arm64-musl': 4.12.0 - '@rollup/rollup-linux-riscv64-gnu': 4.12.0 - '@rollup/rollup-linux-x64-gnu': 4.12.0 - '@rollup/rollup-linux-x64-musl': 4.12.0 - '@rollup/rollup-win32-arm64-msvc': 4.12.0 - '@rollup/rollup-win32-ia32-msvc': 4.12.0 - '@rollup/rollup-win32-x64-msvc': 4.12.0 + '@rollup/rollup-android-arm-eabi': 4.17.2 + '@rollup/rollup-android-arm64': 4.17.2 + '@rollup/rollup-darwin-arm64': 4.17.2 + '@rollup/rollup-darwin-x64': 4.17.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.17.2 + '@rollup/rollup-linux-arm-musleabihf': 4.17.2 + '@rollup/rollup-linux-arm64-gnu': 4.17.2 + '@rollup/rollup-linux-arm64-musl': 4.17.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.17.2 + '@rollup/rollup-linux-riscv64-gnu': 4.17.2 + '@rollup/rollup-linux-s390x-gnu': 4.17.2 + '@rollup/rollup-linux-x64-gnu': 4.17.2 + '@rollup/rollup-linux-x64-musl': 4.17.2 + '@rollup/rollup-win32-arm64-msvc': 4.17.2 + '@rollup/rollup-win32-ia32-msvc': 4.17.2 + '@rollup/rollup-win32-x64-msvc': 4.17.2 fsevents: 2.3.3 dev: true @@ -13307,13 +12981,6 @@ packages: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} dev: true - /run-applescript@5.0.0: - resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} - engines: {node: '>=12'} - dependencies: - execa: 5.1.1 - dev: true - /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -13325,8 +12992,8 @@ packages: dependencies: mri: 1.2.0 - /safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} dependencies: call-bind: 1.0.7 @@ -13342,11 +13009,12 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 - get-intrinsic: 1.2.4 + es-errors: 1.3.0 is-regex: 1.1.4 dev: true @@ -13374,13 +13042,6 @@ packages: xmlchars: 2.2.0 dev: true - /scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} - requiresBuild: true - dependencies: - loose-envify: 1.4.0 - dev: false - /scheduler@0.24.0-canary-efb381bbf-20230505: resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} dependencies: @@ -13389,16 +13050,33 @@ packages: /scrypt-js@3.0.1: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} - dev: true + + /secp256k1@4.0.3: + resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dependencies: + elliptic: 6.5.5 + node-addon-api: 2.0.2 + node-gyp-build: 4.8.1 + dev: false /secp256k1@5.0.0: resolution: {integrity: sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - elliptic: 6.5.4 + elliptic: 6.5.5 node-addon-api: 5.1.0 - node-gyp-build: 4.8.0 + node-gyp-build: 4.8.1 + dev: false + + /selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 dev: false /semver@5.7.2: @@ -13469,8 +13147,8 @@ packages: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: true - /set-function-length@1.2.1: - resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 @@ -13480,15 +13158,20 @@ packages: gopd: 1.0.1 has-property-descriptors: 1.0.2 - /set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 + es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 dev: true + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: false + /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -13551,10 +13234,12 @@ packages: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: false - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 + es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 dev: true @@ -13580,7 +13265,7 @@ packages: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} dependencies: - '@polka/url': 1.0.0-next.24 + '@polka/url': 1.0.0-next.25 mrmime: 2.0.0 totalist: 3.0.1 dev: true @@ -13621,13 +13306,13 @@ packages: dot-case: 3.0.4 tslib: 2.6.2 - /socket.io-client@4.7.4(bufferutil@4.0.8)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==} + /socket.io-client@4.7.5: + resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} engines: {node: '>=10.0.0'} dependencies: - '@socket.io/component-emitter': 3.1.0 + '@socket.io/component-emitter': 3.1.2 debug: 4.3.4 - engine.io-client: 6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.3) + engine.io-client: 6.5.3 socket.io-parser: 4.2.4 transitivePeerDependencies: - bufferutil @@ -13639,7 +13324,7 @@ packages: resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} engines: {node: '>=10.0.0'} dependencies: - '@socket.io/component-emitter': 3.1.0 + '@socket.io/component-emitter': 3.1.2 debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -13652,7 +13337,7 @@ packages: dependencies: command-exists: 1.2.9 commander: 8.3.0 - follow-redirects: 1.15.5(debug@4.3.4) + follow-redirects: 1.15.6(debug@4.3.4) js-sha3: 0.8.0 memorystream: 0.3.1 semver: 5.7.2 @@ -13661,17 +13346,17 @@ packages: - debug dev: true - /solhint@4.5.4(typescript@5.4.3): + /solhint@4.5.4(typescript@5.4.5): resolution: {integrity: sha512-Cu1XiJXub2q1eCr9kkJ9VPv1sGcmj3V7Zb76B0CoezDOB9bu3DxKIFFH7ggCl9fWpEPD6xBmRLfZrYijkVmujQ==} hasBin: true dependencies: '@solidity-parser/parser': 0.18.0 ajv: 6.12.6 - antlr4: 4.13.1 + antlr4: 4.13.1-patch-1 ast-parents: 0.0.1 chalk: 4.1.2 commander: 10.0.1 - cosmiconfig: 8.3.6(typescript@5.4.3) + cosmiconfig: 8.3.6(typescript@5.4.5) fast-diff: 1.3.0 glob: 8.1.0 ignore: 5.3.1 @@ -13681,7 +13366,7 @@ packages: pluralize: 8.0.0 semver: 7.6.0 strip-ansi: 6.0.1 - table: 6.8.1 + table: 6.8.2 text-table: 0.2.0 optionalDependencies: prettier: 2.8.8 @@ -13767,10 +13452,6 @@ packages: type-fest: 0.7.1 dev: false - /standard-as-callback@2.1.0: - resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} - dev: false - /statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -13789,8 +13470,8 @@ packages: dependencies: bl: 5.1.0 - /stream-shift@1.0.1: - resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + /stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} dev: false /stream-to-it@0.2.4: @@ -13820,37 +13501,33 @@ packages: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - /string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 dev: true - /string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 dev: true - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 dev: true - /string_decoder@1.0.3: - resolution: {integrity: sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==} - dependencies: - safe-buffer: 5.1.2 - dev: false - /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: @@ -13889,6 +13566,7 @@ packages: /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + dev: false /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} @@ -13918,34 +13596,24 @@ packages: engines: {node: '>=8'} dev: true - /strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} - dependencies: - acorn: 8.11.3 - dev: true - - /strip-literal@2.0.0: - resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} + /strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} dependencies: - js-tokens: 8.0.3 + js-tokens: 9.0.0 dev: true /strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: false - /stylis@4.2.0: - resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} - dev: false - /sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: - '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 10.3.10 + glob: 10.3.12 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -13955,8 +13623,8 @@ packages: resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} dev: false - /superstruct@1.0.3: - resolution: {integrity: sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==} + /superstruct@1.0.4: + resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} engines: {node: '>=14.0.0'} dev: false @@ -13983,35 +13651,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svelte-check@3.6.9(@babel/core@7.23.9)(postcss@8.4.38)(svelte@4.2.12): - resolution: {integrity: sha512-hDQrk3L0osX07djQyMiXocKysTLfusqi8AriNcCiQxhQR49/LonYolcUGMtZ0fbUR8HTR198Prrgf52WWU9wEg==} - hasBin: true - peerDependencies: - svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - chokidar: 3.6.0 - fast-glob: 3.3.2 - import-fresh: 3.3.0 - picocolors: 1.0.0 - sade: 1.8.1 - svelte: 4.2.12 - svelte-preprocess: 5.1.3(@babel/core@7.23.9)(postcss@8.4.38)(svelte@4.2.12)(typescript@5.4.3) - typescript: 5.4.3 - transitivePeerDependencies: - - '@babel/core' - - coffeescript - - less - - postcss - - postcss-load-config - - pug - - sass - - stylus - - sugarss - dev: true - - /svelte-check@3.6.9(@babel/core@7.23.9)(postcss@8.4.38)(svelte@4.2.13): - resolution: {integrity: sha512-hDQrk3L0osX07djQyMiXocKysTLfusqi8AriNcCiQxhQR49/LonYolcUGMtZ0fbUR8HTR198Prrgf52WWU9wEg==} + /svelte-check@3.7.1(@babel/core@7.24.5)(postcss@8.4.38)(svelte@4.2.15): + resolution: {integrity: sha512-U4uJoLCzmz2o2U33c7mPDJNhRYX/DNFV11XTUDlFxaKLsO7P+40gvJHMPpoRfa24jqZfST4/G9fGNcUGMO8NAQ==} hasBin: true peerDependencies: svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 @@ -14022,9 +13663,9 @@ packages: import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 - svelte: 4.2.13 - svelte-preprocess: 5.1.3(@babel/core@7.23.9)(postcss@8.4.38)(svelte@4.2.13)(typescript@5.4.3) - typescript: 5.4.3 + svelte: 4.2.15 + svelte-preprocess: 5.1.4(@babel/core@7.24.5)(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -14037,12 +13678,12 @@ packages: - sugarss dev: true - /svelte-copy@1.4.2(svelte@4.2.13): + /svelte-copy@1.4.2(svelte@4.2.15): resolution: {integrity: sha512-Q99JvWDzB58JlbVWX2VxjHX/CQ5ayDLUGGJgL2EqU1+3c9CDOtxLrKFZx5CVN5bN/DDl62nxtazz0j3nGX1Xew==} peerDependencies: svelte: ^3.55.0 || ^4.0.0 dependencies: - svelte: 4.2.13 + svelte: 4.2.15 dev: true /svelte-countdown@1.1.2: @@ -14051,24 +13692,7 @@ packages: dayjs: 1.10.1 dev: false - /svelte-eslint-parser@0.35.0(svelte@4.2.12): - resolution: {integrity: sha512-CtbPseajW0gjwEvHiuzYJkPDjAcHz2FaHt540j6RVYrZgnE6xWkzUBodQ4I3nV+G5AS0Svt8K6aIA/CIU9xT2Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.112 - peerDependenciesMeta: - svelte: - optional: true - dependencies: - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - postcss: 8.4.38 - postcss-scss: 4.0.9(postcss@8.4.38) - svelte: 4.2.12 - dev: true - - /svelte-eslint-parser@0.35.0(svelte@4.2.13): + /svelte-eslint-parser@0.35.0(svelte@4.2.15): resolution: {integrity: sha512-CtbPseajW0gjwEvHiuzYJkPDjAcHz2FaHt540j6RVYrZgnE6xWkzUBodQ4I3nV+G5AS0Svt8K6aIA/CIU9xT2Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -14082,112 +13706,37 @@ packages: espree: 9.6.1 postcss: 8.4.38 postcss-scss: 4.0.9(postcss@8.4.38) - svelte: 4.2.13 - dev: true - - /svelte-hmr@0.15.3(svelte@4.2.12): - resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} - engines: {node: ^12.20 || ^14.13.1 || >= 16} - peerDependencies: - svelte: ^3.19.0 || ^4.0.0 - dependencies: - svelte: 4.2.12 + svelte: 4.2.15 dev: true - /svelte-hmr@0.16.0(svelte@4.2.13): + /svelte-hmr@0.16.0(svelte@4.2.15): resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: svelte: ^3.19.0 || ^4.0.0 dependencies: - svelte: 4.2.13 + svelte: 4.2.15 dev: true - /svelte-i18n@3.7.4(svelte@4.2.12): - resolution: {integrity: sha512-yGRCNo+eBT4cPuU7IVsYTYjxB7I2V8qgUZPlHnNctJj5IgbJgV78flsRzpjZ/8iUYZrS49oCt7uxlU3AZv/N5Q==} - engines: {node: '>= 16'} - hasBin: true - peerDependencies: - svelte: ^3 || ^4 - dependencies: - cli-color: 2.0.3 - deepmerge: 4.3.1 - esbuild: 0.19.12 - estree-walker: 2.0.2 - intl-messageformat: 9.13.0 - sade: 1.8.1 - svelte: 4.2.12 - tiny-glob: 0.2.9 - dev: false - - /svelte-i18n@4.0.0(svelte@4.2.13): + /svelte-i18n@4.0.0(svelte@4.2.15): resolution: {integrity: sha512-4vivjKZADUMRIhTs38JuBNy3unbnh9AFRxWFLxq62P4NHic+/BaIZZlAsvqsCdnp7IdJf5EoSiH6TNdItcjA6g==} engines: {node: '>= 16'} hasBin: true peerDependencies: svelte: ^3 || ^4 dependencies: - cli-color: 2.0.3 + cli-color: 2.0.4 deepmerge: 4.3.1 esbuild: 0.19.12 estree-walker: 2.0.2 intl-messageformat: 10.5.11 sade: 1.8.1 - svelte: 4.2.13 + svelte: 4.2.15 tiny-glob: 0.2.9 - /svelte-preprocess@5.1.3(@babel/core@7.23.9)(postcss@8.4.38)(svelte@4.2.12)(typescript@5.4.3): - resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} - engines: {node: '>= 16.0.0', pnpm: ^8.0.0} - requiresBuild: true - peerDependencies: - '@babel/core': ^7.10.2 - coffeescript: ^2.5.1 - less: ^3.11.3 || ^4.0.0 - postcss: ^7 || ^8 - postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - pug: ^3.0.0 - sass: ^1.26.8 - stylus: ^0.55.0 - sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 - svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' - peerDependenciesMeta: - '@babel/core': - optional: true - coffeescript: - optional: true - less: - optional: true - postcss: - optional: true - postcss-load-config: - optional: true - pug: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - typescript: - optional: true - dependencies: - '@babel/core': 7.23.9 - '@types/pug': 2.0.10 - detect-indent: 6.1.0 - magic-string: 0.30.9 - postcss: 8.4.38 - sorcery: 0.11.0 - strip-indent: 3.0.0 - svelte: 4.2.12 - typescript: 5.4.3 - dev: true - - /svelte-preprocess@5.1.3(@babel/core@7.23.9)(postcss@8.4.38)(svelte@4.2.13)(typescript@5.4.3): - resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} - engines: {node: '>= 16.0.0', pnpm: ^8.0.0} + /svelte-preprocess@5.1.4(@babel/core@7.24.5)(postcss@8.4.38)(svelte@4.2.15)(typescript@5.4.5): + resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} + engines: {node: '>= 16.0.0'} requiresBuild: true peerDependencies: '@babel/core': ^7.10.2 @@ -14223,49 +13772,30 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@types/pug': 2.0.10 detect-indent: 6.1.0 - magic-string: 0.30.9 + magic-string: 0.30.10 postcss: 8.4.38 sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 4.2.13 - typescript: 5.4.3 + svelte: 4.2.15 + typescript: 5.4.5 dev: true - /svelte-scrolling@1.4.0(svelte@4.2.13): + /svelte-scrolling@1.4.0(svelte@4.2.15): resolution: {integrity: sha512-1721UrmTODAIhybCR5p/l6lQNSmuk66VgtgxdAEdQiGuYU1wCcKB/9kba0VXlxIeh5vhEaoODAOCizRRtHKQoQ==} peerDependencies: svelte: ^3 || ^4 dependencies: - svelte: 4.2.13 + svelte: 4.2.15 dev: true - /svelte@4.2.12: - resolution: {integrity: sha512-d8+wsh5TfPwqVzbm4/HCXC783/KPHV60NvwitJnyTA5lWn1elhXMNWhXGCJ7PwPa8qFUnyJNIyuIRt2mT0WMug==} - engines: {node: '>=16'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 - '@types/estree': 1.0.5 - acorn: 8.11.3 - aria-query: 5.3.0 - axobject-query: 4.0.0 - code-red: 1.0.4 - css-tree: 2.3.1 - estree-walker: 3.0.3 - is-reference: 3.0.2 - locate-character: 3.0.0 - magic-string: 0.30.7 - periscopic: 3.1.0 - - /svelte@4.2.13: - resolution: {integrity: sha512-jtVt2KXLbQnsWN93Zd7EVboNh8Tqexes4rZfXNP7nYRjd9+JjubTD8BXloUmU1OUYpc6pdd1aKBhCV+b2ZKoMg==} + /svelte@4.2.15: + resolution: {integrity: sha512-j9KJSccHgLeRERPlhMKrCXpk2TqL2m5Z+k+OBTQhZOhIdCCd3WfqV+ylPWeipEwq17P/ekiSFWwrVQv93i3bsg==} engines: {node: '>=16'} dependencies: - '@ampproject/remapping': 2.2.1 + '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 '@types/estree': 1.0.5 @@ -14277,18 +13807,18 @@ packages: estree-walker: 3.0.3 is-reference: 3.0.2 locate-character: 3.0.0 - magic-string: 0.30.9 + magic-string: 0.30.10 periscopic: 3.1.0 /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /synckit@0.8.6: - resolution: {integrity: sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA==} + /synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: - '@pkgr/utils': 2.4.2 + '@pkgr/core': 0.1.1 tslib: 2.6.2 dev: true @@ -14297,11 +13827,11 @@ packages: engines: {node: '>=18'} dev: false - /table@6.8.1: - resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} + /table@6.8.2: + resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} engines: {node: '>=10.0.0'} dependencies: - ajv: 8.12.0 + ajv: 8.13.0 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 @@ -14339,7 +13869,7 @@ packages: postcss-js: 4.0.1(postcss@8.4.38) postcss-load-config: 4.0.2(postcss@8.4.38) postcss-nested: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: @@ -14357,12 +13887,12 @@ packages: rimraf: 2.6.3 dev: false - /terser@5.27.2: - resolution: {integrity: sha512-sHXmLSkImesJ4p5apTeT63DsV4Obe1s37qT8qvwHRmVxKTBH7Rv9Wr26VcAMmLbmk9UliiwK8z+657NyJHHy/w==} + /terser@5.31.0: + resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} engines: {node: '>=10'} hasBin: true dependencies: - '@jridgewell/source-map': 0.3.5 + '@jridgewell/source-map': 0.3.6 acorn: 8.11.3 commander: 2.20.3 source-map-support: 0.5.21 @@ -14418,7 +13948,7 @@ packages: /timers-ext@0.1.7: resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} dependencies: - es5-ext: 0.10.62 + es5-ext: 0.10.64 next-tick: 1.1.0 /tiny-glob@0.2.9: @@ -14427,30 +13957,20 @@ packages: globalyzer: 0.1.0 globrex: 0.1.2 - /tinybench@2.6.0: - resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} - dev: true - - /tinypool@0.5.0: - resolution: {integrity: sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==} - engines: {node: '>=14.0.0'} + /tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} dev: true - /tinypool@0.8.3: - resolution: {integrity: sha512-Ud7uepAklqRH1bvwy22ynrliC7Dljz7Tm8M/0RBUW+YRa4YHhZ6e4PpgE+fu1zr/WqB1kbeuVrdfeuyIBpy4tw==} + /tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} engines: {node: '>=14.0.0'} dev: true - /tinyspy@2.2.0: - resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + /tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} engines: {node: '>=14.0.0'} dev: true - /titleize@3.0.0: - resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} - engines: {node: '>=12'} - dev: true - /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -14465,7 +13985,6 @@ packages: /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - requiresBuild: true /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -14482,8 +14001,8 @@ packages: engines: {node: '>=6'} dev: true - /tough-cookie@4.1.3: - resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + /tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} dependencies: psl: 1.9.0 @@ -14507,22 +14026,13 @@ packages: engines: {node: '>=0.6'} dev: false - /ts-api-utils@1.2.1(typescript@5.4.3): - resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - dependencies: - typescript: 5.4.3 - dev: true - - /ts-api-utils@1.3.0(typescript@5.4.3): + /ts-api-utils@1.3.0(typescript@5.4.5): resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.4.3 + typescript: 5.4.5 dev: true /ts-dedent@2.2.0: @@ -14530,15 +14040,15 @@ packages: engines: {node: '>=6.10'} dev: true - /ts-essentials@9.4.1(typescript@5.4.3): - resolution: {integrity: sha512-oke0rI2EN9pzHsesdmrOrnqv1eQODmJpd/noJjwj2ZPC3Z4N2wbjrOEqnsEgmvlO2+4fBb0a794DCna2elEVIQ==} + /ts-essentials@9.4.2(typescript@5.4.5): + resolution: {integrity: sha512-mB/cDhOvD7pg3YCLk2rOtejHjjdSi9in/IBYE13S+8WA5FBSraYf4V/ws55uvs0IvQ/l0wBOlXy5yBNZ9Bl8ZQ==} peerDependencies: typescript: '>=4.1.0' peerDependenciesMeta: typescript: optional: true dependencies: - typescript: 5.4.3 + typescript: 5.4.5 dev: true /ts-interface-checker@0.1.13: @@ -14551,7 +14061,7 @@ packages: code-block-writer: 12.0.0 dev: true - /ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.3): + /ts-node@10.9.2(@types/node@20.12.8)(typescript@5.4.5): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -14566,23 +14076,23 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 + '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.12.7 + '@types/node': 20.12.8 acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.4.3 + typescript: 5.4.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true - /tsconfck@3.0.3(typescript@5.4.3): + /tsconfck@3.0.3(typescript@5.4.5): resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==} engines: {node: ^18 || >=20} hasBin: true @@ -14592,11 +14102,11 @@ packages: typescript: optional: true dependencies: - typescript: 5.4.3 + typescript: 5.4.5 dev: true - /tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 @@ -14610,14 +14120,14 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsutils@3.21.0(typescript@5.4.3): + /tsutils@3.21.0(typescript@5.4.5): 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.3 + typescript: 5.4.5 dev: true /tween-functions@1.2.0: @@ -14645,57 +14155,60 @@ packages: engines: {node: '>=8'} dev: false - /type@1.2.0: - resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} - /type@2.7.2: resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} - /typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 - get-intrinsic: 1.2.4 - is-typed-array: 1.1.12 + es-errors: 1.3.0 + is-typed-array: 1.1.13 dev: true - /typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 for-each: 0.3.3 + gopd: 1.0.1 has-proto: 1.0.3 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 dev: true - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 + available-typed-arrays: 1.0.7 call-bind: 1.0.7 for-each: 0.3.3 + gopd: 1.0.1 has-proto: 1.0.3 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 dev: true - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 for-each: 0.3.3 - is-typed-array: 1.1.12 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 dev: true - /typescript@5.4.3: - resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==} + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} hasBin: true - /ufo@1.4.0: - resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} + /ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} /uint8-varint@2.0.4: resolution: {integrity: sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==} @@ -14744,11 +14257,12 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /undici@5.28.3: - resolution: {integrity: sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==} + /undici@5.28.4: + resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} dependencies: - '@fastify/busboy': 2.1.0 + '@fastify/busboy': 2.1.1 + dev: false /unenv@1.9.0: resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} @@ -14756,7 +14270,7 @@ packages: consola: 3.2.3 defu: 6.1.4 mime: 3.0.0 - node-fetch-native: 1.6.2 + node-fetch-native: 1.6.4 pathe: 1.1.2 dev: false @@ -14805,21 +14319,22 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - /unstorage@1.10.1(idb-keyval@6.2.1): - resolution: {integrity: sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==} + /unstorage@1.10.2(idb-keyval@6.2.1): + resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} peerDependencies: - '@azure/app-configuration': ^1.4.1 + '@azure/app-configuration': ^1.5.0 '@azure/cosmos': ^4.0.0 '@azure/data-tables': ^13.2.2 - '@azure/identity': ^3.3.2 - '@azure/keyvault-secrets': ^4.7.0 - '@azure/storage-blob': ^12.16.0 - '@capacitor/preferences': ^5.0.6 - '@netlify/blobs': ^6.2.0 - '@planetscale/database': ^1.11.0 - '@upstash/redis': ^1.23.4 - '@vercel/kv': ^0.2.3 + '@azure/identity': ^4.0.1 + '@azure/keyvault-secrets': ^4.8.0 + '@azure/storage-blob': ^12.17.0 + '@capacitor/preferences': ^5.0.7 + '@netlify/blobs': ^6.5.0 || ^7.0.0 + '@planetscale/database': ^1.16.0 + '@upstash/redis': ^1.28.4 + '@vercel/kv': ^1.0.1 idb-keyval: ^6.2.1 + ioredis: ^5.3.2 peerDependenciesMeta: '@azure/app-configuration': optional: true @@ -14845,28 +14360,24 @@ packages: optional: true idb-keyval: optional: true + ioredis: + optional: true dependencies: anymatch: 3.1.3 chokidar: 3.6.0 destr: 2.0.3 - h3: 1.10.2 + h3: 1.11.1 idb-keyval: 6.2.1 - ioredis: 5.3.2 - listhen: 1.6.0 - lru-cache: 10.2.0 + listhen: 1.7.2 + lru-cache: 10.2.2 mri: 1.2.0 - node-fetch-native: 1.6.2 - ofetch: 1.3.3 - ufo: 1.4.0 + node-fetch-native: 1.6.4 + ofetch: 1.3.4 + ufo: 1.5.3 transitivePeerDependencies: - - supports-color + - uWebSockets.js dev: false - /untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} - dev: true - /untun@0.1.3: resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} hasBin: true @@ -14876,8 +14387,8 @@ packages: pathe: 1.1.2 dev: false - /update-browserslist-db@1.0.13(browserslist@4.23.0): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + /update-browserslist-db@1.0.15(browserslist@4.23.0): + resolution: {integrity: sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -14913,12 +14424,12 @@ packages: requires-port: 1.0.0 dev: true - /use-sync-external-store@1.2.0(react@18.2.0): + /use-sync-external-store@1.2.0(react@18.3.1): resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - react: 18.2.0 + react: 18.3.1 dev: false /utf-8-validate@6.0.3: @@ -14926,7 +14437,7 @@ packages: engines: {node: '>=6.14.2'} requiresBuild: true dependencies: - node-gyp-build: 4.8.0 + node-gyp-build: 4.8.1 dev: false /utf8@3.0.0: @@ -14942,8 +14453,8 @@ 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.13 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 dev: false /utils-merge@1.0.1: @@ -14956,20 +14467,16 @@ packages: hasBin: true dev: false + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true - /v8-to-istanbul@9.2.0: - resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} - engines: {node: '>=10.12.0'} - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 - dev: true - - /valtio@1.11.2(react@18.2.0): + /valtio@1.11.2(react@18.3.1): resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} engines: {node: '>=12.20.0'} peerDependencies: @@ -14982,8 +14489,8 @@ packages: optional: true dependencies: proxy-compare: 2.5.1 - react: 18.2.0 - use-sync-external-store: 1.2.0(react@18.2.0) + react: 18.3.1 + use-sync-external-store: 1.2.0(react@18.3.1) dev: false /varint@6.0.0: @@ -14995,7 +14502,7 @@ packages: engines: {node: '>= 0.8'} dev: false - /viem@1.21.4(typescript@5.4.3): + /viem@1.21.4(typescript@5.4.5): resolution: {integrity: sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==} peerDependencies: typescript: '>=5.0.4' @@ -15008,9 +14515,9 @@ packages: '@noble/hashes': 1.3.2 '@scure/bip32': 1.3.2 '@scure/bip39': 1.2.1 - abitype: 0.9.8(typescript@5.4.3) + abitype: 0.9.8(typescript@5.4.5) isows: 1.0.3(ws@8.13.0) - typescript: 5.4.3 + typescript: 5.4.5 ws: 8.13.0 transitivePeerDependencies: - bufferutil @@ -15018,8 +14525,8 @@ packages: - zod dev: false - /viem@2.9.29(typescript@5.4.3)(zod@3.22.4): - resolution: {integrity: sha512-LWvDSyB2tftKuSMAyZTXk3pDYj3c0aaOdr2JbDZEsPJw5zVbqg3FpoPHnUkHai8KcZI8aPWRKV31TYV1cBse9A==} + /viem@2.9.31(typescript@5.4.5)(zod@3.23.6): + resolution: {integrity: sha512-8aJ8Dm/591Czwb/nRayo0z8Ls5KxqC4QYE33fmHwhx2tDUWC/hHcPZqjLRSTWFtAfi0aZKvP7BeB6UZ3ZkTRhQ==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: @@ -15031,39 +14538,17 @@ packages: '@noble/hashes': 1.3.2 '@scure/bip32': 1.3.2 '@scure/bip39': 1.2.1 - abitype: 1.0.0(typescript@5.4.3)(zod@3.22.4) + abitype: 1.0.0(typescript@5.4.5)(zod@3.23.6) isows: 1.0.3(ws@8.13.0) - typescript: 5.4.3 + typescript: 5.4.5 ws: 8.13.0 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - /vite-node@0.32.4(@types/node@20.12.7): - resolution: {integrity: sha512-L2gIw+dCxO0LK14QnUMoqSYpa9XRGnTTTDjW2h19Mr+GR0EFj4vx52W41gFXfMLqpA00eK4ZjOVYo1Xk//LFEw==} - engines: {node: '>=v14.18.0'} - hasBin: true - dependencies: - cac: 6.7.14 - debug: 4.3.4 - mlly: 1.5.0 - pathe: 1.1.2 - picocolors: 1.0.0 - vite: 4.5.3(@types/node@20.12.7) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vite-node@1.5.0(@types/node@20.12.7): - resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==} + /vite-node@1.6.0(@types/node@20.12.8): + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: @@ -15071,7 +14556,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.1.3(@types/node@20.12.7) + vite: 5.2.11(@types/node@20.12.8) transitivePeerDependencies: - '@types/node' - less @@ -15083,7 +14568,7 @@ packages: - terser dev: true - /vite-tsconfig-paths@4.3.2(typescript@5.4.3)(vite@4.5.3): + /vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@4.5.3): resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} peerDependencies: vite: '*' @@ -15093,14 +14578,14 @@ packages: dependencies: debug: 4.3.4 globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.4.3) - vite: 4.5.3(@types/node@20.12.7) + tsconfck: 3.0.3(typescript@5.4.5) + vite: 4.5.3 transitivePeerDependencies: - supports-color - typescript dev: true - /vite-tsconfig-paths@4.3.2(typescript@5.4.3)(vite@5.1.3): + /vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.2.11): resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} peerDependencies: vite: '*' @@ -15110,14 +14595,14 @@ packages: dependencies: debug: 4.3.4 globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.4.3) - vite: 5.1.3(@types/node@20.12.7) + tsconfck: 3.0.3(typescript@5.4.5) + vite: 5.2.11(@types/node@20.12.8) transitivePeerDependencies: - supports-color - typescript dev: true - /vite@4.5.3(@types/node@20.12.7): + /vite@4.5.3: resolution: {integrity: sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -15145,7 +14630,6 @@ packages: terser: optional: true dependencies: - '@types/node': 20.12.7 esbuild: 0.18.20 postcss: 8.4.38 rollup: 3.29.4 @@ -15153,8 +14637,8 @@ packages: fsevents: 2.3.3 dev: true - /vite@5.1.3(@types/node@20.12.7): - resolution: {integrity: sha512-UfmUD36DKkqhi/F75RrxvPpry+9+tTkrXfMNZD+SboZqBCMsxKtO52XeGzzuh7ioz+Eo/SYDBbdb0Z7vgcDJew==} + /vite@5.2.11(@types/node@20.12.8): + resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -15181,10 +14665,10 @@ packages: terser: optional: true dependencies: - '@types/node': 20.12.7 - esbuild: 0.19.12 + '@types/node': 20.12.8 + esbuild: 0.20.2 postcss: 8.4.38 - rollup: 4.12.0 + rollup: 4.17.2 optionalDependencies: fsevents: 2.3.3 dev: true @@ -15197,10 +14681,10 @@ packages: vite: optional: true dependencies: - vite: 4.5.3(@types/node@20.12.7) + vite: 4.5.3 dev: true - /vitefu@0.2.5(vite@5.1.3): + /vitefu@0.2.5(vite@5.2.11): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -15208,107 +14692,41 @@ packages: vite: optional: true dependencies: - vite: 5.1.3(@types/node@20.12.7) + vite: 5.2.11(@types/node@20.12.8) dev: true - /vitest-fetch-mock@0.2.2(vitest@0.32.4): + /vitest-fetch-mock@0.2.2(vitest@1.6.0): resolution: {integrity: sha512-XmH6QgTSjCWrqXoPREIdbj40T7i1xnGmAsTAgfckoO75W1IEHKR8hcPCQ7SO16RsdW1t85oUm6pcQRLeBgjVYQ==} engines: {node: '>=14.14.0'} peerDependencies: vitest: '>=0.16.0' dependencies: cross-fetch: 3.1.8 - vitest: 0.32.4(jsdom@24.0.0) + vitest: 1.6.0(jsdom@24.0.0) transitivePeerDependencies: - encoding dev: true - /vitest-mock-extended@1.3.1(typescript@5.4.3)(vitest@0.32.4): + /vitest-mock-extended@1.3.1(typescript@5.4.5)(vitest@1.6.0): resolution: {integrity: sha512-OpghYjh4BDuQ/Mzs3lFMQ1QRk9D8/2O9T47MLUA5eLn7K4RWIy+MfIivYOWEyxjTENjsBnzgMihDjyNalN/K0Q==} peerDependencies: typescript: 3.x || 4.x || 5.x vitest: '>=0.31.1' dependencies: - ts-essentials: 9.4.1(typescript@5.4.3) - typescript: 5.4.3 - vitest: 0.32.4(jsdom@24.0.0) - dev: true - - /vitest@0.32.4(jsdom@24.0.0): - resolution: {integrity: sha512-3czFm8RnrsWwIzVDu/Ca48Y/M+qh3vOnF16czJm98Q/AN1y3B6PBsyV8Re91Ty5s7txKNjEhpgtGPcfdbh2MZg==} - engines: {node: '>=v14.18.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true - dependencies: - '@types/chai': 4.3.11 - '@types/chai-subset': 1.3.5 - '@types/node': 20.12.7 - '@vitest/expect': 0.32.4 - '@vitest/runner': 0.32.4 - '@vitest/snapshot': 0.32.4 - '@vitest/spy': 0.32.4 - '@vitest/utils': 0.32.4 - acorn: 8.11.3 - acorn-walk: 8.3.2 - cac: 6.7.14 - chai: 4.4.1 - debug: 4.3.4 - jsdom: 24.0.0 - local-pkg: 0.4.3 - magic-string: 0.30.7 - pathe: 1.1.2 - picocolors: 1.0.0 - std-env: 3.7.0 - strip-literal: 1.3.0 - tinybench: 2.6.0 - tinypool: 0.5.0 - vite: 4.5.3(@types/node@20.12.7) - vite-node: 0.32.4(@types/node@20.12.7) - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser + ts-essentials: 9.4.2(typescript@5.4.5) + typescript: 5.4.5 + vitest: 1.6.0(jsdom@24.0.0) dev: true - /vitest@1.5.0: - resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} + /vitest@1.6.0(@types/node@20.12.8): + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.5.0 - '@vitest/ui': 1.5.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -15325,25 +14743,26 @@ packages: jsdom: optional: true dependencies: - '@vitest/expect': 1.5.0 - '@vitest/runner': 1.5.0 - '@vitest/snapshot': 1.5.0 - '@vitest/spy': 1.5.0 - '@vitest/utils': 1.5.0 + '@types/node': 20.12.8 + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 acorn-walk: 8.3.2 chai: 4.4.1 debug: 4.3.4 execa: 8.0.1 local-pkg: 0.5.0 - magic-string: 0.30.7 + magic-string: 0.30.10 pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 - strip-literal: 2.0.0 - tinybench: 2.6.0 - tinypool: 0.8.3 - vite: 5.1.3(@types/node@20.12.7) - vite-node: 1.5.0(@types/node@20.12.7) + strip-literal: 2.1.0 + tinybench: 2.8.0 + tinypool: 0.8.4 + vite: 5.2.11(@types/node@20.12.8) + vite-node: 1.6.0(@types/node@20.12.8) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -15355,15 +14774,15 @@ packages: - terser dev: true - /vitest@1.5.0(@types/node@20.12.7): - resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} + /vitest@1.6.0(jsdom@24.0.0): + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.5.0 - '@vitest/ui': 1.5.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -15380,26 +14799,26 @@ packages: jsdom: optional: true dependencies: - '@types/node': 20.12.7 - '@vitest/expect': 1.5.0 - '@vitest/runner': 1.5.0 - '@vitest/snapshot': 1.5.0 - '@vitest/spy': 1.5.0 - '@vitest/utils': 1.5.0 + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 acorn-walk: 8.3.2 chai: 4.4.1 debug: 4.3.4 execa: 8.0.1 + jsdom: 24.0.0 local-pkg: 0.5.0 - magic-string: 0.30.9 + magic-string: 0.30.10 pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 - strip-literal: 2.0.0 - tinybench: 2.6.0 - tinypool: 0.8.3 - vite: 5.1.3(@types/node@20.12.7) - vite-node: 1.5.0(@types/node@20.12.7) + strip-literal: 2.1.0 + tinybench: 2.8.0 + tinypool: 0.8.4 + vite: 5.2.11(@types/node@20.12.8) + vite-node: 1.6.0(@types/node@20.12.8) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -15438,35 +14857,32 @@ packages: dependencies: defaults: 1.0.4 - /web3-utils@1.10.3: - resolution: {integrity: sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==} + /web3-eth-abi@1.10.4: + resolution: {integrity: sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==} + engines: {node: '>=8.0.0'} + dependencies: + '@ethersproject/abi': 5.7.0 + web3-utils: 1.10.4 + dev: false + + /web3-utils@1.10.4: + resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} engines: {node: '>=8.0.0'} dependencies: '@ethereumjs/util': 8.1.0 bn.js: 5.2.1 - ethereum-bloom-filters: 1.0.10 - ethereum-cryptography: 2.1.2 + ethereum-bloom-filters: 1.1.0 + ethereum-cryptography: 2.1.3 ethjs-unit: 0.1.6 number-to-bn: 1.7.0 randombytes: 2.1.0 utf8: 3.0.0 dev: false - /webextension-polyfill-ts@0.25.0: - resolution: {integrity: sha512-ikQhwwHYkpBu00pFaUzIKY26I6L87DeRI+Q6jBT1daZUNuu8dSrg5U9l/ZbqdaQ1M/TTSPKeAa3kolP5liuedw==} - deprecated: This project has moved to @types/webextension-polyfill - dependencies: - webextension-polyfill: 0.7.0 - dev: false - /webextension-polyfill@0.10.0: resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} dev: false - /webextension-polyfill@0.7.0: - resolution: {integrity: sha512-su48BkMLxqzTTvPSE1eWxKToPS2Tv5DLGxKexLEVpwFd6Po6N8hhSLIvG6acPAg7qERoEaDL+Y5HQJeJeml5Aw==} - dev: false - /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -15519,15 +14935,15 @@ packages: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} dev: false - /which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 + available-typed-arrays: 1.0.7 call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -15553,6 +14969,11 @@ packages: stackback: 0.0.2 dev: true + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -15629,7 +15050,7 @@ packages: optional: true dev: false - /ws@8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): + /ws@8.11.0: resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} engines: {node: '>=10.0.0'} peerDependencies: @@ -15640,9 +15061,6 @@ packages: optional: true utf-8-validate: optional: true - dependencies: - bufferutil: 4.0.8 - utf-8-validate: 6.0.3 dev: false /ws@8.13.0: @@ -15657,8 +15075,8 @@ packages: utf-8-validate: optional: true - /ws@8.16.0: - resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + /ws@8.17.0: + resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -15707,10 +15125,12 @@ packages: /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} + dev: true - /yaml@2.3.4: - resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + /yaml@2.4.2: + resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} engines: {node: '>= 14'} + hasBin: true /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} @@ -15770,8 +15190,12 @@ packages: /zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + dev: false - /zustand@4.4.1(react@18.2.0): + /zod@3.23.6: + resolution: {integrity: sha512-RTHJlZhsRbuA8Hmp/iNL7jnfc4nZishjsanDAfEY1QpDQZCahUp3xDzl+zfweE9BklxMUcgBgS1b7Lvie/ZVwA==} + + /zustand@4.4.1(react@18.3.1): resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} engines: {node: '>=12.7.0'} peerDependencies: @@ -15786,8 +15210,8 @@ packages: react: optional: true dependencies: - react: 18.2.0 - use-sync-external-store: 1.2.0(react@18.2.0) + react: 18.3.1 + use-sync-external-store: 1.2.0(react@18.3.1) dev: false github.com/Arachnid/solidity-stringutils/4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461: