Browse Source

:recycle: Refactor workspace and project dependencies (#15)

* :recycle: Refactor workspace and project dependencies

* :construction_worker: Update CI/CD workflows

* :construction_worker: Add workdflow to publish ts sdk on release

* :see_no_evil: Ignore yarn error log

* :recycle: Use workspace dependencies for the CLI
Gabriele Picco 1 year ago
parent
commit
cacbfc1767

+ 39 - 15
.github/workflows/publish-bolt-lang.yml → .github/workflows/publish-bolt-crates.yml

@@ -1,20 +1,20 @@
-name: Publish Bolt Lang
+name: Publish Bolt crates
 on:
   release:
     types: [published]
   workflow_dispatch:
 
 env:
-  solana_version: v1.17.0
+  solana_version: v1.18.1
   anchor_version: 0.29.0
 
 jobs:
   install:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
 
-      - uses: actions/cache@v3
+      - uses: actions/cache@v4
         name: cache solana cli
         id: cache-solana
         with:
@@ -23,7 +23,7 @@ jobs:
             ~/.local/share/solana/
           key: solana-${{ runner.os }}-v0000-${{ env.solana_version }}
 
-      - uses: actions/setup-node@v3
+      - uses: actions/setup-node@v4
         with:
           node-version: 20
 
@@ -31,6 +31,7 @@ jobs:
         run: |
           sudo apt-get update
           sudo apt-get install -y pkg-config build-essential libudev-dev
+          npm install --global yarn
 
       - name: Cache node dependencies
         uses: actions/cache@v3
@@ -43,7 +44,8 @@ jobs:
           export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH"
           yarn --frozen-lockfile --network-concurrency 2
 
-      - uses: dtolnay/rust-toolchain@stable
+      - name: install rust
+        uses: dtolnay/rust-toolchain@stable
         with:
           toolchain: stable
 
@@ -62,7 +64,7 @@ jobs:
     runs-on: ubuntu-latest
 
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
       - name: Cache rust
         uses: Swatinem/rust-cache@v2
       - name: Run fmt
@@ -74,14 +76,14 @@ jobs:
     needs: install
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
       - name: Use Node ${{ matrix.node }}
-        uses: actions/setup-node@v3
+        uses: actions/setup-node@v4
         with:
           node-version: 20
 
       - name: Cache node dependencies
-        uses: actions/cache@v3
+        uses: actions/cache@v4
         with:
           path: '**/node_modules'
           key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
@@ -89,15 +91,23 @@ jobs:
       - name: Run lint
         run: yarn lint
 
-  test-and-publish:
+  test:
     needs: [clippy-lint, yarn-lint]
     runs-on: ubuntu-latest
 
     steps:
-      - uses: actions/checkout@v3
+      - name: install rust
+        uses: dtolnay/rust-toolchain@stable
+        with:
+          toolchain: stable
+
+      - name: Cache rust
+        uses: Swatinem/rust-cache@v2
+
+      - uses: actions/checkout@v4
 
       - name: Use Node ${{ matrix.node }}
-        uses: actions/setup-node@v3
+        uses: actions/setup-node@v4
         with:
           node-version: 20
 
@@ -111,7 +121,7 @@ jobs:
           export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH"
           yarn --frozen-lockfile
 
-      - uses: actions/cache@v3
+      - uses: actions/cache@v4
         name: cache solana cli
         id: cache-solana
         with:
@@ -138,10 +148,21 @@ jobs:
           echo ${{ secrets.SYSTEM_FLY }} > target/deploy/system_fly-keypair.json
           echo ${{ secrets.SYSTEM_SIMPLE_MOVEMENT }} > target/deploy/system_simple_movement-keypair.json
 
+      - name: run build
+        run: |
+          export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH"
+          npm i -g @coral-xyz/anchor-cli@${{ env.anchor_version }} ts-mocha typescript
+          solana-test-validator > /dev/null &
+          sleep 5
+          solana airdrop -u l 100 tEsT3eV6RFCWs1BZ7AXTzasHqTtMnMLCB2tjQ42TDXD
+          anchor build
+          anchor idl build
+          anchor deploy
+          pkill -9 -f solana-test-validator
+
       - name: run tests
         run: |
           export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH"
-          ls node_modules/.bin
           npm i -g @coral-xyz/anchor-cli@${{ env.anchor_version }} ts-mocha typescript
           anchor test
 
@@ -150,7 +171,10 @@ jobs:
           cargo publish --manifest-path=crates/bolt-lang/attribute/account/Cargo.toml --token ${CRATES_TOKEN}
           cargo publish --manifest-path=crates/bolt-lang/attribute/component/Cargo.toml --token ${CRATES_TOKEN}
           cargo publish --manifest-path=crates/bolt-lang/attribute/component-deserialize/Cargo.toml --token ${CRATES_TOKEN}
+          cargo publish --manifest-path=crates/bolt-lang/attribute/component-id/Cargo.toml --token ${CRATES_TOKEN}
           cargo publish --manifest-path=crates/bolt-lang/attribute/system/Cargo.toml --token ${CRATES_TOKEN}
+          cargo publish --manifest-path=crates/bolt-lang/attribute/system-input/Cargo.toml --token ${CRATES_TOKEN}
+          cargo publish --manifest-path=crates/bolt-lang/attribute/bolt-program/Cargo.toml --token ${CRATES_TOKEN}
           cargo publish --manifest-path=programs/bolt-system/Cargo.toml --token ${CRATES_TOKEN}
           cargo publish --manifest-path=programs/bolt-component/Cargo.toml --token ${CRATES_TOKEN}
           cargo publish --manifest-path=programs/world/Cargo.toml --token ${CRATES_TOKEN}

+ 176 - 0
.github/workflows/publish-bolt-sdk.yml

@@ -0,0 +1,176 @@
+name: Publish Bolt SDKs
+on:
+  release:
+    types: [published]
+  workflow_dispatch:
+
+env:
+  solana_version: v1.18.1
+  anchor_version: 0.29.0
+
+jobs:
+  install:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+
+      - uses: actions/cache@v4
+        name: cache solana cli
+        id: cache-solana
+        with:
+          path: |
+            ~/.cache/solana/
+            ~/.local/share/solana/
+          key: solana-${{ runner.os }}-v0000-${{ env.solana_version }}
+
+      - uses: actions/setup-node@v4
+        with:
+          node-version: 20
+
+      - name: install essentials
+        run: |
+          sudo apt-get update
+          sudo apt-get install -y pkg-config build-essential libudev-dev
+          npm install --global yarn
+
+      - name: Cache node dependencies
+        uses: actions/cache@v3
+        with:
+          path: '**/node_modules'
+          key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
+
+      - name: install node_modules
+        run: |
+          export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH"
+          yarn --frozen-lockfile --network-concurrency 2
+
+      - name: install rust
+        uses: dtolnay/rust-toolchain@stable
+        with:
+          toolchain: stable
+
+      - name: Cache rust
+        uses: Swatinem/rust-cache@v2
+
+      - name: install solana
+        if: steps.cache-solana.outputs.cache-hit != 'true'
+        run: |
+          sh -c "$(curl -sSfL https://release.solana.com/${{ env.solana_version }}/install)"
+          export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH"
+          solana --version
+
+  clippy-lint:
+    needs: install
+    runs-on: ubuntu-latest
+
+    steps:
+      - uses: actions/checkout@v4
+      - name: Cache rust
+        uses: Swatinem/rust-cache@v2
+      - name: Run fmt
+        run: cargo fmt -- --check
+      - name: Run clippy
+        run: cargo clippy -- --deny=warnings
+
+  yarn-lint:
+    needs: install
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+      - name: Use Node ${{ matrix.node }}
+        uses: actions/setup-node@v4
+        with:
+          node-version: 20
+
+      - name: Cache node dependencies
+        uses: actions/cache@v4
+        with:
+          path: '**/node_modules'
+          key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
+
+      - name: Run lint
+        run: yarn lint
+
+  test:
+    needs: [clippy-lint, yarn-lint]
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: install rust
+        uses: dtolnay/rust-toolchain@stable
+        with:
+          toolchain: stable
+
+      - name: Cache rust
+        uses: Swatinem/rust-cache@v2
+
+      - uses: actions/checkout@v4
+
+      - name: Use Node ${{ matrix.node }}
+        uses: actions/setup-node@v4
+        with:
+          node-version: 20
+
+      - name: Cache node dependencies
+        uses: actions/cache@v3
+        with:
+          path: '**/node_modules'
+          key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
+      - name: install node_modules
+        run: |
+          export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH"
+          yarn --frozen-lockfile
+
+      - uses: actions/cache@v4
+        name: cache solana cli
+        id: cache-solana
+        with:
+          path: |
+            ~/.cache/solana/
+            ~/.local/share/solana/
+          key: solana-${{ runner.os }}-v0000-${{ env.solana_version }}
+
+      - name: setup solana
+        run: |
+          export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH"
+          solana --version
+          solana-keygen new --silent --no-bip39-passphrase
+
+      - name: Set deployments keys
+        run: |
+          mkdir -p target/deploy
+          echo ${{ secrets.WORLD }} > target/deploy/world-keypair.json
+          echo ${{ secrets.BOLT_COMPONENT }} > target/deploy/bolt_component-keypair.json
+          echo ${{ secrets.BOLT_SYSTEM }} > target/deploy/bolt_system-keypair.json
+          echo ${{ secrets.COMPONENT_POSITION }} > target/deploy/component_position-keypair.json
+          echo ${{ secrets.COMPONENT_VELOCITY }} > target/deploy/component_velocity-keypair.json
+          echo ${{ secrets.SYSTEM_APPLY_VELOCITY }} > target/deploy/system_apply_velocity-keypair.json
+          echo ${{ secrets.SYSTEM_FLY }} > target/deploy/system_fly-keypair.json
+          echo ${{ secrets.SYSTEM_SIMPLE_MOVEMENT }} > target/deploy/system_simple_movement-keypair.json
+
+      - name: run build
+        run: |
+          export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH"
+          npm i -g @coral-xyz/anchor-cli@${{ env.anchor_version }} ts-mocha typescript
+          solana-test-validator > /dev/null &
+          sleep 5
+          solana airdrop -u l 100 tEsT3eV6RFCWs1BZ7AXTzasHqTtMnMLCB2tjQ42TDXD
+          anchor build
+          anchor idl build
+          anchor deploy
+          pkill -9 -f solana-test-validator
+
+      - name: run tests
+        run: |
+          export PATH="/home/runner/.local/share/solana/install/active_release/bin:$PATH"
+          npm i -g @coral-xyz/anchor-cli@${{ env.anchor_version }} ts-mocha typescript
+          anchor test
+
+      - name: npm publish
+        run: |
+          echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
+          npm set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }}
+          cd clients/bolt-sdk/ && yarn build && yarn lint:fix && cd ../../ && yarn lint:fix
+          cd clients/bolt-sdk/ && npm publish
+        env:
+          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

+ 0 - 1
.github/workflows/run-tests.yml

@@ -1,6 +1,5 @@
 name: Run Bolt Tests
 on:
-  push:
   pull_request:
 
 env:

+ 2 - 1
.gitignore

@@ -6,7 +6,7 @@ target
 **/*.rs.bk
 node_modules
 clients/sdk/node_modules
-test-ledger
+clients/bolt-sdk/yarn-error.log
 .yarn
 **/test-ledger
 
@@ -16,3 +16,4 @@ tests/examples/target
 tests/examples/node_modules
 tests/examples/.yarn
 
+

+ 34 - 0
Cargo.toml

@@ -6,10 +6,44 @@ members = [
     "crates/*",
 ]
 
+[workspace.package]
+version = "0.0.1"
+authors = ["Magicblock Labs <dev@magicblock.gg>"]
+repository = "https://github.com/magicblock-labs/bolt"
+homepage = "https://www.magicblock.gg/"
+license = "MIT"
+edition = "2021"
+
+[workspace.dependencies]
+bolt-attribute-bolt-program = { path = "crates/bolt-lang/attribute/bolt-program", version = "=0.0.1" }
+bolt-attribute-bolt-component = { path = "crates/bolt-lang/attribute/component", version = "=0.0.1" }
+bolt-attribute-bolt-system = { path = "crates/bolt-lang/attribute/system", version = "=0.0.1"}
+bolt-attribute-bolt-system-input = { path = "crates/bolt-lang/attribute/system-input", version = "=0.0.1" }
+bolt-attribute-bolt-component-deserialize = { path = "crates/bolt-lang/attribute/component-deserialize", version = "=0.0.1" }
+bolt-attribute-bolt-component-id = { path = "crates/bolt-lang/attribute/component-id", version = "=0.0.1" }
+world = { path = "programs/world", features = ["cpi"], version = "=0.0.1"}
+bolt-system = { path = "programs/bolt-system", features = ["cpi"], version = "=0.0.1"}
+
+## External crates
+anchor-lang = "0.29.0"
+solana-security-txt = "1.1.1"
+tuple-conv = "1.0.1"
+syn = { version = "1.0.60", features = ["full"] }
+quote = "1.0"
+proc-macro2 = "1.0"
+serde = { version = "1.0", features = ["derive"] }
+serde_json = "1.0"
+anyhow = "1.0.32"
+heck = "0.4.0"
+clap = { version = "4.2.4", features = ["derive"] }
+# TODO: Remove once https://github.com/solana-labs/solana/issues/33504 is resolved.
+ahash = "=0.8.6"
+
 [profile.release]
 overflow-checks = true
 lto = "fat"
 codegen-units = 1
+
 [profile.release.build-override]
 opt-level = 3
 incremental = false

+ 14 - 9
cli/Cargo.toml

@@ -1,24 +1,29 @@
 [package]
 name = "bolt-cli"
-version = "0.0.1"
-authors = ["Magicblock Labs <dev@magicblock.gg>"]
 rust-version = "1.60"
-edition = "2021"
-repository = "https://github.com/magicblock-labs/bolt"
 description = "Bolt CLI"
-license = "MIT"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
 
 [[bin]]
 name = "bolt"
 path = "src/bin/main.rs"
 
+[profile.release]
+opt-level = 3
+lto = true
+
 [features]
 dev = []
 
 [dependencies]
 anchor-cli = { git = "https://github.com/coral-xyz/anchor.git" }
 anchor-client = { git = "https://github.com/coral-xyz/anchor.git" }
-anyhow = "1.0.32"
-heck = "0.4.0"
-clap = { version = "4.2.4", features = ["derive"] }
-syn = { version = "1.0.60", features = ["full", "extra-traits"] }
+anyhow = { workspace = true }
+heck = { workspace = true }
+clap = { workspace = true }
+syn = { workspace = true, features = ["full", "extra-traits"] }

+ 6 - 6
cli/src/rust_template.rs

@@ -148,7 +148,7 @@ pub fn package_json(jest: bool) -> String {
         "prettier": "^2.6.2",
         "@metaplex-foundation/beet": "^0.7.1",
         "@metaplex-foundation/beet-solana": "^0.4.0",
-         "bolt-sdk": "latest"
+         "@magicblock-labs/bolt-sdk": "latest"
     }}
 }}
 "#
@@ -176,7 +176,7 @@ pub fn ts_package_json(jest: bool) -> String {
             "typescript": "^4.3.5",
             "@metaplex-foundation/beet": "^0.7.1",
             "@metaplex-foundation/beet-solana": "^0.4.0",
-            "bolt-sdk": "latest"
+            "@magicblock-labs/bolt-sdk": "latest"
         }}
     }}
     "#
@@ -202,7 +202,7 @@ pub fn ts_package_json(jest: bool) -> String {
         "prettier": "^2.6.2",
         "@metaplex-foundation/beet": "^0.7.1",
         "@metaplex-foundation/beet-solana": "^0.4.0",
-        "bolt-sdk": "latest"
+        "@magicblock-labs/bolt-sdk": "latest"
     }}
 }}
 "#
@@ -213,7 +213,7 @@ pub fn ts_package_json(jest: bool) -> String {
 pub fn mocha(name: &str) -> String {
     format!(
         r#"const anchor = require("@coral-xyz/anchor");
-const boltSdk = require("bolt-sdk");
+const boltSdk = require("@magicblock-labs/bolt-sdk");
 const {{
     createInitializeNewWorldInstruction,
     FindWorldPda,
@@ -252,7 +252,7 @@ describe("{}", () => {{
 pub fn jest(name: &str) -> String {
     format!(
         r#"const anchor = require("@coral-xyz/anchor");
-const boltSdk = require("bolt-sdk");
+const boltSdk = require("@magicblock-labs/bolt-sdk");
 const {{
     createInitializeNewWorldInstruction,
     FindWorldPda,
@@ -309,7 +309,7 @@ import {{
     createAddEntityInstruction,
     createInitializeComponentInstruction,
     FindComponentPda, createApplyInstruction
-}} from "bolt-sdk"
+}} from "@magicblock-labs/bolt-sdk"
 import {{expect}} from "chai";
 
 describe("{}", () => {{

+ 1 - 1
clients/bolt-sdk/README.md

@@ -7,7 +7,7 @@ This Typescript sdk provides a convenient interface and methods for interacting
 To install the bolt sdk, run the following command:
 
 ```bash
-npm install bolt-sdk
+npm install @magicblock-labs/bolt-sdk
 ```
 
 ## Contributing

+ 2 - 2
clients/bolt-sdk/package-lock.json

@@ -1,11 +1,11 @@
 {
-  "name": "bolt-sdk",
+  "name": "@magicblock-labs/bolt-sdk",
   "version": "0.0.1",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
-      "name": "bolt-sdk",
+      "name": "@magicblock-labs/bolt-sdk",
       "version": "0.0.1",
       "license": "MIT",
       "devDependencies": {

+ 2 - 2
clients/bolt-sdk/package.json

@@ -1,6 +1,6 @@
 {
-  "name": "bolt-sdk",
-  "version": "0.0.10",
+  "name": "@magicblock-labs/bolt-sdk",
+  "version": "0.0.1",
   "description": "Bolt typescript SDK",
   "author": "dev@magicblock.gg",
   "license": "MIT",

+ 0 - 2635
clients/bolt-sdk/yarn-error.log

@@ -1,2635 +0,0 @@
-Arguments: 
-  /opt/homebrew/Cellar/node/20.3.0/bin/node /Users/gabrielepicco/.cache/node/corepack/yarn/1.22.19/bin/yarn.js add prettier==1.22.21
-
-PATH: 
-  /Users/gabrielepicco/.cargo/bin:/Users/gabrielepicco/anaconda3/bin:/Users/gabrielepicco/anaconda3/condabin:/opt/homebrew/opt/dotnet@6/bin:/opt/homebrew/bin:/Users/gabrielepicco/.local/share/solana/install/active_release/bin:/Users/gabrielepicco/.cargo/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/gabrielepicco/Documents/Solana/bolt/node_modules/.bin:/Users/gabrielepicco/.foundry/bin:/Users/gabrielepicco/.dojo/bin:/Users/gabrielepicco/.dojo/bin:/Users/gabrielepicco/.dojo/bin
-
-Yarn version: 
-  1.22.19
-
-Node version: 
-  20.3.0
-
-Platform: 
-  darwin arm64
-
-Trace: 
-  Error: https://registry.yarnpkg.com/prettier==1.22.21: Not found
-      at params.callback [as _callback] (/Users/gabrielepicco/.cache/node/corepack/yarn/1.22.19/lib/cli.js:66145:18)
-      at self.callback (/Users/gabrielepicco/.cache/node/corepack/yarn/1.22.19/lib/cli.js:140890:22)
-      at Request.emit (node:events:511:28)
-      at Request.<anonymous> (/Users/gabrielepicco/.cache/node/corepack/yarn/1.22.19/lib/cli.js:141862:10)
-      at Request.emit (node:events:511:28)
-      at IncomingMessage.<anonymous> (/Users/gabrielepicco/.cache/node/corepack/yarn/1.22.19/lib/cli.js:141784:12)
-      at Object.onceWrapper (node:events:625:28)
-      at IncomingMessage.emit (node:events:523:35)
-      at endReadableNT (node:internal/streams/readable:1367:12)
-      at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
-
-npm manifest: 
-  {
-    "name": "bolt-sdk",
-    "version": "0.0.9",
-    "description": "Bolt typescript SDK",
-    "author": "dev@magicblock.gg",
-    "license": "MIT",
-    "private": false,
-    "devDependencies": {
-      "@metaplex-foundation/solita": "^0.20.1",
-      "@typescript-eslint/eslint-plugin": "^6.14.0",
-      "@typescript-eslint/parser": "^6.14.0",
-      "eslint": "^8.55.0",
-      "eslint-config-prettier": "^9.1.0",
-      "eslint-config-standard-with-typescript": "^42.0.0",
-      "eslint-plugin-import": "^2.29.0",
-      "eslint-plugin-react": "^7.33.2",
-      "prettier": "^3.1.1",
-      "rimraf": "^5.0.5",
-      "typedoc": "^0.25.4",
-      "typedoc-plugin-markdown": "^3.17.1"
-    },
-    "publishConfig": {
-      "access": "public",
-      "registry": "https://registry.npmjs.org/"
-    },
-    "repository": {
-      "type": "git",
-      "url": "https://github.com/magicblock-labs/bolt",
-      "directory": "clients/bolt-sdk"
-    },
-    "main": "lib/index.js",
-    "scripts": {
-      "clean": "rimraf lib",
-      "build": "npm run clean && tsc && npm run lint:fix",
-      "build:docs": "typedoc && typedoc --plugin typedoc-plugin-markdown --out docs-mk",
-      "dev": "tsc --watch",
-      "start": "tsc",
-      "lint": "eslint -c ../../.eslintrc.yml --ext .ts,.tsx src",
-      "lint:fix": "eslint -c ../../.eslintrc.yml --ext .ts,.tsx src --fix"
-    },
-    "files": [
-      "lib"
-    ]
-  }
-
-yarn manifest: 
-  No manifest
-
-Lockfile: 
-  # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-  # yarn lockfile v1
-  
-  
-  "@aashutoshrathi/word-wrap@^1.2.3":
-    version "1.2.6"
-    resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz"
-    integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==
-  
-  "@babel/runtime@^7.17.2", "@babel/runtime@^7.23.2":
-    version "7.23.6"
-    resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz"
-    integrity sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==
-    dependencies:
-      regenerator-runtime "^0.14.0"
-  
-  "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
-    version "4.4.0"
-    resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz"
-    integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
-    dependencies:
-      eslint-visitor-keys "^3.3.0"
-  
-  "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
-    version "4.10.0"
-    resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz"
-    integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==
-  
-  "@eslint/eslintrc@^2.1.4":
-    version "2.1.4"
-    resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz"
-    integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
-    dependencies:
-      ajv "^6.12.4"
-      debug "^4.3.2"
-      espree "^9.6.0"
-      globals "^13.19.0"
-      ignore "^5.2.0"
-      import-fresh "^3.2.1"
-      js-yaml "^4.1.0"
-      minimatch "^3.1.2"
-      strip-json-comments "^3.1.1"
-  
-  "@eslint/js@8.55.0":
-    version "8.55.0"
-    resolved "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz"
-    integrity sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==
-  
-  "@humanwhocodes/config-array@^0.11.13":
-    version "0.11.13"
-    resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz"
-    integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==
-    dependencies:
-      "@humanwhocodes/object-schema" "^2.0.1"
-      debug "^4.1.1"
-      minimatch "^3.0.5"
-  
-  "@humanwhocodes/module-importer@^1.0.1":
-    version "1.0.1"
-    resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz"
-    integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
-  
-  "@humanwhocodes/object-schema@^2.0.1":
-    version "2.0.1"
-    resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz"
-    integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==
-  
-  "@isaacs/cliui@^8.0.2":
-    version "8.0.2"
-    resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz"
-    integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==
-    dependencies:
-      string-width "^5.1.2"
-      string-width-cjs "npm:string-width@^4.2.0"
-      strip-ansi "^7.0.1"
-      strip-ansi-cjs "npm:strip-ansi@^6.0.1"
-      wrap-ansi "^8.1.0"
-      wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
-  
-  "@metaplex-foundation/beet-solana@^0.3.1":
-    version "0.3.1"
-    resolved "https://registry.npmjs.org/@metaplex-foundation/beet-solana/-/beet-solana-0.3.1.tgz"
-    integrity sha512-tgyEl6dvtLln8XX81JyBvWjIiEcjTkUwZbrM5dIobTmoqMuGewSyk9CClno8qsMsFdB5T3jC91Rjeqmu/6xk2g==
-    dependencies:
-      "@metaplex-foundation/beet" ">=0.1.0"
-      "@solana/web3.js" "^1.56.2"
-      bs58 "^5.0.0"
-      debug "^4.3.4"
-  
-  "@metaplex-foundation/beet@>=0.1.0", "@metaplex-foundation/beet@^0.7.1":
-    version "0.7.1"
-    resolved "https://registry.npmjs.org/@metaplex-foundation/beet/-/beet-0.7.1.tgz"
-    integrity sha512-hNCEnS2WyCiYyko82rwuISsBY3KYpe828ubsd2ckeqZr7tl0WVLivGkoyA/qdiaaHEBGdGl71OpfWa2rqL3DiA==
-    dependencies:
-      ansicolors "^0.3.2"
-      bn.js "^5.2.0"
-      debug "^4.3.3"
-  
-  "@metaplex-foundation/rustbin@^0.3.0":
-    version "0.3.5"
-    resolved "https://registry.npmjs.org/@metaplex-foundation/rustbin/-/rustbin-0.3.5.tgz"
-    integrity sha512-m0wkRBEQB/8krwMwKBvFugufZtYwMXiGHud2cTDAv+aGXK4M90y0Hx67/wpu+AqqoQfdV8VM9YezUOHKD+Z5kA==
-    dependencies:
-      debug "^4.3.3"
-      semver "^7.3.7"
-      text-table "^0.2.0"
-      toml "^3.0.0"
-  
-  "@metaplex-foundation/solita@^0.20.1":
-    version "0.20.1"
-    resolved "https://registry.npmjs.org/@metaplex-foundation/solita/-/solita-0.20.1.tgz"
-    integrity sha512-E2bHGzT6wA/sXWBLgJ50ZQNvukPnQlH6kRU6m6lmatJdEOjNWhR1lLI7ESIk/i4ZiSdHZkc/Q6ile8eIlXOzNQ==
-    dependencies:
-      "@metaplex-foundation/beet" "^0.7.1"
-      "@metaplex-foundation/beet-solana" "^0.3.1"
-      "@metaplex-foundation/rustbin" "^0.3.0"
-      "@solana/web3.js" "^1.56.2"
-      ansi-colors "^4.1.3"
-      camelcase "^6.2.1"
-      debug "^4.3.3"
-      js-sha256 "^0.9.0"
-      prettier "^2.5.1"
-      snake-case "^3.0.4"
-      spok "^1.4.3"
-  
-  "@noble/curves@^1.2.0":
-    version "1.3.0"
-    resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz"
-    integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==
-    dependencies:
-      "@noble/hashes" "1.3.3"
-  
-  "@noble/hashes@1.3.3", "@noble/hashes@^1.3.1":
-    version "1.3.3"
-    resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz"
-    integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==
-  
-  "@nodelib/fs.scandir@2.1.5":
-    version "2.1.5"
-    resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
-    integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
-    dependencies:
-      "@nodelib/fs.stat" "2.0.5"
-      run-parallel "^1.1.9"
-  
-  "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
-    version "2.0.5"
-    resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
-    integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
-  
-  "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
-    version "1.2.8"
-    resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
-    integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
-    dependencies:
-      "@nodelib/fs.scandir" "2.1.5"
-      fastq "^1.6.0"
-  
-  "@pkgjs/parseargs@^0.11.0":
-    version "0.11.0"
-    resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz"
-    integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
-  
-  "@solana/buffer-layout@^4.0.0":
-    version "4.0.1"
-    resolved "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz"
-    integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==
-    dependencies:
-      buffer "~6.0.3"
-  
-  "@solana/web3.js@^1.56.2":
-    version "1.87.6"
-    resolved "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.87.6.tgz"
-    integrity sha512-LkqsEBgTZztFiccZZXnawWa8qNCATEqE97/d0vIwjTclmVlc8pBpD1DmjfVHtZ1HS5fZorFlVhXfpwnCNDZfyg==
-    dependencies:
-      "@babel/runtime" "^7.23.2"
-      "@noble/curves" "^1.2.0"
-      "@noble/hashes" "^1.3.1"
-      "@solana/buffer-layout" "^4.0.0"
-      agentkeepalive "^4.3.0"
-      bigint-buffer "^1.1.5"
-      bn.js "^5.2.1"
-      borsh "^0.7.0"
-      bs58 "^4.0.1"
-      buffer "6.0.3"
-      fast-stable-stringify "^1.0.0"
-      jayson "^4.1.0"
-      node-fetch "^2.6.12"
-      rpc-websockets "^7.5.1"
-      superstruct "^0.14.2"
-  
-  "@types/connect@^3.4.33":
-    version "3.4.38"
-    resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz"
-    integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==
-    dependencies:
-      "@types/node" "*"
-  
-  "@types/json-schema@^7.0.12":
-    version "7.0.15"
-    resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz"
-    integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
-  
-  "@types/json5@^0.0.29":
-    version "0.0.29"
-    resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz"
-    integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
-  
-  "@types/node@*":
-    version "20.10.4"
-    resolved "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz"
-    integrity sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==
-    dependencies:
-      undici-types "~5.26.4"
-  
-  "@types/node@^12.12.54":
-    version "12.20.55"
-    resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz"
-    integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==
-  
-  "@types/semver@^7.5.0":
-    version "7.5.6"
-    resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz"
-    integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==
-  
-  "@types/ws@^7.4.4":
-    version "7.4.7"
-    resolved "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz"
-    integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==
-    dependencies:
-      "@types/node" "*"
-  
-  "@typescript-eslint/eslint-plugin@^6.14.0":
-    version "6.14.0"
-    resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.14.0.tgz"
-    integrity sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==
-    dependencies:
-      "@eslint-community/regexpp" "^4.5.1"
-      "@typescript-eslint/scope-manager" "6.14.0"
-      "@typescript-eslint/type-utils" "6.14.0"
-      "@typescript-eslint/utils" "6.14.0"
-      "@typescript-eslint/visitor-keys" "6.14.0"
-      debug "^4.3.4"
-      graphemer "^1.4.0"
-      ignore "^5.2.4"
-      natural-compare "^1.4.0"
-      semver "^7.5.4"
-      ts-api-utils "^1.0.1"
-  
-  "@typescript-eslint/parser@^6.14.0", "@typescript-eslint/parser@^6.4.0":
-    version "6.14.0"
-    resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.14.0.tgz"
-    integrity sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==
-    dependencies:
-      "@typescript-eslint/scope-manager" "6.14.0"
-      "@typescript-eslint/types" "6.14.0"
-      "@typescript-eslint/typescript-estree" "6.14.0"
-      "@typescript-eslint/visitor-keys" "6.14.0"
-      debug "^4.3.4"
-  
-  "@typescript-eslint/scope-manager@6.14.0":
-    version "6.14.0"
-    resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz"
-    integrity sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==
-    dependencies:
-      "@typescript-eslint/types" "6.14.0"
-      "@typescript-eslint/visitor-keys" "6.14.0"
-  
-  "@typescript-eslint/type-utils@6.14.0":
-    version "6.14.0"
-    resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.14.0.tgz"
-    integrity sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==
-    dependencies:
-      "@typescript-eslint/typescript-estree" "6.14.0"
-      "@typescript-eslint/utils" "6.14.0"
-      debug "^4.3.4"
-      ts-api-utils "^1.0.1"
-  
-  "@typescript-eslint/types@6.14.0":
-    version "6.14.0"
-    resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz"
-    integrity sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==
-  
-  "@typescript-eslint/typescript-estree@6.14.0":
-    version "6.14.0"
-    resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz"
-    integrity sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==
-    dependencies:
-      "@typescript-eslint/types" "6.14.0"
-      "@typescript-eslint/visitor-keys" "6.14.0"
-      debug "^4.3.4"
-      globby "^11.1.0"
-      is-glob "^4.0.3"
-      semver "^7.5.4"
-      ts-api-utils "^1.0.1"
-  
-  "@typescript-eslint/utils@6.14.0":
-    version "6.14.0"
-    resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.14.0.tgz"
-    integrity sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==
-    dependencies:
-      "@eslint-community/eslint-utils" "^4.4.0"
-      "@types/json-schema" "^7.0.12"
-      "@types/semver" "^7.5.0"
-      "@typescript-eslint/scope-manager" "6.14.0"
-      "@typescript-eslint/types" "6.14.0"
-      "@typescript-eslint/typescript-estree" "6.14.0"
-      semver "^7.5.4"
-  
-  "@typescript-eslint/visitor-keys@6.14.0":
-    version "6.14.0"
-    resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz"
-    integrity sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==
-    dependencies:
-      "@typescript-eslint/types" "6.14.0"
-      eslint-visitor-keys "^3.4.1"
-  
-  "@ungap/structured-clone@^1.2.0":
-    version "1.2.0"
-    resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz"
-    integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
-  
-  JSONStream@^1.3.5:
-    version "1.3.5"
-    resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz"
-    integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==
-    dependencies:
-      jsonparse "^1.2.0"
-      through ">=2.2.7 <3"
-  
-  acorn-jsx@^5.3.2:
-    version "5.3.2"
-    resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
-    integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
-  
-  acorn@^8.9.0:
-    version "8.11.2"
-    resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz"
-    integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==
-  
-  agentkeepalive@^4.3.0:
-    version "4.5.0"
-    resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz"
-    integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==
-    dependencies:
-      humanize-ms "^1.2.1"
-  
-  ajv@^6.12.4:
-    version "6.12.6"
-    resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
-    integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
-    dependencies:
-      fast-deep-equal "^3.1.1"
-      fast-json-stable-stringify "^2.0.0"
-      json-schema-traverse "^0.4.1"
-      uri-js "^4.2.2"
-  
-  ansi-colors@^4.1.3:
-    version "4.1.3"
-    resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz"
-    integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
-  
-  ansi-regex@^5.0.1:
-    version "5.0.1"
-    resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
-    integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
-  
-  ansi-regex@^6.0.1:
-    version "6.0.1"
-    resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz"
-    integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
-  
-  ansi-sequence-parser@^1.1.0:
-    version "1.1.1"
-    resolved "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz"
-    integrity sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==
-  
-  ansi-styles@^4.0.0, ansi-styles@^4.1.0:
-    version "4.3.0"
-    resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
-    integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
-    dependencies:
-      color-convert "^2.0.1"
-  
-  ansi-styles@^6.1.0:
-    version "6.2.1"
-    resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz"
-    integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
-  
-  ansicolors@^0.3.2, ansicolors@~0.3.2:
-    version "0.3.2"
-    resolved "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz"
-    integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==
-  
-  argparse@^2.0.1:
-    version "2.0.1"
-    resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
-    integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
-  
-  array-buffer-byte-length@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz"
-    integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==
-    dependencies:
-      call-bind "^1.0.2"
-      is-array-buffer "^3.0.1"
-  
-  array-includes@^3.1.6, array-includes@^3.1.7:
-    version "3.1.7"
-    resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz"
-    integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==
-    dependencies:
-      call-bind "^1.0.2"
-      define-properties "^1.2.0"
-      es-abstract "^1.22.1"
-      get-intrinsic "^1.2.1"
-      is-string "^1.0.7"
-  
-  array-union@^2.1.0:
-    version "2.1.0"
-    resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz"
-    integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
-  
-  array.prototype.findlastindex@^1.2.3:
-    version "1.2.3"
-    resolved "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz"
-    integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==
-    dependencies:
-      call-bind "^1.0.2"
-      define-properties "^1.2.0"
-      es-abstract "^1.22.1"
-      es-shim-unscopables "^1.0.0"
-      get-intrinsic "^1.2.1"
-  
-  array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2:
-    version "1.3.2"
-    resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz"
-    integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==
-    dependencies:
-      call-bind "^1.0.2"
-      define-properties "^1.2.0"
-      es-abstract "^1.22.1"
-      es-shim-unscopables "^1.0.0"
-  
-  array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2:
-    version "1.3.2"
-    resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz"
-    integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==
-    dependencies:
-      call-bind "^1.0.2"
-      define-properties "^1.2.0"
-      es-abstract "^1.22.1"
-      es-shim-unscopables "^1.0.0"
-  
-  array.prototype.tosorted@^1.1.1:
-    version "1.1.2"
-    resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz"
-    integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==
-    dependencies:
-      call-bind "^1.0.2"
-      define-properties "^1.2.0"
-      es-abstract "^1.22.1"
-      es-shim-unscopables "^1.0.0"
-      get-intrinsic "^1.2.1"
-  
-  arraybuffer.prototype.slice@^1.0.2:
-    version "1.0.2"
-    resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz"
-    integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==
-    dependencies:
-      array-buffer-byte-length "^1.0.0"
-      call-bind "^1.0.2"
-      define-properties "^1.2.0"
-      es-abstract "^1.22.1"
-      get-intrinsic "^1.2.1"
-      is-array-buffer "^3.0.2"
-      is-shared-array-buffer "^1.0.2"
-  
-  asynciterator.prototype@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz"
-    integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==
-    dependencies:
-      has-symbols "^1.0.3"
-  
-  available-typed-arrays@^1.0.5:
-    version "1.0.5"
-    resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz"
-    integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
-  
-  balanced-match@^1.0.0:
-    version "1.0.2"
-    resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
-    integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-  
-  base-x@^3.0.2:
-    version "3.0.9"
-    resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz"
-    integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==
-    dependencies:
-      safe-buffer "^5.0.1"
-  
-  base-x@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz"
-    integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==
-  
-  base64-js@^1.3.1:
-    version "1.5.1"
-    resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"
-    integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-  
-  bigint-buffer@^1.1.5:
-    version "1.1.5"
-    resolved "https://registry.npmjs.org/bigint-buffer/-/bigint-buffer-1.1.5.tgz"
-    integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==
-    dependencies:
-      bindings "^1.3.0"
-  
-  bindings@^1.3.0:
-    version "1.5.0"
-    resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz"
-    integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
-    dependencies:
-      file-uri-to-path "1.0.0"
-  
-  bn.js@^5.2.0, bn.js@^5.2.1:
-    version "5.2.1"
-    resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz"
-    integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
-  
-  borsh@^0.7.0:
-    version "0.7.0"
-    resolved "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz"
-    integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==
-    dependencies:
-      bn.js "^5.2.0"
-      bs58 "^4.0.0"
-      text-encoding-utf-8 "^1.0.2"
-  
-  brace-expansion@^1.1.7:
-    version "1.1.11"
-    resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
-    integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
-    dependencies:
-      balanced-match "^1.0.0"
-      concat-map "0.0.1"
-  
-  brace-expansion@^2.0.1:
-    version "2.0.1"
-    resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz"
-    integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
-    dependencies:
-      balanced-match "^1.0.0"
-  
-  braces@^3.0.2:
-    version "3.0.2"
-    resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz"
-    integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
-    dependencies:
-      fill-range "^7.0.1"
-  
-  bs58@^4.0.0, bs58@^4.0.1:
-    version "4.0.1"
-    resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz"
-    integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==
-    dependencies:
-      base-x "^3.0.2"
-  
-  bs58@^5.0.0:
-    version "5.0.0"
-    resolved "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz"
-    integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==
-    dependencies:
-      base-x "^4.0.0"
-  
-  buffer@6.0.3, buffer@~6.0.3:
-    version "6.0.3"
-    resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz"
-    integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
-    dependencies:
-      base64-js "^1.3.1"
-      ieee754 "^1.2.1"
-  
-  bufferutil@^4.0.1:
-    version "4.0.8"
-    resolved "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz"
-    integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==
-    dependencies:
-      node-gyp-build "^4.3.0"
-  
-  call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5:
-    version "1.0.5"
-    resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz"
-    integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==
-    dependencies:
-      function-bind "^1.1.2"
-      get-intrinsic "^1.2.1"
-      set-function-length "^1.1.1"
-  
-  callsites@^3.0.0:
-    version "3.1.0"
-    resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
-    integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
-  
-  camelcase@^6.2.1:
-    version "6.3.0"
-    resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz"
-    integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
-  
-  chalk@^4.0.0:
-    version "4.1.2"
-    resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
-    integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
-    dependencies:
-      ansi-styles "^4.1.0"
-      supports-color "^7.1.0"
-  
-  color-convert@^2.0.1:
-    version "2.0.1"
-    resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
-    integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
-    dependencies:
-      color-name "~1.1.4"
-  
-  color-name@~1.1.4:
-    version "1.1.4"
-    resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
-    integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-  
-  commander@^2.20.3:
-    version "2.20.3"
-    resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
-    integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
-  
-  commander@^5.1.0:
-    version "5.1.0"
-    resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz"
-    integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
-  
-  concat-map@0.0.1:
-    version "0.0.1"
-    resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
-    integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
-  
-  cross-spawn@^7.0.0, cross-spawn@^7.0.2:
-    version "7.0.3"
-    resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
-    integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
-    dependencies:
-      path-key "^3.1.0"
-      shebang-command "^2.0.0"
-      which "^2.0.1"
-  
-  debug@^3.2.7:
-    version "3.2.7"
-    resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz"
-    integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
-    dependencies:
-      ms "^2.1.1"
-  
-  debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
-    version "4.3.4"
-    resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
-    integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
-    dependencies:
-      ms "2.1.2"
-  
-  deep-is@^0.1.3:
-    version "0.1.4"
-    resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
-    integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
-  
-  define-data-property@^1.0.1, define-data-property@^1.1.1:
-    version "1.1.1"
-    resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz"
-    integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==
-    dependencies:
-      get-intrinsic "^1.2.1"
-      gopd "^1.0.1"
-      has-property-descriptors "^1.0.0"
-  
-  define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1:
-    version "1.2.1"
-    resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz"
-    integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
-    dependencies:
-      define-data-property "^1.0.1"
-      has-property-descriptors "^1.0.0"
-      object-keys "^1.1.1"
-  
-  delay@^5.0.0:
-    version "5.0.0"
-    resolved "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz"
-    integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==
-  
-  dir-glob@^3.0.1:
-    version "3.0.1"
-    resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz"
-    integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
-    dependencies:
-      path-type "^4.0.0"
-  
-  doctrine@^2.1.0:
-    version "2.1.0"
-    resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz"
-    integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
-    dependencies:
-      esutils "^2.0.2"
-  
-  doctrine@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz"
-    integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
-    dependencies:
-      esutils "^2.0.2"
-  
-  dot-case@^3.0.4:
-    version "3.0.4"
-    resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz"
-    integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==
-    dependencies:
-      no-case "^3.0.4"
-      tslib "^2.0.3"
-  
-  eastasianwidth@^0.2.0:
-    version "0.2.0"
-    resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz"
-    integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
-  
-  emoji-regex@^8.0.0:
-    version "8.0.0"
-    resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
-    integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
-  
-  emoji-regex@^9.2.2:
-    version "9.2.2"
-    resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz"
-    integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
-  
-  es-abstract@^1.22.1:
-    version "1.22.3"
-    resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz"
-    integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==
-    dependencies:
-      array-buffer-byte-length "^1.0.0"
-      arraybuffer.prototype.slice "^1.0.2"
-      available-typed-arrays "^1.0.5"
-      call-bind "^1.0.5"
-      es-set-tostringtag "^2.0.1"
-      es-to-primitive "^1.2.1"
-      function.prototype.name "^1.1.6"
-      get-intrinsic "^1.2.2"
-      get-symbol-description "^1.0.0"
-      globalthis "^1.0.3"
-      gopd "^1.0.1"
-      has-property-descriptors "^1.0.0"
-      has-proto "^1.0.1"
-      has-symbols "^1.0.3"
-      hasown "^2.0.0"
-      internal-slot "^1.0.5"
-      is-array-buffer "^3.0.2"
-      is-callable "^1.2.7"
-      is-negative-zero "^2.0.2"
-      is-regex "^1.1.4"
-      is-shared-array-buffer "^1.0.2"
-      is-string "^1.0.7"
-      is-typed-array "^1.1.12"
-      is-weakref "^1.0.2"
-      object-inspect "^1.13.1"
-      object-keys "^1.1.1"
-      object.assign "^4.1.4"
-      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"
-      unbox-primitive "^1.0.2"
-      which-typed-array "^1.1.13"
-  
-  es-iterator-helpers@^1.0.12:
-    version "1.0.15"
-    resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz"
-    integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==
-    dependencies:
-      asynciterator.prototype "^1.0.0"
-      call-bind "^1.0.2"
-      define-properties "^1.2.1"
-      es-abstract "^1.22.1"
-      es-set-tostringtag "^2.0.1"
-      function-bind "^1.1.1"
-      get-intrinsic "^1.2.1"
-      globalthis "^1.0.3"
-      has-property-descriptors "^1.0.0"
-      has-proto "^1.0.1"
-      has-symbols "^1.0.3"
-      internal-slot "^1.0.5"
-      iterator.prototype "^1.1.2"
-      safe-array-concat "^1.0.1"
-  
-  es-set-tostringtag@^2.0.1:
-    version "2.0.2"
-    resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz"
-    integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==
-    dependencies:
-      get-intrinsic "^1.2.2"
-      has-tostringtag "^1.0.0"
-      hasown "^2.0.0"
-  
-  es-shim-unscopables@^1.0.0:
-    version "1.0.2"
-    resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz"
-    integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==
-    dependencies:
-      hasown "^2.0.0"
-  
-  es-to-primitive@^1.2.1:
-    version "1.2.1"
-    resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz"
-    integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
-    dependencies:
-      is-callable "^1.1.4"
-      is-date-object "^1.0.1"
-      is-symbol "^1.0.2"
-  
-  es6-promise@^4.0.3:
-    version "4.2.8"
-    resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz"
-    integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
-  
-  es6-promisify@^5.0.0:
-    version "5.0.0"
-    resolved "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz"
-    integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==
-    dependencies:
-      es6-promise "^4.0.3"
-  
-  escape-string-regexp@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
-    integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-  
-  eslint-config-prettier@^9.1.0:
-    version "9.1.0"
-    resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz"
-    integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==
-  
-  eslint-config-standard-with-typescript@^42.0.0:
-    version "42.0.0"
-    resolved "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-42.0.0.tgz"
-    integrity sha512-m1/2g/Sicun1uFZOFigJVeOqo9fE7OkMsNtilcpHwdCdcGr21qsGqYiyxYSvvHfJwY7w5OTQH0hxk8sM2N5Ohg==
-    dependencies:
-      "@typescript-eslint/parser" "^6.4.0"
-      eslint-config-standard "17.1.0"
-  
-  eslint-config-standard@17.1.0:
-    version "17.1.0"
-    resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz"
-    integrity sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==
-  
-  eslint-import-resolver-node@^0.3.9:
-    version "0.3.9"
-    resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz"
-    integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==
-    dependencies:
-      debug "^3.2.7"
-      is-core-module "^2.13.0"
-      resolve "^1.22.4"
-  
-  eslint-module-utils@^2.8.0:
-    version "2.8.0"
-    resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz"
-    integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==
-    dependencies:
-      debug "^3.2.7"
-  
-  eslint-plugin-import@^2.29.0:
-    version "2.29.0"
-    resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz"
-    integrity sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==
-    dependencies:
-      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-import-resolver-node "^0.3.9"
-      eslint-module-utils "^2.8.0"
-      hasown "^2.0.0"
-      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"
-  
-  eslint-plugin-react@^7.33.2:
-    version "7.33.2"
-    resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz"
-    integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==
-    dependencies:
-      array-includes "^3.1.6"
-      array.prototype.flatmap "^1.3.1"
-      array.prototype.tosorted "^1.1.1"
-      doctrine "^2.1.0"
-      es-iterator-helpers "^1.0.12"
-      estraverse "^5.3.0"
-      jsx-ast-utils "^2.4.1 || ^3.0.0"
-      minimatch "^3.1.2"
-      object.entries "^1.1.6"
-      object.fromentries "^2.0.6"
-      object.hasown "^1.1.2"
-      object.values "^1.1.6"
-      prop-types "^15.8.1"
-      resolve "^2.0.0-next.4"
-      semver "^6.3.1"
-      string.prototype.matchall "^4.0.8"
-  
-  eslint-scope@^7.2.2:
-    version "7.2.2"
-    resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz"
-    integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
-    dependencies:
-      esrecurse "^4.3.0"
-      estraverse "^5.2.0"
-  
-  eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
-    version "3.4.3"
-    resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
-    integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
-  
-  eslint@^8.55.0:
-    version "8.55.0"
-    resolved "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz"
-    integrity sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==
-    dependencies:
-      "@eslint-community/eslint-utils" "^4.2.0"
-      "@eslint-community/regexpp" "^4.6.1"
-      "@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.4"
-      chalk "^4.0.0"
-      cross-spawn "^7.0.2"
-      debug "^4.3.2"
-      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.4.2"
-      esutils "^2.0.2"
-      fast-deep-equal "^3.1.3"
-      file-entry-cache "^6.0.1"
-      find-up "^5.0.0"
-      glob-parent "^6.0.2"
-      globals "^13.19.0"
-      graphemer "^1.4.0"
-      ignore "^5.2.0"
-      imurmurhash "^0.1.4"
-      is-glob "^4.0.0"
-      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"
-  
-  espree@^9.6.0, espree@^9.6.1:
-    version "9.6.1"
-    resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz"
-    integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
-    dependencies:
-      acorn "^8.9.0"
-      acorn-jsx "^5.3.2"
-      eslint-visitor-keys "^3.4.1"
-  
-  esquery@^1.4.2:
-    version "1.5.0"
-    resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz"
-    integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
-    dependencies:
-      estraverse "^5.1.0"
-  
-  esrecurse@^4.3.0:
-    version "4.3.0"
-    resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz"
-    integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
-    dependencies:
-      estraverse "^5.2.0"
-  
-  estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
-    version "5.3.0"
-    resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
-    integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
-  
-  esutils@^2.0.2:
-    version "2.0.3"
-    resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
-    integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-  
-  eventemitter3@^4.0.7:
-    version "4.0.7"
-    resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz"
-    integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
-  
-  eyes@^0.1.8:
-    version "0.1.8"
-    resolved "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz"
-    integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==
-  
-  fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
-    version "3.1.3"
-    resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
-    integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-  
-  fast-glob@^3.2.9:
-    version "3.3.2"
-    resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz"
-    integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
-    dependencies:
-      "@nodelib/fs.stat" "^2.0.2"
-      "@nodelib/fs.walk" "^1.2.3"
-      glob-parent "^5.1.2"
-      merge2 "^1.3.0"
-      micromatch "^4.0.4"
-  
-  fast-json-stable-stringify@^2.0.0:
-    version "2.1.0"
-    resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
-    integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-  
-  fast-levenshtein@^2.0.6:
-    version "2.0.6"
-    resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
-    integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
-  
-  fast-stable-stringify@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz"
-    integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==
-  
-  fastq@^1.6.0:
-    version "1.15.0"
-    resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz"
-    integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
-    dependencies:
-      reusify "^1.0.4"
-  
-  file-entry-cache@^6.0.1:
-    version "6.0.1"
-    resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz"
-    integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
-    dependencies:
-      flat-cache "^3.0.4"
-  
-  file-uri-to-path@1.0.0:
-    version "1.0.0"
-    resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz"
-    integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
-  
-  fill-range@^7.0.1:
-    version "7.0.1"
-    resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz"
-    integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
-    dependencies:
-      to-regex-range "^5.0.1"
-  
-  find-process@^1.4.7:
-    version "1.4.7"
-    resolved "https://registry.npmjs.org/find-process/-/find-process-1.4.7.tgz"
-    integrity sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==
-    dependencies:
-      chalk "^4.0.0"
-      commander "^5.1.0"
-      debug "^4.1.1"
-  
-  find-up@^5.0.0:
-    version "5.0.0"
-    resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"
-    integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
-    dependencies:
-      locate-path "^6.0.0"
-      path-exists "^4.0.0"
-  
-  flat-cache@^3.0.4:
-    version "3.2.0"
-    resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz"
-    integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==
-    dependencies:
-      flatted "^3.2.9"
-      keyv "^4.5.3"
-      rimraf "^3.0.2"
-  
-  flatted@^3.2.9:
-    version "3.2.9"
-    resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz"
-    integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==
-  
-  for-each@^0.3.3:
-    version "0.3.3"
-    resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz"
-    integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
-    dependencies:
-      is-callable "^1.1.3"
-  
-  foreground-child@^3.1.0:
-    version "3.1.1"
-    resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz"
-    integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==
-    dependencies:
-      cross-spawn "^7.0.0"
-      signal-exit "^4.0.1"
-  
-  fs.realpath@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
-    integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
-  
-  function-bind@^1.1.1, function-bind@^1.1.2:
-    version "1.1.2"
-    resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
-    integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
-  
-  function.prototype.name@^1.1.5, function.prototype.name@^1.1.6:
-    version "1.1.6"
-    resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz"
-    integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==
-    dependencies:
-      call-bind "^1.0.2"
-      define-properties "^1.2.0"
-      es-abstract "^1.22.1"
-      functions-have-names "^1.2.3"
-  
-  functions-have-names@^1.2.3:
-    version "1.2.3"
-    resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz"
-    integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
-  
-  get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2:
-    version "1.2.2"
-    resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz"
-    integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==
-    dependencies:
-      function-bind "^1.1.2"
-      has-proto "^1.0.1"
-      has-symbols "^1.0.3"
-      hasown "^2.0.0"
-  
-  get-symbol-description@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz"
-    integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
-    dependencies:
-      call-bind "^1.0.2"
-      get-intrinsic "^1.1.1"
-  
-  glob-parent@^5.1.2:
-    version "5.1.2"
-    resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
-    integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
-    dependencies:
-      is-glob "^4.0.1"
-  
-  glob-parent@^6.0.2:
-    version "6.0.2"
-    resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
-    integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
-    dependencies:
-      is-glob "^4.0.3"
-  
-  glob@^10.3.7:
-    version "10.3.10"
-    resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz"
-    integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==
-    dependencies:
-      foreground-child "^3.1.0"
-      jackspeak "^2.3.5"
-      minimatch "^9.0.1"
-      minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
-      path-scurry "^1.10.1"
-  
-  glob@^7.1.3:
-    version "7.2.3"
-    resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
-    integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
-    dependencies:
-      fs.realpath "^1.0.0"
-      inflight "^1.0.4"
-      inherits "2"
-      minimatch "^3.1.1"
-      once "^1.3.0"
-      path-is-absolute "^1.0.0"
-  
-  globals@^13.19.0:
-    version "13.24.0"
-    resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz"
-    integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
-    dependencies:
-      type-fest "^0.20.2"
-  
-  globalthis@^1.0.3:
-    version "1.0.3"
-    resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz"
-    integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==
-    dependencies:
-      define-properties "^1.1.3"
-  
-  globby@^11.1.0:
-    version "11.1.0"
-    resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz"
-    integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
-    dependencies:
-      array-union "^2.1.0"
-      dir-glob "^3.0.1"
-      fast-glob "^3.2.9"
-      ignore "^5.2.0"
-      merge2 "^1.4.1"
-      slash "^3.0.0"
-  
-  gopd@^1.0.1:
-    version "1.0.1"
-    resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz"
-    integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
-    dependencies:
-      get-intrinsic "^1.1.3"
-  
-  graphemer@^1.4.0:
-    version "1.4.0"
-    resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz"
-    integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
-  
-  handlebars@^4.7.7:
-    version "4.7.8"
-    resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz"
-    integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==
-    dependencies:
-      minimist "^1.2.5"
-      neo-async "^2.6.2"
-      source-map "^0.6.1"
-      wordwrap "^1.0.0"
-    optionalDependencies:
-      uglify-js "^3.1.4"
-  
-  has-bigints@^1.0.1, has-bigints@^1.0.2:
-    version "1.0.2"
-    resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz"
-    integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
-  
-  has-flag@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
-    integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-  
-  has-property-descriptors@^1.0.0:
-    version "1.0.1"
-    resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz"
-    integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==
-    dependencies:
-      get-intrinsic "^1.2.2"
-  
-  has-proto@^1.0.1:
-    version "1.0.1"
-    resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz"
-    integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
-  
-  has-symbols@^1.0.2, has-symbols@^1.0.3:
-    version "1.0.3"
-    resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz"
-    integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
-  
-  has-tostringtag@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz"
-    integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
-    dependencies:
-      has-symbols "^1.0.2"
-  
-  hasown@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz"
-    integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==
-    dependencies:
-      function-bind "^1.1.2"
-  
-  humanize-ms@^1.2.1:
-    version "1.2.1"
-    resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz"
-    integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==
-    dependencies:
-      ms "^2.0.0"
-  
-  ieee754@^1.2.1:
-    version "1.2.1"
-    resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz"
-    integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-  
-  ignore@^5.2.0, ignore@^5.2.4:
-    version "5.3.0"
-    resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz"
-    integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==
-  
-  import-fresh@^3.2.1:
-    version "3.3.0"
-    resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz"
-    integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
-    dependencies:
-      parent-module "^1.0.0"
-      resolve-from "^4.0.0"
-  
-  imurmurhash@^0.1.4:
-    version "0.1.4"
-    resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
-    integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
-  
-  inflight@^1.0.4:
-    version "1.0.6"
-    resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
-    integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
-    dependencies:
-      once "^1.3.0"
-      wrappy "1"
-  
-  inherits@2:
-    version "2.0.4"
-    resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
-    integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-  
-  internal-slot@^1.0.5:
-    version "1.0.6"
-    resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz"
-    integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==
-    dependencies:
-      get-intrinsic "^1.2.2"
-      hasown "^2.0.0"
-      side-channel "^1.0.4"
-  
-  is-array-buffer@^3.0.1, is-array-buffer@^3.0.2:
-    version "3.0.2"
-    resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz"
-    integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==
-    dependencies:
-      call-bind "^1.0.2"
-      get-intrinsic "^1.2.0"
-      is-typed-array "^1.1.10"
-  
-  is-async-function@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz"
-    integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==
-    dependencies:
-      has-tostringtag "^1.0.0"
-  
-  is-bigint@^1.0.1:
-    version "1.0.4"
-    resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz"
-    integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
-    dependencies:
-      has-bigints "^1.0.1"
-  
-  is-boolean-object@^1.1.0:
-    version "1.1.2"
-    resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz"
-    integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
-    dependencies:
-      call-bind "^1.0.2"
-      has-tostringtag "^1.0.0"
-  
-  is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
-    version "1.2.7"
-    resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz"
-    integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
-  
-  is-core-module@^2.13.0, is-core-module@^2.13.1:
-    version "2.13.1"
-    resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz"
-    integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==
-    dependencies:
-      hasown "^2.0.0"
-  
-  is-date-object@^1.0.1, is-date-object@^1.0.5:
-    version "1.0.5"
-    resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz"
-    integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
-    dependencies:
-      has-tostringtag "^1.0.0"
-  
-  is-extglob@^2.1.1:
-    version "2.1.1"
-    resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
-    integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
-  
-  is-finalizationregistry@^1.0.2:
-    version "1.0.2"
-    resolved "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz"
-    integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==
-    dependencies:
-      call-bind "^1.0.2"
-  
-  is-fullwidth-code-point@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
-    integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
-  
-  is-generator-function@^1.0.10:
-    version "1.0.10"
-    resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz"
-    integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==
-    dependencies:
-      has-tostringtag "^1.0.0"
-  
-  is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
-    version "4.0.3"
-    resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
-    integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
-    dependencies:
-      is-extglob "^2.1.1"
-  
-  is-map@^2.0.1:
-    version "2.0.2"
-    resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz"
-    integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==
-  
-  is-negative-zero@^2.0.2:
-    version "2.0.2"
-    resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz"
-    integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
-  
-  is-number-object@^1.0.4:
-    version "1.0.7"
-    resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz"
-    integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==
-    dependencies:
-      has-tostringtag "^1.0.0"
-  
-  is-number@^7.0.0:
-    version "7.0.0"
-    resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
-    integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-  
-  is-path-inside@^3.0.3:
-    version "3.0.3"
-    resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz"
-    integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
-  
-  is-regex@^1.1.4:
-    version "1.1.4"
-    resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz"
-    integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
-    dependencies:
-      call-bind "^1.0.2"
-      has-tostringtag "^1.0.0"
-  
-  is-set@^2.0.1:
-    version "2.0.2"
-    resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz"
-    integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==
-  
-  is-shared-array-buffer@^1.0.2:
-    version "1.0.2"
-    resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz"
-    integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==
-    dependencies:
-      call-bind "^1.0.2"
-  
-  is-string@^1.0.5, is-string@^1.0.7:
-    version "1.0.7"
-    resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz"
-    integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
-    dependencies:
-      has-tostringtag "^1.0.0"
-  
-  is-symbol@^1.0.2, is-symbol@^1.0.3:
-    version "1.0.4"
-    resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz"
-    integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
-    dependencies:
-      has-symbols "^1.0.2"
-  
-  is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9:
-    version "1.1.12"
-    resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz"
-    integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==
-    dependencies:
-      which-typed-array "^1.1.11"
-  
-  is-weakmap@^2.0.1:
-    version "2.0.1"
-    resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz"
-    integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==
-  
-  is-weakref@^1.0.2:
-    version "1.0.2"
-    resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz"
-    integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
-    dependencies:
-      call-bind "^1.0.2"
-  
-  is-weakset@^2.0.1:
-    version "2.0.2"
-    resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz"
-    integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==
-    dependencies:
-      call-bind "^1.0.2"
-      get-intrinsic "^1.1.1"
-  
-  isarray@^2.0.5:
-    version "2.0.5"
-    resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz"
-    integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
-  
-  isexe@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
-    integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
-  
-  isomorphic-ws@^4.0.1:
-    version "4.0.1"
-    resolved "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz"
-    integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==
-  
-  iterator.prototype@^1.1.2:
-    version "1.1.2"
-    resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz"
-    integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==
-    dependencies:
-      define-properties "^1.2.1"
-      get-intrinsic "^1.2.1"
-      has-symbols "^1.0.3"
-      reflect.getprototypeof "^1.0.4"
-      set-function-name "^2.0.1"
-  
-  jackspeak@^2.3.5:
-    version "2.3.6"
-    resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz"
-    integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==
-    dependencies:
-      "@isaacs/cliui" "^8.0.2"
-    optionalDependencies:
-      "@pkgjs/parseargs" "^0.11.0"
-  
-  jayson@^4.1.0:
-    version "4.1.0"
-    resolved "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz"
-    integrity sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==
-    dependencies:
-      "@types/connect" "^3.4.33"
-      "@types/node" "^12.12.54"
-      "@types/ws" "^7.4.4"
-      JSONStream "^1.3.5"
-      commander "^2.20.3"
-      delay "^5.0.0"
-      es6-promisify "^5.0.0"
-      eyes "^0.1.8"
-      isomorphic-ws "^4.0.1"
-      json-stringify-safe "^5.0.1"
-      uuid "^8.3.2"
-      ws "^7.4.5"
-  
-  js-sha256@^0.9.0:
-    version "0.9.0"
-    resolved "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz"
-    integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==
-  
-  "js-tokens@^3.0.0 || ^4.0.0":
-    version "4.0.0"
-    resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
-    integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-  
-  js-yaml@^4.1.0:
-    version "4.1.0"
-    resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz"
-    integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
-    dependencies:
-      argparse "^2.0.1"
-  
-  json-buffer@3.0.1:
-    version "3.0.1"
-    resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz"
-    integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
-  
-  json-schema-traverse@^0.4.1:
-    version "0.4.1"
-    resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
-    integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
-  
-  json-stable-stringify-without-jsonify@^1.0.1:
-    version "1.0.1"
-    resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
-    integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
-  
-  json-stringify-safe@^5.0.1:
-    version "5.0.1"
-    resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
-    integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
-  
-  json5@^1.0.2:
-    version "1.0.2"
-    resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz"
-    integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
-    dependencies:
-      minimist "^1.2.0"
-  
-  jsonc-parser@^3.2.0:
-    version "3.2.0"
-    resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz"
-    integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
-  
-  jsonparse@^1.2.0:
-    version "1.3.1"
-    resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz"
-    integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==
-  
-  "jsx-ast-utils@^2.4.1 || ^3.0.0":
-    version "3.3.5"
-    resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz"
-    integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==
-    dependencies:
-      array-includes "^3.1.6"
-      array.prototype.flat "^1.3.1"
-      object.assign "^4.1.4"
-      object.values "^1.1.6"
-  
-  keyv@^4.5.3:
-    version "4.5.4"
-    resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz"
-    integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
-    dependencies:
-      json-buffer "3.0.1"
-  
-  levn@^0.4.1:
-    version "0.4.1"
-    resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz"
-    integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
-    dependencies:
-      prelude-ls "^1.2.1"
-      type-check "~0.4.0"
-  
-  locate-path@^6.0.0:
-    version "6.0.0"
-    resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz"
-    integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
-    dependencies:
-      p-locate "^5.0.0"
-  
-  lodash.merge@^4.6.2:
-    version "4.6.2"
-    resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
-    integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
-  
-  loose-envify@^1.4.0:
-    version "1.4.0"
-    resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
-    integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
-    dependencies:
-      js-tokens "^3.0.0 || ^4.0.0"
-  
-  lower-case@^2.0.2:
-    version "2.0.2"
-    resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz"
-    integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
-    dependencies:
-      tslib "^2.0.3"
-  
-  lru-cache@^6.0.0:
-    version "6.0.0"
-    resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
-    integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
-    dependencies:
-      yallist "^4.0.0"
-  
-  "lru-cache@^9.1.1 || ^10.0.0":
-    version "10.1.0"
-    resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz"
-    integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==
-  
-  lunr@^2.3.9:
-    version "2.3.9"
-    resolved "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz"
-    integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==
-  
-  marked@^4.3.0:
-    version "4.3.0"
-    resolved "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz"
-    integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==
-  
-  merge2@^1.3.0, merge2@^1.4.1:
-    version "1.4.1"
-    resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
-    integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-  
-  micromatch@^4.0.4:
-    version "4.0.5"
-    resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz"
-    integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
-    dependencies:
-      braces "^3.0.2"
-      picomatch "^2.3.1"
-  
-  minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
-    version "3.1.2"
-    resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
-    integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
-    dependencies:
-      brace-expansion "^1.1.7"
-  
-  minimatch@^9.0.1, minimatch@^9.0.3:
-    version "9.0.3"
-    resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz"
-    integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==
-    dependencies:
-      brace-expansion "^2.0.1"
-  
-  minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6:
-    version "1.2.8"
-    resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
-    integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
-  
-  "minipass@^5.0.0 || ^6.0.2 || ^7.0.0":
-    version "7.0.4"
-    resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz"
-    integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==
-  
-  ms@2.1.2, ms@^2.1.1:
-    version "2.1.2"
-    resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
-    integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-  
-  ms@^2.0.0:
-    version "2.1.3"
-    resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
-    integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-  
-  natural-compare@^1.4.0:
-    version "1.4.0"
-    resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
-    integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
-  
-  neo-async@^2.6.2:
-    version "2.6.2"
-    resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz"
-    integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
-  
-  no-case@^3.0.4:
-    version "3.0.4"
-    resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz"
-    integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
-    dependencies:
-      lower-case "^2.0.2"
-      tslib "^2.0.3"
-  
-  node-fetch@^2.6.12:
-    version "2.7.0"
-    resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz"
-    integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
-    dependencies:
-      whatwg-url "^5.0.0"
-  
-  node-gyp-build@^4.3.0:
-    version "4.7.1"
-    resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz"
-    integrity sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==
-  
-  object-assign@^4.1.1:
-    version "4.1.1"
-    resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
-    integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
-  
-  object-inspect@^1.13.1, object-inspect@^1.9.0:
-    version "1.13.1"
-    resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz"
-    integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
-  
-  object-keys@^1.1.1:
-    version "1.1.1"
-    resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz"
-    integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-  
-  object.assign@^4.1.4:
-    version "4.1.5"
-    resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz"
-    integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==
-    dependencies:
-      call-bind "^1.0.5"
-      define-properties "^1.2.1"
-      has-symbols "^1.0.3"
-      object-keys "^1.1.1"
-  
-  object.entries@^1.1.6:
-    version "1.1.7"
-    resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz"
-    integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==
-    dependencies:
-      call-bind "^1.0.2"
-      define-properties "^1.2.0"
-      es-abstract "^1.22.1"
-  
-  object.fromentries@^2.0.6, object.fromentries@^2.0.7:
-    version "2.0.7"
-    resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz"
-    integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==
-    dependencies:
-      call-bind "^1.0.2"
-      define-properties "^1.2.0"
-      es-abstract "^1.22.1"
-  
-  object.groupby@^1.0.1:
-    version "1.0.1"
-    resolved "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz"
-    integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==
-    dependencies:
-      call-bind "^1.0.2"
-      define-properties "^1.2.0"
-      es-abstract "^1.22.1"
-      get-intrinsic "^1.2.1"
-  
-  object.hasown@^1.1.2:
-    version "1.1.3"
-    resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz"
-    integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==
-    dependencies:
-      define-properties "^1.2.0"
-      es-abstract "^1.22.1"
-  
-  object.values@^1.1.6, object.values@^1.1.7:
-    version "1.1.7"
-    resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz"
-    integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==
-    dependencies:
-      call-bind "^1.0.2"
-      define-properties "^1.2.0"
-      es-abstract "^1.22.1"
-  
-  once@^1.3.0:
-    version "1.4.0"
-    resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
-    integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
-    dependencies:
-      wrappy "1"
-  
-  optionator@^0.9.3:
-    version "0.9.3"
-    resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz"
-    integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==
-    dependencies:
-      "@aashutoshrathi/word-wrap" "^1.2.3"
-      deep-is "^0.1.3"
-      fast-levenshtein "^2.0.6"
-      levn "^0.4.1"
-      prelude-ls "^1.2.1"
-      type-check "^0.4.0"
-  
-  p-limit@^3.0.2:
-    version "3.1.0"
-    resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
-    integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
-    dependencies:
-      yocto-queue "^0.1.0"
-  
-  p-locate@^5.0.0:
-    version "5.0.0"
-    resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz"
-    integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
-    dependencies:
-      p-limit "^3.0.2"
-  
-  parent-module@^1.0.0:
-    version "1.0.1"
-    resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
-    integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
-    dependencies:
-      callsites "^3.0.0"
-  
-  path-exists@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
-    integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
-  
-  path-is-absolute@^1.0.0:
-    version "1.0.1"
-    resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
-    integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
-  
-  path-key@^3.1.0:
-    version "3.1.1"
-    resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
-    integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-  
-  path-parse@^1.0.7:
-    version "1.0.7"
-    resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
-    integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
-  
-  path-scurry@^1.10.1:
-    version "1.10.1"
-    resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz"
-    integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==
-    dependencies:
-      lru-cache "^9.1.1 || ^10.0.0"
-      minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
-  
-  path-type@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
-    integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-  
-  picomatch@^2.3.1:
-    version "2.3.1"
-    resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
-    integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-  
-  prelude-ls@^1.2.1:
-    version "1.2.1"
-    resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
-    integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
-  
-  prettier@^2.5.1:
-    version "2.8.8"
-    resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz"
-    integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
-  
-  prettier@^3.1.1:
-    version "3.1.1"
-    resolved "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz"
-    integrity sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==
-  
-  prop-types@^15.8.1:
-    version "15.8.1"
-    resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz"
-    integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
-    dependencies:
-      loose-envify "^1.4.0"
-      object-assign "^4.1.1"
-      react-is "^16.13.1"
-  
-  punycode@^2.1.0:
-    version "2.3.1"
-    resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz"
-    integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
-  
-  queue-microtask@^1.2.2:
-    version "1.2.3"
-    resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
-    integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
-  
-  react-is@^16.13.1:
-    version "16.13.1"
-    resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
-    integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
-  
-  reflect.getprototypeof@^1.0.4:
-    version "1.0.4"
-    resolved "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz"
-    integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==
-    dependencies:
-      call-bind "^1.0.2"
-      define-properties "^1.2.0"
-      es-abstract "^1.22.1"
-      get-intrinsic "^1.2.1"
-      globalthis "^1.0.3"
-      which-builtin-type "^1.1.3"
-  
-  regenerator-runtime@^0.14.0:
-    version "0.14.0"
-    resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz"
-    integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
-  
-  regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1:
-    version "1.5.1"
-    resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz"
-    integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==
-    dependencies:
-      call-bind "^1.0.2"
-      define-properties "^1.2.0"
-      set-function-name "^2.0.0"
-  
-  resolve-from@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
-    integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
-  
-  resolve@^1.22.4:
-    version "1.22.8"
-    resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz"
-    integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
-    dependencies:
-      is-core-module "^2.13.0"
-      path-parse "^1.0.7"
-      supports-preserve-symlinks-flag "^1.0.0"
-  
-  resolve@^2.0.0-next.4:
-    version "2.0.0-next.5"
-    resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz"
-    integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==
-    dependencies:
-      is-core-module "^2.13.0"
-      path-parse "^1.0.7"
-      supports-preserve-symlinks-flag "^1.0.0"
-  
-  reusify@^1.0.4:
-    version "1.0.4"
-    resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
-    integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
-  
-  rimraf@^3.0.2:
-    version "3.0.2"
-    resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
-    integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
-    dependencies:
-      glob "^7.1.3"
-  
-  rimraf@^5.0.5:
-    version "5.0.5"
-    resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz"
-    integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==
-    dependencies:
-      glob "^10.3.7"
-  
-  rpc-websockets@^7.5.1:
-    version "7.8.0"
-    resolved "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.8.0.tgz"
-    integrity sha512-AStkq6KDvSAmA4WiwlK1pDvj/33BWmExTATUokC0v+NhWekXSTNzXS5OGXeYwq501/pj6lBZMofg/h4dx4/tCg==
-    dependencies:
-      "@babel/runtime" "^7.17.2"
-      eventemitter3 "^4.0.7"
-      uuid "^8.3.2"
-      ws "^8.5.0"
-    optionalDependencies:
-      bufferutil "^4.0.1"
-      utf-8-validate "^5.0.2"
-  
-  run-parallel@^1.1.9:
-    version "1.2.0"
-    resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz"
-    integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
-    dependencies:
-      queue-microtask "^1.2.2"
-  
-  safe-array-concat@^1.0.1:
-    version "1.0.1"
-    resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz"
-    integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==
-    dependencies:
-      call-bind "^1.0.2"
-      get-intrinsic "^1.2.1"
-      has-symbols "^1.0.3"
-      isarray "^2.0.5"
-  
-  safe-buffer@^5.0.1:
-    version "5.2.1"
-    resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
-    integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-  
-  safe-regex-test@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz"
-    integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==
-    dependencies:
-      call-bind "^1.0.2"
-      get-intrinsic "^1.1.3"
-      is-regex "^1.1.4"
-  
-  semver@^6.3.1:
-    version "6.3.1"
-    resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
-    integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-  
-  semver@^7.3.7, semver@^7.5.4:
-    version "7.5.4"
-    resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz"
-    integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
-    dependencies:
-      lru-cache "^6.0.0"
-  
-  set-function-length@^1.1.1:
-    version "1.1.1"
-    resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz"
-    integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==
-    dependencies:
-      define-data-property "^1.1.1"
-      get-intrinsic "^1.2.1"
-      gopd "^1.0.1"
-      has-property-descriptors "^1.0.0"
-  
-  set-function-name@^2.0.0, set-function-name@^2.0.1:
-    version "2.0.1"
-    resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz"
-    integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==
-    dependencies:
-      define-data-property "^1.0.1"
-      functions-have-names "^1.2.3"
-      has-property-descriptors "^1.0.0"
-  
-  shebang-command@^2.0.0:
-    version "2.0.0"
-    resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
-    integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
-    dependencies:
-      shebang-regex "^3.0.0"
-  
-  shebang-regex@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
-    integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-  
-  shiki@^0.14.1:
-    version "0.14.6"
-    resolved "https://registry.npmjs.org/shiki/-/shiki-0.14.6.tgz"
-    integrity sha512-R4koBBlQP33cC8cpzX0hAoOURBHJILp4Aaduh2eYi+Vj8ZBqtK/5SWNEHBS3qwUMu8dqOtI/ftno3ESfNeVW9g==
-    dependencies:
-      ansi-sequence-parser "^1.1.0"
-      jsonc-parser "^3.2.0"
-      vscode-oniguruma "^1.7.0"
-      vscode-textmate "^8.0.0"
-  
-  side-channel@^1.0.4:
-    version "1.0.4"
-    resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz"
-    integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
-    dependencies:
-      call-bind "^1.0.0"
-      get-intrinsic "^1.0.2"
-      object-inspect "^1.9.0"
-  
-  signal-exit@^4.0.1:
-    version "4.1.0"
-    resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz"
-    integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
-  
-  slash@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz"
-    integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
-  
-  snake-case@^3.0.4:
-    version "3.0.4"
-    resolved "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz"
-    integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==
-    dependencies:
-      dot-case "^3.0.4"
-      tslib "^2.0.3"
-  
-  source-map@^0.6.1:
-    version "0.6.1"
-    resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
-    integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-  
-  spok@^1.4.3:
-    version "1.5.5"
-    resolved "https://registry.npmjs.org/spok/-/spok-1.5.5.tgz"
-    integrity sha512-IrJIXY54sCNFASyHPOY+jEirkiJ26JDqsGiI0Dvhwcnkl0PEWi1PSsrkYql0rzDw8LFVTcA7rdUCAJdE2HE+2Q==
-    dependencies:
-      ansicolors "~0.3.2"
-      find-process "^1.4.7"
-  
-  "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0:
-    version "4.2.3"
-    resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
-    integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
-    dependencies:
-      emoji-regex "^8.0.0"
-      is-fullwidth-code-point "^3.0.0"
-      strip-ansi "^6.0.1"
-  
-  string-width@^5.0.1, string-width@^5.1.2:
-    version "5.1.2"
-    resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz"
-    integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
-    dependencies:
-      eastasianwidth "^0.2.0"
-      emoji-regex "^9.2.2"
-      strip-ansi "^7.0.1"
-  
-  string.prototype.matchall@^4.0.8:
-    version "4.0.10"
-    resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz"
-    integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==
-    dependencies:
-      call-bind "^1.0.2"
-      define-properties "^1.2.0"
-      es-abstract "^1.22.1"
-      get-intrinsic "^1.2.1"
-      has-symbols "^1.0.3"
-      internal-slot "^1.0.5"
-      regexp.prototype.flags "^1.5.0"
-      set-function-name "^2.0.0"
-      side-channel "^1.0.4"
-  
-  string.prototype.trim@^1.2.8:
-    version "1.2.8"
-    resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz"
-    integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==
-    dependencies:
-      call-bind "^1.0.2"
-      define-properties "^1.2.0"
-      es-abstract "^1.22.1"
-  
-  string.prototype.trimend@^1.0.7:
-    version "1.0.7"
-    resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz"
-    integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==
-    dependencies:
-      call-bind "^1.0.2"
-      define-properties "^1.2.0"
-      es-abstract "^1.22.1"
-  
-  string.prototype.trimstart@^1.0.7:
-    version "1.0.7"
-    resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz"
-    integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==
-    dependencies:
-      call-bind "^1.0.2"
-      define-properties "^1.2.0"
-      es-abstract "^1.22.1"
-  
-  "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
-    version "6.0.1"
-    resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
-    integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
-    dependencies:
-      ansi-regex "^5.0.1"
-  
-  strip-ansi@^7.0.1:
-    version "7.1.0"
-    resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz"
-    integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
-    dependencies:
-      ansi-regex "^6.0.1"
-  
-  strip-bom@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz"
-    integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
-  
-  strip-json-comments@^3.1.1:
-    version "3.1.1"
-    resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
-    integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
-  
-  superstruct@^0.14.2:
-    version "0.14.2"
-    resolved "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz"
-    integrity sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==
-  
-  supports-color@^7.1.0:
-    version "7.2.0"
-    resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
-    integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
-    dependencies:
-      has-flag "^4.0.0"
-  
-  supports-preserve-symlinks-flag@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
-    integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
-  
-  text-encoding-utf-8@^1.0.2:
-    version "1.0.2"
-    resolved "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz"
-    integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==
-  
-  text-table@^0.2.0:
-    version "0.2.0"
-    resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
-    integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
-  
-  "through@>=2.2.7 <3":
-    version "2.3.8"
-    resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz"
-    integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
-  
-  to-regex-range@^5.0.1:
-    version "5.0.1"
-    resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
-    integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
-    dependencies:
-      is-number "^7.0.0"
-  
-  toml@^3.0.0:
-    version "3.0.0"
-    resolved "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz"
-    integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==
-  
-  tr46@~0.0.3:
-    version "0.0.3"
-    resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz"
-    integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
-  
-  ts-api-utils@^1.0.1:
-    version "1.0.3"
-    resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz"
-    integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==
-  
-  tsconfig-paths@^3.14.2:
-    version "3.14.2"
-    resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz"
-    integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==
-    dependencies:
-      "@types/json5" "^0.0.29"
-      json5 "^1.0.2"
-      minimist "^1.2.6"
-      strip-bom "^3.0.0"
-  
-  tslib@^2.0.3:
-    version "2.6.2"
-    resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz"
-    integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
-  
-  type-check@^0.4.0, type-check@~0.4.0:
-    version "0.4.0"
-    resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
-    integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
-    dependencies:
-      prelude-ls "^1.2.1"
-  
-  type-fest@^0.20.2:
-    version "0.20.2"
-    resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
-    integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
-  
-  typed-array-buffer@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz"
-    integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==
-    dependencies:
-      call-bind "^1.0.2"
-      get-intrinsic "^1.2.1"
-      is-typed-array "^1.1.10"
-  
-  typed-array-byte-length@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz"
-    integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==
-    dependencies:
-      call-bind "^1.0.2"
-      for-each "^0.3.3"
-      has-proto "^1.0.1"
-      is-typed-array "^1.1.10"
-  
-  typed-array-byte-offset@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz"
-    integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==
-    dependencies:
-      available-typed-arrays "^1.0.5"
-      call-bind "^1.0.2"
-      for-each "^0.3.3"
-      has-proto "^1.0.1"
-      is-typed-array "^1.1.10"
-  
-  typed-array-length@^1.0.4:
-    version "1.0.4"
-    resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz"
-    integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==
-    dependencies:
-      call-bind "^1.0.2"
-      for-each "^0.3.3"
-      is-typed-array "^1.1.9"
-  
-  typedoc-plugin-markdown@^3.17.1:
-    version "3.17.1"
-    resolved "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.17.1.tgz"
-    integrity sha512-QzdU3fj0Kzw2XSdoL15ExLASt2WPqD7FbLeaqwT70+XjKyTshBnUlQA5nNREO1C2P8Uen0CDjsBLMsCQ+zd0lw==
-    dependencies:
-      handlebars "^4.7.7"
-  
-  typedoc@^0.25.4:
-    version "0.25.4"
-    resolved "https://registry.npmjs.org/typedoc/-/typedoc-0.25.4.tgz"
-    integrity sha512-Du9ImmpBCw54bX275yJrxPVnjdIyJO/84co0/L9mwe0R3G4FSR6rQ09AlXVRvZEGMUg09+z/usc8mgygQ1aidA==
-    dependencies:
-      lunr "^2.3.9"
-      marked "^4.3.0"
-      minimatch "^9.0.3"
-      shiki "^0.14.1"
-  
-  uglify-js@^3.1.4:
-    version "3.17.4"
-    resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz"
-    integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==
-  
-  unbox-primitive@^1.0.2:
-    version "1.0.2"
-    resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz"
-    integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
-    dependencies:
-      call-bind "^1.0.2"
-      has-bigints "^1.0.2"
-      has-symbols "^1.0.3"
-      which-boxed-primitive "^1.0.2"
-  
-  undici-types@~5.26.4:
-    version "5.26.5"
-    resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz"
-    integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
-  
-  uri-js@^4.2.2:
-    version "4.4.1"
-    resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
-    integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
-    dependencies:
-      punycode "^2.1.0"
-  
-  utf-8-validate@^5.0.2:
-    version "5.0.10"
-    resolved "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz"
-    integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==
-    dependencies:
-      node-gyp-build "^4.3.0"
-  
-  uuid@^8.3.2:
-    version "8.3.2"
-    resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz"
-    integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
-  
-  vscode-oniguruma@^1.7.0:
-    version "1.7.0"
-    resolved "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz"
-    integrity sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==
-  
-  vscode-textmate@^8.0.0:
-    version "8.0.0"
-    resolved "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz"
-    integrity sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==
-  
-  webidl-conversions@^3.0.0:
-    version "3.0.1"
-    resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz"
-    integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
-  
-  whatwg-url@^5.0.0:
-    version "5.0.0"
-    resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz"
-    integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
-    dependencies:
-      tr46 "~0.0.3"
-      webidl-conversions "^3.0.0"
-  
-  which-boxed-primitive@^1.0.2:
-    version "1.0.2"
-    resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz"
-    integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
-    dependencies:
-      is-bigint "^1.0.1"
-      is-boolean-object "^1.1.0"
-      is-number-object "^1.0.4"
-      is-string "^1.0.5"
-      is-symbol "^1.0.3"
-  
-  which-builtin-type@^1.1.3:
-    version "1.1.3"
-    resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz"
-    integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==
-    dependencies:
-      function.prototype.name "^1.1.5"
-      has-tostringtag "^1.0.0"
-      is-async-function "^2.0.0"
-      is-date-object "^1.0.5"
-      is-finalizationregistry "^1.0.2"
-      is-generator-function "^1.0.10"
-      is-regex "^1.1.4"
-      is-weakref "^1.0.2"
-      isarray "^2.0.5"
-      which-boxed-primitive "^1.0.2"
-      which-collection "^1.0.1"
-      which-typed-array "^1.1.9"
-  
-  which-collection@^1.0.1:
-    version "1.0.1"
-    resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz"
-    integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==
-    dependencies:
-      is-map "^2.0.1"
-      is-set "^2.0.1"
-      is-weakmap "^2.0.1"
-      is-weakset "^2.0.1"
-  
-  which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9:
-    version "1.1.13"
-    resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz"
-    integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==
-    dependencies:
-      available-typed-arrays "^1.0.5"
-      call-bind "^1.0.4"
-      for-each "^0.3.3"
-      gopd "^1.0.1"
-      has-tostringtag "^1.0.0"
-  
-  which@^2.0.1:
-    version "2.0.2"
-    resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
-    integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
-    dependencies:
-      isexe "^2.0.0"
-  
-  wordwrap@^1.0.0:
-    version "1.0.0"
-    resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz"
-    integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
-  
-  "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
-    version "7.0.0"
-    resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
-    integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
-    dependencies:
-      ansi-styles "^4.0.0"
-      string-width "^4.1.0"
-      strip-ansi "^6.0.0"
-  
-  wrap-ansi@^8.1.0:
-    version "8.1.0"
-    resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz"
-    integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
-    dependencies:
-      ansi-styles "^6.1.0"
-      string-width "^5.0.1"
-      strip-ansi "^7.0.1"
-  
-  wrappy@1:
-    version "1.0.2"
-    resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
-    integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
-  
-  ws@^7.4.5:
-    version "7.5.9"
-    resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz"
-    integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
-  
-  ws@^8.5.0:
-    version "8.15.1"
-    resolved "https://registry.npmjs.org/ws/-/ws-8.15.1.tgz"
-    integrity sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==
-  
-  yallist@^4.0.0:
-    version "4.0.0"
-    resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
-    integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-  
-  yocto-queue@^0.1.0:
-    version "0.1.0"
-    resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
-    integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==

+ 18 - 15
crates/bolt-lang/Cargo.toml

@@ -1,28 +1,31 @@
 [package]
 name = "bolt-lang"
-version = "0.0.1"
-edition = "2021"
 description = "Bolt Language"
-license = "MIT"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
 
 [dependencies]
-anchor-lang = { version = "0.29.0"}
+anchor-lang = { workspace = true }
 
 # Bolt Attributes
-bolt-attribute-bolt-program = { path = "./attribute/bolt-program", version = "0.0.1" }
-bolt-attribute-bolt-component = { path = "./attribute/component", version = "0.0.1" }
-bolt-attribute-bolt-system = { path = "./attribute/system", version = "0.0.1" }
-bolt-attribute-bolt-system-input = { path = "./attribute/system-input", version = "0.0.1" }
-bolt-attribute-bolt-component-deserialize = { path = "./attribute/component-deserialize", version = "0.0.1" }
-bolt-attribute-bolt-component-id = { path = "./attribute/component-id", version = "0.0.1" }
+bolt-attribute-bolt-program = { workspace = true }
+bolt-attribute-bolt-component = { workspace = true }
+bolt-attribute-bolt-system = { workspace = true }
+bolt-attribute-bolt-system-input = { workspace = true }
+bolt-attribute-bolt-component-deserialize = { workspace = true }
+bolt-attribute-bolt-component-id = { workspace = true }
 
 # Bolt Programs
-world = { path = "../../programs/world", features = ["cpi"], version = "0.0.1"}
-bolt-system = { path = "../../programs/bolt-system", features = ["cpi"], version = "0.0.1"}
+world = { workspace = true }
+bolt-system = { workspace = true }
 
 # Other dependencies
-serde = { version = "1.0", features = ["derive"] }
-serde_json = "1.0"
+serde = {workspace = true }
+serde_json = {workspace = true }
 
 # TODO: Remove once https://github.com/solana-labs/solana/issues/33504 is resolved.
-ahash = "=0.8.6"
+ahash = {workspace = true }

+ 9 - 6
crates/bolt-lang/attribute/bolt-program/Cargo.toml

@@ -1,14 +1,17 @@
 [package]
 name = "bolt-attribute-bolt-program"
-version = "0.0.1"
-edition = "2021"
 description = "Bolt attribute-bolt-program"
-license = "MIT"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
 
 [lib]
 proc-macro = true
 
 [dependencies]
-syn = { version = "1.0", features = ["full"] }
-quote = "1.0"
-proc-macro2 = "1.0"
+syn = { workspace = true }
+quote = { workspace = true }
+proc-macro2 = { workspace = true }

+ 10 - 7
crates/bolt-lang/attribute/component-deserialize/Cargo.toml

@@ -1,15 +1,18 @@
 [package]
 name = "bolt-attribute-bolt-component-deserialize"
-version = "0.0.1"
-edition = "2021"
 description = "Bolt attribute-bolt-component-deserialize"
-license = "MIT"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
 
 [lib]
 proc-macro = true
 
 [dependencies]
-syn = { version = "1.0", features = ["full"] }
-bolt-utils = { path = "../../utils", version = "0.0.1" }
-quote = "1.0"
-proc-macro2 = "1.0"
+syn = { workspace = true }
+bolt-utils = { path = "../../utils" }
+quote = { workspace = true }
+proc-macro2 = { workspace = true }

+ 9 - 6
crates/bolt-lang/attribute/component-id/Cargo.toml

@@ -1,14 +1,17 @@
 [package]
 name = "bolt-attribute-bolt-component-id"
-version = "0.0.1"
-edition = "2021"
 description = "Bolt attribute-bolt-component-id"
-license = "MIT"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
 
 [lib]
 proc-macro = true
 
 [dependencies]
-syn = { version = "1.0", features = ["full"] }
-quote = "1.0"
-proc-macro2 = "1.0"
+syn = { workspace = true }
+quote = { workspace = true }
+proc-macro2 = { workspace = true }

+ 10 - 7
crates/bolt-lang/attribute/component/Cargo.toml

@@ -1,15 +1,18 @@
 [package]
 name = "bolt-attribute-bolt-component"
-version = "0.0.1"
-edition = "2021"
 description = "Bolt attribute-bolt-component"
-license = "MIT"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
 
 [lib]
 proc-macro = true
 
 [dependencies]
-syn = { version = "1.0", features = ["full"] }
-bolt-utils = { path = "../../utils", version = "0.0.1" }
-quote = "1.0"
-proc-macro2 = "1.0"
+syn = { workspace = true }
+bolt-utils = { path = "../../utils" }
+quote = { workspace = true }
+proc-macro2 = { workspace = true }

+ 9 - 6
crates/bolt-lang/attribute/system-input/Cargo.toml

@@ -1,14 +1,17 @@
 [package]
 name = "bolt-attribute-bolt-system-input"
-version = "0.0.1"
-edition = "2021"
 description = "Bolt attribute-bolt-system-input"
-license = "MIT"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
 
 [lib]
 proc-macro = true
 
 [dependencies]
-syn = { version = "1.0", features = ["full", "visit-mut"] }
-quote = "1.0"
-proc-macro2 = "1.0"
+syn = { workspace = true, features = ["visit-mut"] }
+quote = { workspace = true }
+proc-macro2 = { workspace = true }

+ 9 - 6
crates/bolt-lang/attribute/system/Cargo.toml

@@ -1,14 +1,17 @@
 [package]
 name = "bolt-attribute-bolt-system"
-version = "0.0.1"
-edition = "2021"
 description = "Bolt attribute-bolt-system"
-license = "MIT"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
 
 [lib]
 proc-macro = true
 
 [dependencies]
-syn = { version = "1.0", features = ["full", "visit-mut"] }
-quote = "1.0"
-proc-macro2 = "1.0"
+syn = { workspace = true, features = ["visit-mut"] }
+quote = { workspace = true }
+proc-macro2 = { workspace = true }

+ 9 - 6
crates/bolt-lang/utils/Cargo.toml

@@ -1,13 +1,16 @@
 [package]
 name = "bolt-utils"
-version = "0.0.1"
-edition = "2021"
 description = "Bolt utils"
-license = "MIT"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
 
 [lib]
 
 [dependencies]
-syn = { version = "1.0", features = ["full"] }
-quote = "1.0"
-proc-macro2 = "1.0"
+syn = { workspace = true, features = ["full"] }
+quote = { workspace = true }
+proc-macro2 = { workspace = true }

+ 7 - 3
examples/component-position/Cargo.toml

@@ -1,8 +1,12 @@
 [package]
 name = "position"
-version = "0.0.1"
 description = "Created with Bolt"
-edition = "2021"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
 
 [lib]
 crate-type = ["cdylib", "lib"]
@@ -17,5 +21,5 @@ default = []
 idl-build = ["anchor-lang/idl-build"]
 
 [dependencies]
-anchor-lang = { version = "0.29.0" }
+anchor-lang = { workspace = true }
 bolt-lang = { path = "../../crates/bolt-lang" }

+ 7 - 3
examples/component-velocity/Cargo.toml

@@ -1,8 +1,12 @@
 [package]
 name = "velocity"
-version = "0.0.1"
 description = "Created with Bolt"
-edition = "2021"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
 
 [lib]
 crate-type = ["cdylib", "lib"]
@@ -17,6 +21,6 @@ default = []
 idl-build = ["anchor-lang/idl-build"]
 
 [dependencies]
-anchor-lang = "0.29.0"
+anchor-lang = { workspace = true }
 bolt-lang = { path = "../../crates/bolt-lang" }
 

+ 7 - 3
examples/system-apply-velocity/Cargo.toml

@@ -1,8 +1,12 @@
 [package]
 name = "system-apply-velocity"
-version = "0.0.1"
 description = "Created with Bolt"
-edition = "2021"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
 
 [lib]
 crate-type = ["cdylib", "lib"]
@@ -17,7 +21,7 @@ default = []
 idl-build = ["anchor-lang/idl-build"]
 
 [dependencies]
-anchor-lang = "0.29.0"
+anchor-lang = { workspace = true }
 bolt-lang = { path = "../../crates/bolt-lang" }
 velocity = { path = "../component-velocity", features = ["cpi"]}
 position = { path = "../component-position", features = ["cpi"]}

+ 7 - 3
examples/system-fly/Cargo.toml

@@ -1,8 +1,12 @@
 [package]
 name = "system-fly"
-version = "0.0.1"
 description = "Created with Bolt"
-edition = "2021"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
 
 [lib]
 crate-type = ["cdylib", "lib"]
@@ -17,7 +21,7 @@ default = []
 idl-build = ["anchor-lang/idl-build"]
 
 [dependencies]
-anchor-lang = { version = "0.29.0" }
+anchor-lang = { workspace = true }
 bolt-lang = { path = "../../crates/bolt-lang" }
 position = { path = "../component-position", features = ["cpi"]}
 

+ 7 - 3
examples/system-simple-movement/Cargo.toml

@@ -1,8 +1,12 @@
 [package]
 name = "system-simple-movement"
-version = "0.0.1"
 description = "Created with Bolt"
-edition = "2021"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
 
 [lib]
 crate-type = ["cdylib", "lib"]
@@ -17,6 +21,6 @@ default = []
 idl-build = ["anchor-lang/idl-build"]
 
 [dependencies]
-anchor-lang = "0.29.0"
+anchor-lang = { workspace = true }
 bolt-lang = { path = "../../crates/bolt-lang" }
 serde = { version = "*", features = ["derive"] }

+ 8 - 5
programs/bolt-component/Cargo.toml

@@ -1,9 +1,12 @@
 [package]
 name = "bolt-component"
-version = "0.0.1"
-edition = "2021"
 description = "Bolt component template"
-license = "MIT"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
 
 [lib]
 crate-type = ["cdylib", "lib"]
@@ -18,5 +21,5 @@ default = []
 idl-build = ["anchor-lang/idl-build"]
 
 [dependencies]
-anchor-lang = { version = "0.29.0", features = ["init-if-needed"] }
-bolt-system = { path = "../bolt-system", features = ["cpi"], version = "0.0.1" }
+anchor-lang = { workspace = true, features = ["init-if-needed"] }
+bolt-system = { path = "../bolt-system", features = ["cpi"] }

+ 8 - 5
programs/bolt-system/Cargo.toml

@@ -1,9 +1,12 @@
 [package]
 name = "bolt-system"
-version = "0.0.1"
-edition = "2021"
 description = "Bolt system template"
-license = "MIT"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
 
 [lib]
 crate-type = ["cdylib", "lib"]
@@ -18,5 +21,5 @@ default = []
 idl-build = ["anchor-lang/idl-build"]
 
 [dependencies]
-anchor-lang = "0.29.0"
-bolt-helpers-system-template = { path = "../../crates/bolt-helpers/attribute/system-template", version = "0.0.1" }
+anchor-lang = { workspace = true }
+bolt-helpers-system-template = { path = "../../crates/bolt-helpers/attribute/system-template" }

+ 12 - 9
programs/world/Cargo.toml

@@ -1,9 +1,12 @@
 [package]
 name = "world"
-version = "0.0.1"
-edition = "2021"
 description = "Bolt World program"
-license = "MIT"
+version = { workspace = true }
+authors = { workspace = true }
+repository = { workspace = true }
+homepage = { workspace = true }
+license = { workspace = true }
+edition = { workspace = true }
 
 [lib]
 crate-type = ["cdylib", "lib"]
@@ -18,10 +21,10 @@ default = []
 idl-build = ["anchor-lang/idl-build"]
 
 [dependencies]
-anchor-lang = { version = "0.29.0", features = ["init-if-needed"] }
-bolt-component = { path = "../../programs/bolt-component", features = ["cpi"], version = "0.0.1"}
-bolt-helpers-world-apply = { path = "../../crates/bolt-helpers/attribute/world-apply", version = "0.0.1" }
-bolt-system = { path = "../../programs/bolt-system", features = ["cpi"], version = "0.0.1"}
-solana-security-txt = "1.1.1"
-tuple-conv = "1.0.1"
+anchor-lang = { workspace = true, features = ["init-if-needed"] }
+bolt-component = { path = "../../programs/bolt-component", features = ["cpi"]}
+bolt-helpers-world-apply = { path = "../../crates/bolt-helpers/attribute/world-apply" }
+bolt-system = { path = "../../programs/bolt-system", features = ["cpi"]}
+solana-security-txt = { workspace = true }
+tuple-conv = { workspace = true }